非归档模式下执行BACKUP DATABASE必须先SHUTDOWN IMMEDIATE再STARTUP MOUNT,因RMAN需读取控制文件中的数据文件信息,NOMOUNT状态不加载控制文件而报ORA-01507,MOUNT状态满足冷备一致性要求。
BACKUP DATABASE 在非归档模式下直接执行一定会失败,因为 RMAN 拒绝备份活动数据文件 —— 这不是配置问题,而是 Oracle 的一致性保护机制。
为什么 SHUTDOWN IMMEDIATE 后必须用 STARTUP MOUNT,不能 STARTUP NOMOUNT
RMAN BACKUP DATABASE 需要读取控制文件中的数据文件列表和状态信息。在 NOMOUNT 状态下,控制文件未加载,RMAN 会报错 ORA-01507: database not mounted;而 MOUNT 状态下控制文件已读入内存、数据文件头未校验、实例未开放写入,满足冷备前提。
-
STARTUP MOUNT后检查v$instance.status应为MOUNTED,不是OPEN或NOMOUNT - 若误用
STARTUP OPEN再连 RMAN,哪怕只读打开,RMAN 仍判定为 active file,报ORA-19602 -
ALTER DATABASE OPEN READ ONLY不等于冷备就绪,RMAN 不认这个“只读”语义
非归档模式下哪些 RMAN 命令能绕过限制?
只有不涉及数据文件一致性的命令可直接运行,其余全被拦截:
- ✅
BACKUP CURRENT CONTROLFILE和BACKUP SPFILE允许在 OPEN 状态下执行(它们不依赖数据文件活性) - ✅
BACKUP ARCHIVELOG ALL在非归档模式下无意义,且会报ORA-19606: cannot copy or restore to snapshot control file类错误(因无归档日志) - ❌
BACKUP DATABASE PLUS ARCHIVELOG直接报错:ORA-19602: cannot backup or copy active file in noarchivelog mode - ❌
BACKUP AS COPY DATABASE同样被拒,本质与BACKUP DATABASE一致
冷备脚本里 channel 分配和 format 路径要注意什么?
非归档模式冷备不依赖归档路径,但磁盘空间、权限、路径有效性仍是硬门槛:
- 确保
FORMAT指定的目录存在、Oracle 用户有写权限,否则报ORA-19502: write error on file - 若使用 SBT(如 NBU),必须提前设置
NB_ORA_CLIENT和NB_ORA_SERV环境变量,否则ALLOCATE CHANNEL ... TYPE 'SBT_TAPE'失败 - 不建议省略
FILESPERSET:默认值可能让单个 backupset 过大,写入失败时整个备份需重来;设为4或8更稳妥 -
RELEASE CHANNEL必须显式调用,否则后续BACKUP CURRENT CONTROLFILE可能复用旧 channel 导致参数冲突
备份完成后,控制文件 auto backup 为什么可能静默失败?
11g 默认开启 CONFIGURE CONTROLFILE AUTOBACKUP ON,但 auto backup 路径若未显式指定,会 fallback 到闪回区($ORACLE_BASE/fast_recovery_area)。升级或新实例常出现该目录不存在、满或权限不对,导致控制文件没备份成功却无报错。
- 执行前先查:
SELECT NAME, SPACE_LIMIT, SPACE_USED FROM V$RECOVERY_FILE_DEST;,若NAME为空,说明未启用闪回区 - 更可靠的做法是强制指定路径:
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/backup/cf_%F.ctl'; -
%F是安全占位符(含 DBID+时间戳),比%U更利于后期识别和恢复
BACKUP DATABASE 看似成功,恢复时才发现缺关键文件。











