Como conectar a una BD NonOracle usando dblink.

#OracleACE

#31/05/2026

A veces es necesario conectar Oracle con una BD NonOracle, porque los sistemas de nuestros clientes tienen o están desplegados en toda una variedad de motores de BD dado que los proveedores de aplicación a veces no manejan la excelencia de Motor de BD Como es Oracle DB.

En este articulo, vamos a configurar la conexión con una BD Non Oracle

Lo primero que en la VM o maquina asignada debemos instalar los paquetes para ODBC y driver para conectarse la BD Non Oracle en este caso usaremos Postgres para nuestro ejemplo:

   yum install postgresql

  yum search libnsl

   yum install libnsl.x86_64

yum install unixODBC*

yum install postgresql-odbc.x86_64

Luego debemos configurar el archivo /etc/odbc.ini con la informacion del destino donde la BD NonOracle se ejecuta, debemos asegurarnos de tener permisos en la red, acceso al puerto, credenciales validas etc.

[pg]

Description = pg

Driver =/usr/lib64/psqlodbc.so 

ServerName = HOSTREMOTO

Username = USUARIO

Password = password

Port = puerto

Database = DB

Trace = no

Debemos haber instalado el software de Oracle Database gateway for ODBC para la conectividad genérica.

lsnrctl  status

LSNRCTL for Linux: Version 19.0.0.0.0 – Production on 31-MAY-2026 23:31:06

Copyright (c) 1991, 2019, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCPS)(HOST=10.0.0.96)(PORT=1521)))

STATUS of the LISTENER

————————

Alias                     LISTENER

Version                   TNSLSNR for Linux: Version 19.0.0.0.0 – Production

Start Date                28-MAY-2026 15:00:03

Uptime                    3 days 8 hr. 31 min. 3 sec

Trace Level               off

Security                  ON: Local OS Authentication

SNMP                      OFF

Listener Parameter File   /opt/oracle/product/19.0.0/tg/network/admin/listener.ora

Listener Log File         /opt/oracle/diag/tnslsnr/linux8gtw/listener/alert/log.xml

Listening Endpoints Summary…

  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=IPPRIVADA)(PORT=1521)))

  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))

Services Summary…

Service “pg” has 1 instance(s).

  Instance “pg”, status UNKNOWN, has 1 handler(s) for this service…

The command completed successfully

Los archivos de configuracion del gateway de Oracle apuntando al ODBC:

[oracle@host admin]$ pwd

/opt/oracle/product/19.0.0/tg/hs/admin

[oracle@host admin]$ cat initpg.ora 

HS_FDS_CONNECT_INFO = pg

HS_FDS_TRACE_LEVEL = OFF

HS_FDS_SHAREABLE_NAME = /usr/lib64/psqlodbc.so

set ODBCINI=/etc/odbc.ini

HS_NLS_NCHAR = UCS2

HS_KEEP_REMOTE_COLUMN_SIZE = ALL

HS_LANGUAGE=american_america.utf8

El listener genérico que permite la comunicación heterogenea:

[oracle@host admin]$ cat listener.ora 

SID_LIST_LISTENER =

  (SID_LIST =

     (SID_DESC =

      (SID_NAME = pg)

      (ORACLE_HOME = /opt/oracle/product/19.0.0/tg)

      (ENVS=”LD_LIBRARY_PATH=/usr/local/lib:/usr/lib64:/opt/oracle/product/19.0.0/tg”)

      (PROGRAM = dg4odbc)

    )

   )

LISTENER =

  (DESCRIPTION_LIST =

    (DESCRIPTION =

      (ADDRESS = (PROTOCOL = TCPS)(HOST = host)(PORT = 1521))

      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))

    )

  )

DIAG_ADR_ENABLED=off

Luego ya en la BD Oracle que deseamos o necesitamos consuma la conexión remota:

Podemos consultar por ejemplo las tablas del catalogo del usuario que se conecto:

Usando un dblink de forma natural, recordemos que el dblink debe tener esta opcion por ser heterogenea:

Espero les sea de utilidad.

saludos.

Leave a Reply

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