Sqlplus as sysdba ora 12560 tns protocol adapter error

ORA-12560 In this post, I'll talk about 3 error patterns of ORA-12560 on Windows platform. Database service is stop Incorrect ORACLE_SID Reach limitation of PROCESSES A. Database Service is Stop When we tried to connect to the database via SYSDBA, we got ORA-12560. C:UsersAdministrator>sqlplus / as sysdba ... ERROR: ORA-12560: TNS:protocol adapter error Enter user-name:… Read More »How to Resolve ORA-12560 on Windows Server

In this post, I’ll talk about 3 error patterns of ORA-12560 on Windows platform.

  1. Database service is stop
  2. Incorrect ORACLE_SID
  3. Reach limitation of PROCESSES

A. Database Service is Stop

When we tried to connect to the database via SYSDBA, we got ORA-12560.

C:UsersAdministrator>sqlplus / as sysdba
...
ERROR:
ORA-12560: TNS:protocol adapter error

Enter user-name:

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:UsersAdministrator>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.

B. Incorrect ORACLE_SID

First of all, allow me reproduce the error ORA-12560 for you.

Check the instance name and current status.

C:UsersAdministrator>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;

INSTANCE_NAME    STATUS
---------------- ------------
erpapp           OPEN

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:UsersAdministrator>set ORACLE_SID=ERPAPP2
C:UsersAdministrator>echo %ORACLE_SID%
ERPAPP2

Then connect again.

C:UsersAdministrator>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.

C:UsersAdministrator>regedit

Windows Regedit - Oracle Software - Check "ORACLE_SID"

Windows Regedit — Oracle Software — Check «ORACLE_SID»

In this case, we should set the correct ORACLE_SID, then try again.

C. 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:

  1. Raise the maximum number of processes online:
  2. SQL> alter system set processes=3000 scope=both;

    System altered.

    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.

  3. Force all users to connect the database through shared server mode, except DBA. For example:
  4. SQL> alter system set shared_servers = 200 scope=both;

    System altered.

    SQL> alter system set dispatchers='(address=(protocol=tcp)(PORT=1521)) (dispatchers=20)(sessions=1000)' scope=both;

    System altered.

    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.

16 ответов

  • Перейдите на машину Windows, на которой размещен сервер базы данных Oracle.
  • Перейдите в Пуск → Выполнить → Службы .msc в окнах. Найти OracleService
    (здесь OracleServiceORCL) и нажмите «Начать», чтобы запустить службу базы данных oracle (если она еще не запущена).
  • После запуска и запуска из командной строки выполните следующее:

    tnsping <tnsalias>

(запись tnsalias вы можете найти в файле tnsnames.ora)

Изображение 7158

Bharathi
01 авг. 2011, в 22:26

Поделиться

Кажется, что база данных не работает. Возможно, это связано с перезагрузкой машины, и экземпляр не настроен на автозапуск, и поэтому он не запускается вручную после запуска с экрана служб.

Просто перейдите в командную строку

  • Установить Oracle SID
    C: > set oracle_sid = ORCL

  • Теперь запустите команду Net start.
    C: > net start oracleserviceORCL

Yasir Ahmed
06 дек. 2012, в 08:14

Поделиться

Добавьте в среду vars следующую переменную и значение, чтобы определить место файла tnsnames.ora:

TNS_ADMIN

C:оракулпродукт10.2.0client_1сетьадмин

user2382157
14 май 2013, в 16:17

Поделиться

из командной консоли, если вы получите эту ошибку, вы можете избежать ее, набрав
sqlplus/nolog

то вы можете подключиться
conn user/pass @host: порт/сервис

demian
26 фев. 2016, в 18:37

Поделиться

Довольно часто это означает, что слушатель не запустился. Проверьте панель «Службы».

В Windows (как и вы) еще одна распространенная причина заключается в том, что ORACLE_SID не определен в реестре. Либо отредактируйте реестр, либо установите ORACLE_SID в поле CMD. (Поскольку вы хотите запустить sqlplusw.exe, я предлагаю вам отредактировать реестр.)

APC
01 авг. 2011, в 11:09

Поделиться

После поиска у него есть простой способ его решить.
Просто выполните следующие действия.

  • Проверить статус вашего слушателя.
    • откройте командную строку и введите lsnrctl status
    • Вы не получите слушателя.
  • Теперь откройте файл listener.ora, который присутствует в следующем каталоге: C:oraclexeapporacleproduct11.2.0servernetworkADMIN

    • Откройте этот файл и измените параметр узла с именем компьютера
    • Вы можете получить имя своего компьютера, щелкнув правой кнопкой мыши по 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.

вы можете проверить его в службе, открыв вкладку служб диспетчера задач. если он не запускается автоматически, вы можете запустить его.

Просто так много, и вы готовы снова работать на оракуле.

Лучшее счастье.

Mrinmoy
19 янв. 2016, в 07:32

Поделиться

Я решил проблему простым способом. В прошлом мой оракул работал отлично. После установки MS SQL Server я заметил эту проблему. Я просто удалил MS SQL Server на своей машине, тогда проблема исчезла. После этого перезагрузите компьютер. Теперь я могу снова подключиться к базе данных Oracle через SQLPlus. Я предполагаю, что между ними есть конфликт. Надеюсь, это поможет.

BigData
22 авг. 2013, в 07:01

Поделиться

Еще одно возможное решение, которое просто сработало для меня… учитывая, что я использовал свой локальный логин в качестве разрешений dba.

Следуйте инструкциям, чтобы добраться до Сервисов. Щелкните правой кнопкой мыши на экземпляре и перейдите в раздел «Вход в систему»? (возможно, это не имя, а одно из вкладок, содержащих разрешения). Измените настройки, чтобы использовать LOCAL.

ClickerTweeker
15 июль 2016, в 15:46

Поделиться

Если это не работает, попробуйте следующее:
Измените LISTENER.ora (мой найден в: oracleproduct11.2.0dbhome_1NETWORKADMINlistener.ora) == > добавьте пользовательский прослушиватель, который указывает на вашу базу данных (SID), например, мой SID — XZ0301, поэтому:

## Base XZ03001

SID_LIST_LISTENER_XZ03001=(SID_LIST=(SID_DESC=(ORACLE_HOME =
E:oracleproduct11.2.0dbhome_1)(SID_NAME= XZ03001)))

LISTENER_XZ03001=(DESCRIPTION_LIST=(ADDRESS=(PROTOCOL =
TCP)(HOST=MyComputerName)(PORT= 1521)))

DIAG_ADR_ENABLED_LISTENER_XZ03001=ON

ADR_BASE_LISTENER_XZ03001=E:oracle

Перезагрузите компьютер

Для Windows 7 для изменения LISTENER.ora выполните следующие действия:
 — Перейдите в меню «Пуск» > «Все программы» > «Аксессуары»
 — Щелкните правой кнопкой мыши «Блокнот» и выберите «Запуск от имени администратора».
 — Файл > открыть и перейти к файлу tnsnames.ora.
 — Внесите изменения, после чего он позволит вам сохранить

user2129206
22 сен. 2013, в 18:04

Поделиться

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. переменная.

Eliandro
25 сен. 2017, в 19:05

Поделиться

Поток текущих шагов:

  • Измените файл listener.ora и tnsnames.ora в
    $ Oracle_homeproduct11.2.0client_1NETWORKADMIN location

    а. добавить файл listener.ora

    LISTENER =
      (DESCRIPTION_LIST =
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
          (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
    )
    

    )

ADR_BASE_LISTENER = C: [здесь c является домашним каталогом оргцов]

б. добавить файл tnsnames.ora

    SCHEMADEV =
            (DESCRIPTION =
                     (ADDRESS_LIST =
                     (ADDRESS = (PROTOCOL = TCP)(HOST = dabase_ip)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = SCHEMADEV)
    )
  )
  1. Откройте командную строку и введите
    Имя пользователя sqlplus/passowrd @oracle_connection_alias

Пример:
имя пользователя: your_database_username
        пароль: Your_database_password
        oracle_connection_alias: SCHEMADEV для приведенного выше примера.

Md. Kamruzzaman
22 май 2017, в 10:36

Поделиться

В моем случае (для OracleExpress) служба выполнялась, но я получил эту проблему при попытке получить доступ к базе данных через sqlplus без идентификатора соединения:

sqlplus sys/mypassword as sysdba  

Чтобы сделать его работу, мне нужно было добавить идентификатор соединения (XE для Oracle Express), поэтому следующая команда работала нормально:

sqlplus sys/[email protected] as sysdba

Если вы все еще получаете ORA-12560, убедитесь, что вы можете выполнить команду XE. Использование:

tnsping XE

И вы должны получить сообщение OK вместе с полной строкой соединения (команда tnsping находится в каталоге установки oracle: [oracle express install dir]apporacleproduct11.2.0serverbin). Если вы не можете выполнить ping, убедитесь, что ваш файл tnsnames.ora доступен для sqlplus. Возможно, вам потребуется установить переменную среды TNS_ADMIN, указывающую на ваш каталог ADMIN, где находится файл, например:

TNS_ADMIN=[oracle express installation dir]apporacleproduct11.2.0servernetworkADMIN

walkeros
14 март 2017, в 14:47

Поделиться

В моем случае (ORA-12560: ошибка адаптера протокола TNS) Проблема Причина проблемы с подключением к базе данных, например, базы данных, имени пользователя и пароля.

Как только у вас возникла проблема. Первоначально вам нужно проверить сведения о подключении, после проверки службы oracle и далее.

Я пропустил некоторые детали подключения, поэтому только я получил ошибку адаптера протокола TNS,
Я изменил детали соединения, он будет работать нормально.

muthukumar
13 фев. 2017, в 13:50

Поделиться

Это действительно сработало на моей машине. Но вместо OracleServiceORCL я нашел OracleServiceXE.

user2851218
06 окт. 2013, в 08:01

Поделиться

Вам нужно указать SQLPlus, к какой базе данных вы хотите войти. Строка хоста должна быть либо строкой соединения, либо псевдонимом, настроенным в вашем файле TNSNames.ora.

Andrew Cooper
01 авг. 2011, в 05:55

Поделиться

Ещё вопросы

  • 0Ошибка SQL на ключевое слово «ссылки»
  • 0Почему я не могу получить входное значение
  • 1ProcessBuilder не находит исполняемый файл после перехода на Spring Boot
  • 0Интерпретатор создает копию объекта в трассировке
  • 0$ _POST и манипулирование кодом
  • 1Gulp: Uglifying Bootstrap 4 js-файлов
  • 0Можно ли заставить изображение QLabel Pixmap отображаться в круге с помощью таблицы стилей
  • 0Внутреннее объединение двух таблиц с результатами даты
  • 0Как отсортировать вектор <pair <int, pair <int, pair <string, pair <int, int>>>>>?
  • 1Сбой pytest: не удается найти запрошенный URL
  • 1Обрабатывать прерванное исключение AsyncTask в Android?
  • 1DropDownList в MVC5
  • 1Совместное использование переменной по сеансу
  • 0Как получить значение флажка из диалогового окна в Jquery Var
  • 1Прокси-шаблон: как это более эффективно, чем создание реального объекта?
  • 0Упрощение MySQL Query для удаления нескольких выборок в операторе Where
  • 0ссылки в iframe / span не могут быть нажаты
  • 1TFS SDK 2013 Получить имена команд в заданном командном проекте
  • 1Маркеры Google Карты не очищаются при добавлении новых
  • 0Вызов функции с одного контроллера на другой контроллер с использованием Factory в Angularjs
  • 1GATE API и JAPE-код, возвращают пустой результат
  • 0Найти элемент для кнопки или изображения
  • 0PHP Build Tree с тегом ul
  • 1Переменные из файла свойств в Ant
  • 0Не уверен, что сдвиг страницы слегка
  • 1Есть ли более чистый и эффективный способ сделать эти калькуляторы BMI & Fat% в Python?
  • 0Установление имени, связанного с HTML-ссылкой
  • 1Как создать XML в Java, используя XSD и JSON или HashMap элементов / значений в качестве входных данных
  • 0CodeIgniter не загружает загружаемую библиотеку
  • 0Как конвертировать escape-коды в wxString
  • 0Код ошибки: 1054, неизвестный столбец при простом вводе [дубликаты]
  • 0ActiveRecord NoDatabaseError при попытке подключиться к экземпляру AWS MySQL
  • 0Rails, изменяя атрибут класса элемента HTML при нажатии на него
  • 1Элементы списка в файл данных c #
  • 0Использование | в PHP
  • 0Firefox семейства шрифтов дочерние элементы не наследуют, в то время как Chrome работает правильно
  • 0получить тело письма imap_fetchbody ()
  • 0Разбить строку на две части на основе одного из префиксов в массиве
  • 1IDE Selenium — ошибка типа: document.getElementById (..) имеет значение null
  • 1Простая карта JavaScript — использование объекта в качестве возврата
  • 0Angular JS, как иметь два отдельных «главных» дисплея, которые могут часто меняться
  • 1интеграция webpack и kafka-узла
  • 1Javascript window.open работает в консоли Chrome, но не как фрагмент
  • 1C # Windows Forms для смешивания VS2013
  • 1Java слушатель для щелчка мышью по любому текстовому полю на экране
  • 0Невозможно отправить запрос через $ http (AJAX) в сервисе angularjs
  • 1Использование linq для поиска дубликатов в списке <Vector2>
  • 1java SecureRandom nextInt () против nextGaussian ()
  • 0AngularJs Select Option связывание Выпуск совместно модальных
  • 1C # Запрос на отправку или получение данных был запрещен, потому что сокет не подключен


Database


4 Mar 201418 Feb 2018

2 Minutes

ORA-12560: TNS:protocol adapter error

Cause:

Oracle classify this as a ‘generic protocol adapter error’. In my experience, it indicates that Oracle client does not know what instance to connect to or what TNS alias to use. The names of the alias are in the tnsnames.ora file.

Possible Remedies:

Go to the windows machine that hosts the Oracle database server

Go to Start -> Run -> Services.msc in windows. Locate OracleService (here OracleServiceORCL) and click on “Start” to start the oracle database service (if not already running)

Once it is up and running, from the command prompt run the following:

tnsping < tnsalias >

If everything is ok till this step above, Then, look for the file tnsnames.ora  typically in

C:oraclexeapporacleproduct10.2.0serverNETWORKADMIN

Now try

sqlplus sys/mypassword as sysdba

If you still get ORA-12560, make sure you can ping the XE service. Use:

tnsping XE

And you should get the OK message along with full connection string (tnsping command is located in oracle’s installation dir: [oracle express installation dir]apporacleproduct11.2.0serverbin).

You might need to set TNS_ADMIN environment variable pointing to your ADMIN directory, where the file is located, for example:

TNS_ADMIN=[oracle express installation dir]apporacleproduct11.2.0servernetworkADMIN

Now,

Check the status of your listener.

open command prompt and type lsnrctl status

If You will get no listener then,

the open listener.ora file which is present in the following directory: C:oraclexeapporacleproduct11.2.0servernetworkADMIN

Open that file and change the host parameter with you computer name

You can get your computer name by right click on My Computer and check your computer name, and replace host parameter with your computer name as follows:

LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1)) (ADDRESS = (PROTOCOL = TCP)(HOST = Daemon-PC)(PORT = 1521) ) ) )

So here you can observe, HOST = Daemon-PC which is my computer name.

Save the listener.ora file and again return to the command prompt

Type the following in command prompt lsnrctl start

This will start the.OracleTNSListner

If You will get listener then, and it says the command successfully completed, then run this and make sure for the final time if Oracle is running.

C:> ORADIM -NEW -SID ORCL

And, then follow the steps:-

If running on the server (or workstation) that is running the database (i.e. if the database is local to the machine) then try explicitly setting ‘ORACLE_SID’.

C:>set ORACLE_SID=

In my case it was ORACLE_SID=XE

and then try again. If this works then consider whether to make the change permanent by specifying it as a system variable.
Go to command prompt

C:> set oracle_sid=XE

e.g C:> set oracle_sid=

C:> sqlplus /nolog
sql:>connect sys/sys as sysdba

or

sql:>connect sys as sysdba
password : sys {press enter}
sql:> connected

or

sql:> connect scott {press enter}
Enter password :tiger {press enter}
sql:> connected

or

sql:> connect system {press enter}
Enter password :manager {press enter}
sql:> connected

This should finally resolve things. 🙂

Published by Kuharan Bhowmik

Big Data & Cloud Engineer
View all posts by Kuharan Bhowmik

Published
4 Mar 201418 Feb 2018

Понравилась статья? Поделить с друзьями:
  • Sqlmap py error missing a mandatory option
  • Sqlmap 500 error
  • Sqliteexception sqlite error no such table
  • Sqliteexception sql logic error no such table users
  • Sqlite3 как изменить тип данных столбца