资讯动态

Oracle RAC 启动失败排查:私网通信与内核参数优化实战

发布时间:2026/10/18 9:05:17 来源:尧图企业网站定制
问题现象03月13日Oracle RAC启动失败共享存储状态分析未见异常DNS状态分析未见异常防火墙状态分析未见异常私网状态分析可以通信 MTU 为 8972 的包排除两边主机 MTU 不一致的情况附上测试的命令行不是本次测试结果 测试 9000 MTU - 失败 [gridorcl01:/home/grid]$ ping 1.1.1.2 -c 3 -M do -s 8972 PING 1.1.1.2 (1.1.1.2) 8972(9000) bytes of data. ^C --- 1.1.1.2 ping statistics --- 2 packets transmitted, 0 received, 100% packet loss, time 1021ms 测试 1500 MTU - 成功 [gridorcl01:/home/grid]$ ping 1.1.1.2 -c 3 -M do -s 1472 PING 1.1.1.2 (1.1.1.2) 1472(1500) bytes of data. 1480 bytes from 1.1.1.2: icmp_seq1 ttl64 time0.177 ms 1480 bytes from 1.1.1.2: icmp_seq2 ttl64 time0.127 ms ^C --- 1.1.1.2 ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 1032ms rtt min/avg/max/mdev 0.127/0.152/0.177/0.025 mscrsd启动分析crsctl start res ora.crsd -init 发现报错疑似通信问题网络状态分析Oracle RAC 私网默认主要走 UDP但 Clusterware 心跳/管理面会用到 TCP实际是 UDP 为主、TCP 为辅。流量类型协议说明Cache Fusion数据块、锁、GCS/GESUDPRAC 实例间缓存融合流量默认走 UDP11.2 通常经 HAIP 169.254.x.x 传输HAIP169.254.x.x地址通信失败也会表现为 ASM 启动卡住但它同样走 UDP 动态端口不是1521Clusterware 心跳、CSSD、gipcdUDP TCPCSSD 心跳、gipcd 探测等会用到 UDP 和 TCP例如 19c 默认有 TCP 2016GIPCD 心跳探测端口19c 默认启用不可改UDP 全端口双向通行cssd、ohasd、oraagent均动态绑定防火墙/安全组UDP 全端口 TCP 2016 ICMP不能只开 1521UDP 端口是动态的建议私网 CIDR 双向放行 UDP 0-65535运维排查要点抓包优先盯 UDPCache Fusion 流量在私网上表现为 UDP 包排查 GC 延迟/丢包时 tcpdump 要按 HAIP UDP 过滤。 UDP 丢包不重传和 TCP 不同UDP 丢包后 Oracle 不靠协议层重传会直接表现为 gc cr block lost、gc buffer busy 飙升所以私网 UDP buffer 和 MTU 很关键。 MTU 两端交换机必须一致建议统一开 Jumbo FrameMTU 9000否则 UDP 分片重组失败会导致静默丢包甚至节点驱逐。 Exadata / InfiniBand 场景可能走 RDS 协议不再是普通 UDP/IP这种环境下排查路径和普通以太私网不一样。一句话普通以太私网环境Cache Fusion 走 UDPClusterware 心跳和探测会混用 TCP/UDP防火墙必须同时放通 UDP 全端口和 TCP 2016。netstat -s udp部分节点二 大量timeout节点一 大量timeout系统内核参数分析发现不是官方推荐的网卡通信参数修改后RAC正常启动rp_filter Reverse Path Filtering参数定义了网卡对接收到的数据包进行反向路由验证的规则。它有三个值0、1、2具体含义如下 0关闭反向路由校验 1开启严格的反向路由校验。对每个进来的数据包校验其反向路由是否是最佳路由。如果反向路由不是最佳路由则直接丢弃该数据包。 2开启松散的反向路由校验。对每个进来的数据包校验其源地址是否可达即反向路由是否能通通过任意网口如果反向路径不通则直接丢弃该数据包。 默认值是 1. ocssd.trc报has a disk HB, but no network HB Oracle安装文档上也有相关解释 Multiple Private Interconnects and Oracle Linux Without these rp_filter parameter settings systems, interconnect packets can be blocked or discarded. The rp_filter values set the Reverse Path filter to no filtering (0), to strict filtering (1), or to loose filtering (2). Set the rp_filter value for the private interconnects to either 0 or 2. Setting the private interconnect NIC to 1 can cause connection issues on the private interconnect. It is not considered unsafe to disable or relax this filtering, because the private interconnect should be on a private and isolated network. For example, where eth1 and eth2 are the private interconnect NICs, and eth0 is the public network NIC, set the rp_filter of the private address to 2 (loose filtering), the public address to 1 (strict filtering), using the following entries in /etc/sysctl.conf: net.ipv4.conf.eth2.rp_filter 2 net.ipv4.conf.eth1.rp_filter 2 net.ipv4.conf.eth0.rp_filter 1分析总结综合上述分析我们可以看到Oracle RAC启动失败是由于私网通信失败引起。处理/优化建议针对现有情况建议如下1. 对于 Bond 网卡使用主备模式2. 交换机和主机网卡 MTU 保持一致3. 对于 team 网卡调整系统内核参数反向路径过滤

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑