Wenn eine Aktion im Oracle mal wieder länger dauert (select, update, insert, delete, rman-Backup etc.) kann man in den v$-Tabellen von Oracle sehr einfach und schnell sehen was gerade gemacht wird und wie lang die Aktion geschätzt noch dauern wird. Das alles verbrigt sich hinter der Tabelle v$session_longops.
SQL> descr v$session_longops Name Null? Type ----------------------------------------- -------- ---------------------------- SID NUMBER SERIAL# NUMBER OPNAME VARCHAR2(64) TARGET VARCHAR2(64) TARGET_DESC VARCHAR2(32) SOFAR NUMBER TOTALWORK NUMBER UNITS VARCHAR2(32) START_TIME DATE LAST_UPDATE_TIME DATE TIMESTAMP DATE TIME_REMAINING NUMBER ELAPSED_SECONDS NUMBER CONTEXT NUMBER MESSAGE VARCHAR2(512) USERNAME VARCHAR2(30) SQL_ADDRESS RAW(8) SQL_HASH_VALUE NUMBER SQL_ID VARCHAR2(13) SQL_PLAN_HASH_VALUE NUMBER SQL_EXEC_START DATE SQL_EXEC_ID NUMBER SQL_PLAN_LINE_ID NUMBER SQL_PLAN_OPERATION VARCHAR2(30) SQL_PLAN_OPTIONS VARCHAR2(30) QCSID NUMBER SQL>
Mich interessieren hierbei primär die Felder SID, OPNAME, TARGET, SOFAR, TOTALWORK, ELAPSED_SECONDS sowie TIME_REMAINING.
Das ganze sieht dann z.B. so aus:
SQL> set lines 200 pages 200 SQL> select SID,OPNAME,TARGET,SOFAR,TOTALWORK,ELAPSED_SECONDS,TIME_REMAINING from v$session_longops where TIME_REMAINING > 0; SID OPNAME TARGET SOFAR TOTALWORK ELAPSED_SECONDS TIME_REMAINING ---------- ---------------------------------------------------------------- ---------------------------------------------------------------- ---------- ---------- --------------- -------------- 837 Index Fast Full Scan SAPERP.IHPA 60505 161488 11 18 SQL>
Wenn man die die where-Klausel aus dem Statement entfernt bekommt man eine Übersicht über die letzten Aktionen der aktiven Sessions und bei dem gezeigten Statement ihrer Laufzeit.