我正在尝试将我的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),但它们都没有工作。
有人可以帮我解决这个问题吗?
答案 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)
答案 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
移动到构建路径的顶部。当多个罐子具有冲突的相同类别时会发生这种情况。
- 在
中选择项目Project Explorer
- 右键点击
Project -> Build Path -> Configure Build Path
- 转到
Order and Export
标签,然后选择ojdbc.jar
- 点击按钮
醇>TOP
将其移至顶部
答案 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版本的其他数据库。