作者为:? shoug成员 – oracle acs高级顾问罗敏 oracle公司自10g版本开始就推出了集群管理软件crs,以后又升级改造成clusterware,到11g版本之后更是大动干戈,内部架构进行了大幅度改造,并与asm技术整合在一起,称之为gi(grid infrastructure)。clusterw
作者为:?
shoug成员 – oracle acs高级顾问罗敏oracle公司自10g版本开始就推出了集群管理软件crs,以后又升级改造成clusterware,到11g版本之后更是大动干戈,内部架构进行了大幅度改造,并与asm技术整合在一起,称之为gi(grid infrastructure)。clusterware替代了硬件厂商和第三方厂商的集群软件功能,也使得oracle rac与clusterware集成为一体,在产品的整体性、服务支持一体化等方面具有显著优势。
作为新产品、新技术,稳定性、成熟性略差,情有可原。但到了11g仍然如此,则让人难以理解了。
本人最近在windows 2012平台实施了2节点11.2.0.4 rac,并通过增加节点方式扩展到了4节点rac,在国内实属罕见案例。期间一些波折,表明 clusterware产品仍然不成熟。
话说那天我在实施节点扩展操作之前,先花费了半天时间进行了新节点的环境准备之后,并通过如下命令进行了环境检查:
cluvfy stage -pre nodeadd -n hsedb3 –verbose
… …
节点 “hsedb3″ 上的共享存储检查成功
硬件和操作系统设置 的后期检查成功。
哟,一切都“成功”,开练了!于是,我按照oracle文档标准流程在节点1开始运行addnode.bat脚本了,一切“正常”!我继续在节点3运行了gridconfig.bat等脚本。
待所有脚本顺利运行完之后检查环境时,却发现节点3根本没有加入到集群环境中,节点3上的clusterware服务也根本没有启动。—– 这就是产品的严重不成熟,明明出问题了,所有脚本却不显示任何一条返回错误,显示一切正常!更可气的是,addnode.bat脚本的日志文件(addnodeactions2014-09-07_04-52-22pm.log)也居然显示一切正常,最后还来一句:
*** 安装 结束 页***
c:\app\11.2.0\grid 的 添加集群节点 已成功。
我知道oracle支持在windows平台进行rac加节点操作,但现在没有成功,一定是我犯什么错误了,也肯定知道有什么错误信息藏在什么鸟日志文件里了。无奈天色已晚,忙乎一天了,于是先打道回府了。
隔日,待我回到现场仔细分析各类clusterware日志文件信息时,首先在alerthsedb3.log文件中大海捞针般地发现了出错信息:
[cssd(4484)]crs-1649:表决文件出现 i/o 错误: \\.\orcldiskoradg0; 详细信息见 (:cssnm00059:) (位于 c:\app\11.2.0\grid\log\hsedb3\cssd\ocssd.log)。
于是,按图索骥继续去查询ocssd.log文件中的信息。又像侦探一样,在ocssd.log文件8千多行的日志信息中发现了如下错误信息:
2014-09-07 17:00:06.192: [ skgfd][4484]error: -9(error 27070, os error (osd-04016: 异步 i/o 请求排队时出错。
o/s-error: (os 19) 介质受写入保护。)
此时,其实本人已经觉察出问题了:可能是节点3对存储设备只有读权限,连表决盘(voting disk)都没有写入功能,从而导致失败了。为保险期间,还是根据上述出错信息在metalink中进行了一番搜索,果然如此!《tablespace (datafile) creation on asm diskgroup fails with “[ora-15081: failed to submit an i/o operation to a disk] : [ o/s-error: (os 19) the media is write protected]” on windows. ( doc id 1551766.1 )》详细描述了原委和解决方案。于是,按照该文档的建议,我将节点3对所有共享存储设备的权限从只读状态修改为可读、可写的联机状态。也明白一个细节:新节点对共享存储设备的权限缺省为只读状态。无论如何,安装之前没有仔细检查共享存储设备的权限是我犯的一个错误。
接下来该是重新进行节点增加操作了。且慢!因为前面已经错误地进行了节点增加操作,而且居然显示成功了,那么运行addnode.bat脚本的节点1肯定已经在ocr、voting disk等集群文件中写入节点3不正确的信息了。因此,需要先实施从集群中删除节点3的操作,但是发现oracle标准文档中的删除节点操作的如下第一条命令有错误!
c:\>grid_home\perl\bin\perl -i$grid_home\perl\lib -i$grid_home\crs\install
grid_home\crs\install\rootcrs.pl -deconfig -force
又是一番折腾,将上述命令修改如下:
cd \app\11.2.0\grid
c:\>perl\bin\perl -i perl\lib -i crs\install crs\install\rootcrs.pl -deconfig –force
终于顺利删除了节点3!
现在可以重新来一遍了。这次一马平川地成功增加了节点3的clusterware以及rac,还有节点4的clusterware和rac。
感悟之一:明明节点3对共享存储只有读权限,而cluvfy却说:节点 “hsedb3″ 上的共享存储检查成功!一定是cluvfy只检查了读权限,而没有检查写权限。很可能是cluvfy的bug!
感悟之二:明明增加节点3的操作失败了。但不仅addnode.bat没有在命令行及时显示错误,而且对应的日志文件还显示“添加集群节点已成功”。极大地误导客户!罪不可恕!
感悟之三:诊断clusterware问题太难了!oracle公司没有告诉客户clusterware问题的诊断思路,特别是日志文件太多了,不知道先看哪个日志文件,后看哪个日志文件。此次本人完全是凭经验,先看了alerthsedb3.log文件,才找到问题的蛛丝马迹,进而逐步确认问题并加以解决。
… …
总之,clusterware仍然是一个非常不成熟的产品!
related posts:
oracle acs资深顾问罗敏 老罗技术核心感悟:自动扫描sql语句工具?oracle acs资深顾问罗敏 老罗技术核心感悟:分表还是分区?oracle acs资深顾问罗敏 老罗技术核心感悟:牛! 11g的自动调优和sql profile如何确认11.2 rac grid infrastructure的时区【12c新特性】安装12c standalone grid infrastructurerac grid infrastructure安装11.2.0.3.5 14727347 psu gi-rdbms补丁11.2.0.3上仅有一个voting disk可能触发bug 13869978uninstall/remove 11.2.0.2 grid infrastructure & database in linux几个关于oracle 11g asm的问题how to recover from root.sh on 11.2 grid infrastructure failed 原文地址:oracle acs资深顾问罗敏 老罗技术核心感悟:clusterware是成熟产品吗?, 感谢原作者分享。