本文主要是介绍Oralce动态视图v$session_longops使用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
主要是想使用v$session_longops来做一些针对全表扫描的优化。
通过v$session_longops视图来查找出一些消耗时间比较多的操作。
使v$session_longops可以查询之前,将参数TIMED_STATISTICS必须为TRUE。
查询一些比较耗时的操作:
col opname format a10
col target format a10
col username format a10
select sid, serial#, opname, target, username, TO_CHAR(start_time, 'HH24:MI:SS') AS "START",
(sofar/totalwork)*100 AS PERCENT_COMPLETE
FROM v$session_longops;
在一个回话窗口中在表中插入大量数据,然后再另一个窗口中输入上面语句
查询结果如下:
SID SERIAL# OPNAME TARGET USERNAME START PERCENT_COMPLETE
---------- ---------- ---------- ---------- ---------- -------- ----------------
60 340 Table Scan SYS.T SYS 16:57:41 100
60 340 Table Scan SYS.T SYS 17:02:28 100
60 340 Table Scan SYS.T SYS 17:12:04 100
根据v$session_longops中的sql_address和sql_hash_value两个字段,和v$sql动态视图结合起来查看这些长时间操作的SQL语句。
select sql_text
from v$session_longops s, v$sql t
where s.sql_address=t.address and s.sql_hash_value=t.hash_value;
查询结果如下:
SQL_TEXT
--------------------------------------------------------------------------------
insert into t select * from t
insert into t select * from t
insert into t select * from t
然后就可以针对这些SQL语句进行优化了。
这篇关于Oralce动态视图v$session_longops使用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!