Migration von IBM DB2 für Linux, UNIX und Windows zu Amazon Relational Database Service for PostgreSQL oder Amazon Aurora PostgreSQL-Compatible Edition - AWS Schema Conversion Tool

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.

Migration von IBM DB2 für Linux, UNIX und Windows zu Amazon Relational Database Service for PostgreSQL oder Amazon Aurora PostgreSQL-Compatible Edition

Wenn Sie IBM Db2 LUW zu PostgreSQL migrieren, AWS SCT können Sie verschiedene Trigger-Anweisungen konvertieren, die mit Db2 LUW verwendet werden. Zu diesen Auslöseranweisungen gehören:

  • Triggerereignisse — Die Triggerereignisse INSERT, DELETE und UPDATE geben an, dass die ausgelöste Aktion immer dann ausgeführt wird, wenn das Ereignis auf die Betrefftabelle oder Betreffansicht angewendet wird. Sie können eine beliebige Kombination der INSERT-, DELETE- und UPDATE-Ereignisse angeben, aber Sie können jedes Ereignis nur einmal angeben. AWS SCT unterstützt einzelne und mehrere Triggerereignisse. Bei Ereignissen hat PostgreSQL praktisch die gleiche Funktionalität.

  • Event OF COLUMN — Sie können einen Spaltennamen aus einer Basistabelle angeben. Der Auslöser wird nur durch die Aktualisierung einer Spalte ausgelöst, die in der Liste der Spaltennamen identifiziert wird. PostgreSQL hat dieselbe Funktionalität.

  • Trigger für Anweisungen — Diese geben an, dass die ausgelöste Aktion nur einmal für die gesamte Anweisung angewendet wird. Sie können diese Art von Auslösergranularität nicht für einen BEFORE-Auslöser oder einen INSTEAD OF-Auslöser anwenden. Sofern dieser Parameter angegeben ist, wird ein UPDATE- oder DELETE-Auslöser aktiviert. Dies gilt auch dann, wenn keine Zeilen betroffen sind. PostgreSQL verfügt auch über diese Funktionalität und die Auslöserdeklaration für Anweisungsauslöser ist für PostgreSQL und Db2 LUW identisch.

  • Referenzierungsklauseln — Diese geben die Korrelationsnamen für Übergangsvariablen und die Tabellennamen für Übergangstabellen an. Korrelationsnamen identifizieren eine bestimmte Zeile in der Gruppe von Zeilen, die von der auslösenden SQL-Operation betroffen sind. Tabellennamen identifizieren die vollständige Menge der betroffenen Zeilen. Jede durch eine auslösende SQL-Operation betroffene Zeile ist für die ausgelöste Aktion anhand qualifizierender Spalten mit angegebenen Korrelationsnamen verfügbar. PostgreSQL unterstützt diese Funktionalität nicht und verwendet nur den Korrelationsnamen NEW oder OLD.

  • INSTEAD OF-Trigger — AWS SCT unterstützt diese.

Konvertierung von partitionierten Db2-LUW-Tabellen in partitionierte Tabellen nach PostgreSQL Version 10

AWS SCT kann Db2-LUW-Tabellen in partitionierte Tabellen in PostgreSQL 10 konvertieren. Es gibt mehrere Einschränkungen beim Umwandeln einer partitionierten Db2 LUW-Tabelle in PostgreSQL:

  • Sie können in Db2 LUW eine partitionierte Tabelle mit einer löschbaren Spalte erstellen, und Sie können eine Partition angeben, die NULL-Werte speichert. PostgreSQL unterstützt jedoch keine NULL-Werte für RANGE-Partitionierungen.

  • LUW Db2 kann in einer INCLUSIVE- oder EXCLUSIVE-Klausel Bereichsgrenzenwerte festlegen. PostgreSQL unterstützt nur INCLUSIVE für ein Startgrenze und EXCLUSIVE für eine Endgrenze. Der Name der konvertierten Partition hat das Format <original_table_name>_<original_partition_name>.

  • Für partitionierte Tabellen in Db2 LUW können Sie primäre oder eindeutige Schlüssel erstellen. In PostgreSQL müssen Sie primäre oder eindeutige Schlüssel direkt für jede Partition erstellen. Primäre oder eindeutige Schlüsselbeschränkungen müssen aus der übergeordneten Tabelle entfernt werden. Der Name des konvertierten Schlüssels hat das Format <original_key_name>_<original_partition _name>.

  • Sie können eine Fremdschlüsselbeschränkung von und zu einer partitionierten Tabelle in der Db2-LUW erstellen. PostgreSQL unterstützt jedoch keine Fremdschlüsselverweise in partitionierten Tabellen. PostgreSQL unterstützt auch keine Fremdschlüsselverweise aus einer partitionierten Tabelle in eine andere Tabelle.

  • Sie können einen Index für eine partitionierte Tabelle in Db2 LUW erstellen. In PostgreSQL müssen Sie jedoch einen Index direkt für jede Partition erstellen. Indizes müssen aus der übergeordneten Tabelle entfernt werden. Der Name des konvertierten Index hat das Format <original_index_name>_<original_partition_name>.

  • Sie müssen Zeilenauslöser für einzelne Partitionen definieren, nicht für die partitionierte Tabelle. Auslöser müssen aus der übergeordneten Tabelle entfernt werden. Der Name des konvertierten Auslösers hat das Format <original_trigger_name>_<original_partition_name>.

Berechtigungen für PostgreSQL als Ziel

Um PostgreSQL als Ziel zu verwenden, ist das AWS SCT Privileg erforderlich. CREATE ON DATABASE Stellen Sie sicher, dass Sie dieses Recht für jede PostgreSQL-Zieldatenbank gewähren.

Um die konvertierten öffentlichen Synonyme zu verwenden, ändern Sie den Standardsuchpfad der Datenbank in. "$user", public_synonyms, public

Sie können das folgende Codebeispiel verwenden, um einen Datenbankbenutzer zu erstellen und die Berechtigungen zu gewähren.

CREATE ROLE user_name LOGIN PASSWORD 'your_password'; GRANT CREATE ON DATABASE db_name TO user_name; ALTER DATABASE db_name SET SEARCH_PATH = "$user", public_synonyms, public;

Ersetzen Sie ihn im vorherigen Beispiel user_name durch den Namen Ihres Benutzers. Ersetzen Sie es dann db_name durch den Namen Ihrer Zieldatenbank. Schließlich ersetzen Sie es your_password durch ein sicheres Passwort.

In PostgreSQL kann nur der Schemaeigentümer oder ein superuser ein Schema entfernen. Der Besitzer kann ein Schema und alle Objekte, die dieses Schema enthält, löschen, auch wenn der Eigentümer des Schemas einige seiner Objekte nicht besitzt.

Wenn Sie verschiedene Benutzer verwenden, um verschiedene Schemas zu konvertieren und auf Ihre Zieldatenbank anzuwenden, erhalten Sie möglicherweise eine Fehlermeldung, wenn ein Schema nicht gelöscht AWS SCT werden kann. Verwenden Sie die Rolle superuser, um diese Fehlermeldung zu vermeiden.