Links zwischen Oracle Database und Aurora SQL Postgre-Compatible konfigurieren - AWS Prescriptive Guidance

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Links zwischen Oracle Database und Aurora SQL Postgre-Compatible konfigurieren

Erstellt von Jeevan Shetty (AWS), Bhanu Ganesh Gudivada (), Sushant Deshmukh (AWS), Uttiya Gupta () und Vikas Gupta () AWS AWS AWS

Umgebung: PoC oder Pilotprojekt

Quelle: Oracle-Datenbank

Ziel: Aurora Postgre-Compatible SQL

R-Typ: Replatform

Arbeitslast: Oracle; Open Source

Technologien: Migration; Datenbanken

AWSDienste: Amazon Aurora; Amazon EC2 Auto Scaling; Amazon Route 53

Im Rahmen der Migration zur Amazon Web Services (AWS) Cloud können Sie Ihre Anwendungen modernisieren, um Cloud-native Datenbanken zu verwenden. Die Migration von Oracle Database zu Amazon Aurora SQL Postgre-Compatible Edition ist ein solcher Schritt zur Modernisierung. Im Rahmen dieser Migration müssen auch native Oracle-Datenbank-Links konvertiert werden. 

Mithilfe eines Datenbank-Links kann eine Datenbank auf Objekte in einer anderen Datenbank zugreifen. Nach der Migration von Oracle Database zu Aurora Postgre SQL -Compatible müssen die Datenbanklinks vom Oracle Database-Server zu anderen Oracle-Datenbankservern in PostgreSQL-to-Oracle Datenbank-Links konvertiert werden. 

Dieses Muster zeigt, wie Sie Datenbanklinks von einem Oracle-Datenbankserver zur Aurora SQL Postgre-kompatiblen Datenbank einrichten können. Da Datenbanklinks unidirektional sind, deckt das Muster auch die Konvertierung von Datenbanklinks von der Postgre-Datenbank in die SQL Oracle-Datenbank ab.

Nach der Migration und Konvertierung von Oracle Database zu einer Aurora SQL Postgre-kompatiblen Datenbank sind die folgenden Schritte erforderlich, um Datenbanklinks zwischen Datenbanken einzurichten:

  • Um einen Datenbank-Link mit Oracle Database als Quelle und Aurora Postgre SQL -Compatible als Ziel einzurichten, müssen Oracle Database Gateways für die Kommunikation zwischen heterogenen Datenbanken konfiguriert werden.

  • Wenn Sie einen Datenbank-Link zwischen Aurora SQL Postgre-Compatible Version 12.6 und früher als Quelldatenbank und Oracle Database als Ziel einrichten, ist die oracle_fdwErweiterung nicht nativ verfügbar. Stattdessen können Sie die postgres_fdw Erweiterung in der Aurora SQL Postgre-Compatible-Datenbank verwenden und sie oracle_fdw in einer SQL Postgre-Datenbank konfigurieren, die auf Amazon Elastic Compute Cloud (Amazon) erstellt wurde. EC2 Diese Datenbank fungiert als Vermittler zwischen der Aurora SQL Postgre-kompatiblen Datenbank und der Oracle-Datenbank. Dieses Muster beinhaltet zwei Optionen für die Einrichtung der Datenbank-Verbindung mit Aurora Postgre SQL 12.6 und früheren Versionen:

    • Konfigurieren Sie die EC2 Instance in einer Amazon EC2 Auto Scaling Scaling-Gruppe mit einem EC2 Amazon-Startskript, das einen internen Domain Name System (DNS) -Eintrag in Amazon Route 53 aktualisiert.

    • Konfigurieren Sie die EC2 Instance in einer Amazon EC2 Auto Scaling Scaling-Gruppe mit einem Network Load Balancer für Hochverfügbarkeit (HA).

Wenn Sie eine Datenbankverbindung zwischen Aurora SQL Postgre-Compatible Version 12.7 und höher einrichten, können Sie die Erweiterung verwenden. oracle_fdw

Voraussetzungen

  • Amazon Aurora SQL Postgre-Kompatible Datenbank in einer virtuellen privaten Cloud () VPC

  • Netzwerkkonnektivität zwischen Oracle und Aurora Postgre SQL — Kompatible Datenbanken

Einschränkungen

  • Derzeit können Datenbanklinks nicht mit Amazon Relational Database Service (AmazonRDS) for Oracle als Quelldatenbank und Aurora SQL Postgre-Compatible als Zieldatenbank eingerichtet werden.

Produktversionen

  • Oracle Database 11g und höher

  • Aurora SQL Postgre-Compatible 11 und höher

Quelltechnologie-Stack

Vor der Migration kann die Oracle-Quelldatenbank über Datenbank-Links auf Objekte in anderen Oracle-Datenbanken zugreifen. Dies funktioniert nativ zwischen Oracle-Datenbanken vor Ort oder in der AWS Cloud.

Zieltechnologie-Stack

Option 1

  • Amazon Aurora SQL Postgre-kompatible Ausgabe

  • SQLPostgre-Datenbank auf einer Amazon-Instance EC2

  • Amazon EC2 Auto Scaling Scaling-Gruppe

  • Amazon Route 53

  • Amazon Simple Notification Service (AmazonSNS)

  • AWSIdentity and Access Management (IAM)

  • AWS Direct Connect

Option 2

  • Amazon Aurora SQL Postgre-kompatible Ausgabe

  • SQLPostgre-Datenbank auf einer Amazon-Instance EC2

  • Amazon EC2 Auto Scaling Scaling-Gruppe

  • Network Load Balancer

  • Amazon SNS

  • Direct Connect

Variante 3

  • Amazon Aurora SQL Postgre-kompatible Ausgabe

  • Direct Connect

Zielarchitektur

Option 1

Das folgende Diagramm zeigt die Einrichtung von Datenbank-Links mithilfe der postgres_fdw Erweiterungen oracle_fdw und, wobei HA von einer Amazon EC2 Auto Scaling Scaling-Gruppe und Route 53 bereitgestellt wird.

Prozess in sieben Schritten mit Direct Connect, der das Unternehmensrechenzentrum und die AWS Cloud verbindet.
  1. Eine Aurora SQL Postgre-kompatible Instance mit der postgres_fdw Erweiterung stellt eine Verbindung zur SQL Postgre-Datenbank auf Amazon her. EC2

  2. Die SQL Postgre-Datenbank mit der oracle_fdw Erweiterung befindet sich in einer Auto Scaling Scaling-Gruppe.

  3. Die SQL Postgre-Datenbank auf Amazon EC2 verwendet Direct Connect, um eine Verbindung zu Oracle Database vor Ort herzustellen.

  4. Oracle Database ist mit Oracle Database Gateways für Verbindungen von Oracle Database zur Postgre-Datenbank konfiguriert. SQL AWS

  5. IAMerteilt Amazon die Erlaubnis, Route 53 53-Datensätze EC2 zu aktualisieren.

  6. Amazon SNS sendet Benachrichtigungen für automatische Skalierungsaktionen.

  7. Der in Route 53 konfigurierte Domainname verweist auf die IP-Adresse der SQL EC2 Postgre-Amazon-Instance.

Option 2

Das folgende Diagramm zeigt die Einrichtung von Datenbank-Links mithilfe der postgres_fdw Erweiterungen oracle_fdw und, wobei HA von einer Auto Scaling Scaling-Gruppe und einem Network Load Balancer bereitgestellt wird.

Sechsstufiger Prozess, der einen Network Load Balancer beinhaltet.
  1. Eine Aurora SQL Postgre-kompatible Instance mit der postgres_fdw Erweiterung stellt eine Verbindung zum Network Load Balancer her.

  2. Der Network Load Balancer verteilt die Verbindung von der Aurora SQL Postgre-Compatible Datenbank zur SQL Postgre-Datenbank auf Amazon. EC2

  3. Die SQL Postgre-Datenbank mit der oracle_fdw Erweiterung befindet sich in einer Auto Scaling Scaling-Gruppe.

  4. Die SQL Postgre-Datenbank auf Amazon EC2 verwendet Direct Connect, um eine Verbindung zu Oracle Database vor Ort herzustellen.

  5. Oracle Database ist mit Oracle Database Gateways für Verbindungen von Oracle Database zur Postgre-Datenbank konfiguriert. SQL AWS

  6. Amazon SNS sendet Benachrichtigungen für automatische Skalierungsaktionen.

Option 3

Das folgende Diagramm zeigt die Einrichtung von Datenbank-Links mithilfe der oracle_fdw Erweiterung in einer Aurora SQL Postgre-kompatiblen Datenbank.

Leichter zweistufiger Prozess, der die Erweiterung oracle_fwd verwendet.
  1. Eine Aurora SQL Postgre-kompatible Instance mit der oracle_fdw Erweiterung verwendet Direct Connect, um eine Verbindung zu Oracle Database herzustellen.

  2. Oracle Database Gateways, die auf Oracle Server eingerichtet sind, ermöglichen die Konnektivität über Direct Connect zur Aurora SQL Postgre-kompatiblen Datenbank.

AWSDienste

  • Amazon Aurora SQL Postgre-Compatible Edition ist eine vollständig verwaltete, ACID konforme relationale Datenbank-Engine, die Sie bei der Einrichtung, dem Betrieb und der Skalierung von Postgre-Bereitstellungen unterstützt. SQL

  • AWSDirect Connect verbindet Ihr internes Netzwerk über ein Standard-Ethernet-Glasfaserkabel mit einem Direct Connect-Standort. Mit dieser Verbindung können Sie virtuelle Schnittstellen direkt zu öffentlichen AWS Diensten einrichten und gleichzeitig Internetdienstanbieter in Ihrem Netzwerkpfad umgehen.

  • Amazon Elastic Compute Cloud (AmazonEC2) bietet skalierbare Rechenkapazität in der AWS Cloud. Sie können so viele virtuelle Server wie nötig nutzen und sie schnell nach oben oder unten skalieren. In diesem Muster verwenden die Optionen 1 und 2 eine EC2 Instance zum Hosten einer SQL Postgre-Datenbank.

  • Amazon EC2 Auto Scaling hilft Ihnen dabei, die Anwendungsverfügbarkeit aufrechtzuerhalten, und ermöglicht es Ihnen, EC2 Amazon-Instances gemäß den von Ihnen definierten Bedingungen automatisch hinzuzufügen oder zu entfernen.

  • AWSIdentity and Access Management (IAM) hilft Ihnen dabei, den Zugriff auf Ihre AWS Ressourcen sicher zu verwalten, indem kontrolliert wird, wer authentifiziert und autorisiert ist, diese zu verwenden.

  • Amazon Route 53 ist ein hochverfügbarer und skalierbarer DNS Webservice.

  • Amazon Simple Notification Service (AmazonSNS) unterstützt Sie bei der Koordination und Verwaltung des Nachrichtenaustauschs zwischen Herausgebern und Kunden, einschließlich Webservern und E-Mail-Adressen.

  • Elastic Load Balancing (ELB) verteilt eingehenden Anwendungs- oder Netzwerkverkehr auf mehrere Ziele. Sie können beispielsweise den Traffic auf Amazon Elastic Compute Cloud (AmazonEC2) -Instances, Container und IP-Adressen in einer oder mehreren Availability Zones verteilen. Dieses Muster verwendet einen Network Load Balancer.

Andere Dienste

  • Oracle Database Gateways bietet Oracle Database die Möglichkeit, auf Daten in einem System zuzugreifen, das nicht von Oracle stammt.

AufgabeBeschreibungErforderliche Fähigkeiten

Erstellen Sie eine EC2 Instanz und konfigurieren Sie die Postgre-Erweiterung oracle_fdw. SQL

  1. Erstellen Sie eine EC2 Instance mit dem Betriebssystem Amazon Linux 2.

    Hinweis: Amazon Linux 2 nähert sich dem Ende des Supports. Weitere Informationen finden Sie unter Amazon Linux FAQs 2.

  2. Um Postgre zu installierenSQL, melden Sie sich als ec2-user bei der EC2 Instance an und führen Sie die folgenden Befehle aus.

    sudo su - root sudo tee /etc/yum.repos.d/pgdg.repo<<EOF [pgdg12] name=PostgreSQL 12 for RHEL/CentOS 7 - x86_64 baseurl=https://download.postgresql.org/pub/repos/yum/12/redhat/rhel-7-x86_64 enabled=1 gpgcheck=0 EOF sudo yum install -y postgresql12-server sudo yum install postgresql12-devel sudo /usr/pgsql-12/bin/postgresql-12-setup initdb sudo systemctl enable postgresql-12 sudo systemctl start postgresql-12
  3. Laden Sie den oracle_fdw Quellcode von herunter. GitHub

    mkdir -p /var/lib/pgsql/oracle_fdw/ cd /var/lib/pgsql/oracle_fdw/ wget https://github.com/laurenz/oracle_fdw/archive/refs/heads/master.zip unzip master.zip
  4. Installieren Sie Oracle Instant Client und richten Sie die Oracle-Umgebungsvariablen ein.

    yum install https://download.oracle.com/otn_software/linux/instantclient/1912000/oracle-instantclient19.12-basic-19.12.0.0.0-1.x86_64.rpm
    yum install https://download.oracle.com/otn_software/linux/instantclient/1912000/oracle-instantclient19.12-devel-19.12.0.0.0-1.x86_64.rpm
    export ORACLE_HOME=/usr/lib/oracle/19.12/client64export LD_LIBRARY_PATH=/usr/lib/oracle/19.12/client64/lib:$LD_LIBRARY_PATH
  5. Stellen Sie sicher, dass pg_config sich das auf die richtige Version bezieht.

    which pg_config
  6. Kompilierenoracle_fdw.

    cd /var/lib/pgsql/oracle_fdw/oracle_fdw-master make make install

    Hinweis: Wenn Sie eine Fehlermeldung erhalten, die besagt, dass dies oci.h fehlt, fügen Sie Folgendes hinzuMakefile:

    • ZuPG_CPPFLAGS, füge hinzu -I/usr/include/oracle/19.12/client64

    • ZuSHLIB_LINK, füge hinzu -L/usr/lib/oracle/19.12/client64/lib

    Weitere Informationen finden Sie im Repository oracle_fdw.

  7. Melden Sie sich bei der Postgre-Datenbank an und erstellen Sie die ErweiterungSQL. oracle_fdw

    sudo su - postgres psql postgres create extension oracle_fdw;
  8. Erstellen Sie einen SQL Postgre-Benutzer, der Eigentümer der Fremdtabellen sein wird.

    CREATE USER pguser WITH PASSWORD '<password>'; GRANT CONNECT ON DATABASE postgres TO pguser;
  9. Erstellen Sie den Fremddaten-Wrapper. Ersetzen Sie die folgenden Werte durch Ihre Oracle-Datenbank-Serverdetails:

    • <Oracle DB Server IP>

    • <Oracle DB Port>

    • <Oracle_SID>

    create server oradb foreign data wrapper oracle_fdw options (dbserver '//<Oracle DB Server IP>:<Oracle DB Port>/<Oracle_SID>'); GRANT USAGE ON FOREIGN SERVER oradb TO pguser;
  10. Um die Benutzerzuordnung und eine Fremdtabelle zu erstellen, die der Oracle-Tabelle zugeordnet ist, stellen Sie eine Verbindung zur SQL Postgre-Datenbank als pguser her und führen Sie den folgenden Befehl aus. Beachten Sie, dass im Beispielcode das Oracle-Schema verwendet DMS_SAMPLE wird, das die NAME_DATA Tabelle enthält, und dms_sample das zugehörige Passwort. Ersetzen Sie sie nach Bedarf.

    create user mapping for pguser server oradb options (user 'DMS_SAMPLE', password 'dms_sample');

    Hinweis: Das folgende Beispiel erstellt eine Fremdtabelle in Postgre SQL für eine Tabelle in Oracle Database. Eine ähnliche Fremdtabelle muss für jede Oracle-Tabelle erstellt werden, die Zugriff von der Postgre-Instanz benötigt. SQL

    CREATE FOREIGN TABLE name_data(         name_type CHARACTER VARYING(15) NOT NULL,         name CHARACTER VARYING(45) NOT NULL     ) SERVER oradb OPTIONS (schema 'DMS_SAMPLE', table 'NAME_DATA'); select count(*) from name_data;
  11. Konfigurieren Sie die SQL Postgre-Datenbank auf der EC2 Instanz so, dass sie die Oracle-Bibliotheken beim Start der Postgre-Datenbank finden kann. SQL Dies ist für die Erweiterung erforderlich. oracle_fdw

    sudo systemctl stop postgresql-12

    Hinweis: Bearbeiten Sie die /usr/lib/systemd/system/postgresql-12.service Datei so, dass sie die Umgebungsvariablen enthält, sodass der systemctl Systemstart die Oracle-Bibliotheken findet, die für erforderlich sindoracle_fdw.

    # Oracle Environment Variables Environment=ORACLE_HOME=/u01/app/oracle/product/12.2.0.1/db_1 Environment=LD_LIBRARY_PATH=/u01/app/oracle/product/12.2.0.1/db_1/lib:/lib:/usr/lib sudo systemctl start postgresql-12
Cloud-Administrator, DBA
AufgabeBeschreibungErforderliche Fähigkeiten

Richten Sie eine private gehostete Zone in Amazon Route 53 ein.

  1. Erstellen Sie eine private gehostete Zone in Amazon Route 53 Notieren Sie sich den Domainnamen, der einer EC2 Instance zugeordnet werden soll.

  2. Fügen Sie mithilfe einer einfachen Routing-Richtlinie einen „A“ -Eintrag hinzu, der in die EC2 Instanz-IP-Adresse aufgelöst wird, die die oracle_fdw Postgre-Erweiterung enthält. SQL

  3. Notieren Sie sich nach dem Speichern des A-Eintrags die Hosting-Zonen-ID des Domainnamens aus Schritt 1. Dies wird verwendet, um die entsprechende IAM Richtlinie zu erstellen.

DBA, Cloud-Administrator

Erstellen Sie eine IAM Rolle, die einer EC2 Instanz zugewiesen wird.

Verwenden Sie die folgende Richtlinie, um eine IAM Rolle zu erstellen, die an die EC2 Instanz angehängt wird. <Hosted zone ID>Ersetzen Sie sie durch Informationen, die in der vorherigen Geschichte erfasst wurden.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "route53:ChangeResourceRecordSets", "Resource": "arn:aws:route53:::hostedzone/<Hosted zone ID>" }, { "Sid": "VisualEditor1", "Effect": "Allow", "Action": "route53:ListHostedZones", "Resource": "*" } ] }
Cloud-Administrator, DBA

Erstellen Sie eine EC2 Startvorlage.

  1. Erstellen Sie eine AMI der EC2 Instanzen, die die oracle_fdw SQL Postgre-Erweiterung enthält.

  2. Verwenden Sie dieAMI, um eine EC2 Startvorlage zu erstellen.

  3. Um eine Verbindung von der Aurora SQL Postgre-Compatible-Instance zur SQL Postgre-Datenbank auf der Instance zu ermöglichen, ordnen Sie die EC2 IAM Rolle zu, die Sie zuvor erstellt haben, und fügen Sie Sicherheitsgruppen hinzu.

  4. Fügen Sie im Abschnitt Benutzerdaten die folgenden Befehle hinzu Hosted zone ID und ändern Sie sie Domain Name um die entsprechenden Werte. Wählen Sie dann Startvorlage erstellen.

    #!/bin/bash v_zone_id='Hosted zone ID' v_domain_name='Domain Name' v_local_ipv4=$(curl -s http://169.254.169.254/latest/meta-data/local-ipv4) aws route53 change-resource-record-sets --hosted-zone-id $v_zone_id --change-batch '{"Changes":[{"Action":"UPSERT","ResourceRecordSet":{"Name":"'$v_domain_name'","Type":"A","TTL":10,"ResourceRecords":[{"Value":"'$v_local_ipv4'"}]}}]}'
Cloud-Administrator, DBA

Richten Sie die Auto Scaling Scaling-Gruppe ein.

  1. Verwenden Sie zum Einrichten einer Auto Scaling Scaling-Gruppe die Startvorlage, die Sie im vorherigen Schritt erstellt haben.

  2. Konfigurieren Sie die entsprechenden VPC Subnetze, die zum Starten der EC2 Instance verwendet werden. Das Setup für Option 1 verwendet keinen Load Balancer.

  3. Legen Sie unter Skalierungsrichtlinien die gewünschte, minimale und maximale Kapazität auf 1 fest.

  4. Um Benachrichtigungen an das Betriebsteam zu senden, fügen Sie Benachrichtigungen für Ereignisse wie Starten oder Beenden hinzu.

  5. Überprüfen Sie die Konfiguration und wählen Sie Auto Scaling Scaling-Gruppe erstellen aus.

Nach Abschluss startet die Auto Scaling Scaling-Gruppe die EC2 Instance mit der oracle_fdw SQL Postgre-Erweiterung, die eine Verbindung mit Oracle Database herstellt.

Hinweis: Wenn Sie auf eine neue Oracle-Tabelle zugreifen oder die Struktur einer Oracle-Tabelle ändern müssen, müssen sich diese Änderungen in der SQL Postgre-Fremdtabelle widerspiegeln. Nachdem Sie die Änderungen implementiert haben, müssen Sie eine neue AMI EC2 Instanz erstellen und diese zur Konfiguration der Startvorlage verwenden.

Cloud-Administrator, DBA

Konfigurieren Sie die Erweiterung postgres_fdw in der Aurora Postgre-Compatible-Instanz. SQL

  1. Konfigurieren Sie postgres_fdw in der Aurora SQL Postgre-Compatible-Instanz. Dadurch wird eine Verbindung zur SQL Postgre-Datenbank auf Amazon hergestelltEC2, die als Zwischenknoten zwischen der Aurora SQL Postgre-Compatible Instance und der Oracle-Datenbank fungiert.

  2. Connect zur Aurora SQL Postgre-Compatible-Instanz her und führen Sie die folgenden Befehle aus.

    create extension postgres_fdw; CREATE SERVER pgoradb FOREIGN DATA WRAPPER postgres_fdw OPTIONS (dbname 'postgres', host 'Domain Name', port '5432'); CREATE USER MAPPING for postgres SERVER pgoradb OPTIONS (user 'pguser', password '<password>'); CREATE FOREIGN TABLE data_mart.name_data(     name_type CHARACTER VARYING(15) NOT NULL,     name CHARACTER VARYING(45) NOT NULL ) SERVER pgoradb OPTIONS (schema_name 'public', table_name 'name_data'); select count(*) from data_mart.name_data;

Damit ist die Einrichtung eines Datenbank-Links von Aurora SQL Postgre-Compatible zu Oracle Database abgeschlossen.

Die Lösung bietet eine Disaster-Recovery-Strategie (DR) für den Fall, dass die EC2 Instanz, die die Postgre-Datenbank hostet, ausfällt. SQL Die Auto Scaling Scaling-Gruppe startet eine neue EC2 Instance und aktualisiert die DNS mit der IP-Adresse der neuen EC2 Instance. Dadurch wird sichergestellt, dass die Fremdtabellen in der Aurora SQL Postgre-Compatible-Instanz ohne manuelles Eingreifen auf die Oracle-Tabellen zugreifen können.

Cloud-Administrator, DBA
AufgabeBeschreibungErforderliche Fähigkeiten

Erstellen Sie eine EC2 Startvorlage.

  1. Erstellen Sie eine AMI der EC2 Instanzen, die die oracle_fdw SQL Postgre-Erweiterung enthält.

  2. Verwenden Sie dieAMI, um eine EC2 Startvorlage zu erstellen.

Cloud-Administrator, DBA

Richten Sie eine Zielgruppe, einen Network Load Balancer und eine Auto Scaling Scaling-Gruppe ein.

  1. Um eine Zielgruppe zu erstellen, wählen Sie Instances als Zieltyp. Wählen Sie TCPfür Protokoll und für Port 5432 aus. Wählen Sie dann VPC die gewünschte Zielgruppe aus und wählen Sie den entsprechenden Gesundheitscheck aus.

  2. Erstellen Sie einen internen Network Load Balancer in derVPC. Konfigurieren Sie den Load Balancer so, dass er protocol:port:5432 abhört. TCP Stellen Sie die Standardaktion auf Weiterleiten an ein und wählen Sie die Zielgruppe aus, die Sie erstellt haben.

  3. Richten Sie mithilfe der von Ihnen erstellten Startvorlage eine Auto Scaling Scaling-Gruppe ein.

  4. Konfigurieren Sie die Auto Scaling Scaling-Gruppe mit den entsprechenden VPC Subnetzen, die zum Starten der EC2 Instances verwendet werden. 

  5. Wählen Sie für die Option Load Balancing die Option An einen vorhandenen Load Balancer anhängen und wählen Sie die von Ihnen erstellte Zielgruppe aus. Wählen Sie für Gesundheitschecks die Option aus ELB.

  6. Legen Sie unter Skalierungsrichtlinien die gewünschte Kapazität und die Mindestkapazität auf 2 und die maximale Kapazität auf einen höheren Wert fest, je nach Bedarf, um die Last mit HA zu unterstützen.

  7. Um Benachrichtigungen an das Betriebsteam zu senden, fügen Sie Benachrichtigungen für Ereignisse wie Starten oder Beenden hinzu.

  8. Überprüfen Sie die Konfiguration und wählen Sie Auto Scaling Scaling-Gruppe erstellen aus.

Nach Abschluss startet die Auto Scaling Scaling-Gruppe die gewünschte Anzahl von EC2 Instances, die die oracle_fdw SQL Postgre-Erweiterung enthalten, die eine Verbindung zu Oracle Database herstellt.

Hinweis: Wenn Sie auf eine neue Oracle-Tabelle zugreifen oder die Struktur einer Oracle-Tabelle ändern müssen, müssen sich diese Änderungen in der SQL Postgre-Fremdtabelle widerspiegeln. Nachdem Sie die Änderungen implementiert haben, müssen Sie eine neue AMI EC2 Instanz erstellen und diese zur Konfiguration der Startvorlage verwenden.

Cloud-Administrator, DBA

Konfigurieren Sie die Erweiterung postgres_fdw in der Aurora Postgre-Compatible-Instanz. SQL

Konfigurieren Sie postgres_fdw in der Aurora SQL Postgre-Compatible-Instanz. Dies stellt EC2 über einen Network Load Balancer eine Verbindung zur SQL Postgre-Datenbank her. Die SQL Postgre-Instanz on EC2 fungiert als Zwischenknoten zwischen der Aurora SQL Postgre-Compatible Instance und der Oracle-Datenbank.

Connect zur Aurora SQL Postgre-Compatible-Instanz her und führen Sie die folgenden Befehle aus.

create extension postgres_fdw; CREATE SERVER pgoradb FOREIGN DATA WRAPPER postgres_fdw OPTIONS (dbname 'postgres', host 'DNS name of Network Load Balancer', port '5432'); CREATE USER MAPPING for postgres SERVER pgoradb OPTIONS (user 'pguser', password '<password>'); CREATE FOREIGN TABLE data_mart.name_data( name_type CHARACTER VARYING(15) NOT NULL, name CHARACTER VARYING(45) NOT NULL ) SERVER pgoradb OPTIONS (schema_name 'public', table_name 'name_data'); select count(*) from data_mart.name_data;

Damit ist die Einrichtung des Datenbank-Links von Aurora SQL Postgre-Compatible zu Oracle Database abgeschlossen. 

Falls das EC2 Hosten der SQL Postgre-Datenbank fehlschlägt, identifiziert der Network Load Balancer den Fehler und stoppt den Datenverkehr zur ausgefallenen EC2 Instance. Die Auto Scaling Scaling-Gruppe startet eine neue EC2 Instance und registriert sie beim Load Balancer. Dadurch wird sichergestellt, dass nach dem Ausfall der ursprünglichen EC2 Instanz die Fremdtabellen in der Aurora SQL Postgre-Compatible Instance ohne manuelles Eingreifen auf die Oracle-Tabellen zugreifen können.

Cloud-Administrator, DBA
AufgabeBeschreibungErforderliche Fähigkeiten

Konfigurieren Sie die Erweiterung oracle_fdw in der Aurora Postgre-Compatible-Instanz. SQL

Für die Aurora SQL Postgre-kompatible Datenbankversion 12.7 und höher ist die oracle_fdw Erweiterung nativ verfügbar. Dadurch entfällt die Notwendigkeit, die Postgre-Zwischendatenbank auf einer Instanz zu erstellen. SQL EC2 Die Aurora SQL Postgre-Compatible Instance kann sich direkt mit Oracle Database verbinden.

  1. Um die oracle_fdw Erweiterung zu erstellen, melden Sie sich bei der Aurora SQL Postgre-Compatible-Instanz an und führen Sie den folgenden Befehl aus.

    create extension oracle_fdw;
  2. Erstellen Sie den Fremddaten-Wrapper. Ersetzen Sie die folgenden Werte durch Ihre Oracle-Datenbank-Serverdetails:

    • <Oracle DB Server IP>

    • <Oracle DB Port>

    • <Oracle_SID>

    create server oradb foreign data wrapper oracle_fdw options (dbserver '//<Oracle DB Server IP>:<Oracle DB Port>/<Oracle_SID>');
  3. Führen Sie den folgenden Befehl aus, um die Benutzerzuordnung und eine Fremdtabelle zu erstellen, die der Oracle-Tabelle zugeordnet ist. Beachten Sie, dass im Beispielcode das Oracle-Schema verwendet DMS_SAMPLE wird, das die NAME_DATA Tabelle enthält, und dms_sample das zugehörige Passwort. Ersetzen Sie sie nach Bedarf.  Außerdem muss Foreign Table in der Aurora SQL Postgre-Compatible Instance erstellt werden, um auf jede andere Oracle-Tabelle zugreifen zu können.

    create user mapping for postgres server oradb options (user 'DMS_SAMPLE', password 'dms_sample'); CREATE FOREIGN TABLE name_data(     name_type character varying(15) OPTIONS (key 'true') NOT NULL,     name character varying(45)  OPTIONS (key 'true') NOT NULL )SERVER oradb OPTIONS (schema 'DMS_SAMPLE', table 'NAME_DATA');

    Eine ähnliche Fremdtabelle muss für jede Oracle-Tabelle erstellt werden, die Zugriff von der SQL Postgre-Instanz benötigt.

Cloud-Administrator, DBA
AufgabeBeschreibungErforderliche Fähigkeiten

Konfigurieren Sie das Gateway auf dem lokalen Oracle-Datenbankserver.

  1. Installieren Sie als Root-Benutzer den neuesten ODBC Unix-Treibermanager.

    sudo yum install unixODBC*
  2. Installieren Sie den SQL ODBC Postgre-Treiber (psqlODBC).

    sudo wget https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm sudo yum install pgdg-redhat-repo-latest.noarch.rpm sudo yum install postgresql12-odbc
  3. Erstellen Sie einen ODBC Datenquellennamen (DSN) für den Treiber.

    Der ODBC Unix-Treibermanager stellt die isql Befehlszeilenprogramme odbcinstodbc_config, und bereit, mit denen der Treiber konfiguriert und getestet werden kann. Mithilfe der odbc_config Dienstprogramme odbcinst oder können Sie nach den Dateien des ODBC Unix-Treibermanagers suchen, um Treiberinformationen zur Erstellung des zu übergebenDSN.

    odbcinst -j

    Der folgende Code zeigt eine Beispielausgabe.

    unixODBC 2.3.1 DRIVERS............: /etc/odbcinst.ini SYSTEM DATA SOURCES: /etc/odbc.ini FILE DATA SOURCES..: /etc/ODBCDataSources USER DATA SOURCES..: /root/.odbc.ini SQLULEN Size.......: 8 SQLLEN Size........: 8 SQLSETPOSIROW Size.: 8 odbc_config --odbcini --odbcinstini /etc/odbc.ini /etc/odbcinst.ini

    In der Beispielausgabe können Sie die odbc.ini Dateien odbcinst.ini und sehen. Im Grunde odbcinst.ini ist es eine Registrierungs- und Konfigurationsdatei für ODBC Treiber in einer Umgebung, während odbc.ini es sich um eine Registrierungs- und Konfigurationsdatei für handelt ODBCDSNs. Um die Treiber zu aktivieren, müssen Sie diese beiden Dateien ändern.

  4. Konfigurieren Sie die psqlODBC Treiberbibliotheken in der ODBC Treiberdatei /etc/odbcinst.ini und fügen Sie die folgenden Zeilen am Ende der Datei hinzu. Diese Zeilen stellen einen Eintrag für den Treiber dar.

    [PostgreSQL] Description     = ODBC for PostgreSQL Driver          = /usr/lib/psqlodbcw.so Setup           = /usr/lib/libodbcpsqlS.so Driver64        = /usr/lib64/psqlodbcw.so Setup64         = /usr/lib64/libodbcpsqlS.so FileUsage       = 1
  5. Erstellen Sie eine DSN in der etc/odbc.ini Datei/. Der Treibermanager liest diese Datei, um anhand der unter angegebenen Treiberdetails zu ermitteln, wie eine Verbindung zur Datenbank hergestellt werden sollodbcinst.ini. Ersetzen Sie die folgenden Parameter durch tatsächliche Werte:

    • <PostgreSQL Port>

    • <PostgreSQL Database Name>

    • <Aurora PostgreSQL Endpoint>

    • <PostgreSQL username>

    • <PostgreSQL password>

    [pgdsn] Driver=/usr/pgsql-12/lib/psqlodbc.so Description=PostgreSQL ODBC Driver Database=<PostgreSQL Database Name> Servername=<Aurora PostgreSQL Endpoint> Username=<PostgreSQL username> Password=<PostgreSQL password> Port=<PostgreSQL Port> UseDeclareFetch=1 CommLog=/tmp/pgodbclink.log Debug=1 LowerCaseIdentifier=1
  6. Testen Sie mit dem isql Hilfsprogramm die ODBC Verbindung (psqlODBC) zur SQL Postgre-Datenbank, DSN die Sie erstellt haben.

    isql -v pgdsn

    Der folgende Code zeigt eine Beispielausgabe.

    +---------------------------------------+ | Connected!                        | |                                         | | sql-statement                    | | help [tablename]                | | quit                                   | |                                         | +---------------------------------------+ quit
  7. Erstellen Sie mit dem DSN das Gateway für den ODBC (HS) -Servicehandler.

    Erstellen Sie als oracle Benutzer eine Datei initDSN.ora am Speicherort$ORACLE_HOME/hs/admin. In diesem Fall pgdsn heißt dieDSN, Sie müssen also eine Datei erstelleninitpgdsn.ora.

    more initpgdsn.ora

    Der folgende Code zeigt eine Beispielausgabe.

    # This is a sample agent init file that contains the HS parameters that are # needed for the Database Gateway for ODBC # # HS init parameters # HS_FDS_CONNECT_INFO=pgdsn HS_FDS_TRACE_LEVEL=OFF HS_FDS_TRACE_FILE_NAME=/tmp/ora_hs_trace.log HS_FDS_SHAREABLE_NAME=/usr/lib64/libodbc.so HS_NLS_NCHAR=UCS2 HS_LANGUAGE=AMERICAN_AMERICA.AL32UTF8 # # ODBC specific environment variables # set ODBCINI=/etc/odbc.ini
  8. Passen Sie den Listener ($ORACLE_HOME/network/admin/listener.ora) an, indem Sie den DSN Eintrag in SID_LIST_LISTENER hinzufügen.

    more $ORACLE_HOME/network/admin/listener.ora

    Der folgende Code zeigt eine Beispielausgabe.

    SID_LIST_LISTENER =   (SID_LIST =    (SID_DESC=     (SID_NAME = pgdsn)     (ORACLE_HOME = /u01/app/oracle/product/12.2.0.1/db_1)     (ENVS="LD_LIBRARY_PATH=/lib64:/usr/lib:/usr/lib64:/u01/app/oracle/product/12.2.0.1/db_1")     (PROGRAM=dg4odbc)    ) )
  9. Passen Sie das tnsname ($ORACLE_HOME/network/admin/tnsnames.ora) an, indem Sie den DSN Eintrag hinzufügen.

    more $ORACLE_HOME/network/admin/tnsnames.ora

    Der folgende Code zeigt eine Beispielausgabe.

    pgdsn=(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SID=pgdsn))(HS=OK))
  10. Starten Sie den Oracle-Listener neu, damit DSN die entsprechenden Einträge in den Netzwerkdateien wirksam werden, und ändern Sie sich <Listener Name> mit dem entsprechenden Oracle-Listener-Namen.

    lsnrctl stop <Listener Name> lsnrctl start <Listener Name>

    Nachdem Sie den Oracle-Listener neu gestartet haben, erstellt er einen Oracle HS-Handler mit einem DSN Namen (). pgdsn

  11. Verwenden Sie den LinkDSN, um eine Oracle-Datenbank zu erstellen, um auf die SQL Postgre-Datenbank zuzugreifen, indem Sie sich bei Oracle Database anmelden.

    create public database link pgdb connect to "postgres" identified by "postgres" using 'pgdsn';
  12. Greifen Sie über den erstellten Oracle-Datenbank-Link auf die SQL Postgre-Daten zu.

    select count(*) from "pg_tables"@pgdb;
DBA

Obwohl die oracle_fdw Erweiterung mit Aurora SQL Postgre-Compatible Version 12.7 und höher verfügbar ist, beinhaltet dieses Muster Lösungen für frühere Versionen von Aurora SQL Postgre-kompatiblen Datenbanken, da viele Kunden ältere Versionen von Aurora SQL Postgre-kompatiblen Datenbanken unterstützen und das Upgrade einer Datenbank mehrere Stufen von Anwendungs- und Leistungstests beinhaltet. Außerdem wird die Datenbankverknüpfungsfunktion häufig verwendet, und das Ziel dieses Artikels ist es, Optionen für alle Versionen von Aurora SQL Postgre-Compatible bereitzustellen.