查询dba_free_space视图速度很慢的问题解决
在一次数据库巡检过程中,想查询当前库各个表空间的剩余空间情况,执行下面的SQL语句,很长时间没有结果出来(几个小时)
SQL>select tablespace_name,sum(bytes/1024/1024) from dba_free_space group by tablespace_name;
在网上搜索了一下,有文章提到可能是回收站的对象太多导致的.
于是检查回收站的情况,果然是这个原因,检查的结果如下:
SQL>select count(1) from dba_recyclebin;
561000
鉴于当前库是一个数据仓库类型的数据库,所以手工关闭了垃圾回收站选项(OLTP数据库千万不要关闭这个选项).
SQL>alter system set recyclebin=off scope=both;
查询回收站里面的对象,大都是临时使用的表,如下:
SQL>select owner,object_name,original_name from dba_recyclebin;
OWNER OBJECT_NAME ORIGINAL_NAME
DNLGL BIN$wls0S5rbCcngQAB/AQAqTw==$0 C$_0POWER_TRANSFORMER_PWSC
DNLGL BIN$wls0JCBoxbngQAB/AQAqTQ==$0 C$_0OUTER_CUSTOMER
......
咨询了开发厂商后,确定回收站中对象无用后,手工清除.
SQL>purge dba_recyclebin;
清除回收站用了很长的时间,需要耐心的等待啊.
清除完回收站后,再次执行查询表空间的剩余空间,很快就有结果输出了.
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/32980/viewspace-1059237/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/32980/viewspace-1059237/