今天在做RMAN异机恢复的时候遇到了如题所示的问题。

具体问题发生在RMAN做【restore database】的时候,报错:

上面的日志信息不是真实的,因为后来重新生成了一个全备后,用新的备份恢复出控制文件后,该问题就没有出现了。
所以,本文的错误描述为【回溯】。
但关于该问题的解决,遵照我实际的错误解决过程而罗列。

————————
在我的环境中:
1. 备份集:AVAILABLE
2. 还原的目标路径:
—> 存在
—> oracle用户对其可读可写,权限正常,没有问题。

——————

关于该问题,MOS官方文档做出了说明:
RMAN restore fails with ORA-01180: can not create datafile 1 (文档 ID 1265151.1)

造成上面问题的原因:
1. 没有可用的备份:There ar no backups available for use
2. 当前的化身不是正确的:The current incarnation is not set correctly

查看信息,确认问题:

【Rman中执行:】
查看化身信息:
list incarnation of database;

查看数据文件#1相关的备份信息:
list backup of datafile 1;

list copy of datafile 1;

查看备份信息:
list backup summary;

————————
查看【list backup of datafile 1】的时候:
—> 主要查看备份的【Status】是否【Available】

如果【STATUS】的状态是【EXPIRED】,那么,运行【crosscheck】来看看对应的文件是否还存在:
这里,需要引用backup set 的 key,【BS Key】

假如【BS Key】为:3

如果文件存在,也就是找到了,那么【STATUS】会更新为【AVAILABLE】
如果运行完了【crosscheck】,【STATUS】还是【EXPIRED】,那说明,你其实也不需要了。

————————————
关于【Current Incarnation】
如果,备份集【AVAILABLE】,但是恢复的时候,还是出现文首的问题。

那么,你需要检查化身【incarnation】是否设置正确。

在【list backup of datafile 1】中查看【BACKUP SET】的【ckp time】。

假如你要恢复的备份集的时间是:13 FEB 2015 14:09:34

那么在查看【list incarnation of database】。

假如:
在时间【13 FEB 2015 14:09:34】附近的化身为:

那么,你应该设置【INCARNATION】为要恢复的备份集时间往前(过去)最近的一个。

在上面的列表中,该INCARNATION为:

最后,设置化身为11即可:
【RMAN】操作:
reset database to incarnation 11;

————————————
除了上面的方法可以解决该问题外,在我的环境里,重新生成了一个RMAN的全备,然后用新的控制文件备份还原控制文件后,【restore database】也没有出现过文首的问题。

对备份集做过如下操作:
1. crosscheck backup;
2. delete expired backup;
3. catalog backuppiece ‘xxxxx.bk’; – 重新注册RMAN备份

————————————
Done。

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

隐藏
变装