开发者社区> 六月暴雪飞梨花> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

SpringBoot中连接oracle出现告警信息

简介: 前几日领导说需要连接友商的Oracle,然后读取友商的数据展示到页面来。工作还是需要做的嘛,虽然比较简单些,但是工作量还是有的(此处划水摸鱼了呢?)。为了演示连接成功和可以读取数据,我在本地搭建了一个Oracle,然后作为测试来模拟读取,后续只需要替换下连接器的连接即可。然后,在启动SpringBoot项目时,有一个很显眼的WARN红色字体在控制台打印出来了。
+关注继续查看


问题出现的背景和原因

前几日领导说需要连接友商的Oracle,然后读取友商的数据展示到页面来。工作还是需要做的嘛,虽然比较简单些,但是工作量还是有的(此处划水摸鱼了呢?)。为了演示连接成功和可以读取数据,我在本地搭建了一个Oracle,然后作为测试来模拟读取,后续只需要替换下连接器的连接即可。然后,在启动SpringBoot项目时,有一个很显眼的WARN红色字体在控制台打印出来了。

WARN com.alibaba.druid.pool.DruidAbstractDataSource - oracle.jdbc.driver.OracleDriver is deprecated.Having use oracle.jdbc.OracleDriver


当前我Oracle服务器的数据库版本为:11.2g ,此处画上一个重点,后续要考。


根据问题着手处理

虽然这个不影响项目的运行,但是出于看着不舒服的情况,我还是决定看看这个告警出现的问题。仔细一看,这个问题还是比较简单的。我找百度翻译给翻译下吧。

image

看出来了吧,是不是已经知道什么问题了?大白话就是在使用驱动连接器的类过期了,不在使用oracle.jdbc.driver.OracleDriver 这个驱动器类了,而是改为了oracle.jdbc.OracleDriver。相比以前好像是简洁了一个单词,少了一个也是一种进步,一种优化。看来我是很久都不用了。


思考的路永远欢迎你踏上去

为了增加我猜测的准确性,我决定还是百度下吧,下面看下官方提供的解释,我认为这个应该是比较准确了。

官方解释:

Package oracle.jdbc


Beginning in Oracle9i, the Oracle extensions to JDBC are captured in the package oracle.jdbc. This package contains classes and interfaces that specify the Oracle extensions in a manner similar to the way the classes and interfaces in java.sql specify the public JDBC API.


Your code should use the package oracle.jdbc instead of the package oracle.jdbc.driver used in earlier versions of Oracle. Use of the package oracle.jdbc.driver is now deprecated, but will continue to be supported for backwards compatibility.


All that is required to covert your code is to replace "oracle.jdbc.driver" with "oracle.jdbc" in the source and recompile. This cannot be done piece-wise. You must convert all classes and interfaces that are referenced by an application. Conversion is not required, but is highly recommended. Future releases of Oracle may have features that are incompatible with use of the package oracle.jdbc.driver.


The purpose of this change is to enable the Oracle JDBC drivers to have multiple implementations. In all releases up to and including Oracle9i, all of the Oracle JDBC drivers have used the same top level implementation classes, the classes in the package oracle.jdbc.driver. By converting your code to use oracle.jdbc, you will be able to take advantage of future enhancements that use different implementation classes. There are no such enhancements in Oracle9i, but there are plans for such enhancements in the future.


Additionally, these interfaces permit the use of some code patterns that are difficult to use when your code uses the package oracle.jdbc.driver. For example, you can more easily develop wrapper classes for the Oracle JDBC classes. If you wished to wrap the OracleStatement class in order to log all SQL statements, you could easily do so by creating a class that wraps OracleStatement. That class would implement the interface oracle.jdbc.OracleStatement and hold an oracle.jdbc.OracleStatement as an instance variable. This wrapping pattern is much more difficult when your code uses the package oracle.jdbc.driver as you cannot extend the class oracle.jdbc.driver.OracleStatement.


Once again, your code should use the new package oracle.jdbc instead of the package oracle.jdbc.driver. Conversion is not required as oracle.jdbc.driver will continue to be supported for backwards compatibility. Conversion is highly recommended as there may in later releases be features that are not supported if your code uses oracle.jdbc.driver.

Since:

9i

See Also:

java.sql

这篇文章的地址来源于:https://docs.oracle.com/en/database/oracle/oracle-database/21/jajdb/oracle/jdbc/package-summary.html 有兴趣的小伙伴可以阅读,可以提升下下英文阅读能力。


综合上述可见,从oracle9i开始,使用oracle.jdbc.OracleDriver代替oracle.jdbc.driver.OracleDriver。如果继续使用oracle.jdbc.driver.OracleDriver,在后续可能出现不支持某些功能。oracle.jdbc.OracleDriver 继承oracle.jdbc.driver.OracleDriver,是为了与老版本兼容,这也就可以说明我这里出现问题的原因了。


解决办法多数情况是一种取舍

先看下我原来的在YML中配置multi-card-oracle的驱动信息

省略……
      datasource:
        master:
          url: jdbc:mysql://xxx.xxx.xxx.xxx:3306/jmd-boot?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
          username: xxxxxx
          password: xxxxxxxxxx
          driver-class-name: com.mysql.cj.jdbc.Driver
        # 多数据源配置
        multi-card-oracle:
          url: jdbc:oracle:thin:@xxx.xxx.xxx.xxx:1521:xxxxxxx
          username: xxxxxx
          password: xxxxxxxxxx
          driver-class-name: oracle.jdbc.driver.OracleDriver
省略……

oracle.jdbc.driver.OracleDriver替换为oracle.jdbc.OracleDriver就可以了消除上面的告警信息了。


关于Oracle的工具连接使用的驱动器类

说到这里,其实还有一种方式可以避免这种问题的出现。我们在使用工具连接数据库服务器的时候,填写完成必要信息后,选择数据库类型,此时,工具会根据你的数据库服务器的版本来选择最优的驱动连接器,此时的驱动器连接器的类名称便是你需要的连接驱动器类。

image


关于MySQL的驱动器类

想到这里,其实,这个同我们在使用MySQL时是一样的道理。例如,我们在使用MySQL时,使用的驱动器为com.mysql.cj.jdbc.Driver,则代表我们连接的数据库服务器的版本为8.0+,如果是com.mysql.jdbc.Driver则是8.0以下的MySQL版本。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
从零开始教你安装Oracle数据库!Oracle 数据库的安装和使用指导
本文是一篇Oracle数据库的安装和使用教程,不仅记录了Oracle数据库的下载,安装和配置,还通过表空间的创建示例分析Oracle数据库的具体使用。另外,文章中详细记录了Oracle数据库在连接配置中可能遇到的异常问题,并对相应的问题给出具体的解决方案。这篇文章完整记录了数据库的安装和使用,适合作为学习和Oracle相关异常问题修复的参考。
2097 0
Oracle的学习心得和知识总结(五)|Oracle数据库 Connect By 技术详解
本人CSDN博主 孤傲小二~阿沐,本文《Oracle的学习心得和知识总结(五)|Oracle数据库 Connect By 技术详解》来自于我在CSDN的同名文档
84 0
Oracle数据库检查分区表信息
check table partition on oracle database,Oracle数据库检查分区表信息,需要最新的统计信息
180 0
Oracle 数据库性能优化3日实战(企业培训)
课程名称一: Oracle性能优化及调整 课程时长 1天 课程深度: 高级 上机实验: 10%-30% 授课对象: Oracle开发人员、Oracle数据库管理人员,应用程序开发人员 课程描述: 本课程讲述Oracle数据库物理层规划,系统性能的监控,数据库性能参数调整,统计信息的收集,使用自动化调试工具优化数据库,I/O子系统的配置与设计以及性能优化方法论等。
1895 0
Java中通过JDBC远程连接Oracle数据库
通过jdbc连接数据库,拢共分三步: 第一步:下载一个JDBC的驱动,然后把jar包扔到项目里并add to build path; 第二步:去本地oracle文件夹下找到“TNSNAMES.ORA”文件,打开找到对应数据库的连接字符串,作为jdbc的连接字符串; 第三步:写代码,通过jdbc连接数据库。
1925 0
oracle 12c 数据库上编写SQL语句时卡顿的问题解决
开发环境的一个用户数据测试库,是12.1.0.2的数据库。 使用pl/sql developer连接后,编写sql语句,例如: Select a.Id, a.门诊号 From 病人挂号记录 A Where NO = 'Q0000453' 输入字段时,输完a,再输点之后,大约要5秒才弹出字段选择,选择了字段之后,按回车,大约需要8秒才能继续进行输入。
1494 0
RHEL6 64位系统安装ORACLE 10g 64bit 数据库
RHEL6 64位系统安装ORACLE 10g 64bit 数据库 2013-08-10 22:12 by 潇湘隐者, 9673 阅读, 2 评论, 收藏, 编辑    记得去年4月份的时候,为公司部署测试环境和UAT环境时,在红帽RHEL6 64位系统安装ORACLE 10g 64位数据库时遇到了许多小问题,当时匆匆忙忙也没记录一下这些问题,前几天在虚拟机安装ORACLE 64位 10g时,又有一些常见问题又遇到了,顺便整理一下这篇文章。
1119 0
+关注
六月暴雪飞梨花
数据治理工程师
文章
问答
文章排行榜
最热
最新
相关电子书
更多
Oracle 至PostgreSQL案例分享
立即下载
ORACLE 10g 数据库体系结构图
立即下载
迁移 ORACLE 最佳实践
立即下载