ORA-12514 TNS: слушатель в настоящее время не знает об услуге, запрошенной в дескрипторе соединения

У нас есть приложение, работающее локально, где мы видим следующую ошибку:

ORA-12514: TNS: слушатель в настоящее время не знает об услуге, запрошенной в дескрипторе соединения

Я проверил соединение с помощью TNSPing который решил правильно, и я попытался SQLPlus попытаться подключиться, но не с той же ошибкой, что и выше. Я использовал этот синтаксис для SQLPlus:

sqlplus username/password@addressname[or host name]

Мы убедились, что:

  • Слушатель TNS на сервере работает.
  • Сам Oracle на сервере работает.

Мы не знаем о каких-либо изменениях, которые были внесены в эту среду. Что-нибудь еще мы можем проверить?

31 ответ

Это сложная ошибка Oracle, поскольку она может иметь множество возможных причин. Кажется, это означает, что что-то в этой цепочке событий не работает:

  • Найдите имя службы в tnsnames.ora.
  • Подключитесь к хосту в записи tnsnames.
  • Достичь слушателя на этом хосте
  • Сообщите слушателю, что вы хотите подключиться к службе, указанной в записи tnsnames.

Все, что вызывает эту ошибку, может вызвать эту ошибку: от отсутствующей скобки в tnsnames.ora до подключения к неправильному хосту базы данных.

Если tnsping работает, это исключает некоторые вещи, поскольку это означает, что мы можем найти запись в tnsnames, подключиться к хосту и связаться со слушателем... так что мы знаем, например, что хост по крайней мере существует, и там работает прослушиватель Oracle; но слушатель говорит, что имя службы неизвестно. Это все еще оставляет много возможностей, таких как:

  • имя службы в tnsnames.ora неверно
  • экземпляр базы данных не запущен и/или не зарегистрирован в прослушивателе
  • мы подключаемся к неправильному хосту Oracle
  • мы подключаемся к неправильному прослушивателю (неправильный порт) на правильном хосте Oracle
  • проблема с брандмауэром/сетью (вероятно, брандмауэр может разрешать передачу пакетов tnsping, но блокировать подключение других клиентских приложений)

Я видел ORA-12514 с небольшими опечатками в tnsnames.ora... типа неправильных отступов. Но я подозреваю, что tnsping не увенчается успехом, если это проблема.

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

Подключение к хосту Oracle и запускlsnrctl statusможет помочь проверить, известна ли служба этому прослушивателю. Помните, чтоlsnrctlпо умолчанию проверяет имя прослушивателя по умолчанию. Возможно, вам придется проверить Listener.ora, чтобы увидеть, есть ли в этом экземпляре базы данных прослушиватели других имен.

Другие вопросы по тегам