Datenbankübergreifenden Zugriff in OCI Database with PostgreSQL mit den Erweiterungen postgres_fdw und dblink aktivieren
Einführung
Oracle Cloud Infrastructure Database mit PostgreSQL (OCI Database with PostgreSQL) unterstützt datenbankübergreifende Konnektivität mit Erweiterungen wie postgres_fdw und dblink. Diese Erweiterungen ermöglichen einen nahtlosen Zugriff und Datenaustausch über PostgreSQL-Datenbanken hinweg, nützlich für Analysen, föderierte Abfragen oder Legacy-Integrationsszenarios.
Was ist dblink?
DBlink ist eine PostgreSQL-Erweiterung, mit der SQL-Anweisungen direkt in einer Remote-PostgreSQL-Datenbank ausgeführt werden können. Er gibt Ergebnismengen als Zeilen zurück oder führt Befehle auf dem Remote-Server aus.
Was ist postgres_fdw?
postgres_fdw (Foreign Data Wrapper) ist eine PostgreSQL-Erweiterung, mit der eine Datenbank eine Verbindung zu Tabellen auf einem Remote-PostgreSQL-Server herstellen und diese abfragen kann, als wären es lokale Tabellen. Im Gegensatz zu dblink werden Remote-Tabellen als lokale Objekte zugeordnet und bieten mehr prozedurale Kontrolle.
In diesem Tutorial wird das Setup der postgres_fdw- und dblink-Erweiterungen in einer OCI Database with PostgreSQL-Instanz sowie Beispiele für jede dieser Erweiterungen erläutert.
Ziele
Um eine sichere und zuverlässige Netzwerkkommunikation zwischen zwei OCI Database with PostgreSQL-Datenbanksystemen zu ermöglichen, die sich in verschiedenen virtuellen Cloud-Netzwerken (VCNs) und verschiedenen Regionen befinden. Dieses Setup stellt sicher, dass Datenbankverbindungen nahtlos über VCN-Grenzen hinweg funktionieren. Dazu gehört die Konfiguration von lokalen Peering-Gateways (LPGs) für das Routing und die Einrichtung der DNS-Auflösung mit privaten Ansichten. The goal is to support cross-VCN/cross-region connectivity for database extensions like postgres_fdw or dblink.
Voraussetzungen
- Um die Erweiterungen postgres_fdw oder dblink in einer OCI Database with PostgreSQL-Datenbank zu erstellen und zu verwalten, muss der Benutzer über Folgendes verfügen:
- Datenbankzugriffsberechtigungen.
- Die OCI_ADMIN_ROLE, die dem Benutzer erteilt wurde.
- OCI Database with PostgreSQL-Datenbanksysteme (Quelle und Ziel) müssen über Netzwerkkonnektivität verfügen.
Aufgabe 1: postgres_fdw- und dblink-Erweiterung in OCI Database with PostgreSQL aktivieren
-
Erweiterung in der OCI-Konsole aktivieren.
-
Erstellen Sie eine Konfigurationsdatei, die entweder für die Erweiterung dblink oder postgres_fdw aktiviert wird.
-
Wenden Sie die Konfiguration auf das Datenbanksystem an.
-
-
Erweiterung auf Datenbankebene aktivieren.
Nachdem Sie die Erweiterung in der OCI-Konsole aktiviert haben, melden Sie sich bei der Datenbank an, und führen Sie den folgenden SQL-Befehl aus.
CREATE EXTENSION postgres_fdw; CREATE EXTENSION dblink;
Aufgabe 2: Netzwerkkonnektivität zwischen Datenbanksystemen in verschiedenen VCNs konfigurieren
Um die Kommunikation zwischen zwei OCI Database with PostgreSQL-Datenbanksystemen zu ermöglichen, die sich in verschiedenen VCNs befinden, gehen Sie wie folgt vor:
-
Lokale Peering-Gateway (LPGs) erstellen.
Erstellen Sie ein LPG in jedem VCN, um eine Peering-Verbindung zwischen ihnen herzustellen.
-
Routentabellen konfigurieren.
-
Aktualisieren Sie für jedes VCN die mit dem LPG verknüpfte Routentabelle so, dass sie eine Routingregel enthält.
-
Setzen Sie den Ziel-CIDR-Block auf den Adressbereich des anderen Ziel-VCN, und geben Sie den nächsten Hop als entsprechendes LPG an.
-
-
Richten Sie die DNS-Auflösung mit privaten Ansichten ein.
-
Gehen Sie zur OCI-Konsole, und suchen Sie nach privaten Ansichten, um auf die DNS-Konfiguration für beide VCNs zuzugreifen.
-
Öffnen Sie die private Ansicht jedes VCN, und erstellen Sie einen Zoneneintrag.
-
-
Zonendatensatz für jedes Datenbanksystem erstellen.
Fügen Sie in der privaten Ansicht jedes VCN eine Zone hinzu, die den vollqualifizierten Domainnamen (FQDN) des Datenbanksystems im anderen VCN darstellt.
-
DNS-Datensätze hinzufügen.
-
Klicken Sie auf das Symbol mit drei Punkten neben dem neuen Zoneneintrag, oder klicken Sie auf den Link "FQDN".
-
Wählen Sie Datensätze verwalten aus, und klicken Sie auf Datensatz hinzufügen.
-
Wählen Sie Typ A (IPv4 Adresse) aus, setzen Sie TTL auf 500, und geben Sie die IP-Adresse des primären Endpunkts des Zieldatenbanksystems im gegenüberliegenden VCN ein.
-
Klicken Sie auf Datensatz hinzufügen und dann auf Änderungen veröffentlichen.
-
Aufgabe 3: Netzwerkkonnektivität zwischen Datenbanksystemen in verschiedenen VCNs und verschiedenen Regionen konfigurieren
Um die Kommunikation zwischen zwei OCI Database with PostgreSQL-Datenbanksystemen zu ermöglichen, die sich in verschiedenen VCNs und verschiedenen Regionen befinden.
-
Dynamische Routinggateways (DRGs) erstellen.
Erstellen Sie ein DRG in jeder Region, und hängen Sie es an das jeweilige VCN an.
-
Routentabellen konfigurieren.
-
Aktualisieren Sie für jedes VCN die Routentabelle, die mit dem DRG verknüpft ist.
-
Fügen Sie eine Routingregel mit dem Ziel-CIDR-Block des anderen VCN hinzu, und geben Sie den nächsten Hop als angehängtes DRG an.
-
-
Richten Sie die DNS-Auflösung mit privaten Ansichten ein.
-
Navigieren Sie zur OCI-Konsole, und suchen Sie nach privaten Ansichten, um auf die DNS-Einstellungen für jedes VCN zuzugreifen.
-
Öffnen Sie die private Ansicht für jedes VCN, und erstellen Sie einen Zoneneintrag.
-
-
Zonendatensatz für jedes Datenbanksystem erstellen.
Fügen Sie in der privaten Ansicht jedes VCN eine Zone hinzu, die den FQDN des Datenbanksystems im anderen VCN darstellt.
-
DNS-Datensätze hinzufügen.
-
Klicken Sie auf das Symbol mit drei Punkten neben dem neuen Zoneneintrag, oder klicken Sie auf den Link "FQDN".
-
Wählen Sie Datensätze verwalten aus, und klicken Sie auf Datensatz hinzufügen.
-
Wählen Sie Typ A (IPv4 Adresse), setzen Sie TTL auf 500, und geben Sie die IP-Adresse des primären Endpunkts des gegenüberliegenden Datenbanksystems ein.
-
Klicken Sie auf Datensatz hinzufügen und dann auf Änderungen veröffentlichen.
-
Aufgabe 4: Konfigurieren Sie die Erweiterung postgres_fdw mit einem Beispiel
-
Foreign Data Wrapper-(FDW-)Server erstellen.
Der Befehl
CREATE SERVER
definiert einen Fremdserver namensfdw_serv
mit dem Wrapperpostgres_fdw
. Gibt die Verbindungsdetails an, wie Host, Datenbankname und Port der PostgreSQL-Quelldatenbank. Dies dient als logische Referenz für den Zugriff auf Quelldaten innerhalb der PostgreSQL-Zielinstanz.CREATE SERVER <fdw_servername> FOREIGN DATA WRAPPER <fdw_servername> OPTIONS (host 'primary.xxxxxx.FQDN_Remote_source_DBSystem.... oci.oraclecloud.com', dbname 'remote_source_dbname', port '5432');
-
Zu Benutzer zuordnen.
Der Befehl
CREATE USER MAPPING
verknüpft einen PostgreSQL-Zielbenutzer (arvindya
) mit Zugangsdaten der Quelldatenbank. Dies ermöglicht die Zielauthentifizierung, wenn der Zielserver eine Verbindung zum definierten Fremdserver herstellt. Dadurch wird sichergestellt, dass das ausgeführte Ziel für Abfragen ordnungsgemäß auf dem Quellserver autorisiert ist.CREATE USER MAPPING FOR <user_name> SERVER <fdw_servername> OPTIONS (user <user_name>, password <'user_password'>);
-
Schemaquelle importieren.
Der Befehl
IMPORT FOREIGN SCHEMA
importiert alle Tabellen aus dem öffentlichen Schema des Quellservers als Fremdtabellen in die Zieldatenbank. Diese Tabellen werden lokal angezeigt, rufen jedoch Daten aus der Quelldatenbank in Echtzeit ab.IMPORT FOREIGN SCHEMA <schema_name> FROM SERVER <fdw_server_name> INTO public;
Beispiel:
-- Create extension
CREATE EXTENSION postgres_fdw;
-- Create FDW Server
CREATE SERVER fdw_serv FOREIGN DATA WRAPPER postgres_fdw OPTIONS (
host 'primary.xxxxxx.Remote Source DBSystem FQDN.....xxxxx.oci.oraclecloud.com',
dbname 'source',
port '5432'
);
-- User Mapping
CREATE USER MAPPING FOR arvindya SERVER fdw_serv OPTIONS (
user '<user_name>',
password '<user_password>'
);
-- Import Schema from source
IMPORT FOREIGN SCHEMA public FROM SERVER fdw_serv INTO public;
-- Validate Data
SELECT * FROM emp;
Aufgabe 5: Konfigurieren Sie die Erweiterung dblink mit einem Beispiel
Die Funktion dblink_connect
stellt mit der angegebenen Verbindungszeichenfolge eine Verbindung von der Zieldatenbank PostgreSQL zu einer Quelldatenbank PostgreSQL her. Es enthält Parameter wie Datenbankname, Host, Port, Benutzername und Kennwort. Die Verbindung wird durch einen eindeutigen Namen (myconn
) identifiziert, der für nachfolgende dblink
-Vorgänge verwendet wird. Eine erfolgreiche Verbindung gibt OK zurück, was die Bereitschaft für Remoteabfragen angibt.
SELECT dblink_connect ('Conn_name', 'dbname=<Remote_source_DBName> port=5432 host=primary.xxxxxx..Remote_source_DbSystem FQDN..xxxx.oci.oraclecloud.com user=<user_name> password=<'user_password'>);
Beispiel:
CREATE DATABASE target;
\c target
CREATE EXTENSION dblink;
-- Establish Connection
SELECT dblink_connect ('myconn', 'dbname=source port=5432 host=primary.xxxxxx..Remote_source_DbSystem FQDN..xxxx.oci.oraclecloud.com user=<user_name> password=<user_password>');
-- Select from Source
SELECT * FROM dblink('myconn', 'SELECT * FROM testing') AS t(a int);
-- Execute SQL remotely
SELECT * FROM dblink_exec('myconn', 'create table dblinking_table (id int)');
SELECT * FROM dblink_exec('myconn', 'insert into dblinking_table values(generate_series(1,10))');
SELECT * FROM dblink_exec('myconn', 'delete from dblinking_table where id <= 5');
-- Final Validation
SELECT * FROM dblink('myconn', 'SELECT * FROM dblinking_table') AS t(a int);
Verwandte Links
Bestätigungen
- Autor - Arvind Yadav (technisches Hauptmitglied)
Weitere Lernressourcen
Sehen Sie sich weitere Übungen zu docs.oracle.com/learn an, oder greifen Sie auf weitere kostenlose Lerninhalte im Oracle Learning YouTube-Kanal zu. Besuchen Sie außerdem education.oracle.com/learning-explorer, um ein Oracle Learning Explorer zu werden.
Die Produktdokumentation finden Sie im Oracle Help Center.
Enable Inter-Database Access in OCI Database with PostgreSQL using the postgres_fdw and dblink Extensions
G40413-02