GridLink Data Source是WebLogic 10.3.4+中Oracle RAC高可用首选方案,原生支持FAN事件实现毫秒级故障感知与连接重路由,无需手动维护多数据源、定时测试或单节点JDBC配置,前提是启用ONS、数据库服务开启FAN且使用SCAN地址与SERVICE_NAME。

用 GridLink Data Source 替代传统多数据源
WebLogic 10.3.4+ 版本起,GridLink Data Source 是 Oracle RAC 高可用配置的首选方案,它原生支持 FAN(Fast Application Notification)事件,能实现毫秒级故障感知和连接重路由。相比老式 Multi Data Source,它不需要手动维护多个单节点数据源、不依赖定时连接测试、也不需要为每个 RAC 节点单独配置 JDBC 模块。
关键前提:
- WebLogic 必须启用 ONS(Oracle Notification Service)客户端,且与 RAC 的 ONS daemon 网络互通(默认端口 6200)
- 数据库服务必须启用 FAN(通过 srvctl modify service -d <db> -s <service> -q TRUE 设置)
- JDBC 驱动版本不低于 ojdbc6.jar(11.1.0.7+),推荐使用 ojdbc8.jar
配置时 URL 格式应为:jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=scan-host)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=myrac_svc)))
注意:这里用的是 SCAN 地址和服务名(SERVICE_NAME),不是实例名(SID)或单节点 IP。
Multi Data Source 仅在旧版 WebLogic 或受限场景下使用
如果你仍在用 WebLogic 10.3.3 或更早版本,或因合规限制无法启用 FAN,则只能走 Multi Data Source 路线。但必须严格满足以下条件,否则会频繁报 No good connections available:
- 每个成员数据源必须指向不同 RAC 节点的**独立监听地址+端口+实例名**,例如:
jdbc:oracle:thin:@10.1.43.11:1521:stnic1和jdbc:oracle:thin:@10.1.43.21:1521:stnic2 - Multi Data Source 的算法必须选 Failover 或 Load-Balancing,不能选 Random —— 后者不保证连接分发到存活节点
- 所有成员数据源必须部署到同一组 Server(如 AdminServer + 所有 Managed Server),否则部分节点无法获取连接池
- 每个成员数据源的
Test Connections On Reserve建议关闭,改用Connection Creation Retry Frequency(例如设为 10 秒),避免启动时集体阻塞
URL 中 SERVICE_NAME 和 INSTANCE_NAME 的选择错误是常见死因
RAC 环境下,INSTANCE_NAME(即 SID)只标识单个实例,而应用应该面向数据库服务(SERVICE_NAME)—— 它由 DBA 创建,可跨多个实例提供统一入口。硬编码实例名会导致:
- 连接永远打到一个节点,负载不均
- 节点宕机后连接失败,无自动转移能力
- WebLogic 控制台显示数据源“Active”,但实际连接池里全是失效连接
验证方式:
- 查服务名:SELECT NAME FROM V$ACTIVE_SERVICES;
- 查当前服务名(连接后):SELECT SYS_CONTEXT('USERENV', 'SERVICE_NAME') FROM DUAL;
- 不要用 v$instance 查出的 INSTANCE_NAME 填进 URL,那是给 DBA 看的运维标识
ONS 配置和 FAN 订阅失败导致 GridLink 失效
即使 URL 正确、驱动版本够新,如果 WebLogic 没正确接入 RAC 的 ONS,GridLink Data Source 就退化为普通 Thin 数据源,失去快速故障转移能力。典型现象是节点宕机后连接中断长达 30 秒以上(TCP 超时),而非毫秒级切换。
检查点:
- WebLogic 控制台中该数据源的「Configuration → Connection Pool」页,确认 Fan Enabled 为 true
- ONS Node List 必须填写 RAC 集群中所有节点的 ONS 地址,格式如:10.1.43.11:6200,10.1.43.21:6200
- WebLogic 日志中搜索 FAN 或 ONS,应出现类似 Successfully connected to ONS server 的日志行
- 若使用 SCAN,确保 DNS 或 hosts 文件能解析 SCAN 名称,且防火墙放行 TCP 6200 端口
容易被忽略的是:ONS 地址必须是 RAC 节点物理 IP,不能填 SCAN IP —— SCAN 只用于数据库连接,ONS 是独立进程,绑定在各节点本地。


















