Oracle listener не запускается

Обновлено: 04.07.2024

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

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

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

Мы проверили, что:

  • Слушатель TNS на сервере запущен.
  • Сам Oracle на сервере запущен.

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

ОТВЕТЫ

Ответ 1

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

Как только я обновил tnsnames.ora до:

Успех! Слушатель в основном говорит вам, что любое имя службы, которое вы используете, не является действительной службой в соответствии с БД.

(* Я запускал sqlplus из клиентской рабочей станции Win7 для удаленного БД и обвинял администраторов баз данных;) *)

Ответ 2

Я знаю, что это старый вопрос, но все еще без ответа. Это заняло у меня целый день исследований, но я нашел самое простое решение, по крайней мере, в моем случае (Oracle 11.2 в Windows 2008 R2) и хотел поделиться им.

Ошибка, если смотреть непосредственно, указывает, что слушатель не распознает имя службы. Но где он хранит названия сервисов? В %ORACLE_HOME%\NETWORK\ADMIN\listener.ora

"SID_LIST" - это просто список SID и имен сервисов в паре в формате, который вы можете скопировать или найти.

Я добавил проблему Service Name, затем в панели управления Windows "Службы" произвел "Перезапуск" в службе прослушивателя Oracle. Теперь все хорошо.

Например, ваш файл listener.ora может изначально выглядеть так:

. И чтобы он распознал имя службы orcl , вы можете изменить его на:

Ответ 3

У меня была эта проблема на сервере Windows 2008 R2 и Oracle 11g

перейдите в Net Manager > Listener > выберите службы базы данных из combox > "Глобальное имя базы данных" должно быть таким же, как "SID" и "Oracle Home Directory" должны быть правильными.

Если у вас нет какой-либо записи для служб баз данных, создайте ее и установите правильную глобальную базу данных, sid и oracle home.

Ответ 4

Мой дескриптор в tnsnames.ora :

Итак, я продолжаю регистрировать сервис в listener.ora вручную:

Наконец, перезапустите слушателя командой:

Ответ 5

Запуск OracleServiceXXX из services.msc работал у меня в Windows.

Ответ 6

На самом деле это должен быть комментарий к Brad Rippe, но, увы, не хватает репутации. Этот ответ дал мне 90% пути. В моем случае установка и настройка баз данных помещали записи в файл tnsnames.ora для баз данных, которые я запускал. Во-первых, я смог подключиться к базе данных, установив переменные среды (Windows):

а затем соединение с помощью

Затем, запустив команду из Brad Rippe, ответьте:

показал, что имена не совпадают точно. Записи, созданные с помощью Oracle Database Configuration Assistant, где первоначально:

Я перезапустил службу прослушивателя TNS (я часто использую lsnrctl stop и lsnrctl start из командной строки администратора [или Windows Powershell] вместо панели управления Services, но обе работают.) После этого я смог подключиться.

Ответ 7

Проверьте, что база данных обновлена. Войдите на сервер, установите переменную среды ORACLE_SID в SID базы данных и запустите SQL * Plus в качестве локального соединения.

Ответ 8

Эта ошибка может возникать, когда приложение создает новое соединение для каждого взаимодействия с базой данных или соединения не закрываются должным образом. Одним из бесплатных инструментов для мониторинга и подтверждения этого является разработчик Oracle Sql (хотя это не единственный инструмент, который вы можете использовать для мониторинга сеансов DB).

вы можете загрузить инструмент с сайта oracle Sql Developer

вот скриншот о том, как контролировать сеансы. (если вы видите много сеансов, накапливающихся для вашего пользователя приложения во время просмотра ошибки ORA-12514, то это хороший признак того, что у вас может быть проблема пула соединений).

enter image description here

Ответ 9

Я также столкнулся с такой же проблемой и потратил 3 дня, чтобы выкопать ее. Это происходит из-за неправильной записи службы TNS. Сначала проверьте, можете ли вы подключиться к резервной базе данных из первичной базы данных, используя sql > sqlplus sys @orastand as sysdba (orastand - резервная база данных), если вы не можете подключиться, это проблема с сервисом. Исправьте запись имени службы в файле TNS на начальном конце. Проверьте этот режим в резервной базе данных, если требуется внести изменения и здесь. и убедитесь, что parmater log_archive_dest_2 имеет правильное имя службы.

Ответ 10

Я решил эту проблему в среде linux, обновляя IP-адрес моей машины в файле /etc/hosts.

Вы можете проверить свой IP-адрес сети (inet end.) с помощью

Посмотрите, совпадает ли ваш IP файл с файлом /etc/hosts:

Отредактируйте файл /etc/hosts, если nedded:

Ответ 11

У меня была та же проблема, для меня просто пишу

сделал трюк, поэтому он подключается к имени службы по умолчанию, которое я предполагаю.

Ответ 12

Для тех, кто может работать с Oracle в виртуальной машине (например, я), я видел эту проблему, потому что у моей VM не хватало памяти, что, похоже, помешало OracleDB правильно запущен/запущен. Увеличение памяти VM и перезапуск исправили проблему.

Ответ 13

то, что сработало для меня, было очень просто, мне просто нужно было запустить сервис вручную в "Служб Windows" (services.msc в cmd trompt). мое имя службы: OracleServiceXXXXX.

Ответ 14

Для меня ошибка 12514 была решена после указания правильного SERVICE_NAME. Вы обнаружите, что на сервере в файле tnsnames.ora , который поставляется с тремя предопределенными именами служб (один из них - "XE" ).

Если ошибка SERVICE_NAME=XE неверна, вы получаете ошибку 12514. SERVICE_NAME не является обязательным. Вы также можете оставить его.

Ответ 15

В моем случае в базе данных закончилось дисковое пространство. Это заставило его не отвечать. Как только я выяснил эту проблему, все снова работало.

Ответ 16

Я получил ту же ошибку, потому что указанный удаленный идентификатор безопасности был неправильным:

Я запросил системную базу данных:

выберите * из global_name;

и нашел мой удаленный SID ( "XE" ).

Тогда я мог бы подключиться без каких-либо проблем.

Ответ 17

Ответ 18

Для меня это было вызвано использованием динамического ipadress с использованием установки. Я переустановил Oracle, используя статический ipadress, и тогда все было в порядке

Ответ 19

Перезапуск ВМ работал на меня

Ответ 20

Моя проблема была решена путем замены "SID" в URL на "имя службы" и правильный хост.

АИС "Техническая инвентаризация" - база знаний

  • Неправильно заданы настройки подключения клиентского приложения;
  • На сервере не запущена (не запускается) служба OracleXETNSListener;
  • Брандмауэр сервера запрещает TCP подключение к порту 1521.

Решение

1. Проверьте настройки подключения клиентского приложения.

Для этого необходимо запустить программу и в окне ввода пароля в поле «База данных» нажать кнопку «. »


Проверьте правильно ли в поле host указан IP адрес сервера на котором установлена база данных системы. Поля port и dbname должны иметь значения 1521 и XE соответсвенно.

Часто бывает что ПК выполняющий роль сервера базы данных полчает IP адрес по DHCP, через некоторый промежуток времени срок «аренды» IP адреса истекает и серверу выдается другой IP
адрес.

2. На сервере проверьте запущены ли службы OracleServiceXE и OracleXETNSListener

Для этого необходимо запустить оснастку «Службы». Сделать это можно через кнопку Пуск —Выполнить. В поле введите команду services.msc и нажмите <enter>.
Проверьте состояние служб.


Если одна из служб не работает, то ее необходимо запустить и проконтролировать, что она запустилась.
Иногда, служба OracleXETNSListener может автоматически останавливаться сразу после запуска из за ошибки в конфигурации.
Проверьте стаус службы. Для этого на сервере необходимо через Пуск — Выполнить ввести команду cmd.exe и нажать <Enter>. В появившемся окне ввести команду lsnrctl status, вывод должен быть
примерно как на рисунке 3


Если вывод как на рисунке 4, то попробуйте выполнить команду lsnrctl start


В случае успешного запуска вывод будет как на рисунке 3. В противном случае необходимо проверить конфигурацию сервиса OracleXETNSListener.
Конфигурация храниться в следующем файле:

1. C:\oraclexe\app\oracle\product\10.2.0\server\NETWORK\ADMIN\listener.ora

Откройте данный файл с блокнотом и проверьте блок

LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE))
(ADDRESS = (PROTOCOL = TCP)(HOST = thehostname)(PORT = 1521))
)
)
вместо thehostname далжен быть указан IP адрес сетевого интерфейса сервера через который производится подключение к БД.

Если значение не соответствует, то введите правильный IP и сохраните изменения.

После этого необходимо перезапустить службу OracleXETNSListener и убедиться, что после перезапуска она работает (Пуск - Выполнить - services.msc - <enter> - выбрать службу OracleXETNSListener - в верхней панели нажать "Стоп", затем "Старт").

3. На сервере проверьте запущен ли экземпляр oracle.

Иногда возможна ситуация, что сервис OracleServiceXE работает, но экземпляр базы данных не запущен.

Чтобы проверить выполните на сервере Пуск — Выполнить, введите cmd.exe и нажмите <Enter>.


При выполнении команды lsnrctl status я получаю следующие ошибки:

Он работал нормально до перезапуска, но теперь он не работает, и я также не могу получить доступ к своей домашней странице Oracle.

Мой listener.ora : (Здесь была ошибка из-за неуместных скобок, добавление нескольких пробелов решило проблему TNS-12518)

Ниже приводится вывод команды lsnrctl start .

Ниже приводится последняя необходимая запись из файла журнала.

Пытался разрешить TNS-12518, и слушатель запущен, но все еще не может получить доступ к домашней странице Oracle

Вывод lnsrctl stat

Команда успешно завершена

1. Проверьте переменные среды (должны быть установлены для System , а не для пользователя):

2. Проверьте правильность определения в listener.ora

3. перезапустите службу (Services> OracleServiceXE)

После этого вы можете увидеть новую службу OracleXETNSListenerXE.
Уже есть старый OracleXETNSListener.

Я запустил оба, а затем смог установить успешное соединение.

Если все работает, но вы по-прежнему не можете подключиться, проверьте, нет ли ошибки: ORA-12557: TNS: адаптер протокола не загружается .

У меня такая же проблема. Решение в моем случае: запустить CMD от имени АДМИНИСТРАТОРА. затем введите и выполните: "lsnrctl start" подождите около 2 минут, после чего все должно работать. (в моем случае было всего 50 секунд, но на всякий случай)

Я решил это, обновив файл listener.ora внутри каталога oracle oraclexe \ app \ oracle \ product \ 11.2.0 \ server \ network \ ADMIN.

Это случилось со мной из-за того, что я изменил имя своей системы, но внутри listener.ora было старое имя для HOST.

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

Убедитесь, что переменная среды ORACLE_HOME указывает на правильный дом оракула. В моем случае это было изменено другой установкой программного обеспечения.

У меня возникла аналогичная проблема при установке oracle 11gR2 на сервер Windows 2012. проблема решается, когда я запускаю cmd.exe с правами администратора и запускаю «lsnrctl start LISTENER».

Я столкнулся с той же проблемой и причиной: у меня персональный ПК с Windows. И я изменил имя компьютера, и это не отразилось на listener.ora. Обновление ORACLE_HOME \ network \ ADMIN \ listener.ora с обновленным именем хоста устранило проблему.

В моем случае я попытался запустить слушатель через консоль:

Эта команда напечатала следующую ошибку:

Итак, я выполнил следующие действия:

  1. Проверьте, содержит ли файл Oracle listener.ora или sqlnet.ora специальные символы
  2. Проверьте, не имеет ли файл Oracle listener.ora или sqlnet.ora` неправильный формат или синтаксис
  3. Проверьте, есть ли в файле Oracle listener.ora или sqlnet.ora какие-нибудь выровненные по левому краю круглые скобки, которые не принимаются парсером Oracle.

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

В моем случае каким-то образом служба слушателя Windows перестала работать, поэтому я не смог подключиться к Qracle с помощью SQL Developer. Однако мне удалось подключиться через sqlplus .

Ниже решение работало для меня:

Во-первых, убедитесь, что ваша служба прослушивателя запущена.

Если служба прослушивателя не запущена, перезапустите службу прослушивателя с помощью диспетчера задач Windows или используйте служебную программу командной строки DOS, чтобы перезапустить службу Windows с помощью команды net start :

Попробуйте запустить службу прослушивания, используя lsnrctl из командной строки DOS.

Мне удалось решить проблему, из-за которой произошел сбой конфигурации в контейнере докеров, на котором запущена песочница Hortonworks HDP 2.6.

Если первоначальная конфигурация не удалась, слушатель будет запущен, и его сначала нужно будет убить:

Следующим шагом будет решение проблемы с общей памятью, которая приводит к сбою процесса настройки.

Изменить / добавить строку в:

Затем перезагрузите конфигурацию:

Имейте в виду, что в следующий раз, когда вы перезапустите контейнер докеров, вам, возможно, придется выполнить команду «mount -a».

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

Как только я подключился к VPN, он просто запустился.

Однако трюк @ Imre с "lsnrctl start" направил меня на верный путь.

Служба прослушивателя остановлена ​​в services.msc .

Пароль пользователя был изменен.

В моем случае с Windows прослушиватель не запускался, и lsnrctl start зависал навсегда. Решением было убить все процессы extproc. Я подозреваю, что это было забавно связано с моим vpn

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

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

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

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

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

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

Какую команду TNSPing (с параметрами) вы использовали? когда вы говорите «работает локально», вы имеете в виду, что приложение подключается к базе данных на том же хосте? Кроме того, каково содержимое вашего файла sqlnet.ora? какие версии указаны для sqlplus и tnsping, и вы уверены, что они находятся в одном и том же ORACLE_HOME? попробуйте перезапустить базу данных. Так как они должны сообщить Слушателю об их существовании при запуске, это может решить вашу проблему. ALTER SYSTEM REGISTER менее радикальна, чем перезапуск базы данных.

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

Однажды я обновился tnsnames.ora до:

тогда я побежал:

Успех! Слушатель в основном говорит вам, что какое бы имя_службы вы не использовали, оно не является действительным сервисом в соответствии с БД.

(* Я запускал sqlplus с клиентской рабочей станции Win7 на удаленную БД и обвинял администраторов БД;) *)

Как я могу запросить БД, если я не могу даже подключиться к ней? Можете ли вы напрямую подключиться к серверу БД и запустить оттуда sqlplus? это может быть не тот случай, когда несколько клиентов / серверов установлены или использовались для установки на одном компьютере. (tnsping выводит местоположение каталога, который он использует) - в моем случае, listener.ora в этом каталоге содержал информацию, относящуюся к старому экземпляру базы данных, который я удалил - быстрым и грязным способом было скопировать все содержимое listener.ora из моя текущая установка Oracle Express в этот другой каталог, который слушатель, кажется, проверяет (я думаю, что я изменил его через реестр или что-то в этом роде, и он имеет приоритет над ORACLE_HOME (?))

Я знаю, что это старый вопрос, но все еще без ответа. Это заняло у меня целый день исследований, но я нашел самое простое решение, по крайней мере, в моем случае (Oracle 11.2 в Windows 2008 R2) и хотел поделиться им.

Ошибка, если смотреть непосредственно, указывает, что слушатель не распознает имя службы. Но где он хранит названия сервисов? В %ORACLE_HOME%\NETWORK\ADMIN\listener.ora

«SID_LIST» - это просто список SID и имен сервисов в паре в формате, который вы можете скопировать или найти.

Я добавил проблему Service Name, затем в панели управления Windows «Службы» произвел «Перезапуск» в службе прослушивания Oracle. Теперь все хорошо.

Например, ваш файл listener.ora может изначально выглядеть так:

. И чтобы он распознал имя службы orcl , вы можете изменить его на:

vapcguy, вы должны быть на сервере базы данных. Похоже, вы на клиенте Следуя инструкциям Sepideh, касающимся сетевого менеджера, я заметил, что мой файл listeners.ora был обновлен и теперь содержит новую запись SID_LIST. Я отредактировал этот ответ, чтобы включить пример синтаксиса «до и после» для читателей, которые по какой-либо причине не могут использовать Net Manager.

У меня была эта проблема на Windows Server 2008 R2 и Oracle 11g

перейдите в Net Manager> Слушатель> выберите службы баз данных из поля со списком> «Глобальное имя базы данных» должно совпадать с «SID», а «Oracle Home Directory» должен быть правильным.

Если у вас нет записей для служб баз данных, создайте их и задайте правильную глобальную базу данных sid и oracle home.

Мой дескриптор в tnsnames.ora :

Итак, приступаю к регистрации сервиса в listener.ora ручном режиме:

Наконец, перезапустите слушатель по команде:

Запуск OracleServiceXXX из services.msc работал для меня в Windows.

В Windows, если вы используете Oracle Release 12.x, убедитесь, что служба OracleServiceORCL запущена. Если эта служба не запущена, то вы также получите тот же код ошибки.

Это действительно должен быть комментарий к ответу Брэда Риппе , но, увы, недостаточно реп. Этот ответ дал мне 90% пути туда. В моем случае установка и настройка баз данных помещают записи в файл tnsnames.ora для баз данных, которые я запускал. Во-первых, я смог подключиться к базе данных, установив переменные среды (Windows):

а затем подключение с помощью

Далее запустим команду из ответа Брэда Риппе:

показал, что имена не совпадают точно. Записи, созданные с помощью Oracle Database Configuration Assistant, где изначально:

Я перезапустил службу прослушивателя TNS (я часто использую lsnrctl stop и lsnrctl start из командного окна администратора [или Windows Powershell] вместо панели управления службами, но оба работают.) После этого я смог подключиться.

У меня такая же проблема. Для меня просто пишу

сделал трюк, делая так, он подключается к имени службы по умолчанию, я думаю.

У нас была похожая проблема с нашей строкой соединения, вызывающая эту ошибку. Мы подключали с помощью тонкого драйвера Oracle, JDBC со строкой подключения: jdbc:oracle:thin:@//localhost:1521/orcl . Скорректированная строка подключения , чтобы устранить эту ошибку было: jdbc:oracle:thin:@localhost:1521 . это зависит от того, сработает ли это - я думаю, что этот способ подключения, судя по тому, что говорили другие, полностью обходит слушателя, используя имя хоста компьютера вместо SID - этот способ подключения вызывает проблемы у сторонних клиентов, - я думаю, это также работает, только когда EZCONNECT указан в sqlnet.ora: NAMES.DIRECTORY_PATH = (TNSNAMES, EZCONNECT)

То, что работало для меня, было действительно простым, мне просто нужно было вручную запустить службу в «Службах Windows» (services.msc в cmd trompt). мое сервисное имя: OracleServiceXXXXX.

В моем случае, хотя Тип запуска установлен на Автоматический, он не запускается при загрузке компьютера. После запуска вручную службы «OracleServiceXE» она работает с Oracle Database 11g Express для подключения к БД и веб-странице APEX (Oracle Application Express).

Проверьте, что база данных работает. Войдите на сервер, задайте для переменной среды ORACLE_SID SID базы данных и запустите SQL * Plus в качестве локального соединения.

Это была именно моя проблема. Наша база данных размещена на виртуальной машине, которая была недоступна, когда я пытался использовать другую программу, которая использовала DP. После просмотра этой темы я понял, что это, вероятно, было вниз.

Эта ошибка может возникать, когда приложение устанавливает новое соединение для каждого взаимодействия с базой данных или соединения не закрываются должным образом. Одним из бесплатных инструментов для мониторинга и подтверждения этого является Oracle Sql developer (хотя это не единственный инструмент, который вы можете использовать для мониторинга сеансов БД).

Вы можете скачать инструмент с сайта оракула Sql Developer

Вот скриншот того, как следить за вашими сессиями. (если вы видите много сессий, накапливающихся для пользователя вашего приложения во время, когда вы видите ошибку ORA-12514, то это хороший признак того, что у вас может быть проблема с пулом соединений).

введите описание изображения здесь

Я решил эту проблему в своей среде linux, обновив IP-адрес моей машины в файле / etc / hosts.

Вы можете проверить свой сетевой IP (inet end.) С помощью:

Посмотрите, совпадает ли ваш IP с файлом / etc / hosts:

Отредактируйте файл / etc / hosts, если он подключен:

это старый, но нет смысла добавлять ваш IP в / etc / hosts. ОП отсутствует SERVICE_NAME, другие вещи совершенно не связаны

Для тех, кто может использовать Oracle на виртуальной машине (например, я), я видел эту проблему, потому что моей виртуальной машине не хватало памяти, что, по-видимому, препятствовало правильному запуску / запуску OracleDB. Увеличение моей виртуальной памяти и перезапуск исправили проблему.

Для меня ошибка 12514 была решена после указания правильного SERVICE_NAME. Вы обнаружите, что на сервере в файле, tnsnames.ora который поставляется с 3 предопределенными именами служб (одно из них «XE»).

Если SERVICE_NAME=XE вы ошиблись, вы получите ошибку 12514. Это SERVICE_NAME необязательно. Вы также можете оставить это в стороне.

Большое спасибо, из вашего решения я нашел хитрость, в моем случае это был антивирус, который блокировал программу, и поэтому не смог получить соединение с Oracle db.

Я также столкнулся с той же самой проблемой и потратил 3 дня, чтобы выкопать это.

Это происходит из-за неправильного входа в службу TNS.

Сначала проверьте, можете ли вы подключиться к резервной базе данных из первичной базы данных, используя sql> sqlplus sys@orastand as sysdba ( orastand резервная база данных).

Если вы не можете подключиться, то это проблема с сервисом. Исправьте запись имени службы в файле TNS на первичном конце.

Проверьте резервную базу данных таким же образом. Внесите изменения и здесь, если требуется.

Читайте также: