休日更新の備忘録

休日のみ更新予定の個人的備忘録置き場

【OracleDB】実行中SQLのSQL_IDを確認して実行計画を取得する

スポンサーリンク

SELECT
    A.SQL_ID ,
    A.SQL_TEXT ,
    A.ELAPSED_TIME
FROM
    V$SQL A ,
    V$SESSION B
WHERE
    A.SQL_ID = B.SQL_ID AND
    A.CHILD_NUMBER = B.SQL_CHILD_NUMBER AND
    B.STATUS = 'ACTIVE'

実行中のSQLSQL_IDを確認する

OracleDatabaseで現在実行中のSQLSQL_IDは、冒頭のSQLで確認できます。

実行中SQLの実行計画を取得する

上記方法で確認したSQL_IDを以下に当てはめることで、実行中SQLの実行計画を取得できます。
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR('[確認したSQL_ID]'));

これで長時間実行しているSQLの実行計画が取得できるようになります。
取得してからの実行計画の解析が大変なものになると思いますが...。