rman备份慢需先查v$backup_async_io中effective_bytes_per_second是否达设备标称值30%以上,低于则说明i/o调度不足;再分type='input'(读取瓶颈)和type='output'(写入瓶颈)定位具体环节。

直接看 EFFECTIVE_BYTES_PER_SECOND 是否跑满设备标称值
备份慢不慢,第一眼就盯日志末尾或 V$BACKUP_ASYNC_IO 里那行 EFFECTIVE_BYTES_PER_SECOND。它反映 RMAN 实际读写速率,比 iostat 或 top 更干净——只统计 RMAN 自己发的异步 I/O,不掺归档、LGWR、DBWR 的噪音。
实操建议:
- 若该值持续低于磁盘标称吞吐的 30%,比如标称 200 MB/s,但日志里反复出现
15 MB/s,说明 I/O 调度没跑满,不是存储慢,是 RMAN 没用够硬件 - 查
V$BACKUP_ASYNC_IO时注意TYPE = 'INPUT'和TYPE = 'OUTPUT'分开看:前者低 → 数据文件读取卡在 ASM/diskgroup/文件系统;后者低 → 备份目标写入慢(NFS 权限、noac缺失、磁盘已满) - 别信
SHOW ALL里的配置,运行中实际生效的并行度得查V$RMAN_CONFIGURATION和ALLOCATE CHANNEL语句是否冲突
BACKUP VALIDATE 不能定位真实瓶颈,换用 RESTORE VALIDATE + PREVIEW
BACKUP VALIDATE DATABASE 只做内存校验、跳过压缩、加密、写入、通道调度,连 FORMAT 路径都不解析。它秒完成,不代表真备份快;它报错退出,也看不出是归档满还是控制文件争用。
实操建议:
- 先跑
RESTORE DATABASE PREVIEW,看 RMAN 计划调用多少个归档日志片——如果列几百个,说明归档管理失控,这才是备份卡住的根因 - 再执行
RESTORE DATABASE VALIDATE,观察各通道等待事件:control file sequential read高 → 控制文件争用;direct path read耗时长 → 真实磁盘 I/O 瓶颈 - 加
CHECK LOGICAL会显著拉长耗时,但能暴露逻辑坏块导致的反复重试,这正是恢复时“卡住”的真实表现
查 v$session_wait 和 v$session_longops 确认卡在哪一层
RMAN 备份慢,不是靠猜,是靠查当前或历史会话的等待事件。重点不是“有没有等待”,而是“等什么、等多久”。
实操建议:
- 对正在运行的备份,执行:
SELECT sid, event, p1text, p1, p2text, p2, seconds_in_wait FROM v$session_wait WHERE event LIKE 'db file%' OR event LIKE 'direct path%';。单次db file scattered read平均 > 20ms,基本可断定存储响应慢 - 查历史备份:用
LIST BACKUP SUMMARY拿到 backupset key,关联v$rman_backup_job_details看input_bytes_per_sec和output_bytes_per_sec,明显低于设备能力就是信号 - 同时盯
v$session_longops中OPNAME = 'RMAN backup & recovery'的time_remaining波动——如果忽高忽低,大概率是虚拟机 CPU ready time 高或存储队列抖动
虚拟环境里 RMAN 慢,先绕开 hypervisor 缓存和 vCPU 虚假并发
虚拟机里 RMAN 慢,八成不是数据库问题,而是三层延迟叠加:Guest OS → Hypervisor I/O stack → 存储控制器。其中最隐蔽的是缓存策略错配和 vCPU 调度失真。
实操建议:
- ESXi 下确认 VM 的
.vmx文件含scsi0:0.writeThrough = "TRUE";KVM/QEMU 下磁盘设备必须用cache=none或cache=directsync,禁用writeback -
configure device type disk parallelism别设超过可用 vCPU × 1.2,例如 4 vCPU 就设 4,而不是照搬物理机设成 8——宿主机 CPU ready time > 5% 时,多开 channel 反而抬高 latch 争用 - 压缩算法选
MEDIUM而非HIGH,backup optimization在虚拟环境建议禁用,避免因块变更跟踪(BCT)路径争用导致伪全量扫描
V$BACKUP_ASYNC_IO 的 WAIT_TIME 细节里,而不是日志开头那行 “starting backup”。同一行 TYPE = 'INPUT' 后跟的 WAIT_TIME 值,比平均 I/O 延迟更能暴露 RAID 控制器队列满或 ASM rebalance 中的瞬时拥塞。











