kettle連接oracle19c的3種方式

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;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章