• 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 主要是并行查询一起使用
  • 相关阅读:
    2017-12 CDQZ集训(已完结)
    BZOJ1492 货币兑换 CDQ分治优化DP
    BZOJ2001 [Hnoi2010]City 城市建设 CDQ分治
    树套树小结
    跑路了
    NOI2020 游记
    半平面交模板
    Luogu 3245 大数
    Luogu 3246 序列
    test20190408(十二省联考)
  • 原文地址:https://www.cnblogs.com/binliubiao/p/14295099.html
Copyright © 2020-2023  润新知