V$SESSION_LONGOPS displays the status of various operations that run for longer than 6 seconds (in absolute time). These operations currently include many backup and recovery functions, statistics gathering, and query execution, and more operations are added for every Oracle release
v$session_longops 显示了运行时间超过6s的操作,这些操作包括备份恢复,统计信息收集,查询等操作。
To monitor query execution progress, you must be using the cost-based optimizer and you must:
-
Set the
TIMED_STATISTICS
orSQL_TRACE
parameters totrue
-
Gather statistics for your objects with the
DBMS_STATS
package
必须是基于代价的成本优化,将初始化参数 timed_statistics设置为true或者开启sql_trace
OPNAME:指长时间执行的操作名.如:Table Scan
TARGET:被操作的object_name. 如:tableA
TARGET_DESC:描述target的内容
SOFAR:这个是需要着重去关注的,表示已要完成的工作数,如扫描了多少个块。
TOTALWORK:指目标对象一共有多少数量(预计)。如块的数量。
UNITS:
START_TIME:进程的开始时间
LAST_UPDATE_TIM:最后一次调用set_session_longops的时间
TIME_REMAINING: 估计还需要多少时间完成,单位为秒
ELAPSED_SECONDS:指从开始操作时间到最后更新时间
CONTEXT:
MESSAGE:对于操作的完整描述,包括进度和操作内容。
USERNAME:与v$session中的一样。
SQL_ADDRESS:关联v$sql
SQL_HASH_VALUE:关联v$sql
QCSID:主要是并行查询一起使用。
作用:
(1)可以查看一条语句的执行进度
(2)查看语句执行过程中的信息
select b.* from v$session a, v$session_longops b where a.sid=b.sid and a.serial#=b.serial# and sid=‘’;
select sid,message, start_time,last_update_time,time_remaining,elapsed_seconds from V$SESSION_LONGOPS where time_remaining>0;
select sid,message, start_time,last_update_time,time_remaining,elapsed_seconds from GV$SESSION_LONGOPS where time_remaining>0;
此语句只能对运行时间比较长的语句,进行监控,对于运行时间比较短的,不会在此视图中显示