子育てエンジニアブログ

子育てに励むシステムエンジニア(SE)のブログ

【Oracle】デバッグしないで実行したSQLの履歴を確認する方法

Oracleで実行したSQLの履歴を確認する方法についてです。

大規模なアプリケーションの裏側で動的にSQLを作成するようなことは多々あると思います。
そんなときわざわざデバッグしてどんなSQLが実行されているのか見るのはとても手間だと思います。
そんなときに、Oracleで実行したSQLの履歴を確認する方法があります。
方法はとしてはV$SQLを使います。
V$SQLは動的パフォーマンスビューで共有プール上のSQLカーソルの情報を表示します。
Oracleでは流れたSQLを保存しているので後から見ることができます。

パフォーマンスチューニングや障害調査等に使えそう。

SQLは次の通り。

SELECT
*
FROM
V$SQL

これで実行したSQLの履歴を確認することができます。

特によく使うものは以下がある。

列名 説明
SQL_TEXT SQLテキストの最初の1000文字
SQL_FULLTEXT SQL文の全テキスト
SQL_ID 親カーソルのSQL識別子
SERVICE サービス名
PARSING_SCHEMA_ID スキーマID
PARSING_SCHEMA_NAME スキーマ
PLSQL_EXEC_TIME PL/SQL実行時間
LAST_ACTIVE_TIME 問合せプランが最後にアクティブになった時刻
ROWS_PROCESSED SQLが戻す行数
EXECUTIONS 実行回数