Listerner прослушивает не тот хост (localhost)

Я создал прослушиватель (используя netca) под названием listener.

Когда я запускаю прослушиватель (используя lsnrctl start), у меня есть следующий журнал.

LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 24-JUN-2012 17:56:35

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

Starting /opt/oracle/eesrv/11.2.0/db1/bin/tnslsnr: please wait...

TNSLSNR for Linux: Version 11.2.0.1.0 - Production
System parameter file is /opt/oracle/network/listener.ora
Log messages written to /opt/oracle/diag/tnslsnr/sakura/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost.localdomain)(PORT=1521)))

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=sakura)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.1.0 - Production
Start Date                24-JUN-2012 17:56:35
Uptime                    0 days 0 hr. 0 min. 10 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /opt/oracle/network/listener.ora
Listener Log File         /opt/oracle/diag/tnslsnr/sakura/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost.localdomain)(PORT=1521)))
The listener supports no services
The command completed successfully

В. Почему слушатель слушает на локальном хосте, а не на сакуре?!?

Вот мой файл listener.ora (где я четко указываю использовать сакуру):

TRACE_DIRECTORY_PROD = /var/opt/oracle/otk/1.0/журнал/сеть/трассировка

SUBSCRIBE_FOR_NODE_DOWN_EVENT_PROD = ВЫКЛ.

LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = sakura)(PORT = 1521)) ) )

ADR_BASE_LISTENER = /opt/оракул

LOG_DIRECTORY_PROD = /var/opt/oracle/otk/1.0/журнал/сеть

Почему я поступил неправильно?

Спасибо


person Bruno    schedule 24.06.2012    source источник
comment
Позволяет ли изменение (HOST = sakura) (PORT = 1521) на (HOST = ‹IP of sakura›) (PORT = 1521) подключиться?   -  person dseibert    schedule 25.06.2012
comment
Вы уверены, что используете правильный файл listener.ora? t не похоже, глядя на значение параметра log_directory_prod   -  person steve    schedule 25.06.2012
comment
@steve — параметры *_PROD применяются к слушателю с именем PROD; прослушиватель с именем LISTENER выглядит так, как будто он получит значения по умолчанию для всего, кроме адреса прослушивания. Поскольку сообщения lsnrctl показывают как localhost.localdomain, так и sakura, я подозреваю, что sakura просто преобразуется в 127.0.0.1 в /etc/hosts. Это может исправить использование явного внешнего IP-адреса или полного доменного имени.   -  person Alex Poole    schedule 25.06.2012
comment
Да, проблема была в файле /etc/hosts. Я использовал явный внешний IP-адрес для sakura, но я также определял 127.0.0.1 как sakura, чтобы решить проблему со временем загрузки для sendmail. Теперь он слушает правильный сервер (то есть: sakura), но время загрузки для sendmail и sm-клиента занимает вечность :( Я могу с этим жить, подумал ... Спасибо за решение !!!   -  person Bruno    schedule 26.06.2012


Ответы (2)


Расширено из комментария

Похоже, что sakura разрешается на тот же адрес, что и localhost.localdomain, то есть 127.0.0.1. Это говорит о том, что в /etc/hosts есть запись, которая отображает sakura в 127.0.0.1.

Вы также можете:

  • удалить это сопоставление;
  • измените его, чтобы показать внешний IP-адрес, если он не разрешается автоматически;
  • измените свой listener.ora, чтобы использовать полное доменное имя, если оно разрешается во внешний IP-адрес, например. sakura.example.com;
  • или измените свой listener.ora, чтобы использовать внешний IP-адрес напрямую без поиска.

Последний вариант может быть самым простым, если только у вас нет назначенного DHCP IP-адреса; и что предложил @dseibert.

person Alex Poole    schedule 26.06.2012

Если вы измените свое имя хоста: {newHostName}

Шаг 1. Проверьте переменные окружения:

> export ORACLE_HOSTNAME={newHostName}
> export ORACLE_UNQNAME=ORCL
> export ORACLE_BASE=/oracle
> export ORACLE_HOME=$ORACLE_BASE/product/12.1.0/db_1
> export ORACLE_SID=ORCL

Шаг 2. Найдите в каталоге установки оракула (например, /oracle) «oldHostName» (например, oracle_12C.localdomain), чтобы просмотреть свое имя хоста:

имя хоста grep -r "oracle_12C" /oracle

В моем случае я нашел эти файлы, чтобы вручную изменить «oracle_12C.localdomain» на новое «newHostName»:

File 1) /oracle/product/12.1.0/db_1/install/chainedInstall/globalcontext.xml
File 2) /oracle/product/12.1.0/db_1/inventory/Components21/oracle.rdbms.scheduler/12.2.0.1.0/context.xml
File 3) /oracle/product/12.1.0/db_1/inventory/Components21/oracle.ldap.client/12.2.0.1.0/context.xml
File 4) /oracle/product/12.1.0/db_1/inventory/Components21/oracle.server/12.2.0.1.0/context.xml
File 5) /oracle/product/12.1.0/db_1/inventoy/Clone/clone.xml

Шаг 3. Запустите экземпляр: перейдите в sqlplus:

cd $ORACLE_HOME/bin sqlplus/AS SYSDBA SQL> ЗАПУСК

Шаг 4. Запустите прослушиватель {SID}, например:

cd $ORACLE_HOME/bin lsnrctl запустить ORCL

Шаг 5. Проверьте результат в консоли... Служба "ORCL" имеет 1 экземпляр(а). ...

person RodH    schedule 19.11.2019