Migrieren Sie eine partitionierte Oracle-Tabelle zu Postgre mithilfe SQL von AWS DMS - 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.

Migrieren Sie eine partitionierte Oracle-Tabelle zu Postgre mithilfe SQL von AWS DMS

Erstellt von Saurav Mishra () und Eduardo Valentim () AWS AWS

Umgebung: PoC oder Pilotprojekt

Quelle: Oracle-Datenbank

Ziel: Postgre 9.0 SQL

R-Typ: Re-Architect

Arbeitslast: Oracle

Technologien: Migration; Datenbanken; Speicher und Backup

AWSDienstleistungen: AWS DMS

Übersicht

Dieses Muster beschreibt, wie das Laden einer partitionierten Tabelle von Oracle nach Postgre mithilfe SQL von AWS Database Migration Service (AWSDMS) beschleunigt werden kann, der keine native Partitionierung unterstützt. Die SQL Postgre-Zieldatenbank kann auf Amazon Elastic Compute Cloud (AmazonEC2) installiert werden, oder es kann sich um eine Amazon Relational Database Service (AmazonRDS) for Postgre SQL - oder Amazon Aurora Postgre-Compatible SQL Edition-DB-Instance handeln. 

Das Hochladen einer partitionierten Tabelle umfasst die folgenden Schritte:

  1. Erstellen Sie eine übergeordnete Tabelle, die der Oracle-Partitionstabelle ähnelt, aber keine Partition enthält.

  2. Erstellen Sie untergeordnete Tabellen, die von der übergeordneten Tabelle erben, die Sie in Schritt 1 erstellt haben.

  3. Erstellen Sie eine Prozedurfunktion und einen Trigger, um die Einfügungen in der übergeordneten Tabelle zu verarbeiten.

Da der Trigger jedoch bei jeder Einfügung ausgelöst wird, AWS DMS kann das anfängliche Laden sehr langsam sein.

Um die anfänglichen Ladevorgänge von Oracle nach Postgre SQL 9.0 zu beschleunigen, erstellt dieses Muster eine separate AWS DMS Aufgabe für jede Partition und lädt die entsprechenden untergeordneten Tabellen. Anschließend erstellen Sie während der Übernahme einen Trigger. 

SQLPostgre-Version 10 unterstützt native Partitionierung. In einigen Fällen können Sie sich jedoch für die Verwendung der vererbten Partitionierung entscheiden. Weitere Informationen finden Sie im Abschnitt Zusätzliche Informationen.

Voraussetzungen und Einschränkungen

Voraussetzungen

  • Ein aktives AWS Konto

  • Eine Oracle-Quelldatenbank mit einer partitionierten Tabelle

  • Eine Postgre-Datenbank auf SQL AWS

Produktversionen

  • Postgret 9.0 SQL

Architektur

Quelltechnologie-Stack

  • Eine partitionierte Tabelle in Oracle

Zieltechnologie-Stack

  • Eine partitionierte Tabelle in Postgre SQL (bei AmazonEC2, Amazon RDS für Postgre oder Aurora PostgreSQL) SQL

Zielarchitektur

Partitionierte Tabellendaten in Oracle werden zu einer AWS DMS Aufgabe für jede Partition und dann nach SQL Postgre verschoben.

Tools

Epen

AufgabeBeschreibungErforderliche Fähigkeiten

Erstellen Sie die Tabellen in PostgreSQL.

Erstellen Sie die übergeordneten und die entsprechenden untergeordneten Tabellen in Postgre SQL mit den erforderlichen Prüfbedingungen für Partitionen.

DBA

Erstellen Sie die AWS DMS Aufgabe für jede Partition.

Nehmen Sie die Filterbedingung der Partition in die AWS DMS Aufgabe auf. Ordnen Sie die Partitionen den entsprechenden SQL untergeordneten Postgre-Tabellen zu.

DBA

Führen Sie die AWS DMS Aufgaben mit Volllast und Change Data Capture (CDC) aus.

Stellen Sie sicher, dass der StopTaskCachedChangesApplied Parameter auf eingestellt ist true und der StopTaskCachedChangesNotApplied Parameter auf eingestellt istfalse.

DBA
AufgabeBeschreibungErforderliche Fähigkeiten

Beenden Sie die Replikationsaufgaben.

Bevor Sie die Aufgaben beenden, stellen Sie sicher, dass Quelle und Ziel synchron sind.

DBA

Erstellen Sie einen Trigger für die übergeordnete Tabelle.

Da die übergeordnete Tabelle alle Befehle zum Einfügen und Aktualisieren empfängt, sollten Sie einen Trigger erstellen, der diese Befehle auf der Grundlage der Partitionierungsbedingung an die jeweiligen untergeordneten Tabellen weiterleitet.

DBA

Zugehörige Ressourcen

Zusätzliche Informationen

Obwohl Postgre SQL Version 10 die native Partitionierung unterstützt, könnten Sie sich für die folgenden Anwendungsfälle entscheiden, die vererbte Partitionierung zu verwenden:

  • Die Partitionierung erzwingt die Regel, dass alle Partitionen denselben Satz von Spalten wie die übergeordnete Partition haben müssen, aber die Tabellenvererbung unterstützt untergeordnete Partitionen mit zusätzlichen Spalten.

  • Die Tabellenvererbung unterstützt mehrere Vererbungen.

  • Die deklarative Partitionierung unterstützt nur die Listen- und Bereichspartitionierung. Mit der Tabellenvererbung können Sie die Daten beliebig aufteilen. Wenn der Einschränkungsausschluss Partitionen jedoch nicht effektiv bereinigen kann, wird die Abfrageleistung beeinträchtigt.

  • Einige Operationen benötigen eine stärkere Sperre, wenn deklarative Partitionierung verwendet wird als bei Verwendung der Tabellenvererbung. Zum Beispiel erfordert das Hinzufügen oder Entfernen einer Partition zu oder aus einer partitionierten Tabelle eine ACCESS EXCLUSIVE Sperre für die übergeordnete Tabelle, wohingegen eine SHARE UPDATE EXCLUSIVE Sperre für die reguläre Vererbung ausreicht.

Wenn Sie separate Job-Partitionen verwenden, können Sie Partitionen auch neu laden, falls AWS DMS Validierungsprobleme auftreten. Führen Sie Aufgaben auf separaten Replikationsinstanzen aus, um die Leistung und Replikationskontrolle zu verbessern.