之前程序是连接的oracle11G数据库,由于11G官方不再维护,很多客户升级到了oracle19C,
导致程序连接报错
我这边jdk为1.8 oracle jdbc驱动为
com.oracle
ojdbc14_g
10.2.0.4.0
报错信息为java.sql.SQLException: ORA-28040: 没有匹配的验证协议
有一种解决方式为远程到oracle服务器,修改oracle服务端配置文件,改为兼容oracle11版本。
但是这种不大推荐,数据库服务器不是我们可以随便去远程,修改的,好多系统可能用一个实例。
所以修改数据库服务器配置的做法很多地方不适用。
解决方法为升级orace jdbc驱动
修改pom文件ojdbc依赖为
com.oracle.ojdbc
ojdbc8
19.3.0.0
我们发现更新pom后 ojdbc8-19.3.0.0.jar依赖引入了很多jar,具体哪些可以从ojdbc8-19.3.0.0.pom看到,这些依赖都是不能排除的。排除了可能数据库能连接上 查询字段时缺少转换报错等
下面是我从oracle官方下载的jdk8 连接oracle19C 的jdbc驱动 jar集合,方便非maven结构项目使用。
另外需要注意的是 如果数据库是oracle11G,jdk7,jdk8都是使用oracle14G驱动就行,而如果是oracle19C ,jdk7和jdk8的驱动不一样的。
jdk7的项目连接oracle19C数据库使用ojdbc7-12.1.0.2.jar驱动即可
对应的pom,注意是中央仓库的cn.easyproject包下,com.oracle下我好像没找到ojdbc7-12.1.0.2
cn.easyproject
ojdbc7
12.1.0.2.0
我这边pom跟新后启动可以,但是sql报错提示上诉错误,提示少了orai18n.jar
我查看ojdbc8-19.3.0.0.jar的pom有这个依赖的..
查看依赖关系也没引入orai18n.jar
查到原因是ojdbc8-19.3.0.0.jar的pom引入orai18n.jar时增加了
导致不会依赖传递,但是这个这个pom我这边又不好改动
解决方案是pom单独增加下该依赖,更新依赖,重启,sql执行成功
com.oracle.ojdbc
orai18n
19.3.0.0
true
后续又发现问题,maven clean mvn package打包时,orai18n.jar 没打包进去,项目引入该jar时也需要把
com.oracle.ojdbc
orai18n
19.3.0.0
jdk7_jdk8-oracle19C所需驱动.zip_jdk8的oracle驱动-互联网文档类资源-CSDN下载