Oracle Rac ASM环境故障解决


转载时请务必以超链接形式标明文章 原始出处和作者信息及本版权声明
链接:http://www.dbasky.net/archives/2009/02/oracle-rac-asm.html
由于某个原因要重启运行中的rac环境的数据库,首先正常关闭二个节点上的数据库(数据库正常关闭),然后reboot系统。大概过几分钟系统起来了,因为是RAC环境,节点上的数据库是随机启动的,可是查看数据库的状态时候,出现了错误:
rdb1-> crs_stat -t
Name           Type           Target    State     Host        
------------------------------------------------------------
ora.fx.db      application    ONLINE    ONLINE    rdb2        
ora....x1.inst application    ONLINE    ONLINE    rdb1        
ora....x2.inst application    ONLINE    OFFLINE               
ora.fx.rac.cs  application    ONLINE    ONLINE    rdb1        
ora....fx1.srv application    ONLINE    ONLINE    rdb1        
ora....SM1.asm application    ONLINE    ONLINE    rdb1        
ora....B1.lsnr application    ONLINE    ONLINE    rdb1        
ora.rdb1.gsd   application    ONLINE    ONLINE    rdb1        
ora.rdb1.ons   application    ONLINE    ONLINE    rdb1        
ora.rdb1.vip   application    ONLINE    ONLINE    rdb1        
ora....SM2.asm application    ONLINE    ONLINE    rdb2        
ora....B2.lsnr application    ONLINE    ONLINE    rdb2        
ora.rdb2.gsd   application    ONLINE    ONLINE    rdb2        
ora.rdb2.ons   application    ONLINE    ONLINE    rdb2        
ora.rdb2.vip   application    ONLINE    ONLINE    rdb2        
从状态信息可以看出,节点一上的db是正常的,可是节点二的db没有正常启动,就通过单个服务启动
rdb1-> crs_start ora.fx.fx2.inst
Attempting to start `ora.fx.fx2.inst` on member `rdb2`
Start of `ora.fx.fx2.inst` on member `rdb2` failed.
rdb1 : CRS-1018: Resource ora.rdb2.ASM2.asm (application) is already running on rdb2

CRS-0215: Could not start resource 'ora.fx.fx2.inst'.
结果还是起不来,没办法只能通过sqlplus来看看是否可以。
[root@rdb2 ~]# su - oracle
rdb2-> sqlplus " /as sysdba"

SQL*Plus: Release 10.2.0.4.0 - Production on Thu Jan 15 13:08:00 2009

Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.

Connected to an idle instance.

SQL> startup
ORA-01078: failure in processing system parameters7d1
ORA-01565: error in identifying file '+DG1/fx/spfilefx.ora'
ORA-17503: ksfdopn:2 Failed to open file +DG1/fx/spfilefx.ora
ORA-15077: could not locate ASM instance serving a required diskgroup
我们从ora-15077错误信息不难看出来问题出现在ASM上,查看了节点二上ASM磁盘组目录的权限,终于找到问题所在了,因为

在授权的时候,只在节点1对裸设备进行了授权,而没有在节点2进行授权。因此,虽然节点1上的dbca配置的ASM实例可以成功的将裸设备加到磁盘组中。但是节点2同样的操作由于缺少权限,导致了磁盘组DISMOUNT,间接导致了实例关闭。

解决办法:

重新给节点二上的磁盘组授权,方法如下:

rdb2> su -

password:

[root@rdb2] cd /dev/raw/

[root@rdb2 raw]# ll
总用量 0
crw-rw----  1 root disk 162, 1  1月 15 12:54 raw1
crw-rw----  1 root disk 162, 2  1月 15 12:54 raw2
crw-rw----  1 root disk 162, 3  1月 15 12:54 raw3
[root@rdb2 raw]# chown oracle:dba /dev/raw/raw[1-3]
[root@rdb2 raw]# chmod 660 /dev/raw/raw

[root@rdb2 raw]# su - oracle
rdb2-> sqlplus " /as sysdba"

SQL*Plus: Release 10.2.0.4.0 - Production on Thu Jan 15 13:19:16 2009

Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.

Connected to an idle instance.

SQL> startup

到此二个节点DB都运行正常,通过这次的事故可以得出结论:要注意各位磁盘组的权限和权限的分配。

Mike.Xu (2009年1月16日 19:53) | 暂无评论 由于某个原因要重启运行中的rac环境的数据库,首先正常关闭二个节点上的数据库(数据库正常关闭),然后reboot系统。大概过几分钟系统起来了,因为是RAC环境,节点上的数据库是随机启动的,可是查看数据库的状态时候,出现了错误:
rdb1-> crs_stat -t
Name           Type           Target    State     Host        
------------------------------------------------------------
ora.fx.db      application    ONLINE    ONLINE    rdb2        
ora....x1.inst application    ONLINE    ONLINE    rdb1        
ora....x2.inst application    ONLINE    OFFLINE               
ora.fx.rac.cs  application    ONLINE    ONLINE    rdb1        
ora....fx1.srv application    ONLINE    ONLINE    rdb1        
ora....SM1.asm application    ONLINE    ONLINE    rdb1        
ora....B1.lsnr application    ONLINE    ONLINE    rdb1        
ora.rdb1.gsd   application    ONLINE    ONLINE    rdb1        
ora.rdb1.ons   application    ONLINE    ONLINE    rdb1        
ora.rdb1.vip   application    ONLINE    ONLINE    rdb1        
ora....SM2.asm application    ONLINE    ONLINE    rdb2        
ora....B2.lsnr application    ONLINE    ONLINE    rdb2        
ora.rdb2.gsd   application    ONLINE    ONLINE    rdb2        
ora.rdb2.ons   application    ONLINE    ONLINE    rdb2        
ora.rdb2.vip   application    ONLINE    ONLINE    rdb2        
从状态信息可以看出,节点一上的db是正常的,可是节点二的db没有正常启动,就通过单个服务启动
rdb1-> crs_start ora.fx.fx2.inst
Attempting to start `ora.fx.fx2.inst` on member `rdb2`
Start of `ora.fx.fx2.inst` on member `rdb2` failed.
rdb1 : CRS-1018: Resource ora.rdb2.ASM2.asm (application) is already running on rdb2

CRS-0215: Could not start resource 'ora.fx.fx2.inst'.
结果还是起不来,没办法只能通过sqlplus来看看是否可以。
[root@rdb2 ~]# su - oracle
rdb2-> sqlplus " /as sysdba"

SQL*Plus: Release 10.2.0.4.0 - Production on Thu Jan 15 13:08:00 2009

Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.

Connected to an idle instance.

SQL> startup
ORA-01078: failure in processing system parameters7d1
ORA-01565: error in identifying file '+DG1/fx/spfilefx.ora'
ORA-17503: ksfdopn:2 Failed to open file +DG1/fx/spfilefx.ora
ORA-15077: could not locate ASM instance serving a required diskgroup
我们从ora-15077错误信息不难看出来问题出现在ASM上,查看了节点二上ASM磁盘组目录的权限,终于找到问题所在了,因为

在授权的时候,只在节点1对裸设备进行了授权,而没有在节点2进行授权。因此,虽然节点1上的dbca配置的ASM实例可以成功的将裸设备加到磁盘组中。但是节点2同样的操作由于缺少权限,导致了磁盘组DISMOUNT,间接导致了实例关闭。

解决办法:

重新给节点二上的磁盘组授权,方法如下:

rdb2> su -

password:

[root@rdb2] cd /dev/raw/

[root@rdb2 raw]# ll
总用量 0
crw-rw----  1 root disk 162, 1  1月 15 12:54 raw1
crw-rw----  1 root disk 162, 2  1月 15 12:54 raw2
crw-rw----  1 root disk 162, 3  1月 15 12:54 raw3
[root@rdb2 raw]# chown oracle:dba /dev/raw/raw[1-3]
[root@rdb2 raw]# chmod 660 /dev/raw/raw

[root@rdb2 raw]# su - oracle
rdb2-> sqlplus " /as sysdba"

SQL*Plus: Release 10.2.0.4.0 - Production on Thu Jan 15 13:19:16 2009

Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.

Connected to an idle instance.

SQL> startup

到此二个节点DB都运行正常,通过这次的事故可以得出结论:要注意各位磁盘组的权限和权限的分配。

发表评论

Close