oracle rac 23ai高可用配置需严格依赖ocr/voting disk(asmfd托管)、public vip+scan同子网且禁用dhcp、listener静态注册三要素,缺一不可;仅执行crsctl/srvctl命令无法替代底层校验,否则将导致静默故障。

crsctl 或 srvctl 命令不解决根本问题——如果网络、存储或 OCR/Voting Disk 配置有偏差,高可用会失效,且故障时往往表现为静默中断(比如 VIP 不漂移、实例不重启、应用连接超时但无明确报错)。
OCR 和 Voting Disk 必须用 ASMFD 管理,不能裸设备或 ACFS
Oracle 23ai 强制要求 OCR 和 Voting Disk 存放于 ASM 磁盘组,并通过 ASMFD(ASM Filter Driver)接管底层块设备访问。这是防止多节点同时写入破坏仲裁的关键。
- 安装 Grid Infrastructure 时必须启用 ASMFD:
asmfd -i,且所有节点执行一致 - OCR 磁盘组需至少 3 块磁盘(奇数),冗余类型必须为
EXTERNAL或NORMAL;EXTERNAL仅适用于已由存储层保障冗余的 SAN 环境 - 运行
ocrcheck和crsctl query css votedisk验证状态,输出中不能出现MISSING或OFFLINE - 若误用裸设备或 ACFS 托管 OCR,
crsctl start crs可能成功,但节点重启后集群无法自动拉起,且cluvfy comp ocr会报错
Public VIP + SCAN 必须绑定到同一子网,且禁用 DHCP
VIP 和 SCAN 是客户端透明故障转移的入口。23ai 对 DNS 解析和网络连通性更敏感:SCAN 名称必须能被所有客户端解析为 3 个 IP(默认),且每个 IP 必须路由可达;VIP 则需确保 ARP 广播能被交换机正确泛洪。
- 确认 SCAN 名称在 DNS 中正向/反向解析一致:
nslookup scan-name和nslookup <scan-ip></scan-ip>输出应匹配 - VIP 和 SCAN IP 必须与 Public 网络在同一子网,且子网掩码完全一致;跨子网会导致
srvctl start vip失败并报CRS-2674: Start of 'ora.<vip>.vip' on '<node>' failed</node></vip> - 禁用所有节点 Public 接口的 DHCP:23ai 不支持动态 IP,
nmcli dev set <ifname> ipv4.method manual</ifname>是安全做法 - 测试 VIP 漂移:手动停掉一个节点的 CRS(
crsctl stop crs -f),观察 VIP 是否在 10 秒内出现在另一节点的ip addr show输出中
Listener 必须使用 GNS 或静态注册,禁用动态注册
23ai 默认关闭监听器动态注册(local_listener 自动发现),因为该机制在节点故障时可能延迟更新服务状态,导致连接仍发往已宕机节点。
- 强制配置
local_listener为本机 VIP:ALTER SYSTEM SET local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=<node-vip>)(PORT=1521))';</node-vip> - 全局监听器(SCAN Listener)必须由 GNS 管理或显式配置为静态服务名;检查
lsnrctl status listener_scan1输出中是否含Service "xxx" has 2 instance(s),而非0 instance(s) - 避免在
tnsnames.ora中使用LOAD_BALANCE=on而不配FAILOVER=on,否则连接池可能卡死在不可达节点 - 验证服务状态:
srvctl status service -d <db_name></db_name>应显示所有服务 RUNNING,且srvctl config service -d <db_name></db_name>中的Failover type为SESSION或SELECT
TNS-12535 或 ORA-12545。











