ORA-12154: TNS: не удалось разрешить указанный идентификатор подключения - PullRequest
7 голосов
/ 18 февраля 2010

Я пытаюсь подключиться к 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 в сети / admin выглядит следующим образом

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

Ответы [ 8 ]

5 голосов
/ 24 января 2014

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

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

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

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

4 голосов
/ 18 февраля 2010

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

Что означает команда

lsnrctl services

показать

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

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

ALTER SYSTEM REGISTER;

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

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

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

1 голос
/ 18 февраля 2010

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

0 голосов
/ 10 апреля 2017

Я исправил эту проблему с помощью этих шагов.

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

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

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

    enter image description here

  5. И измените значение как «адрес каталога tnsnames» enter image description here

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

  7. Congrulations.
0 голосов
/ 26 марта 2017

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

SQL> conn  hr/hr  @pdborcl;

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

sql> SELECT  name,  con_id  FROM  v$pdbs;
0 голосов
/ 25 марта 2016

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

имя_сервера: порт / имя_службы; имя пользователя; пароль

Add connection image

0 голосов
/ 05 февраля 2014

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

для окон:

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

0 голосов
/ 17 февраля 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...