15 junio 2011

Acceso a una bbdd MS SQLServer desde Oracle.


Es posible acceder a bases de datos no Oracle (Si, hay gente que no cree, en Oracle y adquiere "bases de datos" de otros fabricantes) de forma transparente con Oracle Transparent Gateway, usando una la arquitectura de servicios heterogéneos.




La arquitectura de servicios heterogéneos se basa en la siguiente configuración:

Se especifica una entrada de TNS en el fichero
 tnsnames.ora que resuelva una conexión al servidor, puerto y nombre de servicio determinado, con el parámetro HS=OK.. En este ejemplo vamos a suponer que queremos extraer datos de una bbdd MS SQL Server 2008 R2, mediante la ejecución de una función PL/SQL.

Pasos a seguir:

  • Instalar en el diccionario los servicios heterogéneos.
  • Configurar el tnsnames.ora.
  • Configurar el listener.ora.
  • Comprobar que ambos ficheros funcionan correctamente.
  • Configurar el ODBC para la bbdd MS server.
  • Crear el DBLINK hacia la bbdd MS Server
  • Ejecutar una consulta mediante ese dblink. 

 Instalar en el diccionario los servicios heterogéneos.

Hay que ejecutar el siguiente código, como usuario SYS.:

@? $ORACLE_HOME/rdbms/admin/caths.sql

Para verificar que se han instalado correctamente el diccionario de servicios heterogéneos lo podemos  verificar de la siguiente manera:

SQL> DESCRIBE HS_FDS_INST;

Si no devuelve error alguno se ha ejecutado/instalado el catálogo de servicios heterogéneos adecuadamente.


 Configurar el fichero listener.ora

# listener.ora Network Configuration File: /opt/oracle/product/11gR2/db/network/admin/listener.ora
# Generated by Oracle configuration tools.
 LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = server_name)(PORT = 1521))
    )  
)
SID_LIST_LISTENER=
   (SID_LIST=
      (SID_DESC= 
         (SID_NAME=dg4msql)
         (ORACLE_HOME=/opt/oracle/product/11gR2/db)
          (ENVS=LD_LIBRARY_PATH=/usr/lib64:/opt/oracle/product/11gR2/db/dg4msql/driver/lib)
         (PROGRAM=dg4msql)       
      )
)
ADR_BASE_LISTENER = /opt/oracle

dg4msql es el Oracle Database Gateway for MS SQL Server, se puede instalar en el nodo Linux, el nodo Windows o en un  tercer nodo independiente. DG4MSQL 11i R2 esta soportado para  Windows 2008 R2 64bit.

 Configurar el fichero TNSNAMES.ora



# tnsnames.ora Network Configuration File: /opt/oracle/product/11gR2/db/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.

#Maquina donde se haya el MS SQLServer
MSSQL=
   (DESCRIPTION=
      (ADDRESS=
         (PROTOCOL=TCP)
         (HOST=gdlsndb001pre)
         (PORT=1521)
      )
      (CONNECT_DATA=
         (SID=MSSQL))
      (HS=OK))
 
# Maquina que tiene el Oracle Transparent Gateway 
dg4msql=
   (DESCRIPTION=
      (ADDRESS=
         (PROTOCOL=TCP)
         (HOST=gdlsndb001pre)
         (PORT=1521)
      )
      (CONNECT_DATA=
         (SID=dg4msql))
      (HS=OK))
 
LISTENER_SID =
  (ADDRESS = (PROTOCOL = TCP)(HOST = hostname01)(PORT = 1521))

No hay comentarios:

Publicar un comentario

Por favor deja tu comentario, es valioso.