Estoy atascado con la configuración del oyente de Oracle. Está escuchando localhost, pero no puedo acceder desde una máquina externa. La red funciona bien, Oracle está instalado en una máquina virtual y estoy trabajando sobre ssh.
Mi archivo listener.ora :
LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS_LIST= (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.110)(PORT = 1530)) ) ) ADR_BASE_LISTENER = /home/oracle/app/oracle y tnsnames.ora :
QSYSTEM = (DESCRIPTION = (ADDRESS_LIST= (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.110)(PORT = 1530)) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = QSYSTEM) ) ) donde QSYSTEM es el SID de la base de datos y 192.168.10.110 es la dirección de la salida netstat del host.
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:50904 0.0.0.0:* LISTEN 9650/ora_d000_QSYST tcp 0 0 192.168.10.110:22 10.48.202.125:63350 ESTABLISHED 2994/sshd: oracle [ tcp 0 0 127.0.0.1:14468 127.0.0.1:1521 ESTABLISHED 9618/ora_pmon_QSYST udp 0 0 127.0.0.1:60990 0.0.0.0:* 9652/ora_s000_QSYST udp 0 0 127.0.0.1:20566 0.0.0.0:* 9650/ora_d000_QSYST udp 0 0 0.0.0.0:21371 0.0.0.0:* 9646/ora_mmon_QSYST udp 0 0 127.0.0.1:58024 0.0.0.0:* 9618/ora_pmon_QSYST salida lsnrctl status :
LSNRCTL for Linux: Version 11.2.0.3.0 - Production on 02-MAR-2016 13:57:16 Copyright (c) 1991, 2011, Oracle. All rights reserved. TNS-01150: The address of the specified listener name is incorrect NL-00303: syntax error in NV stringEstoy usando Oracle 11g Standard en RHEL 7.
Solución: cuando reemplacé localhost con la dirección IP y cambié y formateé correctamente listener.ora y tnsnames.ora , establecí la conexión.
Si desea que su oyente maneje las conexiones internas y externas usando ambas direcciones, debe enumerar ambas en listener.ora , agregando un nivel ADDRESS_LIST con paréntesis equilibrados:
LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS_LIST= (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.110)(PORT = 1521)) ) ) )Se puede usar el mismo puerto para ambas direcciones, o pueden ser diferentes si lo prefiere. Si son diferentes, un oyente separado podría ser menos confuso, pero funcionará de cualquier manera.
Luego debe detener e iniciar el oyente para recoger los cambios. Puede verificar lo que está escuchando con lsnrctl status y/o netstat.
También puede comprobar cómo se registra su base de datos mirando el parámetro de inicialización LOCAL_LISTENER . Si eso no está configurado o está usando un nombre de host, verifique que se resuelva en una de las direcciones IP que ha especificado, ya sea a través de DNS o en /etc/hosts. Si no se puede resolver correctamente, no podrá registrarse con el oyente, lsnrctl services no mostrarán su(s) nombre(s) de servicio y no podrá conectarse a través de SQL*Net usando un nombre de servicio. (O un SID, ya que no tiene entradas SID_LIST_LISTENER ).