RMAN BACKUP AS COPY 必须在 MOUNT 或 OPEN 状态下执行,NOMOUNT 状态会报 ORA-01507;非归档模式迁移后须 RESETLOGS 打开且无法回退至迁移前 SCN。
RMAN BACKUP AS COPY 必须在 MOUNT 或 OPEN 状态下执行
数据库处于 nomount 状态时直接运行 backup as copy 会报错:ora-01507: database not mounted。这不是权限或路径问题,而是 rman 根本无法访问数据字典和控制文件中的文件列表。
常见误操作:先 STARTUP NOMOUNT,再进 RMAN 执行 copy —— 必然失败。
- 若业务允许只读窗口,优先用
OPEN状态迁移:RMAN 自动保证一致性,无需手动ALTER DATABASE BEGIN BACKUP - 若必须用
MOUNT,迁移前务必确认所有数据文件状态为ONLINE:SELECT name, status FROM v$datafile;;若有RECOVER或OFFLINE状态,需先修复 - RAC 环境下,只启动一个实例到
MOUNT,其余实例必须关闭;否则 ASM 锁冲突会导致copy中断或静默失败
DB_FILE_NAME_CONVERT 路径映射必须严格成对且末尾带斜杠
DB_FILE_NAME_CONVERT 不是通配符替换,而是源路径前缀 → 目标路径前缀的字符串替换。它只影响未显式指定 FORMAT 的数据文件,且仅对数据文件生效(对控制文件、SPFILE、归档日志无效)。
典型错误:DB_FILE_NAME_CONVERT ('/u01/oradata/ORCL', '+DG_NEW/ORCL') 缺少末尾斜杠,结果生成 +DG_NEW/ORCLsystem01.dbf —— 路径非法,ASM 拒绝创建。
- 正确写法示例:
BACKUP AS COPY DB_FILE_NAME_CONVERT ('/u01/oradata/ORCL/', '+DG_NEW/ORCL/') DATABASE; - 避免跨库污染:不要用宽泛前缀如
('/u01/oradata/', '+DG_NEW/'),否则/u01/oradata/OTHERDB/也会被误换 - 参数必须成对出现,单边值语法直接报错:
RMAN-00571 - 控制文件、SPFILE、归档日志必须单独用
FORMAT指定目标位置,例如:FORMAT '+DG_NEW/ORCL/control01.ctl'
NOARCHIVELOG 模式下迁移后必须 RESETLOGS 且不可回退
非归档模式迁移本身可行,但风险集中在此环节:迁移完成后,数据库无法以 NORESETLOGS 方式打开,ALTER DATABASE OPEN 会失败,必须用 ALTER DATABASE OPEN RESETLOGS。
此时关键限制浮现:RESETLOGS 后,所有迁移前的 SCN 都失效,无法通过备份恢复到迁移前任意时间点 —— 这不是操作疏漏,而是 Oracle 底层机制决定的。
- 错误现象:
RMAN-03002: failure of backup command at ... ORA-19602: cannot backup or copy active file in NOARCHIVELOG mode,说明有活跃的TEMP或UNDO文件正在写入,需确保数据库已静默或切换至只读 - 迁移后若发现部分数据文件未出现在目标路径,大概率是
DB_FILE_NAME_CONVERT未覆盖全部路径,或某些表空间(如加密表空间)被隐式排除 - 执行
SWITCH DATABASE TO COPY后必须立即RECOVER DATABASE,否则控制文件仍指向旧路径,OPEN会报ORA-01157
RAC 环境下必须逐节点处理本地文件
RAC 中若某节点的数据文件仍存于本地磁盘(而非 ASM),另一节点启动时会因找不到该文件而报错,典型提示是 ORA-01157: cannot identify/lock data file。
不能靠全局命令一键迁移;必须登录到持有该文件的节点,单独处理对应 datafile N。
- 步骤顺序不能颠倒:先
COPY datafile N TO '+DG_NAME',再ALTER DATABASE DATAFILE N OFFLINE,再SWITCH DATAFILE N TO COPY,最后RECOVER DATAFILE N和ONLINE - 切忌在多个节点同时运行
COPY命令;RMAN 会尝试锁定 ASM diskgroup,引发争用失败 - 迁移完成后,在另一节点执行
SELECT name FROM v$datafile,确认路径已统一为 ASM 格式(如+DG_NAME/ORCL/DATAFILE/users.256.12345)
最易被忽略的是:DB_FILE_NAME_CONVERT 对控制文件完全无效,哪怕你设了,控制文件仍按 FORMAT 或默认路径落盘;而控制文件路径一旦错,整个库就起不来。











