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;

库打开了。