Oralce动态视图v$session_longops使用

来源:互联网 发布:知乎泰语翻译价格 编辑:程序博客网 时间:2024/05/29 13:45

主要是想使用v$session_longops来做一些针对全表扫描的优化。

通过v$session_longops视图来查找出一些消耗时间比较多的操作。

使v$session_longops可以查询之前,将参数TIMED_STATISTICS必须为TRUE

查询一些比较耗时的操作:

col opname format a10col target format a10col username format a10select sid, serial#, opname, target, username, TO_CHAR(start_time, 'HH24:MI:SS') AS "START",(sofar/totalwork)*100 AS PERCENT_COMPLETEFROM 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_textfrom v$session_longops s, v$sql twhere 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语句进行优化了。

0 0