Instalación de Oracle Instant Client y módulos perl DBD::Oracle en Linux (Redhat / Centos / Debian / Ubuntu)

Existen para Nagios numerosos plugins para monitorizar Oracle, desde un simple tnsping para monitorizar la respuesta hasta diversas posibilidades para controlar el estado de tablespaces, instancias, discos,… Cuando abordamos la necesidad de usar dichos plugins siempre nos vamos a encontrar con dos posibilidades: su ejecución en local (servidor de Oracle) mediante un cliente para Nagios tipo NRPE o NSClient++ o su ejecución desde el propio servidor de Nagios. Si nos decantamos por esta última estamos obligados a instalar un cliente de Oracle en el servidor de Nagios, idealmente Oracle Instant Client que es menos pesado que el cliente completo. Además de esto, la mayoría de plugins están escritos en Perl, por lo que necesitaremos los módulos adecuados de Perl para que estos funcionen. En este artículo introducimos la instalación y configuración de Oracle Instant Client y los módulos de Perl necesarios habitualmente. Aunque está enfocado para distribuciones Redhat / CentOS mencionamos también como (posiblemente) funcione también en otras distribuciones Linux.

Instalación de Oracle Instant Client en Redhat / CentOS 6 / Debian / Ubuntu mediante paquetes rpm / deb.

Realizaremos una instalación del Instant Client versión 12. El cliente se puede bajar de Oracle previa creación de una cuenta si no la tenemos aún. Podemos seleccionar un cliente en versión anterior si preferimos. Debemos bajar e instalar los paquetes correspondientes a: basic y sqlplus. En nuestro caso también necesitaremos “devel” para conectarnos a BBDD mediante scripts perl desde este servidor. Para el cliente de Oracle 12 en Redhat / Centos bajaremos los rpm. Para Debian / Ubuntu también (los convertiremos con alien a formato deb).

oracle-instantclient12.1-basic-12.1.0.1.0-1.x86_64
oracle-instantclient12.1-sqlplus-12.1.0.1.0-1.x86_64
oracle-instantclient12.1-devel-12.1.0.1.0-1.x86_64.rpm

Para instalar los rpms mediante yum en Redhat / CentOS ejecutamos desde nuestro directorio con los rpm:

yum localinstall oracle* --nogpgcheck

Veremos que nos instala por dependencias también el paquete libaio.
Para la instalación en Debian instalaremos algunos paquetes necesarios previamente, convertiremos los rpm a deb (con alien) y luego los instalaremos:

apt-get install libaio-dev libaio1
alien --scripts *.rpm
dpkg -i *.deb

La instalación de los paquetes básicamente nos crea los directorios:
/usr/lib/oracle/12.1/client64, con dos directorios: bin (paquete sqlplus) y lib (paquetes basic) y otro /usr/share/oracle/12.1 (paquete devel)

Configuración y pruebas de funcionamiento de Oracle Instant Client.

Oracle Instant Client nos instala los paquetes necesarios pero tendremos que crear o copiar nuestro tnsnames.ora para poder conectarnos a equipos remotos usando tnsnames. Para ello (con los cambios necesarios):
Creamos directorio para nuestro tnsnames.ora siguiendo la ubicación estandar con respecto al directorio de instalación:
mkdir /usr/lib/oracle/12.1/client64/network/admin –p

Copiamos nuestro ntsnames.ora en el con las entradas correspondientes, podemos copiarlo directamente del servidor de Oracle y modificarlo si procede. Establecemos las variables de entorno en nuestro “.bash_profile” para que apunten a las rutas donde nos ha instalado el software de oracle. Son las variables habituales que esperará encontrar cualquier programa que use el cliente de Oracle y en nuestro caso son:

export PATH=$PATH:$HOME/bin:/usr/lib/oracle/12.1/client64/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/oracle/12.1/client64/lib
export ORACLE_HOME=/usr/lib/oracle/12.1/client64
export TNS_ADMIN=$ORACLE_HOME/network/admin

Probamos que funcione correctamente sqlplus y que se conecta a los servicios definidos en nuestro tnsnames.ora en servidores de Oracle externos.

#sqlplus usuario@SERVICIO

Instalación de librerías perl para Oracle DBD.

Para poder usar plugins en Perl desde el servidor Nagios (Se conectan a las instancias de Oracle desde este directamente) es necesario instalar, (alguna compilar) las librerías perl necesarias.
Al ejecutar los plugin Perl que las uses ya nos irán diciendo que le hace falta pero en general necesitará: DBI.pm y DBD::Oracle
DBI.pm podemos instalarla buscando el paquete de nuestra distribución que en Redhat/Centos sería “yum install perl-DBI” o desde cpan “cpan> install DBI.pm”. En el caso de Debian / Ubuntuapt-get install libdbi-perl“. Siempre que se pueda es mejor instalar paquetes de la distribución que se actualizarán con esta, cpan… si no queda más remedio o necesitamos tener muy actualizadas las bibliotecas de Perl.
DBD::Oracle. Esta suele ser más guerrera, necesitamos bajarnos el paquete y compilarlo ya que necesita las librerías de Oracle (que vienen con el cliente y necesita ubicarlas correctamente). La operativa en general será:

  1. Tener instalado InstantClient de Oracle tal como se ha descrito. Probado y funcionando perfectamente conectando con sqlplus a nuestro servidor de Oracle. Es muy importante que esté todo perfecto y las variables de entorno bien definidas ya que las usará cpan para localizar las librerías necesarias de Oracle y compilar el módulo.
  2. Desde CPAN nos bajamos el módulo (puede que necesites instalar cpan –yum install cpan-)  cpan> get DBD::Oracle
  3. Nos lo deja normalmente en: /root/.cpan/build/DBD-Oracle-v.vv-xxxx
  4. Desde dicho directorio lo compilamos y lo instalamos:
    perl Makefile.PL
    make
    make install

 

Si todo va bien veremos que localiza las librerías de Oracle gracias a nuestras variables de entorno y compila e instalar correctamente el módulo DBD::Oracle. Tendremos ya todo listo para que poder probar los plugins de acceso a Oracle basados en Perl.
No está de más, una vez instalado el módulo localizarlo y añadir su ruta y la de las librerías de Oracle en un nuevo fichero (p.e. oracle.conf)  en  /etc/ld.so.conf.d,  p.e.:

/usr/local/lib64/perl5/auto/DBD
/usr/lib/oracle/12.1/client64/lib

Un plugin perfecto para aplicar nuestro DBD::Oracle sería. p.e. este 🙂

Tienes un script de ejemplo para probarlo en la traducción de este artículo de mi alter ego de About monitoring o mejor aún aquí mismo para bajar:

 

One thought on “Instalación de Oracle Instant Client y módulos perl DBD::Oracle en Linux (Redhat / Centos / Debian / Ubuntu)

  1. Pingback: CentOS 6: Install and Configure Oracle Client | Void Technology

Leave a Reply

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

*

Comment moderation is enabled. Your comment may take some time to appear.