Springboot项目配置oracle数据库

前段时间的一个项目需要使用oracle数据库,之前使用的都是Spingboot+Mybatis+Druid+Mysql,没有配置Oracle的经验,现在记录一下

1.使用Navicat Premium连接数据库

在得到公司提供给我的oracle数据库相关密码后,第一反应当然是连上Navicat看一下了,很不幸的是第一步就遇到了一个坑:

下图是我配置的连接属性:(我再三确认过没有填错)
在这里插入图片描述

但是出现了错误提示如下:在这里插入图片描述
经过万能的google搜索,发现是缺少OCI库的原因,没办法又去Orcale官网下载了个instantclient-basic,下载地址下载后解压到你的Navicat安装目录下。我的如下:

在这里插入图片描述

下载完成后将OCI环境改为刚刚安装的oci.dll文件的位置,确认后重启Navicat就能发现成功连接。在这里插入图片描述

2.springboot项目安装连接Oracle驱动

在使用Navicat连接成功后就要开始配置项目了

首先在pom文件中加入一下内容:

java<dependency>
  <groupId>com.oracle</groupId>
  <artifactId>ojdbc6</artifactId>
  <version>11.2.0.1.0</version>
</dependency>
<dependency>
   <groupId>com.alibaba</groupId>
   <artifactId>druid</artifactId>
   <version>1.1.15</version>
</dependency>

原本以为这一点是很简单的事情,但是发现Maven没法找到oracle的相关驱动,我又请教了万能的google发现该驱动需要手动下载安装:下载地址 下载后切换到驱动文件jar文件的目录下,执行命令:

mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=11.2.0.1.0 -Dpackaging=jar -Dfile=ojdbc6.jar

安装该驱动,之后再IDEA中Reimport一下就会发现没有报错了。

3.配置数据库连接

驱动安装完成之后的下一件事就是配置druid与oracle相关数据的连接了

之前没有配置过oracle数据库,我在项目中的配置是参照以前的配置来写的如下:

datasource:
    druid:
      url: jdbc:oracle:thin:@ip:port:SERVICENAME
      username: XXX
      password: XXX
      driver-class-name: oracle.jdbc.OracleDriver
      maxWait: 10000
      initial-size: 10
      max-active: 30
      min-idle: 10
      validation-query: select version();

上面的ip即为数据库所在服务器的ip地址,port为数据库开放的端口号,SERVICENAME即为上面的服务名。

然后我写了个测试类尝试去查数据库的内容,当然又报错了,看错误日志发现好像是sql语句多了个;号,但是我写的测试SQL语句并不包含;号,然后我仔细排查了一遍发现yaml文件中有一句是 :

validation-query: select version();

我怀疑是这里出现了错误,就把这句话给删掉了,然后再运行就发现可以正常的执行SQL语句了。

虽然这次成功配置了,但是还是写一遍文章记录一下较好,在复盘此次配置的过程中因为之前对yaml配置文件中的validation-query: select version();不是很了解,我又重新查找了资料,发现validationQuery语句是用在配置数据库连接池时验证数据库连接的有效性,常用数据库的相关语句如下:

数据库 ···················validationQuery
Oracle····················select 1 from dual
DB2·······················select 1 from sysibm.sysdummy1
mysql·····················select 1
microsoft sql············select 1
hsqldb····················select 1 from INFORMATION_SCHEMA.SYSTEM_USERS
postgresql···············select version();
ingres····················select 1
derby·····················select 1
H2·························select 1

现在才恍然大悟,因为我们公司之前的项目好多是使用的MYSQL,而我是直接拿过来用了,导致上面问题的出现。

  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值