rac可靠备份必须使用所有节点可读写的共享路径(如asm磁盘组或统一nfs挂载),显式配置controlfile autobackup format指向该路径,脚本需支持节点故障转移、多通道分配及归档日志跨节点清理。

直接在 RAC 双节点上跑单节点风格的 rman target / 脚本,备份大概率会“看起来成功、实际残缺”——控制文件只在执行节点备份、归档日志分散在两个节点本地、BACKUP DATABASE 不保证所有数据文件被同一通道扫描。真正在 RAC 上做可靠备份,核心不是“怎么连”,而是“谁来读、写到哪、怎么协调”。
备份目标路径必须是所有节点可读写的共享位置
RAC 备份失败的第一大原因:路径没共享。比如节点1把备份写到 /u01/backup,节点2根本看不到这个目录,或者挂载的是不同 NFS 导出(nas1:/bak vs nas2:/bak),导致归档日志碎片化、控制文件备份缺失。
- 用 ASM:确保所有节点都能访问同一磁盘组,例如
+ARCH,RMAN 中显式指定FORMAT '+ARCH/rman/%U' - 用 NFS:统一挂载同一地址,如
192.168.0.111:/data → /bak,并在两节点都验证:sudo -u oracle touch /bak/test.txt - 绝对不要用
$ORACLE_HOME/dbs或/home/oracle/bak这类本地路径作为备份目标或控制文件自动备份路径 - 检查挂载选项是否含
_netdev(写入/etc/fstab),避免重启时因网络未就绪导致挂载失败
CONTROLFILE AUTOBACKUP 必须显式配置 FORMAT 且指向共享路径
CONFIGURE CONTROLFILE AUTOBACKUP ON 只是开关,不等于备份真发生;默认 fallback 到 FRA($ORACLE_BASE/fast_recovery_area)时,若该目录未初始化或权限不对,备份静默失败,SHOW ALL 看不出任何异常。
- 必须执行:
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/bak/rman/control_%F'(NFS)或TO '+ARCH/control_%F'(ASM) -
%F是强制占位符,不可省略或替换成%U;它展开为c-DBID-YYYYMMDD-SS格式,用于恢复时精准定位 - SPFILE 会随控制文件一并打包进该文件,但恢复时需先
RESTORE SPFILE TO ...,再用它启动实例,才能RESTORE CONTROLFILE - 验证方式:手动执行
ALTER SYSTEM ARCHIVE LOG CURRENT,然后检查ls -l /bak/rman/control_*是否有新文件生成
备份脚本不能绑定固定节点,要支持故障转移执行
在节点1写个 cron 定时跑 rman,节点1宕机,备份就断——这不是高可用。RAC 备份调度的关键,是“执行权”与“存储位置”解耦。
- 最简可行:两个节点部署完全相同的脚本,但通过
srvctl status instance -d ORCL -i ORCL1判断当前实例是否为主执行节点(如只允许ORCL1执行全备) - 更健壮:用 Oracle Clusterware 的
crsctl check cluster+ 自定义资源类型,或借助olsnodes -s获取当前活跃节点列表 - 脚本中必须显式分配多通道(
allocate channel c1 type disk、c2),否则 RAC 下可能只用一个节点的 I/O 资源,拖慢备份速度 - 归档日志备份必须加
DELETE INPUT(如backup archivelog all delete input),否则节点2产生的归档可能永远不被清理
增量备份和保留策略要避开 RAC 特有的时间漂移陷阱
RAC 节点间系统时间即使差几百毫秒,也可能让 RECOVERY WINDOW OF 15 DAYS 在不同节点解析出不一致的“过期”判断,导致 DELETE OBSOLETE 漏删或误删。
- 统一用
REDUNDANCY 2(保留最近 2 个全备)比基于时间窗口更稳妥,尤其当节点时间未严格 NTP 同步时 - Level 0 和 Level 1 增量脚本必须共用同一
FORMAT前缀(如都用/bak/rman/incr_%d_%T_%s),否则LIST BACKUP查不到完整链路 -
BACKUP DATABASE PLUS ARCHIVELOG在 RAC 中不推荐——它不保证归档日志跨节点收集完整;应拆成独立的backup database+backup archivelog all步骤 - 每次备份后务必运行
CATALOG START WITH '/bak/rman/',确保 RMAN 库能识别所有节点写入的备份片
最容易被忽略的点:控制文件自动备份触发时机不是定时的,只发生在 BACKUP 成功、ARCHIVELOG 切换、OPEN RESETLOGS 这三类事件之后;如果全备脚本里漏了 BACKUP DATABASE 或归档没切,控制文件备份就不会生成——得靠真实操作去验证,不能只信配置命令的返回。











