如果发现有一条sql语句执行了很长的时间,可以监控它的处理过程,并查明它何时能执行完成。
通过在v$session_longops数据字典视图中,查看运行时间很长的查询信息,可以估算出查询完成的时间。
来看看这个视图的结构:
SQL> desc v$session_longops
名称 是否为空? 类型
----------------------------------------- -------- ----------------
SID NUMBER
SERIAL# NUMBER
OPNAME VARCHAR2(64)
TARGET VARCHAR2(64)
TARGET_DESC VARCHAR2(32)
SOFAR NUMBER
TOTALWORK NUMBER
UNITS VARCHAR2(32)
START_TIME DATE
LAST_UPDATE_TIME DATE
TIME_REMAINING NUMBER
ELAPSED_SECONDS NUMBER
CONTEXT NUMBER
MESSAGE VARCHAR2(512)
USERNAME VARCHAR2(30)
SQL_ADDRESS RAW(4)
SQL_HASH_VALUE NUMBER
QCSID NUMBER
其中SID和SERIAL#是与v$session中的匹配的,
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:主要是并行查询一起使用。
SQL> insert into test select * from test ;
已创建898432行
打开另一个会话,可使用以下脚本来观察之前那个会话所作的操作的执行状态.
SQL> select b.*
2 from v$session a, v$session_longops b
3 where a.sid=b.sid
4 and a.serial#=b.serial#
5 /
SID SERIAL# OPNAME TARGET SOFAR TOTALWORK UNITS START_TIME LAST_UPDATE_TIME TIME_REMAINING ELAPSED_SECONDS CONTEXT MESSAGE
---- ---------- -------------- --------- ------ ---------- -------- ----------- ---------------- -------------- --------------- ---------- -----------------------------------------------------
10 74 Table Scan AA.TEST 6623 12389 Blocks 2015-9-7 2: 2015-9-7 2:52:03 30 34 0 Table Scan: AA.TEST: 6623 out of 12389 Blocks done
也可以利用这个语句:
select username,target,sofar blocks_read,totalwork total_blocks,
round(time_remaining/60) minutes from v$session_longops where sofar <> totalwork and username = '';
要想通过v$session_longops监控一个查询,需要满足以下条件。
1)查询必须至少运行六秒钟以上
2)所访问表的数据块数必须大于10000块
3)必须设置了time_statistics或者打开了sql_trace
4)查询中的对象必须已经通过dbms_stats或者analyze进行分析
v$session_longops视图中包含了select语句,dml语句,ddl语句等信息。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30430420/viewspace-1805674/,如需转载,请注明出处,否则将追究法律责任。