kettle连接oracle19c的3种方式

  • Post author:
  • Post category:其他




kettle如何连接oracle19c



软件配置参数



软件版本





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



数据库配置



数据库类型



容器数据库



可插拔数据库

数据库类型编码 CDB PDB
数据库名称 orcl d1
用户名 system u1
密码 123456 123456



需求描述

最近在做数据库迁移,需要将数据库版本从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;



版权声明:本文为huryer原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。