ora 28041 authentication protocol internal error что делать
ORA-28040: No matching authentication protocol exception
I am trying to connect my grails project to Oracle databse(Oracle 12c) in windows(8) system. However, whenever I run my application I get following exception :
According to internet suggestion I also tried editing my *.ora file but it is not working.
I added following snippet in sqlnet.ora file :
Here i tried assigning (10,11,12) but neither of them is working.
11 Answers 11
I deleted the ojdbc14.jar file and used ojdbc6.jar instead and it worked for me
Here is some text I found at experts-exchange:
In 12.1, the default value for the SQLNET.ALLOWED_LOGON_VERSION parameter has been updated to 11. This means that database clients using pre-11g JDBC thin drivers cannot authenticate to 12.1 database servers unless theSQLNET.ALLOWED_LOGON_VERSION parameter is set to the old default of 8.
This will cause a 10.2.0.5 Oracle RAC database creation using DBCA to fail with the ORA-28040: No matching authentication protocol error in 12.1 Oracle ASM and Oracle Grid Infrastructure environments.
Workaround: Set SQLNET.ALLOWED_LOGON_VERSION=8 in the oracle/network/admin/sqlnet.ora file.
This except for adding the following to sqlnet.ora
If you get «ORA-01017: invalid username/password; logon denied» error, then you need to re-create your password.
ORA-28041 Occurs Attempting to Change an Expired Password through Forms 11.1.2.2 and 12.2 DB (Doc ID 2433453.1)
Last updated on APRIL 28, 2021
Applies to:
Symptoms
When using the Oracle Forms interface to change an expired password, the following error occurs:
ORA-28041: Authentication protocol internal error
The same error happens when attempting to change the password directly through SQLPlus using the SQLPlus in the Forms home (11.1.0.7) against a 12.2.x db.
If using the SQLPlus from the db home (12.2.0.1.0), it works as expected.
This worked until application of the July 2018 PSU DB patch
Cause
To view full details, sign in with your My Oracle Support account.
Don’t have a My Oracle Support account? Click to get started!
My Oracle Support provides customers with access to over a million knowledge articles and a vibrant support community of peers and Oracle experts.
Oracle offers a comprehensive and fully integrated stack of cloud applications and platform services. For more information about Oracle (NYSE:ORCL), visit oracle.com. пїЅ Oracle | Contact and Chat | Support | Communities | Connect with us | |
|
| Legal Notices | Terms of Use
ORA-28040: Нет подходящего протокола аутентификации: обновление Oracle 12c
Мы перевели нашу базу данных Oracle на 12c с 11g. У нас есть устаревшее приложение, работающее на Java 1.5 и использующее ojdbc14.jar.
Наше приложение не может создать соединение с ошибкой базы данных, говоря:
Я хотел ответить ORA-28040: нет исключения соответствующего протокола аутентификации, и попытался обновить мой ojdbc14.jar до ojdbc6.jar.
Теперь у меня другое сообщение об ошибке:
Не уверен, что именно мы должны сделать, чтобы приложение заработало.
8 ответов
Недавно у меня была такая же ошибка с двумя разными приложениями:
Второе решение, упомянутое в тот же пост, на который вы ссылались, сработал для нас.
Обходной путь: установите SQLNET.ALLOWED_LOGON_VERSION = 8 в файле oracle / network / admin / sqlnet.ora.
Мы работали с нашими администраторами баз данных, чтобы установить указанную выше опцию в sqlnet.ora на сервере базы данных. Это решило нашу проблему. Надеюсь, это кому-то поможет.
У нас была эта ошибка, когда мы перешли с 11g на 12c, я могу получить правильный ответ через tnsping «servername» (это первый шаг, который нам нужно проверить с помощью cmd). После этого мы понимаем, что сервер базы данных может обрабатывать только 64-битный запрос (в моем случае я использовал WinSQL, и он всегда проверял 32-битный). Итак, чтобы исправить это, попросите вашего администратора запустить сервер для 32-битного запроса, или вы можете перейти к разработчику SQL, который работает для меня.
Основная проблема заключается в том, что тонкий клиент JDBC 10g использует протокол аутентификации SHA-1, этот протокол не разрешен в 12c, поэтому он выдает ошибку.
И я добавил следующее:
Поэтому мне пришлось остановиться и запустить слушателя:
Наконец, я перезапускаю базу данных.
Это должно быть только временное решение
Я получал ORA-28040 в Sqldeveloper (версия 1.5.5) для всех подключений. Я установил SQLNET.ALLOWED_LOGON_VERSION = 8, но ошибка не исчезла. Затем я включил «Использовать драйвер OCI / Thick» в меню «Инструменты-> Настройки-> База данных-> Дополнительные параметры». Это сработало.
У меня возникла проблема с подключением к БД после перехода на ORACLE 12c. Ошибка была: java.sql.SQLException: ORA-28040: Нет подходящего протокола аутентификации. После установки этого параметра SQLNET.ALLOWED_LOGON_VERSION = 8 проблема была решена.
ORA-28040: нет соответствующего исключения протокола аутентификации
Я пытаюсь подключить проект grails к Oracle databse (Oracle 12c) в системе windows(8). Однако всякий раз, когда я запускаю свое приложение, я получаю следующее исключение:
В соответствии с интернет-предложением я также попытался отредактировать мой *.Ора!—5—> файл, но он не работает.
здесь я попытался назначить (10,11,12), но ни один из них не работает.
7 ответов
Я удалил ojdbc14.Джар файл и используется ojdbc6.Джар вместо этого, и это сработало для меня
вот текст, который я нашел в эксперты-обмен:
в 12.1, значение по умолчанию для SQLNET.ALLOWED_LOGON_VERSION параметр обновлен до 11. Это означает, что клиенты базы данных использование тонких драйверов JDBC pre-11g не может аутентифицироваться в базе данных 12.1 серверы, кроме theSQLNET.Параметр ALLOWED_LOGON_VERSION имеет значение старое значение по умолчанию 8.
это вызовет 10.2.0.5 Oracle RAC создание базы данных с помощью DBCA to сбой с ORA-28040: нет ошибки протокола проверки подлинности в 12.1 среды инфраструктуры Oracle ASM и Oracle Grid.
обходной путь: установите SQLNET.ALLOWED_LOGON_VERSION=8 в оракул/сети/администратор/заменить sqlnet.файл ora.
за исключением добавления следующего в заменить sqlnet.Ора!—4—>
Я также добавил следующее как к клиенту, так и к серверу, что разрешило мою проблему
я использовал eclipse, и после попытки всех других ответов это не сработало для меня. В конце концов, то, что сработало для меня, было перемещение ojdb7.jar в верхней части пути сборки. Это происходит, когда несколько jars имеют конфликтующие же классы.
How to Resolve ORA-28040: No matching authentication protocol
ORA-28040: No matching authentication protocol
When I tried to connect to a 12.1 database from an Oracle client 9.2, it failed with ORA-28040: No matching authentication protocol.
I knew there could be some interoperability problems between versions, especially when the version gap is big like this case, Oracle 9i client connect to 12c or 18c database. But I didn’t expect ORA-28040 to show up.
Same error may occur while you’re using old Oracle JDBC drivers, say ojdbc14.jar or below, to connect a 12c or 18c database. I’ll talk more about Oracle JDBC driver with ORA-28040 later in the post.
Let’s see the content of ORA-28040.
ORA-28040: No matching authentication protocol
The administrator should set the values of the SQLNET.ALLOWED_LOGON_VERSION_SERVER and SQLNET.ALLOWED_LOGON_VERSION_CLIENT parameters, on both the client and on the server, to values that match the minimum version software supported in the system. This error ORA-28040 is also raised when the client is authenticating to a user account which was created without a verifier suitable for the client software version. In this situation, that account’s password must be reset, in order for the required verifier to be generated and allow authentication to proceed successfully.
Server or Clients?
According to the above explanation about ORA-28040, we should provide compatible authentication protocol for either client or server to accept. But now the question is: Should we change server configuration or just upgrade Oracle clients?
In fact, it depends on what privileges you have. For database administrators, you can change the server configuration to solve all users’ problems at once. As for developers, fixing or upgrading Oracle clients is the only choice you can do, so as to match authenticated protocol of Oracle 12c databases.
Server Side Solutions to ORA-28040
If you have the right to change the network configuration on the server side, then you have chances to solve ORA-28040 for all users in minutes. As a matter of fact, most developers do not have the right.
Scenario 1: New Database is Acting as a Server
Oracle 9i Clients to 12c Server
When your users refused to upgrade their old clients to connect a higher version of database, say 12c, ORA-28040 would become a frequent and typical error in your daily job.
Said clients could be an Oracle 9i server which acts as a client to connect to an Oracle 12c database server like below. ORA-28040 was thrown by sqlplus as usual:
ORA-28040 SQL*Plus Connect from 9i to 12c
After searching for some other solutions, I found an Oracle documentation about «Parameters for the sqlnet.ora File» is very helpful to explain ORA-28040. In which, it explains in what situation we should use SQLNET.ALLOWED_LOGON_VERSION_SERVER to be compatible with both ends of authentication protocol.
To set the minimum authentication protocol allowed 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 client version does not meet or exceed the value defined by this parameter, then authentication fails with an ORA-28040: No matching authentication protocol error or an ORA-03134: Connections to this server version are no longer supported error.
Here is my solution to ORA-28040: Adding SQLNET.ALLOWED_LOGON_VERSION_SERVER=8 to sqlnet.ora in 12.1 database server (not the old client).
Please note that, you should use sqlnet.ora at database-level, not grid-level if you’re in a RAC environment according to MOS Doc ID 562589.1. And I have confirmed that.
As for taking effect, you don’t have to restart listener, the new incoming connections will apply the new values. Just make sure the setting is correct.
This time, our connections have no ORA-28040 shown up. Moreover, we can migrate data from 9i to 12c over a database link.
Scenario 2: New Database is Acting as a Client
Oracle 12c Clients to 9i Server
From the opposite direction, if you want to connect from a 12.1 to a 9.2 database, say database link connections, you should also set: SQLNET.ALLOWED_LOGON_VERSION_CLIENT=8
in sqlnet.ora to prevent unmatched authenticated protocol error ORA-28040.
For your reference, I quote some text about SQLNET.ALLOWED_LOGON_VERSION_CLIENT below. Same reason here for ORA-28040, it’s a compatible issue:
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.
Further reading: DB Link, How and Why
The connections from 9i to 12c can be worked around by the solutions provided in this post. In contrast, 12c to 9i usually fails due to ORA-03134, not ORA-28040.
ORA-03134: Connections to this server version are no longer supported.
Client Side Solutions to ORA-28040
Developers who don’t act as DBA may have no right to change SQLNET.ORA on the server. Therefore, changing or upgrading their own clients is probably the only solution to ORA-28040: No matching authentication protocol. From now on, we begin to focus on clients. Especially for those who are using Oracle JDBC drivers.
Oracle JDBC Driver
Since Oracle 12.1 database claims that it is compatible with ojdbc6.jar for JDK 6 or ojdbc7.jar for JDK 7, so ojdbc14.jar for JDK 1.4 or below is no longer matching for clients to connect through the authenticated protocol of a 12.1 database. That’s why you see ORA-28040 in java.sql.SQLException error stack.
SQL Developer
If you were using old SQL developer like this, you will see ORA-28040 whenever you connect to a 12.1 database.
Basically, SQL developer is a self-contained software, you can unzip the software and start to use it. That is to say, SQL developer usually uses its own JDK including JDBC driver to run itself.
Solution
Even though I see no chance to replace Oracle JDBC driver in the same old SQL developer, you can always download the newest SQL developer with newer Oracle JDBC driver from Oracle website. So as to solve ORA-28040.
Don’t worry about the connection settings, the new SQL developer will prompt you the migration option in your first time open.
PL/SQL Developer
PL/SQL developer is an install-based software. Generally, it leverages your native Oracle client to find necessary configuration file. Furthermore, it uses Oracle Call Interface (OCI) of your native Oracle client to connect Oracle databases.
That is, if your native Oracle client is old enough, you will get ORA-28040 like this:
ORA-28040 in PL/SQL Developer
Solution
The solution to ORA-28040 in PL/SQL developer is to replace the old OCI with a newer one. First of all, you have to download an Oracle instant client which contains corresponding OCI library. The proper version should be at least 11g.
Please make sure that at least Microsoft Visual Studio 2005 Redistributable has been installed in your machine before using Oracle instant client 11.2.
Step 1: Open Preferences Dialog
Step 2: Go to «Connection» Section
Step 3: Change OCI Library
Point to new unzipped instant client’s OCI. Please note that, you have to provide the whole absolute path including the filename, not just only the directory.
Step 4: Test the Connection
Restart PL/SQL developer and logon an Oracle 12c database.
That’s how we fight against ORA-28040 in PL/SQL Developer.
Toad for Oracle
Toad for Oracle is also an installer-based software that is mainly used for database administration and sometimes for development. Same error ORA-28040 may occur in Toad for Oracle, if the underlying network substrate is the same old Oracle 9.2.
As we can see, the tool utilized the underlying Oracle client 9.2 to connect a 12c database. That’s why we saw ORA-28040 alert in Toad for Oracle 9.7.
Solution
The solution to ORA-28040 in Toad for Oracle is pretty straightforward, just install a newer Oracle client, at least 11g for Toad to utilize of.
Please note that, Oracle client and Oracle instant client are different, the former is an install-based and full-fledged software, the later is a portable and partial-functioned package.
In this case, I downloaded and installed Oracle client 11.2.0.1 for windows 32-bit from Oracle website. Consequently, the newly installed Oracle client creates some registry parameters like ORACLE_HOME and TNS_ADMIN as environment variables for tools like Toad to recognize. So that, the restarted Toad will automatically detect the new Oracle client for us.
New Oracle Client Detected by Toad for Oracle
As we can see, the new Oracle client is found by Toad and ready to be used to match the authentication protocol of an Oracle 12c database.
If the new Oracle client is not detected and selected, you should use the drop-down list to choose the right one to use. Nevertheless, if there’s no new Oracle client in the drop-down list, you should check required registry parameters of the new Oracle client, such as ORACLE_HOME and TNS_ADMIN in Windows.
SQuirreL SQL Client
SQuirreL SQL Client is a pure Java-based software that can access databases given proper JDBC drivers. In this tool, I used ojdbc14.jar to connect a 12c database, the error is the same, ORA-28040: No matching authentication protocol.
Solution
First of all, you have to choose and download a proper JDBC driver that matches the authenticated protocol of 12c database at Oracle JDBC and UCP Downloads page. For 12c databases, either ojdbc6.jar or ojdbc7.jar Oracle JDBC driver is proper to solve ORA-28040.
Step 1: Delete old driver
Step 2: Add a new driver
Click on Add button.
Select ojdbc7.jar in the file browser
The new driver is selected as shown below.
Step 3: Test the connection
After replacing the old Oracle JDBC driver with a newer one, we can now test the connection again.
The connection is successful, no longer ORA-28040.
Oralce Client 11g Connects to Database 19c
Recently, we received some feedback from users who want to connect to database 19c from client 11g, but failed with ORA-28040.
After some investigations, we found only one release of 11g client can reach database 19c. It’s Oracle client 11.2.0.4 which is the last release of 11g.
Either Oracle client 11.2.0.4 or instant client 11.2.0.4 is able to reach Oracle database 19c.