Ошибка при входе в программу "ORA-12541: TNS no listener"

Возможные причины:

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

Решение

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

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

                                                    рис 1

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

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

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

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

                                                     рис 2

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

                                                рис 3

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

                                                            рис 4

В случае успешного запуска вывод будет как на рисунке 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>.

В окне введите команду sqlplus sys as sysdba, на запрос пароля введите пароль для пользователя SYS (данный пароль задается при установке OracleXE).
Если при подключении выйдет сообщение Connected to the idle instance, то выполните команду startup и дождитесь ее завершения (рисунок 5).

                                                  рис 5

Признаком же нормальной работы будет сообщение «Connected to: ...» (рисунок 6)

                                                                           рис 6

Связанные статьи