sysaux表空间暴涨主因常是awr基线(尤其是static或未对齐的moving_window)锁定快照导致自动清理失效;需先查dba_hist_baseline_details确认基线类型与时间范围,再drop_baseline解绑,立即执行flush_awr并配合shrink space释放物理空间,最后同步调整window_size与retention避免再次卡死。
sysaux表空间持续暴涨,八成不是awr快照“太多”,而是有基线(baseline)锁住了本该自动清理的快照——dbms_workload_repository.drop_snapshot_range删了也白删,空间就是不下来。
查基线是否在挡路:dba_hist_baseline_details必须先看
AWR快照被基线保护后,哪怕过了retention时间也不会自动清理。很多人调了MODIFY_SNAPSHOT_SETTINGS却没效果,根源就在这儿。
- 执行:
SELECT baseline_name, baseline_type, start_snap_id, end_snap_id, creation_time FROM dba_hist_baseline_details; - 重点关注
baseline_type = 'STATIC'或'MOVING_WINDOW'的记录;MOVING_WINDOW基线默认存在且不可删,但它的window_size可能远大于当前retention - 如果看到
start_snap_id非常老(比如半年前),而end_snap_id还在高位,说明大量历史快照被钉住
DROP_BASELINE前先确认依赖:别误删正在用的性能基线
删基线本身不释放空间,但它解除了对快照的锁定,后续flush_awr或自动清理才能真正生效。但删错基线会影响ADDM、ASH报告回溯能力。
- 先查哪些基线被引用:
SELECT * FROM dba_hist_baseline_template;(模板类基线影响范围更广) - 静态基线可删,但得确认没人用:
SELECT * FROM dba_hist_baseline WHERE baseline_name = 'XXX';看last_used_time - 执行删基线:
EXEC DBMS_WORKLOAD_REPOSITORY.DROP_BASELINE(baseline_name => 'MY_PERF_BASELINE', cascade => TRUE);——cascade => TRUE会连带删掉关联的快照元数据,关键
删完基线后,flush_awr和shrink space缺一不可
DROP_BASELINE只是“松绑”,MMON不会立刻回收空间。不手动触发,WRH$_表的高水位线(HWM)卡在那儿,dba_segments里体积还是大。
- 立即执行:
EXEC DBMS_WORKLOAD_REPOSITORY.FLUSH_AWR;—— 强制刷内存采样并唤醒段收缩逻辑 - 等5–10分钟,再查
WRH$_ACTIVE_SESSION_HISTORY等大表:SELECT segment_name, bytes/1024/1024 MB FROM dba_segments WHERE segment_name LIKE 'WRH$%' AND tablespace_name = 'SYSAUX' ORDER BY MB DESC; - 若MB没明显下降,说明物理数据还在:对单个表执行
ALTER TABLE wrh$_sql_plan SHRINK SPACE CASCADE;(需先ENABLE ROW MOVEMENT)
预防再爆:改window_size比改retention更治本
很多人只调retention,但MOVING_WINDOW基线的window_size(单位:分钟)才是实际保留窗口。两者不一致就会卡死清理流程。
- 查当前值:
SELECT window_size FROM dba_hist_baseline WHERE baseline_name = 'SYSTEM_MOVING_WINDOW'; - 若返回
691200(8天),而你刚把retention设为4320(3小时),就会报ORA-13541 - 同步调整:
EXEC DBMS_WORKLOAD_REPOSITORY.MODIFY_BASELINE_WINDOW_SIZE(window_size => 4320); - 之后再改
retention才安全,顺序不能反
基线不是“快照的备份”,它是AWR清理机制里的一个开关。开关没关,删快照就像往漏水的桶里舀水——动作再快也没用。真正要盯的,是dba_hist_baseline_details里那些长期不动的STATIC基线,以及SYSTEM_MOVING_WINDOW的window_size是否和retention对齐。











