How to fix ORA-12560: TNS:protocol adapter error on Windows (Doc ID 2313175.1)
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
How to Resolve ORA-12560 on Windows Server
In this post, I’ll talk about 3 error patterns of ORA-12560 on Windows platform.
Database Service is Stop
When we tried to connect to the database via SYSDBA, we got ORA-12560.
C:\Users\Administrator>sqlplus / as sysdba
.
ERROR:
ORA-12560: TNS:protocol adapter error
This is because the database service is stopped by someone or something, you need to start or restart to get the database service working. This is the most common problem of ORA-12560.
Datapatch
If you saw the error in datapatch (i.e. SQL patching) after issuing datapatch -verbose like this:
C:\Users\Administrator>datapatch -verbose
.
Connecting to database.
Error: prereq checks failed!
Database connect failed with: ORA-12560: TNS:protocol adapter error (DBD ERROR: OCIServerAttach)
.
Then you know what to do it to solve it.
Incorrect ORACLE_SID
First of all, allow me reproduce the error ORA-12560 for you.
Check the instance name and current status.
C:\Users\Administrator>sqlplus / as sysdba
SQL*Plus: Release 12.2.0.1.0 Production on Thu Oct 24 20:31:22 2019
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 — 64bit Production
SQL> select instance_name, status from v$instance;
SQL> exit
Disconnected from Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 — 64
bit Production
As you can see, I connect the database with OS authentication without problem.
Now I set a non-existing ORACLE_SID .
C:\Users\Administrator>set ORACLE_SID=ERPAPP2
C:\Users\Administrator>echo %ORACLE_SID%
ERPAPP2
Then connect again.
C:\Users\Administrator>sqlplus / as sysdba
SQL*Plus: Release 12.2.0.1.0 Production on Thu Oct 24 20:32:36 2019
Copyright (c) 1982, 2016, Oracle. All rights reserved.
ERROR:
ORA-12560: TNS:protocol adapter error
Enter user-name: ^C
Oh, I got ORA-12560. The response to an unrecognized ORACLE_SID is very different in Windows from Linux. In Linux, it still connect for you, but show «Connected to an idle instance».
In such situation, you’d better to check ORACLE_SID in software registry editor.

Windows Regedit — Oracle Software — Check «ORACLE_SID»
In this case, we should set the correct ORACLE_SID in registry or set it temporarily for your working environment like this:
C:\Users\Administrator>set ORACLE_SID=ERPAPP
C:\Users\Administrator>echo %ORACLE_SID%
ERPAPP
Reach Limitation of PROCESSES
Found repeated Oracle TNS error messages in listener log during peak-hours on Windows Server 2008.
.
19-Oct-2010 05:32:10 * (CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=ORCL11)(CID=(PROGRAM=C:ap001client.exe)(HOST=WIN3451)(USER=EDCHEN))) * (ADDRESS=(PROTOCOL=tcp)(HOST=10.1.2.3)(PORT=49874)) * establish * ORCL11 * 12518
TNS-12518: TNS:listener could not hand off client connection
ORA-12560: TNS:protocol adapter error
.
The error pattern combined with TNS-12518 and ORA-12560, and it repeated itself until some point off the peak.
I think restarting the database should work, but it should also cost your time or credits to explain the inconvenience to your users.
I suspect that PMON was not responsive enough to reclaim the timeout or dead processes and let the whole database reach the maximum number of processes, and eventually, no more new connections will be allowed.
If you are not convenient to patch the database. Here are two alternatives that you may choose:
-
Raise the maximum number of processes online: SQL> alter system set processes=3000 scope=both;
The whole concept of this tactic is to make the database survive through the daily peak-hours and let PMON can take its time to reclaim the unused processes.
SQL> alter system set dispatchers='(address=(protocol=tcp)(PORT=1521)) (dispatchers=20)(sessions=1000)’ scope=both;
In the above statement, we force all connections coming from port 1521 to use dispatchers (shared server mode). DBA and specific users can use other port like 1522 to connect as dedicated mode to finish their jobs. At the beginning, users might feel that the speed of responses of database is slightly affected. I think it’s a trade-off that you must think over before making the decision.
Since the shared server processes will be soon allocated in the server when the database startup, the number of processes can be easily controlled by DBA. For more shared server configuration, you can refer to Oracle documentation: Configuring Oracle Database for Shared Server.
DBA Career
Hair follicle drug tests may also be required for legal and medical purposes. More often than not, you are the one who chooses whether you give a hair sample or not. Nothing is done without your consent. Your employer can’t forcibly take a hair sample from you. Labs can detect drugs but can’t determine when those drugs were taken. The idea they can be is just a myth. Visit: https://www.urineworld.com/
Thank you for sharing such a useful article. I had a great time. This article was fantastic to read. Continue to publish more articles on
ORA-12560: TNS: ошибка адаптера протокола

I Google [d] для этой ошибки ORA-12560: TNS: ошибка адаптера протокола, но не может найти фактическую причину и как решить эту ошибку?
Может ли кто-нибудь сказать мне идеальное решение для решения проблемы входа в систему.
16 ответов
- Перейдите на машину Windows, на которой размещен сервер базы данных Oracle.
- Перейдите в Пуск → Выполнить → Службы .msc в окнах. Найти OracleService (здесь OracleServiceORCL) и нажмите «Начать», чтобы запустить службу базы данных oracle (если она еще не запущена).
После запуска и запуска из командной строки выполните следующее:
(запись tnsalias вы можете найти в файле tnsnames.ora)

Кажется, что база данных не работает. Возможно, это связано с перезагрузкой машины, и экземпляр не настроен на автозапуск, и поэтому он не запускается вручную после запуска с экрана служб.
Просто перейдите в командную строку
Установить Oracle SID C: > set oracle_sid = ORCL
Теперь запустите команду Net start. C: > net start oracleserviceORCL
В моем случае у меня не было OracleService (OracleServiceORCL) в Windows Services.msc , как описано в ответе Бхарати.
Я выполнил эту команду:
а затем OracleService , называемый OracleServiceORCL, только что появился и запущен в Services.msc. Действительно приятно.
Добавьте в среду vars следующую переменную и значение, чтобы определить место файла tnsnames.ora:
из командной консоли, если вы получите эту ошибку, вы можете избежать ее, набрав sqlplus/nolog
то вы можете подключиться conn user/pass @host: порт/сервис
Довольно часто это означает, что слушатель не запустился. Проверьте панель «Службы».
В Windows (как и вы) еще одна распространенная причина заключается в том, что ORACLE_SID не определен в реестре. Либо отредактируйте реестр, либо установите ORACLE_SID в поле CMD. (Поскольку вы хотите запустить sqlplusw.exe, я предлагаю вам отредактировать реестр.)
После поиска у него есть простой способ его решить. Просто выполните следующие действия.
- Проверить статус вашего слушателя.
- откройте командную строку и введите lsnrctl status
- Вы не получите слушателя.
Теперь откройте файл listener.ora , который присутствует в следующем каталоге: C:\oraclexe\app\oracle\product\11.2.0\server\network\ADMIN
-
Откройте этот файл и измените параметр узла с именем компьютера
Вы можете получить имя своего компьютера, щелкнув правой кнопкой мыши по My Computer и проверить имя компьютера и заменить параметр узла именем компьютера следующим образом:
LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1)) (ADDRESS = (PROTOCOL = TCP)(HOST = Electron-PC)(PORT = 1521) ) ) )
Итак, здесь вы можете наблюдать HOST = Electron-PC , который является моим именем компьютера.
Сохраните файл listener.ora и снова вернитесь к поддержке cammand
3. Введите в командной строке следующее lsnrctl start
Это запустит OracleTNSListner .
вы можете проверить его в службе, открыв вкладку служб диспетчера задач. если он не запускается автоматически, вы можете запустить его.
Просто так много, и вы готовы снова работать на оракуле.
Я решил проблему простым способом. В прошлом мой оракул работал отлично. После установки MS SQL Server я заметил эту проблему. Я просто удалил MS SQL Server на своей машине, тогда проблема исчезла. После этого перезагрузите компьютер. Теперь я могу снова подключиться к базе данных Oracle через SQLPlus. Я предполагаю, что между ними есть конфликт. Надеюсь, это поможет.
Еще одно возможное решение, которое просто сработало для меня. учитывая, что я использовал свой локальный логин в качестве разрешений dba.
Следуйте инструкциям, чтобы добраться до Сервисов. Щелкните правой кнопкой мыши на экземпляре и перейдите в раздел «Вход в систему»? (возможно, это не имя, а одно из вкладок, содержащих разрешения). Измените настройки, чтобы использовать LOCAL.
Если это не работает, попробуйте следующее: Измените LISTENER.ora (мой найден в: oracle\product\11.2.0\dbhome_1\NETWORK\ADMIN\listener.ora ) == > добавьте пользовательский прослушиватель, который указывает на вашу базу данных (SID), например, мой SID — XZ0301, поэтому:
Для Windows 7 для изменения LISTENER.ora выполните следующие действия: — Перейдите в меню «Пуск» > «Все программы» > «Аксессуары» — Щелкните правой кнопкой мыши «Блокнот» и выберите «Запуск от имени администратора». — Файл > открыть и перейти к файлу tnsnames.ora. — Внесите изменения, после чего он позволит вам сохранить
ORA-12560: TNS: протокол защиты протокола
- установить переменные среды: ORACLE_BASE, ORACLE_HOME, ORACLE_SID
- убедитесь, что ваш пользователь является частью ORACLE_GROUP_NAME (Windows)
- убедитесь, что файл ORACLE_HOME/network/admin/sqlnet.ora: SQLNET.AUTHENTICATION_SERVICES = (NTS)
- (Windows) Будьте внимательны при добавлении нового клиента Oracle: добавление нового пути в PATH env. переменная может испортить вещи. Первая запись в этой переменной делает разницу: удостоверьтесь, что исполняемый файл sqlplus в ORACLE_HOME (ORACLE_HOME/bin) сначала входит в PATH env. переменная.
Поток текущих шагов:
Измените файл listener.ora и tnsnames.ora в $ Oracle_home\product\11.2.0\client_1\NETWORK\ADMIN location
а. добавить файл listener.ora
ADR_BASE_LISTENER = C: [здесь c является домашним каталогом оргцов]
б. добавить файл tnsnames.ora
- Откройте командную строку и введите
Имя пользователя sqlplus/passowrd @oracle_connection_alias
Пример:
имя пользователя: your_database_username
пароль: Your_database_password
oracle_connection_alias: SCHEMADEV для приведенного выше примера.В моем случае (для OracleExpress) служба выполнялась, но я получил эту проблему при попытке получить доступ к базе данных через sqlplus без идентификатора соединения:
Чтобы сделать его работу, мне нужно было добавить идентификатор соединения (XE для Oracle Express), поэтому следующая команда работала нормально:
Если вы все еще получаете ORA-12560, убедитесь, что вы можете выполнить команду XE. Использование:
И вы должны получить сообщение OK вместе с полной строкой соединения (команда tnsping находится в каталоге установки oracle: [oracle express install dir]\app\oracle\product\11.2.0\server\bin). Если вы не можете выполнить ping, убедитесь, что ваш файл tnsnames.ora доступен для sqlplus. Возможно, вам потребуется установить переменную среды TNS_ADMIN, указывающую на ваш каталог ADMIN, где находится файл, например:
В моем случае (ORA-12560: ошибка адаптера протокола TNS) Проблема Причина проблемы с подключением к базе данных, например, базы данных, имени пользователя и пароля.
Как только у вас возникла проблема. Первоначально вам нужно проверить сведения о подключении, после проверки службы oracle и далее.
Я пропустил некоторые детали подключения, поэтому только я получил ошибку адаптера протокола TNS, Я изменил детали соединения, он будет работать нормально.
Это действительно сработало на моей машине. Но вместо OracleServiceORCL я нашел OracleServiceXE.