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

Oracle ORA-28040:没有匹配的身份验证协议异常,oracle,oracle12c,Oracle,Oracle12c,我正在尝试将我的grails项目连接到windows(8)系统中的Oracle数据库(Oracle12c)。但是,每当我运行应用程序时,都会出现以下异常: Caused by: org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (ORA-28040: No matching authentication protocol) Caused by: java.sql.SQLE

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

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),但它们都不起作用


有人能帮我吗?

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

以下是我在以下网站上找到的一些文本:

错误14575666

在12.1中,SQLNET.ALLOWED\u LOGON\u版本的默认值 参数已更新为11。这意味着数据库客户端 使用11g之前的JDBC精简驱动程序无法对12.1数据库进行身份验证 除非将sqlnet.ALLOWED\u LOGON\u VERSION参数设置为 旧的默认值为8

这将导致使用DBCA创建10.2.0.5 Oracle RAC数据库 ORA-28040失败:中没有匹配的身份验证协议错误 12.1 Oracle ASM和Oracle网格基础架构环境

解决方法:在中设置SQLNET.ALLOWED\u LOGON\u VERSION=8 oracle/network/admin/sqlnet.ora文件


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

SQLNET.ALLOWED_LOGON_VERSION_CLIENT = 8
SQLNET.ALLOWED_LOGON_VERSION_SERVER = 8
我还向客户端和服务器添加了以下内容,解决了我的问题

SQLNET.AUTHENTICATION_SERVICES = (NONE)
另见帖子

添加

SQLNET.ALLOWED_LOGON_VERSION_SERVER = 8
这是一个完美的解决方案 sql.ora目录
..\product\12.1.0\dbhome\u 1\NETWORK\ADMIN

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

  • 在项目浏览器中选择项目
  • 右键单击
    Project->Build Path->Configure Build Path
  • 转到
    Order and Export
    选项卡并选择
    ojdbc.jar
  • 单击按钮
    TOP
    将其移动到顶部

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

    只需安装包含12.1.0.1版本的ojdbc full即可。

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

    SQLNET.ALLOWED_LOGON_VERSION_CLIENT = 8
    SQLNET.ALLOWED_LOGON_VERSION_SERVER = 8
    

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

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

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

    SQLNET.ALLOWED_LOGON_VERSION_CLIENT = 8
    SQLNET.ALLOWED_LOGON_VERSION_SERVER = 8
    
    SQLNET.ALLOWED\u LOGON\u VERSION\u CLIENT=8 SQLNET.ALLOWED\u LOGON\u VERSION\u SERVER=8


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

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


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

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


    在ojdbc6.jar中,它适用于11.2.0.4。

    在尝试从pentaho Ketter连接Oracle 12c时遇到相同的问题。删除了ojdbc14.jar,它可以完美地工作!至少简单地解释一下为什么这应该是很方便的。对我来说,更改为ojdbc6.jar或ojdbc7.jar仍然失败,因为我一直在设置:
    oracle.jdbc.thinLogonCapability“=”o3“
    您不再需要对oracle 12c执行此操作。希望它能帮助其他人在删除ojdbc14.jar并使用ojdbc6后工作完美。jar@YuriyKravetsojdbc14.jar中的数字14和ojdbc6.jar中的数字6表示编写它们的JDK版本。如果打开ojdbc14.jar的清单文件,它会显示:规范标题:“用于JDK1.4的Oracle JDBC驱动程序类”类似地,ojdbc6.jar支持JDK1.6实现。仅供参考:这对我来说很有效,没有删除ojdbc14.jar文件,而是使用ojdbc6.jar。是的,在我的例子中,这解决了问题,但出现了另一个问题:用户名/密码无效。顺便说一句,我试图从oracle jdeveloper 10连接到oracle数据库12c。这就是答案:最后必须:1)将SQLNET.ALLOWED\u LOGON\u版本更改为8 2)SQLNET.AUTHENTICATION\u服务更改为(无)3)更改系统设置SEC\u CASE\u SENSITIVE\u LOGON=FALSE 4)更改PW标识的用户XX(由于我们更改了区分大小写,所以重新保存密码),但我也确认了此修复。即使我运行的是JDBC 11,我也必须将我的版本设置为8——没有比8更新的版本可以工作。我使用的是远程数据库服务器,我没有访问机器的权限,我可以使用SQL Developer连接到数据库(没有错误),但我的应用程序(部署在Tomcat上)抛出了此错误。我已经更改了本地机器的设置,它不工作。是否必须修改服务器计算机上的设置?如果出现“ORA-01017:无效用户名/密码;拒绝登录”错误,则需要重新创建密码。这是一个救命恩人!!非常感谢。