RMAN备份无法写入ASM磁盘组,主因是CONFIGURE CHANNEL FORMAT未使用完整ASM别名路径(如'+RECO/ORCL/BACKUPSET/%d_BACKUP_%U'),且CONTROLFILE AUTOBACKUP需单独配置为'+RECO/%F',同时确保连接数据库实例、路径大小写精确、磁盘组真实存在且有足够USABLE_FILE_MB空间。
rman备份写不进asm磁盘组?八成是路径配置错了,不是权限或空间问题。
CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT 必须带完整ASM别名路径
直接写 CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '+RECO'; 会报 ORA-19570: file number 1 is not valid for this operation 或静默失败——RMAN 不认光秃秃的磁盘组名,它只接受已存在的、带目录结构的 ASM 别名路径。
- 先用
ASMCMD确认目标路径存在且可写:asmcmd ls +RECO/ORCL/BACKUPSET/;不存在就手动建:asmcmd mkdir +RECO/ORCL/BACKUPSET - 格式字符串里必须含占位符,比如
'+RECO/%d_BACKUP_%U',其中%d是数据库名,%U生成唯一文件名;%U不是可选,缺了会导致 RMAN 无法生成合法 AU 地址 - 磁盘组名大小写敏感,
+reco和+RECO在多数环境不互通;用SELECT NAME FROM V$ASM_DISKGROUP;确认实际名称 - 路径中不能含通配符(如
*)、相对符号(如../)或未定义变量;+RECO/backup/%T合法,+RECO/*/full非法
CONTROLFILE AUTOBACKUP 默认不走ASM,必须显式重设
即使主备份路径设对了,控制文件自动备份仍默认落在 $ORACLE_HOME/dbs 下,恢复时找不到最新控制文件是常见故障点。
- 检查当前设置:
SHOW CONTROLFILE AUTOBACKUP FORMAT;,若返回类似/u01/app/oracle/product/19c/dbhome_1/dbs/c-1234567890-20240612-00,说明没生效 - 必须执行:
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '+RECO/%F';,%F是 Oracle 官方推荐格式,生成形如c-1234567890-20240612-00的文件名 - 该命令只影响后续备份;已有 auto backup 文件需手动
COPY进 ASM,并用CATALOG START WITH '+RECO/';注册进 RMAN repository
RMAN target 连接必须是 SYSDBA + 数据库实例(非 ASM 实例)
连错实例类型会导致 LIST BACKUP 为空,或报 ORA-15000: command disallowed by current instance type。
- 确认连接的是数据库实例,不是 ASM 实例:
echo $ORACLE_SID应为数据库 SID(如orcl),不是+ASM1 - 验证能否访问 ASM 元数据:
sqlplus / as sysdba后执行SELECT NAME FROM V$ASM_DISKGROUP;;若报错,先查 ASM 实例是否运行、权限是否正确 - RMAN target 必须在数据库处于
MOUNT或OPEN状态下执行 backupset 类操作;NOMOUNT下仅支持控制文件快照等极少数命令
备份前务必确认磁盘组可用空间和归档模式
看似基础,但 ASM 空间不足常表现为备份中途卡住或报 ORA-17502: ksfdcre:4 Failed to create file,而非明确提示“空间不够”。
- 查可用空间:
asmcmd lsdg关注USABLE_FILE_MB列,不是FREE_MB;后者含冗余预留,不可直接用于备份 - 归档模式是热备前提:
ARCHIVE LOG LIST必须显示Database log mode: Archive Mode;否则PLUS ARCHIVELOG会失败 - 若用 FRA(Flash Recovery Area),确保
DB_RECOVERY_FILE_DEST指向 ASM 路径(如+RECO),且DB_RECOVERY_FILE_DEST_SIZE足够大
最易被忽略的是:ASM 路径必须真实存在、大小写精确、且控制文件自动备份路径独立配置;三者缺一,备份就可能“看起来成功”,实则关键文件没落盘。


















