LoginSignup
0
0

Oracleで直前に実行したSQLを取得する。

Last updated at Posted at 2024-02-15

はじめに

  • ブラックボックス化しているアプリを解析している際に、Oracleにて実行されたSQLの内容を知りたいことがあるかと思います。ソースを読むのも手ですが、実際に実行されているSQLの内容を手軽に調べたい際に有効です。

やりたいこと

  • IISのアプリケーションより実行されているSQLの内容を調べる。

手順

  • SQL*Plusにログインして以下のSQLを実行する。(直近5分以内に実行されたSQLが取得出来ます。)
SELECT 
SQL_ID ||','|| MODULE ||','|| FIRST_LOAD_TIME
,DBMS_LOB.SUBSTR(t1.SQL_FULLTEXT, 1000, 1) AS C1
,CASE WHEN DBMS_LOB.GETLENGTH(SQL_FULLTEXT) > 1000
 THEN DBMS_LOB.SUBSTR (t1.SQL_FULLTEXT,1000, 1001) END AS C2
,CASE WHEN DBMS_LOB.GETLENGTH(SQL_FULLTEXT) > 2000
 THEN DBMS_LOB.SUBSTR (t1.SQL_FULLTEXT,1000, 2001) END AS C3
,CASE WHEN DBMS_LOB.GETLENGTH(SQL_FULLTEXT) > 3000
 THEN DBMS_LOB.SUBSTR (t1.SQL_FULLTEXT,1000, 3001) END AS C4
,CASE WHEN DBMS_LOB.GETLENGTH(SQL_FULLTEXT) > 4000
 THEN DBMS_LOB.SUBSTR (t1.SQL_FULLTEXT,1000, 4001) END AS C5
,CASE WHEN DBMS_LOB.GETLENGTH(SQL_FULLTEXT) > 5000
 THEN DBMS_LOB.SUBSTR (t1.SQL_FULLTEXT,1000, 5001) END AS C6
,CASE WHEN DBMS_LOB.GETLENGTH(SQL_FULLTEXT) > 6000
 THEN DBMS_LOB.SUBSTR (t1.SQL_FULLTEXT,1000, 6001) END AS C7
from v$sqlarea t1
where
     MODULE = 'w3wp.exe'
 and FIRST_LOAD_TIME BETWEEN TO_CHAR(SYSDATE - (5 / 24 / 60), 'YYYY-MM-DD/HH24:MI:SS') AND TO_CHAR(SYSDATE, 'YYYY-MM-DD/HH24:MI:SS')
order by FIRST_LOAD_TIME;

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0