ORA-28040: No matching authentication protocol : Oracle 12c Upgrade

56,052

Solution 1

I had the same error with 2 different applications recently:

  1. a Java 7 app on Tomcat 7 using odbc6.jar with Oracle 12 c database.
  2. a legacy ASP application with Oracle 12 c database.

The second solution mentioned in the same post you referred to - worked well for us.

Workaround: Set SQLNET.ALLOWED_LOGON_VERSION=8 in the oracle/network/admin/sqlnet.ora file.

We worked with our DBAs to set the above option on the sqlnet.ora on the database server. This resolved our issue. I hope it helps someone.

Solution 2

I faced the same error.

Got it resolved by without removing ojdbc14.jar.

step 1 : set SQLNET.ALLOWED_LOGON_VERSION=8

Step 2 : change

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

to

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

It will works!

Solution 3

After migrating from Oracle 11 to Oracle 12. In my case lib directory had both OJDBC14.jar & OJDBC8.jar. After removing older OJDBC14.jar it worked for me.

Share:
56,052
Tushar
Author by

Tushar

Software Developer at Ingenu (San Diego) pursuing Masters in Computer Science from San Diego State University.

Updated on February 18, 2020

Comments

  • Tushar
    Tushar about 4 years

    We have migrated our Oracle database to 12c from 11g. We have a legacy application running in Java 1.5 and using ojdbc14.jar.

    Our application is not able to create connection to database error saying :

    java.sql.SQLException: ORA-28040: No matching authentication protocol
    

    I reffered to answer ORA-28040: No matching authentication protocol exception, and tried to upgrade my ojdbc14.jar to ojdbc6.jar.

    I now have a different error message saying :

      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 build file :

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

    Not sure what exactly we should do to get the application working.