LoginSignup
2
0

More than 1 year has passed since last update.

アプリから実行中のSQLを解析する(Oracle)

Last updated at Posted at 2021-08-27

アプリケーションから実行中のSQLを解析する方法です。

データベースの処理に時間がかかっているっぽいけど、どのSQLが問題かわからなかったり、
処理が全然終わらないときに、どのSQLが遅いか確認したりできます。

select
  SQL_ID
  , SQL_TEXT
  , LAST_ACTIVE_TIME 最終実行時間
  , EXECUTIONS 実行回数
  , ROUND(ELAPSED_TIME / (1000 * 1000),3) 経過時間
  , CASE EXECUTIONS 
    WHEN 0 THEN ROUND(ELAPSED_TIME / (1000 * 1000),3) 
    ELSE  
      ROUND(ELAPSED_TIME / EXECUTIONS / (1000 * 1000),3)
    END 平均経過時間
  , module
  , PARSING_SCHEMA_NAME
  , SQL_FULLTEXT
from
  (select *  from V$SQL order by LAST_ACTIVE_TIME desc) 
where
  rownum < 10;

SQL_ID        :SQL_IDについてはOracleのドキュメントを参照
SQL_TEXT       :SQLの冒頭部分
最終実行時間     :最後にSQLが実行されたタイムスタンプ
実行回数       :このSQLが実行された回数
経過時間       :このSQLの実行にかかった秒数(複数回実行された場合、合計が表示される)
平均経過時間     :経過時間を実行回数で割った値
module        :実行ファイル名
PARSING_SCHEMA_NAME :実行ユーザー名
SQL_FULLTEXT     :SQL全文

SQLがプールに残っている限り、情報は保持されるので、
実行回数をリセットする場合はSQLプールをクリアしてください。

ALTER SYSTEM FLUSH SHARED_POOL;  
2
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
2
0