【Oracle】V$SQLビューを使用して直前に発行されたSQLを確認する方法

Oracleデータベースの管理や最適化において、SQLステートメントの実行統計情報を把握することは重要です。そのために役立つのが、Oracleが提供するV$SQLビューです。このビューは、実行中のSQLステートメントに関する情報を提供し、パフォーマンスの評価や最適化に貢献します。

V$SQLビューで直前に発行されたSQLを確認する

V$SQLビューを使用して直前に発行されたSQLを確認する方法はいくつかあります。一般的な方法は、以下の手順になります。

  1. 最後に実行されたSQLステートメントのSQL_IDを取得します。
  2. 取得したSQL_IDを使用して、V$SQLビューから該当するSQLステートメントを取得します。

具体的なクエリは次の通りです。

このクエリは、V$SQLビューから直近に実行されたSQLステートメントのSQL_ID、SQLテキスト、および最後のアクティブ時間(LAST_ACTIVE_TIME)を取得します。最後のアクティブ時間が最大の行を選択しています。これにより、最後に実行されたSQLステートメントの情報が取得されます。

注意点として、V$SQLビューはOracleデータベースのリセットや再起動後にリセットされる可能性があるため、このクエリで直前のSQLステートメントを取得することができない場合があります。

SELECT SQL_ID, SQL_TEXT, LAST_ACTIVE_TIME
FROM V$SQL
WHERE LAST_ACTIVE_TIME = (SELECT MAX(LAST_ACTIVE_TIME) FROM V$SQL);

V$SQLビューの主要な列

説明
SQL_ID SQLステートメントのユニークな識別子。
SQL_TEXT 実行されたSQLステートメントのテキスト。
EXECUTIONS SQLステートメントの実行回数。
ELAPSED_TIME SQLステートメントの合計実行時間(マイクロ秒単位)。
CPU_TIME SQLステートメントが使用したCPU時間(マイクロ秒単位)。
BUFFER_GETS SQLステートメントが読み取ったブロックの数。
DISK_READS SQLステートメントがディスクから読み取ったデータファイルの数。
PARSE_CALLS SQLステートメントがパースされた回数。
ROWS_PROCESSED SQLステートメントが処理した行の数。
FETCHES SQLステートメントのフェッチ回数。

これらの列を活用することで、SQLステートメントのパフォーマンスやリソースの使用状況を詳細に把握し、効果的な最適化を行うことが可能です。Oracleのデータベース管理者や開発者にとって、V$SQLビューは強力なツールであり、SQLの効率的な管理に不可欠な要素と言えます。