要延长AWR保留时间至30天必须用DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS设置retention43200分钟该操作直接更新dba_hist_wr_control表立即生效且SYSAUX需预留至少2GB空闲空间。修改AWR保留时间要用DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGSoracle默认awr快照保留8天想延长到30天核心就是调这个包——不是改参数文件也不是动表结构更不是删旧快照手动腾空间。它直接更新wrm$_wr_control里的配置下次自动清理就按新规则走。常见错误是先查DBA_HIST_SNAPSHOT看最近快照时间再手动DELETE老数据结果下次MMON一跑又清掉一批或者干脆报ORA-13516AWR purge failed。因为底层清理逻辑只认控制表的设置不认你手删了多少行。必须用SYS或有ADMINISTER DATABASE TRIGGER权限的用户执行retention单位是分钟30天得填30*24*60 43200interval采集频率可以不动保持默认60分钟改它会影响性能数据粒度但和保留时间无关执行后立即生效不需要重启实例也不需要刷新任何缓存检查当前设置别只看DBA_HIST_SNAPSHOT最大END_INTERVAL_TIME很多人用SELECT MAX(END_INTERVAL_TIME) - MIN(END_INTERVAL_TIME) FROM DBA_HIST_SNAPSHOT估算“实际保留了几天”这完全误导。这张表只是快照内容视图受自动清理、手工删除、甚至DBMS_WORKLOAD_REPOSITORY.DROP_SNAPSHOT_RANGE影响不能反推保留策略。真正权威的来源只有两个SELECT retention, interval FROM dba_hist_wr_control —— 这是MODIFY_SNAPSHOT_SETTINGS写入的位置唯一可信SELECT * FROM v$sysstat WHERE name AWR snapshot interval辅助验证采集是否正常如果dba_hist_wr_control里retention还是11520即8天说明MODIFY_SNAPSHOT_SETTINGS根本没成功执行或者被回滚了。ORA-13505修改失败最常见的原因是SYSAUX表空间不足延长保留期不光是改个数字AWR要存更多历史快照数据SYSAUX会持续增长。如果执行MODIFY_SNAPSHOT_SETTINGS时抛ORA-13505: Cannot modify AWR settings due to lack of space in SYSAUX tablespace别硬 retry先看空间。 AI Code Reviewer AI自动审核代码