create table log_ as select level lv,rownum rn from dual connect by level<10000000;
insert into log_ value select level lv,rownum rn from dual connect by level<10000000;
执行查询log_表,命令如下:
SQL> set timing on ;
SQL> select count(1) from log_ t ;
COUNT(1)
----------
19999998
Executed in 6.438 seconds
此时执行如下SQL语句.
select * from sys.v_$session_longops t where t.TARGET like '%LOG_' ;
会发现,执行时间大于6秒的那条记录已经被记录在v_$session_longops视图中了.
下面利用关联查询可以查询出该SQL语句的完整内容(也就是能查询出所有执行时间大于6秒的语句).
select * from v$sql a,v$session_longops b where a.SQL_ID = b.SQL_ID ;
select * from v$sqlarea a,v$session_longops b where a.HASH_VALUE = b.SQL_HASH_VALUE ;
其中 a.SQL_TEXT 和 a.SQL_FULLTEXT 代表执行的SQL语句.正常SQL_TEXT就可以显示出要查询的SQL语句,如果该语句太长,那么就需要用a.SQL_FULLTEXT字段进行查看.