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

Oracle ORA-28040:没有匹配的身份验证协议,oracle,jdbc,Oracle,Jdbc,即使遵循以下设置,我仍面临此问题 将ojdbc14.jar替换为ojdbc6.jar[也尝试了ojdbc5.jar] 在SQLNET.ora中添加了“SQLNET.ALLOWED\u LOGON\u VERSION\u SERVER=8” 文件[在网络/管理文件夹下] 这是在将DB从11g升级到12c之后发生的。首先,ojdbc驱动程序版本之间的差异取决于您使用的驱动程序的JDK版本。 因此,ojbdc14适用于jdk1.4版,ojdbc5适用于jdk1.5版,依此类推 由于我的环境使用的是JD

即使遵循以下设置,我仍面临此问题

  • ojdbc14.jar
    替换为
    ojdbc6.jar
    [也尝试了
    ojdbc5.jar
    ]

  • 在SQLNET.ora中添加了“
    SQLNET.ALLOWED\u LOGON\u VERSION\u SERVER=8
    ” 文件[在网络/管理文件夹下]


  • 这是在将DB从11g升级到12c之后发生的。

    首先,ojdbc驱动程序版本之间的差异取决于您使用的驱动程序的JDK版本。 因此,
    ojbdc14
    适用于jdk1.4版,
    ojdbc5
    适用于jdk1.5版,依此类推

    由于我的环境使用的是JDK1.7,所以我目前正在使用带有12c数据库版本的
    ojdbc7.jar
    ,所以请先升级它

    话虽如此,在for Oracle 12c发布页面中,您可以阅读:

    目的

    设置客户端允许的最小身份验证协议,以及 当服务器充当客户端时,例如通过 连接到Oracle数据库实例时的数据库链接

    使用说明

    参数名称中的术语版本指的是 身份验证协议,而不是Oracle数据库版本

    如果版本不符合或超过此定义的值 参数,则身份验证失败,并显示ORA-28040:不匹配 身份验证协议错误

    此属性的默认值为11

    允许值为8、10、11、12和12a

    建议值为12。试试这个


    此外,还有一个有用且有趣的解决方案

    JDBC驱动程序同时具有Java版本和Oracle版本。这些版本通常是相互关联的,但ojdbc14.jar可能支持比ojdbc6.jar更高版本的Oracle。确保您使用的是最新版本的ojdbc6.jar

    运行此命令以查看为哪个版本的Oracle生成驱动程序:

    >java -jar ojdbc6.jar -getversion
    Oracle 11.2.0.3.0 JDBC 4.0 compiled with JDK6 on Thu_Jun_28_00:38:25_PDT_2012
    #Default Connection Properties Resource
    #Mon Dec 21 12:38:41 CST 2015
    
    对于SQLNET.ORA更改,为了安全起见,应该重新启动侦听器和数据库。这听起来很极端,但有一些参数可以改变


    还要确保您正在修改所有相关的SQLNET.ORA文件。如果数据库的Oracle home与侦听器的Oracle home不同,则应同时修改两者。

    应使用最新的JDBC精简驱动程序(12.1.0.2)和JDK8。通过此配置,您的驱动程序将支持最新版本的数据库密码验证器,您的问题应该得到解决

    ORA-28040: No matching authentication protocol
    
    我在尝试连接一个网络时遇到了类似的问题

    32位Oracle11g客户端到64位Oracle12c服务器

    然后,我继续将以下内容添加到sqlnet.ora

    SQLNET.ALLOWED_LOGON_VERSION_CLIENT = 8
    SQLNET.ALLOWED_LOGON_VERSION_SERVER = 8
    
    然后我遇到了以下错误

    ORA-01017: invalid username/password: logon denied
    
    将以下内容添加到客户机sqlnet.ora和服务器中,我能够将旧版本的Toad和PL/SQL连接到新的12c服务器

    SQLNET.AUTHENTICATION_SERVICES = (NONE)
    

    谢谢你回答Abarisone先生的问题。如前所述,我已经用ojdbc7.jar替换了现有的jar,并更新了sqlnet.ora文件以使用“sqlnet.ALLOWED\u LOGON\u VERSION=12”。已编辑位于“product\11.2.0\client\u 1\network\admin”的sqlnet.ora。然而,我仍然面临着这个问题。在这方面你能帮我吗?