В документации по коду ошибки 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
- не единственный метод именования.) Если вы поделитесь некоторыми более подробными сведениями, решение проблемы должно быть простым.