Oracle прослушивает изменение порта для удаленных подключений

Я установил Oracle 11gR2 и теперь пытаюсь получить доступ к базе данных из удаленной системы.

Мой listener.ora по-прежнему используется по умолчанию:

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    )
  )

ADR_BASE_LISTENER = /media/oracle/app/oracle

./lsnrctl services возвращает следующее:

oracle@ubuntu:/media/oracle/app/oracle/product/11.2.0/dbhome_1/bin$ ./lsnrctl services

LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 05-MAY-2010 05:00:49

Copyright (c) 1991, 2009, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
Services Summary...
Service "gis.c2c" has 1 instance(s).
  Instance "gis", status READY, has 1 handler(s) for this service...
    Handler(s):
      "DEDICATED" established:0 refused:0 state:ready
         LOCAL SERVER
Service "gisXDB.c2c" has 1 instance(s).
  Instance "gis", status READY, has 1 handler(s) for this service...
    Handler(s):
      "D000" established:0 refused:0 current:0 max:972 state:ready
         DISPATCHER <machine: ubuntu, pid: 2916>
         (ADDRESS=(PROTOCOL=tcp)(HOST=ubuntu.localdomain)(PORT=47616))
The command completed successfully

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

Что происходит не так?

Спасибо!


person tsauerwein    schedule 05.05.2010    source источник


Ответы (1)


Это не вопрос программирования, возможно, это связано с ошибкой сервера.

Однако я бы подумал о следующем:

Определен ли локальный хост в /etc/hosts? И, если вы хотите получить доступ к слушателю из сети, вы должны слушать не на локальном хосте, а на внешнем адресе.

Доступен ли порт 1521? Проверьте, запустив netstat -tlnp.

person Juraj    schedule 10.05.2010
comment
Спасибо за ваш ответ, и вы правы, serverfault, вероятно, был бы лучшим местом для этого. Я пропустил, чтобы сказать, что локально я могу подключиться к порту 1521. localhost указан в /etc/hosts и выводах netstat: tcp 0 0 127.0.0.1:1521 0.0.0.0:* LISTEN - ... tcp6 0 0 :::11432 :::* СЛУШАТЬ - ... - person tsauerwein; 12.05.2010
comment
Это подтверждает, что он прослушивает только локальный интерфейс на порту 1521, поэтому не виден извне. Вы должны изменить локальный хост listener.ora на внешний адрес. (И попытка доступа к локальному хосту из внешней сети показывает, что, ИМХО, вам необходимо изучить основы работы в сети TCP/IP.) - person Juraj; 12.05.2010
comment
Таким образом, в своей конфигурации по умолчанию Oracle может получить доступ только с локального хоста? Я изменил часть «(HOST = localhost)» на «(HOST = ubuntu.localdomain)» (или «(HOST = 172.16.101.32)») и запустил «./lsnrctl reload», но ничего не изменилось. Как должен выглядеть listener.ora? - person tsauerwein; 18.05.2010
comment
(HOST = 172.16.101.32) должно было сработать. Я бы попытался создать новый listener.ora с нуля, используя графический интерфейс Network Assistant. Если у вас установлен X Window на сервере (или вы можете подключиться к удаленному рабочему столу), запустите netca, выберите Конфигурация прослушивателя, удалите прослушиватель и создайте его заново. - person Juraj; 20.05.2010
comment
Хорошо, запустить './lsnrctl reload' недостаточно, мне пришлось перезапустить Oracle. Затем он работал с «(HOST = ubuntu.localdomain)». Спасибо за вашу помощь! - person tsauerwein; 28.05.2010