由于开发需求要将测试库不完全恢复到某一个时间点,由于恢复时间较长于是脚本中只执行到recover这一步,等第二天上班在执行最后一步alter database open resetlogs。resetlogs成功后立即对数据库做个全备。观察日志发现如下内容:
ORA-19504: failed to create file "/u01/oracle/10.2.0/db_1/dbs/test/level0_TEST_12423_1_47nh4i35.bak"
ORA-27040: file create error, unable to create file
Linux-x86_64 Error: 2: No such file or directory
由于备份是存储在nas设备上,而nas设备映射给rman的目录为/test,从出错信息发现rman无法找到nas的正确存储路径于是将备份存放到ORACLE_HOME/test这个目录了,而这个目录又不存在所以报错。最后发现问题是出在alter database open resetlogs这一步中,由于之前的恢复操作时在rman下进行的,所以相关信息都已同步到本地控制文件和catalog中,而最后一步却是单独在sqlplus里执行的,于是最新的incarnation只被本地库识别,而catalog中存放的还是上一个incarnation,于是导致备份失败。
解决方法如下:(1-3步须同时连接target和catalog)
1.在rman中执行list incarnation;
2.根据上一步显示的reset time找到当前的Inc key
3.执行reset database to incarnation Inc_key
4.进入catalog数据库中执行如下sql确任第3步设置的Inc_key为当前的incarnation
select DBINC_KEY,RESETLOGS_TIME,RESETLOGS_CHANGE#,CURRENT_INCARNATION from rc_database_incarnation where name='TEST';(TESTdb_name)
重新全库备份,问题解决!
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/20801486/viewspace-737208/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/20801486/viewspace-737208/