-- David Mann -- http://ba6.us -- dmann99@gmail.com -- -- Long Operations Graph with HTML Output -- 01/29/2009 DECLARE NumOperations NUMBER :=0; BEGIN DBMS_OUTPUT.PUT_LINE('<FONT SIZE=3 FACE="Courier">'); FOR c1 IN (SELECT MESSAGE, ROUND(sofar/totalwork*100,0) as pct FROM v$session_longops WHERE sofar <> totalwork ORDER BY target, sid) LOOP DBMS_OUTPUT.PUT_LINE('<TABLE BORDER="1" BGCOLOR="#EEEEEE" WIDTH="100%">'); DBMS_OUTPUT.PUT_LINE('<TR>'); DBMS_OUTPUT.PUT_LINE('<TD>Operation:</TD>'); DBMS_OUTPUT.PUT_LINE('<TD>'||c1.MESSAGE || '</TD>'); DBMS_OUTPUT.PUT_LINE('</TR>'); DBMS_OUTPUT.PUT_LINE('<TR>'); DBMS_OUTPUT.PUT_LINE('<TD>Progress:</TD>'); DBMS_OUTPUT.PUT_LINE(' <TABLE BORDER="1" BGCOLOR="RED" WIDTH="'||c1.pct||'%">'); DBMS_OUTPUT.PUT_LINE(' <TR><TD>'||c1.pct||'%</TD></TR>'); DBMS_OUTPUT.PUT_LINE(' </TABLE>'); DBMS_OUTPUT.PUT_LINE('</TD></TR></TABLE>'); DBMS_OUTPUT.PUT_LINE('<BR>'); NumOperations := NumOperations + 1; END LOOP; IF NumOperations = 0 THEN DBMS_OUTPUT.PUT_LINE('No Long Operations Active'); END IF; DBMS_OUTPUT.PUT_LINE('</FONT>'); END;