Oracle11g ORA-28040:没有匹配的身份验证协议:Oracle 12c升级

Oracle11g ORA-28040:没有匹配的身份验证协议:Oracle 12c升级,oracle11g,struts-1,oracle12c,ojdbc,java-5,Oracle11g,Struts 1,Oracle12c,Ojdbc,Java 5,我们已经将Oracle数据库从11g迁移到12c。 我们有一个运行在Java1.5中并使用ojdbc14.jar的遗留应用程序 我们的应用程序无法创建到数据库的连接,错误为: java.sql.SQLException: ORA-28040: No matching authentication protocol 我参考了答案,并尝试将我的ojdbc14.jar升级到ojdbc6.jar 我现在有一条不同的错误消息说: error: OracleCallableStatement is n

我们已经将Oracle数据库从11g迁移到12c。 我们有一个运行在Java1.5中并使用ojdbc14.jar的遗留应用程序

我们的应用程序无法创建到数据库的连接,错误为:

java.sql.SQLException: ORA-28040: No matching authentication protocol
我参考了答案,并尝试将我的ojdbc14.jar升级到ojdbc6.jar

我现在有一条不同的错误消息说:

  error: OracleCallableStatement is not public in oracle.jdbc.driver; cannot be accessed from outside package
import oracle.jdbc.driver.OracleCallableStatement;
                          ^
error: OracleTypes is not public in oracle.jdbc.driver; cannot be accessed from outside package
            cstmt.registerOutParameter(3,oracle.jdbc.driver.OracleTypes.CURSOR);
                                           ^
Ant生成文件:

<javac srcdir="${src}" destdir="${classes}" source="1.5" target="1.5">
            <classpath refid="cpath" />
</javac>


不确定我们应该做什么才能让应用程序正常工作。

我最近在两个不同的应用程序中遇到了相同的错误:

  • Tomcat7上的Java7应用程序,使用odbc6.jar和Oracle12c数据库
  • 带有Oracle 12 c数据库的旧版ASP应用程序
  • 报告中提到的第二种解决方案 -这对我们很有效

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


    我们与DBA一起在数据库服务器的sqlnet.ora上设置了上述选项。这解决了我们的问题。我希望它能帮助别人。

    迁移到ORACLE 12c后,我在连接数据库时遇到问题。 错误是:java.sql.SQLException:ORA-28040:没有匹配的身份验证协议。 设置此参数后,SQLNET.ALLOWED\u LOGON\u VERSION=8已解决此问题


    非常感谢

    如果您要将应用程序迁移到ojdbc6,一个可能的原因是您的旧类(与旧ojdbc版本兼容)可能无法获得类OracleTypes。最简单的方法是从import oracle.jdbc.driver.OracleTypes更改import语句;导入oracle.jdbc.OracleTypes从您遇到错误的类中。

    我也遇到了同样的错误

    通过在不删除ojdbc14.jar的情况下解决了此问题

    步骤1:
    设置SQLNET.ALLOWED\u LOGON\u VERSION=8

    第二步:改变

    Connection conn = (Connection) DriverManager.getConnection("jdbc:oracle:thin:@server:port:sid", "username", "passwrd");
    


    它会起作用的

    从Oracle 11迁移到Oracle 12后。 在我的例子中,lib目录既有
    OJDBC14.jar
    &
    OJDBC8.jar

    删除旧的OJDBC14.jar后,它对我有效。我在Sqldeveloper(1.5.5版)中获得了所有连接的ORA-28040。我将SQLNET.ALLOWED\u LOGON\u VERSION设置为8,但错误没有消失。然后我在工具->首选项->数据库->高级参数下启用了“使用OCI/厚驱动程序”。这就成功了

    主要问题是10g的JDBC瘦客户端使用 SHA-1身份验证协议,此协议在 12c,所以它给出了错误

    在我的Oracle中,我找不到
    sqlnet.ora
    文件,因此我必须使用以下命令创建它:

    vi $ORACLE_HOME/network/admin/sqlnet.ora
    
    我补充说:

    SQLNET.ALLOWED_LOGON_VERSION=10
    SQLNET.ALLOWED_LOGON_VERSION_CLIENT=10
    SQLNET.ALLOWED_LOGON_VERSION_SERVER=10
    SQLNET.ALLOWED_LOGON_VERSION=8
    SQLNET.ALLOWED_LOGON_VERSION_CLIENT=8
    SQLNET.ALLOWED_LOGON_VERSION_SERVER=8
    SQLNET.AUTHENTICATION_SERVICES = (NONE)
    
    所以我不得不停下来,启动听众:

    lsnrctl stop
    lsnrctl start
    
    最后,我重新启动数据库

    这应该只是一个解决办法


    当我们从11g移动到12c时出现了这个错误,我能够通过tnsping“servername”得到正确的响应(这是我们需要通过cmd检查的第一步)。 在此之后,我们意识到数据库服务器只能处理64位请求(在我的例子中,我使用的是WinSQL,它总是检查32位)。 所以要纠正这一点,请让您的管理员也向eanble服务器请求32位请求,或者您可以转到为我工作的SQL developer

    lsnrctl stop
    lsnrctl start