SCAN IP无法ping通的主因是VLAN错位或防火墙拦截:需确认SCAN IP与Public网卡同子网/VLAN,检查交换机VLAN配置、节点ip addr输出、/etc/hosts无127.0.0.1误映射,并验证firewalld是否放行ICMP及1521端口。
scan ip 无法 ping 通,大概率不是 dns 或监听器问题,而是网络层被拦在了最外侧——vlan 划分错位或防火墙策略未放行。
确认 SCAN IP 是否真属于当前 VLAN
SCAN IP 是由 Clusterware 在网卡上动态绑定的虚拟 IP,它必须和节点 Public 网卡处于同一子网、同一 VLAN。常见错误是:运维在交换机上把 SCAN 所在网段划到了错误 VLAN,或者没给该 VLAN 配置三层接口(SVI)。
实操建议:
- 登录交换机,查 SCAN IP 对应网段是否已创建 VLAN,且该 VLAN 已分配到对应物理端口(
show vlan id X、show interfaces trunk) - 在任一 RAC 节点执行
ip addr show,确认 SCAN IP(如192.168.10.50/24)是否出现在 Public 网卡(如eth0)下,且子网掩码与交换机配置一致 - 检查节点
/etc/hosts中 SCAN 条目是否误写成127.0.0.1—— 这会导致本地ping成功但跨节点失败
检查 Linux 主机防火墙是否拦截 ICMP 和 TCP 1521
Oracle 19c 默认启用 firewalld,而 SCAN 监听器(LISTENER_SCAN1)监听的是 TCP 1521,但很多排查只测端口,忽略 ICMP 被禁导致 ping 失败这个表象。
实操建议:
- 临时关闭防火墙验证:
sudo systemctl stop firewalld,再pingSCAN IP;若通,则问题定位成功 - 永久放行需添加两条规则:
sudo firewall-cmd --permanent --add-port=1521/tcp和sudo firewall-cmd --permanent --add-icmp-block=echo-request(注意:部分安全策略禁止放开 icmp,此时应改用telnet scan_ip 1521或nc -zv scan_ip 1521测试端口) - 确认
firewalldzone 设置正确(通常应为public或自定义 zone),避免因 zone 错配导致规则不生效
跨节点验证时注意源地址选择
从非 RAC 节点(如应用服务器)ping SCAN IP 失败,不代表 SCAN 本身异常,可能是源端路由或 ACL 限制。RAC 节点之间能通,不代表外部能通。
实操建议:
- 先在节点 A 上
pingSCAN IP,再从节点 B 上ping—— 若都通,说明集群内网络正常 - 从客户端机器抓包:
tcpdump -i any host <scan_ip> and icmp</scan_ip>,看请求是否发出、是否有响应;若请求发不出,问题在客户端出口路由或中间防火墙 - 检查客户端所在网段是否被交换机 ACL 拦截(例如:仅允许特定源网段访问 SCAN 子网)
真正容易被忽略的是:SCAN IP 的可达性 ≠ 数据库可连接。即使 ping 通、telnet 通,仍可能因 remote_listener 未设、监听器未注册服务、或 DNS 返回多个 SCAN IP 但其中部分不可达,导致连接时随机失败。网络层通畅只是必要条件,不是充分条件。


















