清理SYSAUX資料表空間的WRH$_LATCH_CHILDREN表,sysauxwrh
周六 被突然起來的簡訊 轟醒. 一看有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_NAMEPARTITION_NAMESEGMENT_TYPEBYTES/1024/1024
WRH$_LATCH_CHILDRENWRH$_LATCH__567344007_15885TABLE PARTITION3971
WRH$_LATCH_CHILDREN_PKWRH$_LATCH__567344007_15885INDEX PARTITION2822
WRH$_LATCH_CHILDRENWRH$_LATCH__567344007_0TABLE PARTITION2213
WRH$_LATCH_CHILDRENWRH$_LATCH__567344007_15909TABLE PARTITION1984
WRH$_LATCH_CHILDREN_PKWRH$_LATCH__567344007_0INDEX PARTITION1537
WRH$_LATCH_CHILDREN_PKWRH$_LATCH__567344007_15909INDEX PARTITION1412
基本上都是 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天是否很不划算的事.