【SQL】OracleのV$SQLを使って直前に実行したSQL文を参照する

oracle-vsql
  • URLをコピーしました!

例えば、プログラムから自動でデータベースにアクセスした際、どのようなSQLが発行されたか確認したい場合がありますよね。
ログを見ればいいじゃんって話になりますけど、今回はOracleで実行されたSQLの情報が参照できるV$SQLビューを利用する方法をご紹介します。

目次

V$SQLで実行したSQL文を参照

単純に最近実行したSQLを参照したい場合は、たったコレだけです!

以下の参考にしたサイトと比較しながらご説明します。

参考サイトでは、「SQL_TEXT」を出力していますが、これだと全SQL文の内、先頭から1,000文字しか出力されないようなので、「SQL_FULLTEXT」としました。
次に、「FIRST_LOAD_TIME DESC」で作成時刻の新しい順、つまり、最近実行したSQLから順に並ぶようにソートしています。
その他にどんな項目があるかはこちらをご覧ください。

あわせて読みたい

もっと様々な情報が参照できるようですね。

同じSQL文はキャッシュされる!?

V$SQLは、素早く動作するようにキャッシュされているようなので、全く同じSQLを実行してもレコードが増えるわけではありません。
直前に実行したSQLでも、過去に全く同じSQLを実行している場合は、FIRST_LOAD_TIMEソートしても、一番上に表示されないこともあります。上記の例では、単純に最初の実行日時の新しいものから順に取得しました。
しかし、全く同じではなく似たようなSQLを複数回実行した場合は絞り込むのが大変です。
そこで、実行した内容がわかっているのなら、WHERE句を使ってさらに絞り込みましょう。

〇〇には、テーブル名カラム名、その他どのような条件を含んだSQLかを細かく指定すると、より絞り込むここができます。
V$SQLをあまり頻繁に使うことはないかもしれませんが、もしOracleを利用する機会がありましたら、頭の片隅にでもあったら便利かもしれません。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次