Las interconexiones de servidores de bases de datos son operaciones que pueden ser muy útiles en diferentes contextos. Básicamente, se trata de acceder a datos que no están almacenados en nuestra base de datos, pudiendo combinarlos con los que ya tenemos.

 

 

 

 

Enlace entre dos servidores Oracle

Vamos a tener dos maquinas Debian con Oracle 12c instalado, el cual hemos instalado mediante este script Script Oracle12c Manuel Alcocer.

El primer paso es modificar los ficheros que se encuentran en $ORACLE_HOME/network/admin en ambas maquinas, lo vamos a abrir con el editor de texto y vamos a hacer que quede asi:

Info! Vamos a hacer que escuche en la 0.0.0.0 que es todas las direcciones IP.

Oracle 1

Vamos a configurar tanto el listener.ora como el tnsname.ora

listener.ora

Una vez modificado el fichero «listener.ora» reiniciamos lsnrctl stop y lsnrctl start

tnsnames.ora

Posteriormente modificamos el fichero /opt/oracle/product/12.1.0.2/db_home_1/network/admin/tnsnames.ora, y lo modificamos para que quede asi:

Info! Las direcciones IP pueden variar según nuestro servidor DHCP nos asigne IP.

Podemos observar que nuestra maquina oracle1 se encuentra escuchando en el puerto 1521

Oracle 2

Al igual que el fichero anterior vamos a hacer que tengan acceso todas las direcciones IP, dado que este va a actuar como servidor y solo vamos a modificar el fichero listener.ora:

Reiniciamos listener lsnrctl stop y lsnrctl start

Comprobación de ping entre ellas

Para ello hacemos ping desde una maquina a otra y viceversa como podemos observar en la siguiente captura:

Conexión entre servidores

Para realizar la conexión vamos a crear un enlace desde oracle1 a oracle2, para crear el enlace vamos a acceder en oracle1 como usuario system :

El enlace creado es al esquema de prueba scott, ahora accedemos al usuario scott en oracle1 a sql scott/tiger y ejecutamos la siguiente consulta select * from emp@scottlink; esto muestra la tabla emp del enlace creado hacia el servidor oracle2

Otra forma de comprobar que nos podemos conectar a la base de datos es desde oracle1 intentar acceder al usuario scott de oracle2 para elle ejecutamos el siguiente comando sql scott/tiger@[IP_ORACLE2]/oracle2

Conexión de postgresql a postgresql

Tendremos un escenario con dos maquinas postgresA y postgresB, primero vamos a instalar postgres y vamos a hacer las diferentes configuraciones:

Permitir el acceso remoto

PostgresA

Instalamos postgresql apt install postgresql.

Posteriormente descomentamos la siguiente linea y la modificamos para que quede asi en /etc/postgresql/9.4/main/postgresql.conf:

Después modificamos el fichero /etc/postgresql/9.4/main/pg_hba.conf y añadimos la siguiente linea:

Y reiniciamos el servicio systemctl restart postgresql

PostgresB

Instalamos postgresql apt install postgresql.

Posteriormente descomentamos la siguiente linea y la modificamos para que quede asi en /etc/postgresql/9.4/main/postgresql.conf:

Después modificamos el fichero /etc/postgresql/9.4/main/pg_hba.conf y añadimos la siguiente linea:

Y reiniciamos el servicio systemctl restart postgresql

Ahora vamos a proceder a la creación del escenario para la interconexión de postgres a postgres:

Creación de base de datos y tablas postgres

PostgresA

Accedemos a la base de datos de postgres:

Creamos el usuario, la base de datos y asignamos los respectivos permisos:

Ahora accedemos como «usuarioa» psql -h localhost -U usuarioa -W -d prueba1 y creamos la tabla de pruebas :

PostgresB

Accedemos a la base de datos de postgres:

Creamos el usuario, la base de datos y asignamos los respectivos permisos:

Ahora accedemos como «usuarioa» psql -h localhost -U usuariob -W -d prueba2 y creamos la tabla de pruebas :

El ultimo paso es la conexión entre los dos servidores, para ello es necesario instalar en las dos maquinas el paquete apt install postgresql-contrib-9.4 y después realizamos el «link» y la consulta a la otra base de datos

PostgresA-PostgresB

Accedemos al usuario privilegiado y creamos el link:

Salimos del usuario postgres \q y accedemos al usuarioa:

PostgresB-PostgresA

Accedemos al usuario privilegiado y creamos el link:

Salimos del usuario postgres \q y accedemos al usuariob:

Conexión entre Oracle y Postgres

Lo único que vamos a realizar, es instalar el driver odbc para postgres, configurarlo de forma correcta como despues vamos a explicar y después configurar los servicios heterogéneos de Oracle para que use la configuración del driver, teniendo en cuenta que habrá que tocar tanto el listener.ora como el tnsnames.ora.

También debemos configurar postgresql, pero este paso lo podremos ahorrar o seguirlo de la segunda interconexión Postgresql a Postgresql |.

Instalar ODBC para PostgreSQL y UNIXODBC

El primer paso sera instalar en la maquina oracle los drivers correspondientes apt install odbc-postgresql unixodbc

Configuración /etc/odbcinst.ini

Dicho fichero /etc/odbcinst.ini define los parámetros de los drivers, deberia de estar asi, modifícalo para que quede así:

Podemos verificar los drivers con el siguiente comando odbcinst -q -d:

Configurar /etc/odbc.ini

También debemos configurar el fichero /etc/odbc.ini, en este fichero se define los parámetros de conexión a la base de datos:

Y comprobamos que la sintaxis del fichero modificado es correcta:

Comprobar conexion

En la instalación de paquetes necesarios se instaló unixodbc, este paquete instala el comando isql mediante el cual se puede hacer una prueba de conexión a la base de datos configurada para ODBC.

Unicode

ANSI

Configurar heterogeneous services

Info! En el caso de que poniendo $ORACLE_HOME no os funcionara, o bien ejecutais un source .profile o meteis la ruta absoluta /opt/oracle/product/12.1.0.2/db_home_1/

Para ello vamos a crear el fichero $ORACLE_HOME/hs/admin/initPSQLU.ora, el cual vamos a rellenar con el siguiente contenido:

Configurar el listener.ora

Vamos a modificar el fichero $ORACLE_HOME/network/admin/listener.ora, para que quede asi:

Configura tnsnames.ora

Y por ultimo configuramos el fichero $ORACLE_HOME/network/admin/tnsnames.ora, y añadimos lo siguiente:

Paramos e iniciamos listener

Para ello simplemente basta con ejecutar estos dos comandoS lsnrctl stop y lsnrctl start:

Pruebas de funcionamiento

Accedemos desde oracle con el usuario system sql system/[Contraseña] y cremos un database link:

Info! Importante usar comillas dobles (» «) para el nombre de usuario y la contraseña, pero comillas simples (‘ ‘) para using.

Y ahora procedemos a intentar conectarnos a postgresql, para ello accedemos con cualquier usuario de oracle sql / as sysdba y hacemos una consulta al link creado select "nombre" from "profesores"@LINK1;: