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
;

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

Oracle-估算运行时间长的耗时操作语句

上一篇:用Navicat运行一个比较大的.sql文件时报错:[Err] 2006 - MySQL server has gone away


下一篇:MySQL主从复制