【Oracle】実行中のSQLを確認するSQL
SQL
SELECT
-- A.SQL_FULLTEXT -- すべての文字 CLOBなので重い
A.SQL_TEXT -- 最初の1000文字
,B.SQL_EXEC_START
,A.CPU_TIME
,A.ELAPSED_TIME
FROM
V$SQLAREA A,
V$SESSION B
WHERE A.SQL_ID = B.SQL_ID
AND B.STATUS = 'ACTIVE'
AND A.LAST_ACTIVE_TIME > TO_DATE(SYSDATE, 'YYYY/MM/DD HH:MI:SS')
ORDER BY LAST_ACTIVE_TIME DESC
使いどころ
- 時間のかかる処理があるが、ボトルネックとなるSQLを特定できない時
- 上記SQLを何度か実行していると、時間のかかっているSQLが分かる
- デバッグができない、本番環境での調査に便利