Instalación, configuración y prueba del manejador ODBC de Informix en Unix

El uso del estándar ODBC (Open Database Connectivity), proporciona una flexibilidad importante, tanto a herramientas de desarrollo, como a desarrollos de terceros, que tienen que acceder a diversas bases de datos. Informix cuenta con sus propios manejadores ODBC (ODBC drivers) para poder acceder a los diferentes manejadores de base de datos Informix actualmente soportados. Si bien la instalación y uso de los manejadores ODBC de Informix bajo Windows, es relativamente común y cómoda, la instalación, configuración y prueba de los manejadores ODBC de Informix sobre Unix, suele ser un poco más compleja. Este artículo está pensado en los usuarios que no necesariamente tienen conocimientos de Informix , pero que necesitan hacer una instalación, configuración y prueba básica del manejador ODBC de Informix, así como aquellos usuarios de Informix que necesitan configurar un manejador ODBC sobre Unix por primera vez.

Aquiles Loranca Sánchez, . Accelerated Value Program Engineer, Certified IT Specialist, IBM

Aquiles LorancaAquiles Loranca es un entusiasta de los productos Informix. Inició su carrera en Informix en 1997 como Ingeniero de Soporte, se graduó como ingeniero Dial-Up en 1998 y actualmente es ingeniero del programa Accelerated Value para productos Informix y DB2 LUW en la organización de Servicios de Software Group. Desde 1996 es profesor en la Universidad La Salle campus Condesa, en la Ciudad de México. Así mismo es miembro del IIUG (Informix International User Group) y es el enlace de ventas para el grupo local de usuarios de Informix en la Ciudad de México desde 2002. Ha escrito varios DCFs para la organización de Soporte Técnico relacionados tanto con productos Informix como con productos DB2, y ha sido expositor en la serie de conferencias vía internet "Charla con los Expertos de Informix" en Español.



01-04-2014

Introducción

La aparición del estándar ODBC (Open Database Connectivity) al principio de la década de 1990, proporcionó la capacidad, para diferentes desarrolladores, de poder acceder a diversos motores de bases de datos, sin preocuparse por tener una interfase a la medida para dicho motor de base de datos, lo que lo hace muy popular entre herramientas de desarrollo, herramientas del tipo ETL (Extract, Transform and Load), y Gateways de bases de datos, por mencionar algunos de sus principales usos.

En mi experiencia, he visto la necesidad de configurar el manejador de ODBC de Informix por parte de usuarios que no son expertos en Informix, y que tan sólo requieren configurarlo para poder hacer uso de su herramienta. Con ello en mente, he escrito el presente artículo para hacer una configuración básica del manejador ODBC de Informix desde cero.

¿Cómo consigo el manejador ODBC de Informix para Unix?

El manejador ODBC de Informix se puede encontrar en dos productos: El producto llamando "Informix Client Software Development Kit", o "Informix Client SDK" para abreviar, y el producto llamado "Informix Connect". La diferencia entre estos dos productos es que el segundo es la versión runtime del primero. Dado que necesitaremos compilar un programa en C para probar la conexión a la base de datos vía ODBC, usaremos el producto Informix Client SDK, no obstante, los demás pasos aplicarán por igual para el producto Informix Connect.

Así mismo es de mencionar que el producto Informix Client SDK se puede instalar como parte del motor de base datos Informix, sin embargo en este artículo partiremos de la premisa que se está instalando el producto en un ambiente donde no está instalado el motor de base de datos.

A la fecha en la que se escribe este artículo, tanto el producto Informix Client SDK, como el producto Informix Connect pueden obtenerse directamente desde el sitio "IBM Passport Advantage Online", cuya liga incluyo al final de este tutorial. Si no posee un contrato de mantenimiento para poder obtener el producto, pero desea realizar el presente tutorial, puede bajar la versión "Developer Edition" desde el sitio "Informix trials and demos" cuya liga también incluiré al final de este tutorial, en el entendido de que la versión "Developer Edition" no deberá ser usada en ambientes productivos. De hecho, para este tutorial, estaré usando el producto "Informix Client SDK 3.70.UC5DE" (Developer Edition) para Linux x86 a 32 bits.

¿Cómo se conecta el manejador ODBC de Informix a la base de datos?

Básicamente el estándar de conexión ODBC requiere de un administrador ODBC (ODBC Manager) y de un manejador ODBC (ODBC Driver), así mismo, en el caso de Informix, se requiere de un manejador (o driver) nativo que se conecte directamente a la base de datos, el nombre que recibe este componente es “Informix-Net”, o “I-Net” para abreviar.

Para nuestro ejemplo, el administrador ODBC accederá a lo que se conoce como un nombre de fuente de datos, o DSN (Data Source Name) por sus siglas en inglés. Este DSN es un archivo de texto que hace referencia al nombre del servidor de base datos, base de datos, usuario, password, así como otros parámetros relevantes a nuestra instancia. Pero, sobretodo, en este DSN haremos referencia al manejador ODBC de Informix, que no es otra cosa que una biblioteca a nivel de sistema operativo. Esta biblioteca se conectará a la base de datos a través del manejador nativo que requiere de una configuración muy básica que le permita asociar el nombre de la instancia de Informix a la que deseamos conectarnos, a una IP-Address, un puerto de comunicaciones y un protocolo, esto lo haremos a través de un archivo propio de informix conocido como “sqlhosts”. Una idea más clara de cómo se realizará la conexión puede observarse en la figura 1:

Figura 1. Esquema básico de la conexión ODBC para Informix en Unix

Basándonos en este diagrama, instalaremos el producto Informix Client SDK. Configuraremos el archivo sqlhosts que nos permitirá acceder al servidor de base de datos. Configuraremos un DSN a través del archivo odbc.ini, en el que definiremos el nombre del servidor de base de datos al que queremos conectarnos, la base de datos dentro de dicho servidor, así como una biblioteca que corresponde al manejador ODBC de Informix que deseamos utilizar. Por último, compilaremos un programa que nos permitirá validar la conexión a través de ese DSN a nuestra base de datos.

Es de mencionar que existen varias opciones para conectarnos vía ODBC en Unix, ya que la aplicación pudiera hacer referencia directa al manejador ODBC de Informix, sin necesidad de utilizar un administrador ODBC a nivel de sistema operativo, también es de mencionar que no siempre se cuenta con un administrador ODBC instalado en nuestro sabor de Unix. En este sentido, el producto Informix Client SDK para Unix incluye un reemplazo de administrador de manejadores o DMR (Driver Manager Replacement), por sus siglas en inglés, si bien este DMR no se incluye en el producto para Windows, lo usaremos para nuestro ejemplo en Unix.

Para mayor detalle sobre las alternativas de conexión usando un administrador ODBC sobre Unix, recomiendo sobremanera el articulo “Use Informix ODBC Driver with an ODBC Driver Manager”, escrito por Muralidhar Vanapalli y Javier Sagrera, cuyo URL incluyo al final del presente artículo.

Para nuestra implementación utilizaremos la edición “Developer Edition” del producto Informix Client SDK, versión 3.70.UC5DE, para Linux a 32 bits. Haremos la instalación en una máquina con arquitectura x86 a 32 bits, sobre Ubuntu 10.04 LTS, a la que llamaremos “IFXLAB1”. Y nos conectaremos a una instancia implementada con Informix 11.70.UC5DE en otro equipo al que llamaremos “IFXLAB2”.

La prueba de conexión desde el equipo IFXLAB1 la haremos usando el usuario informix, usando “korn shell” como intérprete de comandos, si bien la prueba puede ser realizada con cualquier usuario del sistema y con cualquier shell, la ambientación de variables de ambientes usadas en este tutorial, utilizaran las instrucciones y modos del intérprete de comandos “korn shell”.

El nombre del servidor de base de datos informix se llamara “demo_on_tcp”, y estará escuchando al puerto 27678, de la IP-Address 192.168.19.135, vía TCP-IP, con un NETTYPE del tipo “onsoctcp”. Estos datos son de capital importancia para la configuración de la conexión hacia la instancia remota de Informix, en un ambiente real esta información puede ser proveída por el administrador de la base de datos Informix a la que desea conectarse.


Instalación del producto Informix Client SDK

Antes de iniciar la instalación es importante verificar las versiones soportadas de sistema operativo, así como consideraciones específicas para cada sistema operativo, como puede ser versiones de las bibliotecas, o si se necesitan algunos paquetes especiales. Una lista básica puede encontrarse en la página: “Informix Client Software Development Kit (Client SDK) and Informix Connect System Requirements”, cuya liga se puede encontrar al final de este tutorial. No obstante le solicito que la revise antes de continuar con este tutorial.

Una definición aún más específica puede encontrarse en la documentación del producto, que son los archivos que se encuentran en el directorio “doc” de nuestro producto descomprimido, si bien es recomendable leerlos todos, para nuestro ejemplo es especialmente importante que se revise el archivo “odbc_machine_notes_3.70.txt”. Por favor no deje de leerlo, independientemente de que tenga o no experiencia con la instalación de los productos Informix.

De hecho, en nuestro caso, al estar instalando el producto sobre Ubuntu 10.04 LTS, observamos en dicho documento que está certificado para trabajar en esta distribución, pero necesitamos instalar los paquetes “rpm” y “bc”. Adicional a esto, y dado que necesitaremos compilr un programa para realizar la prueba de conexión, es necesario contar con el compilador de C instalado. En el documento también hace referencia a la variable de ambiente LD_LIBRARY_PATH, que se usa para identificar todas las rutas donde el sistema buscará las bibliotecas dinámicas, dado que el nombre de esta variable de ambiente puede cambiar de una plataforma a otra, es de suma importancia revisar que nombre tiene, y que valores deben usarse. Entraremos a más detalle respecto a esta variable de ambiente en el capítulo “Probando la conexión a la base de datos” de este tutorial.

Una nota adicional a considerar, es que los productos de Informix requieren de una JRE (Java Runtime Environment) para instalarse, muchos de los instaladores actuales de los productos Informix cuentan con una JRE interna, sólo para fines de instalación, tal es el caso de la versión 3.70.UC5DE del producto Informix Client SDK. No obstante, las versiones anteriores a la 3.70 del mismo pueden requerir de tener configurado un JRE para poder ser instaladas, al momento de escribir el artículo el nivel mínimo requerido es JRE 1.6.

La instalación de los productos informix deberá hacerse como el usuario root. Y requerirá que se cree el usuario “informix” y que éste pertenezca al grupo “informix”. Por lo que lo primero que haremos será firmarnos como root en el equipo a instalar el producto Informix Client SDK. Una vez firmados crearemos el usuario informix (con minúsculas) con el siguiente comando:

adduser informix --shell /bin/ksh

Preguntará por el password que le queramos dar al usuario informix así como información relacionada al usuario.

Los siguientes pasos, son específicos para la distribución 10.04 de Ubuntu, pero sirve muy bien de ejemplo para mostrar la importancia de leer los prerrequisitos del producto, así como los release notes del mismo. Por ello, siguiendo las indicaciones que observamos, instalaremos el paquete rpm como root, con el siguiente comando:

apt-get install rpm

Siguiendo con las instrucciones del documento “odbc_machine_notes_3.70.txt”, inicializaremos el paquete RPM con los siguientes comandos:

mkdir -p /var/lib/rpm
 rpm --initdb

Ahora, también como root, instalaremos el paquete bc, que es un lenguaje básico orientado a cálculos matemáticos, necesario para la instalación:

apt-get install bc

Por último, que no menos importante, para poder compilar el programa para probar la conexión a la base de datos, necesitaremos instalar el compilador de C, si es que no se encuentra ya instalado. Para instalarlo corremos el siguiente comando como root:

apt-get install gcc

Ahora estamos listos para la instalación. Transferiremos el archivo con el producto a un directorio de trabajo que puede ser /tmp, por favor tome en cuenta en muchos sistemas operativos, /tmp es volátil, es decir, que su contenido es depurado cuando se da de baja el equipo, en nuestro caso. el archivo se llama “clientsdk.3.70.UC5DE.LINUX.tar”

Como root, lo descomprimimos usando el comando:

tar -xvf clientsdk.3.70.UC5DE.LINUX.tar

Esto generará varios directorios, incluyendo el directorio de nombre “doc” mencionado al principio de éste apartado, le recomiendo revisarlo.

Para instalar el producto bastará con ejecutar el siguiente, comando como root, desde el directorio donde descomprimimos el producto:

./installclientsdk

Si está ejecutando el instalador desde una terminal gráfica, para fines de este tutorial, le recomiendo que use el parámetro "-console" para forzar la instalación en modo de texto, ya que el instalador intentará efectuar la instalación de forma gráfica primero y, de no ser posible, la hará en el modo de texto. Al ejecutar la instalación en modo de texto nos aseguramos que los siguientes pasos serán los mismos, además de que, en lo personal, prefiero el modo texto al permitirnos realizar la instalación, independientemente de que dispongamos o no de un ambiente gráfico en Unix.

Aparecerán varias pantallas, la primera mostrará la introducción sobre el script de instalación, oprimimos la etecla ENTER para continuar.

La siguiente pantalla mostrará los términos de la licencia, use la tecla ENTER para avanzar en el texto de la misma, una vez que la haya leído teclee “1” y ENTER para aceptarlos.

La siguiente pantalla solicitará la ruta donde queremos instalar el producto, el valor por omisión para esta plataforma es “/opt/IBM/informix”, o el valor que esté definido en la variable de ambiente $INFORMIXDIR al momento de ejecutar el script, oprimimos la tecla ENTER para aceptar el directorio por omisión.

La siguiente pantalla mostrará cuales funcionalidades van a ser instaladas y cuales no, dándole la oportunidad de seleccionar, o de eliminar, funcionalidades de la lista, oprimimos la tecla ENTER para que haga la instalación de las funcionalidades por omisión.

Nos mostrará el espacio requerido por el producto y el espacio disponible en el filesystem indicado para la instalación de dicho producto, oprimimos la tecla ENTER para proceder con la instalación del mismo.

Nos mostrará el grado de avance en la instalación del producto Informix Client SDK, una vez terminada la instalación nos mostrará el siguiente mensaje:

            Installation Complete
            ---------------------
            Congratulations. IBM Informix Client SDK 3.70.UC5 has been successfully
            installed to:
            /opt/IBM/informix

Oprimimos la tecla ENTER para salir del script de instalación y habremos terminado con esta fase.


Configuración del archivo sqlhosts

Como mencionamos en la introducción, en nuestro DSN (Data Source Name) incluiremos el nombre de nuestra instancia, pero nuestro manejador nativo de conexiones a Informix, necesitará convertir ese nombre de instancia en una IP-Address, un puerto, y un tipo de conexión. Esta función la hace a través del archivo sqlhosts.

El archivo sqlhosts es un archivo de texto, y se encuentra por omisión bajo el directorio etc, dentro de la ruta donde instalamos el producto, es decir bajo /opt/IBM/informix/etc en nuestro caso. El nombre y ubicación de este archivo puede ser modificado para nuestra sesión a través de la variable de ambiente $INFORMIXSQLHOSTS, pero para nuestro ejemplo usaremos el archivo por omisión. Dado que estaremos trabajando en el directorio donde está instalado el producto, es conveniente que usemos el usuario informix para editarlo, no obstante la configuración y uso de los manejadores ODBC de Informix no está limitado al usuario informix.

Si bien este tutorial no pretende describir a detalle la estructura y opciones del archivo sqlhosts, sino tan sólo la configuración básica del mismo para poder conectarnos a nuestro servidor de base de datos informix, es necesario revisar la estructura básica de una línea en el archivo sqlhosts.

Cada línea en el archivo sqlhosts, típicamente representa el nombre de la instancia a la que deseamos tener acceso, y cada una de esas líneas consta de cinco columnas.

  • La primera columna corresponde al nombre del servidor de base de datos, que en nuestro caso será “on_demo_tcp”
  • La segunda columna describe el NETTYPE, mismo que discutiremos un poco más adelante.
  • La tercera columna corresponde al equipo donde radica nuestra instancia, en esta columna podemos usar directamente la IP-Address del equipo usada por el servidor de base datos, o el nombre de equipo que corresponde a esa IP-Address, de optar por esta última opción, el nombre del equipo deberá estar dado de alta en el archivo /etc/hosts. Si bien se puede usar un servidor DNS (Domain Name System) para resolver la IP-Address por nombre de dicho equipo, hay que tener mucho cuidado de optar por esta alternativa, ya que cualquier problema en la resolución de la IP-Address, puede generar lentitud en la conexión inicial al servidor de base de datos, pudiendo incluso llevar a la aparición del error -908 (“Attempt to connect to database server (servername) failed.”). Para nuestro ejemplo usaremos la IP-Address directamente, y será “192.168.19.135”.
  • La cuarta columna corresponde al servicio TCP/IP que estará escuchando el servidor de base de datos. De manera similar a la tercera columna, podemos usar directamente el número de servicio, o el nombre del servicio, en cuyo caso este nombre deberá estar dado de alta en el archivo /etc/services, indicando en el mismo que se maneja dentro de la capa “tcp”. En nuestro caso el número de puerto es “27678” y lo usaremos directamente.
  • El quinto campo, es el campo de opciones, para este ejemplo lo dejaremos en blanco.

Los campos pueden estar separados por tabuladores, un espacio en blanco, o varios espacios en blanco. Hay que tener especial cuidado de que no capturar erróneamente secuencias de control, ya que esto es una de las principales causas de que la comunicación cliente-servidor falle.

La columna NETTYPE

El NETTYPE es una cadena de 8 caracteres que especifica el protocolo a usar en formato descrito en la figura 2:

Figura 2. Estructura básica de la cadena NETTYPE

Donde:

dd es el tipo de base de datos

iii es el tipo de interfase

ppp es el tipo de protocolo

Un error común es el copiar la línea correspondiente del sqlhosts del servidor de base de datos, directamente al archivo sqlhosts del equipo cliente. Menciono que es un error, por que si bien las subcadenas “dd” y “ppp” deben coincidir con aquellas usadas en el servidor de base de datos, el substring “iii” depende de las interfases soportadas por el equipo local. En nuestro caso, Linux soporta Sockets, por lo que el valor de iii será “soc”. De no usar el tipo de interfase correcta, obtendrá un error “-25507”. Para conocer que tipo de interfase es soportado por el sistema operativo local, recomiendo revisar la nota técnica: “Error ‘25507 The specified service name or protocol is unknown.’ when trying to access a remote database via TCP/IP protocol.”, cuya liga anexo al final de este tutorial.

Así mismo es de mencionar que la comunicación cliente-servidor entre dos máquinas distintas, sólo puede hacerse con protocolos de comunicación vía red, por ejemplo: la conexión a un nombre de servidor de base de datos Informix definido para hacer conexiones vía memoria compartida (onipcshm) no podrá ser accedido desde el equipo remoto vía ODBC.

Basado en lo anterior, añadamos la siguiente línea al archivo /opt/IBM/informix/etc/sqlhosts:

demo_on_tcp     onsoctcp        192.168.19.135  27678

El listado 1, muestra una salida de cómo lucirá nuestro archivo sqlhosts:

Listado 1. Listado del archivo sqlhosts a usar
            #**************************************************************************
            #
            #Licensed Material - Property Of IBM#
            #"Restricted Materials of IBM"
            #
            #IBM Informix Dynamic Server
            #Copyright IBM Corporation 1996, 2011
            #
            #Title:       sqlhosts.demo
            #Description: Default sqlhosts file for running demos.
            #
            #**************************************************************************
            #The connectivity information for each database server includes four fields
            #of required information and one optional field. You can also configure
            #database server groups.
            #
            #The format for the five fields of connectivity information for a database
            #server is one line in the UNIX  sqlhosts file, as follows:
            #
            
            #
            #dbservername is the name of a database server on the network.
            #
            #nettype is an 8-character string specifying the protocol in this format:
            #
            #ddiiippp
            #
            #where
            #dd  =  Database product [|ol|on|dr]
            #iii =  Interface type [ipc|soc|tli|sql]
            #ppp =  Protocol [imc|nmp|shm|spx|str|tcp|ssl|mux]
            #
            #hostname is the name of the computer where the database server resides.
            #
            #servicename is a service name entry from the services file.
            #
            #options in the fifth field:
            #
            
            #
            #For additional information on the parameters, see the IBM Informix
            #Administrator's Guide.
            #**************************************************************************
            #IANA (www.iana.org) assigned port number/service names for Informix:
            #sqlexec 9088/tcp
            #sqlexec-ssl 9089/tcp
            demo_on         onipcshm        on_hostname     on_servername
            demo_on_tcp     onsoctcp        192.168.19.135  27678

Ahora estamos listos para la configuración del DSN (Data Source Name).


Configuración de un DSN básico

Por simplicidad usaremos el usuario informix para realizar la configuración y prueba del DSN, no obstante la configuración de DSN puede hacerse desde cualquier usuario del equipo. Como mencionamos en la introducción, en Linux no necesariamente se incluye un administrador de ODBC por omisión, por lo que usaremos el reemplazo que viene con el producto Informix Client SDK.

Para configurar un DSN bajo Unix, necesitaremos actualizar un archivo llamado odbc.ini, que le sirve al administrador de ODBC para obtener la información de los repositorios ODBC, o DSNs, que pueden ser usados por el usuario. Por omisión el archivo a usar será el archivo .odbc.ini (nótese el punto al inicio) que se encuentre en el directorio $HOME del usuario que lo desee utilizar, no obstante el nombre y ubicación del archivo puede ser cambiado a través de la variable de ambiente $ODBCINI.

Informix incluye un archivo odbc.ini de muestra y se encuentra bajo el subdirectorio “etc” de la ruta donde instalamos el producto. El listado 2 muestra el contenido de este archivo:

Listado 2. Listado del archivo odbc.ini de muestra
                ;-----------------------------------------------
                ; IBM INFORMIX ODBC Sample File
                ;
                ; File:         odbc.ini
                ;
                ;-----------------------------------------------
                [ODBC Data Sources]
                Infdrv1=IBM INFORMIX ODBC DRIVER
                Infdrv2=IBM INFORMIX ODBC DRIVER
                ;
                ; Define ODBC Database Driver's Below - Driver Configuration Section
                ;
                [Infdrv1]
                Driver=/extra/informix/lib/cli/iclit09b.so
                Description=IBM INFORMIX ODBC DRIVER
                Database=stores_demo
                LogonID=odbc
                pwd=odbc
                Servername=ids_server1
                [Infdrv2]
                Driver=/extra/informix/lib/cli/iclis09b.so
                Description=IBM INFORMIX ODBC DRIVER
                Database=stores_demo
                LogonID=odbc
                pwd=odbc
                Servername=ids_server2
                CursorBehavior=0
                CLIENT_LOCALE=en_us.8859-1
                DB_LOCALE=en_us.8859-1
                TRANSLATIONDLL=/extra/informix/lib/esql/igo4a304.so
                ;
                ; UNICODE connection Section
                ;
                [ODBC]
                ;uncomment the below line for UNICODE connection
                ;UNICODE=UCS-4
                ;
                ; Trace file Section
                ;
                Trace=0
                TraceFile=/tmp/odbctrace.out
                InstallDir=/extra/Informix
                TRACEDLL=idmrs09a.so

En este archivo podemos apreciar dos Data Sources: “Infdrv1” e “Infdrv2”.

El primero muestra el uso más básico, definiendo tan sólo la base de datos a la que deseamos conectarnos, el servidor de base de datos donde reside esta base de datos, el usuario y el password que deseamos usar. Así mismo observamos que hacemos referencia a la biblioteca “/extra/informix/lib/cli/iclit09b.so”, donde iclit09b.so es el manejador ODBC de Informix. Esta biblioteca corresponde a la versión compartida de la biblioteca para aplicaciones multithread.

El segundo es un poco más completo, ya que muestra el uso de otro tipo de biblioteca, “/extra/informix/lib/cli/iclis09b.so”, que corresponde a la versión compartida de la biblioteca para aplicaciones que no son multithread, muestra el manejo de LOCALES, especialmente útil para cuando el conjunto de caracteres usado por la aplicación cliente y el servidor son distintos, y otras opciones adicionales.

El presente tutorial no pretende hacer un estudio exhaustivo de la configuración del archivo odbc.ini, ni de las bibliotecas incluidas con el producto Informix Client SDK, no obstante recomiendo sobremanera la lectura del artículo “Use Informix ODBC Driver with an ODBC Driver Manager” mencionado en la introducción. Así mismo es posible que la definición de su DSN específico para trabajar con herramientas de terceros requiera de parámetros adicionales, éstos no serán revisados en este tutorial.

Para nuestra prueba copiaremos el archivo odbc.ini, del directorio donde está instalado el producto Informix Client SDK, a nuestro directorio de trabajo con el nombre .odbc.ini. Si ya tiene un archivo .odbc.ini creado en su directorio $HOME recomiendo respaldarlo, posterior a la prueba de conexión, puede actualizar el archivo .odbc.ini respaldado, con la información del DSN para Informix probado. Para copiar el archivo odbc.ini de muestra a su directorio $HOME ejecute el siguiente comando:
cp /opt/IBM/informix/etc/odbc.ini $HOME/.odbc.ini

Para la prueba de conexión usaremos el DSN con nombre “Infdrv1”, por lo que procederemos a realizar los siguientes cambios en el archivo $HOME/.odbc.ini, en la sección [Infdrv1]:

  • Actualice la ruta de la biblioteca en el parámetro “Driver”, reemplazando la cadena “/extra/informix” por “/opt/IBM/informix”, que corresponde al directorio donde instalamos el producto Informix Client SDK.
  • Actualice el parámetro “Database” con el nombre del la base de datos a la que nos deseamos conectarnos. En mi caso usaré “stores_demo”. Tome en cuenta que la base de datos debe existir y el usuario con el que quiera conectarse debe tener permisos de conexión para poder realizar la prueba.
  • Actualice los parámetros “LogonID” y “pwd” con el nombre de usuario con el que desea conectarse, y el password del mismo, respectivamente. El usuario configurado es validado en el equipo donde el servidor de base de datos se ubica, y puede ser distinto del usuario local desde el cuál estamos ejecutando la prueba.
  • Por último actualice el parámetro “Servername” a “demo_on_tcp”, que corresponde al servidor de base de datos al que deseamos conectarnos, y que definimos previamente en el archivo sqlhosts en el capítulo anterior.

El listado 3 muestra como se observa la sección [Infdrv1] del archivo $HOME/.odbc.ini después de las modificaciones solicitadas:

Listado 3. Listado de la sección [Infdv1] del archivo .odbc.ini a usar
                [Infdrv1]
                Driver=/opt/IBM/informix/lib/cli/iclit09b.so
                Description=IBM INFORMIX ODBC DRIVER
                Database=stores_demo
                LogonID=Informix
                pwd=Informix
                Servername=demo_on_tcp

Ahora estamos listos para la prueba de conexión.


Probando la conexión a la base de datos

Para probar la conexión a la base de datos, necesitaremos configurar algunas variables de ambiente en la sesión desde la cual queremos hacer la conexión, y para el cual hemos configurado el archivo .odbc.ini. Que para el caso de este tutorial será “informix”.

Configuramos la variable de $INFORMIXDIR a la ruta en la que está instalado el producto Informix Client SDK:

export INFORMIXDIR=/opt/IBM/informix

Incluimos la ruta “$INFORMIXDIR/bin” al principio de la variable de ambiente $PATH:

PATH=$INFORMIXDIR/bin:$PATH

Y para la última variable de ambiente, que corresponde al conjunto de rutas usadas por el sistema operativo para buscar las bibliotecas compartidas, hay que prestar especial atención, ya que este parámetro se puede llamar diferente, en diferentes sistemas operativos. Por ejemplo, en Linux usaremos “LD_LIBRARY_PATH”, pero en AIX usaremos “LIBPATH”.

Por ello entremos al directorio donde se encuentran los release notes con el comando:

cd $INFORMIXDIR/release/en_us/0333

Y revisemos el contenido de los archivos: “INFODBC_3.7” y “ESQLC_3.7”, este último es necesario por que necesitamos compilar un programa para hacer la prueba de conexión.

Revisando ambos, nos encontramos que, en nuestro caso particular, el archivo “INFODBC_3.7” nos requiere configurar la variable de ambiente LD_LIBRARY_PATH a:

“$INFORMIXDIR/lib/cli:$INFORMIXDIR/lib/esql:$LD_LIBRARY_PATH”

Mientras que el archivo “ESQLC_3.7” nos solicita configurarlo a:

“$INFORMIXDIR/lib:$INFORMIXDIR/lib/esql:$LD_LIBRARY_PATH”

Asegúrese de incluir todas las rutas mencionadas. Así pues, nuestra variable de ambiente deberá quedar definida de la siguiente manera:

export  LD_LIBRARY_PATH=$INFORMIXDIR/lib:$INFORMIXDIR/lib/cli:
               $INFORMIXDIR/lib/esql:$LD_LIBRARY_PATH

Por su comodidad, puede incluir estas variables de ambiente en su archivo .profile, a fin de prescindir de la necesidad de configurarlas cada vez que se firme en el equipo IFXLAB1.

A continuación nos trasladaremos al directorio demo/cli debajo del directorio $INFORMIXDIR, donde se encontrarán varios programas de demostración para trabajar con el manejador ODBC:

cd $INFORMIXDIR/demo/cli

Desde este directorio ejecutaremos el comando “make”, que compilará todos los programas:

make

Entre estos programas, hay uno que me agrada mucho para probar la conexión vía ODBC. Se trata del programa “catalog”, ya que este programa permite listar las tablas y columnas de una base de datos ya existente, sin que requiera de la creación de la base de datos de demo. Para realizar la prueba, corremos el programa “catalog” usando como parámetro el DSN “Infdrv1” que definimos en nuestro archivo .odbc.ini:

./catalog Infdrv1

A continuación muestro la salida de la primera pantalla de este programa:

Figura 3. Salida exitosa del programa “catalog”

Figura 3

Conclusión

Gracias a la flexibilidad que proporciona el uso del estándar ODBC a diferentes proveedores de herramientas de desarrollo, herramientas de extracción de datos y de comunicación entre diferentes motores de base de datos, hace necesario que usuarios que son expertos en estas herramientas, pero que tienen conocimiento básico o nulo de Informix, sepan como instalar, configurar y probar la conectividad básica vía ODBC a motores de base de datos Informix bajo Unix.

Al término de este artículo hemos instalado y configurado el manejador ODBC de Informix bajo Linux y probado exitosamente una conexión básica vía ODBC, como ejemplo de la configuración básica de un manejador ODBC de Informix en Unix.

Recursos

Comentarios

developerWorks: Ingrese

Los campos obligatorios están marcados con un asterisco (*).


¿Necesita un IBM ID?
¿Olvidó su IBM ID?


¿Olvidó su Password?
Cambie su Password

Al hacer clic en Enviar, usted está de acuerdo con los términos y condiciones de developerWorks.

 


La primera vez que inicie sesión en developerWorks, se creará un perfil para usted. La información en su propio perfil (nombre, país/región y nombre de la empresa) se muestra al público y acompañará a cualquier contenido que publique, a menos que opte por la opción de ocultar el nombre de su empresa. Puede actualizar su cuenta de IBM en cualquier momento.

Toda la información enviada es segura.

Elija su nombre para mostrar



La primera vez que inicia sesión en developerWorks se crea un perfil para usted, teniendo que elegir un nombre para mostrar en el mismo. Este nombre acompañará el contenido que usted publique en developerWorks.

Por favor elija un nombre de 3 - 31 caracteres. Su nombre de usuario debe ser único en la comunidad developerWorks y debe ser distinto a su dirección de email por motivos de privacidad.

Los campos obligatorios están marcados con un asterisco (*).

(Por favor elija un nombre de 3 - 31 caracteres.)

Al hacer clic en Enviar, usted está de acuerdo con los términos y condiciones de developerWorks.

 


Toda la información enviada es segura.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=90
Zone=Information mgmt
ArticleID=846256
ArticleTitle=Instalación, configuración y prueba del manejador ODBC de Informix en Unix
publish-date=04012014