Hoy en día, como la máquina nodo ETL quiere acceder a un nuevo servidor de base de datos, necesita configurar tnsnames.ora, y tras configurar el resultado, se informa de un error al conectarse a la base de datos:
ORA-12547: TNS:lost contact
Al principio pensé que era tnsnames.ora mal configurado, pero tras comparar y verificar, esta posibilidad se descartó. Porque se ha verificado que la misma configuración en otros hosts se conecta a este servidor de base de datos.
Después, busqué mucha información en Internet según este error "ORA-12547: TNS: lost contact", algunos decían que faltaba paquetes de software, y otros que había un problema con la configuración de permisos del archivo en el host de la base de datos, pero no coincidían con la situación que se encontraba esta vez.
Más tarde, decidí revisar los registros, revisé el listener.log de registro de monitorización de la base de datos y encontré los siguientes mensajes de error: 20-MAY-2016 15:46:03 * (CONNECT_DATA=(CID=(PROGRAMA=)(HOST=db01)(USUARIO=grid))(COMANDO=estado)(ARGUMENTOS=64)(SERVICIO=OYENTE)(VERSIÓN=186647552)) * estado * 0 Conexión entrante de 192.168.24.1 rechazada 20-MAY-2016 15:46:06 * 12546
TNS-12546: TNS:permission denied
TNS-12560: TNS:protocol adapter error TNS-00516: Permiso denegado
y revisó la configuración de sqlnet.ora del servidor de bases de datos, y descubrió que era porque la restricción de acceso a la IP de la base de datos estaba establecida, es decir, solo la IP especificada podía acceder a la base de datos.
Dado que es una base de datos RAC de dos nodos, modificar sqlnet.ora bajo el usuario de la cuadrícula significa añadir la dirección IP del nodo ETL a la lista blanca de IP para acceder a la base de datos. Tras la modificación, reinicia la escucha (recarga lsnrctl), de lo contrario se reportará un error. |