2010-02-18 8 views
6

Я пытаюсь подключиться к Oracle 11g, установленному на Linux EL 5 и и получить следующее сообщение об ошибкеORA-12154: TNS: не удалось разрешить идентификатор подключения указанного

SQL> connect sys/[email protected] 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))) 

MY 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 шоу s следующим образом:

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 
+0

Я столкнулся с ** ORA-12154 ** на машине, на которой был установлен только ** Клиент Oracle **. Мой ответ [здесь] (http://stackoverflow.com/a/26020374/1497596). – DavidRR

ответ

4

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

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

lsnrctl services 

шоу?

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

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

ALTER SYSTEM REGISTER;

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

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

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

+0

да, я могу пинговать только ud06. Кроме того, когда я tnsping я получаю следующее C: \ Documents и Settings \ a.APPLICATIONS> tnsping UD06 TNS Ping утилита для 32-битных Windows: Версия 10.2.0.1.0 - Производство 17-FEB- 2 010 23:09:16 Copyright (c) 1997, 2005, Oracle. Все права защищены. используемых файлов параметры: Используется адаптер HOSTNAME для разрешения псевдонима Попытки связаться (DESCRIPTION = (CONNECT_DATA = (SERVICE_NAME = ud06.us.server.com)) (ADDRESS = (ПРОТОКОЛ = TCP) (HOST = 19,148. 21.230) (PORT = 1521))) ОК (350 мс) – user275705

+0

lsnrctl выглядит следующим образом: – user275705

+0

[oracle @ ud06 ~] $ lsnrctl services LSNRCTL для Linux: Версия 11.2.0.1.0 - Производство на 17-FEB-2010 23 : 13: 01 Подключение к DESCRIPTION = (ADDRESS = (PROTOCOL = tcp) (HOST = ud06) (PORT = 1521))) Сводка служб ... Услуга «orcl» имеет 1 экземпляр (ы). Экземпляр «orcl», статус UNKNOWN, имеет 1 обработчик (и) для этой услуги ... Обработчик (и): «DEDICATED» установлено: 1 отказано: 0 LOCAL SERVER Услуга «plsextproc» имеет 1 штук, , Экземпляр «plsextproc», статус UNKNOWN, имеет 1 обработчик (и) для этой услуги Обработчик (ы): «DEDICATED» установлено: 0 отказано: 0 LOCAL SERVER Команда успешно завершена – user275705

1

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

0

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

5

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

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

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

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

0

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

для окон:

Пуск-> Конфигурация панельные> Администрация touls-> Услуги-> ORACLESERVICEORCL (мой экземпляр, кстати) -> начать

0

Предоставить строку соединения, как это:

ServerName: порт/SERVICENAME; Имя пользователя; Пароль

Add connection image

0

Я также сталкиваюсь с теми же ошибками, попробуйте этот код:

SQL> conn hr/hr @pdborcl; 

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

sql> SELECT name, con_id FROM v$pdbs; 
0

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

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

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

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

    enter image description here

  5. И изменить значение как "адресный TNSNAMES в" enter image description here

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

  7. Собрания.

 Смежные вопросы

  • Нет связанных вопросов^_^