El error ORA-12541, a menudo acompañado del mensaje «TNS:no listener», es uno de los mensajes más comunes y frustrantes que un DBA o administrador de sistema puede encontrar en un entorno Oracle. Cuando una aplicación o un cliente intenta conectarse a una base de datos Oracle y recibe este error, significa que no ha logrado establecer contacto con el proceso listener en el servidor de la base de datos. Esto bloquea completamente la conectividad, haciendo que la base de datos sea inaccesible.
En mi experiencia, un ORA-12541 puede transformarse rápidamente de un pequeño inconveniente a una interrupción crítica del servicio, especialmente en entornos de producción donde cada minuto de inactividad tiene un costo elevado. La buena noticia es que, en la mayoría de los casos, la causa se puede atribuir a unos pocos factores bien conocidos y fácilmente diagnosticables. Con una metodología de resolución de problemas estructurada, es posible identificar y resolver el problema rápidamente, minimizando el impacto operativo.
Versiones de referencia: Oracle Database 12c, 18c, 19c, 21c · documentación consultada en noviembre de 2026
ORA-12541 TNS:no listener en 60 segundos
# 1. Verifica el estado del listener
lsnrctl status
# 2. Inicia el listener si está detenido
lsnrctl start
# 3. Revisa la configuración del listener
cat $ORACLE_HOME/network/admin/listener.ora
# 4. Revisa la configuración TNS del cliente
cat $ORACLE_HOME/network/admin/tnsnames.ora
# 5. Forzar el registro de la base de datos (si el listener está activo pero la DB no es visible)
sqlplus / as sysdba
ALTER SYSTEM REGISTER;
exit
# 6. Prueba de conectividad desde el cliente
tnsping ORCL
# 7. Verifica el puerto del listener (ej. 1521) en el servidor
ss -tlnp | grep 1521
# 8. Abre el puerto en el firewall del servidor (si es necesario, ej. firewalld)
sudo firewall-cmd --add-port=1521/tcp --permanent
sudo firewall-cmd --reload
Requisitos Previos
Para diagnosticar y resolver el error ORA-12541, es fundamental tener acceso tanto al servidor de la base de datos Oracle como al cliente que intenta la conexión. Serán necesarias credenciales de administrador o un usuario con privilegios suficientes para ejecutar comandos como lsnrctl, sqlplus, y para modificar la configuración de red o del firewall. Es útil conocer el $ORACLE_HOME en el servidor y la ruta del directorio network/admin tanto en el servidor como en el cliente, donde residen los archivos listener.ora y tnsnames.ora.
Qué dice realmente el error
El mensaje «ORA-12541: TNS:no listener» es explícito: el cliente ha intentado contactar al listener de Oracle pero no ha recibido ninguna respuesta. Esto no significa necesariamente que el listener esté apagado, sino más bien que la comunicación no se ha producido. Las posibles causas son múltiples, desde una configuración incorrecta de la red o del propio listener, hasta problemas de firewall o DNS. Es crucial comprender que el error se produce a nivel de red TCP/IP, incluso antes de que la base de datos pueda estar involucrada. El cliente ni siquiera logra «tocar a la puerta» del listener, y mucho menos establecer una sesión con la base de datos.
Un resultado típico que podrías ver en el cliente es:
ORA-12170: TNS:Connect timeout occurred
ORA-12541: TNS:no listener
Esto indica que el intento de conexión ha expirado sin que el listener respondiera, o que no se encontró en absoluto.
¿Está el listener iniciado?
La primera y más común causa del error ORA-12541 es que el listener de Oracle no esté activo en el servidor. Puede ocurrir que después de un reinicio del servidor, un parche o una intervención manual, el listener no se inicie automáticamente. Para verificar su estado, conéctese al servidor de la base de datos como usuario oracle o con un usuario que tenga los permisos para ejecutar lsnrctl y escriba:
lsnrctl status
Si el listener está activo, la salida mostrará su estado, la versión, las direcciones en las que está escuchando y los servicios que gestiona. Si está detenido, la salida será similar a esta:
LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 12-NOV-2026 10:30:00
Copyright (c) 1991, 2019, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracle-server.example.com)(PORT=1521)))
TNS-12541: TNS:no listener
TNS-12560: TNS:protocol adapter error
TNS-00512: Connect failed on address parameter.
Linux Error: 111: Connection refused
En este caso, la solución es simple: iniciar el listener con:
lsnrctl start
Después de iniciar, repita lsnrctl status para asegurarse de que esté operativo y que esté registrando los servicios de la base de datos. Si el listener no se inicia, podría haber un problema con su configuración en el archivo listener.ora o con la disponibilidad del puerto.
Host y puerto: listener.ora vs tnsnames.ora
Incluso si el listener está activo, el ORA-12541 puede ocurrir si la información de conexión proporcionada por el cliente no coincide con aquella en la que el listener está escuchando. Este es un problema común que a menudo se resuelve comparando dos archivos clave:
listener.oraen el servidor de la base de datos: define las direcciones (IP y puertos) en las que el listener está escuchando.tnsnames.oraen el cliente (o en el servidor si el cliente es local): define cómo el cliente debe conectarse a la base de datos, especificando el host y el puerto del listener.
Para ver la configuración del listener en el servidor:
cat $ORACLE_HOME/network/admin/listener.ora
Un ejemplo de listener.ora podría ser:
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = oracle-server.example.com)(PORT = 1521))
)
)
Ahora, verifique el archivo tnsnames.ora en el cliente (o en el servidor, si el cliente es local):
cat $ORACLE_HOME/network/admin/tnsnames.ora
Un ejemplo de tnsnames.ora con una configuración para el servicio ORCL:
ORCL =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = oracle-server.example.com)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
Trampa común: Errores tipográficos en el nombre de host o una dirección IP errónea son las causas más frecuentes. Asegúrese de que el HOST y PORT en el tnsnames.ora del cliente coincidan exactamente con los definidos en el listener.ora en el servidor. Si el servidor tiene múltiples interfaces de red, asegúrese de que la dirección IP especificada sea la correcta y accesible desde el cliente. Si se utiliza un nombre de host, verifique que la resolución DNS sea correcta tanto desde el cliente como desde el servidor (usando ping oracle-server.example.com).
Lee también: Hardening SSH en Linux: Guía Completa 2026
¿Está la base de datos registrada en el listener?
Otra causa de ORA-12541, menos común pero posible si el listener está activo y accesible, es que la base de datos no se haya registrado correctamente con el listener. Esto puede suceder si la base de datos se acaba de iniciar o si hubo un problema de comunicación entre la instancia y el listener. El PMON (Process Monitor) de la base de datos es responsable del registro dinámico de la instancia en el listener. Si este registro no ocurre, el listener no sabe que la base de datos está disponible para las conexiones.
Para forzar el registro de la base de datos en el listener, conéctese a sqlplus como usuario SYSDBA en el servidor de la base de datos y ejecute el comando:
sqlplus / as sysdba
ALTER SYSTEM REGISTER;
exit
Este comando instruye al PMON a registrar inmediatamente la instancia en el listener. Después de ejecutar esto, repita lsnrctl status para verificar que el servicio de la base de datos ahora esté listado en la salida del listener.
Firewall entre cliente y servidor
Los firewalls son una causa muy frecuente de problemas de conectividad, y el ORA-12541 no es una excepción. Un firewall, ya sea a nivel de sistema operativo (como firewalld en RHEL/CentOS o UFW en Ubuntu) o un dispositivo de hardware de red, puede bloquear el puerto TCP utilizado por el listener (por defecto el 1521).
Para verificar si el puerto 1521 está escuchando y si el proceso listener está asociado a él en el servidor de la base de datos, puede usar el comando ss (o netstat en sistemas más antiguos):
ss -tlnp | grep 1521
La salida debería mostrar el listener escuchando en el puerto:
LISTEN 0 128 *:1521 *:* users:(("tnslsnr",pid=1234,fd=10))
Si la salida muestra que el listener está escuchando, el problema podría ser un firewall que bloquea el tráfico entrante hacia ese puerto. Si usa firewalld en un sistema Linux, puede agregar una regla para abrir el puerto 1521 (o el puerto configurado para su listener) de forma permanente:
sudo firewall-cmd --add-port=1521/tcp --permanent
sudo firewall-cmd --reload
Para UFW en Ubuntu, los comandos serían:
sudo ufw allow 1521/tcp
sudo ufw reload
Recuerde verificar también cualquier firewall de red entre el cliente y el servidor. Un ingeniero de red puede ayudarle a revisar las reglas en los routers y dispositivos de seguridad.
Lee también: Linux: Liberar Espacio Disco con 12 Comandos (Guía SysAdmin 2026)
Verificar desde el cliente con tnsping
La herramienta tnsping es indispensable para el diagnóstico de problemas de conectividad TNS (Transparent Network Substrate). Ejecutado desde el cliente, tnsping intenta contactar al listener en el servidor, pero no intenta conectarse a la base de datos en sí. Esto lo hace perfecto para aislar si el problema es la accesibilidad del listener o algo más profundo a nivel de base de datos.
Para usar tnsping, ejecute desde el cliente:
tnsping ORCL
Sustituya ORCL por el nombre del servicio o alias definido en su tnsnames.ora. Una salida exitosa será similar a:
TNS Ping Utility for Linux: Version 19.0.0.0.0 - Production on 12-NOV-2026 10:45:00
Copyright (c) 1991, 2019, Oracle. All rights reserved.
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = oracle-server.example.com)(PORT = 1521))))
OK (0 msec)
Si tnsping falla con un error como TNS-12541 o TNS-12170, entonces el problema es ciertamente a nivel de red o de listener, incluso antes de que la base de datos pueda intervenir. Si tnsping tiene éxito, pero la conexión sqlplus o de la aplicación falla, entonces el problema no es el ORA-12541, sino probablemente un ORA-12154 (TNS:could not resolve the connect identifier specified) o un problema de autenticación/autorización a la base de datos. Lee también: mysqldump Backup: Coherencia y Restauración MySQL/MariaDB
Reiniciar el listener automáticamente
Para evitar que el listener no se inicie después de un reinicio del servidor, es esencial configurarlo para el inicio automático. En sistemas Linux con systemd, esto es gestionado por el servicio Oracle. Asegúrese de que el archivo /etc/oratab esté configurado correctamente para la instancia de su base de datos, con el flag de inicio automático establecido en ‘Y’.
Por ejemplo, una línea en oratab podría ser:
orcl:/u01/app/oracle/product/19.0.0/dbhome_1:Y
Esto permite que los scripts de inicio de Oracle (a menudo ubicados en /etc/init.d/dbora o similares) inicien el listener y la base de datos al arrancar el sistema. Si el listener no se inicia, revise los logs del sistema (journalctl -u oracle-rdbms.service o var/log/messages) y los logs del listener (ubicados en $ORACLE_HOME/network/log/listener.log) para detectar posibles mensajes de error durante el inicio.
Errores Comunes y Resolución de Problemas
| Error o mensaje exacto | Causa | Solución |
|---|---|---|
TNS-12541: TNS:no listener |
Listener no iniciado, firewall, config errónea | lsnrctl start, revisar firewall, listener.ora/tnsnames.ora |
TNS-12560: TNS:protocol adapter error |
Problema a nivel de transporte de red, listener no responde | Verificar lsnrctl status, ping/tnsping, firewall, configuración IP. |
TNS-00512: Connect failed on address parameter |
La dirección especificada en el tnsnames.ora no es alcanzable o correcta |
Revisar hostname/IP en tnsnames.ora, resolución DNS, firewall. |
Linux Error: 111: Connection refused |
La conexión TCP fue rechazada activamente por el servidor | Puerto cerrado por el firewall, servicio no escuchando en el puerto. |
ORA-12154: TNS:could not resolve the connect identifier specified |
El cliente no puede encontrar la definición del servicio en el tnsnames.ora o equivalente |
Revisar TNS_ADMIN, ortografía del servicio, existencia del archivo tnsnames.ora. |
Preguntas frecuentes
¿Qué significa exactamente TNS en ORA-12541?
TNS significa Transparent Network Substrate, el nivel de red de Oracle que gestiona la conectividad entre los clientes y los servidores de base de datos. El error indica que esta capa de comunicación no logró establecer contacto con el listener. Es el protocolo que permite al cliente encontrar y conectarse a la base de datos sin conocer los detalles de la red subyacente.
¿Debe el listener iniciarse antes de la base de datos?
No, no es estrictamente necesario. El listener puede iniciarse incluso después de la base de datos. Una vez que el listener está activo, el proceso PMON de la base de datos se encargará automáticamente de registrar la instancia en el listener. Sin embargo, para garantizar la conectividad inmediata al iniciar la base de datos, es una buena práctica asegurarse de que el listener ya esté en ejecución.
¿Puedo tener varios listeners en el mismo servidor?
Sí, es posible configurar varios listeners en el mismo servidor, cada uno escuchando en puertos diferentes o en interfaces de red diferentes. Esto puede ser útil en arquitecturas complejas o para aislar el tráfico de diferentes bases de datos. Cada listener tendrá su propio archivo listener.ora o estará configurado dentro de un único listener.ora con alias distintos.
¿Cuál es la diferencia entre listener.ora y tnsnames.ora?
listener.ora es un archivo de configuración del lado del servidor que define cómo debe operar el listener, en qué direcciones y puertos debe escuchar y qué servicios debe gestionar. tnsnames.ora es un archivo de configuración del lado del cliente que define cómo el cliente debe conectarse a las bases de datos remotas, especificando los alias de los servicios y los detalles de conexión al listener de destino.
¿El ORA-12541 puede ser causado por problemas de DNS?
Sí, absolutamente. Si el tnsnames.ora del cliente o el listener.ora del servidor utilizan nombres de host en lugar de direcciones IP, y la resolución DNS falla o devuelve una dirección IP errónea, el cliente no podrá encontrar el listener. Verificar la resolución DNS con ping hostname tanto desde el cliente como desde el servidor es un paso fundamental de la resolución de problemas.
Conclusiones con Puntos Clave Operativos
El error ORA-12541 TNS:no listener es un clásico en el mundo Oracle, pero con una metodología de depuración clara, es resoluble en la mayoría de los casos en pocos minutos. La clave es proceder por exclusión, partiendo de los elementos más probables y básicos:
- Verifica el estado del listener: Es el primer y más rápido control. Un listener apagado es la causa número uno.
- Revisa la configuración: Asegúrate de que
listener.oraen el servidor ytnsnames.oraen el cliente estén alineados en términos de host y puerto. - Firewall: Nunca olvides los firewalls. Son a menudo la causa silenciosa de problemas de conectividad, especialmente después de cambios en la configuración de red o del sistema operativo.
-
tnspinges tu amigo: Úsalo para aislar el problema entre la accesibilidad del listener y la disponibilidad de la base de datos.
Adoptando estas prácticas, podrás no solo resolver rápidamente el ORA-12541, sino también prevenir futuras ocurrencias, garantizando una mayor estabilidad a tus entornos Oracle.
Fuentes
Actualizado: noviembre de 2026