表空間使用情況查詢慢的處理

kuqlan發表於2012-12-19

今天某個系統上的資料庫,在日常維護的過程中發現,查詢表空間使用情況,比其他的資料庫明顯慢,得等到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>

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/18841027/viewspace-1059955/,如需轉載,請註明出處,否則將追究法律責任。

相關文章