2017-08-10 1 views
0

Ich habe Master-Slave-Architektur. Auf dem Slave habe ich eine Oracle-Datenbank mit zwei Schemas, z.B. TEST1 und TEST2.Oracle fremde Daten Wrapper

Ich habe alle Objekte (zB EMPLOYEES) in Schema gespeichert TEST1 und Benutzer TEST1 (oder admin) auf TEST1.EMPLOYEES-TEST2 nur Privilegien lesen gegeben, so dass, wenn ich TEST1.EMPLOYEES in einer Abfrage auf der Oracle-Datenbank verwende, kann ich seine zugreifen Daten.

Wie kann ich dasselbe mit Oracle Fremddaten Wrapper in Postgres 9.5 zu implementieren, weil ich Anmeldeinformationen für TEST2 und nicht TEST1 habe? Wenn ich versuche, auf die fremde Tabelle zuzugreifen, gibt es einen Fehler, der besagt, dass TEST2.EMPLOYEES nicht existiert.

Antwort

1

Schnell können Sie, wenn Sie die Benutzerzuordnung mit den Anmeldeinformationen des Benutzers TEST2 und der Fremdtabelle mit dem, dh

schema Option definieren
CREATE FOREIGN TABLE ... OPTIONS (schema 'TEST1', table 'EMPLOYEES'); 
+0

Ihre Antwort hat mir geholfen ... Mein Problem behoben .. Thx viel –

+0

@LaurenzAlbe: in postgres-9.4, diese Optionen wurden 'schema_name' und' table_name' genannt (ich weiß nicht, ob diese * keywords * in späteren Versionen umbenannt wurden) – wildplasser

+1

@wildplasser: Sie irren sich. Die Namen der Optionen sind nicht von PostgreSQL vorgegeben, sie sind vom Fremddatenwrapper definiert. Der Hauptgrund, warum sich die Namen in oracle_fdw und postgres_fdw unterscheiden, ist, dass ich zuerst oracle_fdw geschrieben habe, damit ich das Verhalten nicht kopieren konnte ... –