このSQLステートメントは開始するのに便利な場所であることがわかりました(申し訳ありませんが、これを元の作成者に帰することはできません。インターネット上のどこかで見つけました):
SELECT * FROM
(SELECT
sql_fulltext,
sql_id,
elapsed_time,
child_number,
disk_reads,
executions,
first_load_time,
last_load_time
FROM v$sql
ORDER BY elapsed_time DESC)
WHERE ROWNUM < 10
/
これにより、経過時間順にSQLキャッシュに現在格納されている上位のSQLステートメントが検索されます。ステートメントは時間の経過とともにキャッシュから消えるので、正午に仕事に取り掛かるときに昨夜のバッチジョブを診断しようとするのは良くないかもしれません。
disk_readsと実行による順序付けを試すこともできます。一部の貧弱なアプリケーションは同じSQLステートメントを何度も送信するため、実行は便利です。このSQLは、バインド変数を正しく使用していることを前提としています。
次に、sql_id
を取得できます およびchild_number
声明の中で、この赤ちゃんにそれらを与えます:-
SELECT * FROM table(DBMS_XPLAN.DISPLAY_CURSOR('&sql_id', &child));
これは、SQLキャッシュからの実際の計画とSQLの全文を示しています。