2节点RAC环境下单个SCAN IP通过JDBC连接Oracle失败咨询
Oracle 2节点RAC单SCAN IP JDBC连接失败可能原因
核心根因方向
你已经排查到网络层(ping、telnet端口)全部正常,说明问题出在数据库服务注册、监听器配置层面,和底层网络无关,常见原因如下:
- 异常SCAN IP对应的SCAN监听器未注册目标服务:该SCAN IP绑定的监听器进程正常运行(所以telnet端口能通),但没有注册你要连接的数据库服务名,JDBC发起连接请求后监听器找不到可转发的后端实例,直接返回连接失败。
- SCAN IP归属节点的服务状态异常:3个SCAN IP会分散运行在2个RAC节点上,若出问题的SCAN IP所在节点的数据库实例状态异常、或者对应服务被设置为offline,SCAN监听器转发请求时没有可用的后端实例响应,导致连接失败。
- 连接目标服务的节点绑定配置限制:如果你连接时指定了非默认的数据库服务名,该服务可能仅配置为在其中一个节点对外提供,恰好异常SCAN IP对应的节点没有绑定该服务,就会出现只有部分SCAN IP可连接的情况。
- 连接数资源已满:异常SCAN IP对应的后端节点实例、监听器的连接数/会话数已经达到预设上限,新的连接请求会被拒绝,而ping、telnet仅需要完成TCP三次握手,不需要分配数据库会话资源,所以探测结果正常。
你可通过现有权限验证的操作
你仅持有SQL Developer只读权限,可通过可正常连接的SCAN IP登录数据库,执行以下查询辅助定位:
- 执行
show parameter remote_listener检查数据库实例的SCAN监听器注册配置是否正常 - 执行
select name, network_name, enabled from dba_services where network_name = '你连接用的服务名'确认目标服务是否已启用 - 执行
select inst_id, instance_name, status from gv$instance确认两个RAC节点的实例状态均为OPEN
内容的提问来源于stack exchange,提问作者user1929905
相关产品推荐
相关产品推荐

