RMAN在Oracle 19c RAC中不支持自动跨节点负载均衡,所有通道默认仅在连接的单个节点执行;必须显式通过多个独立RMAN会话分别CONNECT至各实例,并按表空间或数据文件分片备份,同时控制文件自动备份路径须为ASM或NFS等共享存储。

Oracle 19c RAC 中 RMAN 备份本身不支持“自动跨节点负载均衡”——所有通道默认只在连接的那个节点上执行。想让备份 I/O 和 CPU 压力分散到多个实例,必须手动控制连接目标和通道分配,否则备份会卡死在单节点上。
为什么 RMAN 不会自动跨节点分发备份任务
RMAN 客户端(如 rman target /)默认用 / as sysdba 连接,由 SCAN 解析后随机落到某个节点;后续所有 ALLOCATE CHANNEL 都在这个节点的实例上下文中启动服务器进程。RMAN 没有内置机制把一个 BACKUP 命令拆开、分派到不同实例执行。
- 现象:
V$SESSION里全是同一个INSTANCE_NAME的rman进程,I/O 和 CPU 瓶颈集中在一台 - 根本原因:RMAN 不读取
SERVICE_NAME负载策略,也不感知 SCAN Listener 的load=字段 - 不是配置错,是设计如此——它本质是单实例工具,RAC 支持靠的是“人工引导连接去哪”
必须显式 CONNECT 到每个节点并分片备份
跨节点并行 = 多个独立 RMAN 会话,各自连不同实例,各干各的备份子集。不能指望一个 RUN 块内靠多通道解决。
- 每个 RMAN 进程必须用
CONNECT TARGET显式指定实例别名(如racdb1),不能连 SCAN 地址(如racdb_scan) - tnsnames.ora 中需为每个节点定义静态连接描述符:
racdb1 = (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=rac1-vip)(PORT=1521)) (CONNECT_DATA=(SERVICE_NAME=racdb)(INSTANCE_NAME=racdb1))) - 按表空间或数据文件分组:例如节点1备份
USERS和EXAMPLE,节点2备份SYSTEM和SYSAUX,避免重复和遗漏 - 脚本里用
rman target sys/oracle@racdb1启动第一个会话,另起终端跑rman target sys/oracle@racdb2
单节点内并发通道也要谨慎调优
即使只在一个节点上跑 RMAN,盲目加通道数反而拖慢整体备份速度。
-
CONFIGURE DEVICE TYPE DISK PARALLELISM 4只设上限,真正生效必须在RUN { }中写满 4 条ALLOCATE CHANNEL c1 DEVICE TYPE DISK FORMAT '/bak/ch1/%U';…c4 - 每通道独占 PGA 和归档读取上下文;超过底层存储吞吐(如 NFS lease timeout、ASM diskgroup IOPS)会触发
enq: cf - contention或latch: cache buffers chains - SSD 环境可试到 8 通道,但必须配不同子目录(
/bak/ch1/,/bak/ch2/),禁止多通道写同一 NFS 路径 - 查瓶颈用:
SELECT event, time_waited FROM v$session_event WHERE sid IN (SELECT sid FROM v$session WHERE program LIKE '%rman%') ORDER BY time_waited DESC;
RAC 环境下控制文件自动备份路径必须共享
哪怕你分节点做备份,CONTROLFILE AUTOBACKUP 文件仍要能被所有节点访问,否则恢复时找不到。
-
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '+ARCH/control_auto_%F'(ASM)或TO '/shared/nfs/backup/%F'(NFS) - 本地路径如
/u01/backup在节点1生成的 %F 文件,节点2的 RMAN 无法CATALOG或RESTORE - %F 是强制占位符,不可省略;文件生成时机仅限于
BACKUP成功、ARCHIVELOG切换、OPEN RESETLOGS三类事件 - 验证是否真写入:
ls -l /shared/nfs/backup/control_auto_c-*,不能只信SHOW CONTROLFILE AUTOBACKUP
真正的难点不在语法,而在于备份任务划分逻辑是否覆盖全库且无重叠——比如漏掉某个大表空间,或两个节点同时备份同一数据文件,会导致恢复失败。每次变更前先用 LIST BACKUP OF DATABASE 对比基线。











