V$SESSION_LONGOPS 檢視的用法

paulyibinyi發表於2009-04-10

           有時候我們在執行一個大的動作時,想知道進度怎麼樣,還需要多長時間來完成,而不是乾等

這個時候我們就可以藉助V$SESSION_LONGOPS檢視,比較詳細的記錄了些sql語句執行資訊

但只記錄超過六秒鐘的操作,前提條件是:

1) Oracle最佳化器使用 CBO;

2) 資料物件已經收集了統計資訊;

3) 初始化引數 TIMED_STATISTICS 或是 SQL_TRACE parameter 設定為 TRUE 例子:

 

V$SESSION_LONGOPS列說明

l         SIDSession標識

l         SERIAL#Session串號

l         OPNAME:操作簡要說明

l         TARGET:操作執行所在的物件

l         TARGET_DESC:目標物件說明

l         SOFAR:至今為止完成的工作量

l         TOTALWORK:總工作量

l         UNITS:工作量單位

l         START_TIME:操作開始時間

l         LAST_UPDATE_TIME:統計項最後更新時間

l         TIME_REMAINING:預計完成操作的剩餘時間()

l         ELAPSED_SECONDS:從操作開始總花費時間()

l         CONTEXT:前後關係

l         MESSAGE:統計項的完整描述

l         USERNAME:執行操作的使用者ID

l         SQL_ADDRESS:用於連線查詢的列

l         SQL_HASH_VALUE:用於連線查詢的列

l         QCSID

 

這個檢視的來源大概是以下這個樣子

這個檢視的來源大致是這樣的:

SELECT inst_id, ksulosno, ksulosrn, ksulopna, ksulotna, ksulotde, ksulosfr,
       ksulotot, ksulouni,
       TO_DATE (ksulostm, 'MM/DD/RR HH24:MI:SS', 'NLS_CALENDAR=Gregorian'),
       TO_DATE (ksulolut, 'MM/DD/RR HH24:MI:SS', 'NLS_CALENDAR=Gregorian'),
       DECODE (SIGN (ksulotot - ksulosfr),
               -1, TO_NUMBER (NULL),
               DECODE (ksulosfr,
                       0, TO_NUMBER (NULL),
                       ROUND (ksuloetm * ((ksulotot - ksulosfr) / ksulosfr))
                      )
              ),
       ksuloetm, ksuloctx, ksulomsg, ksulounm, ksulosql, ksulosqh, ksuloqid
  FROM x$ksulop;
 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7199859/viewspace-587009/,如需轉載,請註明出處,否則將追究法律責任。

相關文章