You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot项目中Oracle主备库(不同服务名)故障转移配置

Spring Boot Oracle主备库(不同服务名)故障转移连接配置

当主库部署在服务器A、备库在服务器B且两者服务名不同时,需要通过Oracle TNS多描述符配置实现故障转移,核心是使用DESCRIPTION_LIST为每个服务器单独指定地址和对应服务名,替代原示例中统一服务名的配置。

正确的JDBC URL配置示例

SPRING_DATASOURCE_URL=jdbc:oracle:thin:@(DESCRIPTION_LIST=(FAILOVER=YES)(LOAD_BALANCE=NO)(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=服务器A地址)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=主库服务名)))(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=服务器B地址)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=备库服务名))))

配置参数说明

  • DESCRIPTION_LIST:包裹多个独立的数据库连接描述,每个描述对应一台服务器的地址和专属服务名
  • FAILOVER=YES:开启故障转移机制,主库连接中断时自动尝试连接备库
  • LOAD_BALANCE=NO:主备架构下关闭负载均衡,优先连接主库,仅在主库故障时切换到备库(读写分离场景可设为YES)
  • 每个DESCRIPTION块:分别对应服务器A(主库)和服务器B(备库),包含各自的TCP连接地址及对应的SERVICE_NAME
  • CONNECT_DATA:指定对应服务器的数据库服务名,需严格匹配主、备库各自的服务名

Spring Boot完整配置示例

在application.properties中添加如下配置:

spring.datasource.url=jdbc:oracle:thin:@(DESCRIPTION_LIST=(FAILOVER=YES)(LOAD_BALANCE=NO)(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=服务器A)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ORA_MAIN)))(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=服务器B)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ORA_STANDBY))))
spring.datasource.username=db_user
spring.datasource.password=db_password
spring.datasource.driver-class-name=oracle.jdbc.OracleDriver

注意事项

  • 使用ojdbc8及以上版本的Oracle JDBC驱动,避免版本过低导致的TNS配置兼容性问题
  • 故障转移测试:手动停止主库服务,验证应用是否自动切换至备库连接
  • 可根据业务需求调整FAILOVER_MODE参数,例如TYPE=SESSION表示会话级故障转移,TYPE=SELECT支持查询级故障转移

内容的提问来源于stack exchange,提问作者pxq

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 10:08:13