SELECT INST_ID,
USERNAME,
SID,
SERIAL#,
OPNAME,
ROUND(SOFAR * 100 / TOTALWORK, 0) || '%' AS PROGRESS,
SOFAR,
TOTALWORK,
TIME_REMAINING,
SQL_ID
FROM GV$SESSION_LONGOPS
WHERE TIME_REMAINING <> 0
;
SELECT SID, decode(totalwork, 0, 0, round(100 * sofar/totalwork, 2)) "Percent", message "Message", start_time,
elapsed_seconds, time_remaining , inst_id
from GV$Session_longops t
where t.TARGET='XXX' and t.sid = 88
order by t.start_time desc;
V$SESSION_LONGOPS視圖記錄了執行時間長於6秒的某個操作(可能是備份,恢復,收集統計信息,Hash Join,Sort ,Nested loop,Table Scan, Index Scan 等等),通常使用該視圖用來分析SQL運行緩慢的原因,可以配合V$SESSION視圖。
注意:必須滿足以下2個條件
- 必須將初始化參數 timed_statistics 設置為true或者開啟sql_trace
- 必須用ANALYZE或者DBMS_STATS對對象收集過統計信息
視圖字段說明:
字段 | 說明 |
---|---|
SID | Session標識 |
SERIAL# | Session串號 |
OPNAME | 操作簡要說明 |
TARGET | 操作運行所在的對象 |
TARGET_DESC | 目標對象說明 |
SOFAR | 至今為止完成的工作量 |
TOTALWORK | 總工作量 |
UNITS | 工作量單位 |
START_TIME | 操作開始時間 |
LAST_UPDATE_TIME | 統計項最后更新時間 |
TIMESTAMP | 操作的時間戳 |
TIME_REMAINING | 預計完成操作的剩余時間(秒) |
ELAPSED_SECONDS | 從操作開始總花費時間(秒) |
CONTEXT | 前后關系 |
MESSAGE | 統計項的完整描述 |
USERNAME | 執行操作的用戶ID |
SQL_ADDRESS | 關聯v$sql |
SQL_HASH_VALUE | 關聯v$sql |
SQL_ID | 關聯v$sql |
QCSID | 主要是並行查詢一起使用 |