장시간 실행 쿼리 / 세션 조회
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' 필터가 중요하다. 조회 전용이며 위험 없음.