SYSTEM資料表空間AUD$使用空間過大問題解決方案
問題現象:SYSTEM資料表空間使用率超99%,前期設計時SYSTEM資料表空間是10G固定大小不允許自動擴充。
1.查詢SYSTEM資料表空間的使用率
set linesize 200col TABLESPACE_NAME for a25col SUM_SPACE(M) for a20col USED_SPACE(M) for a20col USED_RATE(%) for a20col FREE_SPACE(M) for a20SELECT D.TABLESPACE_NAME, SPACE || 'M' "SUM_SPACE(M)", BLOCKS "SUM_BLOCKS", SPACE - NVL (FREE_SPACE, 0) || 'M' "USED_SPACE(M)", ROUND ( (1 - NVL (FREE_SPACE, 0) / SPACE) * 100, 2) || '%' "USED_RATE(%)", FREE_SPACE || 'M' "FREE_SPACE(M)" FROM ( SELECT TABLESPACE_NAME, ROUND (SUM (BYTES) / (1024 * 1024), 2) SPACE, SUM (BLOCKS) BLOCKS FROM DBA_DATA_FILES GROUP BY TABLESPACE_NAME) D, ( SELECT TABLESPACE_NAME, ROUND (SUM (BYTES) / (1024 * 1024), 2) FREE_SPACE FROM DBA_FREE_SPACE GROUP BY TABLESPACE_NAME) F WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME(+) AND D.TABLESPACE_NAME = 'SYSTEM';
2.查詢SYSTEM資料表空間中各個段佔用空間情況
SELECT OWNER, SEGMENT_NAME, SEGMENT_TYPE, SUM(BYTES)/1024/1024 FROM DBA_SEGMENTS WHERE TABLESPACE_NAME = 'SYSTEM' GROUP BY OWNER, SEGMENT_NAME, SEGMENT_TYPE ORDER BY 4;
3.截斷佔用空間最大的AUD$表(需要和DBA確認後操作)
truncate table AUD$;
4.查詢AUD$表的資料表空間
SELECT OWNER, TABLE_NAME, TABLESPACE_NAME FROM DBA_TABLES WHERE TABLE_NAME = 'AUD$' AND OWNER = 'SYS';
5.更改AUD$表的資料表空間為其他資料表空間(選做)
BEGIN DBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_LOCATION( AUDIT_TRAIL_TYPE => DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD, AUDIT_TRAIL_LOCATION_VALUE => '&AUD_TBS_NAME'); END; /