(本文档仅供参考)

问题描述:

1、以oracle作为知识库,连接时报错 ORA-28040: No matching authentication protocol,如何解决?

2、Oracle数据源测试通过,在数据库管理获取资源的时候出现ORA-28040: No matching authentication protocol。

解决方案:

原因:没有匹配的身份验证协议,Smartbi内置驱动jar版本与客户使用oracle的jdk版本不匹配导致

       参考解决方案:

1、排查数据库方面,先确定身份验证协议已开启,数据库工具是否能够连接上该数据库;

2、排查数据库参数设置,在cd $ORACLE_HOME/network/admin/sqlnet.ora中,修改数据库认证协议如下

         数据库修改之后,在sqlnet.ora中:

             SQLNET.ALLOWED_LOGON_VERSION_CLIENT=8
             SQLNET.ALLOWED_LOGON_VERSION_SERVER=8

3、将Smartbi的驱动替换成可以连通的环境的驱动即可。若JDBC连接方式的数据库连接工具测试连接通过,可用数据库连接工具本身内置的驱动替换;若无法获取数据库连接工具本身内置的驱动,各版本oracle数据库对应的驱动版本可参考:https://blog.csdn.net/qq_39477018/article/details/104676717

替换路径:


4、若更换驱动后还是不成功,请尝试以下的方案

(1)在cd $ORACLE_HOME/network/admin/sqlnet.ora中,修改数据库认证协议:

数据库未修改之前:

在sqlnet.ora中:

SQLNET.ALLOWED_LOGON_VERSION_CLIENT=10  (认证级别调整)
SQLNET.ALLOWED_LOGON_VERSION_SERVER=10

数据库修改之后:

SQLNET.ALLOWED_LOGON_VERSION_CLIENT=8
SQLNET.ALLOWED_LOGON_VERSION_SERVER=8


(2)修改完之后连接,可能会报出另一个错误

ORA-01017: 用户名/口令无效; 登录被拒绝

请在数据库中修改登录用户对应的密码之后重新登录即可。


参考文档:https://zhuanlan.zhihu.com/p/99664523