RMAN 0级备份是完整数据文件块扫描的基准快照,可独立恢复;1级备份仅备份自上次0级或更低级以来变化的块,分DIFFERENTIAL(默认,相对最近任意级别)和CUMULATIVE(相对最近0级)。
什么是 RMAN 0 级和 1 级增量备份的本质区别
rman 的 0 级备份不是“全备”,而是作为后续 1 级增量的基准快照;1 级备份只记录自上次 0 级或更早 1 级以来变化的数据块。关键在于:level 0 触发的是完整数据文件块扫描,level 1 则依赖控制文件中记录的上次备份 scn 或检查点信息来跳过未修改块。
常见错误现象:RMAN-06059: expected archived log not found 或恢复时提示“找不到 0 级备份”,往往是因为误把 LEVEL 1 当作全量基线,或 0 级备份被手动删除但控制文件未同步清理。
-
LEVEL 0备份可独立用于恢复(等价于全备),但耗时/空间略高于传统全备(因包含空块) -
LEVEL 1 CUMULATIVE记录自最近一次LEVEL 0以来所有变化;LEVEL 1 DIFFERENTIAL(默认)只记录自最近一次同级或更低级备份以来的变化 - 不建议混用
CUMULATIVE和DIFFERENTIAL在同一策略中,否则恢复路径判断会混乱
怎么写正确的 RMAN 增量备份脚本(含保留策略)
真实运维中,错用 BACKUP INCREMENTAL LEVEL 1 DATABASE 而没指定 PLUS ARCHIVELOG 或归档日志删除逻辑,会导致归档堆积、恢复链断裂。
典型安全组合:
RUN {
ALLOCATE CHANNEL c1 DEVICE TYPE DISK;
BACKUP INCREMENTAL LEVEL 0 DATABASE PLUS ARCHIVELOG DELETE INPUT;
RELEASE CHANNEL c1;
}
- 必须显式加
PLUS ARCHIVELOG DELETE INPUT,否则归档日志不会被清理,LEVEL 1备份无法推进到下一个周期 - 用
KEEP UNTIL TIME 'SYSDATE+7'替代单纯KEEP FOREVER,避免控制文件中残留已过期备份元数据,干扰LIST BACKUP和恢复判断 - 如果使用 FRA(Flash Recovery Area),确认
DB_RECOVERY_FILE_DEST_SIZE足够容纳至少两套完整增量链(0 + 1 + 归档),否则 RMAN 可能静默失败或自动删除旧备份
为什么 DIFFERENTIAL 是默认且通常更优的选择
DIFFERENTIAL 不是“差量”字面意思的最小变化集,而是指“相对于最近一次任意级别备份”的增量。它让备份窗口更短、存储增长更平缓,但对恢复操作透明度稍低。
容易踩的坑:LIST BACKUP OF DATABASE BY BACKUP 输出里看不到明确的“父备份 ID”,需配合 LIST BACKUP SUMMARY 和 PIECE# 对比完成时间与 LEVEL 字段才能理清依赖链。
- 执行
BACKUP INCREMENTAL LEVEL 1 DATABASE时,RMAN 自动选择最近一次LEVEL 0或LEVEL 1作为基准 —— 这个行为不可控,也不该试图用RECOVER COPY OF DATABASE WITH TAG强制指定 -
CUMULATIVE虽便于恢复(只需 0 级 + 最新 1 级),但每天生成的 1 级备份体积趋近 0 级,失去增量意义 - 验证恢复链是否完整:用
RESTORE DATABASE PREVIEW RECOVERY,它会列出实际需要的备份集,比肉眼查LIST BACKUP更可靠
备份后必须做的三件事:校验、归档清理、控制文件同步
很多人以为 BACKUP 命令成功就万事大吉,其实 RMAN 只保证备份集写入磁盘,不校验块一致性或归档完整性。一次未清理的归档堆积可能让下次 LEVEL 1 备份卡在 archivelog backup 阶段。
- 立即运行
VALIDATE BACKUPSET <code>xxx或CHECK LOGICAL,尤其在跨平台迁移或使用压缩备份后 - 归档日志清理必须与备份绑定:用
DELETE ARCHIVELOG UNTIL TIME 'SYSDATE-1'前,先确认该时间点前所有LEVEL 0和依赖的LEVEL 1已成功备份并校验 - 若手动删除了备份片(如用 OS 命令删了
backupset目录),必须立刻执行CROSSCHECK BACKUP+DELETE EXPIRED BACKUP,否则 RMAN 仍认为那些备份存在,后续DELETE OBSOLETE会出错
最常被忽略的是控制文件中备份元数据与物理文件的一致性 —— 它不报错,但会让恢复变成猜谜游戏。








