TNS-12505: TNS: слушатель в настоящее время не знает SID, указанный в дескрипторе соединения - PullRequest
52 голосов
/ 14 апреля 2011

Я пытаюсь подключиться к Oracle 10.2.0 из NetBeans, используя следующую строку подключения:

jdbc:oracle:thin:@localhost:1521:XE

Самое странное, что все работало нормально, до одной из перезагрузок.Я начал получать ошибки TNS-12505 все время;посмотрите на последние записи в моем listener.log:

TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production on 14-APR-2011 13:46:48

Copyright (c) 1991, 2005, Oracle.  All rights reserved.

System parameter file is D:\oraclexe\app\oracle\product\10.2.0\server\network\admin\listener.ora
Log messages written to D:\oraclexe\app\oracle\product\10.2.0\server\network\log\listener.log
Trace information written to D:\oraclexe\app\oracle\product\10.2.0\server\network\trace\listener.trc
Trace level is currently 0

Started with pid=3460
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC_FOR_XEipc)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=Brodyaga-PC)(PORT=1521)))
Listener completed notification to CRS on start

TIMESTAMP * CONNECT DATA [* PROTOCOL INFO] * EVENT [* SID] * RETURN CODE
14-APR-2011 13:48:54 * (CONNECT_DATA=(SID=XE)(CID=(PROGRAM=JDBC Thin Client)(HOST=__jdbc__)(USER=Brodyaga))) * (ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=58458)) * establish * XE * 12505
TNS-12505: TNS:listener does not currently know of SID given in connect descriptor
14-APR-2011 13:49:00 * (CONNECT_DATA=(SID=XE)(CID=(PROGRAM=JDBC Thin Client)(HOST=__jdbc__)(USER=Brodyaga))) * (ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=58481)) * establish * XE * 12505
TNS-12505: TNS:listener does not currently know of SID given in connect descriptor
14-APR-2011 13:49:02 * (CONNECT_DATA=(SID=XE)(CID=(PROGRAM=JDBC Thin Client)(HOST=__jdbc__)(USER=Brodyaga))) * (ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=58487)) * establish * XE * 12505
TNS-12505: TNS:listener does not currently know of SID given in connect descriptor
14-APR-2011 13:50:23 * (CONNECT_DATA=(CID=(PROGRAM=)(HOST=)(USER=Brodyaga))(COMMAND=services)(ARGUMENTS=64)(SERVICE=LISTENER)(VERSION=169869568)) * services * 0

Первые три записи - это мои попытки подключения из NetBeans.Четвертое, соединение через SQL * Plus, работало просто отлично.

Вот содержимое моего listener.ora:

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = D:\oraclexe\app\oracle\product\10.2.0\server)
      (PROGRAM = extproc)
    )
    (SID_DESC =
      (SID_NAME = CLRExtProc)
      (ORACLE_HOME = D:\oraclexe\app\oracle\product\10.2.0\server)
      (PROGRAM = extproc)
    )
  )

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

DEFAULT_SERVICE_LISTENER = (XE)

И tnsnames.ora:

XE =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = Brodyaga-PC)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = XE)
    )
  )

EXTPROC_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE))
    )
    (CONNECT_DATA =
      (SID = PLSExtProc)
      (PRESENTATION = RO)
    )
  )

ORACLR_CONNECTION_DATA = 
  (DESCRIPTION = 
    (ADDRESS_LIST = 
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE)) 
    ) 
    (CONNECT_DATA = 
      (SID = CLRExtProc) 
      (PRESENTATION = RO) 
    ) 
  ) 

И вывод из> служб lsnrctl

C:\Users\Brodyaga>lsnrctl services

LSNRCTL for 32-bit Windows: Version 10.2.0.1.0 - Production on 14-APR-2011 13:59
:45

Copyright (c) 1991, 2005, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC_FOR_XE)))
Services Summary...
Service "CLRExtProc" has 1 instance(s).
  Instance "CLRExtProc", status UNKNOWN, has 1 handler(s) for this service...
    Handler(s):
      "DEDICATED" established:0 refused:0
         LOCAL SERVER
Service "PLSExtProc" has 1 instance(s).
  Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
    Handler(s):
      "DEDICATED" established:0 refused:0
         LOCAL SERVER
The command completed successfully

Обе службы Oracle запущены, и SQL * Plus подключается нормально.

Есть ли какое-нибудь решение этой ошибки?

Ответы [ 17 ]

1 голос
/ 02 июня 2018

В моем случае я только что выполнил следующие шаги в Windows 10.

  1. Перейти к панели управления
  2. нажмите административный
  3. нажмите службы
  4. найти OracelServeceXE, OracleXEClrAgeng, OracleXETNSListener
  5. Щелкните правой кнопкой мыши и нажмите Start / Restart
  6. после завершения процесса. Проверьте, будет ли это работать или будет работать;)
  7. Готово
  8. Всего наилучшего.
1 голос
/ 14 апреля 2011

Ваша база данных, которая, очевидно, имеет XE ORACLE_SID, не определена в listener.ora.Это не проблема, поскольку, когда база данных обычно открывается, она регистрируется в прослушивателе по умолчанию, являясь таковым на порту 1521, так что все в порядке.

  1. база данных открыта?
  2. каков порядок запуска прослушивателя / базы данных?
  3. является ли ошибка постоянной?

Если база данных запускается до прослушивателя, база данных не имеет прослушивателя для регистрации.Это будет происходить каждые несколько минут, поэтому через некоторое время я ожидаю, что ошибка исчезнет из-за регистрации.Вы можете выдать alter system register;, чтобы ускорить это.Если база данных находится в ограниченном режиме, соединения, использующие службу, не будут установлены.Вы используете ORACLE_SID, так что это не ваша проблема.

Также проверьте используемые имена.Локальный хост разрешается по тому же адресу, что и Бродяга-ПК?В строке jdbc вы используете localhost, а слушатель прослушивает Brodyaga-PC.Является ли localhost 127.0.0.1?

0 голосов
/ 18 мая 2018

Перейдите в диспетчер задач и проверьте, запущены ли службы или нет (если не запускаются службы):

OracleXETNSListener

OracleXEClrAgent

OracleServiceXE
0 голосов
/ 16 февраля 2018

в Windows в параметре поиска. Выберите Инструменты администрирования> Службы компонентов> OracleServiceXE (запустить эту службу)

0 голосов
/ 11 января 2017

Я только что столкнулся с той же проблемой сразу после установки Oracle XE 11.2. Прочитав и посоветовавшись с другом DBA, я выполнил следующую команду:

C:\>tnsping xe

TNS Ping Utility for 64-bit Windows: Version 11.2.0.2.0 - Production on 11-ENE-2017 14:27:44

Copyright (c) 1997, 2014, Oracle.  All rights reserved.

Used parameter files:
C:\oraclexe\app\oracle\product\11.2.0\server\network\admin\sqlnet.ora


Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = myLaptop)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = XE)))

ОК (30 мсек)

C:\>

Как видите, разрешение занимает много времени, поэтому я добавил запись в файл hosts следующим образом:

127.0.0.1       localhost

Как только закончите, снова запустите ту же команду:

C:\>tnsping xe

TNS Ping Utility for 64-bit Windows: Version 11.2.0.2.0 - Production on 11-ENE-2
017 14:40:29

Copyright (c) 1997, 2014, Oracle.  All rights reserved.

Used parameter files:
C:\oraclexe\app\oracle\product\11.2.0\server\network\admin\sqlnet.ora


Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = myLaptop)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SER
VICE_NAME = XE)))
OK (30 msec)

C:\>

Поскольку время отклика радикально уменьшается, я успешно попытался подключиться к sqldeveloper.

connection succed

0 голосов
/ 13 августа 2014

Просто для другой возможности проверить, у меня возникла точно такая же проблема с неверным номером порта, указанным в URL подключения. Я создал новый экземпляр oracle11g и забыл убить прежний, занимающий тот же порт 1521, поэтому новый экземпляр автоматически запустился на порту 1522. Редактирование номера порта решило мою проблему.

0 голосов
/ 08 сентября 2014

Это сработало для меня как волшебство.

Я вошел в базу данных и зарегистрировал слушателя.

alter system set local_listener='(...)';
alter system register;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...