Montag, April 20, 2015

Postgres FDW-Zugriff auf Oracle

Ein kleines Syntaxbeispiel zur Definition eines Foreign Data Wrappers (FDW) in postgres. Ein paar grundsätzlichere Erläuterungen zum Thema hatte ich hier vor längerer Zeit notiert, dabei aber nur FDW-Definitionen mit Zugriff von einer postgres-Datenbank auf eine andere postgres-Datenbank untergebracht. Hier folgt eine kurze Zusammenfassung der Schritte, die nötig waren, um einen postgres-FDW-Zugriff auf eine Oracle-Datenbank einzurichten:

1. Download der zugehörigen Komponenten, die hier zu finden sind. Der Download enthält die Kontrolldatei (oracle_fdw.control) und zwei SQL-Dateien für den Ordner share\extension, sowie die erforderliche dll (oracle_fdw.dll) für den lib-Ordner.

2. Anlage der Extension in der vorgesehenen postgres-Datenbank
create extension oracle_fdw;

3. Anlage der FDW-Definitionen
drop server if exists test_oracle cascade;
create server test_oracle 
foreign data wrapper oracle_fdw 
options (
    dbserver '//xxx.xxx.xxx.xxx:1521/yyy.yyy.yyy' (also eine Host-Naming-Verbindung mit ip und DB-Namen)
);

create user mapping for postgres
server test_oracle
options (
    user 'test'
  , password 'test'
);

create foreign table t_oracle (
    id integer
  , col1 text
)
server test_oracle options (schema 'TEST', table 'T');

select * from t_oracle limit 10;
+----+----------------------------------------------------+
| id |                        col1                        |
+----+----------------------------------------------------+
|  1 | ************************************************** |
|  2 | ************************************************** |
|  3 | ************************************************** |
|  4 | ************************************************** |
|  5 | ************************************************** |
|  6 | ************************************************** |
|  7 | ************************************************** |
|  8 | ************************************************** |
|  9 | ************************************************** |
| 10 | ************************************************** |
+----+----------------------------------------------------+
(10 Zeilen)

Ein vollständigeres Beispiel hätte wohl auch noch die Tabellenanlage auf Oracle-Seite enthalten, aber ich verbürge mich dafür, dass das Query-Resultat der Tabellendefinition im Quellsystem ähnelt. Im Prinzip ist eine solche Einbindung von Oracle-Daten ist postgres also sehr einfach.

Keine Kommentare:

Kommentar veröffentlichen