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에서 열기 →

관련 항목