eygle_getsql.sql

jlttt發表於2008-06-20
SELECT /*+ ORDERED */
sql_text
FROM v$sqltext a
WHERE (a.hash_value, a.address) IN (
SELECT DECODE (sql_hash_value,
0, prev_hash_value,
sql_hash_value
),
DECODE (sql_hash_value, 0, prev_sql_addr, sql_address)
FROM v$session b
WHERE b.paddr = (SELECT addr
FROM v$process c
WHERE c.spid = '&pid'))
ORDER BY piece ASC
/

注意這裡我們涉及了3個檢視,並應用其關聯進行資料獲取.
首先需要輸入一個pid,這個pid即process id,也就是在Top或ps中我們看到的PID.
透過pid和v$process.spid相關聯我們可以獲得Process的相關資訊
進而透過v$process.addr和v$session.paddr相關聯,我們就可以獲得和session相關的所有資訊.
再結合v$sqltext,我們即可獲得當前session正在執行的SQL語句.

透過v$process檢視,我們得以把作業系統和資料庫關聯了起來.

[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9533994/viewspace-1005893/,如需轉載,請註明出處,否則將追究法律責任。