105

I am trying to connect my grails project to Oracle databse(Oracle 12c) in windows(8) system. However, whenever I run my application I get following exception :

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

According to internet suggestion I also tried editing my *.ora file but it is not working.

I added following snippet in sqlnet.ora file :

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

Here i tried assigning (10,11,12) but neither of them is working.

Can anyone please help me with this ?

4

11 回答 11

165

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

于 2014-10-28T09:00:43.890 回答
60

这是我在专家交流中找到的一些文字:

错误 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:在 12.1 Oracle ASM 和 Oracle Grid Infrastructure 环境中没有匹配的身份验证协议错误。

解决方法:在 oracle/network/admin/sqlnet.ora 文件中设置 SQLNET.ALLOWED_LOGON_VERSION=8。

于 2014-10-29T12:06:18.517 回答
9

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

SQLNET.ALLOWED_LOGON_VERSION_CLIENT = 8
SQLNET.ALLOWED_LOGON_VERSION_SERVER = 8

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

于 2019-03-01T08:45:58.650 回答
7

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

于 2018-06-22T05:14:42.380 回答
5

我正在使用eclipse,在尝试了所有其他答案后,它对我不起作用。最后,对我有用的是ojdb7.jar将构建路径中的顶部移到顶部。当多个 jar 具有冲突的相同类时,就会发生这种情况。

  1. 选择项目在Project Explorer
  2. 右键单击Project -> Build Path -> Configure Build Path
  3. 转到Order and Export选项卡并选择ojdbc.jar
  4. 单击按钮TOP将其移至顶部
于 2018-05-14T09:56:44.407 回答
3

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

SQLNET.ALLOWED_LOGON_VERSION_CLIENT = 8
SQLNET.ALLOWED_LOGON_VERSION_SERVER = 8

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

SQLNET.AUTHENTICATION_SERVICES = (NONE)

另请参阅帖子 ORA-28040:没有匹配的身份验证协议

于 2017-04-12T06:53:47.123 回答
3

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

在 ojdbc6.jar 中用于 11.2.0.4。

于 2020-07-31T17:03:38.623 回答
1

我的初始错误是:ORA-28040:没有匹配的身份验证协议异常

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

SQLNET.ALLOWED_LOGON_VERSION_CLIENT = 8 SQLNET.ALLOWED_LOGON_VERSION_SERVER = 8

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

于 2019-12-18T04:44:57.157 回答
1

添加

SQLNET.ALLOWED_LOGON_VERSION_SERVER = 8

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

于 2017-08-04T13:43:28.250 回答
0

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

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

于 2020-05-05T14:17:25.577 回答
-1

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

于 2018-11-20T21:57:26.520 回答