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

时间:2014-06-07 18:00:46

标签: oracle grails oracle12c

我正在尝试将我的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 文件中添加了以下代码段:

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

这里我尝试分配(10,11,12),但它们都没有工作。

有人可以帮我解决这个问题吗?

11 个答案:

答案 0 :(得分:115)

我删除了 ojdbc14.jar 文件,并使用 ojdbc6.jar 代替它,它对我有用< / p>

答案 1 :(得分:49)

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

  

错误14575666

     

在12.1中,SQLNET.ALLOWED_LOGON_VERSION的默认值   参数已更新为11.这表示数据库客户端   使用pre-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环境。

     

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

答案 2 :(得分:3)

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

之外
SQLNET.ALLOWED_LOGON_VERSION_CLIENT = 8
SQLNET.ALLOWED_LOGON_VERSION_SERVER = 8

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

SQLNET.AUTHENTICATION_SERVICES = (NONE)

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

答案 3 :(得分:3)

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

答案 4 :(得分:1)

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

ojdbc6.jar中的11.2.0.4。

答案 5 :(得分:0)

添加

SQLNET.ALLOWED_LOGON_VERSION_SERVER = 8

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

答案 6 :(得分:0)

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

  
      
  1. Project Explorer
  2. 中选择项目   
  3. 右键点击Project -> Build Path -> Configure Build Path
  4.   
  5. 转到Order and Export标签,然后选择ojdbc.jar
  6.   
  7. 点击按钮TOP将其移至顶部
  8.   

答案 7 :(得分:0)

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

答案 8 :(得分:0)

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

SQLNET.ALLOWED_LOGON_VERSION_CLIENT = 8
SQLNET.ALLOWED_LOGON_VERSION_SERVER = 8

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

答案 9 :(得分:0)

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

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

SQLNET.ALLOWED_LOGON_VERSION_CLIENT = 8 SQLNET.ALLOWED_LOGON_VERSION_SERVER = 8

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

答案 10 :(得分:0)

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

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