首页 / 数据库 / MySQL / RMAN recover中遇到 RMAN-20505,ORA-0119,ORA-27400
这是一次RAMN恢复的工作,生产端是Oracle 11.2.0.4 RAC,数据文件保存在文件系统上。灾备端是Oracle11.2.0.4单实例+ASM方式保存数据文件。检修计划需要将生产库做一次RMAN全备,然后在灾备端恢复。由于生产端和灾备端的存储方式不一样,文件路径也不一样,所以灾备端RMAN恢复的时候需要采用set newname的方式将文件路径转换一次。执行脚本如下:run{ set newname for datafile 1 to "+DATA"; set newname for datafile 2 to "+DATA"; set newname for datafile 3 to "+DATA’;… 500多个数据文件restore database; switch datafile all; recover database; }在执行到recover database 过程中出现错误,提示第545号数据文件IDX_S007.dbf创建失败。RMAN-20505: create datafile during recovery ORA-0119: error in creating database file "/sgpmdb/oradata/u07/cmsdb/IDX_S007.dbf" ORA-27400: file create error, unable to create file HPUX-ia Error: 2: No such file or directory Additional information: 1 RMAN-11003: failure during parse/execution of SQL statement: alter database recover log file "/orabak/arch/2_147320_666569930.arc" ORA-00283: recovery session canceled due to errors ORA-01244: unnamed datafile(s) added to control file by media recovery ORA-01110: data file 545: "/spgmdb/oradata/u07/cmsdb/IDX_S007.dbf"分析原因如下: 生产库做完全备后又做了一些DDL操作,如添加数据文件等。 这些新的操作记录在全备之后的归档日志中(/orabak/arch/2_147320_666569930.arc )。在重演归档日志中创建数据文件的部分时找不到生产环境的目录,所以报错(HPUX-ia Error: 2: No such file or directory) 该文件被临时记录在了/app/oracle/product/11.2.0/db_1/dbs,但也只是控制文件中的记录,磁盘上时没有该文件。第545号数据文件在控制文件中的记录如下,不是我们预期的+DATA SQL> select name from v$datafile where name like "%545%;NAME —————————————————— /app/oracle/product/11.2.0/db_1/dbs/UNAMED00545解决方案在RMAN下使用set newname命令先数据文件的目录地址改为+DATA/cmsdb/datafile。然后重新restore一次该数据文件,最后switch数据文件。run{ set newname for datafile "/app/oracle/product/11.2.0/db_1/dbs/UNNAMED00545" to "+DATA/cmsdb/datafile/IDX_S007.dbf"; restore datafile "/app/oracle/product/11.2.0/db_1/dbs/UNNAMED00545"; switch datafile "/app/oracle/product/11.2.0/db_1/dbs/UNNAMED00545"; }也可以写成 run{ set newname for datafile 545 to "+DATA"; restore datafile 545; switch datafile 545; }输出如下: executing command: SET NEWNAMEStaring restore at 27-OCT-14 using channel ORA_DISK1creating datafile file number=545 name=+DATA/cmsdb/datafile/IDX_S007.dbf restore not done: all files read only, offline, or already restored Finished restore at 27-OCT-14datafile 545 switched to datafile copy input datafile copy RECID=3615 STAMP=862057086 file name=+DATA/cmsdb/datafile/IDX_S007.dbf本次操作使用的客户端主机安全级别很高,不允许用U盘复制任何文件,包括secureCRT的日志等。所有错误信息和屏幕输出都是我手敲的,如果有错误敬请谅解。--------------------------------------推荐阅读 --------------------------------------RMAN 配置归档日志删除策略 http://www.linuxidc.com/Linux/2013-11/92670.htmOracle基础教程之通过RMAN复制数据库 http://www.linuxidc.com/Linux/2013-07/87072.htmRMAN备份策略制定参考内容 http://www.linuxidc.com/Linux/2013-03/81695.htmRMAN备份学习笔记 http://www.linuxidc.com/Linux/2013-03/81892.htmOracle数据库备份加密 RMAN加密 http://www.linuxidc.com/Linux/2013-03/80729.htm--------------------------------------分割线 --------------------------------------更多Oracle相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12本文永久更新链接地址