viernes, 21 de agosto de 2015

Conectarse a un cluster Oracle a través de ODBC en Windows Server 2012

Suele ser común establecer conexiones ODBC en Windows para poder conectarse a bases de datos como las de Oracle. El problema se produce cuando la base de datos a la cual queremos conectarnos es un cluster y responde a múltiples direcciones IP. A continuación, procederé a describir los pasos necesarios para conectarse por ODBC a una base de datos Oracle que está montada en un cluster. 

En primer lugar necesitaremos descargarnos el paquete instant client basic de Oracle así como el instant client odbc. Es muy importante, descargarse la versión que coincida con la base de datos Oracle a la cual queremos conectarnos. A modo de ejemplo, si nos conectamos a un Oracle 12, nos bajaremos el paquete 12. Podéis bajaros el paquete desde el siguiente enlace

Una vez descargados los dos paquetes, fusionaremos los mismos, es decir añadiremos al contenido del instan client basic, el contenido de instant client ODBC. No os preocupéis si sobrescribe algún fichero, no pasa nada. 

A continuación, almacenaremos la carpeta con los archivos de instant client en una ubicación que deberemos de recordar, por ejemplo en la siguiente:

C:\instantclient_12_1

Posteriormente, se añadirá como variable de usuario ORACLE_HOME enlazando a la ruta de instant client. 


Para verificar si la variable se ha añadido correctamente, se podrá realizar un echo de la misma en un terminal.



El siguiente paso consistirá en generar un fichero con nombre tnsnames.ora dentro de la siguiente ruta de instant client:

C:\instantclient_12_1\network\admin

Nota: Es muy importante que el fichero generado tenga el nombre bien puesto, os aseguro que en este paso falla mucha gente.

En el fichero en cuestión, se añadirán las cadenas de conexión correspondiente, A modo de ejemplo os pongo una:


cronicas.de.un.informatico1 =

(DESCRIPTION =

(LOAD_BALANCE = ON)

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = hostname1)(PORT = 1528))

(ADDRESS = (PROTOCOL = TCP)(HOST = hostname2)(PORT = 1528))

)

(CONNECT_DATA =

(SERVICE_NAME = croni1)

)

)

cronicas.de.un.informatico2 =

(DESCRIPTION =

(LOAD_BALANCE = ON)

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = hostname1)(PORT = 1527))

(ADDRESS = (PROTOCOL = TCP)(HOST = hostname2)(PORT = 1527))

)

(CONNECT_DATA =

(SERVICE_NAME = croni2)

)

)

El siguiente paso consistirá en instalar el driver ODBC. A tal efecto, ejecutaremos un terminal como administrador, accederemos a la ubicación de instant client y ejecutaremos el siguiente comando:

odbc_install.exe


Una vez instalado el driver, ejecutaremos el complemento de Windows ODBC DATA SOURCE Administrador de 64 bits.


Nota: Si se ha empleado el driver de 32 bits, ejecutar el complemento de 32 bits.

A continuación, agregaremos un DSN de sistema seleccionado como origen de datos el controlador Oracle in instantclient_12_1. En caso de error, ver la nota final del articulo.


Finalmente, dentro de TNS Service Name, ya se desplegarán las cadenas de conexión que hemos generado previamente en el fichero tnsnames.ora


IMPORTANTE: No os desquiciéis si en el momento de añadir el origen de datos os devuelve un error indicando una referencia a SQLORAS32.DLL Si os sucede dicho error, instalar el paquete Microsoft Visual C++ 2010 Redistributable Package x64 (x86 si vuestro servidor no es de 64). Una vez instalado, probar varias veces a añadirlo hasta que funcione. En algunos casos es necesario reiniciar el servidor.