表空间使用情况查询慢的处理

今天某个系统上的数据库,在日常维护的过程中发现,查询表空间使用情况,比其他的数据库明显慢,得等到10分钟左右才能得到查询结果。
需查询发现是因为Oracle 10g的的新特性RECYCLEBIN机制导致的。
按网上介绍执行了 
SQL> purge recyclebin;
语句,语句执行的很快,但是问题仍未解决。根据过去学习记忆,执行了如下语句:
SQL> purge dba_recyclebin;

该语句执行时间相当长,可能是因为业务时间执行原因导致的,最终问题得以解决。说明DBA有必要定期进行对Oracle回收站的清理操作。

[@more@]

如下为具体处理过程:

[root@dbserv ~]# su - oracle
-bash-3.2$ sqlplus / as sysdba

SQL> select count(*) from sys.RECYCLEBIN$;

COUNT(*)
----------
135178



SQL> PURGE DBA_RECYCLEBIN;

DBA Recyclebin purged.


以上的purge过程大概执行了5过多小时,终于执行完了。


SQL> select count(*) from sys.RECYCLEBIN$;

COUNT(*)
----------
0

在执行如下表空间使用情况查询后,很快就看到了结果。

SQL> set linesize 1000
SQL> set wrap off 
SQL> select substr(a.TABLESPACE_NAME,1,30) TablespaceName,
2 sum(a.bytes/1024/1024) as "Totle_size(M)",
3 sum(nvl(b.free_space1/1024/1024,0)) as "Free_space(M)",
4 sum(a.bytes/1024/1024)-sum(nvl(b.free_space1/1024/1024,0)) as "Used_space(M)",
5 round((sum(a.bytes/1024/1024)-sum(nvl(b.free_space1/1024/1024,0)))*100/sum(a.bytes/1024/1024),2) as "Used_percent%" from dba_data_files a,
6 (select sum(nvl(bytes,0)) free_space1,file_id from dba_free_space
7 group by file_id) b where a.file_id = b.file_id(+) group by a.TABLESPACE_NAME
8 order by "Used_percent%";

TABLESPACENAME Totle_size(M) Free_space(M) Used_space(M) Used_percent%
------------------------------------------------------------ ------------- ------------- ------------- -------------
USERS 500 499.9375 .0625 .01
SYSAUX 7000 4903.25 2096.75 29.95
UNDOTBS2 7000 4902.3125 2097.6875 29.97
SYSTEM 2000 638.3125 1361.6875 68.08
...


SQL>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值