ALLOCATE CHANNEL DUMMY 不能测存储连通性,因它仅解析语法、模拟通道对象,不触发I/O、不验证路径可写、不加载设备库;真测应使用 BACKUP VALIDATE ARCHIVELOG ALL。
为什么 ALLOCATE CHANNEL DUMMY 不能用来测存储连通性
它根本不会碰磁盘、不发 i/o、不验证路径可写——只是让 rman 解析语法并模拟分配一个通道对象,底层完全跳过设备交互。你看到 allocated channel: c1,不代表备份路径能写,也不代表磁带库或 nfs 挂载点在线。
常见错误现象:RMAN-03022 或 RMAN-06004 没出现,就以为“通道通了”,结果真正 BACKUP DATABASE 时直接卡在 waiting for channel 或报 ORA-19504: failed to create file。
- 使用场景:仅用于快速验证 RMAN 脚本语法、通道名是否冲突、
CONFIGURE设置是否生效 - 参数差异:
DUMMY通道忽略所有DEVICE TYPE、FORMAT、CONNECT配置,连SBT_LIBRARY都不加载 - 性能影响:零开销,但毫无诊断价值
真要测存储连通性,该用 BACKUP VALIDATE + ARCHIVELOG ALL
BACKUP VALIDATE 是 Oracle 官方推荐的无实际写入的连通性检查方式,它会走完整备份路径:解析归档日志位置、尝试打开目标设备、校验控制文件和数据文件头(不读块内容),遇到权限/挂载/NFS timeout 问题会立刻报错。
实操建议:
- 先确保
CONFIGURE DEVICE TYPE DISK PARALLELISM 1,避免并发掩盖单通道失败 - 运行
BACKUP VALIDATE ARCHIVELOG ALL DELETE INPUT;—— 这条命令强制访问所有归档路径(包括LOG_ARCHIVE_DEST_1和LOG_ARCHIVE_DEST_2),且会尝试删除输入归档(只校验,不真删) - 若用 SBT,必须提前加载对应库:
CONFIGURE CHANNEL DEVICE TYPE 'SBT_TAPE' PARMS 'SBT_LIBRARY=/path/to/libobk.so';,否则VALIDATE会跳过 tape 路径 - 注意兼容性:Oracle 11gR2+ 支持
VALIDATE ARCHIVELOG;10g 只能VALIDATE DATABASE,但不覆盖归档路径
手动验证比 RMAN 更快的三个关键点
RMAN 冗余层太多,出错时定位慢。绕过它直查底层,5 分钟内确认问题根因。
- 检查归档目标路径可写:
ls -ld /u01/fast_recovery_area+touch /u01/fast_recovery_area/test.$$ && rm /u01/fast_recovery_area/test.$$ - 验证 ASM 磁盘组状态:
asmcmd lsdg看state是否为MOUNTED,free_mb是否非负 - 对 NFS 存储,别只 ping IP:
showmount -e nfs-server看导出列表,再mount | grep nfs-server确认挂载选项含hard,intr,rsize=32768,wsize=32768
RMAN-06059 和 ORA-19504 出现时,别急着调通道
这两个错误 90% 和通道分配无关,而是归档日志缺失或目标路径不可达。比如 RMAN-06059: expected archived log not found 表示控制文件里记录的归档日志物理文件已丢失;ORA-19504: failed to create file "/xxx/xxx.dbf" 是 OS 层拒绝创建文件,和 DUMMY 通道毫无关系。
- 先查
V$ARCHIVED_LOG中DELETED = 'NO'且STATUS = 'A'的日志是否真实存在 - 用
strace -e trace=open,write,connect rman target /抓系统调用,看 RMAN 实际尝试 open 哪个路径 - 如果用了 FRA,确认
DB_RECOVERY_FILE_DEST_SIZE没被占满:SELECT * FROM V$RECOVERY_FILE_DEST;
通道配置再完美,底层存储没响应,RMAN 就是空转。真正卡住的地方,永远在 open() 系统调用那一行。










