背景:
XX网数据库在阿联重建控制文件的时候出现问题,决定使用rman的备份进行恢复,但是XX网数据库以前由于我们部门员工的误操作产生了一些非正常的数据文件,主要有以下情况:
1. 数据文件被非正常添加,然后被在操作系统内删除
2. 数据文件被非正常添加,然后由于影响双机应用被强制离线
这样在备份的时候会把这些文件跳过,而且rman也明确提示,会影响到他们相关表空间的恢复。
操作办法:
正常的控制文件和redolog还在,所以此时如果正常使用rman的restore database,系统会提示找不到备份的时候跳过的数据文件的备份,因此采用逐个恢复数据文件的方式:
restore datafile XXX;
这样恢复所有的可用数据文件。
然后使用rman进行recover database时,系统会提示需要对跳过的数据文件进行恢复,此时无法恢复,因此使用如下办法解决:
1. 切换到sqlplus,进行recover database
2. 查看提示需要的归档日志文件
3. 使用rman把需要的归档日志恢复出来,由于空间的问题,所以采用每次恢复只恢复出来100个
restore archivelog from sequence 1_xxxxx.dbf to sequence 1_xxxxx.dbf;
4. 然后在sqlplus中recover database,观察到快要需要下一个100个归档日志的时候,再使用rman恢复下100个
5. 一直恢复到最后一个归档日志,recover会退出,但是此时还未恢复完毕,可以查看一下现有的redolog中未归档的组
6. 在sqlplus里使用以下命令,并指定未归档的redolog的文件位置来恢复:
recover database using backup controlfile until cancel
7. 此时恢复完成,可以使用alter database open resetlogs打开数据库。
8. 打开之后需要做的事情包括:1)建立恢复临时表空间的数据文件;2)连接到rman的catalog数据库,并reset database重置当前数据库;