清理SYSAUX資料表空間的WRH$_LATCH_CHILDREN表
周六 被突然起來的簡訊 轟醒. 一看有63條簡訊. 都是來之與監控中的.有關資料表空間大小超過某個警戒值。
發現 SYSAUX資料表空間超過了15GB
通過下面代碼查看SYSAUX資料表空間的功能佔用情況
SELECT occupant_name "Item",
space_usage_kbytes / 1048576 "Space Used (GB)",
schema_name "Schema",
move_procedure "Move Procedure"
FROM v$sysaux_occupants
ORDER BY 2 desc
基本來之於
Item |
Space Used (GB) |
Schema |
SM/AWR |
15.3005981445313 |
SYS |
查看相應表和索引大小熱門排行榜
SELECT *
FROM (SELECT SEGMENT_NAME,
PARTITION_NAME,
SEGMENT_TYPE,
BYTES / 1024 / 1024
FROM DBA_SEGMENTS
WHERE TABLESPACE_NAME = 'SYSAUX'
ORDER BY 4 DESC)
WHERE ROWNUM <= 10;
SEGMENT_NAME PARTITION_NAME SEGMENT_TYPE BYTES/1024/1024
WRH$_LATCH_CHILDREN WRH$_LATCH__567344007_15885 TABLE PARTITION 3971
WRH$_LATCH_CHILDREN_PK WRH$_LATCH__567344007_15885 INDEX PARTITION 2822
WRH$_LATCH_CHILDREN WRH$_LATCH__567344007_0 TABLE PARTITION 2213
WRH$_LATCH_CHILDREN WRH$_LATCH__567344007_15909 TABLE PARTITION 1984
WRH$_LATCH_CHILDREN_PK WRH$_LATCH__567344007_0 INDEX PARTITION 1537
WRH$_LATCH_CHILDREN_PK WRH$_LATCH__567344007_15909 INDEX PARTITION 1412
基本上都是 WRH$表的分區過大 其中 WRH$_LATCH__567344007_15909 第一個數字是DBID 第二數字是快照ID.
需要檢查上面 15885 15909 0 三個ID 是否是近期的ID?
查看ID的時間 發現 是最近2天的ID
select snap_id, begin_interval_time from sys.dba_hist_snapshot order by snap_id;
是不是 把STATISTICS_LEVEL 設定了ALL 導致他們變大了呢?
不過關如何 我們把 0給清空掉!
Alter table WRH$_LATCH_CHILDREN truncate partition WRH$_LATCH__567344007_0;
把原來預設AWR 保留31天 改成保留10天
select dbms_stats.get_stats_history_retention from dual;
exec dbms_stats.alter_stats_history_retention(10);
清空掉 11天的統計資訊
exec dbms_stats.purge_stats(systimestamp -11);
說實在的 這些統計資訊占空間不多, 只是為了保持一致行. 庫大了保留31天是否很不划算的事。