Oracle-估算運行時間長的耗時操作語句


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個條件

  1. 必須將初始化參數 timed_statistics 設置為true或者開啟sql_trace
  2. 必須用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 主要是並行查詢一起使用


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM