ORA-28040: 没有匹配的身份验证协议异常

oracle21c oracle21c

【问题标题】:ORA-28040: No matching authentication protocol exceptionORA-28040: 没有匹配的身份验证协议异常
【发布时间】:2021-08-29 00:07:43
【问题描述】:

我正在尝试将我的 grails 项目连接到 windows(8) 系统中的 Oracle 数据库(Oracle 12c)。但是,每当我运行我的应用程序时,都会出现以下异常:

Caused by: org.apache.commons.dbcp.SQLNestedException: 
Cannot create PoolableConnectionFactory (ORA-28040: 
No matching authentication protocol)

Caused by: 
java.sql.SQLException: ORA-28040: 
No matching authentication protocol

根据互联网建议,我也尝试编辑我的 *.ora 文件,但它不起作用。

我在 sqlnet.ora 文件中添加了以下 sn-p :

SQLNET.ALLOWED_LOGON_VERSION=10
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=10
SQLNET.ALLOWED_LOGON_VERSION_SERVER=10

在这里我尝试分配 (10,11,12),但它们都不起作用。

谁能帮我解决这个问题?

【问题讨论】:



【解决方案1】:

我删除了 ojdbc14.jar 文件并改用 ojdbc6.jar,它对我有用

【讨论】:

  • 在尝试从 pentaho 水壶连接 Oracle 12c 时遇到同样的问题。删除了 ojdbc14.jar 及其完美的工作!
  • 至少简要说明为什么这应该会很方便。
  • 对我来说,更改为 ojdbc6.jar 或 ojdbc7.jar 仍然失败,因为我一直在不断设置:oracle.jdbc.thinLogonCapability"="o3",您不再需要针对 oracle 12c 执行此操作。希望它可以帮助别人
  • 删除 ojdbc14.jar 并使用 ojdbc6.jar 后效果很好
  • @YuriyKravets ojdbc14.jar 中的数字 14 和 ojdbc6.jar 中的数字 6 b> 指的是为它们编写的 JDK 版本。如果您打开 ojdbc14.jar 的 清单文件,它会显示:Specification-Title: "Oracle JDBC driver classes for use with JDK1.4" 同样,ojdbc6.jar 支持 JDK1 .6 实施。

【解决方案2】:

这是我在experts-exchange找到的一些文字:

错误 14575666

在 12.1 中,SQLNET.ALLOWED_LOGON_VERSION 的默认值 参数已更新为 11。这意味着数据库客户端 使用 11g 之前的 JDBC 瘦驱动程序无法对 12.1 数据库进行身份验证 服务器,除非 SQLNET.ALLOWED_LOGON_VERSION 参数设置为 旧的默认值 8。

这将导致使用 DBCA 创建 10.2.0.5 Oracle RAC 数据库 失败并出现 ORA-28040: No matching authentication protocol 错误 12.1 Oracle ASM 和 Oracle Grid Infrastructure 环境。

解决方法:在 oracle/network/admin/sqlnet.ora 文件。

【讨论】:

  • 仅供参考:这对我有用,不删除 ojdbc14.jar 文件并使用 ojdbc6.jar
  • 是的,在我的情况下,这解决了问题,但发生了另一个问题:用户名/密码无效。顺便说一句,我试图从 oracle jdeveloper 10 连接到 oracle 数据库 12c。所以这就是答案:stackoverflow.com/questions/14476875/… 最终不得不:1) 将 SQLNET.ALLOWED_LOGON_VERSION 更改为 8 2) SQLNET.AUTHENTICATION_SERVICES 为 (NONE) 3) ALTER SYSTEM SET SEC_CASE_SENSITIVE_LOGON = FALSE 4) ALTER USER XX IDENTIFIED BY PW (重新保存现在我们更改了区分大小写的密码)
  • 迟到了,但我也确认了这个修复。我必须设置我的版本 = 8,即使我运行的是 JDBC 11——没有比 8 更新的版本。
  • 我正在使用远程数据库服务器,我无法访问机器,我只能使用 SQL Developer 连接到数据库(没有错误),但我的应用程序(部署在 Tomcat 上)抛出此错误。我已更改本地计算机上的设置,但它无法正常工作。我必须修改服务器机器上的设置吗?

【解决方案3】:

这除了在sqlnet.ora中添加以下内容

SQLNET.ALLOWED_LOGON_VERSION_CLIENT = 8
SQLNET.ALLOWED_LOGON_VERSION_SERVER = 8

如果您收到“ORA-01017:用户名/密码无效;登录被拒绝”错误,则需要重新创建密码。

【讨论】:

  • 如果您收到“ORA-01017:用户名/密码无效;登录被拒绝”错误,那么您需要重新创建密码。这是一个救生员!谢谢

【解决方案4】:

我通过使用 ojdbc8.jar 解决了这个问题。 Oracle 12c 兼容ojdbc8.jar

【讨论】:


【解决方案5】:

我使用的是 eclipse,在尝试了所有其他答案后,它对我不起作用。

最后,对我有用的是将ojdb7.jar 移到构建路径的顶部。当多个 jar 具有冲突的相同类时会发生这种情况。

Project Explorer

  1. 中选择项目
  2. 右击

Project -> Build Path -> Configure Build Path

  1. 转到

Order and Export

  1.  选项卡并选择

ojdbc.jar

  1. 点击按钮

TOP

  1. 将其移至顶部

【讨论】:


【解决方案6】:

除了将以下内容添加到sqlnet.ora

SQLNET.ALLOWED_LOGON_VERSION_CLIENT = 8
SQLNET.ALLOWED_LOGON_VERSION_SERVER = 8

我还在客户端和服务器中添加了以下内容,这解决了我的问题

SQLNET.AUTHENTICATION_SERVICES = (NONE)

另见帖子 ORA-28040: No matching authentication protocol

【讨论】:


【解决方案7】:

非常老的问题,但提供了一些可能对其他人有帮助的附加信息。我也遇到了同样的错误,我将 ojdbc14.jar 与 12.1.0.2 Oracle 数据库一起使用。在 Oracle 官方网页上,此信息列出了哪个版本支持哪些数据库驱动程序。 Here is the link 看来,对于 Oracle 12c 和 Java 7 或 8,正确的版本是 ojdbc7.jar。

在 ojdbc6.jar 中用于 11.2.0.4。

【讨论】:


【解决方案8】:

添加

SQLNET.ALLOWED_LOGON_VERSION_SERVER = 8

是完美的解决方案 sql.ora 目录 ..\product\12.1.0\dbhome_1\NETWORK\ADMIN

【讨论】:


【解决方案9】:

我的初始错误是:ORA-28040: No matching authentication protocol exception

我的数据库版本是 12.2 (Solaris),客户端版本是 11.2 ( windows)。我在服务器和客户端 sqlnet.ora 中都添加了以下内容

SQLNET.ALLOWED_LOGON_VERSION_CLIENT = 8 SQLNET.ALLOWED_LOGON_VERSION_SERVER = 8

连接时,我的用户名和密码无效,因此我在数据库中重新创建了密码(相同的密码),这解决了我的问题。

【讨论】:


【解决方案10】:

虽然在大多数情况下替换 ojdbc 驱动程序 jar 将是解决方案,但我的情况不同。

如果您确定您使用的是正确的 ojdbc 驱动程序。仔细检查您是否真的连接到您认为的数据库。在我的情况下,jdbc 配置(在 Tomcat/conf 中)指向具有不同 Oracle 版本的不同数据库。

【讨论】:


【解决方案11】:

只需安装 ojdbc-full,它包含 12.1.0.1 版本。

【讨论】:

为人:谦逊、激情、博学、审问、慎思、明辨、 笃行
学问:纸上得来终觉浅,绝知此事要躬行
为事:工欲善其事,必先利其器。
态度:道阻且长,行则将至;行而不辍,未来可期
.....................................................................
------- 桃之夭夭,灼灼其华。之子于归,宜其室家。 ---------------
------- 桃之夭夭,有蕡其实。之子于归,宜其家室。 ---------------
------- 桃之夭夭,其叶蓁蓁。之子于归,宜其家人。 ---------------
=====================================================================
* 博客文章部分截图及内容来自于学习的书本及相应培训课程以及网络其他博客,仅做学习讨论之用,不做商业用途。