Oracle问题排查 ONS configuration failed

Springboot连接Oracle报错 ONS configuration failed 问题排查

最近在搞公司的生产服务器,发现Springboot在连接Oracle的时候报错了,大家都知道Oracle需要配置一个TNS配置吧,因为只有配置了这个才能正常连接Oracle。

开始的时候报错并不是ONS configuration failed,而是TSN报错,由报错信息得知TNS中的SID有问题,检查Springboot配置中url并没有问题。接下来就开始检查TNS,如下:

# IP和SID已经做了脱敏!!!
spring:
  datasource:
    url: jdbc:oracle:thin:@10.xx.xx.xx:1521:sid
    username: root
    password: 123456
Oracle TNS报错信息
TNS配置

检查了TNS配置之后,确定没有问题,然后继续排查,在得知生产环境的Oracle是以集群的方式部署的,而其他环境都是单机的情况下,便想到了配置文件中的url是单机版的配置,而Oracle集群版的url配置是有差距的。

# Oracle集群版配置
url: jdbc:oracle:thin:@(DESCRIPTION=(LOAD_BALANCE=yes)(ADDRESS=(PROTOCOL=TCP)(HOST=10.xx.xx.xx)(PORT=1521))(CONNECT_DATA=(service_name=sid)))

配置好后,重新启动服务,发现报错信息换成了标题的那个错误,此时我万般无语,但是又很无奈,只能继续去排查解决!

ONS configuration failed

看到报错之后的我,便有了疑问,ONS是什么鬼?于是我一顿搜索,找到了Oracle中GitHub的一个Issues,如下:

Issues信息
我正在想:问题来自于weblogic的版本,正好对上公司的老项目就是weblogic部署的。但是文件肯定是不能修改的呀,能不能直接作为Springboot启动环境变量参数呢?
-Doracle.jdbc.fanEnabled=false
IDEA启动项配置环境变量参数

weblogic ONS

鉴于读者的补充,我在这里再记录一下。

weblogic ONS 是一种对数据源的健康检查和通知并且它需要占用6200端口,以上操作是关闭了weblogic的健康检查操作!
weblogic ONS控制台

配置好以后再次启动测试,发现问题得到了完美解决!!!

解决完之后,回想起这几个月,真的是一路披荆斩棘,虽然道路坎坷,但是获益匪浅。也希望未来的你能披荆斩棘,为你加油!

经验分享 程序员 微信小程序 职场和发展