今天,启动RAC的时候,遇到了如题所示的错误。
它的更详细描述如下:
查看RAC集群资源的状态)

可以看到,其中节点一、二的数据库实例资源无法启动。

以oracle用户登录节点一,尝试手动启动数据库资源)

可以通过反馈信息看到,数据库实例之所以无法启动的原因是:
在启动数据库实例的时候,找到initORCL1.ora文件,通过其中的描述,去找spfileORCL.ora。
无法找到。
于是数据库启动失败。

查看ASM资源的状态)
以oracle用户登录节点一,查看有关ASM实例的具体状态:

可以看到节点一虽然ASM实例启动了,但是其中无法找到有关ASM Disk Group的定义。

事实上ASM DG是被定义了的。
在上面RAC的资源状态中可以看到节点三的数据库实例是被成功ONLINE的。
查看节点三上有关DB Instance与ASM的相关状态:
(节点三)

并且,在节点一或者节点二上尝试挂载ASM DG,将会遇到如题所示的错误。
如下:

发生该错误的时候,Alert日志的报错如下:


综上所述:
造成RAC 10g集群中节点一、二的数据库实例状态不正常的原因是由于节点一、二的ASM实例虽然启动了,但是其中没有ASM DG的记录无法挂载ASM DG导致的。
因为无法挂载ASM DG,所以无法找到SPFILE(SPFILE位于ASM DG中)。
无法找到Spfile,当然数据库实例的启动会失败。

——————————————————————————
解法:
关于上面的问题,发生的原因很多。
在这里,在我的环境中,产生的原因是:Oracle ASMLib的磁盘权限不正确,以至于oracle操作系统用户无法读取到通过“oracleasm createdisk …”创建的对象导致的。
具体情况如下:
节点一(错误的节点):

节点三(正确的节点):

关于Oracle ASMLib的状态:
节点一(错误的节点):

节点三(正确的节点):

通过对比,问题的原因显而易见。

更正:
有问题的节点(节点一、二)都需要更改,这里以节点一做演示:
修改/etc/sysconfig/oracleasm文件的内容)

重启oracleasm:

确认/dev/oracleasm/diks/*下的文件权限正常,则表示对/etc/sysconfig/oracleasm文件的修改生效。

然后,通过oracle用户再次尝试对ASM DG的挂载:

可以看到,当Oracle ASMLib的权限正常后,ASM DG的挂载就成功了。
ASM DG挂载成功的后台日志如下:
文件:/u01/app/oracle/admin/+ASM/bdump/alert_+ASM1.log

然后,启动节点一的数据库实例:

数据库实例启动成功。
(其他的有类似问题的节点,按照如上方式予以解决即可。)

至此,RAC10g状态不正常的问题已经告终。
————————————————————————
Ending。

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.

隐藏
变装