SECTION SIZE仅对大文件(>50GB或11g起几百MB)生效,因RMAN 11g前限制一个通道只能处理一个完整数据文件,未分段时多通道无法并行读同一文件;它对TEMPFILE、UNDO、控制文件、归档日志无效,且必须配合RUN块中显式ALLOCATE CHANNEL才触发分段并行。
SECTION SIZE 为什么对大文件才起作用
rman 的 section size 不是通用加速开关,它只在单个数据文件大于 50gb(11g 起实际生效阈值约几百 mb)时才有意义。小于这个尺寸的文件,rman 本就允许多通道并行处理,加不加 section size 行为一致。
根本原因在于 RMAN 11g 之前的架构限制:一个通道一次只能处理一个完整数据文件。哪怕你 ALLOCATE CHANNEL c1 和 c2,备份一个 120GB 的 SYSTEM 文件时,c2 会一直空等,直到 c1 把整个文件读完——因为没分段,无法拆任务。
- 查大文件:
SELECT file#, bytes/1024/1024/1024 GB FROM v$datafile ORDER BY 2 DESC,重点关注 >50GB 的file# -
SECTION SIZE对TEMPFILE、UNDO、控制文件、归档日志完全无效,别往这些对象上试 - 设了但没生效?先确认是不是目标文件够大——否则参数直接被忽略
SECTION SIZE 必须和 ALLOCATE CHANNEL 配对写在 RUN 块里
CONFIGURE DEVICE TYPE DISK PARALLELISM 4 只是声明“最多允许 4 个通道”,它不会自动分配任何通道,也不会触发分段。真正让 SECTION SIZE 生效的,是显式写在 RUN { } 块里的 ALLOCATE CHANNEL。
常见错误包括:
- 只配
CONFIGURE就直接跑BACKUP DATABASE→ 退化为单通道,报RMAN-01009或静默降级 -
RUN块里写了ALLOCATE CHANNEL c1和c2,但漏掉SECTION SIZE参数 → RMAN 当普通备份处理,仍串行读大文件 - 重复声明同名通道,比如两次
ALLOCATE CHANNEL c1→ 直接报RMAN-06017,整个RUN块失败 - 通道没绑定路径:
ALLOCATE CHANNEL c1 DEVICE TYPE DISK FORMAT '/bak/c1/%U'比裸写ALLOCATE CHANNEL c1更稳,避免写冲突或 NFS lease timeout
SECTION SIZE 值怎么设才不踩坑
不是越小越好,也不是越大越好。核心目标是让总段数接近但不超过 256,同时每段大小匹配存储吞吐能力(如机械盘建议 ≥200M,SSD 可下探到 50M)。
典型计算逻辑:
- 文件 8GB,想用 4 个通道 → 8192MB ÷ 4 = 2048MB → 设
SECTION SIZE=2G - 文件 50GB → 50 × 1024 = 51200MB,目标段数 256 → 51200 ÷ 256 ≈ 200MB → 推荐
SECTION SIZE=200M - 设
SECTION SIZE=10M?RMAN 会强制拉高到能凑出 256 段的大小,失去控制权,且调度开销剧增 - 设
SECTION SIZE=100G备份一个 80GB 文件?因大于文件本身,SECTION SIZE直接失效,回归单通道
如何验证 SECTION SIZE 真正起效了
不能只看命令有没有报错,得看运行时行为是否改变。最直接的方式是监控 v$session_longops 和磁盘 I/O 分布。
关键检查点:
- 备份时执行:
SELECT opname, sofar, totalwork, elapsed_seconds FROM v$session_longops WHERE opname LIKE '%backup%'—— 正常应看到多个full datafile backupset并行出现,而不是只有一个长期挂起 - 用
sar -d 1观察多块物理盘的rd_sec/s是否同步达到峰值;如果只有 1 块盘在跑,其余空闲,说明没分段 - 查
v$rman_status(备份完成后):SELECT operation, object_type, section_size FROM v$rman_status WHERE status = 'COMPLETED' AND object_type = 'DATAFILE',确认section_size列非空 - CPU 高但磁盘读速卡在 20MB/s?大概率是大文件没分段,所有通道争抢同一文件锁,不是 CPU 瓶颈而是 I/O 序列化
SECTION SIZE 只解决“大文件无法并行读”这一个卡点。它不压缩数据、不减少归档扫描量、也不影响备份集结构。如果慢来自压缩算法或归档日志密集读取,得调 COMPRESSION ALGORITHM 或关 RATE 限速,而不是继续调 SECTION SIZE。


















