RMAN RETENTION POLICY 仅支持 REDUNDANCY 或 RECOVERY WINDOW 二选一,切换后旧策略立即失效;需用 SHOW RETENTION POLICY 确认当前生效策略;REDUNDANCY 模式下 REPORT NEED BACKUP 仅列出备份份数不足指定值的文件,且依赖控制文件元数据而非磁盘真实状态;CROSSCHECK 必须先于 DELETE OBSOLETE 执行;CONTROL_FILE_RECORD_KEEP_TIME 和归档完整性共同影响策略有效性。

RETENTION POLICY 只能二选一,不能同时设 recovery window 和 redundancy
RMAN 的 RETENTION POLICY 是全局、互斥的配置项,执行 CONFIGURE RETENTION POLICY TO REDUNDANCY 2 后,之前设的 RECOVERY WINDOW 会立即失效,反之亦然。很多人在测试环境反复切换,却没用 SHOW ALL 确认当前生效的是哪条——结果 REPORT NEED BACKUP REDUNDANCY 2 返回空或报错 RMAN-06571,实际是策略不匹配,不是真没备份。
判断当前策略最可靠的方式是运行:
SHOW RETENTION POLICY;
输出类似 CONFIGURATION FOR RETENTION POLICY IS: REDUNDANCY 2 或 RECOVERY WINDOW OF 7 DAYS 才是真实生效的依据。
REDUNDANCY 模式下,REPORT NEED BACKUP 查的是“哪些文件没达标”,不是“冗余度是多少”
REPORT NEED BACKUP REDUNDANCY 2 不会返回每个数据文件当前有几份备份,它只列出那些**当前有效备份份数不足 2 份**的数据文件。这个判断依赖控制文件中记录的元数据,但不验证磁盘上文件是否真实可读。
- 若策略是
REDUNDANCY,该命令才有效;若是RECOVERY WINDOW,直接报错或无输出 - 它包含归档日志链依赖,但不检查归档是否被删、是否被
ARCHIVELOG DELETION POLICY清理过 - 如果启用了
BACKUP OPTIMIZATION ON,RMAN 可能跳过已备份过的归档,导致某数据文件看似满足冗余,实则恢复链断裂
所以生产环境建议关掉优化:CONFIGURE BACKUP OPTIMIZATION OFF,避免冗余检查和实际恢复能力脱节。
CROSSCHECK 和 DELETE OBSOLETE 必须分两步做,顺序不能反
LIST BACKUP OF DATAFILE 1 只读控制文件,显示“理论上存在”的备份;CROSSCHECK BACKUP OF DATAFILE 1 才真正去磁盘扫描,把找不到的标记为 X(expired)。
- 大量
X状态说明 OS 层已被rm删除,但 RMAN 还不知道——必须先CROSSCHECK,再DELETE EXPIRED BACKUP,否则REPORT NEED BACKUP仍会把已丢失的备份计入冗余数 -
DELETE OBSOLETE只删被策略判定为过时(obsolete)且物理存在的备份;它不会碰X状态的文件,也不会报错提醒你磁盘不一致 - 常见误操作:改完
REDUNDANCY 2就直接跑DELETE OBSOLETE,结果删掉还在恢复链里的旧全备——正确顺序永远是REPORT OBSOLETE→ 人工核对 →DELETE OBSOLETE
别忽略 CONTROL_FILE_RECORD_KEEP_TIME 和归档完整性
控制文件里存的 RMAN 元数据不是永久的。默认 CONTROL_FILE_RECORD_KEEP_TIME=7,意味着 7 天前的备份记录可能被覆盖——尤其当你只靠控制文件(没建恢复目录)又设了 RECOVERY WINDOW 14 DAYS,RMAN 根本看不到更早的备份,策略就形同虚设。
归档日志同样关键:
- 设了
RECOVERY WINDOW 7 DAYS,但归档被其他脚本提前清理 → RMAN 可能误判全备为 obsolete,删掉后无法恢复 - 设了
ARCHIVELOG DELETION POLICY TO APPLIED ON STANDBY,主库删归档时 RMAN 仍认为它属于某份完整备份链,影响REDUNDANCY计算结果 - 数据库必须处于
ARCHIVELOG模式,否则RECOVERY WINDOW策略基本不可用
冗余度不是数字游戏。它依赖三件事严格同步:控制文件里的元数据、磁盘上真实存在的文件、以及所有删除策略(包括归档策略)的协同。少做一次 CROSSCHECK,或多配一个 APPLIED ON STANDBY,都可能让 REPORT 显示“达标”,而恢复时才发现链断了。


















