这是一则来自于某德国客户生产环境的RAC数据库启动出现故障的案例,记录下来一是用于对自己的警醒,二是可以同广大网友分享。
*** 作系统环境:Windows Server 2008 R2 Enterprise version 6.1(Build 7601:Service Pack 1)
数据库环境:10gR2 10.2.0.5.0的64位RAC双节点数据库;
上周末,在顺利地对RAC数据库的几张分区表做调整之后,正常关闭RAC数据库,并重新启动2台Windows 2008 R2的 *** 作系统之后,尝试启动Oracle CRS时,发现报错:
1 在任何一个节点的服务项里,启动OracleCRService服务时,报错,其中OracleCSService的状态一直停留在Starting状态,其它服务项无任何变化;
2 重启Windows服务器后,使用$CRS_HOME\bin\crsctl start crs在命令行尝试启动CRS时,依然报错
3 接下去,开始检查CRS的错误日志:在C:\oracle\product\10.2.0\crs\log\dehamora002\crsd\crsd.log日志文件中看到下述报错信息:
从上可以看出,问题应该是出现在服务器访问共享存储时出现的。果然,在远程联系德国汉堡客户IT人员检查后,发现是服务器同存储间出现了问题,协调并解决该错误。
4 再次重启Windows,并尝试启动CRS时,C:\oracle\product\10.2.0\crs\log\dehamora002\cssd\cssdOUT.log日志文件中看到下述报错信息:
通过查询Metalink:
Can not Start CRS on Windows Cluster [ID 1115153.1]
How to Start (or stop) 10gR2 or 11gR1 Oracle Clusterware Services Manually in Windows [ID 729512.1]
OracleCSService does not start - PROC-26 error possible [ID 305093.1]
找到产生问题的原因:原来这套RAC环境下的所有Oracle服务都是手工启动的方式,正常情况下,手工启动OracleCRService服务时,会自动启动依赖的相关服务。而该环境下,oracle并没有如我们期待的那样去启动与OracleCRService相关的服务。
准确定位到原因后,解决问题的办法其实也很简单,就是如Metalink文档上说明的方案,手工依次启动. OracleObjectService 、OracleClusterVolumeService 、OracleCSService、OracleEVMService、OracleCRService 很快,RAC数据库重新正常启动!
启示:
1 对于Windows环境下的RAC,最好是将OracleObjectService的启动类型置为自动启动;
2 如果上述服务是手工启动的,那么正确手工启动Windows下的Oracle RAC数据库的顺序依次是:OracleObjectService 、OracleClusterVolumeService(if using OCFS) 、OracleCSService、OracleEVMService、OracleCRService
情况1: 保养数据库及 *** 作系统服务器需要关闭DB(所实例)OS及Server a. 首先停止Oracle10g 环境 $ lsnrctl stop (每节点停止监听用srvctl *** 作) $ emctl stop dbconsole (每节点停止dbconsole) $ srvctl stop database -d RACDB (停止数据库所实例) $ srvctl stop nodeapps -n node1 (停节点1服务) $ srvctl stop nodeapps -n node2 (停节点2服务) # /etc/init.d/init.crs stop (root 停cluster 软件)(两节点) 或者用 $ crs_stop -all crsctl stop crs b. # init 0 关闭服务器或者重新启#init 6 c. 关闭电源 d. 启Server ,始启Oracle10g数据库及服务等(OS重新启面所服务自打【除dbconsole】用手工执行) $ srvctl start nodeapps -n node1 (启节点1服务) $ srvctl start nodeapps -n node2 (启节点2服务) # /etc/init.d/init.crs start (root 启cluster 软件) 或者用 $ crs_start -all $ srvctl start database -d RACDB (启数据库所实例) $ lsnrctl start (每节点停止监听用srvctl *** 作) $ emctl start dbconsole (每节点启dbconsole) 注: srvctl 用关闭某实例: srvctl stop instance -d RACDB -i RACDB1 srvctl 启关闭监听器: srvctl stop listener -n orcl2 srvctl start listener -n orcl2 情况2: 调整数据库参数候关闭所节点实例重新启OS及Server a.首先停止Oracle10g 环境 $ lsnrctl stop (所节点停止监听用srvctl) $ srvctl stop database -d tpc (停止数据库所实例) b. 启所实例及监听器 $ srvctl start database -d tpc (启数据库所实例) $ lsnrctl start (启所节点监听用srvctl 启监听) 情况3: 关闭 *** 作系统情况由于问题点或调整某些服务需要关闭启某些服务程序等 关闭某些服务候由于涉及RAC运行所需要先关闭数据库实例类似于第种情况 附Oracle10g RAC检查命令 : ---------------------------------------------- Oracle10g RAC数据库 nodeapps VIP, GSD, Listener, ONS . $ srvctl status nodeapps –n dbrac1 (检查VIP, GSD,ONS, Listener 等(所节点)) VIP is running on node: dbrac1 GSD is not running on node: dbrac1 Listener is not running on node: dbrac1 ONS daemon is not running on node: dbrac1 gnd-rac01$crsctl check crs (检查Oracle Cluster 状态: CSS, CRS, EVM .) CSS appears healthy CRS appears healthy EVM appears healthy gnd-rac01$ crs_stat -t (全面检查状态 ) Name Type Target State Host ┅┅┅┅┅┅┅┅┅?br />ora....01.lsnr application ONLINE ONLINE gnd-rac01 ora....c01.gsd application ONLINE ONLINE gnd-rac01 ora....c01.ons application ONLINE ONLINE gnd-rac01 ora....c01.vip application ONLINE ONLINE gnd-rac01 ora....02.lsnr application OFFLINE OFFLINE ora....c02.gsd application ONLINE ONLINE gnd-rac02 ora....c02.ons application ONLINE ONLINE gnd-rac02 ora....c02.vip application ONLINE ONLINE gnd-rac02 ora.tpc.db application ONLINE ONLINE gnd-rac01 ora....c1.inst application ONLINE ONLINE gnd-rac0一些CRS的服务你可以,手工SHUTDOWN 每个实例
然后CRS_STOP -ALL,关闭其他服务。
启动的时候可以通过CRS_START -ALL启动
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)