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 | 主要是并行查询一起使用 |