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 в сети /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 ответов
Можете ли вы успешно пропинговать ud06 (как ud06, а не ud06.us.server.com)?
Что делает команда
lsnrctl services
шоу?
РЕДАКТИРОВАТЬ: Мне кажется, что имя экземпляра базы данных на самом деле не "orcl"? Вывод служб lsnrctl говорит мне, что служба orcl, хотя и определена в файле listener.ora, на самом деле не работает.
Можете ли вы войти с прямым подключением на сервере? Если да, что вы используете в качестве значения переменной среды ORACLE_SID? Войдите в систему как пользователь SYS и введите команду:
ALTER SYSTEM REGISTER;
Затем снова введите команду lsnrctl services и посмотрите, не появляется ли дополнительный экземпляр.
Кроме того, как указывает Алекс, команда tnsping сообщает полное имя службы. Отредактируйте файл sqlnet.ora и установите значение NAMES.DEFAULT_DOMAIN в NULL, если оно имеет значение.
РЕДАКТИРОВАТЬ 2: Работает ли tnsping ud06 на сервере? Или мое предположение, что клиент и сервер в разных системах неверны?
Ответ на эту проблему очень прост. Не беспокойтесь о файлах.ora или любой другой конфигурации. Oracle делает все это просто идеально.
Только при подключении через командную строку он путается с паролями, в которых есть символ @.
Поэтому при подключении через командную строку SQL не используйте пароль с символом "@". Просто используйте веб-интерфейс, чтобы создать учетную запись с паролем без символа "@".
То есть!! Задача решена. Я ломал голову довольно много дней, и теперь моя проблема решена!!
SERVICE_NAME
в tnsping
вывод не соответствует записи в tnsnames.ora
; это файл из коробки Windows или из Linux? Похоже, у вас нет локального (Windows) tnsnames.ora
запись для u06
и он угадывает, что имя службы должно расширять его - я думаю, что это означает ссылку на адаптер имени хоста.
Сначала попробуйте запустить экземпляр oracle:
для окон:
Пуск-> Панель настройки-> Администрирование-> Службы->ORACLESERVICEORCL(мой экземпляр кстати)-> Пуск
Укажите строку подключения следующим образом:
Имя_сервера: порт / имя_службы; имя пользователя; пароль
Я исправил эту проблему, используя эти шаги.
Прежде всего, эта ошибка произошла, если вы не установили тот же каталог или диск.
Но ответ здесь.
Я также столкнулся с той же ошибкой, попробуйте этот код:
SQL> conn hr/hr @pdborcl;
и если вы обнаружите ту же ошибку, это означает, что у вас другое имя подключаемой базы данных. Проверьте имя подключаемой базы данных, просто написав следующую команду в sqlplus
sql> SELECT name, con_id FROM v$pdbs;
Я также столкнулся с ORA-12154: TNS: не удалось разрешить указанный идентификатор соединения, и добавление пользователя, пытающегося подключиться к группе oinstall, устранило его.