是,恢复速度受网络限制仅限远程备份源;本地磁盘或ASM恢复不经过网络。优化需分层控制通道、压缩、协议与存储吞吐,避免盲目增大PARALLELISM。
恢复速度是否受网络限制?
是,但仅限于使用 restore 从远程位置(如 nfs、nfs over wan、云对象存储网关、或通过 sbt_tape 插件走网络传输的备份)拉取备份片时。本地磁盘或本地 asm 中的备份恢复完全不经过网络栈,rman 直接读取文件系统/asm diskgroup,网络带宽毫无影响。
常见误判场景:DBA 看到恢复慢,第一反应“是不是网卡只有 1G?”——结果发现备份集就在本机 +FRA 里,根本没走网卡。
- 确认路径来源:
LIST BACKUP OF DATABASE查看PIECE_NAME,含192.168.x.x、/mnt/nfs/、s3://等即为网络路径 - 用
strace -p <rman_pid> -e trace=open,read</rman_pid>可观察实际打开的是本地设备还是 socket 连接 - Oracle 19c+ 的
RESTORE ... FROM SERVICE显式依赖网络,此时带宽是硬瓶颈
如何优化备份传输带宽?
关键不是“调大某个参数”,而是分层控制:通道粒度、压缩策略、网络协议栈、存储侧吞吐四者协同。盲目增大 PARALLELISM 可能反而因 I/O 争抢拖慢整体。
-
ALLOCATE CHANNEL时显式指定MAXOPENFILES和READRATE(单位 MB/s),例如:ALLOCATE CHANNEL c1 DEVICE TYPE DISK MAXOPENFILES 4 READRATE 80;,避免单通道吃满网卡却卡住其他通道 - 禁用
BACKUP ... AS COMPRESSED BACKUPSET(除非 CPU 严重富余),压缩在发送端做会抬高 CPU、降低有效吞吐;改用CONFIGURE DEVICE TYPE DISK BACKUP TYPE TO COPY+ 存储层压缩(如 ZFS/LVM-thin 压缩)更稳 - NFS 挂载必须加
hard,nointr,rsize=1048576,wsize=1048576,vers=3,tcp(Oracle 官方认证组合),vers=4在高延迟链路上易出重传抖动 - 若用云对象存储,优先选支持
multipart upload/download的 SBT 插件(如 Oracle Cloud Infrastructure 的libopc.so),并设SBT_PARALLELISM≥ 4
为什么设置了 PARALLELISM=8 却没提速?
因为 CONFIGURE DEVICE TYPE DISK PARALLELISM 只控制通道数,不保证并发 IO 能力。真正卡住的往往是底层:ASM AU 大小不匹配、存储 LUN 队列深度不足、NFS server 的 nfsd 线程数过低、甚至交换区被意外启用(swapon -s 检查)。
- 检查 ASM 磁盘组
ALLOCATION_UNIT_SIZE:若为 1MB,而备份片是 512KB 小块,会产生大量非对齐 IO,吞吐腰斩 - 运行
iostat -x 1观察%util是否持续 >90%,await是否 >20ms——说明存储已饱和,加通道无意义 - Linux 下 NFS server 必须调大:
echo 64 > /proc/sys/net/sunrpc/nfsd_threads,默认 8 线程扛不住多路 RMAN 流 - Oracle 12.2+ 可启用
CONFIGURE BACKUP OPTIMIZATION ON,跳过已存在于目标位置的归档日志,减少无效网络传输
容易被忽略的带宽杀手:归档日志传输
很多人只盯备份集,却忘了 RESTORE DATABASE 后必走的 RECOVER DATABASE——它默认从 LOG_ARCHIVE_DEST_1 拉取归档日志。如果该路径指向远程 NAS 或 Data Guard 主库,每条日志都是一次小包 TCP 传输,延迟放大效应比大文件更致命。
- 恢复前先用
CATALOG START WITH '/path/to/archivelogs';把本地归档日志纳入 RMAN 目录,强制RECOVER从本地读 - 若必须拉远程归档,改用
SET ARCHIVELOG DESTINATION TO 'SERVICE remote_db',利用 Oracle Net 的 SDU 缓冲合并小包 - 禁用
ARCHIVE_LAG_TARGET(尤其在 DG 环境),避免因日志切换频繁导致恢复时堆积大量待传输小日志
真正卡住 RMAN 恢复的,往往不是带宽数字本身,而是网络路径上的任意一个隐性队列:NFS server 的线程池、TCP window scaling 关闭、存储阵列的写缓存策略、甚至防火墙的连接跟踪表溢出。测速要分段做,别只看 iperf3。











