[原创]在Windows群集服务的自动启动,可能会挂起或失败_MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 4841 | 回复: 0   主题: [原创]在Windows群集服务的自动启动,可能会挂起或失败        下一篇 
大红薯
注册用户
等级:少校
经验:1440
发帖:159
精华:0
注册:2011-7-21
状态:离线
发送短消息息给大红薯 加好友    发送短消息息给大红薯 发消息
发表于: IP:您无权察看 2011-8-29 10:41:30 | [全部帖] [楼主帖] 楼主

适用于:

Oracle Server - Enterprise Edition - Version: 9.2.0.1 to 10.2.0.1 - Release: 9.2 to 10.2
Microsoft Windows (32-bit)
Microsoft Windows Itanium (64-bit)
Microsoft Windows x64 (64-bit)


症状

在启动时,Windows上的RAC系统,在启动集群相关服务时,可能会遭遇延迟。这种延迟在服务挂起时是明显的,或者服务可能将启动失败。这个问题可能会再启动集群的第二个节点时候频繁的出现。

对于Windows上的Oracle9i RAC,这具体涉及到的OracleCMService9i

对于Windows上的Oracle10g RAC的,下面的CRS相关的服务可能无法启动,或可能会挂起:

OracleCRService
OracleCSService
OracleEVMService


 在Windows上的Oracle10g RAC的,有的情况下,未能正确初始化的OracleCSService也可能导致错误检查和重新启动机器,由Oracle fening驱动程序引起的 - oraFencedrv.sys

这种行为是有目的的,为了防止脑分裂的问题,下面将作出解释:

原因:

ORACLE 的集群服务(either OracleCMService9i or OracleCSService depending on the version or Oracle)在集群中有两种与其他节点通讯的方法——他们通过磁盘沟通,即表决磁盘或者CMDiskFile,他们也通过互联通讯。

在重启,或者启动,OracleCMService9i, 或者 OracleCS服务必须能够与集群中的各个其他的节点通过所有的通讯手动启动通讯。为了通讯成功,操作系统的子系统(例如网络子系统或者磁盘I/O子系统)必须充分初始化。

如果这些集群服务被设置成自动的,OracleCMService9i 或 OracleCSService就有可能在底层的操作系统的网络组件已完全初始化之前启动。那么当发生这些时CSS或者CM服务就不可以正确的启动因为它不能与集群的其他节点充分的沟通。

在大多数情况下,这些发生在第二个节点启动,因为我们能够看到,在集群中至少有一个其他节点通过表决磁盘———但是系统的网络组件还没有完全的初始化,我们不能互通互联。这种情况的结果就是脑分裂。

在ORACLE10g中,如果脑分裂被集群件所侦测到,那么按照计划该节点将被重启。在这个情况下,你会发现尝试重新加入到集群中的集群节点会落入一个“重启回环”中。

注意在一些情况下,在互联中启用Windows防火墙,可能会导致类似的结果。那么,在这些情况下,ORACLE进程管理器将无法避免这个问题。你要么关闭防火墙,要么允许ORACLE进程穿越防火墙,参照:Note: 309939.1获取更多的ORACLE进程和windows防火墙的信息。

解决方案

ORACLE BUG:4537790 记录了这个问题,虽然这更多的是OS初始化的问题,而不是CSS本身的问题。BUG:4537790的修复提供了一个可执行文件叫“opmd.exe”opmd.exe允许创建一个新服务叫“Oracle Process Manager”。ORACLE进程管理器将控制集群服务启动,阻止OracleCSService (or OracleCMService9i)在其余的OS服务启动之前启动。

为了解决这个问题,你必须得到符合你版本的补丁集,里面包含有“opmd.exe”.以下的补丁包含这个实用程序:

For Oracle9i:
==============================
The 9.2.0.8 Clusterware (Patch:5388107) will contain 'opmd.exe'.
or
Patch:4537790 is available as a one-off for 9.2.x - just as a standalone utility.


在ORACLE9i, OPMD应该从WINDOWS\System32\osd9i directory执行。在9i执行如下命令:

C:\WINDOWS\system32\osd9i>opmd -install
OpmdInstall: OPM service successfully installed
OpmdFixupService: Oracle Object Service set to manual startup and added to list
OpmdFixupService: OracleCMService9i set to manual startup and added to list
For Oracle10g:
===============================
10.1.0.4 Patch 10 and higher will contain 'opmd.exe'
10.1.0.5 Patch 1 and higher will contain 'opmd.exe'
10.2.0.1 Patch 5 and higher will contain 'opmd.exe'
10.2.0.2 Patch 3 and higher will contain 'opmd.exe'


注意,只是简单的应用该补丁本身还不能够修复这个问题。应用该服务,补丁将会创建一个“Oracle Process Manager”服务。 要创建'Oracle Process Manager',你将需要在每一个节点上运行node节点,如下,从CRS_HOME\bin directory:

在Oracle10g中,你会看到如下面的反馈:

E:\oracle\product\10.2.0\crs\BIN>opmd -install
OpmdInstall: OPM service successfully installed
OpmdFixupService: Oracle Object Service set to manual startup and added to list
OpmdFixupService: OracleCSService set to manual startup and added to list
OpmdFixupService: OracleEVMService set to manual startup and added to list
OpmdFixupService: OracleCRService set to manual startup and added to list


正如,这将设置集群相关服务为手动启动,但是ORACLE进程管理器服务他本身是设置为自动启动的。ORACLE进程管理器将在引导过程中初试阶段结束时启动ORACL相关集群服务,

因此,确保了所有OS组件首先完全的初始化的要求。

注意关于执行“opmd -install”介绍可能不会列在一个补丁集得README中,因此你不会得到修复的效果知道你在所有的节点上都跑了这个命令。

如果一些点失败了,那么将有必要删除ORACLE进程管理器服务,可以通过执行如下卸载选项命令:

E:\oracle\product\10.2.0\crs\BIN>opmd -uninstall
OpmdUninstall: OPM service successfully removed


注意在执行opmd目录中将会创建一个叫“opmd.log”的日志文件

如果你在一个ORACLE10g 版本中(例如 10.2.0.1)还没有可用的补丁,是可以使用“opmd.exe”到任何10g版本的——它是一个独立的实用程序,不需要任何额外的文件。因此,你可以简单的从任何10g的补丁集中拷贝opmd.exe到CRS_HOME\bin目录底下并安装它。

同样的道理,9i版本的“opmd.exe”将在任意的9i版本的集群件和RDBMS中生效。所以使用补丁:4537790下载9.2.0.7版本的的opmd.exe,你可以在WINDOWS\System32\osd90i目录下执行它并且执行“opmd -install”来安装ORACLE 进程管理器,而忽略你跑的是什么版本的9i集群件。

但是,你必须确定你已经拥有正确的芯片构架版本,32位、64位安腾 或者 64 X64

注意:关于OPMD 10.2.0.3补丁集。

如果你在windows2003上为AMD/EM64T应用10.2.0.3补丁集,请参阅Note 412851.1 关于opmd在该补丁集中的一个已知的问题。 Windows 2003 安腾和32位windows不受此影响。

ORACLE支持的非发布章节

参考文献:

NOTE:161549.1 - Oracle Database Server and Networking Patches for Microsoft Platforms
NOTE:309939.1 - Oracle Database Statement of Support for Windows Server 2003 with Service Pack 1 and Higher
NOTE:342443.1 - 10.2.0.x Oracle Database and Networking Patches for Microsoft Platforms
NOTE:373040.1 - How To Identify and Locate the Latest Windows MiniPatch For Your Patchset Version
NOTE:412851.1 - Oracle Process Manager (Opmd) Does Not Start After Patching to 10.2.0.3


显示相关信息

产品

* Oracle Database Products > Oracle Database > Oracle Database > Oracle Server - Enterprise Edition


关键词

CMDISKFILE; CLUSTERWARE; OPM




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论