March 1, 2019
You can get ” ORA-28040: No matching authentication protocol ” error because of Oracle Client incompatibility when you upgrade Oracle database from 11g to 12c or Oracle 18c, 19c,
ORA-28040: No matching authentication protocol 19c
If you get ORA-28040 error When you connect to Oracle 19c database then change your sqlnet.ora file like below. Add these two lines to the sqlnet.ora
SQLNET.ALLOWED_LOGON_VERSION_SERVER=8
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=8
[[email protected] ~]$ ps -ef | grep smon oracle 25167 17807 0 11:56 pts/0 00:00:00 grep --color=auto smon oracle 28385 1 0 10:31 ? 00:00:00 ora_smon_DEVECI19C [[email protected] ~]$ [[email protected] ~]$ [[email protected] ~]$ cd $ORACLE_HOME [[email protected] install]$ cd network/admin/ [[email protected] admin]$ [[email protected] admin]$ cat sqlnet.ora # sqlnet.ora Network Configuration File: /oradata/install/network/admin/sqlnet.ora # Generated by Oracle configuration tools. NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT) SQLNET.ALLOWED_LOGON_VERSION_SERVER=8 SQLNET.ALLOWED_LOGON_VERSION_CLIENT=8
SQLNET.ORA
If you change sqlnet.ora file which is under the $ORACLE_HOME/network/admin then reload your listener like below. And try to connect again.
[[email protected] admin]$ lsnrctl reload LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 01-MAR-2019 11:57:26 Copyright (c) 1991, 2018, Oracle. All rights reserved. Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521)) The command completed successfully [[email protected] admin]$ [[email protected] admin]$ [[email protected] admin]$ lsnrctl status LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 01-MAR-2019 11:57:30 Copyright (c) 1991, 2018, Oracle. All rights reserved. Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521)) STATUS of the LISTENER ------------------------ Alias LISTENER Version TNSLSNR for Linux: Version 19.0.0.0.0 - Production Start Date 01-MAR-2019 11:46:57 Uptime 0 days 0 hr. 10 min. 32 sec Trace Level off Security ON: Local OS Authentication SNMP OFF Listener Log File /u01/app/oracle/diag/tnslsnr/MehmetSalih/listener/alert/log.xml Listening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=MehmetSalih.DeveciDomain)(PORT=1521))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=MehmetSalih.DeveciDomain)(PORT=5500))(Security=(my_wallet_directory=/u01/app/oracle/admin/DEVECI19C/xdb_wallet))(Presentation=HTTP)(Session=RAW)) Services Summary... Service "DEVECI19C.DeveciDomain" has 1 instance(s). Instance "DEVECI19C", status READY, has 1 handler(s) for this service... Service "DEVECI19CXDB.DeveciDomain" has 1 instance(s). Instance "DEVECI19C", status READY, has 1 handler(s) for this service... The command completed successfully [[email protected] admin]$
Do you want to learn Oracle Database Performance Tuning detailed, then read the following articles.
Performance Tuning and SQL Tuning Tutorial in the Oracle Database
Do you want to learn Oracle Database for Beginners, then Click and read the following articles.
Oracle Database Tutorials for Beginners ( Junior Oracle DBA )
4,304 views last month, 2 views today
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, 18c or 19c database. But I didn’t expect ORA-28040 to show up.
For those users who want to use Oracle client 11g to connect to database 19c, but failed with ORA-28040, I’ll talk about it in the last section.
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.
- Description
ORA-28040: No matching authentication protocol
- Cause
There was no acceptable authentication protocol for either client or server.
- Action
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.
For better understanding different applicable situations, I will split the solutions against ORA-28040 into two main parts in this post, the first part is for server side, the other one is for client side.
- Server Side Solutions
- Client Side Solutions
- Oralce Client 11g Connects to Database 19c
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.
There’re 2 scenarios of interoperability between new and old versions.
- Old Client to New Server
- New Client to Old Server
We introduce the server-side solutions for each scenarios below.
Old Client to New 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.
Purpose
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).
[oracle@test ~]$ vi $ORACLE_HOME/network/admin/sqlnet.ora
...
SQLNET.ALLOWED_LOGON_VERSION_SERVER=8
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.
For some users who saw ORA-01017: invalid username/password; logon denied need DBA’s interventions.
New Client to Old Server
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:
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.
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.
I talked about the solution to ORA-03134 in another post:
How to Resolve 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 side. Therefore, changing or upgrading their own clients is probably the only solution to ORA-28040.
From now on, we begin to focus on clients. Especially for those who are using Oracle JDBC drivers.
Additionally, some client tools that have authentication protocol problem also need to be configured and how we handle it.
- Oracle JDBC Driver
- SQL Developer
- PL/SQL Developer
- TOAD for Oracle
- SQuirreL SQL Client
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.
More information for JDBC developers can be found at Oracle Database JDBC Developer’s Guide: Version Compatibility for Oracle JDBC Drivers.
SQL Developer
If you were using old SQL developer like this, you will see ORA-28040 whenever you connect to a 12.1 database.
SQL developer — Connection Test Found ORA-28040: No matching authentication protocol
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.
Further reading: How to Connect MySQL from SQL Developer
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.
In our case, I downloaded and unzipped a basic package of Oracle instant client for windows 32-bit to C:oracle, the filename is instantclient-basic-nt-11.2.0.4.0.zip for instance.
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
Click on the function menu and search for Tools -> Preferences to open the dialog.
PL/SQL Developer — Function Menu — Tools -> Preferences
Step 2: Go to «Connection» Section
Click on Oracle -> Connection to check current Oracle Home.
PL/SQL Developer — Preferences — Connection
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.
PL/SQL Developer — Preferences — Connections — Change OCI Library Location
Step 4: Test the Connection
Restart PL/SQL developer and logon an Oracle 12c database.
PL/SQL Developer — 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.
ORA-28040 Toad for Oracle — From 9i to 12c
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.
SQuirreL SQL Client — ORA-28040: No matching authentication protocol
Solution
How we handle it? This time, we don’t have to upgrade the software like SQL developer to solve ORA-28040, because this tool allows us to replace Oracle JDBC Driver with a newer version. In this case, we replace the old driver ojdbc14.jar with newer ojdbc7.jar.
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
Delete the old driver which is ojdbc14.jar.
SQuirreL SQL Client — Delete ojdbc14.jar Oracle JDBC driver
Step 2: Add a new driver
Click on Add button.
SQuirreL SQL Client — Add driver
Select ojdbc7.jar in the file browser
SQuirreL SQL Client — Add ojdbc7.jar Oracle JDBC driver
The new driver is selected as shown below.
SQuirreL SQL Client — ojdbc7.jar Oracle JDBC driver added
Step 3: Test the connection
After replacing the old Oracle JDBC driver with a newer one, we can now test the connection again.
SQuirreL SQL Client — Connect to 12.1 Successfully
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.
Oracle client 11.2.0.1 —X—> Oracle database 19c
Oracle client 11.2.0.2 —X—> Oracle database 19c
Oracle client 11.2.0.4 ——-> Oracle database 19c
Either Oracle client 11.2.0.4 or instant client 11.2.0.4 is able to reach Oracle database 19c.
【Исправление проблем】ORA-28040: No matching authentication protocol
1.1 BLOGСхема структуры документа
1.2 Предисловие
1.2.1 Руководство и примечания
Уважаемые энтузиасты технологий, прочитав эту статью, вы сможете овладеть следующими навыками и получить некоторые другие знания, которых вы не знаете.~O(∩_∩)O~:
① Часто появляются в журнале тревогUsing deprecated SQLNET.ALLOWED_LOGON_VERSION parameter、ORA-28040: Ошибка подходящего протокола аутентификации,9iКлиент подключается к12cРешение высокой версии
② Использовать под Windowsoerrкоманда
Tips:
① Эта статья находится вitpub(http://blog.itpub.net/26736162), Blog Garden(http://www.cnblogs.com/lhrbest)И официальный аккаунт WeChat (xiaomaimiaolhr)наЕсть одновременные обновления。
② Весь код, использованный в статье、связанное программное обеспечение、Релевантная информацияИ pdf-версия этой статьиПожалуйста, перейдите на облачный диск саженцев пшеницы, чтобы скачать,Рассады пшеницыСмотрите адрес облачного диска:http://blog.itpub.net/26736162/viewspace-1624453/。
③ Если формат кода статьи веб-страницы нарушен,пожалуйстаскачатьpdfФорматированный документчитать。
④ вЭта статьяBLOGв, Часть вывода кода обычно размещается в таблице по столбцам.
Пожалуйста, поправьте меня, если в этой статье есть ошибки или неточности.ITPUBОставьте сообщение илиQQДа, ваша критика — самая большая мотивация для моего письма.
1.3 Анализ отказов и процесс разрешения
1.3.1 Введение в среду отказа
проект |
source db |
db Типы |
RAC |
db version |
12.1.0.2.0 |
db место хранения |
ASM |
OSВерсия иkernelверсия |
SuSE Linux Enterprise Server(SLES 11) 64Немного |
1.3.2 Явление сбоя и сообщение об ошибке
Часто появляются в журнале тревогUsing deprecated SQLNET.ALLOWED_LOGON_VERSION parameter。
илиСоединение JDBCOracle12cСообщите о следующей ошибке:
Caused by: java.sql.SQLException: ORA-28040: No matching authentication protocol
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:283)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:278)
at oracle.jdbc.driver.T4CTTIoauthenticate.receiveOsesskey(T4CTTIoauthenticate.java:294)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:357)
at oracle.jdbc.driver.PhysicalConnection.(PhysicalConnection.java:441)
at oracle.jdbc.driver.T4CConnection.(T4CConnection.java:165)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:35)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:801)
at java.sql.DriverManager.getConnection(DriverManager.java:582)
at java.sql.DriverManager.getConnection(DriverManager.java:154)
Или используйте9i клиент для подключения12cБаза данных сообщитORA-28040: No matching authentication protocolЭто ошибка.
1.3.3 Анализ отказов и процесс разрешения
использоватьoerr команду для просмотра вOracle 11gпод:
[[email protected] ~]$ oerr ora 28040
28040, 0000, «No matching authentication protocol»
// *Cause: No acceptible authentication protocol for both client and server
// *Action: Administrator should set SQLNET_ALLOWED_LOGON_VERSION parameter
// on both client and servers to values that matches the minimum
// version supported in the system.
[[email protected] ~]$
12cпод:
[email protected]:/oracle/app/oracle> oerr ora 28040
28040, 0000, «No matching authentication protocol»
// *Cause: There was no acceptable authentication protocol for
// either client or server.
// *Action: 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 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
Как видите, этот параметр11g и12cСледующие решения разные.
Запросить параметрыSQLNET.ALLOWED_LOGON_VERSION,Обнаружено, что этот параметр был отброшен в 12c, но использовалсяSQLNET.ALLOWED_LOGON_VERSION_CLIENT иSQLNET.ALLOWED_LOGON_VERSION_SERVERвместо。
Заказчик сказал, что это случилось раньшеORA-28040: No matching authentication protocolПараметр добавлен к ошибке.
Решение: вПользователь Oracle (неgridПользователь), изменить$ORACLE_HOME/network/admin/sqlnet.oraИсходный файлSQLNET.ALLOWED_LOGON_VERSION= 8 комментариев (Если нет sqlnet.oraФайл, затемСоздайте), дополненный следующей строкой:
SQLNET.ALLOWED_LOGON_VERSION_SERVER=8
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=8
Не нужно перезапускать базу данных или монитор, не нужно перезапускать приложение。
Отличия заключаются в следующем:
SQLNET.ALLOWED_LOGON_VERSION_SERVER: элемент управления может быть подключен к12cКлиентская версия базы данных (client —>orace 12c db )
SQLNET.ALLOWED_LOGON_VERSION_CLIENT: управление12cК каким версиям базы данных можно подключиться (orace 12c db —>Другие версииoracle db), например: управление черезDB LINKК каким версиям можно подключитьсяoracleБиблиотека.
Поэтому основной функцией в данном случае является необходимость настройкиSQLNET.ALLOWED_LOGON_VERSION_SERVER。
Обратите особое внимание на:
(1) Если даRAC,потому какRACИспользоватьgridСлушатель, так много людей думают, что это/u02/app/12.1.0/grid/network/admin/sqlnet.ora«Добавлять»SQLNET.ALLOWED_LOGON_VERSION_SERVER=8«На самом деле это неправильно, но все же в$ORACLE_HOME/network/admin/sqlnet.oraплюс «SQLNET.ALLOWED_LOGON_VERSION_SERVER=8”
(2)Вышеупомянутая версия относится к dba_users.password_versionsверсия.
вВ Oracle 12cХотя добавьте в sqlnet.oraSQLNET.ALLOWED_LOGON_VERSION=8Можно решитьпроблема, Но поскольку этот параметр устарел в 12c, используйтеSQLNET.ALLOWED_LOGON_VERSION_CLIENTсSQLNET.ALLOWED_LOGON_VERSION_SERVERвместо. Если вы продолжите использоватьПараметр,Будет вЖурнал тревогБесконечные газеты »Using deprecated SQLNET.ALLOWED_LOGON_VERSION parameter.”,Следующее:
Кроме того, дляТакже возможно создание отчетов об ошибках JDBCСкачать поддержку для oracle12cjdbcприводjarпакет。ссылка:http://www.oracle.com/technetwork/database/features/jdbc/jdbc-drivers-12c-download-1958347.html
Примечание: местныйВерсия jdk1.6, Затем скачатьojdbc6.jar;jdkВерсия1.7, Затем скачатьojdbc7.jar
Как показано ниже:
Так же может бытьЗагрузите пакет ojdbc7.jar в каталог библиотеки lib в каталоге установки ORACLE, а затем загрузите этот ojdbc7.jar в среду разработки.。
[[email protected] dbhome_1]$ ll $ORACLE_HOME/jdbc/lib/ojdbc*
-rw-r—r— 1 oracle oinstall 3447295 Aug 23 2011 /u02/app/oracle/product/11.2.0/dbhome_1/jdbc/lib/ojdbc5dms_g.jar
-rw-r—r— 1 oracle oinstall 2617019 Aug 23 2011 /u02/app/oracle/product/11.2.0/dbhome_1/jdbc/lib/ojdbc5dms.jar
-rw-r—r— 1 oracle oinstall 3425922 Aug 23 2011 /u02/app/oracle/product/11.2.0/dbhome_1/jdbc/lib/ojdbc5_g.jar
-rw-r—r— 1 oracle oinstall 2095661 Aug 23 2011 /u02/app/oracle/product/11.2.0/dbhome_1/jdbc/lib/ojdbc5.jar
-rw-r—r— 1 oracle oinstall 4486070 Aug 23 2011 /u02/app/oracle/product/11.2.0/dbhome_1/jdbc/lib/ojdbc6dms_g.jar
-rw-r—r— 1 oracle oinstall 3327656 Aug 23 2011 /u02/app/oracle/product/11.2.0/dbhome_1/jdbc/lib/ojdbc6dms.jar
-rw-r—r— 1 oracle oinstall 4462913 Aug 23 2011 /u02/app/oracle/product/11.2.0/dbhome_1/jdbc/lib/ojdbc6_g.jar
-rw-r—r— 1 oracle oinstall 2714016 Aug 23 2011 /u02/app/oracle/product/11.2.0/dbhome_1/jdbc/lib/ojdbc6.jar
[[email protected] dbhome_1]$
1.3.4 Официальные документы и MOSобъяснение
Что касается вопроса,MOSДля справки доступно множество документов.
http://docs.oracle.com/database/121/UPGRD/deprecated.htm#UPGRD60010
В файле Alert.log базы данных 12c отображается сообщение: использование устаревшего параметра SQLNET.ALLOWED_LOGON_VERSION (идентификатор документа 2111876.1)
In this Document
APPLIES TO:
Oracle Configuration Controls Governor — Version 5.5.1 and later
Information in this document applies to any platform.
SYMPTOMS
On 12c database, the alert.log file shows the following message:
«Using deprecated SQLNET.ALLOWED_LOGON_VERSION parameter».
CHANGES
Customer upgraded to 12c database and added the following parameter in sqlnet.ora file based on the latest CCG Install Guide (CCG_Install_Guide_20150824_E25675_04.pdf).
SQLNET.ALLOWED_LOGON_VERSION
=================
SAMPLE sqlnet.ora FILE:
$ cat sqlnet.ora
# SQLNET.ORA Network Configuration File
» «
#TRACE_LEVEL_SERVER=user
SQLNET.ALLOWED_LOGON_VERSION=8
——————————————
CAUSE
The Database is reporting these messages because the «SQLNET.ALLOWED_LOGON_VERSION» parameter is no longer valid (with 12c).
However, this is «required» by CCG application: CCG_Install_Guide_20150824_E25675_04.pdf
The SQLNET.ALLOWED_LOGON_VERSION parameter is deprecated in Oracle Database 12c.
This parameter has been replaced with two new Oracle Net Services parameters:
SQLNET.ALLOWED_LOGON_VERSION_SERVER
SQLNET.ALLOWED_LOGON_VERSION_CLIENT
SOLUTION
In order to suppress these messages in the alert log of the database, you need to use the new parameters for the 12c database.
STEPS:
1. Edit the sqlnet.ora file of the 12c database. (This needs be done on each database on 12c). So for example if both your EBS and CCG databases are on 12c, you need to do this on each sqlnet.ora file. Typically, the sqlnet.ora file that would be referenced by the database is located in RDBMS_HOME/network/admin
2. Remove or comment the following entry.
SQLNET.ALLOWED_LOGON_VERSION
3.You need to follow the instructions below:
3a. Add the following two new Oracle Net Services parameters:
SQLNET.ALLOWED_LOGON_VERSION_SERVER = n
SQLNET.ALLOWED_LOGON_VERSION_CLIENT = n
Specify the value for ‘n’ based on your own environment. The default setting for the new parameters is 11. Any client that attempts to connect must be at version 11 or higher unless these parameters are explicitly set in the server side sqlnet.ora file.
3b. For example: Set these parameters at the lowest version level that is required in your environment.
The example shpow below shows the following: All clients at version 10 or higher would require this setting:
SQLNET.ALLOWED_LOGON_VERSION_SERVER=10
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=10
3c. Note that SQLNET.ALLOWED_LOGON_VERSION_CLIENT would be necessary on the server when the database is ‘acting’ as a client. Such as the case of a database link as in the case of CCG applications.
3d. Even though the parameter value implies Oracle version 10 the internal check is really against the authentication protocol ‘SHA-1’
3e. For CCG, you can just set the parameter value to 10, since SHA-2 is currently not certified with CCG.
3e. See the following reference for more information about these settings.
https://docs.oracle.com/database/121/NETRF/sqlnet.htm#NETRF2010
4. For setting up the values for step 3, you can also refer to the additional info section at the end of the note.
4. Bounce the database.
5. Bounce the application server.
=================
ADDITIONAL INFO:
SQLNET.ALLOWED_LOGON_VERSION_CLIENT
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.
See Also:
Oracle Database Security Guide
Values
12a for Oracle Database 12c Release 1 (12.1) release 12.1.0.2 or later
12 for the critical patch updates CPUOct2012 and later Oracle Database 11g authentication protocols (recommended)
11 for Oracle Database 11g authentication protocols (default)
10 for Oracle Database 10g authentication protocols
8 for Oracle8i authentication protocol
Default
11
Example
If an Oracle Database 12c database hosts a database link to an Oracle Database 10g database, then the SQLNET.ALLOWED_LOGON_VERSION_CLIENT parameter should be set as follows in order for the database link connection to proceed:
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=10
SQLNET.ALLOWED_LOGON_VERSION_SERVER
Purpose
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.
See Also:
Oracle Database Security Guide
A setting of 8 permits most password versions, and allows any combination of the DBA_USERS.PASSWORD_VERSIONS values 10G, 11G, and 12C.
A SQLNET.ALLOWED_LOGON_VERSION_SERVER setting of 12a permits only the 12C password version.
A greater value means the server is less compatible in terms of the protocol that clients must understand in order to authenticate. The server is also more restrictive in terms of the password version that must exist to authenticate any specific account. The ability for a client to authenticate depends on the DBA_USERS.PASSWORD_VERSIONS value on the server for that account.
Note the following implications of setting the value to 12 or 12a:
The setting SEC_CASE_SENSITIVE_LOGON=FALSE must not be used because case insensitivity requires the use of the 10G password version. If it is set as FALSE, then user accounts and secure roles become unusable because Exclusive Mode excludes the use of the 10G password version. The SEC_CASE_SENSITIVE_LOGON initialization parameter enables or disables case sensitivity for passwords.
Note:
The use of the Oracle instance initialization parameter SEC_CASE_SENSITIVE_LOGON is deprecated in favor of setting the SQLNET.ALLOWED_LOGON_VERSION_SERVER parameter to 12 or 12a to ensure that passwords are treated in a case-sensitive fashion.
To take advantage of the password protections introduced in Oracle Database 11g, users must change their passwords. The new passwords are case sensitive. When an account password is changed, the earlier 10G case-insensitive password version is automatically removed.
Releases of OCI clients earlier than Oracle Database 10g and all versions of JDBC thin clients cannot authenticate to the Oracle database using password-based authentication.
If the client uses Oracle9i Database, then the client will receive an ORA-03134 error message. To allow the connection, set the SQLNET.ALLOWED_LOGON_VERSION_SERVER value to 8. Ensure the DBA_USERS.PASSWORD_VERSIONS value for the account contains the value 10G. It may be necessary to reset the password for that account.
Note the following implication of setting the value to 12a:
When an account password is changed, the earlier 10G case-insensitive password version and the 11G password version are both automatically removed.
The client must support certain abilities of an authentication protocol before the server will authenticate. If the client does not support a specified authentication ability, then the server rejects the connection with an ORA-28040: No matching authentication protocol error message.
The following is the list of all client abilities. Some clients do not have all abilities. Clients that are more recent have all the capabilities of the older clients, but older clients tend to have less abilities than more recent clients.
O7L_MR: The ability to perform the Oracle Database 10g authentication protocol using the 12C password version.
O5L_NP: The ability to perform the Oracle Database 10g authentication protocol using the 11G password version, and generating a session key encrypted for critical patch update CPUOct2012.
O5L: The ability to perform the Oracle Database 10g authentication protocol using the 10G password version.
O4L: The ability to perform the Oracle9i database authentication protocol using the 10G password version.
O3L: The ability to perform the Oracle8i database authentication protocol using the 10G password version.
A higher ability is more recent and secure than a lower ability. Clients that are more recent have all the capabilities of the older clients.
The following table describes the allowed values, password versions, and descriptions:
Value of the ALLOWED_LOGON_VERSION_SERVER Parameter Generated Password Version Ability Required of the Client Meaning for Clients
12aFoot 1 12C O7L_MR Only Oracle Database 12c release 12.1.0.2 or later clients can connect to the server.
12Foot 2 11G, 12C O5L_NP Only clients which have applied critical patch update CPUOct2012 or later, or release 11.2.0.3 clients with an equivalent update can connect to the server.
11 10G, 11G, 12C O5L Clients using Oracle Database 10g and later can connect to the server.
Clients using releases earlier than Oracle Database release 11.2.0.3 that have not applied critical patch update CPUOct2012 or later patches must use the 10G password version.
10 10G, 11G, 12C O5L Clients using Oracle Database 10g and later can connect to the server.
Clients using releases earlier than Oracle Database release 11.2.0.3 that have not applied critical patch update CPUOct2012 or later patches must use the 10G password version.
9 10G, 11G, 12C O4L Oracle9i Database or later clients can connect to the server.
8 10G, 11G, 12C O3L Oracle8i Database and later clients can connect to the server.
Footnote 1 This is considered «Exclusive Mode» because it excludes the use of both 10G and 11G password versions.
Footnote 2 This is considered «Exclusive Mode» because it excludes the use of the 10G password version.
Values
12a for Oracle Database 12c release 12.1.0.2 or later authentication protocols (strongest protection)
12 for the critical patch updates CPUOct2012 and later Oracle Database 11g authentication protocols (recommended)
11 for Oracle Database 11g authentication protocols (default)
10 for Oracle Database 10g authentication protocols
9 for Oracle9i Database authentication protocol
8 for Oracle8i Database authentication protocol
Default
11
Example
SQLNET.ALLOWED_LOGON_VERSION_SERVER=11
=======================
IMPORTANT NOTES:
1) The sqlnet.ora file that is referenced by the database is located in RDBMS_HOME/network/admin. This is by default. It will not read the sqlnet.ora file in GRID_HOME/network/admin unless TNS_ADMIN is explicitly set to point there.
2) While the version 12 documentation shows settings for this parameter as low as 8, this does not override the rules of Interoperability or Certification. See the following: Note 207303.1 Client / Server Interoperability Support Matrix for Different Oracle Versions.
In other words, setting the SQLNET.ALLOWED_LOGON_VERSION_SERVER parameter to 8, 9 or 10 does not mean that version of client is going to be fully supported by Oracle Support.
REFERENCES
NOTE:1304142.1 — 11g and Older: How To Use the Parameter SQLNET.ALLOWED_LOGON_VERSION Correctly
BUG:11845659 — SQLNET.ALLOWED_LOGON_VERSION NEEDS CLEARER DOCUMENTATION
NOTE:402193.1 — How to Allow Login to Database Based on the Client Version
Ошибка «ORA-28040: Нет соответствующего протокола аутентификации» при использовании SQLNET.ALLOWED_LOGON_VERSION (идентификатор документа 755605.1)
In this Document
APPLIES TO:
JDBC — Version 10.1.0 to 12.1.0.2.0
Information in this document applies to any platform.
SYMPTOMS
When using the property «SQLNET.ALLOWED_LOGON_VERSION=10» set in the file sqlnet.ora on the server side, a 10g JDBC thin driver connecting to this 10g oracle database, fails with following errors:
The Network Adapter could not establish the connection
….
ORA-28040: No matching authentication protocol
.
CHANGES
Configuring SQLNET.ORA on the server side.
CAUSE
BUG 6051243 — ORA-28040: WHEN LISTENER USES SQLNET.ALLOWED_LOGON_VERSION
A 10.2 thin jdbc driver is identifying itself as 8.1.5 client and hence the connection is failing with error ORA-28040: No matching authentication protocol
SOLUTION
To resolve the above issue you may implement any one of the following :-
— Change the entry in sqlnet.ora file on the server machine:
from:
SQLNET.ALLOWED_LOGON_VERSION=10
to:
SQLNET.ALLOWED_LOGON_VERSION=8
OR
— Use the OCI driver instead of the THIN driver. The OCI driver identifies itself correctly as a 10.2 client and thus the connection succeeds.
OR
— If you are using 10.2.0.4 or 10.2.0.5 version of the driver then, you may download Patch:6779501 from My Oracle Support.
OR
— If you are using 10.1.0.5.0 version of the driver then, you may download Patch:6505927 from My Oracle Support.
Note: This is applicable when connecting to 10g or 11g databases. JDBC 10.1 drivers are not certified with 12c databases.
OR
— Use JDBC 11g THIN driver or later.
Note:
If using Oracle Database 12c, please see:
Home / Database / Oracle Database Online Documentation 12c Release 1 (12.1) / Installing and Upgrading
Database Upgrade Guide
8 Deprecated and Desupported Features for Oracle Database 12c
8.3.5 Deprecation of SQLNET.ALLOWED_LOGON_VERSION Parameter
If you are upgrading a system that did not have a SQLNET.ALLOWED_LOGON_VERSION parameter setting (that is, it was using the default 8), then you might need to set the value of the SQLNET.ALLOWED_LOGON_VERSION_SERVER to 8 in the upgraded Oracle Database 12c server to maintain compatibility with clients on earlier releases. Otherwise, if no setting for SQLNET.ALLOWED_LOGON_VERSION_SERVER (or the deprecated SQLNET.ALLOWED_LOGON_VERSION) parameter is made in the upgraded Oracle Database 12c server, then the new default value becomes 11 in the new Oracle Database 12c.
REFERENCES
BUG:6051243 — ORA-28040: WHEN LISTENER USES SQLNET.ALLOWED_LOGON_VERSION
8.3.5 Deprecation of SQLNET.ALLOWED_LOGON_VERSION Parameter
The SQLNET.ALLOWED_LOGON_VERSION parameter is deprecated in Oracle Database 12c. This parameter has been replaced with two new Oracle Net Services parameters:
-
SQLNET.ALLOWED_LOGON_VERSION_SERVER (See Oracle Database Net Services Reference for information)
-
SQLNET.ALLOWED_LOGON_VERSION_CLIENT (See Oracle Database Net Services Reference for information)
See Also:
-
Oracle Database Security Guide for information about this deprecation
-
«Upgrading a System that Did Not Have SQLNET.ALLOWED_LOGON_VERSION Parameter Setting»
-
«Check for the SQLNET.ALLOWED_LOGON_VERSION Parameter Behavior»
8.3.5.1 Upgrading a System that Did Not Have SQLNET.ALLOWED_LOGON_VERSION Parameter Setting
If you are upgrading a system that did not have a SQLNET.ALLOWED_LOGON_VERSION parameter setting (that is, it was using the default 8), then you might need to set the value of theSQLNET.ALLOWED_LOGON_VERSION_SERVER to 8 in the upgraded Oracle Database 12c server to maintain compatibility with clients on earlier releases. Otherwise, if no setting forSQLNET.ALLOWED_LOGON_VERSION_SERVER (or the deprecated SQLNET.ALLOWED_LOGON_VERSION) parameter is made in the upgraded Oracle Database 12c server, then the new default value becomes 11 in the new Oracle Database 12c.
The effect of the new default value of 11 for SQLNET.ALLOWED_LOGON_VERSION_SERVER in Oracle Database 12c is that clients using Oracle Database release 10g and later can connect to the Oracle Database 12c server. Clients using releases earlier than Oracle Database release 11.2.0.3 that have not applied critical patch update CPUOct2012 or later patches must use the 10g password version.
Using a setting of 12 is most secure. However, this setting only permits Oracle Database 12c clients to connect.
SQLNET.ALLOWED_LOGON_VERSION_CLIENT
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.
Values
-
12a for Oracle Database 12c Release 1 (12.1) release 12.1.0.2 or later
-
12 for the critical patch updates CPUOct2012 and later Oracle Database 11g authentication protocols (recommended)
-
11 for Oracle Database 11g authentication protocols (default)
-
10 for Oracle Database 10g authentication protocols
-
8 for Oracle8i authentication protocol
Default
11
Example
If an Oracle Database 12c database hosts a database link to an Oracle Database 10g database, then the SQLNET.ALLOWED_LOGON_VERSION_CLIENT parameter should be set as follows in order for the database link connection to proceed:
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=10
SQLNET.ALLOWED_LOGON_VERSION_SERVER
Purpose
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.
A setting of 8 permits most password versions, and allows any combination of the DBA_USERS.PASSWORD_VERSIONS values 10G, 11G, and 12C.
A SQLNET.ALLOWED_LOGON_VERSION_SERVER setting of 12a permits only the 12C password version.
A greater value means the server is less compatible in terms of the protocol that clients must understand in order to authenticate. The server is also more restrictive in terms of the password version that must exist to authenticate any specific account. The ability for a client to authenticate depends on the DBA_USERS.PASSWORD_VERSIONS value on the server for that account.
Note the following implications of setting the value to 12 or 12a:
-
The setting SEC_CASE_SENSITIVE_LOGON=FALSE must not be used because case insensitivity requires the use of the 10G password version. If it is set as FALSE, then user accounts and secure roles become unusable because Exclusive Mode excludes the use of the 10G password version. The SEC_CASE_SENSITIVE_LOGON initialization parameter enables or disables case sensitivity for passwords.
Note:
The use of the Oracle instance initialization parameter SEC_CASE_SENSITIVE_LOGON is deprecated in favor of setting theSQLNET.ALLOWED_LOGON_VERSION_SERVER parameter to12 or 12a to ensure that passwords are treated in a case-sensitive fashion.
-
To take advantage of the password protections introduced in Oracle Database 11g, users must change their passwords. The new passwords are case sensitive. When an account password is changed, the earlier 10G case-insensitive password version is automatically removed.
-
Releases of OCI clients earlier than Oracle Database 10g and all versions of JDBC thin clients cannot authenticate to the Oracle database using password-based authentication.
-
If the client uses Oracle9i Database, then the client will receive an ORA-03134 error message. To allow the connection, set the SQLNET.ALLOWED_LOGON_VERSION_SERVERvalue to8. Ensure the DBA_USERS.PASSWORD_VERSIONS value for the account contains the value 10G. It may be necessary to reset the password for that account.
Note the following implication of setting the value to 12a:
-
When an account password is changed, the earlier 10G case-insensitive password version and the 11G password version are both automatically removed.
The client must support certain abilities of an authentication protocol before the server will authenticate. If the client does not support a specified authentication ability, then the server rejects the connection with an ORA-28040: No matching authentication protocol error message.
The following is the list of all client abilities. Some clients do not have all abilities. Clients that are more recent have all the capabilities of the older clients, but older clients tend to have less abilities than more recent clients.
-
O7L_MR: The ability to perform the Oracle Database 10g authentication protocol using the 12C password version.
-
O5L_NP: The ability to perform the Oracle Database 10g authentication protocol using the 11G password version, and generating a session key encrypted for critical patch update CPUOct2012.
-
O5L: The ability to perform the Oracle Database 10g authentication protocol using the 10G password version.
-
O4L: The ability to perform the Oracle9i database authentication protocol using the 10G password version.
-
O3L: The ability to perform the Oracle8i database authentication protocol using the 10G password version.
A higher ability is more recent and secure than a lower ability. Clients that are more recent have all the capabilities of the older clients.
The following table describes the allowed values, password versions, and descriptions:
Value of the ALLOWED_LOGON_VERSION_SERVER Parameter | Generated Password Version | Ability Required of the Client | Meaning for Clients |
---|---|---|---|
12aFoot 1 | 12C | O7L_MR | Only Oracle Database 12c release 12.1.0.2 or later clients can connect to the server. |
12Foot 2 | 11G, 12C | O5L_NP | Only clients which have applied critical patch update CPUOct2012 or later, or release 11.2.0.3 clients with an equivalent update can connect to the server. |
11 | 10G, 11G, 12C | O5L | Clients using Oracle Database 10g and later can connect to the server.
Clients using releases earlier than Oracle Database release 11.2.0.3 that have not applied critical patch update CPUOct2012 or later patches must use the 10G password version. |
10 | 10G, 11G, 12C | O5L | Clients using Oracle Database 10g and later can connect to the server.
Clients using releases earlier than Oracle Database release 11.2.0.3 that have not applied critical patch update CPUOct2012 or later patches must use the 10G password version. |
9 | 10G, 11G, 12C | O4L | Oracle9i Database or later clients can connect to the server. |
8 | 10G, 11G, 12C | O3L | Oracle8i Database and later clients can connect to the server. |
Footnote 1 This is considered «Exclusive Mode» because it excludes the use of both 10G and 11G password versions.
Footnote 2 This is considered «Exclusive Mode» because it excludes the use of the 10G password version.
Values
-
12a for Oracle Database 12c release 12.1.0.2 or later authentication protocols (strongest protection)
-
12 for the critical patch updates CPUOct2012 and later Oracle Database 11g authentication protocols (recommended)
-
11 for Oracle Database 11g authentication protocols (default)
-
10 for Oracle Database 10g authentication protocols
-
9 for Oracle9i Database authentication protocol
-
8 for Oracle8i Database authentication protocol
Default
11
Example
SQLNET.ALLOWED_LOGON_VERSION_SERVER=11
1.3.4.1 12cУстаревшие и неподдерживаемые функции в
https://docs.oracle.com/database/121/UPGRD/deprecated.htm#BABEDDGA
1.4 ORA-28040Моделирование отказов
Саженцы пшеницы имеют7、8、9、10、11、12cБаза данных, так что, кстати, симулируйте эту ошибку.
Сервер12c, клиент9i, Пробуем подключиться на клиенте12cБаза данных:
Microsoft Windows [Версия10.0.10240]
(c) 2015 Microsoft Corporation. All rights reserved.
D:Usersxiaomaimiao>set ORACLE_HOME=D:Program_filesu01apporacleproductora92
D:Usersxiaomaimiao>set ora
ORACLE10G=D:Program filesapporacleproduct10.2.0db_1
ORACLE11G=D:Program_filesu01apporacleproduct11.2.0.1dbhome_1
ORACLE8I=D:Program filesapporacleproductora8i
ORACLE_HOME=D:Program_filesu01apporacleproductora92
D:Usersxiaomaimiao>cd %ORACLE_HOME%/bin
D:Program_filesu01apporacleproductora92bin>sqlplus -v
SQL*Plus: Release 9.2.0.1.0 — Production
D:Program_filesu01apporacleproductora92bin>tnsping ora12c
TNS Ping Utility for 32-bit Windows: Version 9.2.0.1.0 — Production on 19-DEC-2016 17:44:59
Copyright (c) 1997 Oracle Corporation. All rights reserved.
Used parameter files:
D:Program_filesu01apporacleproductora92networkadminsqlnet.ora
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.59.128)(PORT = 1521))) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = lhrdb12c)))
OK (10 msec)
D:Program_filesu01apporacleproductora92bin>sqlplus lhr/[email protected]
SQL*Plus: Release 9.2.0.1.0 — Production on Mon Dec 19 17:45:07 2016
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
ERROR:
ORA-28040: No matching authentication protocol
Enter user-name:
Можно посмотреть газетуORA-28040: No matching authentication protocolошибка.
мывНа стороне сервера$ORACLE_HOME/network/admin/sqlnet.oraДобавьте следующую строку:
SQLNET.ALLOWED_LOGON_VERSION_SERVER=8
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=8
Попробуйте подключиться еще раз:
D:Program_filesu01apporacleproductora92bin>sqlplus lhr/[email protected]
SQL*Plus: Release 9.2.0.1.0 — Production on Mon Dec 19 17:51:54 2016
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 — 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
SQL>
Видно, что подключено нормально.
Если сервер$ORACLE_HOME/network/admin/sqlnet.oraSQLNET.ALLOWED_LOGON_VERSION_SERVER = 8 иSQLNET.ALLOWED_LOGON_VERSION_CLIENT=8Закомментируйте и замените наSQLNET.ALLOWED_LOGON_VERSION=8,следующее:
SQLNET.ALLOWED_LOGON_VERSION=8
# SQLNET.ALLOWED_LOGON_VERSION_SERVER=8
# SQLNET.ALLOWED_LOGON_VERSION_CLIENT=8
Попробуйте подключиться к базе данных:
D:Program_filesu01apporacleproductora92bin>sqlplus lhr/[email protected]
SQL*Plus: Release 9.2.0.1.0 — Production on Mon Dec 19 17:56:29 2016
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 — 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
SQL>
Его можно подключить как обычно, но при просмотре журнала аварийных сигналов отображается следующий вывод:Using deprecated SQLNET.ALLOWED_LOGON_VERSION parameter. Более того, каждый раз, когда подключается база данных, выводится строка данных, что согласуется с проблемой, которую мы анализировали ранее.
1.5 Использовать под Windowsoerrкоманда
Потому что среда клиента12c Linux, а у меня нет12cизLinuxОкружающая среда, установка более хлопотная, просто установите одинWindowsВерсия. Результат выполненияoerr ora Об ошибке сообщалось, когда:
C:Usersxiaomaimiao>oerr ora 10041
oerr: Cannot access the message file E:apporacleproduct12.1.0dbhome_1rdbmsmesgoraus.msg
No such file or directory
C:Usersxiaomaimiao>oerr ora 01555
oerr: Cannot access the message file E:apporacleproduct12.1.0dbhome_1rdbmsmesgoraus.msg
No such file or directory
После просмотраФайл с ошибкой (E: app oracle product 12.1.0 dbhome_1 rdbms mesg oraus.msg) не существует, и любой*.msgФайлов нет, То с 12вLinuxСледующий связанный$ORACLE_HOME/rdbms/mesg/*.msgФайлы копируются вWindowsВ окружающей среде:
[[email protected] mesg]$ pwd
/u02/app/oracle/product/11.2.0/dbhome_1/rdbms/mesg
[[email protected] mesg]$ ll *.msg
-rw-r—r— 1 oracle oinstall 4070 Jul 25 2008 amduus.msg
-rw-r—r— 1 oracle oinstall 6298 Apr 14 2011 asmcmdus.msg
-rw-r—r— 1 oracle oinstall 5886 Aug 3 2007 dbvus.msg
-rw-r—r— 1 oracle oinstall 23309 Jan 28 2010 dgmus.msg
-rw-r—r— 1 oracle oinstall 175881 May 11 2011 diaus.msg
-rw-r—r— 1 oracle oinstall 49483 Jan 28 2010 expus.msg
-rw-r—r— 1 oracle oinstall 15148 Nov 8 2009 gimus.msg
-rw-r—r— 1 oracle oinstall 47609 Feb 18 2009 impus.msg
-rw-r—r— 1 oracle oinstall 3585 Nov 3 2009 kfedus.msg
-rw-r—r— 1 oracle oinstall 3457 Nov 6 2008 kfodus.msg
-rw-r—r— 1 oracle oinstall 1792 Mar 1 2009 kfsgus.msg
-rw-r—r— 1 oracle oinstall 26775 Nov 1 1999 kgpus.msg
-rw-r—r— 1 oracle oinstall 3113 Sep 3 1997 kopus.msg
-rw-r—r— 1 oracle oinstall 72528 Sep 17 2011 kupus.msg
-rw-r—r— 1 oracle oinstall 4651 Sep 3 1997 lcdus.msg
-rw-r—r— 1 oracle oinstall 22043 Nov 27 2006 nidus.msg
-rw-r—r— 1 oracle oinstall 129827 May 5 2011 ocius.msg
-rw-r—r— 1 oracle oinstall 734 Mar 8 2010 opwus.msg
-rw-r—r— 1 oracle oinstall 4922454 Sep 17 2011 oraus.msg
-rw-r—r— 1 oracle oinstall 178311 Aug 25 2009 qsmus.msg
-rw-r—r— 1 oracle oinstall 391272 Sep 17 2011 rmanus.msg
-rw-r—r— 1 oracle oinstall 40078 Jul 30 2001 sbtus.msg
-rw-r—r— 1 oracle oinstall 123863 May 22 2010 smgus.msg
-rw-r—r— 1 oracle oinstall 20433 Jan 13 2010 udeus.msg
-rw-r—r— 1 oracle oinstall 20572 Jan 13 2010 udius.msg
-rw-r—r— 1 oracle oinstall 143025 Jul 27 2009 ulus.msg
[[email protected] mesg]$
Затем выполнитеOKВверх.
C:Usersxiaomaimiao>oerr ora 01555
01555, 00000, «snapshot too old: rollback segment number %s with name «%s» too small»
// *Cause: rollback records needed by a reader for consistent read are
// overwritten by other writers
// *Action: If in Automatic Undo Management mode, increase undo_retention
// setting. Otherwise, use larger rollback segments
Интерпретация Oracle 12.2 ORA-01017 / ORA-28040
Недавно я установил набор автономной тестовой библиотеки Oracle12.2.0.1 для RHEL 7.2 x86-86. После импорта данных в бизнес в обратной связи сообщалось о следующей ошибке при подключении с помощью PL / SQL Developer:
Быстро проверьте MOS, выясняется, что Oracle 12.2 по умолчанию имеет ограничения на версию клиента, которые в основном контролируются следующими двумя параметрами в sqlnet.ora:
SQLNET.ALLOWED_LOGON_VERSION_SERVER=n
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=n
Эти два параметра по умолчанию равны 11. Это означает, что по умолчанию разрешено подключение только клиентам 11g. Учитывая, что многие разработчики plsql на стороне ПК используют клиенты 10g, измените эти два параметра на 10:
SQLNET.ALLOWED_LOGON_VERSION_SERVER=10
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=10
SQLNET.ALLOWED_LOGON_VERSION_CLIENTПараметр в основном используется, когда база данных используется в качестве клиента dblink. После настройки он может вступить в силу без перезапуска мониторинга и базы данных. Для RAC два параметра, считываемые Oracle, находятся в ORACLE_HOME RDBMS, а не в ORACLE_HOME GRID.
После решения этой проблемы некоторые клиенты могут подключаться, но некоторые клиенты сообщают: ORA-01017: неверное имя пользователя / пароль. Итак, я провел несколько тестов и обнаружил, что клиентское соединение версии 10.2.0.4 будет сообщать ORA-01017, а версия 10.2.0.5 может нормально подключаться, а клиент 11.2.0.3, 11.2.0.4 и 12.2.0.1 не Проблема, другие версии не нашли соответствующего клиента, теста нет.
Здесь было установлено, что клиент 10g может подключаться к базе данных 12.2, но почему клиент 10.2.0.4 все еще сообщает об ошибке пароля ORA-01017, а клиент 10.2.0.5 может подключиться.
После проверки в базе данных Oracle 12c (на самом деле она доступна с 11g) в представлении dba_users есть поле password_versions со следующим значением:
SQL> set linesize 200
SQL> column username format a15
SQL> column account_status format a18
SQL> column default_tablespace format a25
SQL> column password_versions format a20
SQL> select username, account_status, default_tablespace, created, password_versions from dba_users where username = ‘CRM’;
USERNAME ACCOUNT_STATUS DEFAULT_TABLESPACE CREATED PASSWORD_VERSIONS
——— ————— —————— ——————- ———————
CRM OPEN TBS_CRM_TS_S1 2017-06-06 21:36:19 11G 12C
password_versions указывает, что текущие методы аутентификации пароля пользователя CRM — 11g и 12c, поэтому существует проблема с подключением клиента 10.2.0.4. Как поддерживать метод аутентификации 10g на самом деле очень просто, достаточно подтвердить sqlnet.oraSQLNET.ALLOWED_LOGON_VERSION_SERVERсSQLNET.ALLOWED_LOGON_VERSION_CLIENTОн был установлен на 10, а затем использовать предупреждение пользователя xxxПосле идентификации xxxxxx,PASSWORD_VERSIONSОн поддерживает метод аутентификации 10g, а именно:
SQL> set linesize 200
SQL> column username format a15
SQL> column account_status format a18
SQL> column default_tablespace format a25
SQL> column password_versions format a20
SQL> select username, account_status, default_tablespace, created, password_versions from dba_users where username = ‘CRM’;
USERNAME ACCOUNT_STATUS DEFAULT_TABLESPACE CREATED PASSWORD_VERSIONS
——— ————— —————— ——————- ———————
CRM OPEN TBS_CRM_TS_S1 2017-06-06 21:36:19 10G 11G 12C
Итак, процесс всей проблемы выглядит следующим образом: после установки базы данных на Oracle 12c и переноса данныхSQLNET.ALLOWED_LOGON_VERSION_SERVERсSQLNET.ALLOWED_LOGON_VERSION_CLIENT — 10, Созданный пользователь не поддерживает метод аутентификации с паролем 10g. После изменения этих двух параметров sqlnet метод аутентификации пользователя по паролю в базе данных не изменился, поэтому клиент 10.2.0.4 не может подключиться к серверу, и выдается сообщение об ошибке ORA-01017. После использования предупреждения пользователя xxx, идентифицированного xxxxxxx, для изменения пароля, поскольку эти два параметра в sqlnet были изменены для поддержки подключения клиентов 10g, password_versions в dba_user также были изменены для поддержки метода проверки подлинности 10g соответственно, поэтому клиенты версии 10.2.0.4 Вы можете подключиться к базе данных.
Поэтому, когда некоторые клиенты являются приложениями 10.2.0.4, вам нужно обратить внимание. Если сервер базы данных использует миграцию данных для обновления до Oracle 12c, вам необходимо обратить внимание на то, поддерживает ли пароль пользователя в Oracle 12c метод аутентификации 10g, в противном случае после миграции будет указано имя по умолчанию. Замечательный пароль неправильный, с клиентским тестом версии 10.2.0.5 проблем нет.
About Me
……………………………………………………………………………………………………………….
● Автор: пырей, сосредоточьтесь только на технических базах данных, уделите больше внимания использованию технологий
● Эта статья находится вitpub(http://blog.itpub.net/26736162), Blog Garden(http://www.cnblogs.com/lhrbest)И личный публичный аккаунт WeChat (xiaomaimiaolhr) Синхронизировано
● Эта статьяitpubадрес:http://blog.itpub.net/26736162/viewspace-2131338/
● Адрес сада блога этой статьи:http://www.cnblogs.com/lhrbest/p/6219687.html
● Эта статьяpdfВерсияа такжеАдрес облачного диска рассады пшеницы:http://blog.itpub.net/26736162/viewspace-1624453/
● QQгруппа:230161599Группа WeChat: приватный чат
● Свяжитесь со мной, пожалуйста, добавьтеQQПриятель(642808185), Укажите причину добавления
● В2016-12-19 15:00 ~ 2016-12-25 19:00 вСельскохозяйственный банк завершен
● Содержание статьи взято из заметок по изучению рассады пшеницы, частично собранных из Интернета, пожалуйста, поймите, есть ли какие-либо нарушения или несоответствия
● Все права защищены, добро пожаловать, чтобы поделиться этой статьей, пожалуйста, сохраните источник для перепечатки
……………………………………………………………………………………………………………….
Нажмите на картинку ниже, чтобы идентифицировать QR-код на мобильном телефоне, или отсканируйте QR-код ниже, чтобы подписаться на официальный аккаунт WeChat о саженцах пшеницы: xiaomaimiaolhr,Изучите самые практичные технологии баз данных бесплатно.
взят из «Блога ITPUB», ссылка: http://blog.itpub.net/26736162/viewspace-2131338/, если вам нужно перепечатать, укажите источник, в противном случае будет преследоваться юридическая ответственность.
SQLNET parameters ALLOWED_LOGON_VERSION_CLIENT & ALLOWED_LOGON_VERSION_SERVER issue in Oracle 12c.
Set the value to the minimum authentication protocol allowed while making connection to Oracle Database instances.
Note: Version refer to the authentication protocol its not mean that oracle release version.
Error:
Caused by: java.sql.SQLException: ORA-28040: No matching authentication protocol”
ORA-28040: No matching authentication protocol error
ORA-03134: Connections to this server version are no longer supported error.
Solution:
1. Set the following value in SQLNET.ora file in Oracle database Server and client both:
SQLNET.ALLOWED_LOGON_VERSION_SERVER=8
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=8
Note: value permit all most values for authentication protocol.
2. You can also check DBA_USERS table.
select username,password_versions from DBA_USERS
--Password Version has value 10G, 11G, and 12C
Example:
Suppose application is using client version 9i then for connectivity need to set following parameters as follows:
SQLNET.ORA FILE : SQLNET.ALLOWED_LOGON_VERSION_SERVER value to 8.
DBA_USERS table have column PASSWORD VERSION its value should be 8.
SQLNET.ALLOWED_LOGON_VERSION_CLIENT
minimum authentication protocol allowed for clients and used when a server is acting as a client.
Example:
If ORacle database 12c has database link to Oracle 10g database for some information then need to set the paremeter in sqlnet.ora of oracle 12c because it act as client of oracle 10g database.SQLNET.ALLOWED_LOGON_VERSION_CLIENT=10
Note: Version refer to the authentication protocol its not mean that oracle release version.
Value of Parameter
12a for Oracle Database 12c 12.1.0.2 or later
12 for the critical patch updates CPUOct2012 and later Oracle Database 11g authentication protocols
11 for Oracle Database 11g authentication protocols ----- (default)
10 for Oracle Database 10g authentication protocols
8 for Oracle8i authentication protocol
Example:
Solution:
Set these parameters at the lowest version level that is required in your environment. For example: All clients at version 10 or higher would require this setting:
SQLNET.ALLOWED_LOGON_VERSION_SERVER=10
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=10
Following are the setting for using lower version. Set at both side Server or Client:
--Set 8 for Password Versions 10G, 11G and 12c
SQLNET.ALLOWED_LOGON_VERSION_SERVER=8 or 11
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=8 or 11
---Set 12 for the 11G and 12c password Versions
SQLNET.ALLOWED_LOGON_VERSION_SERVER=12
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=12
---Set the 12c for the only 12c Password Versions
SQLNET.ALLOWED_LOGON_VERSION_SERVER=12a
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=12a
Note:
Keep the SEC_CASE_SENSITIVE_LOGON=TRUE in a 12.2 instance
if the sqlnet.ora file set the following parameter:
SQLNET.ALLOWED_LOGON_VERSION_SERVER=12 or 12a (12.2 default is 12)