kettle如何连接oracle19c

软件配置参数

软件版本
数据库版本Oracle19c
数据库驱动ojdbc8.jar,orai18n.jar
JDK版本JDK1.8.0_162
etl工具Spoon5.4

数据库配置

数据库类型容器数据库可插拔数据库
数据库类型编码CDBPDB
数据库名称orcld1
用户名systemu1
密码123456123456

需求描述

最近在做数据库迁移,需要将数据库版本从Oracle11g升级到Oracle19c。
使用kettle连接数据库时,提示以下错误:
错误连接数据库 [d1] : org.pentaho.di.core.exception.KettleDatabaseException:
Error occurred while trying to connect to the database

Error connecting to database: (using class oracle.jdbc.driver.OracleDriver)
Listener refused the connection with the following error:
ORA-12505, TNS:listener does not currently know of SID given in connect descriptor

org.pentaho.di.core.exception.KettleDatabaseException:
Error occurred while trying to connect to the database

Error connecting to database: (using class oracle.jdbc.driver.OracleDriver)
Listener refused the connection with the following error:
ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
在这里插入图片描述

问题分析:

根据测试,数据库升级到oracle19c后,应用服务需要进行以下修改:

  • 1、升级数据库驱动
    新增jar包:ojdbc8.jar,orai18n.jar
    取消jar包:ojdbc14.jar 修改为 ojdbc14.jar.bak
  • 2、修改数据库连接参数,变更方式如下:
    原连接方式:
config.jdbcUrl=jdbc:oracle:thin:@192.168.5.129:1521:d1

新连接方式:

config.jdbcUrl=jdbc:oracle:thin:@192.168.5.129:1521/d1

默认情况下,在kettle数据库连接中配置连接后,查看特征列表,发现实际的URL地址如下:
jdbc:oracle:thin:@192.168.5.129:1521:d1
在这里插入图片描述
此方式,仅限于连接CDB数据库,测试将PDB替换为CDB,测试连接成功:
在这里插入图片描述
如果需要正确连接PDB,需要使用以下3种方法:

解决办法:

方式1、数据库名称添加反斜线

在原有的数据库名称前面添加反斜线/,测试连接:成功
在这里插入图片描述

方式2、数据库名称填写全地址

主机名称、端口号留空;
数据库名称:填写数据库访问地址和数据库名称,如下:
192.168.5.129/d1
192.168.5.129:1521/d1
测试连接:成功
在这里插入图片描述
在这里插入图片描述

方式3、JNDI方式

打开Keetle配置文件文件:
%KETTLE_HOME%\simple-jndi\jdbc.properties
新增以下内容:

192.168.5.129@d1/type=javax.sql.DataSource
192.168.5.129@d1/driver=oracle.jdbc.driver.OracleDriver
192.168.5.129@d1/url=jdbc:oracle:thin:@192.168.5.129:1521/d1
192.168.5.129@d1/user=u1
192.168.5.129@d1/password=123456

在这里插入图片描述
由于使用JNDI方式,数据库密码以明文方式存储,存在安全隐患,且不便于分布式部署实施。建议采用方案1或方案2;

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐