ORA-28040:没有匹配的authentication协议例外

我正在尝试将我的grails项目连接到Windows(8)系统中的Oracle数据库( Oracle 12c )。 但是,每当我运行我的应用程序,我得到以下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 

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

我在sqlnet.ora文件中添加了以下代码片段:

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

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

任何人都可以帮我这个吗?

我删除了ojdbc14.jar文件,而是使用ojdbc6.jar ,它为我工作

编辑

从@JamesTobin:更改为ojdbc6.jarojdbc7.jar仍然失败,因为我一直在不断设置: oracle.jdbc.thinLogonCapability"="o3" ,你不再需要对付oracle 12c

这里是我在专家交stream中find的一些文字:

错误14575666

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

这将导致使用DBCA创build的10.2.0.5 Oracle RAC数据库与ORA-28040一起失败:在12.1 Oracle ASM和Oracle Grid Infrastructure环境中没有匹配的身份validation协议错误。

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

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

 SQLNET.ALLOWED_LOGON_VERSION_CLIENT = 8 SQLNET.ALLOWED_LOGON_VERSION_SERVER = 8 

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

 SQLNET.AUTHENTICATION_SERVICES = (NONE) 

另请参阅后ORA-28040:没有匹配的身份validation协议

添加

 SQLNET.ALLOWED_LOGON_VERSION_SERVER = 8 

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