Oracle 19c RMAN备份必须显式指定FORMAT路径,不可依赖默认FRA;每条BACKUP命令需带FORMAT(如'/u01/backup/rman/db_%U.bak'),控制文件自动备份须单独配置CONFIGURE CONTROLFILE AUTOBACKUP FORMAT TO '/path/cf_%F.ctl',%F为强制占位符。
oracle 19c 的 rman 默认把备份写进 $oracle_base/fast_recovery_area,但生产环境几乎从不依赖这个路径——权限、空间、隔离性都不可控。直接改环境变量或指望闪回区自动扩容,等于把备份可靠性交给运气。
BACKUP ... FORMAT 必须显式写在每个 BACKUP 命令里
RMAN 不会继承 CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT 的设置来覆盖 BACKUP 命令本身的 FORMAT;如果命令里没写 FORMAT,它就退回到默认路径(哪怕你配了 channel format)。
-
CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '/u01/backup/rman/%U.bak'只影响后续未指定FORMAT的BACKUP,但 19c 实际行为更保守:多数情况下仍 fallback 到 FRA - 真正可靠的做法是每条
BACKUP都带FORMAT,例如:BACKUP DATABASE FORMAT '/u01/backup/rman/db_%U.bak' - 归档日志备份也一样:
BACKUP ARCHIVELOG ALL FORMAT '/u01/backup/rman/arch_%U.bak' DELETE INPUT -
%U是安全占位符(唯一、8字符+3字符+1字符),%d_%T_%s_%p虽可读但易冲突,不建议用于生产脚本
Windows 和 Linux 路径写法差异必须硬编码处理
RMAN 不解析 shell 变量或 Windows 环境变量,$ORACLE_HOME 或 %ORACLE_HOME% 在 FORMAT 里会被当字面量处理,最终生成非法路径。
- Linux 示例:
BACKUP DATABASE FORMAT '/u01/backup/rman/db_%U.bak' - Windows 示例:
BACKUP DATABASE FORMAT 'D:\oracle\backup\rman\db_%U.bak'(注意双反斜杠) - 不要用单引号包裹 Windows 路径再加双反斜杠——RMAN 会报
RMAN-00571语法错误;必须用单引号 + 双反斜杠 - 路径需提前
mkdir -p或mkdir创建,且 Oracle 用户必须有写权限;RMAN 不会自动建目录
控制文件自动备份路径必须单独配置
CONFIGURE CONTROLFILE AUTOBACKUP ON 在 19c 默认开启,但它不认 BACKUP ... FORMAT,也不认 channel format,必须用专用命令指定位置:
- 执行:
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/u01/backup/rman/cf_%F.ctl' -
%F是 19c 强制推荐的占位符(19 字符固定长,含 DBID + 时间戳),不能用%U替代 - 若不配置,控制文件自动备份会尝试写入 FRA,而升级后新库的 FRA 往往未初始化或
SPACE_LIMIT为 0,导致静默失败,现象是RMAN-03009+ORA-19809 - 验证是否生效:
SHOW CONTROLFILE AUTOBACKUP FORMAT;
增量备份和归档日志备份的 FORMAT 不能混用同一目录而不加区分
把全备、增备、归档日志全塞进一个目录,恢复时靠人工分辨文件类型,迟早出事。
- 建议按类型分目录:
/u01/backup/rman/full/、/u01/backup/rman/incr/、/u01/backup/rman/arch/ - 对应命令示例:
BACKUP INCREMENTAL LEVEL 0 DATABASE FORMAT '/u01/backup/rman/incr/l0_%U.bak' - 归档备份加
DELETE INPUT后,务必确认目标归档路径不是 FRA —— 否则DELETE INPUT可能误删还在 FRA 里的归档,导致恢复链断裂 - 跨平台迁移备份集时,路径分隔符和大小写敏感性(Linux 区分,Windows 不区分)会影响
CATALOG START WITH的识别,所以目录结构越规整,后期越省事
最常被忽略的一点:RMAN 的 FORMAT 是纯字符串替换,不做路径合法性检查。写错一个斜杠、少一个字母、权限没开,它不会提前报错,而是等到真正写文件时才失败——而且可能只失败某一个备份片,其余照常进行,导致你以为备份成功了。











