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))