Ошибка ORA-12154 TNS не может разрешить указанное соединение - PullRequest
0 голосов
/ 20 сентября 2018

при запуске Java-приложения я получаю ошибку ORA-12154.В Java-приложении мы должны войти, используя наши учетные данные базы данных.Для некоторых учетных данных пользователя приложение выполняется успешно, но для других оно выдает ошибку ORA-12154: TNS: не удалось разрешить указанный идентификатор подключения.

Может кто-нибудь, пожалуйста, помогите мне с этой проблемой.

Ответы [ 2 ]

0 голосов
/ 20 сентября 2018

В документации по коду ошибки Oracle есть несколько полезных советов по устранению неполадок (следующие из 12.1):

ORA-12154: TNS: не удалось разрешить соединениеуказанный идентификатор
Причина: Запрошено соединение с базой данных или другой службой с использованием идентификатора соединения, и указанный идентификатор соединения не может быть преобразован в дескриптор соединения с использованием одного из методов именованиясконфигурировано.Например, если в качестве используемого идентификатора соединения использовалось сетевое имя службы, то сетевое имя службы не может быть найдено в хранилище методов именования или хранилище не может быть найдено или достигнуто.

Действие:
Если вы используете локальное именование (файл TNSNAMES.ORA):
- Убедитесь, что «TNSNAMES» указано в качестве одного из значений параметра NAMES.DIRECTORY_PATH в профиле Oracle Net (SQLNET.ORA)
- Убедитесь, что файл TNSNAMES.ORA существует, находится в правильном каталоге и доступен.
- Убедитесь, что сетевое имя службы, используемое в качестве идентификатора соединения, существует в файле TNSNAMES.ORA.
- Убедитесь, что в файле TNSNAMES.ORA нет синтаксических ошибок.Ищите непревзойденные скобки или случайные символы.Ошибки в файле TNSNAMES.ORA могут сделать его непригодным для использования.

Если вы используете именование каталогов:
- Убедитесь, что «LDAP» указан в качестве одного из значений параметра NAMES.DIRETORY_PATH в профиле Oracle Net (SQLNET.ORA).
-Убедитесь, что сервер каталогов LDAP включен и доступен.
- Убедитесь, что сетевое имя службы или имя базы данных, используемое в качестве идентификатора соединения, настроено в каталоге.
- Убедитесь, что используется используемый по умолчанию контекстисправить, указав в качестве идентификатора соединения полное сетевое имя службы или полное LDAP DN.

Если вы используете именование easy connect:
- Убедитесь, что «EZCONNECT» указано в качестве одного из значений параметра NAMES.DIRECTORY_PATH в профиле Oracle Net (SQLNET.ORA).
- Убедитесь, что указан правильный хост, порт и имя службы.
- Попробуйте заключить идентификатор соединения в кавычки.Дополнительную информацию о присвоении имен см. В Руководстве администратора Oracle Net Services или в руководстве по конкретной операционной системе Oracle.

Начните с проверки, можете ли вы tnsping указанную службу (tnsping является утилитой, включенной вклиент Oracle).Например, если соединение с x/y@zzz завершается неудачно с ORA-12154, то

tnsping zzz

Это, вероятно, даст

TNS-03505: Failed to resolve name

, но также будет отображать локальный путь sqlnet.ora файл параметров, упомянутый выше.В зависимости от вашей настройки в этом же месте должны быть другие файлы .ora.

Существует несколько способов настройки в зависимости от вашей ОС, клиента Oracle и настройки разрешения имен.(Обратите внимание, что файл tnsnames.ora - не единственный метод именования.) Если вы поделитесь некоторыми более подробными сведениями, решение проблемы должно быть простым.

0 голосов
/ 20 сентября 2018

Наиболее распространенной причиной этого является то, что псевдоним базы данных (к которому вы подключаетесь) не включен в файл TNSNAMES.ORA.

Если у вас есть несколько программных продуктов Oracle, вполне вероятно, что у каждого из них есть свой собственный файл TNSNAMES.ORA (обычно он находится в каталоге \network\admin).Способ состоит в том, чтобы одновременно редактировать все эти файлы (что является глупым ), или создать переменную окружения TNS_ADMIN, которая будет указывать на каталог, содержащий ваш "главный" файл TNSNAMES.ORA, такой какУ меня есть:

M:\>set tns_admin
TNS_ADMIN=C:\0_Oracle_library

Поэтому, каждый раз, когда мне нужно добавить новую базу данных, я редактирую этот файл TNSNAMES.ORA и все мои программы Oracle (Forms, Reports, SQL Developer, TOAD, SQL * Plus,...) получить к нему доступ и использовать его.

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