oracle

Oracle 長時間動作し続けているSQLを見つける

今回はSQL_TEXTを出力していますが、1000文字を超えるSQLは表示しきれません。その場合はSQL_FULLTEXTを見てください。ただしこちらもCLOBなので大きなプログラムは分轄出力しないといけません。

確認SQL
select s.SQL_ID,s.STATUS,s.SCHEMANAME,a.SQL_TEXT
,LAST_ACTIVE_TIME  -- 動作開始時間
,LAST_CALL_ET -- 実行し続けている秒数
 from v$session s
inner join v$sqlarea a
on s.SQL_ID = a.SQL_ID
where s.LAST_CALL_ET > 2
and s.SQL_ID is not null
and s.STATUS = 'ACTIVE'
order by LAST_CALL_ET
;
確認SQL実行例
SQL_ID           STATUS SCHEMANAME SQL_TEXT                                 LAST_ACTIVE_TIME    LAST_CALL_ET
---------------- ------ ---------- ---------------------------------------- ------------------- ------------
1sz3j98yu28xh    ACTIVE SOONI      BEGIN DBMS_LOCK.SLEEP(50); END;          2019/06/30 16:51:43        13
7wtkucwc7h32r    ACTIVE SYS        BEGIN DBMS_LOCK.SLEEP(60); END;          2019/06/30 16:51:39        17

SQL>
SQL*Plus用
set lin 200
col sql_id for a16
col status for a6
col SCHEMANAME for a10
col SQL_TEXT for a40
col SQL_TEXT for a40
スポンサーリンク
タイトルとURLをコピーしました