必须显式指定 section size 才能启用 rman 多段备份机制,否则即使文件超 32gb 或配置多通道,仍串行处理;section size 是独立参数,最小 1mb,上限受 256 个 section 限制,且需匹配 channel 数与磁盘空间。
直接用 backup section size 指定分段大小,rman 就会自动把大文件按块切开、并行备份。不手动分段,就起不到加速效果,也浪费通道资源。
为什么必须显式指定 section size?
RMAN 不会默认启用多段备份 —— 即使文件超过 32GB,它仍会当作单个备份片处理,除非你明确告诉它“按多少 MB 切”。默认行为取决于 backup piece 大小配置(如 MAXPIECESIZE),但这个值不等价于 section 切分逻辑。
-
section size是独立参数,只在命令中出现时才触发 multisection 机制 - 没写它,哪怕开了多个 channel,RMAN 也只会串行处理一个大文件
- Oracle 11g 要求 section 大小至少为 1MB,上限受数据文件总块数限制(最多 256 个 sections)
backup tablespace ... section size 的实操要点
命令格式简单,但几个关键点容易出错:
- 必须在
run块里分配好 channel,且 channel 数 ≥ 预期并发 section 数(比如section size 300m对应一个 5GB 文件,约产生 17 个 section,但实际并发由 channel 数决定,不是越多越好) - 路径和权限:每个 channel 的
format路径要可写,且磁盘空间足够容纳所有 section 片(每个 section 生成一个独立的.bkp文件) - 不要混用
format和section size在同一命令里省略通道分配 —— RMAN 会报RMAN-03009: failure of backup command on ORA_DISK_x channel - 示例正确写法:
run { allocate channel c1 device type disk format '/bak/ts1_%U'; allocate channel c2 device type disk format '/bak/ts1_%U'; backup section size 500m tablespace yb2; }
大文件中断后如何续备?
RMAN 支持断点续传,但前提是:备份 job 必须是同一个 backup 命令发起的,且控制文件未被覆盖或重建。
- 失败后重启 RMAN,执行相同命令(含相同
section size和表空间名),RMAN 自动跳过已成功备份的 sections - 验证哪些 section 已完成:查视图
v$backup_datafile,过滤file#和completion_time,或用list backup of tablespace yb2看每个 piece 的piece#和块范围 - 注意:如果中间执行过
crosscheck backup或delete expired backup,可能误删未完成的 section 元数据,导致重复备份
真正影响速度的不是文件大小本身,而是 section 切分粒度与通道数的匹配程度 —— 过细(如 10MB)会导致调度开销上升,过粗(如 2GB)又无法充分利用多通道。建议从 200–500MB 开始试,再根据 I/O 吞吐和 wait event 调整。











