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