RAC服务器的ASM实例中的库发生破坏,丢失了一些数据文件,还有控制文件和SPFILE。数据库实例也处于shutdown状态。
1、找到备份片的位置
通过查找,备份片处于
/u01/app/oracle/product/10.2.0/db_1/dbs/01ntr7ob_1_1datafile
/u01/app/oracle/product/10.2.0/db_1/dbs/02ntr7qn_1_1controlfile和spfile
2、在RMAN中先引导DUMMY实例启动
先将init.ora拷贝为initkdata.ora
在rman中
connect target /
startup nomount;
3、从备份片中取出spfile
restore spfile from '/u01/app/oracle/product/10.2.0/db_1/dbs/02ntr7qn_1_1';
4、关闭数据库DUMMY实例
shutdown immediate;
5、启动数据库实例到nomount
startup nomount;
6、从备份片中取出controlfile
restore controlfile from '/u01/app/oracle/product/10.2.0/db_1/dbs/02ntr7qn_1_1';
7、启动数据库实例到mount
alter database mount;
8、还原数据库
restore database;
9、恢复数据库
由于ARCHIVELOG和ONLINELOG的丢失,导致只能使用不完全恢复了。
recover database using backup controlfile until cancel;
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
CANCEL
10、打开数据库
alter database open resetlogs;
后续问题一:
这样做可能有一个问题,就是恢复出来的spfile不在ASM实例下,而是来到了主机文件系统。这样就需要重新在ASM实例中恢复出一个SPFILE,否则其它节点的实例就有可能没办法启动。
1、创建pfile
create pfile from spfile;
2、在ASM上创建spfile
create spfile='+AS/chsh/spfilekdata.ora' from pfile='/u01/app/oracle/product/10.2.0/db_1/dbs/initkdata1.ora';
这样ASM上就存在spfile了
3、确认两个节点的
~/dbs/initkdata1.ora和~/dbs/initkdata2.ora的内容是否为:
SPFILE='+AS/chsh/spfilechsh.ora'
后续问题二:
在打开数据库实例一的时候一切正常,可是打开数据库实例二的时候却有严重的问题。
在
alter database open resetlogs的时候出现
ORA-03113: end-of-file on communication file
查看dump文件是
ORA-00600: internal error code, arguments: [3705], [2], [4], [4], [1], [], [], []
联机日志有严重的问题
首先尝试使用
recover database until cancel;
alter database open resetlogs;
仍然是
ORA-03113: end-of-file on communication file
而且实例立刻就死掉了。
多次尝试未果。
这时候尝试用alter database clear log group 4,结果失败。
而且current日志组也不能drop。
最后尝试使用recover database using backup controlfile until cancel;
然后给指定了asm下的一个归档日志,虽然报错说不包含期望的scn值,但是recover正常完成了,再次尝试使用
alter database open resetlogs;
库打开了。