不需要。oracle rac 依赖自身 grid infrastructure 实现高可用,与 windows 故障转移群集(mscs)完全独立,混用会导致端口、注册表和服务冲突,安装必然失败。

Oracle RAC 需要 Windows 故障转移群集(MSCS)吗?
不需要。Oracle RAC 和 Windows 故障转移群集(MSCS)是两套完全独立的高可用方案,不能混用。RAC 依赖 Oracle 自己的集群件(Oracle Grid Infrastructure),它在 Windows 上通过 Oracle Clusterware 实现节点通信、资源管理与故障检测——这和 MSCS 的 clussvc.exe 无任何交集。
强行在已启用 MSCS 的节点上部署 RAC,会导致端口冲突(如 1521、6200)、注册表键冲突(HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ClusSvc vs ...OracleCSService)、服务启动顺序紊乱,安装大概率卡在 rootcrs.pl 或 crsconfig_params 阶段。
- Windows Server 2016/2019/2022 上部署 RAC,必须禁用并卸载所有 MSCS 相关角色(包括“故障转移群集”功能)
- 验证命令:
Get-WindowsFeature Failover-Clustering应返回InstallState : Removed - 若曾安装过 MSCS,还需手动清理残留:删除
C:\Windows\Cluster、清空HKLM\SYSTEM\CurrentControlSet\Services\Clus*下所有键
tnsnames.ora 和 listener.ora 在 RAC 中怎么配才不翻车?
RAC 环境下这两个文件不能只靠 Net Manager 图形界面生成。图形工具默认只写单节点信息,而 RAC 要求客户端连接能自动 failover 到存活节点,必须显式配置 SCAN 和多个 VIP。
典型错误是把 HOST 写成具体节点 IP(如 192.168.50.101),导致客户端直连某节点后,该节点宕机即断连;正确做法是全部指向 SCAN 名称或 SCAN IP。
-
tnsnames.ora中服务名条目应包含LOAD_BALANCE=on和FAILOVER=on,例如:ORCL = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = rac-cluster-scan)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl.example.com) (FAILOVER_MODE = (TYPE = SELECT)(METHOD = BASIC)(RETRIES = 180)(DELAY = 5)) ) ) -
listener.ora不需要手工改——Grid Infrastructure 安装后,监听器由lsnrctl动态注册,且每个节点监听的是自己的 VIP + SCAN VIP,不是 localhost - 检查监听状态统一用:
srvctl status listener和lsnrctl status LISTENER_SCAN1,而非看本地listener.ora文件内容
Windows 上 RAC 安装失败最常见的三个注册表坑
Oracle Grid Infrastructure 对 Windows 注册表敏感度极高,尤其在多网卡、DHCP、IPv6 混合环境中。以下三处不改,90% 的安装会在 “Performing System Checks” 或 “Setting Up Oracle Management Agent” 步骤静默失败。
- 禁用 DHCP 媒体感知:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\DisableDHCPMediaSense = 1(DWORD) - 关闭 IPv6 协议栈:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters\DisabledComponents = 0xffffffff(DWORD),否则oifcfg getif会识别出错误网卡 - 修正时间同步策略:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config\MaxPosPhaseCorrection = 43200(DWORD),避免因节点间时间差 > 20 秒被 Clusterware 拒绝加入
这些值必须在安装前设置,并重启服务器生效。别信“安装程序会自动配置”的提示——Windows 版 Grid Infrastructure 从不修改注册表关键项。
共享存储识别不到?先确认 iSCSI Target 是否真正支持 SCSI-3 PR
Windows Server 自带的 iSCSI Target 服务(iSCSITarget)默认不启用 SCSI-3 Persistent Reservations(PR),而 Oracle ASM 和 Clusterware 强制要求 PR 支持用于投票盘(OCR/Voting Disk)的并发写保护。
现象是:asmca 打不开磁盘组,或 crsctl check crs 显示 CRS-4638: Oracle High Availability Services is online 但 CRS-4535: Cannot communicate with Cluster Ready Services。
- 必须使用支持 SCSI-3 PR 的存储:Windows Server 2016+ 的 iSCSI Target 需手动启用 PR(PowerShell:
Set-IscsiServerTarget -TargetName "OCR" -EnablePersistentReservations $true) - 或改用第三方存储(如 StarWind VSAN、DataCore SANsymphony),它们默认开启 PR
- 验证命令:
diskpart → list disk → select disk X → detail disk,输出中必须含Persistent Reservations: Yes
跳过这步直接建 ASM 磁盘组,OCR 初始化会成功,但第一次节点重启后 OCR 就损坏——这个坑往往在上线后第三天才暴露。











