如何排查Oracle RAC安装中的节点互信连通性

落晨大大_2677

落晨大大_2677

2026-09-18

890人浏览

原创

oracle rac互信检查失败的根本原因在于runcluvfy.sh要求ssh连接严格无密码、无交互、无警告、无banner输出,而手动ssh成功不代表满足该静默要求;必须确保uid/gid一致、禁用sshd_config中干扰项、清理.ssh/config、使用batchmode=yes测试,并统一私网mtu与selinux策略。

如何排查oracle rac安装中的节点互信连通性

节点互信失败时 ssh 连通性看似正常但 runcluvfy.sh 报错

Oracle RAC 安装前的互信检查不是只看 ssh user@node2 能否登录,而是要求无密码、无交互、无警告、无 banner 输出——任何干扰都会导致 runcluvfy.sh stage -pre crsinst 在 “User equivalence” 阶段失败。常见现象是手动 ssh 成功,但脚本报 PRVF-4037 : User equivalence check failed

实操建议:

Agent Git Oracle
Agent Git Oracle

高级仓库分析与重构指南。基于AI推理识别技术债务与架构反模式。

下载
  • 必须用安装用户(gridoracle)执行,且两节点 UID/GID 完全一致:id grid 对比输出,不一致会直接失败
  • 禁用 /etc/ssh/sshd_config 中的 PrintLastLogPrintMotdStrictModes yes(临时设为 no 测试用)
  • 检查 ~/.ssh/config 是否存在 Host 别名或 ProxyCommand,这些会破坏静默连接;临时重命名为 config.bak 再试
  • 验证命令必须加 -o ConnectTimeout=10 -o BatchMode=yes:例如 ssh -o BatchMode=yes -o ConnectTimeout=10 grid@node2 date,失败即说明互信未达标

runcluvfy.sh 提示 “Node connectivity” 失败但 pingnc 都通

这个阶段检查的是私网接口(如 eth1)在指定子网内的双向 TCP/UDP 连通性,不是简单 ping 通就行。它会尝试绑定私网 IP 发起连接,并校验 MTU、路由表、防火墙策略是否允许该子网内任意端口通信。典型错误是 PRVF-4657 : Connectivity of subnet "192.168.10.0" 后跟 failed,但 ping -I eth1 node2-priv 却成功。

实操建议:

  • 确认 /etc/hosts 中每个节点的 private IP 解析必须唯一且不指向 127.0.0.1 或公网地址;nslookup node2-priv 必须返回私网 IP
  • 运行 cluvfy comp nodecon -n node1,node2 -verbose 查看详细日志,重点找 “Failed to connect using UDP” 或 “sendto: No route to host”
  • 检查私网网卡是否被多路径或 NetworkManager 干扰:nmcli device status 应显示私网接口为 unmanaged;否则执行 nmcli dev set eth1 managed no
  • 临时关闭 firewalldsystemctl stop firewalld)再跑验证——若通过,说明问题出在 --add-source 规则缺失,而非端口放行

私网连通性验证中 ping -M do -s 失败但普通 ping 正常

这说明链路层不支持巨型帧(Jumbo Frames),而 Oracle RAC 默认期望私网使用 MTU=9000(尤其 19c+)。普通 ping 用 64 字节小包能过,但 ping -M do -s 8972 强制发 9000 字节巨帧并禁止分片,任一环节(网卡驱动、交换机端口、对端 MTU)不匹配就会丢包或返回 !F(fragmentation needed)。

实操建议:

  • 先查真实支持能力:ethtool eth1 | grep "Supports jumbo frames",若为 No,换驱动或禁用巨帧(改回 MTU=1500)
  • 两端必须统一设置:ip link set dev eth1 mtu 9000,且所有节点重启前不能只改一个;集群启动后不生效,必须停 crs 后统一设
  • 测试必须带源接口:ping -M do -s 8972 -I eth1 node2-priv,不指定 -I 可能走错路由
  • 交换机侧需确认端口启用 Jumbo Frame(如 Cisco:system jumbomtu 9000;HPE Aruba:ip jumbo

节点间 olsnodes 显示在线但 crsctl check clusterCRS-4639

olsnodes -s -t 只读 OCR 和本地 ohasd 进程,而 crsctl check cluster 依赖完整的 CRS 栈(包括 crsdcssd、IPC 通信)。报 CRS-4639: Could not contact Oracle High Availability Services 表明集群服务未真正拉起,常见于私网 IPC 层被阻断,即使节点“活着”,也无法组成集群。

实操建议:

  • 立刻检查 ps -ef | grep cssd,若无进程或状态为 Z(zombie),说明 CSSD 启动失败,大概率是私网不通或共享内存初始化失败
  • 查看 $GRID_HOME/log/<hostname>/cssd/ocssd.log</hostname>,搜索 IPC SEND timeoutclsssInitNative: connect failed, rc 9 —— 这是私网被防火墙拦截的铁证
  • 不要只查 firewall-cmd --list-services,它不反映 IP 段规则;必须运行 firewall-cmd --zone=public --list-rich-rules 看是否有 reject source 私网段的规则
  • SELinux 必须设为 permissive 或关闭:setenforce 0,并执行 setsebool -P oracle_execmem 1,否则 cssd 无法分配共享内存段
关键点在于:RAC 的“连通性”不是网络层通就完事,它横跨 SSH 层、IP 层、链路层、安全策略层和内核参数层。任何一个环节的静默限制(比如 SELinux、MTU 不一致、NM 管理私网卡、/etc/hosts 解析歧义)都可能让验证工具在不同阶段失败,且错误信息高度相似。动手前先确认私网网段、用户 UID、MTU 值、SELinux 状态这四个变量是否在所有节点完全一致。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
oracle清空表数据
oracle清空表数据

当表中的数据不需要时,则应该删除该数据并释放所占用的空间。本专题为大家提供oracle清空表数据的相关文章,帮助大家解决该问题。

2023.08.16

801

5

Oracle中declare的使用
Oracle中declare的使用

Oracle DECLARE语句是PL/SQL编程语言中用于声明变量、常量、游标或异常的关键字。它的主要作用是在程序中定义这些对象,以便在后续的代码中使用。DECLARE语句的语法简单明了,可以根据需要声明多个对象。通过使用这些声明的对象,可以进行各种操作,如计算、查询数据库、处理异常等 。

2023.09.15

2193

5

oracle怎么分页
oracle怎么分页

实现分页的步骤:1、使用ROWNUM进行分页查询;2、在执行查询之前进行设置分页参数;3、使用"COUNT(*)"函数来获取总行数,并使用"CEIL"函数来向上取整计算总页数;4、在外部查询中使用"WHERE"子句来筛选出特定的行号范围,以实现分页查询。想了解更多oracle怎么分页的文章,可以来阅读本专题先的文章。

2023.09.18

2210

5

Oracle查看表操作历史记录
Oracle查看表操作历史记录

查看操作历史记录的方法:1、使用Oracle内置的审计功能,可以记录数据库中发生的各种操作,包括登录、DDL语句、DML语句等;2、使用Oracle日志文件,其中包含了数据库中发生的各种操作,可以通过查看日志文件来获取操作历史记录;3、使用Oracle的Flashback功能,可以查看数据库在某个时间点的操作历史记录;4、使用第三方工具等。本专题还提供其他查看表操作的文章,大家可以免费阅读。

2023.09.19

1289

3

Oracle中RAC的用法
Oracle中RAC的用法

Oracle中RAC的用法:1、通过在多个服务器上运行数据库实例来提供高可用性;2、允许在需要时增加或减少节点数量;3、通过将工作负载分布到多个节点上来实现负载均衡;4、使用共享存储来实现多个节点之间的数据共享;5、允许多个节点同时处理数据库请求,从而实现并行处理;6、提供了透明故障切换功能;7、使用了一些技术来确保数据的一致性;8、提供了管理工具来简化RAC环境的管理和维护。本专题还提供RAC相关的其他文章,大家可以免费阅读。

2023.09.19

1853

7

oracle imp
oracle imp

imp是Oracle数据库中的一个命令行工具,用于将导出的数据和对象从一个数据库实例导入到另一个数据库实例。imp命令的一般语法为“imp username/password@connect_string file=file_name [options]”。

2023.09.19

2389

4

常用的数据库软件
常用的数据库软件

常用的数据库软件有MySQL、Oracle、SQL Server、PostgreSQL、MongoDB、Redis、Cassandra、Hadoop、Spark和Amazon DynamoDB。更多关于数据库软件的内容详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.02

3989

19

oracle通配符有哪些
oracle通配符有哪些

oracle通配符有“%”、“_”、“[]”和“[^]"。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.11.08

237

5

oracle四舍五入怎么操作
oracle四舍五入怎么操作

oracle四舍五入操作可以使用ROUND函数来实现,其语法为“ROUND(number, decimal_places)”,其中,number是要进行四舍五入的数值,decimal_places是指定的小数位数。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.11.14

606

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程