RMAN备份策略在Oracle 21c中必须显式配置RETENTION POLICY,否则默认REDUNDANCY 1易致生产环境误删;仅可二选一:RECOVERY WINDOW(依赖归档完整)或REDUNDANCY(空间可控);设为NONE将禁用DELETE OBSOLETE且FRA可能满导致ORA-19809;真正长期保留需用KEEP UNTIL TIME或KEEP FOREVER;DELETE OBSOLETE仅删元数据标记过期且物理存在的备份,须先CROSSCHECK再清理。

RMAN备份策略在Oracle 21c中必须通过CONFIGURE RETENTION POLICY显式设置,否则默认为REDUNDANCY 1——这意味着只要有一份可用备份,旧备份就可能被DELETE OBSOLETE清理掉,生产环境极易误删。
RETENTION POLICY只能二选一:RECOVERY WINDOW还是REDUNDANCY?
Oracle不允许同时启用两种策略。执行第二个CONFIGURE RETENTION POLICY命令时,前一个自动失效。
-
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS:保留“能恢复到过去7天内任意时间点”所需的最小备份集,依赖归档日志链完整。若归档被手动删除或损坏,RMAN不会报错,但LIST OBSOLETE显示的过期备份会变少——策略静默降级 -
CONFIGURE RETENTION POLICY TO REDUNDANCY 2:确保每个数据文件至少有2份可恢复的完整备份(含对应归档),不依赖时间点,更适合空间可控、RPO无硬性要求的环境(如测试库) - 查当前生效策略,唯一可靠方式是运行
SHOW RETENTION POLICY,别信记忆或脚本注释
configure retention policy to none有严重副作用
设为none后,RMAN不再标记任何备份为过期,DELETE OBSOLETE完全失效。但若使用闪回恢复区(FRA),RMAN无法主动清理FRA中的备份片来腾空间,最终触发ORA-19809错误,数据库可能挂起。
- 这不是“禁用策略”的安全方案,而是放弃空间管理权
- 真正想长期保留备份,应配合
KEEP UNTIL TIME或KEEP FOREVER在单次BACKUP命令中显式标记,而非全局关策略 - 若必须用
none,务必监控DB_RECOVERY_FILE_DEST_SIZE和FRA使用率,手动轮转或迁出旧备份
DELETE OBSOLETE不等于自动清理,它只删“策略判定过期且物理存在”的备份
这是最常被忽略的执行逻辑。RMAN判断是否过期,只看控制文件里记录的元数据 + 当前RETENTION POLICY;但它删不删,还得确认备份文件真在磁盘上。
- 如果备份文件已被人工
rm或NFS挂载失效,控制文件仍存记录,DELETE OBSOLETE跳过它,也不报错 - 必须先跑
CROSSCHECK BACKUP刷新状态,再DELETE NOPROMPT EXPIRED清理“记录存在但文件丢失”的条目,最后DELETE NOPROMPT OBSOLETE才有效 - 归档日志同理:
CONFIGURE ARCHIVELOG DELETION POLICY不配,默认不删归档;即使配了,也得靠DELETE INPUT或DELETE ARCHIVELOG显式触发
策略配置本身很简单,难的是理解它和CROSSCHECK、FRA空间、归档完整性之间的耦合关系。一次CONFIGURE不是设完就完事,后续每次DELETE OBSOLETE前都得确认元数据与物理文件的一致性。


















