InstanClient10.2+TnsPing+Nagios

Posted on Posted in linux, Nagios, Oracle DB

Bueno el otro día en la Universidad empecé con la migración en los chequeos de Oracle del antiguo sistema de monitorización al nuevo SMU (Sistema de Monitorización Unificado). Para poder realizar un chequeo correcto era necesario instalar el InstanClient 10.2, hasta ahí todo correcto, pero cual fue mi sorpresa al probar el plugins “check_oracle” el cual necesitaba tnsping y los paquetes instantClient_basic y instanclient_sqlplus no traen este binario. Así que tome “prestado” el binario de otras instalaciones pero nada el tnsping no funcionaba correctamente. Aquí voy a explicar como instalar y configurar el instantClient con tnsping y como añadidura el check_oracle si nuestro servidor se a dedicar a monitorizar (NAGIOS).

Descarga e instalación

Descargamos los rpm desde aquí y selecionamos la arquitectura así como los paquetes oracle-instantclient-basic-10.2.0.4-1.x86_64.rpm oracle-instantclient-sqlplus-10.2.0.4-1.x86_64.rpm. Instalamos:

rpm -ivh oracle-instantclient-basic-10.2.0.4-1.x86_64.rpm
rpm -ivh oracle-instantclient-sqlplus-10.2.0.4-1.x86_64.rpm
Variables de Entorno

Editamos el /etc/profile y al final del fichero añadimos el TNS_ADMIN y LD_LIBRARY_PATH

export TNS_ADMIN=/usr/lib/oracle/10.2.0.4/client64/network/admin
export LD_LIBRARY_PATH=/usr/lib/oracle/10.2.0.4/client64/lib
SQLPLUS64 –> SQLPLUS

Creamos el enlace simbólico correspondiente:

cd /usr/bin
ln -s sqlplus64 sqlplus
Configuración TnsPing
CREAMOS LAS RUTAS
mkdir -p /usr/lib/oracle/10.2.0.4/client64/network/admin
mkdir /usr/lib/oracle/10.2.0.4/client64/network/mesg

Tomamos “prestado” el tnsping de otra instalación, por ejemplo del ORACLE_HOME de nuestro servidor de BD, SIEMPRE que tenga la misma arquitectura. Así como el tnsnames.ora de otro servidor o creamos uno nuevo.

El tnsnames.ora lo depositamos en /usr/lib/oracle/10.2.0.4/client64/network/admin/ y el tnsping en “/usr/lib/oracle/10.2.0.4/client64/bin/” pudiendo copiarlo a “/usr/bin” para que este disponible para cualquier programa o usuario.

Bueno ahora probamos si funciona:

tnsping LARRYDB

TNS Ping Utility for Linux: Version 10.2.0.4.0 - Production on 10-OCT-2011 17:58:06
Copyright (c) 1997, 2007, Oracle. All rights reserved.
Message 3511 not found; No message file for product=network, facility=TNSMessage 3512 not found; No message file for product=network, facility=TNSAttempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = larry.snaider.dom)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SID = LARRY))) Message 3509 not found; No message file for product=network, facility=TNS

What’s that!!!??, pero sino funciona, aquí es donde rebusque cielo y tierra para solucionarlo, el problema radica en estas lineas:

Message 3511 not found

TNSMessage 3512

Message 3509 not found

Humm parece que no sabe como “expresarse” es decir el tnsping no sabe como decirnos si ha conseguido resolver el identificador correctamente. Lo que necesita es un archivo llamado tnsus.msb el cual contiene las repuestas que  devuelve el tnsping, este archivo podemos tomarlo del mismo servidor del cual hemos conseguido el binario es decir desde “$ORACLE_HOME/network/mesg/tnsus.msb” y lo copiamos a:

/usr/lib/oracle/10.2.0.4/client64/network/mesg

Una vez copiado todo funcionará correctamente pudiendo hacer tnsping a los identificadores definidos en el tnsnames.ora

Nagios-Check_Oracle

Para que el check_oracle funcione correctamente es necesario editar el script y definir diferentes variables como:

ORACLE_BASE=/usr/lib/oracle/10.2.0.4; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/client64
PATH=$PATH:/usr/lib/oracle/10.2.0.4/client64
TNS_ADMIN=/usr/lib/oracle/10.2.0.4/client64/network/admin
LD_LIBRARY_PATH=/usr/lib/oracle/10.2.0.4/client64/lib

Ya que sino nos dará un error del tipo undefined ORACLE_HOME

Asta aquí el post de hoy, saludos.

One thought on “InstanClient10.2+TnsPing+Nagios

Leave a Reply

Your email address will not be published. Required fields are marked *