RMAN全备慢主因是并行配置未落实:需手动ALLOCATE CHANNEL且命名唯一、路径隔离、RAC绑定实例;CONFIGURE PARALLELISM仅设上限,不自动启用;大文件须配SECTION SIZE;四要素缺一不可。
rman 全备慢,八成不是数据库本身的问题,而是并行通道没配对、没写对、没用上——configure device type disk parallelism 只设上限,不自动开通道;不写 allocate channel,哪怕设了 8,实际也只跑 1 个。
为什么 CONFIGURE DEVICE TYPE DISK PARALLELISM 不生效
这个参数只是“允许最多开几个通道”的门禁,不是“启动时自动开几个”的开关。RMAN 执行 BACKUP DATABASE 时,默认不分配任何通道(19c 起默认关闭自动分配),全靠你手动在 RUN { } 块里写满 ALLOCATE CHANNEL。
-
CONFIGURE DEVICE TYPE DISK PARALLELISM 4:后续所有手动ALLOCATE CHANNEL最多起 4 个,写第 5 个会被忽略 -
CONFIGURE DEFAULT PARALLELISM 4:在 19c 中基本不触发,因自动分配逻辑默认禁用 - 常见报错
RMAN-01009: syntax error: found "identifier",大概率是RUN后少了{,或换行/缩进破坏了语法结构
ALLOCATE CHANNEL 怎么写才真正并发
通道必须显式声明、命名唯一、路径隔离、连接明确,否则不是慢,就是备份片写乱或恢复时报 RMAN-06017。
- 每个通道名要不同:
c1、c2、c3,重复用c1两次直接报错 - FORMAT 路径不能共用:
FORMAT '/backup/%U'会导致所有通道争抢同一目录,应分流为FORMAT '/backup/ch1/%U'、FORMAT '/backup/ch2/%U' - RAC 环境下必须加
CONNECT 'sys/oracle@racdb1',且racdb1是tnsnames.ora中指向具体实例的静态别名,不能是 SCAN 地址 - 备份完立刻
RELEASE CHANNEL c1,避免残留通道占用 PGA 和归档读取资源
大文件不加 SECTION SIZE 就等于没并行
单个数据文件 >500MB 时,不指定 SECTION SIZE,RMAN 仍按“一个通道 = 一个文件”串行处理——哪怕你开了 4 个通道,也只有一个在干活,其余干等。
-
SECTION SIZE只对BACKUP DATAFILE、BACKUP DATABASE、BACKUP TABLESPACE有效,对归档日志或BACKUP AS COPY无效 - 设太小(如
1M)会触发 RMAN 强制上调至能凑出最多 256 段的大小,失去控制权;推荐从200M起步,大文件可设2G - 命令必须带完整参数:
BACKUP DATAFILE 1 SECTION SIZE=200M;,漏掉SECTION SIZE就退化为普通备份 - 临时表空间、undo 表空间不支持分段,
SECTION SIZE对它们无作用
并行度设多少才算合理
盲目调高 PARALLELISM 反而拖慢:I/O 已到瓶颈时增通道只会加剧队列等待;CPU 密集型压缩(如 COMPRESS ALGORITHM 'MEDIUM')会因线程争抢导致上下文切换飙升。
- 先看瓶颈:
V$BACKUP_ASYNC_IO中EFFECTIVE_BYTES_PER_SECOND若远低于设备标称值 → I/O 没跑满,优先加通道;若已接近上限 → CPU 或压缩成瓶颈 - 物理磁盘阵列建议并行数 ≤ 控制器通道数 × 2(如双控制器 RAID,设 4 比 8 更稳);SSD/NVMe 可试到 6~8
- 从
PARALLELISM 2起步,观察V$SESSION_LONGOPS中OPNAME = 'RMAN backup & recovery'的进度波动,逐步加到 4 或 6 - 超过 8 很少带来收益,反而容易触发
WAIT_TIME明显升高(查TYPE = 'INPUT'行)
最常被忽略的一点:通道数量、SECTION SIZE、存储路径隔离、RAC 实例绑定,这四者必须同时对齐,缺一不可。少做一步,前面所有配置都白搭。











