回收站引发ORACLE查询表空间使用缓慢问题(六)

2014-11-24 16:10:22 · 作者: · 浏览: 2
SQL*Net from client 4 SQL*Net roundtrips to/from client 1 sorts (memory) 0 sorts (disk) 31 rows processed

这一次他跑了 50分钟,不过这个也太坑爹了,查询一个表空间使用率居然都这么久 ,抓狂去吧
我们来看一下执行计划, 看到 关键东西没, RECYCLEBIN$ ----这玩儿368K
于是让他 purge dba_recyclebin --这个操作执行了13个小时左右 ,可见他们 系统 回收站表只多。。。。
清理完之后,执行SQL
[html] 
SQL> set timing on  
SQL>       col tablespace_name format a30;  
SQL>       col monitor_date format a20;        
SQL>       select * from   
  2            (  
  3              select ts.tablespace_name,ts.contents "TABLESPACE_TYPE",  
  4                     to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') monitor_date,  
  5                     datafiles,total_gb  "TOTAL_SIZE_GB",  
  6                    (total_gb-free_gb) "USED_SIZE_GB",  
  7                     free_gb "FREE_SIZE_GB",  
  8                     round((100-free_gb/total_gb*100),2) "USED_PCT",  
  9                     round(free_gb/total_gb*100,2) "FREE_PCT"   
 10              from  dba_tablespaces ts,  
 11                    (select tablespace_name,round(sum(bytes)/1024/1024/1024,2) free_gb   
 12                     from dba_free_space group by tablespace_name) fr1,  
 13                    (select tablespace_name,round(sum(bytes)/1024/1024/1024,2) total_gb,count(*) datafiles    
 14                     from dba_data_files group by tablespace_name) df1   
 15              where ts.tablespace_name=fr1.tablespace_name and ts.tablespace_name=df1.tablespace_name order by "FREE_PCT"  
 16            )   
 17        union all  
 18        select 'TOTAL SUMMARY:','ALL',to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') monitor_date,datafiles,  
 19               total_gb "TOTAL_SIZE_GB",  
 20               round(total_gb-free_gb,2) "USED_SIZE_GB",  
 21               free_gb "FREE_SIZE_GB",  
 22               round((100-free_gb/total_gb*100),2) "USED_PCT",  
 23               round(free_gb/total_gb*100,2) "FREE_PCT"   
 24        from  (select round(sum(bytes)/1024/1024/1024,2) free_gb from dba_free_space) fr2,  
 25              (select count(*) datafiles,round(sum(bytes)/1024/1024/1024,2) total_gb from dba_data_files) df2 
 26        union all  
 27        select null,null,null,null,null,null,null,null,null from dual;  
  
   
   
   ......  
  
  
  
31 rows selected.  
  
Elapsed: 00:00:14.28    --14.28S 神啊!!  
  
  
  
SQL>
select * from table(dbms_xplan.display_cursor); PLAN_TABLE_OUTPUT -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- SQL_ID 22d5kxqss44ws, child number 0 ------------------------------------- select * from ( select ts.tablespace_name,ts.contents "TABLESPACE_TYPE", to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') monitor_date, datafiles,total_gb "TOTAL_SIZE_GB", (total_gb-free_gb) "USED_SIZE_GB", free_gb "FREE_SIZE_GB", round((100-free_gb/total_gb*100),2) "USED_PCT", round(free_gb/total_gb*100,2) "FREE_PCT" from dba_tablespaces ts, (select tablespace_name,round(sum(bytes)/1024/1024/1024,2) free_gb from dba_free_space group by tablespace_name) fr1, (select tablespace_name,round(sum(bytes)/1024/1024/1024,2) total_gb,count(*) datafiles from dba_data_files group by tablespace_name) df1 where ts.tablespace_name=fr1.tablespace_name and ts.tablespace_name=df1.tablespace_name order by "FREE_PCT" ) union all select 'TOTAL SUMMARY:',' Plan hash value: 3463738489 -------------------------------------------------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes |TempSpc| Cost (%CPU)| Time | -------------------------------------------