RMAN备份慢主因是通道未配对、并行度未匹配硬件,CONFIGURE DEVICE TYPE DISK PARALLELISM仅设上限且需配合RUN块中显式ALLOCATE CHANNEL才生效。
rman 备份慢,90% 是通道没配对、并行度没对齐硬件,不是数据库本身有问题。
为什么 CONFIGURE DEVICE TYPE DISK PARALLELISM 不生效
这个参数只设上限,不自动开通道。RMAN 执行 BACKUP DATABASE 时,若没在 RUN { } 块里显式写 ALLOCATE CHANNEL,哪怕你设了 PARALLELISM 4,实际仍只跑 1 个通道。
-
CONFIGURE DEVICE TYPE DISK PARALLELISM 4的作用是:后续所有手动ALLOCATE CHANNEL最多只起 4 个,超了也忽略 -
CONFIGURE DEFAULT PARALLELISM 4只影响 RMAN 自动分配逻辑,但 19c 默认关闭自动分配,所以基本不触发 - 真正生效的路径只有:先
CONFIGURE设上限 → 再在RUN { }中写满对应数量的ALLOCATE CHANNEL c1 DEVICE TYPE DISK→ 且大括号必须顶格、无空格、成对 - 常见报错
RMAN-01009: syntax error: found "identifier",八成是因为RUN后少了{或换行/缩进错了
ALLOCATE CHANNEL 怎么写才不踩坑
通道名要唯一、路径要隔离、连接要显式,否则轻则慢,重则备份片写乱或恢复找不到文件。
- 每个
ALLOCATE CHANNEL必须带独立名字:c1、c2,不能重复用c1两次,否则报RMAN-06017 - 多个通道别往同一目录写:
FORMAT '/backup/%U'会被所有通道争抢,应分流为FORMAT '/backup/ch1/%U'、FORMAT '/backup/ch2/%U' - RAC 环境下必须加
CONNECT 'sys/pass@racdb1',不能只写DEVICE TYPE DISK;tnsnames.ora 里没配racdb1这种单实例别名,直接报ORA-12154 - 备份完立刻
RELEASE CHANNEL c1,避免通道残留占用 PGA 和归档读取资源
SECTION SIZE + 并行通道怎么配合才有效
大文件(比如 >50GB 的 SYSTEM 表空间)不分段,再多通道也白搭——只有一个通道在干活,其余干等。
- 用
SECTION SIZE=200M把数据文件切成块,每块可被独立调度到空闲通道 - 假设切出 12 个 section,
PARALLELISM至少设为 4,否则最多同时跑 4 个 section,剩下排队 - 命令要写全:
BACKUP DATAFILE 1 SECTION SIZE=200M;,不能漏掉SECTION SIZE参数,否则 RMAN 当普通备份处理 - 注意:
SECTION SIZE对临时表空间、undo 表空间无效,只对DATAFILE生效
压缩算法和并行度要不要一起开
要,但得看许可和 CPU 资源。开错反而拖慢,不是“开了就快”。
-
CONFIGURE COMPRESSION ALGORITHM 'BASIC'是默认值,压缩率低(~20%),CPU 开销小 -
CONFIGURE COMPRESSION ALGORITHM 'ADVANCED'需 Oracle Advanced Compression 许可,压缩率可达 50%+,但 CPU 消耗翻倍;没许可会静默回退,不报错也不提示 - 如果服务器有 16 核,开 4 个通道 +
ADVANCED压缩通常稳;若只有 4 核,建议关压缩,用BASIC或干脆NOCOMPRESS,把资源让给 I/O - 压缩发生在 RMAN 进程内,不影响生产库 PGA/CPU,但会吃 RMAN 自身所在节点的 CPU
最易被忽略的一点:备份路径是否真的能被所有通道访问。比如 RAC 下把备份写到某节点本地盘,恢复时却从另一节点发起,ORA-19566 很可能不是坏块,而是根本读不到文件。验证前先 LIST BACKUP 看 HANDLE 路径,再登录对应节点手动 ls 确认存在。











