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

мой слушатель.ora под network / 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.Ора выглядит следующим образом

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 ответов


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

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

lsnrctl services

показать?

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

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

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

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

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

редактировать 2: делает tnsping ud06 на сервер работы? Или мое предположение, что клиент и сервер находятся в разных системах неправильно?


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

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

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

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


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


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


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

для windows:

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


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

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

Add connection image


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

SQL> conn  hr/hr  @pdborcl;

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

sql> SELECT  name,  con_id  FROM  v$pdbs;

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

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

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

  1. войдите в windows в качестве администратора.
  2. перейти к Панели Управления.
  3. Свойства системы и нажмите Enviroment
  4. найдите переменную ОС и измените имя как "TNS_ADMIN"

    enter image description here

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

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

  7. Congrulations.