昨天晚上在自己笔记本上关库之后不小心把控制文件全部删除了,但是控制文件有rman的备份。没有数据库全备。丢失控制文件,如果有控制文件和数据库全备,是没什么问题的,restore controlfile from autobackup。再restore database,recover database。最后以resetlogs方式open数据库即可。alter database open resetlogs。可以完全恢复数据库。
但是目前是没有全备。只能恢复控制文件。首先用rman恢复回来控制文件,恢复回之前在rman命令下必须要执行
set dbid {dbid} ,这个dbid必须记住了,不然控制文件也无法恢复,就只能重建控制文件了。回复完控制文件后我restore database;报错没有可以恢复的备份。看来此路是无法通了。但是控制文件恢复回来之后,我可以将数据库启动到mount状态下,alter database mount。我尝试alter database open;报错,alter database open resetlogs报错
ora-01110,这个错误的意思是
控制文件在resetlogs后备份的,而数据文件为resetlogs前备份集中恢复的.跨越了resetlogs,导致system scn超前,而redo log或arch 归档丢失.数据无法恢复到当前控制文件的scn状态。所有此路不通。
数据库open的过程中会进行一致性检查,一致性检查部通过是不能open数据库的。但是如果我不让他进行数据库一致性检查会如何呢,我现在的目的是先尽快让数据库跑起来。通过设置一个数据库隐含参数可以避开一致性检查 ,alter system set "_allow_resetlogs_corruption"=true scope=spfile;
shutdown immediate数据库,再次动到mount状态下。alter database open resetlogs;报错
ora-01139,这个错误的意思是没有进行不完全恢复,不需要重置日志文件。所以直接 alter database open。打开数据库。
接下来全备数据库。修改隐含参数到默认值。完成。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22418990/viewspace-712447/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/22418990/viewspace-712447/