Conectividad con BBDD Oracle usando TNSPING

Hola a todos, hoy vamos a hablar de una herramienta de Oracle que utilizamos para saber si tenemos conectividad con la instancia de la BBDD Oracle a la que queremos conectar. Es la herramienta que utilizamos desde la linea de comandos TNSPING.

Esta herramienta se utiliza muy a menudo para saber si desde el cliente llegamos a una instancia concreta de Oracle. Se puede considerar que es similar a la herramienta PING de los sistemas operativos, para saber si es visible una determinada máquina o dirección IP a través de la red, pero específico para instancias de base de datos Oracle.

Fichero tnsnames.ora

Un servidor Oracle utiliza el LISTENER para permitir la conectividad remota a la BBDD Oracle. Un listener configura un nombre de máquina y un puerto, mediante un protocolo de red (usualmente TCP/IP).

Para acceder desde un cliente a un servidor Oracle, por medio de ese LISTENER, se utiliza el TNSNAMES, que se configura en el fichero tnsnames.ora. Este fichero se guarda en el %ORACLE_HOME%\network\admin en entornos Windows o $ORACLE_HOME/network/admin en entornos UNIX.

Este fichero tnsnames.ora se puede configurar desde la herramienta netca (Network Configuration Assistant) o bien manualmente cambiando el fichero desde un editor de texto como notepad.

El resultado de la configuración se guarda en el tnsnames.ora, y para cada una de las BBDD a las que necesitemos acceder desde el cliente, es necesaria una entrada con esta estructura:

BBDD_CONECTAR =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = "host"/"IP")(PORT = "Port"))
    )
    (CONNECT_DATA =
      (SID = )
    )
  )

Para conocer todas las opciones de configuración del tnsnames se puede encontrar en la documentación oficial de Oracle en el siguiente link:
https://docs.oracle.com/database/121/NETRF/tnsnames.htm#NETRF007

En esta configuración, para el acceso a la BBDD es necesario hacer una llamada a BBDD_CONECTAR. Este «nombre» que le ponemos a la BBDD es totalmente personal, con lo que se puede acceder a la misma BBDD con diferentes nombres, simplemente configurando varias entradas de TNSNAMES, cambiando solamente ese nombre. Este nombre es el parámetro net_service_name.

Herramienta TNSPING

La herramienta TNSPING revisa si se puede establecer una conexión con un LISTENER de un servidor Oracle. La sintaxis general del comando es la siguiente:

tnsping net_service_name [veces]

Para poder acceder, el parámetro net_service_name debe estar configurado en el TNSNAMES, como hemos visto antes.

Un ejemplo de uso de TNSPING es:

 tnsping BBDD_CONECTAR

 TNS Ping Utility for 32-bit Windows: Version 12.1.0.1.0 - Production on 23-JUN-2020 11:15:30
 Copyright (c) 1997, 2013, Oracle.  All rights reserved.

 Archivos de parßmetros utilizados:
 E:\app\oracle\client\product\12.1.0\client_1\network\admin\sqlnet.ora Adaptador TNSNAMES utilizado para resolver el alias

Intentando contactar con (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = "host"/"IP")(PORT = "Port"))) (CONNECT_DATA = (SID = "DB_SID")))
Realizado correctamente (210 mseg)

Hay una excepción a la regla, que permite hacer TNSPING sin tener configurada la correspondiente entrada de TNSNAMES, y es especificando la cadena de conexión completa, sin espacios y sin saltos de linea.

tnsping (DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST="host"/"IP")(PORT="Port")))(CONNECT_DATA=(SID="DB_SID")))

 TNS Ping Utility for 32-bit Windows: Version 12.1.0.1.0 - Production on 23-JUN-2020 11:20:11
 Copyright (c) 1997, 2013, Oracle.  All rights reserved.

 Intentando contactar con (DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST="host"/"IP")(PORT="Port")))(CONNECT_DATA=(SID="DB_SID")))
 Realizado correctamente (80 mseg) 

Si se especifica el parámetro veces, pues tnsping se ejecuta el número de veces que diga el parámetro.

tnsping BBDD_CONECTAR 10

TNS Ping Utility for 32-bit Windows: Version 12.1.0.1.0 - Production on 23-JUN-2020 11:16:01
 Copyright (c) 1997, 2013, Oracle.  All rights reserved.

 Archivos de parßmetros utilizados:
 E:\app\oracle\client\product\12.1.0\client_1\network\admin\sqlnet.ora

 Adaptador TNSNAMES utilizado para resolver el alias
 Intentando contactar con (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = "host"/"IP")(PORT = "Port"))) (CONNECT_DATA = (SID="DB_SID")))
 Realizado correctamente (80 mseg)
 Realizado correctamente (650 mseg)
 Realizado correctamente (40 mseg)
 Realizado correctamente (90 mseg)
 Realizado correctamente (40 mseg)
 Realizado correctamente (60 mseg)
 Realizado correctamente (30 mseg)
 Realizado correctamente (60 mseg)
 Realizado correctamente (90 mseg)
 Realizado correctamente (50 mseg)

Esperamos que os haya sido de utilidad.

Un saludo.

Equipo de base de datos

Si no quieres perderte trucos como este y estar al día de este mundo, suscríbete a nuestra newsletter. Te mantendremos informados con un solo email al mes.