DBAtlas · データベース運用アトラス

長時間実行中のクエリ/セッションを表示

Oracleセッションとプロセス

コマンド

-- Active, long-running SQL:
SELECT s.sid, s.serial#, s.username, s.status,
       s.last_call_et AS seconds_active,
       s.sql_id, q.sql_text,
       s.event, s.machine, s.program
FROM   v$session s
  LEFT JOIN v$sql q ON q.sql_id = s.sql_id
                   AND q.child_number = s.sql_child_number
WHERE  s.type = 'USER'
  AND  s.status = 'ACTIVE'
  AND  s.last_call_et > 60
ORDER BY s.last_call_et DESC;

-- Long operations with percentage progress:
SELECT sid, serial#, opname, sofar, totalwork,
       ROUND(sofar/NULLIF(totalwork,0)*100,1) AS pct, time_remaining
FROM   v$session_longops
WHERE  sofar < totalwork ORDER BY start_time DESC;

概要

60 秒を超えて実行中のアクティブセッションと、長時間実行中のバッチ操作の進捗を一覧表示する。

使用する場面

遅延の苦情があった場合に、どのクエリがシステムを占有しているかを特定するため。

注意

last_call_et は最後の呼び出しからの経過時間。アイドル状態のセッションでも大きくなり得るため、status='ACTIVE' のフィルタが重要。照会のみ。リスクなし。

DBAtlas で開く →

関連項目