İşletim Sistemi Process ID’den Oracle’daki SESSION Bilgisine Ulaşmak
İşletim sistemi üzerinden yakaladığınız bir “PROCESS ID” nin Oracle tarafında çalıştırılan SQL bilgisine ulaşmak için aşağıdaki scripti kullanabilirsiniz.
SELECT T.SQL_ID, T.SQL_TEXT FROM GV$PROCESS P, GV$SESSION S, GV$SQLAREA T WHERE P.ADDR = S.PADDR AND S.SQL_ADDRESS = T.ADDRESS AND S.SQL_HASH_VALUE = T.HASH_VALUE AND P.SPID = &PROCESS_ID;
Eğer Oracle Veri tabanınız RAC değil ise aşağıdaki sorguyu kullanabilirsiniz.
SELECT T.SQL_ID, T.SQL_TEXT FROM V$PROCESS P, V$SESSION S, V$SQLAREA T WHERE P.ADDR = S.PADDR AND S.SQL_ADDRESS = T.ADDRESS AND S.SQL_HASH_VALUE = T.HASH_VALUE AND P.SPID = &PROCESS_ID;
Özellikle TOP SQL’leri incelerken anlık olarak işletim sistemi üzerinden PROCESS ID yakalayıp hangi sorgunun CPU COST’unun yüksek olduğunu hızlıca anlayabilirsiniz. Bu script 11gR1 ve 11gR2 ‘de test edilmiştir. Lütfen scriptleri üretim ortamında çalıştırmadan önce test sunucularınızda test ediniz.