暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

某绩效工具Kettle3.0无法连接Oracle 19c版HIS数据库的解决方法

原创 Oracle6 2023-05-25
3537

【故障分析】

    KETTLE 3.0连接ORACLE 19C数据库报错Error connecting to database:(using class oracle.jdbc.driver.OracleDriver)
   ORA-28040: NO MATCHING AUTHENTICATION PROTOCOL。
   ORA-28040: 没有匹配的验证协议

    显然,这是由于低版本的Oracle JDBC驱动程序在连接高版本数据库时无法兼容所造成的,需要从服务器端和客户端两方面解决问题。调整服务器端SQLNET的向下兼容参数不难理解,而升级客户端驱动程序则不能不说是Oracle的“谋划”。每次数据库的主版本升级都会带来全新的功能,并逐步废弃部分已经不再适用的旧功能,而旧版本的驱动程序无疑在某种程度上“拖累”了升级的步伐。于是,兼容矩阵就像是最后的“通牒”,要么你跟团上车,要么你自己想辙。

    由于Oracle 19c调整了认证方式,使得低版本的JDBC驱动程序无法连接到高版本的数据库中,为实现kettle3能够继续连接到19c数据库的目的,特编写本说明。

【解决方法】

一. 修改19c Server端的SQLNET兼容参数

    修改Oracle 19c的sqlnet配置参数文件,开启向下兼容特性。打开%ORACLE_HOME%\network\admin目录下的sqlnet.ora文件,在最后添加如下内容(如果参数已定义,改值即可):

SQLNET.ALLOWED_LOGON_VERSION=8

SQLNET.ALLOWED_LOGON_VERSION_SERVER=8

SQLNET.ALLOWED_LOGON_VERSION_CLIENT=8

    重启OracleTNSListener服务。

二. 调整Kettle3的Oracle JDBC驱动程序

    Kettle3默认的Oracle JDBC驱动程序是位于D:\Kettle3.0\libext\JDBC\目录下的Ojdbc14.jar,该驱动适用于JDK1.4及以上的环境,但从19c开始,Oracle修改了认证方式,只提供JDK1.8以上的驱动程序链接到数据库,为了使得低版本的驱动程序能够继续正常使用,目前只有三种方法供选择:

  1. 升级JDK,更换新驱动,使用Java8驱动

升级Kettle3服务器的JDK版本到Java1.8,用19c的Ojdbc8.jar替换旧的Ojdbc14.jar。
在绩效kettle服务器上执行:Java –version
如果版本低于1.8的话,先卸载JDK,再安装JDK1.8;
删除Kettle3.0\libext\JDBC\目录下的旧驱动Ojdbc14.jar文件,拷贝Ojdbc8.jar文件到上述目录,重启spoon,测试已升级到19c的HIS数据库链接。

  1. 不升JDK,修改连接参数,继续使用Java1.4驱动

修改Oracle数据库JDBC驱动程序的连接参数;
在数据库连接参数的【数据库名称】处输入以下字符串,HOST、PORT、SERVICE_NAME按实际情况修改:

(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.10.131)(PORT =
1521))(CONNECT_DATA =(SERVER=DEDICATED)(SERVICE_NAME =JXKP)))

【端口】为空或-1
【用户名】【密码】输入连接HIS的用户名、密码
点击【测试】,测试成功如图2所示。
ora280401.jpg

图1 19c连接参数示例

ora280402.jpg

图2 连接测试结果

  1. 不升JDK,不修改连接参数,使用新版Java1.6驱动

   删除Kettle3.0\libext\JDBC\目录下的旧驱动Ojdbc14.jar文件,拷贝本文附带的Ojdbc6.jar文件到上述目录,重启spoon,测试已升级到19c的HIS数据库链接。

三. 登录绩效数据库,测试HIS数据库链接(dblink_his)的可用情况

   以hisview用户登录sqlplus或PL/SQL developer,执行如下SQL语句,能读出HIS科室数据代表HIS数据库链接工作正常,如不正常,需排查绩效数据库到HIS数据库的连通以及HIS开放给绩效的用户名、密码是否正确,等等。
        SELECT * FROM MV_HIS_DEPT_DICT ;

【小结】
   HIS数据库的升级将会影响到绩效分配系统两个支撑软件的运行,一是ETL服务器,一是绩效数据库服务器。本文第一节描述了HIS数据库升级后Server端所做出的兼容性参数修改;第二节给出了ETL服务器JDBC驱动程序的解决方法;最后给出了在绩效数据库中测试HIS数据库链接的简易方法。

   本文不仅对有HIS数据库升级意向的,而且对其它有类似工作模式的应用软件的重新适配等情形,或有一定参考意义。鉴于笔者水平有限,错误在所难免,恳请读者批评指正!

2023-05-24

最后修改时间:2023-06-07 09:57:57
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论