ORA-28040: No matching authentication protocol

2019-05-11 03:32发布

问题:

I am facing this issue even after following the below settings.

  1. Replacing ojdbc14.jar with ojdbc6.jar[also tried ojdbc5.jar]

  2. Added "SQLNET.ALLOWED_LOGON_VERSION_SERVER=8" to sqlnet.ora file[under network/admin folder].

This is happening after upgrading the DB from 11g to 12c.

回答1:

JDBC drivers have both a Java version and an Oracle version. The versions are usually correlated, but it's possible for an ojdbc14.jar to support a later version of Oracle than a ojdbc6.jar. Make sure you are using the latest version of ojdbc6.jar.

Run this command to see which version of Oracle the driver was built for:

>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

For SQLNET.ORA changes, to be safe you should restart both the listener and the database. This sounds extreme, but there are some parameters that require restarting the database.

Also make sure that you are modifying all relevant SQLNET.ORA files. If the database's Oracle home is different than the listener's Oracle home you should modify both.



回答2:

ORA-28040: No matching authentication protocol

I faced a similar issue when trying to connect a

32-bit Oracle 11g Client to a 64-bit Oracle 12c Server

I then proceeded to add the following to sqlnet.ora

SQLNET.ALLOWED_LOGON_VERSION_CLIENT = 8
SQLNET.ALLOWED_LOGON_VERSION_SERVER = 8

I then experienced the following error

ORA-01017: invalid username/password: logon denied

Adding the following to the Client sqlnet.ora as well as the Server, I was able to connect an old version of Toad and PL/SQL to the new 12c Server.

SQLNET.AUTHENTICATION_SERVICES = (NONE)


回答3:

First of all the difference between ojdbc driver's versions depends on the version of the JDK you use drivers with. So ojbdc14 is suitable for JDK version 1.4, ojdbc5 for JDK 1.5, and so on.

I'm currently using ojdbc7.jar with a 12c database version since my environment uses a JDK 1.7, so upgrade this first.

Having said that, in the Parameters for the sqlnet.ora File for Oracle 12c release page you can read:

Purpose

To set the minimum authentication protocol allowed for clients, and when a server is acting as a client, such as connecting over a database link, when connecting to Oracle Database instances.

Usage Notes

The term VERSION in the parameter name refers to the version of the authentication protocol, not the Oracle Database release.

If the version does not meet or exceed the value defined by this parameter, then authentication fails with an ORA-28040: No matching authentication protocol error.

The default for this property is 11.

Allowed values are 8,10,11,12 and 12a.

The recommended value is 12. Try this out.

Moreover there is a useful and interesting solution Database Administrators Stack Exchange



回答4:

You should use the latest JDBC thin driver (12.1.0.2) and JDK8. With this configuration your driver will support the latest version of the database password verifier and your issue should be resolved.



标签: oracle jdbc