找到引起磁盘排序的SQL

来源:互联网 发布:计算机三级网络试题 编辑:程序博客网 时间:2024/05/22 12:56

下面的这些脚本都可以找到引起磁盘排序的SQL。 

SELECT /*+ rule */ DISTINCT a.SID, a.process, a.serial#,
TO_CHAR (a.logon_time, 'YYYYMMDD HH24:MI:SS') LOGON, a.osuser,TABLESPACE, b.sql_text
FROM v$session a, v$sql b, v$sort_usage c
WHERE a.sql_address = b.address AND a.saddr = c.session_addr;

 

SELECT a.SID,TABLESPACE, b.sql_text
FROM v$session a, v$sql b, v$sort_usage c
WHERE a.sql_address = b.address AND a.saddr = c.session_addr;

 

select a.sid,a.username,a.program,c.sql_text from v$session a,v$tempseg_usage b,v$sql c where a.saddr=b.session_addr and a.sql_address=c.address ;

 

 

例子:

SQL> select a.sid,a.username,a.program,c.sql_text from v$session a,v$tempseg_usage b,v$sql c where a.saddr=b.session_addr and a.sql_address=c.address ;

       SID USERNAME   PROGRAM                                                          SQL_TEXT
---------- ---------- ---------------------------------------------------------------- ---------------------------------------------------------------------------
       146 ROBINSON   sqlplus.exe                                                      select a.table_name,a.comments from dict a,dict b order by a.table_name
       145 ROBINSON   sqlplus.exe                                                      select a.table_name,a.comments from dict a,dict b order by a.table_name

 

注意在10g中v$tempseg_usage 代替了v$sort_usage,在官方文档中你是找不到v$sort_usage视图的,然而v$sort_usage依然能够使用,v$tempseg_usage只是v$sort_usage的同义词。
另外要注意的是 不要直接用v$sql.hash_value与v$tempseg_usage.sqlhash连接 这样是查不到的,很鄙视这个视图,不知道ORACLE他奶奶的 为什么要这样定义这个SB视图。以前有网友也鄙视过这个SB视图,我现在再鄙视一下。