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个条件
- 必须将初始化参数 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 | 主要是并行查询一起使用 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)