

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.

# ConnConnecting zu IBM DB2 für Linux-, UNIX- und Windows-Datenbanken mit dem AWS Schema Conversion Tool
<a name="CHAP_Source.DB2LUW"></a>

Sie können AWS SCT es verwenden, um Schemas, Codeobjekte in der SQL-Sprache und Anwendungscode von IBM Db2 für Linux, Unix und Windows (Db2 LUW) in die folgenden Ziele zu konvertieren.
+ Amazon RDS für MySQL
+ Amazon Aurora MySQL-Compatible Edition
+ Amazon RDS für PostgreSQL
+ Amazon Aurora PostgreSQL-Compatible Edition
+ Amazon RDS für MariaDB

AWS SCT unterstützt als Quelle die Db2-LUW-Versionen 9.1, 9.5, 9.7, 10.1, 10.5, 11.1 und 11.5.

## Rechte für Db2 LUW als Quelle
<a name="CHAP_Source.DB2LUW.Permissions"></a>

Die folgenden Rechte sind erforderlich, um eine Verbindung zu einer Db2 LUW-Datenbank herzustellen, die verfügbaren Rechte zu überprüfen und Schema-Metadaten für eine Quelle zu lesen: 
+ Berechtigung, die erforderlich sind, um eine Verbindung herzustellen:
  + VERBINDUNG ZUR DATENBANK HERSTELLEN
+ Berechtigung, die zum Ausführen von SQL-Anweisungen erforderlich ist:
  + AUF PAKET NULLID AUSFÜHREN. SYSSH200
+ Berechtigungen, die für den Abruf von Informationen auf Instance-Ebene erforderlich sind:
  + FÜHRE DIE FUNKTION SYSPROC.ENV\$1GET\$1INST\$1INFO AUS
  + WÄHLEN SIE AUF SYSIBMADM.ENV\$1INST\$1INFO
  + WÄHLEN SIE AUF SYSIBMADM.ENV\$1SYS\$1INFO
+ Berechtigungen, die benötigt werden, um Berechtigungen zu prüfen, die durch Rollen, Gruppen und Behörden vergeben werden:
  + FÜHRE DIE FUNKTION SYSPROC.AUTH\$1LIST\$1AUTHORITIES\$1FOR\$1AUTHID AUS
  + FÜR DIE FUNKTION SYSPROC.AUTH\$1LIST\$1GROUPS\$1FOR\$1AUTHID AUSFÜHREN
  + FÜR DIE FUNKTION SYSPROC.AUTH\$1LIST\$1ROLES\$1FOR\$1AUTHID AUSFÜHREN
  + WÄHLEN SIE AUF SYSIBMADM.PRIVILEGES
+ Berechtigungen, die für System-Kataloge und Tabellen benötigt werden:
  + WÄHLEN SIE AUF SYSCAT.ATTRIBUTES
  + WÄHLEN SIE AUF SYSCAT.CHECKS
  + WÄHLEN SIE AUF SYSCAT.COLIDENTATTRIBUTES
  + WÄHLEN SIE AUF SYSCAT.COLUMNS
  + WÄHLEN SIE FÜR SYSCAT.DATAPARTITIONEXPRESSION
  + WÄHLEN SIE AUF SYSCAT.DATAPARTITIONS
  + WÄHLEN SIE AUF SYSCAT.DATATYPEDEP
  + WÄHLEN SIE SYSCAT.DATATYPES
  + WÄHLEN SIE AUF SYSCAT.HIERARCHIES
  + WÄHLEN SIE AUF SYSCAT.INDEXCOLUSE
  + WÄHLEN SIE AUF SYSCAT.INDEXES
  + WÄHLEN SIE AUF SYSCAT.INDEX-PARTITIONEN
  + WÄHLEN SIE AUF SYSCAT.KEYCLUSE
  + WÄHLEN SIE AUF SYSCAT.MODULEOBJECTS
  + WÄHLEN SIE AUF SYSCAT.MODULES
  + WÄHLEN SIE AUF SYSCAT.NICKNAMES
  + WÄHLEN SIE AUF SYSCAT.PERIODS
  + WÄHLEN SIE AUF SYSCAT.REFERENCES
  + WÄHLEN SIE AUF SYSCAT.ROUTINEPARMS
  + WÄHLEN SIE AUF SYSCAT.ROUTINES
  + WÄHLEN SIE AUF SYSCAT.ROWFIELDS
  + WÄHLEN SIE AUF SYSCAT.SCHEMATA
  + WÄHLEN SIE AUF SYSCAT.SEQUENCES
  + WÄHLEN SIE AUF SYSCAT.TABCONST
  + WÄHLEN SIE AUF SYSCAT.TABLES
  + WÄHLEN SIE AUF SYSCAT.TRIGGERS
  + WÄHLEN SIE AUF SYSCAT.VARIABLEDEP
  + WÄHLEN SIE AUF SYSCAT.VARIABLES
  + WÄHLEN SIE AUF SYSCAT.VIEWS
  + WÄHLEN SIE AUF SYSIBM. SYSDUMMY1
+  Für die Ausführung von SQL-Anweisungen benötigt das Benutzerkonto eine Berechtigung, mindestens eine der in der Datenbank aktivierten Arbeitslasten zu verwenden. Wurde dem Benutzer keine der Arbeitslasten zugeordnet, stellen Sie sicher, dass der Benutzer Zugriff auf die Standard-Benutzerarbeitslast hat:
  + VERWENDUNG AUF DER ARBEITSLAST SYSDEFAULTUSERWORKLOAD

Um Abfragen auszuführen, müssen Sie temporäre System-Tabellenräume mit den Seitengrößen 8K, 16K und 32K anlegen, falls diese nicht existieren. Um die temporären Tabellenräume zu erstellen, führen Sie die folgenden Skripts aus:

```
CREATE BUFFERPOOL BP8K
  IMMEDIATE
  ALL DBPARTITIONNUMS
  SIZE AUTOMATIC
  NUMBLOCKPAGES 0
  PAGESIZE 8K;
  
CREATE SYSTEM TEMPORARY TABLESPACE TS_SYS_TEMP_8K 
  PAGESIZE 8192 
  BUFFERPOOL BP8K;
  
CREATE BUFFERPOOL BP16K
  IMMEDIATE
  ALL DBPARTITIONNUMS
  SIZE AUTOMATIC
  NUMBLOCKPAGES 0
  PAGESIZE 16K;
  
CREATE SYSTEM TEMPORARY TABLESPACE TS_SYS_TEMP_BP16K 
  PAGESIZE 16384 
  BUFFERPOOL BP16K;  
  
CREATE BUFFERPOOL BP32K
  IMMEDIATE
  ALL DBPARTITIONNUMS
  SIZE AUTOMATIC
  NUMBLOCKPAGES 0
  PAGESIZE 32K;
  
CREATE SYSTEM TEMPORARY TABLESPACE TS_SYS_TEMP_BP32K 
  PAGESIZE 32768 
  BUFFERPOOL BP32K;
```

## Verbindung zu Db2 LUW als Quelle herstellen
<a name="CHAP_Source.DB2LUW.Connecting"></a>

Gehen Sie wie nachfolgend beschrieben vor, um mit dem AWS Schema Conversion Tool eine Verbindung zu Ihrer Db2 LUW-Quelldatenbank herzustellen. 

**Herstellen einer Verbindung zu einer Db2 LUW-Quelldatenbank**

1. Wählen Sie in der die Option AWS Schema Conversion Tool Quelle **hinzufügen** aus. 

1. **Wählen Sie **Db2 LUW** und dann Weiter.** 

   Das Dialogfeld „**Quelle hinzufügen**“ wird angezeigt.

1. Geben Sie **unter Verbindungsname** einen Namen für Ihre Datenbank ein. AWS SCT zeigt diesen Namen in der Baumstruktur im linken Bereich an. 

1. Verwenden Sie die Datenbankanmeldedaten von AWS Secrets Manager oder geben Sie sie manuell ein:
   + Gehen Sie wie folgt vor, um Datenbankanmeldedaten von Secrets Manager zu verwenden:

     1. Wählen Sie für **AWS Secret** den Namen des Secrets aus.

     1. Wählen Sie **Auffüllen**, um alle Werte im Datenbankverbindungsdialogfeld von Secrets Manager automatisch auszufüllen.

     Hinweise zur Verwendung von Datenbankanmeldedaten von Secrets Manager finden Sie unter[Konfiguration AWS Secrets Manager in der AWS Schema Conversion Tool](CHAP_UserInterface.SecretsManager.md).
   + Gehen Sie wie folgt vor, um die Verbindungsinformationen zur IBM Db2 LUW-Quelldatenbank manuell einzugeben:  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/SchemaConversionTool/latest/userguide/CHAP_Source.DB2LUW.html)

1. Wählen Sie **Verbindung testen**, um zu überprüfen, ob eine Verbindung zu Ihrer Quelldatenbank hergestellt werden AWS SCT kann. 

1. Wählen Sie **Connect**, um eine Verbindung zu Ihrer Quelldatenbank herzustellen.

# Migration von IBM DB2 für Linux, UNIX und Windows zu Amazon Relational Database Service for PostgreSQL oder Amazon Aurora PostgreSQL-Compatible Edition
<a name="CHAP_Source.DB2LUW.ToPostgreSQL"></a>

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 Trigger-Ereignisse. 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.
+ **Referenzklauseln** — 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
<a name="CHAP_Source.DB2LUW.ToPostgreSQL.PartitionedTables"></a>

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\$1table\$1name>\$1<original\$1partition\$1name>.
+ 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\$1key\$1name>\$1<original\$1partition \$1name>.
+ 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\$1index\$1name>\$1<original\$1partition\$1name>.
+ 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\$1trigger\$1name>\$1<original\$1partition\$1name>.

## Berechtigungen für PostgreSQL als Ziel
<a name="CHAP_Source.DB2LUW.ToPostgreSQL.ConfigureTarget"></a>

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\$1name* durch den Namen Ihres Benutzers. Ersetzen Sie es dann *db\$1name* durch den Namen Ihrer Zieldatenbank. Schließlich ersetzen Sie es *your\$1password* 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. 

# Migration von IBM DB2 für Linux, UNIX und Windows zu Amazon RDS for MySQL oder Amazon Aurora MySQL
<a name="CHAP_Source.DB2LUW.ToMySQL"></a>

Beachten Sie Folgendes, wenn Sie eine IBM Db2 LUW-Datenbank in RDS for MySQL oder Amazon Aurora MySQL konvertieren.

## Berechtigungen für MySQL als Ziel
<a name="CHAP_Source.DB2LUW.ToMySQL.ConfigureTarget"></a>

Die für MySQL als Ziel erforderlichen Rechte lauten wie folgt:
+ ERSTELLEN AM \$1 . \$1
+ SPÄTER AM \$1 . \$1
+ VORBEIKOMMEN \$1 . \$1
+ INDEX AUF \$1 . \$1
+ REFERENZEN AUF \$1 . \$1
+ SELECT ON \$1.\$1
+ ANSICHT ERSTELLEN AUF \$1 . \$1
+ SHOW VIEW ON \$1.\$1
+ AUSLÖSEN AM \$1 . \$1
+ ROUTINE ERSTELLEN AUF \$1 . \$1
+ ROUTINE ÄNDERN AUF \$1 . \$1
+ AUSFÜHREN AM \$1 . \$1
+ SELECT ON mysql.proc
+ EINFÜGEN, AUF AWS\$1DB 2\$1EXT AKTUALISIEREN. \$1
+ EINFÜGEN, AKTUALISIEREN, LÖSCHEN AUF AWS\$1DB 2\$1EXT\$1DATA. \$1
+ ERSTELLEN SIE TEMPORÄRE TABELLEN AUF AWS\$1DB 2\$1EXT\$1DATA. \$1

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

```
CREATE USER 'user_name' IDENTIFIED BY 'your_password';
GRANT CREATE ON *.* TO 'user_name';
GRANT ALTER ON *.* TO 'user_name';
GRANT DROP ON *.* TO 'user_name';
GRANT INDEX ON *.* TO 'user_name';
GRANT REFERENCES ON *.* TO 'user_name';
GRANT SELECT ON *.* TO 'user_name';
GRANT CREATE VIEW ON *.* TO 'user_name';
GRANT SHOW VIEW ON *.* TO 'user_name';
GRANT TRIGGER ON *.* TO 'user_name';
GRANT CREATE ROUTINE ON *.* TO 'user_name';
GRANT ALTER ROUTINE ON *.* TO 'user_name';
GRANT EXECUTE ON *.* TO 'user_name';
GRANT SELECT ON mysql.proc TO 'user_name';
GRANT INSERT, UPDATE ON AWS_DB2_EXT.* TO 'user_name';
GRANT INSERT, UPDATE, DELETE ON AWS_DB2_EXT_DATA.* TO 'user_name';
GRANT CREATE TEMPORARY TABLES ON AWS_DB2_EXT_DATA.* TO 'user_name';
```

Ersetzen Sie es im vorherigen Beispiel *user\$1name* durch den Namen Ihres Benutzers. Ersetzen Sie es dann *your\$1password* durch ein sicheres Passwort.

Setzen Sie den Parameter `lower_case_table_names` auf `1`, um Amazon RDS für MySQL oder Aurora MySQL als Ziel zu verwenden. Dieser Wert bedeutet, dass der MySQL-Server Kennungen von Objektnamen wie Tabellen, Indizes, Auslösern und Datenbanken ohne Berücksichtigung der Groß- und Kleinschreibung behandelt. Wenn Sie die binäre Protokollierung in Ihrer Ziel-Instance aktiviert haben, setzen Sie den Parameter `log_bin_trust_function_creators` auf `1`. In diesem Fall müssen Sie die Eigenschaften `DETERMINISTIC`, `READS SQL DATA` oder `NO SQL` nicht verwenden, um gespeicherte Funktionen zu erstellen. Erstellen Sie zum Konfigurieren dieser Parameter eine neue DB-Parametergruppe oder ändern Sie eine vorhandene DB-Parametergruppe.