Long Running Queries
SELECT SID, SERIAL#, opname, SOFAR, TOTALWORK,
ROUND(SOFAR/TOTALWORK*100,2) COMPLETE
FROM V$SESSION_LONGOPS
WHERE
TOTALWORK != 0
AND SOFAR != TOTALWORK
order by 1;
Note: the same query can be used to monitor RMAN backup status
SELECT SID, SERIAL#, CONTEXT, SOFAR, TOTALWORK,
ROUND(SOFAR/TOTALWORK*100,2) "%_COMPLETE"
FROM V$SESSION_LONGOPS
WHERE OPNAME LIKE 'RMAN%'
AND OPNAME NOT LIKE '%aggregate%'
AND TOTALWORK != 0
AND SOFAR != TOTALWORK
;
SID SERIAL# OPNAME SOFAR TOTALWORK COMPLETE
---------- ---------- -------------------- ---------- ---------- ----------
604 13371 Table Scan 6311 24498 25.76
685 1586 Table Scan 6333 24498 25.85
SELECT s.SID,
s.serial#,
s.machine,
s.module,
s.program,
s.action,
s.wait_time,
s.wait_Class,
sl.opname,
sl.target,
sl.message,
ROUND(sl.elapsed_seconds/60) || ':' ||
MOD(sl.elapsed_seconds,60) elapsed,
ROUND(sl.time_remaining/60) || ':' ||
MOD(sl.time_remaining,60) remaining,
ROUND(sl.sofar/sl.totalwork*100, 2) progress_pct
FROM v$session s,
v$session_longops sl
WHERE s.SID = sl.SID
AND s.serial# = sl.serial#
and sl.ELAPSED_SECONDS > 3600
and sl.SOFAR != sl.TOTALWORK
and sl.TOTALWORK <> 0
ORDER BY elapsed_seconds DESC;
SELECT SID, SERIAL#, opname, SOFAR, TOTALWORK,
ROUND(SOFAR/TOTALWORK*100,2) COMPLETE
FROM V$SESSION_LONGOPS
WHERE
TOTALWORK != 0
AND SOFAR != TOTALWORK
order by 1;
Note: the same query can be used to monitor RMAN backup status
SELECT SID, SERIAL#, CONTEXT, SOFAR, TOTALWORK,
ROUND(SOFAR/TOTALWORK*100,2) "%_COMPLETE"
FROM V$SESSION_LONGOPS
WHERE OPNAME LIKE 'RMAN%'
AND OPNAME NOT LIKE '%aggregate%'
AND TOTALWORK != 0
AND SOFAR != TOTALWORK
;
SID SERIAL# OPNAME SOFAR TOTALWORK COMPLETE
---------- ---------- -------------------- ---------- ---------- ----------
604 13371 Table Scan 6311 24498 25.76
685 1586 Table Scan 6333 24498 25.85
SELECT s.SID,
s.serial#,
s.machine,
s.module,
s.program,
s.action,
s.wait_time,
s.wait_Class,
sl.opname,
sl.target,
sl.message,
ROUND(sl.elapsed_seconds/60) || ':' ||
MOD(sl.elapsed_seconds,60) elapsed,
ROUND(sl.time_remaining/60) || ':' ||
MOD(sl.time_remaining,60) remaining,
ROUND(sl.sofar/sl.totalwork*100, 2) progress_pct
FROM v$session s,
v$session_longops sl
WHERE s.SID = sl.SID
AND s.serial# = sl.serial#
and sl.ELAPSED_SECONDS > 3600
and sl.SOFAR != sl.TOTALWORK
and sl.TOTALWORK <> 0
ORDER BY elapsed_seconds DESC;
No comments:
Post a Comment