ОРА-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 в разделе 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.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
Решение
Можете ли вы успешно выполнить пинг ud06 (как ud06, а не ud06.us.server.com)?
Что делает команда
lsnrctl services
показать?
Редактировать:Мне кажется, что, возможно, имя экземпляра базы данных на самом деле не "orcl"?Вывод служб lsnrctl сообщает мне, что служба "orcl", хотя и определена в файле listener.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(кстати, мой экземпляр)-> пуск
Предоставьте строку подключения следующим образом:
Имя сервера:порт / ServiceName; Имя пользователя; Пароль
Я также столкнулся с той же ошибкой, попробуйте этот код:
SQL> conn hr/hr @pdborcl;
и если вы обнаружите ту же ошибку, это означает, что у вас другое подключаемое имя базы данных.Проверьте имя подключаемой базы данных, просто введя следующую команду в sqlplus
sql> SELECT name, con_id FROM v$pdbs;
Я исправил эту проблему, используя следующие шаги.
Во-первых, эта ошибка возникла, если вы не установили тот же каталог или диск.
Но ответ находится здесь.