ORA-12154: TNS: не удалось разрешить указанный идентификатор подключения

Я пытаюсь подключиться к oracle 11g, установленному на Linux EL 5, и получаю следующую ошибку

SQL> connect sys/password@ud06 as sysdba
ERROR:
ORA-12514: TNS:listener does not currently know of service requested in connect
descriptor

мой listener.ora в сети/администраторе выглядит следующим образом

LISTENER=
  (DESCRIPTION=
    (ADDRESS_LIST=
      (ADDRESS=(PROTOCOL=tcp)(HOST=ud06)(PORT=1521))
      (ADDRESS=(PROTOCOL=ipc)(KEY=extproc))))

SID_LIST_LISTENER=
  (SID_LIST=
    (SID_DESC=
      (GLOBAL_DBNAME=orcl)
      (ORACLE_HOME=/home/oracle/app/oracle/product/11g)
      (SID_NAME=orcl))
    (SID_DESC=
      (SID_NAME=plsextproc)
      (ORACLE_HOME=/home/oracle/app/oracle/product/11g)
      (PROGRAM=extproc)))

МОЙ tnsnames.ora выглядит следующим образом

ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )

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

UD06=
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = ud06)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = orcl)
    )
  )

МОЙ статус lsnrctl показывает следующее:

LSNRCTL> status
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ud06.us.server.com)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.1.0 - Production
Start Date                17-FEB-2010 16:23:06
Uptime                    0 days 0 hr. 12 min. 33 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /home/oracle/app/oracle/product/11g/network/admin/listener.ora
Listener Log File         /home/oracle/app/oracle/product/11g/log/diag/tnslsnr/ud06/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ud06.us.server.com)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=extproc)))
Services Summary...
Service "orcl" has 1 instance(s).
  Instance "orcl", status UNKNOWN, has 1 handler(s) for this service...
Service "plsextproc" has 1 instance(s).
  Instance "plsextproc", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully

person user275705    schedule 18.02.2010    source источник
comment
Я обнаружил ORA-12154 на машине, на которой был установлен только клиент Oracle. Мой ответ здесь.   -  person DavidRR    schedule 24.09.2014


Ответы (8)


Можете ли вы успешно пропинговать ud06 (как ud06, а не ud06.us.server.com)?

Что делает команда

lsnrctl services

показывать?

EDIT: мне кажется, что имя экземпляра базы данных на самом деле не "orcl"? Выходные данные службы lsnrctl говорят мне, что служба orcl, хотя и определена в файле listener.ora, на самом деле не работает.

Можете ли вы войти в систему с прямым подключением к серверу? Если да, то что вы используете в качестве значения переменной среды ORACLE_SID? Войдите в систему как пользователь SYS и введите команду:

ИЗМЕНИТЬ СИСТЕМНЫЙ РЕГИСТР;

Затем снова введите команду lsnrctl services и посмотрите, не появится ли дополнительный экземпляр.

Кроме того, как указывает Алекс, команда tnsping сообщает полное имя службы. Отредактируйте файл sqlnet.ora и задайте для NAMES.DEFAULT_DOMAIN значение NULL, если оно имеет значение.

РЕДАКТИРОВАТЬ 2: Работает ли tnsping ud06 на сервере? Или мое предположение, что клиент и сервер находятся в разных системах, неверно?

person DCookie    schedule 18.02.2010
comment
да, я могу пинговать только ud06. Также, когда я выполняю tnsping, я получаю следующее C:\Documents and Settings\a.APPLICATIONS›tnsping ud06 TNS Ping Utility для 32-разрядной Windows: Версия 10.2.0.1.0 — производство 17 февраля 2 010 23:09: 16 Copyright (c) 1997, 2005, Oracle. Все права защищены. Используемые файлы параметров: Используемый адаптер HOSTNAME для разрешения псевдонима Попытка контакта (DESCRIPTION=(CONNECT_DATA=(SERVICE_NAME=ud06.us.server.com))(ADDRESS=(PROTOCOL=TCP)(HOST=19.148.21.230)(PORT= 1521))) ОК (350 мс) - person user275705; 18.02.2010
comment
[oracle@ud06~]$ lsnrctl services LSNRCTL для Linux: Версия 11.2.0.1.0 - Производство 17 февраля 2010 г. 23:13:01 Подключение к DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ud06)( PORT=1521))) Сводка служб... Служба orcl имеет 1 экземпляр(ы). Экземпляр orcl, статус НЕИЗВЕСТНО, имеет 1 обработчик(и) для этой службы... Обработчик(и): ВЫДЕЛЕННЫЙ установлен:1 отказ:0 ЛОКАЛЬНЫЙ СЕРВЕР Служба plsextproc имеет 1 экземпляр(ы). Экземпляр plsextproc, статус UNKNOWN, имеет 1 обработчик(и) для этой службы Обработчик(и): DEDICATED установлен:0 отклонен:0 LOCAL SERVER Команда выполнена успешно - person user275705; 18.02.2010
comment
Он сообщает о ‹b›неправильном‹/b› FQSN; основываясь на записи tnsnames.ora, не будет ли она расширяться до orcl.us.server.com, если она привязывает домен по умолчанию? - person Alex Poole; 18.02.2010
comment
Хорошая точка зрения. Нам нужно больше информации о том, что находится в файлах конфигурации как на сервере, так и на клиенте. - person DCookie; 18.02.2010

Ответ на эту проблему очень прост. Не беспокойтесь о файлах .ora или любой другой конфигурации. Oracle делает все это просто идеально.

Только при подключении через командную строку путается с паролями, в которых есть символ @.

Поэтому при подключении через командную строку SQL не используйте пароль с символом «@». Просто используйте веб-интерфейс для создания учетной записи с паролем без символа «@».

Это!! Проблема решена. Я несколько дней ломал голову, и теперь моя проблема решена!!

person Arun Thundyill Saseendran    schedule 24.01.2014
comment
Спасибо. Я также боролся с 3 дней и, наконец, получил это. Я удалил @ из пароля - person nvsk. avinash; 04.05.2021

SERVICE_NAME в выводе tnsping не соответствует записи в tnsnames.ora; это файл из коробки Windows или из коробки Linux? Похоже, у вас нет локальной (Windows) записи tnsnames.ora для u06, и он предполагает, какое имя службы должно его расширять - я думаю, что это означает ссылка на адаптер имени хоста.

person Alex Poole    schedule 18.02.2010

Я также столкнулся с ORA-12154: TNS: не удалось разрешить указанный идентификатор подключения, и добавление пользователя, пытающегося подключиться к группе oinstall оракула, исправило это.

person wdk    schedule 17.02.2011

сначала попробуйте, запущен ли экземпляр оракула:

для окон:

Пуск->Панель настройки->Инструменты администрирования->Службы->ORACLESERVICEORCL(кстати мой экземпляр)->Пуск

person ezzaam    schedule 05.02.2014

Укажите строку подключения следующим образом:

ИмяСервера:порт/ИмяСервиса;ИмяПользователя;Пароль

Добавить изображение подключения

person user4618214    schedule 25.03.2016

Я также столкнулся с той же ошибкой, попробуйте этот код:

SQL> conn  hr/hr  @pdborcl;

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

sql> SELECT  name,  con_id  FROM  v$pdbs;
person pradeep kumar    schedule 26.03.2017

Я исправил эту проблему, используя эти шаги.

Прежде всего, эта ошибка возникает, если вы установили другой каталог или диск.

Но ответ здесь.

  1. Войдите в Windows как администратор.
  2. Перейдите в Панель управления.
  3. Свойства системы и щелкните Среда.
  4. Найдите переменную ОС и измените имя на «TNS_ADMIN»

    введите здесь описание изображения

  5. И измените значение как «адрес каталога tnsnames» введите здесь описание изображения

  6. Перезапустите систему.

  7. Поздравления.
person aemre    schedule 10.04.2017