Maak in PostgreSQL de data uit een Oracle database beschikbaar

Maak in PostgreSQL de data uit een Oracle database beschikbaar

In de huidige organisatie is het niet meer dat een database synoniem staat met Oracle, MS SQL Server, MySQL of PostgreSQL. Bijna altijd zijn alle voorgenoemde RDBMS-en aanwezig.  Daarnaast zal vaak ook een NoSQL oplossing als MongoDB, Couchbase, Cassandra of Datastax aanwezig zijn.

Doordat de onmisbare data van een organisatie nu over verschillende bronnen is verdeeld, wordt het ook steeds belangrijker data tussen deze verschillende bronnen toegankelijk te maken. In dit artikel beschrijven we hoe je vanuit een PostgreSQL database data in een Oracle database kan benaderen.  Hierbij wordt gekeken naar de basisconfiguratie. Allerlei geavanceerde configuratiemogelijkheden worden achterwege gelaten.

In de onderstaande voorbeelden wordt uitgegaan van een Oracle 19.8 database en PostgreSQL 13.2 distributie, beiden op een Oracle Linux 7.9 omgeving.

Om een connectie vanuit PostgreSQL naar een andere externe datasource te maken, kent PostgreSQL het concept van de Foreign Data Wrapper. Hierbij wordt gebruikt gemaakt van de SQL/MED standaard. Met deze standaard manier is het mogelijk remote SQL-objecten aan te bieden. Binnen PostgreSQL is deze interface geïmplementeerd met Foreign Data Wrappers (FDW). Deze FDW zijn geen standaard onderdeel van de PostgreSQL distrubutie on worden ook niet ondersteund door PostgreSQL Global Development Group.  De extensie moet apart geïnstalleerd worden en wordt ontwikkeld en ondersteund door een apart team.

Om de foreign data warapper werkend te krijgen moeten er enkele stappen uitgevoerd worden

  1. De oracle_fdw extensie maakt gebruik van de oracle instant client 11.2 of later met de juiste componenten. Dus het is essentieel deze te installeren.
yum install oracle-instantclient-release-el7
yum install oracle-instantclient-basic
yum install oracle-instantclient-sqlplus
yum install oracle-instantclient-devel

Hiermee installeer je de Oracle 21 instant client.

2. Vervolgens moet je  de oracle_fdw downloaden en uncompressen.  Dan tref je een directory aan:

3. Voordat met de installatie van de oracle_fdw gestart  kan worden moet er zeker gesteld worden dat de relevante packages aanwezig zijn.  Hiervoor voldoen de volgende commando’s:

yum install postgresql13-devel
yum install oraclelinux-developer-release-el7
yum install oracle-epel-release-el7
yum install oracle-softwarecollection-release-el7

Het kan zijn dat er enkele yum libraries enable of toegevoegd mneten worden.

4. Hierna kan de Oracle_fdw software geinstalleer en gecompileerd worden:

$ cd /home/postgres/oracle_fdw-master
$make
$make install

5. Vanaf dit moment is de oracle_fdw software geinstalleerd. Nu moeten de postgreSQL specifieke zaken geregeld. Aller eerst moet de extensie in de database aangemaakt worden:


$ psql
psql (13.2)

postgres=#  create extension oracle_fdw;
CREATE EXTENSION
postgres=# \dx
                        List of installed extensions
    Name    | Version |   Schema   |              Description
------------+---------+------------+----------------------------------------
 oracle_fdw | 1.2     | public     | foreign data wrapper for Oracle access
 plpgsql    | 1.0     | pg_catalog | PL/pgSQL procedural language
(2 rows)

6. Hierna maken we een apart schema aan om de remote objecten naar te kunnen mappen:

create schema pdb1;

7. Waarna we de link van de PostgreSQL database naar de Oracle database aankunnen maken:

create server pdb1 foreign data wrapper oracle_fdw options (dbserver '//my_oracle_host:1521/pdb1');

Hier gebruiken we de Oracle machine, portnummer en service naam van dje Oracle database.

8. Vervolgens moet de connectie met de juiste user ingesteld en de synchronisatie van de metadata plaatsvinden. In het voorbeeld word de gebruiker demo met het bijbehorende wachtwoord gebruikt.

create user mapping for postgres server pdb1 options (user 'demo', password 'demo');
import foreign schema "DEMO" from server pdb1 into pdb1;

9. Nu kunnen we de data vanuit de Oracle database bevragen:

set search_path=pdb1;
\d
               List of relations
 Schema |    Name    |     Type      |  Owner
--------+------------+---------------+----------
 pdb1   | demo       | foreign table | postgres

Hiermee is de data uit de Oracle database toegankelijk gemaakt in de PostgreSQL omgeving. Het is van belang te beseffen dat er hier sprake is van een standaard configuratie, afhankelijk van instellingen en behoeften kan het nodig zijn aanpassingen te maken.

Nu de connectie vanuit PostgreSQL naar Oracle gemaakt is ligt de vraag voor de omgekeerde route voor de hand.

Hopelijk heb je wat gehad aan dit artikel over ‘maak in PostgreSQL de data uit een Oracle database beschikbaar’. Mocht je hulp nodig hebben of je hebt vragen n.a.v. dit artikel, laat het ons dan weten.

https://nl.wikipedia.org/wiki/PostgreSQL

Data uit Oracle beschikbaar in PostgreSQL
Scroll to Top