rman在rac中必须显式为每个节点执行connect target并allocate channel,服务名须指向具体实例(如racdb1/racdb2)而非scan;归档与备份路径必须真正共享(asm/nfs),且snapshot controlfile和控制文件自动备份也需置于共享存储,否则触发ora-00245或ora-19504等错误。
因为rac里多个实例必须能同时读写备份文件,本地路径天然隔离,不共享就必然失败。
RMAN通道分配依赖实例连接,不是靠脚本位置
RMAN不会自动跨节点分发任务。你在node2上执行rman target /,如果/指向的是node1的监听服务(比如用SCAN名),所有ALLOCATE CHANNEL都会落在node1;即使你手动在node2上运行脚本,只要没显式CONNECT TARGET sys/pwd@racdb2,通道就不会出现在node2的v$session里。
- 每个
ALLOCATE CHANNEL前必须紧跟CONNECT TARGET,且服务名要明确指向单个实例(如racdb1、racdb2),不能共用SCAN服务名 -
CONFIGURE CHANNEL只对当前RMAN session生效,重启即失效,且不跨实例同步 - 通道名(如
c1、c2)在同一个RUN块内必须唯一,重复会报RMAN-06002
归档日志和备份文件路径必须真正可读写
哪怕通道成功分配到两个节点,如果备份路径是/u01/backup这种本地目录,node1写完,node2根本看不到文件——restore时直接报ORA-19504或找不到piece。
- NFS挂载必须统一:所有节点挂同一远程路径(如
192.168.0.111:/data → /bak),且chown oracle:oinstall、chmod 755,fstab加noac或actimeo=0 - ASM路径如
+RECO/rac/backup_%U需确认磁盘组在线、空间充足、所有节点实例有访问权限 - 别把备份写进
db_recovery_file_dest(FRA),它默认是本地路径,容易被归档占满引发ORA-19566
Snapshot Controlfile和控制文件自动备份也得共享
ORA-00245错误不是偶然——RAC所有节点都要能更新SNAPSHOT CONTROLFILE,放本地路径(如/u01/oracle/dbs/snapcf_orcl1.f)会导致其他节点无法访问,备份直接中断。
- 必须用
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '+DATA/<dbname>/snapcf_<dbname>.f'</dbname></dbname>指向ASM -
CONFIGURE CONTROLFILE AUTOBACKUP ON FORMAT的路径也得是共享位置(如/bak/rman/control_%F),默认%F会落到$ORACLE_HOME/dbs,这是单机陷阱 - 验证方式:手动
ALTER SYSTEM ARCHIVE LOG CURRENT后,检查共享路径是否生成新控制文件备份
最易被忽略的是:共享存储不是“挂上了就行”,而是要验证跨节点文件可见性(touch /bak/test.txt)、多路径WWID一致性、ASM磁盘状态(kfod输出STATUS = MEMBER)。路径对了,权限和语义不对,照样失败。











