Oracle! Wie lange brauchst du denn noch?

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.

About the author