最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
在Oracle 19c中如何解决RMAN恢复时的目录结构不一致
时间:2026-07-14 09:45:52 编辑:袖梨 来源:一聚教程网
SET NEWNAME必须在RESTORE DATABASE前显式指定,RMAN不会自动适配目标机路径;漏设会导致ORA-01157或RMAN-06023错误,且必须与RESTORE、SWITCH、RECOVER同处一个RUN块,并配合SWITCH DATAFILE ALL更新控制文件路径。
SET NEWNAME 必须在 RESTORE DATABASE 前显式指定
rman 不会自动适配目标机路径,restore database 默认照搬备份时记录的绝对路径(比如 +data/orcl/datafile/system.256.987654321),而目标机很可能没挂载 asm 磁盘组,或目录根本不存在。漏掉 set newname 就会卡在 ora-01157 或 rman-06023。
实操要点:
- 先在源库查真实路径:
SELECT FILE#, NAME FROM V$DATAFILE; - 在目标机提前建好统一根目录,例如
/u01/oradata/NEWDB/ - RMAN 中用
RUN块逐个设置,不能只写一条:SET NEWNAME FOR DATAFILE 1 TO '/u01/oradata/NEWDB/system01.dbf';SET NEWNAME FOR DATAFILE 2 TO '/u01/oradata/NEWDB/sysaux01.dbf'; - 必须跟
SWITCH DATAFILE ALL;——这步才真正把控制文件里记录的路径更新为新路径 - 数据文件太多?用查询生成脚本:
SELECT 'SET NEWNAME FOR DATAFILE ' || FILE# || ' TO ''' || '/u01/oradata/NEWDB/' || SUBSTR(NAME, INSTR(NAME, '/', -1) + 1) || ''';' FROM V$DATAFILE;
归档日志路径不匹配会导致 RECOVER 失败
RECOVER DATABASE 不会读你改过的 LOG_ARCHIVE_DEST_1 参数,它默认去找备份时归档日志存放的原始路径(比如 /u01/app/oracle/archivelog)。目标机上该路径若不存在或为空,就会报 ORA-00308 找不到归档。
实操要点:
-
RMAN里没有SET ARCHIVELOG DEST命令——执行直接报错RMAN-00571 - 改参数必须进 SQL:数据库
MOUNT状态下运行ALTER SYSTEM SET log_archive_dest_1='LOCATION=/u01/app/oracle/archivelog' SCOPE=SPFILE; - 更稳妥的做法是:目标机提前按源库归档路径建目录,哪怕只是软链接:
mkdir -p /u01/app/oracle/archivelog - 已存在的旧归档不会自动迁移,得手动复制过去;否则
RECOVER阶段会因缺日志中断
控制文件重建或恢复后必须重扫描备份集
如果用了 RESTORE CONTROLFILE 或 CREATE CONTROLFILE,新控制文件里没有源库后续的备份记录,LIST BACKUP 会返回空,RESTORE DATABASE 找不到备份片,报 RMAN-06023。
实操要点:
- 确认
DBID正确:SELECT DBID FROM V$DATABASE;,和你在 RMAN 中SET DBID的值必须一致 - 强制让 RMAN 重新加载磁盘上的备份信息:
CATALOG START WITH '/u01/backup/';(注意末尾斜杠) - 如果备份片放在 ASM,目标机没挂载对应磁盘组,
CATALOG也会失败——得先挂载或改用文件系统路径存放备份 -
CONFIGURE CONTROLFILE AUTOBACKUP ON默认开启,但自动备份可能落在$ORACLE_BASE/fast_recovery_area,升级后该目录常为空或权限不足,需查V$RECOVERY_FILE_DEST确认
OMF 启用时路径映射容易被忽略
源库启用了 db_create_file_dest='+RECO',目标库却配成 /u01/app/oracle/oradata/PROD,RMAN 还原时仍会尝试写入 ASM 伪路径,报 ORA-19573 或 ORA-19870。
实操要点:
- 优先停用 OMF:
ALTER SYSTEM RESET db_create_file_dest SCOPE=SPFILE;,再重启 - 或者显式用
db_file_name_convert映射路径:db_file_name_convert='/u01/old/db/','/u01/new/db/' - 注意优先级:
db_create_file_dest>db_file_name_convert,两者都设时前者生效 - 如果 redo 日志路径也不同,还得配
log_file_name_convert,否则ALTER DATABASE OPEN RESETLOGS可能失败
路径映射不是一次性配置,而是贯穿 restore、recover、open 全流程的连环动作。最容易被跳过的是归档路径准备和 CATALOG START WITH,这两处一漏,整个恢复就卡在“找不到东西”上,错误提示却不直接说清原因。
相关文章
- 以下哪种职业的执业人员具有审计签字权 蚂蚁新村今日答案2026.1.14 07-14
- 蚂蚁新村今日答案1.14 07-14
- 蚂蚁新村2026年1月14日答案最新 07-14
- 蚂蚁庄园小鸡答题今日答案2026年1月15日 07-14
- 蚂蚁庄园今日最新答案1.15 07-14
- 蚂蚁庄园今日答案最新2026.1.15 07-14