

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.

# Arbeiten mit AWS DMS-Endpunkten
<a name="CHAP_Endpoints"></a>

Ein Endpunkt stellt Verbindungs-, Datenspeichertyp- und Standortinformationen zu Ihrem Datenspeicher bereit. AWS Der Database Migration Service verwendet diese Informationen, um eine Verbindung zu einem Datenspeicher herzustellen und Daten von einem Quellendpunkt zu einem Zielendpunkt zu migrieren. Mithilfe der Endpunkteinstellungen können Sie zusätzliche Verbindungsattribute für einen Endpunkt angeben. Diese Attribute können die Protokollierung, die Dateigröße und andere Parameter steuern. Weitere Informationen zu Endpunkteinstellungen finden Sie im Dokumentationsabschnitt zu Ihrem Datenspeicher. 

In den folgenden Abschnitten erhalten Sie weitere Informationen zu Endpunkten.

**Topics**
+ [Erstellen der Quell- und Zielendpunkte](CHAP_Endpoints.Creating.md)
+ [Quellen für die Datenmigration](CHAP_Source.md)
+ [Ziele für die Datenmigration](CHAP_Target.md)
+ [Konfiguration von VPC-Endpunkten für AWS DMS](CHAP_VPC_Endpoints.md)
+ [DDL-Anweisungen werden unterstützt von AWS DMS](CHAP_Introduction.SupportedDDL.md)
+ [Erweiterte Endpunktkonfiguration](CHAP_Advanced.Endpoints.md)

# Erstellen der Quell- und Zielendpunkte
<a name="CHAP_Endpoints.Creating"></a>

Sie können Quell- und Zielendpunkte beim Anlegen Ihrer Replikations-Instance oder nach dem Anlegen Ihrer Replikations-Instance erstellen. Die Quell- und Zieldatenspeicher können sich auf einer Amazon EC2-Instance (Amazon Elastic Compute Cloud), einer Amazon RDS-DB-Instance (Amazon Relational Database Service) oder einer lokalen Datenbank befinden. (Beachten Sie, dass sich einer Ihrer Endpunkte in einem AWS Dienst befinden muss. Sie können AWS DMS nicht verwenden, um von einer lokalen Datenbank zu einer anderen lokalen Datenbank zu migrieren.)

Beim folgenden Verfahren wird davon ausgegangen, dass Sie den AWS DMS-Konsolenassistenten ausgewählt haben. Sie können diesen Schritt auch ausführen, indem Sie **Endpunkte** im Navigationsbereich der AWS -Konsole und anschließend **Endpunkt erstellen** auswählen. Wenn Sie den Assistenten der Konsole verwenden, werden die Quell- und Zielendpunkte auf der gleichen Seite erstellt. Wenn Sie den Assistenten nicht verwenden, erstellen Sie die einzelnen Endpunkte separat voneinander.

**So geben Sie Quell- oder Zieldatenbank-Endpunkte mithilfe der Konsole an AWS**

1. Geben Sie auf der Seite **Connect source and target database endpoints** die Verbindungsinformationen für die Quell- oder Zieldatenbank an. In der folgenden Tabelle sind die Einstellungen beschrieben.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/dms/latest/userguide/CHAP_Endpoints.Creating.html)

   In der folgenden Tabelle sind die nicht unterstützten Zeichen in Endpunktkennwörtern und Secret Manager-Geheimnissen für die aufgelisteten Datenbank-Engines aufgeführt. Wenn Sie Kommas (,) in Ihren Endpunktpasswörtern verwenden möchten, verwenden Sie die Secrets Manager Manager-Unterstützung unter, AWS DMS um den Zugriff auf Ihre AWS DMS Instances zu authentifizieren. Weitere Informationen finden Sie unter [Verwenden von Geheimnissen für den Zugriff auf AWS Database Migration Service Endpunkte](security_iam_secretsmanager.md).    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/dms/latest/userguide/CHAP_Endpoints.Creating.html)

1. Wählen Sie **Endpunkteinstellungen** und **AWS KMS key **, falls benötigt. Sie können die Endpunktverbindung testen, indem Sie **Run test** wählen. In der folgenden Tabelle sind die Einstellungen beschrieben.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/dms/latest/userguide/CHAP_Endpoints.Creating.html)

# Verwenden der IAM-Authentifizierung für den Amazon RDS-Endpunkt in AWS DMS
<a name="CHAP_Endpoints.Creating.IAMRDS"></a>

AWS Die Identity and Access Management (IAM) -Datenbankauthentifizierung bietet verbesserte Sicherheit für Ihre Amazon RDS-Datenbanken, indem der Datenbankzugriff über AWS IAM-Anmeldeinformationen verwaltet wird. Anstatt herkömmliche Datenbankkennwörter zu verwenden, generiert die IAM-Authentifizierung unter Verwendung von Anmeldeinformationen kurzlebige Authentifizierungstoken, die 15 Minuten lang gültig sind. AWS Dieser Ansatz verbessert die Sicherheit erheblich, da Datenbankkennwörter nicht mehr im Anwendungscode gespeichert werden müssen, wodurch das Risiko der Offenlegung von Anmeldeinformationen verringert wird und eine zentrale Zugriffsverwaltung über IAM ermöglicht wird. Es vereinfacht auch die Zugriffsverwaltung, indem bestehende AWS IAM-Rollen und -Richtlinien genutzt werden, sodass Sie den Datenbankzugriff mit demselben IAM-Framework steuern können, das Sie für andere Dienste verwenden. AWS 

AWS DMS unterstützt jetzt die IAM-Authentifizierung für Replikationsinstanzen, auf denen DMS-Version 3.6.1 oder höher ausgeführt wird, wenn eine Verbindung zu MySQL-, PostgreSQL-, Aurora PostgreSQL-, Aurora MySQL- oder MariaDB-Endpunkten auf Amazon RDS hergestellt wird. Wenn Sie einen neuen Endpunkt für diese Engines erstellen, können Sie die IAM-Authentifizierung auswählen und eine IAM-Rolle angeben, anstatt Datenbankanmeldedaten anzugeben. Diese Integration erhöht die Sicherheit, da Datenbankkennwörter für Ihre Migrationsaufgaben nicht mehr verwaltet und gespeichert werden müssen.

## Konfiguration der IAM-Authentifizierung für den Amazon RDS-Endpunkt in AWS DMS
<a name="CHAP_Endpoints.Creating.IAMRDS.config"></a>

Wenn Sie einen Endpunkt erstellen, können Sie die IAM-Authentifizierung für Ihre Amazon RDS-Datenbank konfigurieren. Gehen Sie wie folgt vor, um die IAM-Authentifizierung zu konfigurieren:

### DMS-Konsole
<a name="CHAP_Endpoints.Creating.IAMRDS.console"></a>

1. Stellen Sie sicher, dass Amazon RDS und der Datenbankbenutzer die IAM-Authentifizierung aktiviert haben. Weitere Informationen finden Sie unter [Aktivieren und Deaktivieren der IAM-Datenbankauthentifizierung](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.IAMDBAuth.Enabling.html) im *Amazon Relational Database Service Service-Benutzerhandbuch*. 

1. Navigieren Sie zur IAM-Konsole und erstellen Sie eine IAM-Rolle mit den folgenden Richtlinien:

   Richtlinie

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "VisualEditor0",
               "Effect": "Allow",
               "Action": [
                   "rds-db:connect"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------

   Vertrauensrichtlinie:

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "",
               "Effect": "Allow",
               "Principal": {
                   "Service": [
                       "dms.amazonaws.com"
                   ]
               },
               "Action": "sts:AssumeRole"
           }
       ]
   }
   ```

------

1. Navigieren Sie während der Endpunktkonfiguration in der [https://console.aws.amazon.com/dms/v2](https://console.aws.amazon.com/dms/v2) zum Abschnitt **Zugriff auf die Endpunktdatenbank** und wählen Sie **IAM-Authentifizierung** aus.

1. Wählen Sie im Dropdownmenü **IAM-Rolle für die RDS-Datenbankauthentifizierung** die IAM-Rolle mit den entsprechenden Berechtigungen für den Zugriff auf die Datenbank aus.

    Weitere Informationen finden Sie unter [Quell- und Zielendpunkte erstellen](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Endpoints.Creating.html).

### AWS CLI
<a name="CHAP_Endpoints.Creating.IAMRDS.awscli"></a>

1. Stellen Sie sicher, dass Amazon RDS und der Datenbankbenutzer die IAM-Authentifizierung aktiviert haben. Weitere Informationen finden Sie unter [Aktivieren und Deaktivieren der IAM-Datenbankauthentifizierung](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.IAMDBAuth.Enabling.html) im *Amazon Relational Database Service Service-Benutzerhandbuch*. 

1. Navigieren Sie zur AWS CLI, erstellen Sie eine IAM-Rolle und lassen Sie DMS die Rolle übernehmen:

   Richtlinie:

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "VisualEditor0",
               "Effect": "Allow",
               "Action": [
                   "rds-db:connect"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------

   Vertrauensrichtlinie:

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "",
               "Effect": "Allow",
               "Principal": {
                   "Service": [
                       "dms.amazonaws.com"
                   ]
               },
               "Action": "sts:AssumeRole"
           }
       ]
   }
   ```

------

1. Führen Sie den folgenden Befehl aus, um das Zertifikat zu importieren und die PEM-Datei herunterzuladen. Weitere Informationen finden [Sie unter Zertifikatspakete für Amazon RDS herunterladen](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL.html#UsingWithRDS.SSL.CertificatesDownload) im *Amazon Relational Database Service Service-Benutzerhandbuch*. 

   ```
   aws dms import-certificate --certificate-identifier rdsglobal --certificate-pem file://~/global-bundle.pem
   ```

1. Führen Sie die folgenden Befehle aus, um einen IAM-Endpunkt zu erstellen:
   + Für PostgreSQL/Aurora PostgreSQL-Endpunkte (When `sslmode` ist auf gesetzt`required`, `--certificate-arn` Flag ist nicht erforderlich): 

     ```
     aws dms create-endpoint --endpoint-identifier <endpoint-name> --endpoint-type <source/target> --engine-name <postgres/aurora-postgres> --username <db username with iam auth privileges> --server-name <db server name> --port <port number> --ssl-mode <required/verify-ca/verify-full> --postgre-sql-settings "{\"ServiceAccessRoleArn\": \"role arn created from step 2 providing permissions for iam authentication\", \"AuthenticationMethod\": \"iam\", \"DatabaseName\": \"database name\"}" --certificate-arn <if sslmode is verify-ca/verify full use cert arn generated in step 3, otherwise this parameter is not required>
     ```
   + Für MySQL-, MariaDB- oder Aurora MySQL-Endpunkte: 

     ```
     aws dms create-endpoint --endpoint-identifier <endpoint-name> --endpoint-type <source/target> --engine-name <mysql/mariadb/aurora> --username <db username with iam auth privileges> --server-name <db server name> --port <port number> --ssl-mode <verify-ca/verify-full> --my-sql-settings "{\"ServiceAccessRoleArn\": \"role arn created from step 2 providing permissions for iam authentication\", \"AuthenticationMethod\": \"iam\", \"DatabaseName\": \"database name\"}" --certificate-arn <cert arn from previously imported cert in step 3>
     ```

1. Führen Sie eine Testverbindung mit der gewünschten Replikationsinstanz aus, um die Zuordnung der Instanzendpunkte zu erstellen und zu überprüfen, ob alles korrekt eingerichtet ist: 

   ```
   aws dms test-connection --replication-instance-arn <replication instance arn> --endpoint-arn <endpoint arn from previously created endpoint in step 4>
   ```
**Anmerkung**  
Wenn Sie die IAM-Authentifizierung verwenden, muss die in Test-Connection bereitgestellte Replikationsinstanz AWS DMS Version 3.6.1 oder höher haben.

## Einschränkungen
<a name="CHAP_Endpoints.Creating.IAMRDS.Limitations"></a>

AWS DMS hat folgende Einschränkungen bei der Verwendung der IAM-Authentifizierung mit dem Amazon RDS-Endpunkt:
+ Derzeit unterstützen Amazon RDS PostgreSQL- und Amazon Aurora PostgreSQL-Instances keine CDC-Verbindungen mit IAM-Authentifizierung. Weitere Informationen finden Sie unter [Einschränkungen für die IAM-Datenbankauthentifizierung](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.IAMDBAuth.html#UsingWithRDS.IAMDBAuth.Limitations) im *Amazon Relational Database Service Service-Benutzerhandbuch*.

# Quellen für die Datenmigration
<a name="CHAP_Source"></a>

AWS Database Migration Service (AWS DMS) kann viele der gängigsten Daten-Engines als Quelle für die Datenreplikation verwenden. Bei der Datenbankquelle kann es sich um eine selbstverwaltete Engine, die auf einer Amazon-EC2-Instance ausgeführt wird, oder um eine On-Premises-Datenbank handeln. Oder es kann sich um eine Datenquelle für einen AWS Service wie Amazon RDS oder Amazon S3 handeln.

Eine umfassende Liste gültiger Quellen finden Sie unter [Quellen für AWS DMS](CHAP_Introduction.Sources.md#CHAP_Introduction.Sources.title).

**Topics**
+ [Verwendung einer Oracle-Datenbank als Quelle für AWS DMS](CHAP_Source.Oracle.md)
+ [Verwenden einer Microsoft SQL Server-Datenbank als Quelle für AWS DMS](CHAP_Source.SQLServer.md)
+ [Verwendung der Microsoft Azure SQL-Datenbank als Quelle für AWS DMS](CHAP_Source.AzureSQL.md)
+ [Verwenden von Microsoft Azure SQL Managed Instance als Quelle für AWS DMS](CHAP_Source.AzureMgd.md)
+ [Verwendung des flexiblen Servers Microsoft Azure Database for PostgreSQL als Quelle für AWS DMS](CHAP_Source.AzureDBPostgreSQL.md)
+ [Verwendung des flexiblen Servers Microsoft Azure Database for MySQL als Quelle für AWS DMS](CHAP_Source.AzureDBMySQL.md)
+ [Verwendung von OCI MySQL Heatwave als Quelle für AWS DMS](CHAP_Source.heatwave.md)
+ [Verwenden von Google Cloud for MySQL als Quelle für AWS DMS](CHAP_Source.GC.md)
+ [Verwenden von Google Cloud für PostgreSQL als Quelle für AWS DMS](CHAP_Source.GCPostgres.md)
+ [Verwenden einer PostgreSQL-Datenbank als Quelle AWS DMS](CHAP_Source.PostgreSQL.md)
+ [Verwendung einer MySQL-kompatiblen Datenbank als Quelle für AWS DMS](CHAP_Source.MySQL.md)
+ [Verwendung einer SAP ASE-Datenbank als Quelle für AWS DMS](CHAP_Source.SAP.md)
+ [MongoDB als Quelle verwenden für AWS DMS](CHAP_Source.MongoDB.md)
+ [Verwendung von Amazon DocumentDB (mit MongoDB-Kompatibilität) als Quelle für AWS DMS](CHAP_Source.DocumentDB.md)
+ [Verwendung von Amazon S3 als Quelle für AWS DMS](CHAP_Source.S3.md)
+ [Verwendung der IBM Db2 für Linux-, Unix-, Windows- und Amazon RDS-Datenbank (Db2 LUW) als Quelle für AWS DMS](CHAP_Source.DB2.md)
+ [Verwendung von IBM Db2 for z/OS Databases als Quelle für AWS DMS](CHAP_Source.DB2zOS.md)

# Verwendung einer Oracle-Datenbank als Quelle für AWS DMS
<a name="CHAP_Source.Oracle"></a>

Sie können Daten aus einer oder mehreren Oracle-Datenbanken migrieren mit AWS DMS. Mit einer Oracle-Datenbank als Quelle können Sie Daten zu allen von AWS DMS unterstützten Zielen migrieren.

AWS DMS unterstützt die folgenden Oracle-Datenbankeditionen:
+ Oracle Enterprise Edition
+ Oracle Standard Edition
+ Oracle Express Edition
+ Oracle Personal Edition

Hinweise zu Versionen von Oracle-Datenbanken, die als Quelle AWS DMS unterstützt werden, finden Sie unter[Quellen für AWS DMS](CHAP_Introduction.Sources.md).

Sie können Secure Sockets Layer (SSL) verwenden, um Verbindungen zwischen Ihrem Oracle-Endpunkt und der Replikations-Instance zu verschlüsseln. Weitere Informationen zur Verwendung von SSL mit einem Oracle-Endpunkt finden Sie unter [SSL-Unterstützung für einen Oracle-Endpunkt](#CHAP_Security.SSL.Oracle).

AWS DMS unterstützt die Verwendung von Oracle Transparent Data Encryption (TDE) zur Verschlüsselung ruhender Daten in der Quelldatenbank. Weitere Informationen zur Verwendung von Oracle TDE mit einem Oracle-Quellendpunkt finden Sie unter [Unterstützte Verschlüsselungsmethoden für die Verwendung von Oracle als Quelle für AWS DMS](#CHAP_Source.Oracle.Encryption).

AWS unterstützt die Verwendung von TLS Version 1.2 und höher mit Oracle-Endpunkten (und allen anderen Endpunkttypen) und empfiehlt die Verwendung von TLS Version 1.3 oder höher.

Gehen Sie wie folgt vor, um eine Oracle-Datenbank als AWS DMS Quellendpunkt zu konfigurieren:

1. Erstellen Sie einen Oracle-Benutzer mit den entsprechenden Berechtigungen für den AWS DMS Zugriff auf Ihre Oracle-Quelldatenbank.

1. Erstellen Sie einen Oracle-Quellendpunkt, der der von Ihnen ausgewählten Oracle-Datenbankkonfiguration entspricht. Um eine full-load-only Aufgabe zu erstellen, ist keine weitere Konfiguration erforderlich.

1. Um eine Aufgabe zu erstellen, die die Erfassung von Änderungsdaten übernimmt (eine reine CDC-Aufgabe oder eine Volllast- und CDC-Aufgabe), wählen Sie Oracle LogMiner oder AWS DMS Binary Reader, um Datenänderungen zu erfassen. Die Auswahl von LogMiner oder Binary Reader bestimmt einige der späteren Berechtigungen und Konfigurationsoptionen. Einen Vergleich zwischen Binary Reader LogMiner und Binary Reader finden Sie im folgenden Abschnitt.

**Anmerkung**  
Weitere Informationen zu Volllastaufgaben, reinen CDC-Aufgaben sowie Volllast-und-CDC-Aufgaben finden Sie unter [Erstellen einer Aufgabe](CHAP_Tasks.Creating.md).

Weitere Informationen zur Arbeit mit Oracle-Quelldatenbanken und AWS DMS finden Sie in den folgenden Abschnitten. 

**Topics**
+ [Verwenden von Oracle LogMiner oder AWS DMS Binary Reader für CDC](#CHAP_Source.Oracle.CDC)
+ [Workflows für die Konfiguration einer selbstverwalteten oder AWS-verwalteten Oracle-Quelldatenbank für AWS DMSKonfigurieren einer Oracle-Quelldatenbank](#CHAP_Source.Oracle.Workflows)
+ [Arbeiten mit einer selbstverwalteten Oracle-Datenbank als Quelle für AWS DMS](#CHAP_Source.Oracle.Self-Managed)
+ [Arbeiten mit einer AWS-verwalteten Oracle-Datenbank als Quelle für AWS DMS](#CHAP_Source.Oracle.Amazon-Managed)
+ [Einschränkungen bei der Verwendung von Oracle als Quelle für AWS DMS](#CHAP_Source.Oracle.Limitations)
+ [SSL-Unterstützung für einen Oracle-Endpunkt](#CHAP_Security.SSL.Oracle)
+ [Unterstützte Verschlüsselungsmethoden für die Verwendung von Oracle als Quelle für AWS DMS](#CHAP_Source.Oracle.Encryption)
+ [Unterstützte Komprimierungsmethoden für die Verwendung von Oracle als Quelle für AWS DMS](#CHAP_Source.Oracle.Compression)
+ [Replizieren verschachtelter Tabellen mit Oracle als Quelle für AWS DMS](#CHAP_Source.Oracle.NestedTables)
+ [REDO wird auf Oracle ASM gespeichert, wenn Oracle als Quelle für verwendet wird AWS DMS](#CHAP_Source.Oracle.REDOonASM)
+ [Endpunkteinstellungen bei Verwendung von Oracle als Quelle für AWS DMS](#CHAP_Source.Oracle.ConnectionAttrib)
+ [Quelldatentypen für Oracle](#CHAP_Source.Oracle.DataTypes)

## Verwenden von Oracle LogMiner oder AWS DMS Binary Reader für CDC
<a name="CHAP_Source.Oracle.CDC"></a>

In gibt es zwei Methoden zum Lesen der Redo-Logs AWS DMS, wenn Change Data Capture (CDC) für Oracle als Quelle ausgeführt wird: Oracle LogMiner und AWS DMS Binary Reader. LogMiner ist eine Oracle-API zum Lesen der Online-Redo-Logs und archivierten Redo-Log-Dateien. Binary Reader ist eine AWS DMS Methode, die die rohen Redo-Log-Dateien direkt liest und analysiert. Diese Methoden weisen die folgenden Merkmale auf.


| Feature | LogMiner | Binary Reader | 
| --- | --- | --- | 
| Einfache Konfiguration | Ja | Nein | 
| Geringere Auswirkungen auf das Quellsystem I/O und die CPU | Nein | Ja | 
| Bessere CDC-Leistung | Nein | Ja | 
| Unterstützung für Oracle-Tabellen-Cluster | Ja | Nein | 
| Unterstützung für alle Typen von Oracle Hybrid Columnar Compression (HCC) | Ja |  Teilweise Binary Reader unterstützt QUERY LOW nicht für Aufgaben mit CDC. Alle anderen HCC-Typen werden vollständig unterstützt.  | 
| Unterstützung für LOB-Spalten nur in Oracle 12c | Nein (LOB-Support ist LogMiner in Oracle 12c nicht verfügbar.) | Ja | 
| Unterstützung für UPDATE-Anweisungen, die sich nur auf LOB-Spalten auswirken | Nein | Ja | 
| Unterstützung für Oracle Transparent Data Encryption (TDE) |  Teilweise Unterstützt bei Verwendung von Oracle LogMiner AWS DMS keine TDE-Verschlüsselung auf Spaltenebene für Amazon RDS for Oracle.  |  Teilweise Binary Reader unterstützt TDE nur für selbstverwaltete Oracle-Datenbanken.  | 
| Unterstützung für alle Oracle-Komprimierungsmethoden | Ja | Nein | 
| Unterstützung für XA-Transaktionen | Nein | Ja | 
| RAC |  Ja Aus Performancegründen und einigen internen DMS-Einschränkungen nicht zu empfehlen.  |  Ja Dringend empfohlen  | 

**Anmerkung**  
 AWS DMS Verwendet standardmäßig Oracle LogMiner for (CDC).   
AWS DMS unterstützt Methoden zur transparenten Datenverschlüsselung (TDE) bei der Arbeit mit einer Oracle-Quelldatenbank. Wenn die von Ihnen angegebenen TDE-Anmeldeinformationen falsch sind, schlägt die AWS DMS Migrationsaufgabe nicht fehl, was sich auf die laufende Replikation verschlüsselter Tabellen auswirken kann. Weitere Informationen zum Angeben der TDE-Anmeldeinformationen finden Sie unter [Unterstützte Verschlüsselungsmethoden für die Verwendung von Oracle als Quelle für AWS DMS](#CHAP_Source.Oracle.Encryption).

Zu den Hauptvorteilen der Verwendung LogMiner von AWS DMS gehören die folgenden:
+ LogMiner unterstützt die meisten Oracle-Optionen, wie Verschlüsselungs- und Komprimierungsoptionen. Binary Reader unterstützt nicht alle Oracle-Optionen, insbesondere die Komprimierung und die meisten Verschlüsselungsoptionen.
+ LogMiner bietet eine einfachere Konfiguration, insbesondere im Vergleich zur Einrichtung mit direktem Zugriff auf Binary Reader oder wenn die Redo-Logs mit Oracle Automatic Storage Management (ASM) verwaltet werden.
+ LogMiner unterstützt Tabellencluster zur Verwendung durch. AWS DMS Bei Binary Reader ist das nicht der Fall.

Zu den Hauptvorteilen der Verwendung von Binary Reader mit AWS DMS gehören:
+ Bei Migrationen mit einer großen Anzahl von Änderungen LogMiner kann dies zu einer gewissen I/O oder CPU-Auswirkung auf den Computer führen, auf dem die Oracle-Quelldatenbank gehostet wird. Bei Binary Reader ist die Wahrscheinlichkeit I/O geringer, dass die CPU beeinträchtigt wird, da die Protokolle direkt durchsucht werden, anstatt mehrere Datenbankabfragen durchzuführen.
+ Bei Migrationen mit einem hohen Änderungsvolumen ist die CDC-Leistung bei Verwendung von Binary Reader in der Regel viel besser als bei Oracle. LogMiner
+ Binary Reader unterstützt CDC for LOBs in Oracle Version 12c. LogMiner tut nicht.

Verwenden Sie im Allgemeinen Oracle LogMiner für die Migration Ihrer Oracle-Datenbank, es sei denn, Sie haben eine der folgenden Situationen:
+ Sie müssen mehrere Migrationsaufgaben auf der Oracle-Quelldatenbank ausführen.
+ Der Umfang der Änderungen oder des Redo-Protokolls in der Oracle-Quelldatenbank ist hoch oder Sie haben Änderungen und verwenden auch Oracle ASM.

**Anmerkung**  
Wenn Sie zwischen der Verwendung von Oracle LogMiner und AWS DMS Binary Reader wechseln, stellen Sie sicher, dass Sie die CDC-Aufgabe neu starten. 

### Konfiguration für CDC für eine Oracle-Quelldatenbank
<a name="CHAP_Source.Oracle.CDC.Configuration"></a>

Damit ein Oracle-Quellendpunkt für eine Aufgabe zur Erfassung von Datenänderungen (Change Data Capture, CDC) eine Verbindung zur Datenbank herstellen kann, müssen Sie möglicherweise zusätzliche Verbindungsattribute angeben. Dies kann entweder für eine Volllast-und-CDC- oder für eine reine CDC-Aufgabe gelten. Die zusätzlichen Verbindungsattribute, die Sie angeben, hängen von der Methode ab, mit der Sie auf die Redo-Logs zugreifen: Oracle LogMiner oder AWS DMS Binary Reader. 

Sie geben die zusätzlichen Verbindungsattribute an, wenn Sie einen Quellendpunkt erstellen. Wenn Sie mehrere Verbindungsattributeinstellungen verwenden, trennen Sie diese durch Semikola und ohne zusätzliche Leerräume voneinander (z. B. `oneSetting;thenAnother`).

AWS DMS verwendet LogMiner standardmäßig. Sie müssen keine zusätzlichen Verbindungsattribute angeben, um dieses Hilfsprogramm zu verwenden. 

Um Binary Reader für den Zugriff auf die Redo-Protokolle verwenden zu können, müssen Sie die folgenden zusätzlichen Verbindungsattribute hinzufügen.

```
useLogMinerReader=N;useBfile=Y;
```

Verwenden Sie das folgende Format für die zusätzlichen Verbindungsattribute, um auf einen Server zuzugreifen, der ASm mit Binary Reader zuzugreifen.

```
useLogMinerReader=N;useBfile=Y;asm_user=asm_username;asm_server=RAC_server_ip_address:port_number/+ASM;
```

Setzen Sie den `Password`-Anforderungsparameter des Quellendpunkts sowohl auf das Oracle-Benutzerpasswort als auch das ASM-Passwort (durch ein Komma getrennt) wie nachfolgend dargestellt:

```
oracle_user_password,asm_user_password
```

Wenn die Oracle-Quelle ASM verwendet, können Sie mit Hochleistungsoptionen in Binary Reader für die Transaktionsverarbeitung in großem Umfang arbeiten. Zu diesen Optionen gehören zusätzliche Verbindungsattribute, um die Anzahl der parallelen Threads (`parallelASMReadThreads`) und die Anzahl der Read-Ahead-Puffer (`readAheadBlocks`) anzugeben. Wenn diese Attribute gemeinsam festgelegt werden, kann dies die Leistung der CDC-Aufgabe erheblich verbessern. Die folgenden Einstellungen liefern gute Ergebnisse für die meisten ASM-Konfigurationen.

```
useLogMinerReader=N;useBfile=Y;asm_user=asm_username;asm_server=RAC_server_ip_address:port_number/+ASM;
    parallelASMReadThreads=6;readAheadBlocks=150000;
```

Weitere Hinweise zu Werten, die zusätzliche Verbindungsattribute unterstützen, finden Sie unter [Endpunkteinstellungen bei Verwendung von Oracle als Quelle für AWS DMS](#CHAP_Source.Oracle.ConnectionAttrib).

Die Leistung einer CDC-Aufgabe mit einer Oracle-Quelle, die ASM verwendet, hängt zudem von anderen Einstellungen ab, die von Ihnen festgelegt werden. Zu diesen Einstellungen gehören Ihre zusätzlichen AWS DMS -Verbindungsattribute sowie die SQL-Einstellungen für die Konfiguration der Oracle-Quelle konfiguriert wurde. Weitere Informationen zu zusätzlichen Verbindungsattributen für eine Oracle-Quelle, die ASM verwendet, finden Sie unter [Endpunkteinstellungen bei Verwendung von Oracle als Quelle für AWS DMS](#CHAP_Source.Oracle.ConnectionAttrib).

Sie müssen außerdem einen geeigneten CDC-Startpunkt wählen. In der Regel möchten Sie dabei den Punkt der Transaktionsverarbeitung identifizieren, an dem die früheste offene Transaktion erfasst wird, von der aus CDC beginnen kann. Andernfalls kann es passieren, dass bei der CDC-Aufgabe frühere offene Transaktionen übersehen werden. Für eine Oracle-Quelldatenbank können Sie auf der Grundlage der Oracle-Systemänderungsnummer (System Change Number, SCN) einen nativen CDC-Startpunkt wählen, um diese früheste offene Transaktion zu identifizieren. Weitere Informationen finden Sie unter [Durchführen der Replikation von einem CDC-Startpunkt aus](CHAP_Task.CDC.md#CHAP_Task.CDC.StartPoint).

Weitere Informationen zum Konfigurieren von CDC für eine selbstverwaltete Oracle-Datenbank als Quelle finden Sie unter [Kontoberechtigungen sind erforderlich, wenn Sie Oracle LogMiner für den Zugriff auf die Redo-Logs verwenden](#CHAP_Source.Oracle.Self-Managed.LogMinerPrivileges), [Kontoberechtigungen sind erforderlich, wenn AWS DMS Binary Reader für den Zugriff auf die Redo-Logs verwendet wird](#CHAP_Source.Oracle.Self-Managed.BinaryReaderPrivileges) und [Erforderliche zusätzliche Kontoberechtigungen bei Verwendung von Binary Reader mit Oracle ASM](#CHAP_Source.Oracle.Self-Managed.ASMBinaryPrivileges).

Weitere Hinweise zur Konfiguration von CDC für eine AWS-verwaltete Oracle-Datenbank als Quelle finden Sie unter [Konfiguration einer CDC-Aufgabe für die Verwendung von Binary Reader mit einer RDS for Oracle-Quelle für AWS DMS](#CHAP_Source.Oracle.Amazon-Managed.CDC) und. [Verwenden eines Amazon RDS Oracle Standby (Read Replica) als Quelle mit Binary Reader for CDC in AWS DMS](#CHAP_Source.Oracle.Amazon-Managed.StandBy)

## Workflows für die Konfiguration einer selbstverwalteten oder AWS-verwalteten Oracle-Quelldatenbank für AWS DMS


## Konfigurieren einer Oracle-Quelldatenbank
<a name="CHAP_Source.Oracle.Workflows"></a>

Wenden Sie zum Konfigurieren einer selbstverwalteten Quelldatenbank-Instance die folgenden Workflow-Schritte abhängig davon an, wie Sie CDC ausführen. 


| Für diesen Workflow-Schritt | Gehen Sie wie folgt vor, wenn Sie CDC verwenden LogMiner | Vorgehensweise bei Ausführung von CDC mit Binary Reader | 
| --- | --- | --- | 
| Gewähren Sie Oracle-Kontoberechtigungen. | Siehe [Erforderliche Benutzerkontenberechtigungen für eine selbstverwaltete Oracle-Quelle für AWS DMS](#CHAP_Source.Oracle.Self-Managed.Privileges). | Siehe [Erforderliche Benutzerkontenberechtigungen für eine selbstverwaltete Oracle-Quelle für AWS DMS](#CHAP_Source.Oracle.Self-Managed.Privileges). | 
| Bereiten Sie die Quelldatenbank für die Replikation mit CDC vor. | Siehe [Vorbereiten einer selbstverwalteten Oracle-Quelldatenbank für CDC mit AWS DMS](#CHAP_Source.Oracle.Self-Managed.Configuration). | Siehe [Vorbereiten einer selbstverwalteten Oracle-Quelldatenbank für CDC mit AWS DMS](#CHAP_Source.Oracle.Self-Managed.Configuration). | 
| Gewähren Sie zusätzliche Oracle-Benutzerberechtigungen, die für CDC erforderlich sind. | Siehe [Kontoberechtigungen sind erforderlich, wenn Sie Oracle LogMiner für den Zugriff auf die Redo-Logs verwenden](#CHAP_Source.Oracle.Self-Managed.LogMinerPrivileges). | Siehe [Kontoberechtigungen sind erforderlich, wenn AWS DMS Binary Reader für den Zugriff auf die Redo-Logs verwendet wird](#CHAP_Source.Oracle.Self-Managed.BinaryReaderPrivileges). | 
| Gewähren Sie einer Oracle-Instance mit ASM zusätzliche Benutzerkontenberechtigungen, die für den Zugriff auf ASM für CDC erforderlich sind. | Keine zusätzliche Aktion. AWS DMS unterstützt Oracle ASM ohne zusätzliche Kontoberechtigungen. | Siehe [Erforderliche zusätzliche Kontoberechtigungen bei Verwendung von Binary Reader mit Oracle ASM](#CHAP_Source.Oracle.Self-Managed.ASMBinaryPrivileges). | 
| Falls Sie dies noch nicht getan haben, konfigurieren Sie die Aufgabe so, dass sie LogMiner oder Binary Reader for CDC verwendet. | Siehe [Verwenden von Oracle LogMiner oder AWS DMS Binary Reader für CDC](#CHAP_Source.Oracle.CDC). | Siehe [Verwenden von Oracle LogMiner oder AWS DMS Binary Reader für CDC](#CHAP_Source.Oracle.CDC). | 
| Konfigurieren Sie Oracle Standby als Quelle für CDC. | AWS DMS unterstützt Oracle Standby nicht als Quelle. | Siehe [Verwenden eines selbstverwalteten Oracle Standby als Quelle mit Binary Reader for CDC in AWS DMS](#CHAP_Source.Oracle.Self-Managed.BinaryStandby). | 

Verwenden Sie die folgenden Workflow-Schritte, um eine AWS-verwaltete Oracle-Quelldatenbank-Instance zu konfigurieren.


| Für diesen Workflow-Schritt | Gehen Sie wie folgt vor LogMiner, wenn Sie CDC verwenden | Vorgehensweise bei Ausführung von CDC mit Binary Reader | 
| --- | --- | --- | 
| Gewähren Sie Oracle-Kontoberechtigungen. | Weitere Informationen finden Sie unter [Erforderliche Benutzerkontenberechtigungen für eine AWS-verwaltete Oracle-Quelle für AWS DMS](#CHAP_Source.Oracle.Amazon-Managed.Privileges). | Weitere Informationen finden Sie unter [Erforderliche Benutzerkontenberechtigungen für eine AWS-verwaltete Oracle-Quelle für AWS DMS](#CHAP_Source.Oracle.Amazon-Managed.Privileges). | 
| Bereiten Sie die Quelldatenbank für die Replikation mit CDC vor. | Weitere Informationen finden Sie unter [Konfiguration einer AWS-verwalteten Oracle-Quelle für AWS DMS](#CHAP_Source.Oracle.Amazon-Managed.Configuration). | Weitere Informationen finden Sie unter [Konfiguration einer AWS-verwalteten Oracle-Quelle für AWS DMS](#CHAP_Source.Oracle.Amazon-Managed.Configuration). | 
| Gewähren Sie zusätzliche Oracle-Benutzerberechtigungen, die für CDC erforderlich sind. | Es sind keine zusätzlichen Kontoberechtigungen erforderlich. | Weitere Informationen finden Sie unter [Konfiguration einer CDC-Aufgabe für die Verwendung von Binary Reader mit einer RDS for Oracle-Quelle für AWS DMS](#CHAP_Source.Oracle.Amazon-Managed.CDC). | 
| Falls Sie dies noch nicht getan haben, konfigurieren Sie die Aufgabe so, dass sie LogMiner oder Binary Reader for CDC verwendet. | Weitere Informationen finden Sie unter [Verwenden von Oracle LogMiner oder AWS DMS Binary Reader für CDC](#CHAP_Source.Oracle.CDC). | Weitere Informationen finden Sie unter [Verwenden von Oracle LogMiner oder AWS DMS Binary Reader für CDC](#CHAP_Source.Oracle.CDC). | 
| Konfigurieren Sie Oracle Standby als Quelle für CDC. | AWS DMS unterstützt Oracle Standby nicht als Quelle. | Weitere Informationen finden Sie unter [Verwenden eines Amazon RDS Oracle Standby (Read Replica) als Quelle mit Binary Reader for CDC in AWS DMS](#CHAP_Source.Oracle.Amazon-Managed.StandBy). | 

## Arbeiten mit einer selbstverwalteten Oracle-Datenbank als Quelle für AWS DMS
<a name="CHAP_Source.Oracle.Self-Managed"></a>

Eine *selbstverwaltete Datenbank* ist eine Datenbank, die von Ihnen konfiguriert und kontrolliert wird. Dabei kann es sich um eine On-Premises-Datenbank-Instance oder um eine Datenbank in Amazon EC2 handeln. Im Folgenden erfahren Sie mehr über die Rechte und Konfigurationen, die Sie benötigen, wenn Sie eine selbstverwaltete Oracle-Datenbank mit verwenden. AWS DMS

### Erforderliche Benutzerkontenberechtigungen für eine selbstverwaltete Oracle-Quelle für AWS DMS
<a name="CHAP_Source.Oracle.Self-Managed.Privileges"></a>

Um eine Oracle-Datenbank als Quelle in zu verwenden AWS DMS, gewähren Sie dem Oracle-Benutzer, der in den Verbindungseinstellungen für den Oracle-Endpunkt angegeben ist, die folgenden Rechte.

**Anmerkung**  
Wenn Sie Berechtigungen erteilen, verwenden Sie den tatsächlichen Namen der Objekte und nicht die Synonyme dafür. Verwenden Sie beispielsweise `V_$OBJECT` einschließlich des Unterstrichs, nicht `V$OBJECT` ohne Unterstrich.

```
GRANT CREATE SESSION TO dms_user;
GRANT SELECT ANY TRANSACTION TO dms_user;
GRANT SELECT ON V_$ARCHIVED_LOG TO dms_user;
GRANT SELECT ON V_$LOG TO dms_user;
GRANT SELECT ON V_$LOGFILE TO dms_user;
GRANT SELECT ON V_$LOGMNR_LOGS TO dms_user;
GRANT SELECT ON V_$LOGMNR_CONTENTS TO dms_user;
GRANT SELECT ON V_$DATABASE TO dms_user;
GRANT SELECT ON V_$THREAD TO dms_user;
GRANT SELECT ON V_$PARAMETER TO dms_user;
GRANT SELECT ON V_$NLS_PARAMETERS TO dms_user;
GRANT SELECT ON V_$TIMEZONE_NAMES TO dms_user;
GRANT SELECT ON V_$TRANSACTION TO dms_user;
GRANT SELECT ON V_$CONTAINERS TO dms_user;                   
GRANT SELECT ON ALL_INDEXES TO dms_user;
GRANT SELECT ON ALL_OBJECTS TO dms_user;
GRANT SELECT ON ALL_TABLES TO dms_user;
GRANT SELECT ON ALL_USERS TO dms_user;
GRANT SELECT ON ALL_CATALOG TO dms_user;
GRANT SELECT ON ALL_CONSTRAINTS TO dms_user;
GRANT SELECT ON ALL_CONS_COLUMNS TO dms_user;
GRANT SELECT ON ALL_TAB_COLS TO dms_user;
GRANT SELECT ON ALL_IND_COLUMNS TO dms_user;
GRANT SELECT ON ALL_ENCRYPTED_COLUMNS TO dms_user;
GRANT SELECT ON ALL_LOG_GROUPS TO dms_user;
GRANT SELECT ON ALL_TAB_PARTITIONS TO dms_user;
GRANT SELECT ON SYS.DBA_REGISTRY TO dms_user;
GRANT SELECT ON SYS.OBJ$ TO dms_user;
GRANT SELECT ON DBA_TABLESPACES TO dms_user;
GRANT SELECT ON DBA_OBJECTS TO dms_user; -– Required if the Oracle version is earlier than 11.2.0.3.
GRANT SELECT ON SYS.ENC$ TO dms_user; -– Required if transparent data encryption (TDE) is enabled. For more information on using Oracle TDE with AWS DMS, see Unterstützte Verschlüsselungsmethoden für die Verwendung von Oracle als Quelle für AWS DMS.
GRANT SELECT ON GV_$TRANSACTION TO dms_user; -– Required if the source database is Oracle RAC in AWS DMS versions 3.4.6 and higher.
GRANT SELECT ON V_$DATAGUARD_STATS TO dms_user; -- Required if the source database is Oracle Data Guard and Oracle Standby is used in the latest release of DMS version 3.4.6, version 3.4.7, and higher.
GRANT SELECT ON V_$DATABASE_INCARNATION TO dms_user;
```

Erteilen Sie für jede replizierte Tabelle die folgende zusätzliche Berechtigung, wenn Sie eine spezifische Tabellenliste verwenden.

```
GRANT SELECT on any-replicated-table to dms_user;
```

Erteilen Sie die folgenden zusätzlichen Rechte, um die Validierungsfunktion zu verwenden.

```
GRANT EXECUTE ON SYS.DBMS_CRYPTO TO dms_user;
```

Erteilen Sie das zusätzliche folgende Recht, wenn Sie stattdessen den Binärleser verwenden LogMiner.

```
GRANT SELECT ON SYS.DBA_DIRECTORIES TO dms_user;
```

Erteilen Sie die folgende zusätzliche Berechtigung, um Ansichten verfügbar zu machen.

```
GRANT SELECT on ALL_VIEWS to dms_user;
```

Um Ansichten verfügbar zu machen, müssen Sie Ihrem Quellendpunkt außerdem das zusätzliche Verbindungsattribut `exposeViews=true` hinzufügen.

Gewähren Sie die folgende zusätzliche Berechtigung, wenn Sie Serverless-Replikationen verwenden.

```
GRANT SELECT on dba_segments to dms_user;
GRANT SELECT on v_$tablespace to dms_user;
GRANT SELECT on dba_tab_subpartitions to dms_user;
GRANT SELECT on dba_extents to dms_user;
```

Weitere Informationen zu Serverless-Replikationen finden Sie unter [Arbeiten mit AWS DMS Serverless](CHAP_Serverless.md).

Erteilen Sie die folgenden zusätzlichen Berechtigungen, wenn Sie Oracle-spezifische Bewertungen vor der Migration verwenden.

```
GRANT SELECT on gv_$parameter  to dms_user;
GRANT SELECT on v_$instance to dms_user;
GRANT SELECT on v_$version to dms_user;
GRANT SELECT on gv_$ASM_DISKGROUP to dms_user;
GRANT SELECT on gv_$database to dms_user;
GRANT SELECT on dba_db_links to dms_user;
GRANT SELECT on gv_$log_History to dms_user;
GRANT SELECT on gv_$log to dms_user;
GRANT SELECT ON DBA_TYPES TO dms_user;
GRANT SELECT ON DBA_USERS to dms_user;
GRANT SELECT ON DBA_DIRECTORIES to dms_user;
GRANT EXECUTE ON SYS.DBMS_XMLGEN TO dms_user;
```

Informationen zu Oracle-spezifischen Bewertungen vor der Migration finden Sie unter [Bewertungen von Oracle](CHAP_Tasks.AssessmentReport.Oracle.md).

#### Voraussetzungen für die Verarbeitung offener Transaktionen für Oracle Standby
<a name="CHAP_Source.Oracle.Self-Managed.Privileges.Standby"></a>

Wenn Sie AWS DMS Versionen 3.4.6 und höher verwenden, führen Sie die folgenden Schritte aus, um offene Transaktionen für Oracle Standby zu verarbeiten. 

1. Erstellen Sie einen Datenbank-Link mit dem Namen `AWSDMS_DBLINK` in der Primärdatenbank. `DMS_USER` verwendet den Datenbank-Link, um eine Verbindung mit der Primärdatenbank herzustellen. Beachten Sie, dass der Datenbank-Link von der Standby-Instance aus ausgeführt wird, um die offenen Transaktionen abzufragen, die in der Primärdatenbank ausgeführt werden. Sehen Sie sich das folgende Beispiel an. 

   ```
   CREATE PUBLIC DATABASE LINK AWSDMS_DBLINK 
      CONNECT TO DMS_USER IDENTIFIED BY DMS_USER_PASSWORD
      USING '(DESCRIPTION=
               (ADDRESS=(PROTOCOL=TCP)(HOST=PRIMARY_HOST_NAME_OR_IP)(PORT=PORT))
               (CONNECT_DATA=(SERVICE_NAME=SID))
             )';
   ```

1. Stellen Sie sicher, dass die Verbindung mit dem Datenbank-Link über `DMS_USER` hergestellt ist, wie im folgenden Beispiel dargestellt.

   ```
   select 1 from dual@AWSDMS_DBLINK
   ```

### Vorbereiten einer selbstverwalteten Oracle-Quelldatenbank für CDC mit AWS DMS
<a name="CHAP_Source.Oracle.Self-Managed.Configuration"></a>

Führen Sie die folgenden Schritte aus, um Ihre selbstverwaltete Oracle-Datenbank als Quelle zum Ausführen einer CDC-Aufgabe vorzubereiten: 
+ [Es wird überprüft, ob die Version der AWS DMS Quelldatenbank unterstützt wird](#CHAP_Source.Oracle.Self-Managed.Configuration.DbVersion).
+ [Sicherstellen, dass der Modus ARCHIVELOG aktiviert ist](#CHAP_Source.Oracle.Self-Managed.Configuration.ArchiveLogMode).
+ [Einrichten der zusätzlichen Protokollierung](#CHAP_Source.Oracle.Self-Managed.Configuration.SupplementalLogging).

#### Es wird überprüft, ob die Version der AWS DMS Quelldatenbank unterstützt wird
<a name="CHAP_Source.Oracle.Self-Managed.Configuration.DbVersion"></a>

Führen Sie eine Abfrage wie die folgende aus, um zu überprüfen, ob die aktuelle Version der Oracle-Quelldatenbank von AWS DMS unterstützt wird.

```
SELECT name, value, description FROM v$parameter WHERE name = 'compatible';
```

Hier sind `name`, `value` und `description` Spalten irgendwo in der Datenbank, die auf der Grundlage des Wertes von `name` abgefragt werden. Wenn diese Abfrage ohne Fehler ausgeführt wird, wird die aktuelle Version der Datenbank AWS DMS unterstützt und Sie können mit der Migration fortfahren. Wenn die Abfrage einen Fehler AWS DMS auslöst, wird die aktuelle Version der Datenbank nicht unterstützt. Um mit der Migration fortzufahren, konvertieren Sie zunächst die Oracle-Datenbank in eine Version, die von unterstützt wird AWS DMS.

#### Sicherstellen, dass der Modus ARCHIVELOG aktiviert ist
<a name="CHAP_Source.Oracle.Self-Managed.Configuration.ArchiveLogMode"></a>

Sie können Oracle in zwei verschiedenen Modi ausführen: dem `ARCHIVELOG`-Modus und dem `NOARCHIVELOG`-Modus. Führen Sie die Datenbank im Modus `ARCHIVELOG` aus, um eine CDC-Aufgabe auszuführen. Führen Sie die folgende Abfrage aus, um zu ermitteln, ob sich die Datenbank im Modus `ARCHIVELOG` befindet.

```
SQL> SELECT log_mode FROM v$database;
```

Wenn der Modus `NOARCHIVELOG` zurückgegeben wird, setzen Sie die Datenbank entsprechend den Oracle-Anweisungen auf `ARCHIVELOG`. 

#### Einrichten der zusätzlichen Protokollierung
<a name="CHAP_Source.Oracle.Self-Managed.Configuration.SupplementalLogging"></a>

Um laufende Änderungen zu erfassen, AWS DMS müssen Sie eine minimale zusätzliche Protokollierung in Ihrer Oracle-Quelldatenbank aktivieren. Darüber hinaus müssen Sie die zusätzliche Protokollierung für jede replizierte Tabelle in der Datenbank aktivieren.

 AWS DMS Fügt standardmäßig `PRIMARY KEY` zusätzliche Protokollierung für alle replizierten Tabellen hinzu. Um `PRIMARY KEY` zusätzliche Protokollierung hinzufügen AWS DMS zu können, gewähren Sie für jede replizierte Tabelle die folgende Berechtigung.

```
ALTER on any-replicated-table;
```

Sie können die hinzugefügte `PRIMARY KEY` Standardprotokollierung deaktivieren, indem Sie das zusätzliche AWS DMS Verbindungsattribut verwenden. `addSupplementalLogging` Weitere Informationen finden Sie unter [Endpunkteinstellungen bei Verwendung von Oracle als Quelle für AWS DMS](#CHAP_Source.Oracle.ConnectionAttrib).

Stellen Sie sicher, dass Sie die zusätzliche Protokollierung aktivieren, wenn Ihre Replikationstask eine Tabelle mithilfe einer `WHERE` Klausel aktualisiert, die nicht auf eine Primärschlüsselspalte verweist.

**So richten Sie die zusätzliche Protokollierung manuell ein**

1. Führen Sie die folgende Abfrage aus, um zu überprüfen, ob bereits die zusätzliche Protokollierung für die Datenbank aktiviert ist.

   ```
   SELECT supplemental_log_data_min FROM v$database;
   ```

   Ist das zurückgegebene Ergebnis `YES` oder `IMPLICIT`, ist die zusätzliche Protokollierung für die Datenbank aktiviert.

   Wenn dies nicht der Fall ist, aktivieren Sie die zusätzliche Protokollierung für die Datenbank, indem Sie den folgenden Befehl ausführen.

   ```
   ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
   ```

1. Stellen Sie sicher, dass die erforderliche zusätzliche Protokollierung für jede replizierte Tabelle hinzugefügt wird.

   Berücksichtigen Sie dabei Folgendes:
   + Wenn der Tabelle die zusätzliche Protokollierung `ALL COLUMNS` hinzugefügt wird, müssen Sie keine weitere Protokollierung hinzufügen.
   + Wenn ein Primärschlüssel vorhanden ist, fügen Sie die zusätzliche Protokollierung für den Primärschlüssel hinzu. Dazu können Sie entweder das Format zum Hinzufügen der zusätzlichen Protokollierung zum Primärschlüssel selbst verwenden oder die zusätzliche Protokollierung auf den Primärschlüsselspalten der Datenbank hinzufügen.

     ```
     ALTER TABLE Tablename ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS;
     ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS;
     ```
   + Wenn kein Primärschlüssel vorhanden ist und die Tabelle über einen einzigen eindeutigen Index verfügt, müssen alle Spalten des eindeutigen Index dem zusätzlichen Protokoll hinzugefügt werden.

     ```
     ALTER TABLE TableName ADD SUPPLEMENTAL LOG GROUP LogGroupName (UniqueIndexColumn1[, UniqueIndexColumn2] ...) ALWAYS;
     ```

     Durch `SUPPLEMENTAL LOG DATA (UNIQUE INDEX) COLUMNS` die Verwendung werden die eindeutigen Indexspalten nicht zum Protokoll hinzugefügt.
   + Wenn kein Primärschlüssel vorhanden ist und die Tabelle mehrere eindeutige Indizes hat, AWS DMS wird der erste eindeutige Index in einer alphabetisch aufsteigenden Liste ausgewählt. Sie müssen die zusätzliche Protokollierung für die Spalten des ausgewählten Index wie im vorherigen Punkt hinzufügen.

     Durch Verwenden werden die eindeutigen Indexspalten `SUPPLEMENTAL LOG DATA (UNIQUE INDEX) COLUMNS` nicht zum Protokoll hinzugefügt.
   + Wenn kein Primärschlüssel vorhanden ist und kein eindeutiger Index vorhanden ist, fügen Sie die zusätzliche Protokollierung für alle Spalten hinzu.

     ```
     ALTER TABLE TableName ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
     ```

     In einigen Fällen können der Primärschlüssel oder der eindeutige Index der Zieltabelle und der Primärschlüssel oder der eindeutige Index der Quelltabelle unterschiedlich sein. Fügen Sie in diesen Fällen die zusätzliche Protokollierung manuell für die Spalten der Quelltabelle hinzu, die den Primärschlüssel oder den eindeutigen Index der Zieltabelle darstellen.

     Wenn Sie den Primärschlüssel der Zieltabelle ändern, sollten Sie die zusätzliche Protokollierung für die Spalten des eindeutigen Zielindex hinzufügen, anstatt für die Spalten des Primärschlüssels oder des eindeutigen Index der Quelle.

Wenn für eine Tabelle ein Filter oder eine Transformation definiert ist, müssen Sie möglicherweise die zusätzliche Protokollierung aktivieren.

Berücksichtigen Sie dabei Folgendes:
+ Wenn der Tabelle die zusätzliche Protokollierung `ALL COLUMNS` hinzugefügt wird, müssen Sie keine weitere Protokollierung hinzufügen.
+ Wenn die Tabelle über einen eindeutigen Index oder einen Primärschlüssel verfügt, fügen Sie die zusätzliche Protokollierung für jede Spalte hinzu, die von einem Filter oder einer Transformation betroffen ist. Tun Sie dies jedoch nur, wenn sich diese Spalten von den Spalten unterscheiden, die den Primärschlüssel oder den eindeutigen Index darstellen.
+ Wenn eine Transformation nur eine Spalte umfasst, fügen Sie diese Spalte nicht einer zusätzlichen Protokollierungsgruppe hinzu. Fügen Sie für eine Transformation `A+B` beispielsweise die zusätzliche Protokollierung für beide Spalten, `A` und `B`, hinzu. Fügen Sie jedoch für eine Transformation `substring(A,10)` jedoch keine zusätzliche Protokollierung für Spalte `A` hinzu.
+ Sie können die zusätzliche Protokollierung `USER_LOG_GROUP` einrichten, um die zusätzliche Protokollierung für Spalten, die den Primärschlüssel oder den eindeutigen Index darstellen, und andere Spalten zu aktivieren, die gefiltert oder transformiert werden. Fügen Sie diese Protokollierung sowohl für die Spalten, die den Primärschlüssel oder den eindeutigen Index darstellen, als auch für die anderen spezifischen Spalten hinzu, die gefiltert oder transformiert werden.

  Wenn Sie beispielsweise eine Tabelle mit dem Namen `TEST.LOGGING` mit dem Primärschlüssel `ID` und einem Filter nach der Spalte `NAME` replizieren möchten, können Sie einen Befehl wie den folgenden ausführen, um die zusätzliche Protokollierung der Protokollgruppe zu erstellen.

  ```
  ALTER TABLE TEST.LOGGING ADD SUPPLEMENTAL LOG GROUP TEST_LOG_GROUP (ID, NAME) ALWAYS;
  ```

### Kontoberechtigungen sind erforderlich, wenn Sie Oracle LogMiner für den Zugriff auf die Redo-Logs verwenden
<a name="CHAP_Source.Oracle.Self-Managed.LogMinerPrivileges"></a>

Um mit Oracle auf die Redo-Logs zuzugreifen LogMiner, gewähren Sie dem Oracle-Benutzer die folgenden Rechte, die in den Verbindungseinstellungen für den Oracle-Endpunkt angegeben sind.

```
GRANT EXECUTE on DBMS_LOGMNR to dms_user;
GRANT SELECT on V_$LOGMNR_LOGS to dms_user;
GRANT SELECT on V_$LOGMNR_CONTENTS to dms_user;
GRANT LOGMINING to dms_user; -– Required only if the Oracle version is 12c or higher.
```

### Kontoberechtigungen sind erforderlich, wenn AWS DMS Binary Reader für den Zugriff auf die Redo-Logs verwendet wird
<a name="CHAP_Source.Oracle.Self-Managed.BinaryReaderPrivileges"></a>

Um mit dem AWS DMS Binary Reader auf die Redo-Logs zuzugreifen, gewähren Sie dem Oracle-Benutzer, der in den Verbindungseinstellungen für den Oracle-Endpunkt angegeben ist, die folgenden Rechte.

```
GRANT SELECT on v_$transportable_platform to dms_user;   -– Grant this privilege if the redo logs are stored in Oracle Automatic Storage Management (ASM) and AWS DMS accesses them from ASM.
GRANT CREATE ANY DIRECTORY to dms_user;                  -– Grant this privilege to allow AWS DMS to use Oracle BFILE read file access in certain cases. This access is required when the replication instance does not have file-level access to the redo logs and the redo logs are on non-ASM storage.
GRANT EXECUTE on DBMS_FILE_TRANSFER to dms_user;         -– Grant this privilege to copy the redo log files to a temporary folder using the CopyToTempFolder method.
GRANT EXECUTE on DBMS_FILE_GROUP to dms_user;
```

Binary Reader arbeitet mit Oracle-Dateimerkmalen, zu denen Oracle-Verzeichnisse gehören. Jedes Oracle-Verzeichnisobjekt enthält den Namen des Ordners, der die zu verarbeitenden Wiederholungsprotokolldateien enthält. Diese Oracle-Verzeichnisse werden auf Dateisystemebene nicht dargestellt. Stattdessen handelt es sich um logische Verzeichnisse, die auf Oracle-Datenbankebene erstellt werden. Sie können sie in der Oracle `ALL_DIRECTORIES`-Ansicht anzeigen.

Wenn Sie diese Oracle-Verzeichnisse erstellen möchten AWS DMS , gewähren Sie die oben angegebene `CREATE ANY DIRECTORY` Berechtigung. AWS DMS erstellt die Verzeichnisnamen mit dem `DMS_` Präfix. Wenn Sie die `CREATE ANY DIRECTORY`-Berechtigung nicht erteilen, erstellen Sie die entsprechenden Verzeichnisse manuell. In einigen Fällen ist bei der manuellen Erstellung der Oracle-Verzeichnisse der im Oracle-Quellendpunkt angegebene Oracle-Benutzer nicht der Benutzer, der diese Verzeichnisse erstellt hat. In diesen Fällen erteilen Sie auch die `READ on DIRECTORY`-Berechtigung.

**Anmerkung**  
AWS DMS CDC unterstützt Active Dataguard Standby nicht, das nicht für die Verwendung des automatischen Redo-Transport-Dienstes konfiguriert ist.

In einigen Fällen können Sie möglicherweise Oracle Managed Files (OMF) zum Speichern der Protokolle verwenden. Oder Ihr Quellendpunkt befindet sich in ADG, sodass Sie die Berechtigung CREATE ANY DIRECTORY nicht erteilen können. Erstellen Sie in diesen Fällen die Verzeichnisse mit allen möglichen Protokollspeicherorten manuell, bevor Sie die Replikationsaufgabe starten. AWS DMS Wenn AWS DMS kein erwartetes vorab erstelltes Verzeichnis gefunden wird, wird die Aufgabe beendet. Löscht auch AWS DMS nicht die Einträge, die es in der `ALL_DIRECTORIES` Ansicht erstellt hat. Löschen Sie sie daher manuell.

### Erforderliche zusätzliche Kontoberechtigungen bei Verwendung von Binary Reader mit Oracle ASM
<a name="CHAP_Source.Oracle.Self-Managed.ASMBinaryPrivileges"></a>

Wenn Sie mit Binary Reader auf die Redo-Protokolle in Automatic Storage Management (ASM) zugreifen möchten, erteilen Sie dem Oracle-Benutzer, der in den Einstellungen zur Oracle-Endpunktverbindung angegeben ist, die folgenden Berechtigungen:

```
SELECT ON v_$transportable_platform
SYSASM -– To access the ASM account with Oracle 11g Release 2 (version 11.2.0.2) and higher, grant the Oracle endpoint user the SYSASM privilege. For older supported Oracle versions, it's typically sufficient to grant the Oracle endpoint user the SYSDBA privilege.
```

Sie können den ASM-Kontozugriff validieren, indem Sie eine Eingabeaufforderung öffnen und eine der folgenden Anweisungen aufrufen, je nach Ihrer zuvor angegebenen Oracle-Version.

Wenn Sie die `SYSDBA`-Berechtigung benötigen, verwenden Sie Folgendes.

```
sqlplus asmuser/asmpassword@+asmserver as sysdba
```

Wenn Sie die `SYSASM`-Berechtigung benötigen, verwenden Sie Folgendes. 

```
sqlplus asmuser/asmpassword@+asmserver as sysasm
```

### Verwenden eines selbstverwalteten Oracle Standby als Quelle mit Binary Reader for CDC in AWS DMS
<a name="CHAP_Source.Oracle.Self-Managed.BinaryStandby"></a>

Wenn Sie eine Oracle-Standby-Instance bei Verwendung von Binary Reader für CDC als Quelle konfigurieren möchten, müssen die folgenden Voraussetzungen erfüllt sein:
+ AWS DMS unterstützt derzeit nur Oracle Active Data Guard Standby.
+ Stellen Sie sicher, dass die Konfiguration von Oracle Data Guard Folgendes verwendet:
  + Redo-Transport-Services für automatisierte Übertragungen von Redo-Daten
  + Anwendungsservices, um Redo automatisch auf die Standby-Datenbank anzuwenden

Führen Sie die folgende Abfrage aus, um zu überprüfen, ob diese Anforderungen erfüllt sind.

```
SQL> select open_mode, database_role from v$database;
```

Vergewissern Sie sich anhand der Ausgabe dieser Abfrage, dass die Standby-Datenbank im Modus READ ONLY geöffnet ist und Redo automatisch angewendet wird. Beispiel:

```
OPEN_MODE             DATABASE_ROLE
--------------------  ----------------
READ ONLY WITH APPLY  PHYSICAL STANDBY
```

**So konfigurieren Sie eine Oracle-Standby-Instance bei Verwendung von Binary Reader für CDC als Quelle**

1. Erteilen Sie zusätzliche Berechtigungen, die für den Zugriff auf Standby-Protokolldateien erforderlich sind.

   ```
   GRANT SELECT ON v_$standby_log TO dms_user;
   ```

1. Erstellen Sie mithilfe der AWS-Managementkonsole oder der AWS CLI einen Quellendpunkt für Oracle Standby. Geben Sie die folgenden zusätzlichen Verbindungsattribute an, wenn Sie den Endpunkt erstellen.

   ```
   useLogminerReader=N;useBfile=Y;
   ```
**Anmerkung**  
In können Sie zusätzliche Verbindungsattribute verwenden AWS DMS, um anzugeben, ob Sie aus den Archivprotokollen statt aus den Redo-Logs migrieren möchten. Weitere Informationen finden Sie unter [Endpunkteinstellungen bei Verwendung von Oracle als Quelle für AWS DMS](#CHAP_Source.Oracle.ConnectionAttrib).

1. Konfigurieren Sie das Ziel für archivierte Protokolle.

   Der DMS-Binary-Reader für Oracle-Quellen ohne ASM verwendet Oracle-Verzeichnisse, um auf archivierte Redo-Protokolle zuzugreifen. Wenn Ihre Datenbank so konfiguriert ist, dass Fast Recovery Area (FRA) als Ziel für Archivprotokolle verwendet wird, ist der Speicherort der Archiv-Redo-Dateien nicht konstant. An jedem Tag, an dem archivierte Redo-Protokolle generiert werden, wird in der FRA ein neues Verzeichnis mit dem Verzeichnisnamenformat JJJJ\$1MM\$1TT erstellt. Beispiel: 

   ```
   DB_RECOVERY_FILE_DEST/SID/archivelog/YYYY_MM_DD
   ```

   Wenn DMS Zugriff auf archivierte Redo-Dateien im neu erstellten FRA-Verzeichnis benötigt und die Primärdatenbank mit Lese-/Schreibzugriff als Quelle verwendet wird, erstellt DMS wie folgt ein neues Oracle-Verzeichnis oder ersetzt ein vorhandenes Oracle-Verzeichnis. 

   ```
   CREATE OR REPLACE DIRECTORY dmsrep_taskid AS ‘DB_RECOVERY_FILE_DEST/SID/archivelog/YYYY_MM_DD’;
   ```

   Wenn die Standby-Datenbank als Quelle verwendet wird, kann DMS das Oracle-Verzeichnis nicht erstellen oder ersetzen, da sich die Datenbank im schreibgeschützten Modus befindet. Sie können jedoch einen dieser zusätzlichen Schritte ausführen: 

   1. Ändern Sie `log_archive_dest_id_1` so, dass ein tatsächlicher Pfad anstelle von FRA in einer solchen Konfiguration verwendet wird, damit Oracle keine täglichen Unterverzeichnisse erstellt:

      ```
      ALTER SYSTEM SET log_archive_dest_1=’LOCATION=full directory path’
      ```

      Erstellen Sie dann ein Oracle-Verzeichnisobjekt, das von DMS verwendet werden soll:

      ```
      CREATE OR REPLACE DIRECTORY dms_archived_logs AS ‘full directory path’;
      ```

   1. Erstellen Sie ein zusätzliches Archivprotokollziel und ein Oracle-Verzeichnisobjekt, das auf dieses Ziel verweist. Beispiel:

      ```
      ALTER SYSTEM SET log_archive_dest_3=’LOCATION=full directory path’; 
      CREATE DIRECTORY dms_archived_log AS ‘full directory path’;
      ```

      Fügen Sie dann dem Quellendpunkt der Aufgabe ein zusätzliches Verbindungsattribut hinzu:

      ```
      archivedLogDestId=3
      ```

   1. Erstellen Sie vorab manuell Oracle-Verzeichnisobjekte, die von DMS verwendet werden sollen.

      ```
      CREATE DIRECTORY dms_archived_log_20210301 AS ‘DB_RECOVERY_FILE_DEST/SID/archivelog/2021_03_01’;
      CREATE DIRECTORY dms_archived_log_20210302 AS ‘DB_RECOVERY_FILE_DEST>/SID>/archivelog/2021_03_02’; 
      ...
      ```

   1. Erstellen Sie einen Oracle-Scheduler-Auftrag, der täglich ausgeführt wird und das erforderliche Verzeichnis erstellt.

1. Konfigurieren Sie das Ziel für das Online-Protokoll. 

   Erstellen Sie ein Oracle-Verzeichnis, das auf das Betriebssystemverzeichnis mit Standby-Redo-Logs verweist:

   ```
   CREATE OR REPLACE DIRECTORY STANDBY_REDO_DIR AS '<full directory path>';
   GRANT READ ON DIRECTORY STANDBY_REDO_DIR TO <dms_user>;
   ```

### Verwenden einer benutzerverwalteten Datenbank auf Oracle Cloud Infrastructure (OCI) als Quelle für CDC in AWS DMS
<a name="CHAP_Source.Oracle.Self-Managed.OCI"></a>

Eine benutzerverwaltete Datenbank ist eine Datenbank, die Sie konfigurieren und steuern, z. B. eine Oracle-Datenbank, die in einer virtuellen Maschine (VM), einer Bare-Metal-Instance oder einem Exadata-Server erstellt wurde. Es kann sich auch um Datenbanken handeln, die Sie konfigurieren und steuern und die auf einer dedizierten Infrastruktur wie Oracle Cloud Infrastructure (OCI) ausgeführt werden. Die folgenden Informationen beschreiben die Berechtigungen und Konfigurationen, die Sie benötigen, wenn Sie eine benutzerverwaltete Oracle-Datenbank in OCI als Quelle für die Erfassung von Datenänderungen (CDC) in AWS DMS verwenden.

**So konfigurieren Sie eine von OCI gehostete benutzerverwaltete Oracle-Datenbank als Quelle für die Erfassung von Datenänderungen**

1. Erteilen Sie erforderliche Benutzerkontoberechtigungen für eine benutzerverwaltete Quelldatenbank in OCI. Weitere Informationen finden Sie unter [Account privileges for a self-managed Oracle source endpoint](#CHAP_Source.Oracle.Self-Managed.Privileges).

1. Erteilen Sie Kontoberechtigungen, die bei Verwendung von Binary Reader für den Zugriff auf die Redo-Protokolle erforderlich sind. Weitere Informationen finden Sie unter [Erforderliche Kontoberechtigungen bei Verwendung von Binary Reader](#CHAP_Source.Oracle.Self-Managed.BinaryReaderPrivileges).

1. Fügen Sie Kontoberechtigungen hinzu, die bei Verwendung von Binary Reader mit Oracle Automatic Storage Management (ASM) erforderlich sind. Weitere Informationen finden Sie unter [Erforderliche zusätzliche Kontoberechtigungen bei Verwendung von Binary Reader mit Oracle ASM](#CHAP_Source.Oracle.Self-Managed.ASMBinaryPrivileges).

1. Richten Sie die zusätzliche Protokollierung ein. Weitere Informationen finden Sie unter [Einrichten der zusätzlichen Protokollierung](#CHAP_Source.Oracle.Self-Managed.Configuration.SupplementalLogging).

1. Richten Sie die TDE-Verschlüsselung ein. Weitere Informationen finden Sie unter [Verschlüsselungsmethoden bei Verwendung einer Oracle-Datenbank als Quellendpunkt](#CHAP_Source.Oracle.Encryption).

Die folgenden Einschränkungen gelten für die Replikation von Daten aus einer Oracle-Quelldatenbank in Oracle Cloud Infrastructure (OCI).

**Einschränkungen**
+ DMS unterstützt die Verwendung von Oracle für den Zugriff auf die LogMiner Redo-Logs nicht.
+ DMS unterstützt Autonomous DB nicht.

## Arbeiten mit einer AWS-verwalteten Oracle-Datenbank als Quelle für AWS DMS
<a name="CHAP_Source.Oracle.Amazon-Managed"></a>

Eine AWS verwaltete Datenbank ist eine Datenbank, die sich auf einem Amazon-Service wie Amazon RDS, Amazon Aurora oder Amazon S3 befindet. Im Folgenden finden Sie die Rechte und Konfigurationen, die Sie einrichten müssen, wenn Sie eine AWS-verwaltete Oracle-Datenbank mit verwenden. AWS DMS

### Erforderliche Benutzerkontenberechtigungen für eine AWS-verwaltete Oracle-Quelle für AWS DMS
<a name="CHAP_Source.Oracle.Amazon-Managed.Privileges"></a>

Erteilen Sie dem in der Oracle-Quellendpunktdefinition angegebenen Oracle-Benutzerkonto die folgenden Berechtigungen.

**Wichtig**  
Für alle Parameterwerte wie `dms_user` und `any-replicated-table` geht Oracle davon aus, dass der Wert ausschließlich in Großbuchstaben geschrieben ist, es sei denn, Sie geben den Wert mit einer Kennung an, bei der Groß- und Kleinschreibung beachtet wird. Nehmen wir beispielsweise an, dass Sie einen `dms_user`-Wert ohne Anführungszeichen erstellen, wie in `CREATE USER myuser` oder `CREATE USER MYUSER`. In diesem Fall identifiziert und speichert Oracle den Wert ausschließlich in Großbuchstaben (`MYUSER`). Wenn Sie Anführungszeichen verwenden, wie in `CREATE USER "MyUser"` oder `CREATE USER 'MyUser'`, identifiziert und speichert Oracle den angegebenen Wert unter Berücksichtigung der Groß- und Kleinschreibung (`MyUser`).

```
GRANT CREATE SESSION to dms_user;
GRANT SELECT ANY TRANSACTION to dms_user;
GRANT SELECT on DBA_TABLESPACES to dms_user;
GRANT SELECT ON any-replicated-table to dms_user;
GRANT EXECUTE on rdsadmin.rdsadmin_util to dms_user;
 -- For Oracle 12c or higher:
GRANT LOGMINING to dms_user; – Required only if the Oracle version is 12c or higher.
```

Erteilen Sie außerdem die Berechtigungen `SELECT` und `EXECUTE` für `SYS`-Objekte mithilfe des Amazon-RDS-Verfahrens `rdsadmin.rdsadmin_util.grant_sys_object`, wie in der Abbildung gezeigt. Weitere Informationen finden Sie unter [Erteilen von SELECT- oder EXECUTE-Berechtigungen für SYS-Objekte](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.Oracle.CommonDBATasks.html#Appendix.Oracle.CommonDBATasks.TransferPrivileges).

```
exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_VIEWS', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_TAB_PARTITIONS', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_INDEXES', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_OBJECTS', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_TABLES', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_USERS', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_CATALOG', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_CONSTRAINTS', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_CONS_COLUMNS', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_TAB_COLS', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_IND_COLUMNS', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_LOG_GROUPS', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$ARCHIVED_LOG', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$LOG', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$LOGFILE', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$DATABASE', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$THREAD', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$PARAMETER', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$NLS_PARAMETERS', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$TIMEZONE_NAMES', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$TRANSACTION', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$CONTAINERS', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_REGISTRY', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('OBJ$', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_ENCRYPTED_COLUMNS', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$LOGMNR_LOGS', 'dms_user', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$LOGMNR_CONTENTS','dms_user','SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('DBMS_LOGMNR', 'dms_user', 'EXECUTE');

-- (as of Oracle versions 12.1 and higher)
exec rdsadmin.rdsadmin_util.grant_sys_object('REGISTRY$SQLPATCH', 'dms_user', 'SELECT');

-- (for Amazon RDS Active Dataguard Standby (ADG))
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$STANDBY_LOG', 'dms_user', 'SELECT'); 

-- (for transparent data encryption (TDE))

exec rdsadmin.rdsadmin_util.grant_sys_object('ENC$', 'dms_user', 'SELECT'); 
               
-- (for validation with LOB columns)
exec rdsadmin.rdsadmin_util.grant_sys_object('DBMS_CRYPTO', 'dms_user', 'EXECUTE');
                    
-- (for binary reader)
exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_DIRECTORIES','dms_user','SELECT'); 
                    
-- Required when the source database is Oracle Data guard, and Oracle Standby is used in the latest release of DMS version 3.4.6, version 3.4.7, and higher.

exec rdsadmin.rdsadmin_util.grant_sys_object('V_$DATAGUARD_STATS', 'dms_user', 'SELECT');
```

Weitere Informationen zur Verwendung von Amazon RDS Active Dataguard Standby (ADG) mit AWS DMS finden Sie unter [Verwenden eines Amazon RDS Oracle Standby (Read Replica) als Quelle mit Binary Reader for CDC in AWS DMS](#CHAP_Source.Oracle.Amazon-Managed.StandBy).

Weitere Hinweise zur Verwendung von Oracle TDE mit finden Sie AWS DMS unter. [Unterstützte Verschlüsselungsmethoden für die Verwendung von Oracle als Quelle für AWS DMS](#CHAP_Source.Oracle.Encryption)

#### Voraussetzungen für die Verarbeitung offener Transaktionen für Oracle Standby
<a name="CHAP_Source.Oracle.Amazon-Managed.Privileges.Standby"></a>

Wenn Sie AWS DMS Versionen 3.4.6 und höher verwenden, führen Sie die folgenden Schritte aus, um offene Transaktionen für Oracle Standby zu verarbeiten. 

1. Erstellen Sie einen Datenbank-Link mit dem Namen `AWSDMS_DBLINK` in der Primärdatenbank. `DMS_USER` verwendet den Datenbank-Link, um eine Verbindung mit der Primärdatenbank herzustellen. Beachten Sie, dass der Datenbank-Link von der Standby-Instance aus ausgeführt wird, um die offenen Transaktionen abzufragen, die in der Primärdatenbank ausgeführt werden. Sehen Sie sich das folgende Beispiel an. 

   ```
   CREATE PUBLIC DATABASE LINK AWSDMS_DBLINK 
      CONNECT TO DMS_USER IDENTIFIED BY DMS_USER_PASSWORD
      USING '(DESCRIPTION=
               (ADDRESS=(PROTOCOL=TCP)(HOST=PRIMARY_HOST_NAME_OR_IP)(PORT=PORT))
               (CONNECT_DATA=(SERVICE_NAME=SID))
             )';
   ```

1. Stellen Sie sicher, dass die Verbindung mit dem Datenbank-Link über `DMS_USER` hergestellt ist, wie im folgenden Beispiel dargestellt.

   ```
   select 1 from dual@AWSDMS_DBLINK
   ```

### Konfiguration einer AWS-verwalteten Oracle-Quelle für AWS DMS
<a name="CHAP_Source.Oracle.Amazon-Managed.Configuration"></a>

Bevor Sie eine AWS-verwaltete Oracle-Datenbank als Quelle für verwenden AWS DMS, führen Sie die folgenden Aufgaben für die Oracle-Datenbank aus:
+ Aktivieren Sie automatische Sicherungen. Weitere Informationen zum Aktivieren von automatischen Backups finden Sie unter [Aktivieren von automatisierten Backups](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithAutomatedBackups.html#USER_WorkingWithAutomatedBackups.Enabling) im *Benutzerhandbuch für Amazon RDS*.
+ Richten Sie die zusätzliche Protokollierung ein.
+ Richten Sie die Archivierung ein. Durch die Archivierung der Redo-Logs für Ihre Amazon RDS for Oracle DB-Instance können AWS DMS Sie die Protokollinformationen mit Oracle LogMiner oder Binary Reader abrufen. 

**So richten Sie die Archivierung ein:**

1. Führen Sie den `rdsadmin.rdsadmin_util.set_configuration` Befehl aus, um die Archivierung einzurichten.

   Führen Sie beispielsweise den folgenden Befehl aus, um die archivierten Redo-Protokolle 24 Stunden lang beizubehalten.

   ```
   exec rdsadmin.rdsadmin_util.set_configuration('archivelog retention hours',24);
   commit;
   ```
**Anmerkung**  
Das Commit muss durchgeführt werden, damit Änderungen wirksam werden.

1. Stellen Sie sicher, dass Ihr Speicherplatz für die archivierten Redo-Protokolle im angegebenen Zeitraum ausreicht. Wenn Ihr Speicherzeitraum beispielsweise 24 Stunden beträgt, berechnen Sie die Gesamtgröße Ihrer kumulierten archivierten Redo-Protokolle über eine typische Stunde Transaktionsverarbeitung und multiplizieren Sie diese Summe mit 24. Vergleichen Sie diese berechnete Summe für 24 Stunden mit Ihrem verfügbaren Speicherplatz und entscheiden Sie, ob Sie über genügend Speicherplatz für eine 24-Stunden-Transaktionsverarbeitung verfügen.

**So richten Sie die zusätzliche Protokollierung ein:**

1. Führen Sie den folgenden Befehl aus, um die zusätzliche Protokollierung auf Datenbankebene zu aktivieren.

   ```
   exec rdsadmin.rdsadmin_util.alter_supplemental_logging('ADD');
   ```

1. Führen Sie den folgenden Befehl aus, um die zusätzliche Protokollierung für den Primärschlüssel zu aktivieren.

   ```
   exec rdsadmin.rdsadmin_util.alter_supplemental_logging('ADD','PRIMARY KEY');
   ```

1. (Optional) Aktivieren Sie die zusätzliche Schlüsselebenen-Protokollierung auf Tabellenebene.

   Für die Quelldatenbank entsteht ein wenig Mehraufwand, wenn die zusätzliche Schlüsselebenen-Protokollierung aktiviert ist. Wenn Sie nur eine Teilmenge Ihrer Tabellen migrieren, sollten Sie daher die zusätzliche Schlüsselebenen-Protokollierung auf Tabellenebene aktivieren. Führen Sie den folgenden Befehl aus, um die zusätzliche Schlüsselebenen-Protokollierung auf Tabellenebene zu aktivieren.

   ```
   alter table table_name add supplemental log data (PRIMARY KEY) columns;
   ```

### Konfiguration einer CDC-Aufgabe für die Verwendung von Binary Reader mit einer RDS for Oracle-Quelle für AWS DMS
<a name="CHAP_Source.Oracle.Amazon-Managed.CDC"></a>

Sie können den AWS DMS Zugriff auf die Redo-Logs der Amazon RDS for Oracle Oracle-Quellinstanz mithilfe von Binary Reader for CDC konfigurieren. 

**Anmerkung**  
Um Oracle zu verwenden LogMiner, sind die mindestens erforderlichen Benutzerkontoberechtigungen ausreichend. Weitere Informationen finden Sie unter [Erforderliche Benutzerkontenberechtigungen für eine AWS-verwaltete Oracle-Quelle für AWS DMS](#CHAP_Source.Oracle.Amazon-Managed.Privileges).

Um AWS DMS Binary Reader zu verwenden, geben Sie je nach AWS DMS Version zusätzliche Einstellungen und zusätzliche Verbindungsattribute für den Oracle-Quellendpunkt an.

Unterstützung für Binary Reader ist in den folgenden Versionen von Amazon RDS für Oracle verfügbar:
+ Oracle 11.2 – Versionen 11.2.0.4V11 und höher
+ Oracle 12.1 – Versionen 12.1.0.2.V7 und höher
+ Oracle 12.2 – Alle Versionen
+ Oracle 18.0 – Alle Versionen
+ Oracle 19.0 – Alle Versionen

**So konfigurieren Sie CDC mit dem Binary Reader:**

1. Melden Sie sich als Hauptbenutzer bei Ihrer Quelldatenbank in Amazon RDS für Oracle an und führen Sie die folgenden gespeicherten Prozeduren aus, um die Verzeichnisse auf Serverebene zu erstellen.

   ```
   exec rdsadmin.rdsadmin_master_util.create_archivelog_dir;
   exec rdsadmin.rdsadmin_master_util.create_onlinelog_dir;
   ```

1. Erteilen Sie dem Oracle-Benutzerkonto, das für den Zugriff auf den Oracle-Quellendpunkt verwendet wird, die folgenden Berechtigungen.

   ```
   GRANT READ ON DIRECTORY ONLINELOG_DIR TO dms_user;
   GRANT READ ON DIRECTORY ARCHIVELOG_DIR TO dms_user;
   ```

1. Legen Sie die folgenden zusätzlichen Verbindungsattribute für den Oracle-Quellendpunkt in Amazon RDS fest:
   + Legen Sie für die RDS-Oracle-Versionen 11.2 und 12.1 Folgendes fest.

     ```
     useLogminerReader=N;useBfile=Y;accessAlternateDirectly=false;useAlternateFolderForOnline=true;
     oraclePathPrefix=/rdsdbdata/db/{$DATABASE_NAME}_A/;usePathPrefix=/rdsdbdata/log/;replacePathPrefix=true;
     ```
   + Legen Sie für die RDS-Oracle-Versionen 12.2, 18.0 und 19.0 Folgendes fest.

     ```
     useLogminerReader=N;useBfile=Y;
     ```

**Anmerkung**  
Stellen Sie sicher, dass auf das Semikolon (;) als Trennzeichen für mehrere Einstellungen kein Leerzeichen folgt (z. B. `oneSetting;thenAnother`).

Weitere Informationen zum Konfigurieren einer CDC-Aufgabe finden Sie unter [Konfiguration für CDC für eine Oracle-Quelldatenbank](#CHAP_Source.Oracle.CDC.Configuration).

### Verwenden eines Amazon RDS Oracle Standby (Read Replica) als Quelle mit Binary Reader for CDC in AWS DMS
<a name="CHAP_Source.Oracle.Amazon-Managed.StandBy"></a>

Überprüfen Sie die folgenden Voraussetzungen für die Verwendung von Amazon RDS für Oracle Standby als Quelle bei Verwendung von Binary Reader für CDC in AWS DMS:
+ Verwenden Sie den Oracle-Hauptbenutzer, um Binary Reader einzurichten.
+ Stellen Sie sicher, dass AWS DMS derzeit nur die Verwendung von Oracle Active Data Guard Standby unterstützt wird.

Verwenden Sie anschließend das folgende Verfahren, um RDS für Oracle Standby bei Verwendung von Binary Reader für CDC als Quelle zu verwenden.

**So konfigurieren Sie RDS für Oracle Standby bei Verwendung von Binary Reader für CDC als Quelle**

1. Melden Sie sich als Hauptbenutzer bei der primären RDS-für-Oracle-Instance an.

1. Führen Sie die folgenden gespeicherten Prozeduren wie im Benutzerhandbuch für Amazon RDS beschrieben aus, um die Verzeichnisse auf Serverebene zu erstellen.

   ```
   exec rdsadmin.rdsadmin_master_util.create_archivelog_dir;
   exec rdsadmin.rdsadmin_master_util.create_onlinelog_dir;
   ```

1. Identifizieren Sie die in Schritt 2 erstellten Verzeichnisse.

   ```
   SELECT directory_name, directory_path FROM all_directories
   WHERE directory_name LIKE ( 'ARCHIVELOG_DIR_%' )
           OR directory_name LIKE ( 'ONLINELOG_DIR_%' )
   ```

   Mit dem obigen Code wird beispielsweise eine Liste von Verzeichnissen wie die folgende angezeigt.  
![\[Table showing directory names and their corresponding paths for archive and online logs.\]](http://docs.aws.amazon.com/de_de/dms/latest/userguide/images/datarep-rds-server-level-directories.png)

1. Erteilen Sie dem Oracle-Benutzerkonto, das für den Zugriff auf Oracle Standby verwendet wird, die Berechtigung `Read` für die oben genannten Verzeichnisse.

   ```
   GRANT READ ON DIRECTORY ARCHIVELOG_DIR_A TO dms_user;
   GRANT READ ON DIRECTORY ARCHIVELOG_DIR_B TO dms_user;
   GRANT READ ON DIRECTORY ONLINELOG_DIR_A TO dms_user;
   GRANT READ ON DIRECTORY ONLINELOG_DIR_B TO dms_user;
   ```

1. Führen Sie einen Archivprotokoll-Wechsel auf der primären Instance durch. Dadurch wird sichergestellt, dass die Änderungen an `ALL_DIRECTORIES` auch in Oracle Standby portiert werden.

1. Führen Sie die Abfrage `ALL_DIRECTORIES` für Oracle Standby aus, um zu bestätigen, dass die Änderungen übernommen wurden.

1. Erstellen Sie mithilfe der AWS DMS Management Console oder AWS Command Line Interface (AWS CLI) einen Quellendpunkt für den Oracle Standby. Geben Sie die folgenden zusätzlichen Verbindungsattribute an, während Sie den Endpunkt erstellen.

   ```
   useLogminerReader=N;useBfile=Y;archivedLogDestId=1;additionalArchivedLogDestId=2
   ```

1. Nachdem Sie den Endpunkt erstellt haben, verwenden Sie die **Option Endpunktverbindung testen** auf der Seite **Endpunkt erstellen** der Konsole oder verwenden Sie den AWS CLI `test-connection` Befehl, um zu überprüfen, ob die Konnektivität hergestellt ist.

## Einschränkungen bei der Verwendung von Oracle als Quelle für AWS DMS
<a name="CHAP_Source.Oracle.Limitations"></a>

Die folgenden Einschränkungen gelten, wenn Sie eine Oracle-Datenbank als Quelle für AWS DMS verwenden:
+ AWS DMS unterstützt Oracle Extended-Datentypen in AWS DMS Version 3.5.0 und höher.
+ AWS DMS unterstützt keine langen Objektnamen (über 30 Byte).
+ AWS DMS unterstützt keine funktionsbasierten Indizes.
+ Wenn Sie die zusätzliche Protokollierung verwalten und Transformationen für eine der Spalten durchführen, stellen Sie sicher, dass die zusätzliche Protokollierung für alle Felder und Spalten aktiviert ist. Weitere Informationen zum Einrichten der zusätzlichen Protokollierung finden Sie in den folgenden Themen:
  + Informieren Sie sich im Fall einer selbstverwalteten Oracle-Quelldatenbank unter [Einrichten der zusätzlichen Protokollierung](#CHAP_Source.Oracle.Self-Managed.Configuration.SupplementalLogging).
  + Informationen zu einer von AWS-verwalteten Oracle-Quelldatenbank finden Sie unter. [Konfiguration einer AWS-verwalteten Oracle-Quelle für AWS DMS](#CHAP_Source.Oracle.Amazon-Managed.Configuration)
+ AWS DMS unterstützt die Mehrmandanten-Container-Root-Datenbank (CDB\$1ROOT) nicht. Es unterstützt eine PDB, die den Binary Reader verwendet.
+ AWS DMS unterstützt keine verzögerten Einschränkungen.
+ AWS DMS Version 3.5.3 und höher unterstützt Secure vollständig. LOBs
+ AWS DMS unterstützt die `rename table table-name to new-table-name` Syntax für alle unterstützten Oracle-Versionen 11 und höher. Diese Syntax wird für Oracle-Quelldatenbanken der Version 10 nicht unterstützt.
+ AWS DMS repliziert die Ergebnisse der DDL-Anweisung nicht. `ALTER TABLE ADD column data_type DEFAULT default_value` Anstatt `default_value` auf das Ziel zu replizieren, wird die neue Spalte auf `NULL` gesetzt.
+ Wenn Sie AWS DMS Version 3.4.7 oder höher verwenden, um Änderungen zu replizieren, die sich aus Partitions- oder Unterpartitionsvorgängen ergeben, gehen Sie wie folgt vor, bevor Sie eine DMS-Aufgabe starten.
  + Erstellen Sie die partitionierte Tabellenstruktur (DDL) manuell; 
  + Stellen Sie sicher, dass die DDL in der Oracle-Quelle und im Oracle-Ziel identisch ist; 
  + Legen Sie das zusätzliche Verbindungsattribut `enableHomogenousPartitionOps=true` fest.

  Mehr über `enableHomogenousPartitionOps` erfahren Sie unter [Endpunkteinstellungen bei Verwendung von Oracle als Quelle für AWS DMS](#CHAP_Source.Oracle.ConnectionAttrib). Beachten Sie außerdem, dass DMS bei FULL\$1CDC-Aufgaben keine Datenänderungen repliziert, die als Teil der zwischengespeicherten Änderungen erfasst wurden. Erstellen Sie in diesem Anwendungsfall die Tabellenstruktur im Oracle-Ziel neu und laden Sie die betreffenden Tabellen erneut.

  Vor Version 3.4.7: AWS DMS 

  DMS repliziert keine Datenänderungen, die sich aus Partitions- oder Unterpartitionsoperationen (`ADD`,`DROP`, `EXCHANGE` und) ergeben. `TRUNCATE` Solche Aktualisierungen können während der Replikation folgende Fehler verursachen:
  + Bei `ADD`-Operationen können Aktualisierungen und Löschungen für die hinzugefügten Daten die Warnung „0 rows affected (0 Zeilen betroffen)“ auslösen.
  + Für `DROP`- und `TRUNCATE`-Operationen können neue Einfügungen „Duplicates (Duplikate)“-Fehler verursachen.
  + `EXCHANGE`-Operationen können sowohl eine Warnung „0 rows affected (0 Zeilen betroffen)“, als auch „Duplicates (Duplikate)“-Fehler auslösen.

  Um Änderungen zu replizieren, die sich aus Partitions- oder Unterpartitionsoperationen ergeben, laden Sie die betreffenden Tabellen neu. Nach dem Hinzufügen einer neuen leeren Partition werden Operationen für die neu hinzugefügte Partition wie gewohnt auf das Ziel repliziert.
+ AWS DMS Versionen vor 3.4 unterstützen keine Datenänderungen auf dem Ziel, die sich aus der Ausführung der `CREATE TABLE AS` Anweisung auf der Quelle ergeben. Allerdings wird die neue Tabelle in der Zieldatenbank erstellt.
+ AWS DMS erfasst keine Änderungen, die durch das `DBMS_REDEFINITION` Oracle-Paket vorgenommen wurden, z. B. die Tabellenmetadaten und das `OBJECT_ID` Feld.
+ Wenn der LOB-Modus mit begrenzter Größe aktiviert ist, werden leere BLOB/CLOB Spalten in der Oracle-Quelle als NULL-Werte repliziert. Wenn der vollständige LOB-Modus aktiviert ist, werden sie als leere Zeichenfolge ('') repliziert.
+ Beim Erfassen von Änderungen mit Oracle 11 LogMiner geht eine Aktualisierung einer CLOB-Spalte mit einer Zeichenkettenlänge von mehr als 1982 verloren, und das Ziel wird nicht aktualisiert.
+ Unterstützt während der Change Data Capture (CDC) AWS DMS keine Batch-Aktualisierungen von numerischen Spalten, die als Primärschlüssel definiert sind.
+ AWS DMS unterstützt bestimmte `UPDATE` Befehle nicht. Das folgende Beispiel ist ein nicht unterstützter `UPDATE`-Befehl.

  ```
  UPDATE TEST_TABLE SET KEY=KEY+1;
  ```

  Hier ist `TEST_TABLE` der Tabellenname und `KEY` ist eine numerische Spalte, die als Primärschlüssel definiert ist.
+ AWS DMS unterstützt nicht den vollständigen LOB-Modus zum Laden von LONG- und LONG RAW-Spalten. Stattdessen können Sie den limitierten LOB-Modus verwenden, um diese Datentypen zu einem Oracle-Ziel zu migrieren. Im eingeschränkten LOB-Modus werden alle Daten, die Sie AWS DMS auf LONG- oder LONG-RAW-Spalten mit einer Länge von mehr als 64 KB festgelegt haben, auf 64 KB gekürzt.
+ AWS DMS unterstützt den vollständigen LOB-Modus zum Laden von XMLTYPE-Spalten nicht. Stattdessen können Sie den limitierten LOB-Modus verwenden, um XMLTYPE-Spalten zu einem Oracle-Ziel zu migrieren. Im limitierten LOB-Modus kürzt DMS alle Daten, die größer als die benutzerdefinierte Variable „Maximale LOB-Größe“ sind. Der empfohlene Höchstwert für „Maximale LOB-Größe“ beträgt 100 MB.
+ AWS DMS repliziert keine Tabellen, deren Namen Apostrophe enthalten.
+ AWS DMS unterstützt CDC aus materialisierten Ansichten. DMS unterstützt CDC jedoch nicht aus anderen Ansichten.
+ AWS DMS unterstützt CDC nicht für indexorganisierte Tabellen mit einem Überlaufsegment.
+ AWS DMS unterstützt den `Drop Partition` Vorgang nicht für Tabellen, die nach Referenz partitioniert sind und auf gesetzt sind. `enableHomogenousPartitionOps` `true`
+ Wenn Sie Oracle für den LogMiner Zugriff auf die Redo-Logs verwenden, gelten AWS DMS die folgenden Einschränkungen:
  + Nur für Oracle 12, repliziert AWS DMS keine Änderungen an LOB-Spalten.
  + AWS DMS unterstützt keine XA-Transaktionen bei der Replikation bei der Verwendung von Oracle. LogMiner
  + Oracle unterstützt LogMiner keine Verbindungen zu einer Pluggable Database (PDB). Um eine Verbindung mit einer PDB herzustellen, greifen Sie mit dem Binary Reader auf die Wiederholungsprotokolle zu.
  + SHRINK SPACE-Operationen werden nicht unterstützt.
+ Wenn Sie Binary Reader verwenden, gelten folgende Einschränkungen AWS DMS :
  + Tabellencluster werden nicht unterstützt.
  + Es werden nur `SHRINK SPACE`-Operationen auf Tabellenebene unterstützt. Diese Ebene umfasst die vollständige Tabelle, Partitionen und Unterpartitionen.
  + Änderungen an indexorganisierten Tabellen mit Schlüsselkomprimierung werden nicht unterstützt.
  + Die Implementierung von Online-Redo-Logs auf Raw-Geräten wird nicht unterstützt.
  + Binary Reader unterstützt TDE nur für selbstverwaltete Oracle-Datenbanken, da RDS for Oracle das Abrufen von Wallet-Passwörtern für TDE-Verschlüsselungsschlüssel nicht unterstützt.
+ AWS DMS unterstützt keine Verbindungen zu einer Amazon RDS-Oracle-Quelle, die einen Oracle Automatic Storage Management (ASM) -Proxy verwendet.
+ AWS DMS unterstützt keine virtuellen Spalten. 
+ AWS DMS unterstützt weder den `ROWID` Datentyp noch materialisierte Ansichten, die auf einer ROWID-Spalte basieren.

  AWS DMS unterstützt teilweise Oracle Materialized Views. Bei Volllastaufgaben kann DMS eine Volllastkopie einer materialisierten Ansicht in Oracle erstellen. DMS kopiert die materialisierte Ansicht als Basistabelle in das Zielsystem und ignoriert alle ROWID-Spalten in der materialisierten Ansicht. Bei einer laufenden Replikation (CDC) versucht DMS, Änderungen an den Daten der materialisierten Ansicht zu replizieren. Jedoch sind die Ergebnisse möglicherweise nicht ideal. Insbesondere wenn die materialisierte Ansicht vollständig aktualisiert wird, repliziert DMS einzelne Löschvorgänge für alle Zeilen, gefolgt von einzelnen Einfügungen für alle Zeilen. Dieser Vorgang ist sehr ressourcenintensiv und funktioniert bei materialisierten Ansichten mit einer großen Anzahl von Zeilen möglicherweise schlecht. Bei einer laufenden Replikation, bei der die materialisierten Ansichten schnell aktualisiert werden, versucht DMS, die schnellen Datenänderungen zu verarbeiten und zu replizieren. In beiden Fällen überspringt DMS alle ROWID-Spalten in der materialisierten Ansicht.
+ AWS DMS lädt oder erfasst keine globalen temporären Tabellen.
+ Aktivieren Sie für S3-Ziele, die Replikation verwenden, die zusätzliche Protokollierung für jede Spalte, damit Quellzeilenaktualisierungen jeden Spaltenwert erfassen können. Zum Beispiel: `alter table yourtablename add supplemental log data (all) columns;`.
+ Eine Aktualisierung für eine Zeile mit einem zusammengesetzten eindeutigen Schlüssel, der `null` enthält, kann am Ziel nicht repliziert werden.
+ AWS DMS unterstützt nicht die Verwendung mehrerer Oracle TDE-Verschlüsselungsschlüssel auf demselben Quellendpunkt. Jeder Endpunkt kann nur ein Attribut für den TDE-Verschlüsselungsschlüsselnamen „`securityDbEncryptionName`“ und ein TDE-Passwort für diesen Schlüssel haben.
+ Bei der Replikation von Amazon RDS for Oracle wird TDE nur mit verschlüsseltem Tablespace und unter Verwendung von Oracle unterstützt. LogMiner
+ AWS DMS unterstützt nicht mehrere Operationen zur schnellen Umbenennung von Tabellen.
+ Bei Verwendung von Oracle 19.0 als Quelle werden die folgenden Funktionen AWS DMS nicht unterstützt:
  + Data-Guard-DML-Umleitung
  + Partitionierte hybride Tabellen
  + Schema-only-Konten in Oracle
+ AWS DMS unterstützt nicht die Migration von Tabellen oder Ansichten des Typs `BIN$` oder`DR$`.
+ Ab Oracle 18.x wird Change Data Capture (CDC) von Oracle Express Edition (Oracle Database XE) AWS DMS nicht unterstützt.
+ Bei der Migration von Daten aus einer CHAR-Spalte kürzt DMS alle nachfolgenden Leerzeichen. 
+ AWS DMS unterstützt keine Replikation aus Anwendungscontainern.
+ AWS DMS unterstützt nicht die Ausführung von Oracle Flashback Database und Restore Points, da diese Operationen die Konsistenz der Oracle Redo Log-Dateien beeinträchtigen.
+ Vor AWS DMS Version 3.5.3 wird das `INSERT` Direct-Load-Verfahren mit der Option parallel Ausführung in den folgenden Fällen nicht unterstützt:
  + Unkomprimierte Tabellen mit mehr als 255 Spalten
  + Zeilengröße von mehr als 8K
  + Exadata-HCC-Tabellen
  + Datenbank, die auf der Big Endian-Plattform läuft
+ Für eine Quelltabelle, die weder über einen Primärschlüssel noch über einen eindeutigen Schlüssel verfügt, muss die zusätzliche Protokollierung ALL COLUMN aktiviert sein. Dies führt zu mehr Redo-Protokollaktivitäten und kann die DMS-CDC-Latenz erhöhen.
+ AWS DMS migriert keine Daten aus unsichtbaren Spalten in Ihrer Quelldatenbank. Verwenden Sie die Anweisung `ALTER TABLE`, um diese Spalten sichtbar zu machen und in den Migrationsbereich aufzunehmen.
+ Repliziert AWS DMS nicht für alle Oracle-Versionen das Ergebnis von `UPDATE` Operationen an `XMLTYPE` und LOB-Spalten.
+ AWS DMS unterstützt keine Replikation aus Tabellen mit zeitlichen Gültigkeitsbeschränkungen.
+ Wenn die Oracle-Quelle während einer Aufgabe zum vollständigen Laden nicht verfügbar ist, wird die Aufgabe AWS DMS möglicherweise nach mehreren Wiederverbindungsversuchen als abgeschlossen markiert, obwohl die Datenmigration noch unvollständig ist. In diesem Szenario enthalten die Zieltabellen nur die Datensätze, die vor dem Verbindungsverlust migriert wurden, was möglicherweise zu Dateninkonsistenzen zwischen Quell- und Zielsystem führen kann. Um die Vollständigkeit der Daten sicherzustellen, müssen Sie entweder die Aufgabe zum vollständigen Laden vollständig neu starten oder die spezifischen Tabellen, die von der Verbindungsunterbrechung betroffen sind, neu laden.

## SSL-Unterstützung für einen Oracle-Endpunkt
<a name="CHAP_Security.SSL.Oracle"></a>

AWS DMS Oracle-Endgeräte unterstützen SSL V3 für die Modi `none` und `verify-ca` SSL. Um SSL mit einem Oracle-Endpunkt zu verwenden, müssen Sie das Oracle Wallet für den Endpunkt anstelle von .pem-Zertifikatdateien hochladen. 

**Topics**
+ [Verwenden eines vorhandenen Zertifikats für Oracle SSL](#CHAP_Security.SSL.Oracle.Existing)
+ [Verwenden eines selbstsignierten Zertifikats für Oracle SSL](#CHAP_Security.SSL.Oracle.SelfSigned)

### Verwenden eines vorhandenen Zertifikats für Oracle SSL
<a name="CHAP_Security.SSL.Oracle.Existing"></a>

Um eine vorhandene Oracle-Client-Installation zum Erstellen der Oracle Wallet-Datei aus der Zertifikatdatei der Zertifizierungsstelle zu erstellen, gehen Sie wie folgt vor.

**Um eine bestehende Oracle-Client-Installation für Oracle SSL zu verwenden mit AWS DMS**

1. Legen Sie die `ORACLE_HOME`-Systemvariable auf den Speicherort Ihres `dbhome_1`-Verzeichnisses fest, indem Sie den folgenden Befehl ausführen.

   ```
   prompt>export ORACLE_HOME=/home/user/app/user/product/12.1.0/dbhome_1                        
   ```

1. `$ORACLE_HOME/lib` an die `LD_LIBRARY_PATH`-Systemvariable anhängen.

   ```
   prompt>export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib                        
   ```

1. Erstellen Sie ein Oracle Wallet unter `$ORACLE_HOME/ssl_wallet`.

   ```
   prompt>mkdir $ORACLE_HOME/ssl_wallet
   ```

1. Legen Sie die CA-Zertifikatdatei `.pem` im Verzeichnis `ssl_wallet` ab. Wenn Sie Amazon RDS verwenden, können Sie die von Amazon RDS gehostete CA-Stammzertifikatdatei `rds-ca-2015-root.pem` verwenden. Weitere Informationen zum Herunterladen dieser Datei finden Sie unter [Verwenden, SSL/TLS um eine Verbindung zu einer DB-Instance zu verschlüsseln](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL.html) im *Amazon RDS-Benutzerhandbuch*.

1. Wenn Ihr CA-Zertifikat mehr als eine PEM-Datei enthält (wie Amazon RDS Global oder Regional Bundle), müssen Sie es in separate Dateien aufteilen und sie mithilfe des folgenden Bash-Skripts zur Oracle-Wallet hinzufügen. Dieses Skript erfordert zwei Parametereingaben: den Pfad zum CA-Zertifikat und den Pfad zum Ordner der zuvor erstellten Oracle-Wallet.

   ```
   #!/usr/bin/env bash
   
   certnum=$(grep -c BEGIN <(cat $1))
   
   cnt=0
   temp_cert=""
   while read line
   do
   if [ -n "$temp_cert" -a "$line" == "-----BEGIN CERTIFICATE-----" ]
   then
   cnt=$(expr $cnt + 1)
   printf "\rImporting certificate # $cnt of $certnum"
   orapki wallet add -wallet "$2" -trusted_cert -cert <(echo -n "${temp_cert}") -auto_login_only 1>/dev/null 2>/dev/null
   temp_cert=""
   fi
   temp_cert+="$line"$'\n'
   done < <(cat $1)
   
   cnt=$(expr $cnt + 1)
   printf "\rImporting certificate # $cnt of $certnum"
   orapki wallet add -wallet "$2" -trusted_cert -cert <(echo -n "${temp_cert}") -auto_login_only 1>/dev/null 2>/dev/null
   echo ""
   ```

Wenn Sie die vorherigen Schritte ausgeführt haben, können Sie die Wallet-Datei mit dem `ImportCertificate`-API-Aufruf importieren, indem Sie den Parameter „certificate-wallet“ angeben. Sie können das importierte Wallet-Zertifikat dann verwenden, wenn Sie `verify-ca` als SSL-Modus beim Erstellen oder Ändern Ihres Oracle-Endpunkts auswählen.

**Anmerkung**  
 Oracle-Wallets sind Binärdateien. AWS DMS akzeptiert diese Dateien unverändert. 

### Verwenden eines selbstsignierten Zertifikats für Oracle SSL
<a name="CHAP_Security.SSL.Oracle.SelfSigned"></a>

Gehen Sie wie folgt vor, um ein selbstsigniertes Zertifikat für Oracle SSL zu verwenden. Dabei wird das Passwort `oracle123` für das Oracle-Wallet vorausgesetzt.

**Um ein selbstsigniertes Zertifikat für Oracle SSL zu verwenden mit AWS DMS**

1. Erstellen Sie ein Verzeichnis für die Arbeit mit dem selbstsignierten Zertifikat.

   ```
   mkdir -p /u01/app/oracle/self_signed_cert
   ```

1. Wechseln Sie in das Verzeichnis, das Sie im vorherigen Schritt erstellt haben.

   ```
   cd /u01/app/oracle/self_signed_cert
   ```

1. Erstellen Sie einen Stammschlüssel.

   ```
   openssl genrsa -out self-rootCA.key 2048
   ```

1. Signieren Sie selbst ein Stammzertifikat mithilfe des Stammschlüssels, den Sie im vorherigen Schritt erstellt haben.

   ```
   openssl req -x509 -new -nodes -key self-rootCA.key 
           -sha256 -days 3650 -out self-rootCA.pem
   ```

   Verwenden Sie Eingabeparameter wie die folgenden:
   + `Country Name (2 letter code) [XX]`, z. B.: `AU`
   + `State or Province Name (full name) []`, z. B.: `NSW`
   + `Locality Name (e.g., city) [Default City]`, z. B.: `Sydney`
   + `Organization Name (e.g., company) [Default Company Ltd]`, z. B.: `AmazonWebService`
   + `Organizational Unit Name (e.g., section) []`, z. B.: `DBeng`
   + `Common Name (e.g., your name or your server's hostname) []`, z. B.: `aws`
   + `Email Address []`, z. B.: abcd.efgh@amazonwebservice.com

1. Erstellen Sie ein Oracle Wallet-Verzeichnis für die Oracle-Datenbank.

   ```
   mkdir -p /u01/app/oracle/wallet
   ```

1. Erstellen Sie ein neues Oracle Wallet.

   ```
   orapki wallet create -wallet "/u01/app/oracle/wallet" -pwd oracle123 -auto_login_local
   ```

1. Fügen Sie das Stammzertifikat dem Oracle Wallet hinzu.

   ```
   orapki wallet add -wallet "/u01/app/oracle/wallet" -pwd oracle123 -trusted_cert 
   -cert /u01/app/oracle/self_signed_cert/self-rootCA.pem
   ```

1. Listen Sie den Inhalt des Oracle Wallet auf. Die Liste sollte das Stammzertifikat enthalten. 

   ```
   orapki wallet display -wallet /u01/app/oracle/wallet -pwd oracle123
   ```

   Dies könnte beispielsweise wie folgt angezeigt werden.

   ```
   Requested Certificates:
   User Certificates:
   Trusted Certificates:
   Subject:        CN=aws,OU=DBeng,O= AmazonWebService,L=Sydney,ST=NSW,C=AU
   ```

1. Generieren Sie die CSR (Certificate Signing Request) mithilfe des ORAPKI-Dienstprogramms.

   ```
   orapki wallet add -wallet "/u01/app/oracle/wallet" -pwd oracle123 
   -dn "CN=aws" -keysize 2048 -sign_alg sha256
   ```

1. Führen Sie den folgenden Befehl aus.

   ```
   openssl pkcs12 -in /u01/app/oracle/wallet/ewallet.p12 -nodes -out /u01/app/oracle/wallet/nonoracle_wallet.pem
   ```

   Es wird eine Ausgabe ähnlich der folgenden erstellt.

   ```
   Enter Import Password:
   MAC verified OK
   Warning unsupported bag type: secretBag
   ```

1. Legen Sie "dms" als allgemeinen Namen fest.

   ```
   openssl req -new -key /u01/app/oracle/wallet/nonoracle_wallet.pem -out certdms.csr
   ```

   Verwenden Sie Eingabeparameter wie die folgenden:
   + `Country Name (2 letter code) [XX]`, z. B.: `AU`
   + `State or Province Name (full name) []`, z. B.: `NSW`
   + `Locality Name (e.g., city) [Default City]`, z. B.: `Sydney`
   + `Organization Name (e.g., company) [Default Company Ltd]`, z. B.: `AmazonWebService`
   + `Organizational Unit Name (e.g., section) []`, z. B.: `aws`
   + `Common Name (e.g., your name or your server's hostname) []`, z. B.: `aws`
   + `Email Address []`, z. B.: abcd.efgh@amazonwebservice.com

   Stellen Sie sicher, dass dies nicht mit Schritt 4 identisch ist. Dazu können Sie beispielsweise den Namen der Organisationseinheit in einen anderen Namen ändern, wie in der Abbildung gezeigt.

   Geben Sie die folgenden zusätzlichen Attribute ein, die zusammen mit Ihrer Zertifikatsanforderung gesendet werden sollen.
   + `A challenge password []`, z. B.: `oracle123`
   + `An optional company name []`, z. B.: `aws`

1. Rufen Sie die Zertifikatsignatur ab.

   ```
   openssl req -noout -text -in certdms.csr | grep -i signature
   ```

   Der Signaturschlüssel für diesen Beitrag lautet `sha256WithRSAEncryption`.

1. Führen Sie den folgenden Befehl aus, um die Zertifikatdatei (`.crt`) zu erstellen.

   ```
   openssl x509 -req -in certdms.csr -CA self-rootCA.pem -CAkey self-rootCA.key 
   -CAcreateserial -out certdms.crt -days 365 -sha256
   ```

   Es wird eine Ausgabe ähnlich der folgenden erstellt.

   ```
   Signature ok
   subject=/C=AU/ST=NSW/L=Sydney/O=awsweb/OU=DBeng/CN=aws
   Getting CA Private Key
   ```

1. Fügen Sie das Zertifikat dem Wallet hinzu.

   ```
   orapki wallet add -wallet /u01/app/oracle/wallet -pwd oracle123 -user_cert -cert certdms.crt
   ```

1. Sehen Sie sich das Wallet an. Es sollte zwei Einträge aufweisen. Siehe den folgenden Code.

   ```
   orapki wallet display -wallet /u01/app/oracle/wallet -pwd oracle123
   ```

1. Konfigurieren Sie die `sqlnet.ora`-Datei (`$ORACLE_HOME/network/admin/sqlnet.ora`).

   ```
   WALLET_LOCATION =
      (SOURCE =
        (METHOD = FILE)
        (METHOD_DATA =
          (DIRECTORY = /u01/app/oracle/wallet/)
        )
      ) 
   
   SQLNET.AUTHENTICATION_SERVICES = (NONE)
   SSL_VERSION = 1.0
   SSL_CLIENT_AUTHENTICATION = FALSE
   SSL_CIPHER_SUITES = (SSL_RSA_WITH_AES_256_CBC_SHA)
   ```

1. Beenden Sie den Oracle Listener.

   ```
   lsnrctl stop
   ```

1. Fügen Sie Einträge für SSL in der `listener.ora`-Datei (`$ORACLE_HOME/network/admin/listener.ora`) hinzu.

   ```
   SSL_CLIENT_AUTHENTICATION = FALSE
   WALLET_LOCATION =
     (SOURCE =
       (METHOD = FILE)
       (METHOD_DATA =
         (DIRECTORY = /u01/app/oracle/wallet/)
       )
     )
   
   SID_LIST_LISTENER =
    (SID_LIST =
     (SID_DESC =
      (GLOBAL_DBNAME = SID)
      (ORACLE_HOME = ORACLE_HOME)
      (SID_NAME = SID)
     )
    )
   
   LISTENER =
     (DESCRIPTION_LIST =
       (DESCRIPTION =
         (ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1521))
         (ADDRESS = (PROTOCOL = TCPS)(HOST = localhost.localdomain)(PORT = 1522))
         (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
       )
     )
   ```

1. Konfigurieren Sie die `tnsnames.ora`-Datei (`$ORACLE_HOME/network/admin/tnsnames.ora`).

   ```
   <SID>=
   (DESCRIPTION=
           (ADDRESS_LIST = 
                   (ADDRESS=(PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1521))
           )
           (CONNECT_DATA =
                   (SERVER = DEDICATED)
                   (SERVICE_NAME = <SID>)
           )
   )
   
   <SID>_ssl=
   (DESCRIPTION=
           (ADDRESS_LIST = 
                   (ADDRESS=(PROTOCOL = TCPS)(HOST = localhost.localdomain)(PORT = 1522))
           )
           (CONNECT_DATA =
                   (SERVER = DEDICATED)
                   (SERVICE_NAME = <SID>)
           )
   )
   ```

1. Starten Sie den Oracle Listener neu.

   ```
   lsnrctl start
   ```

1. Zeigen Sie den Status des Oracle Listener an.

   ```
   lsnrctl status
   ```

1. Testen Sie die SSL-Verbindung zu der Datenbank von "localhost" mithilfe von sqlplus und dem SSL-Eintrag "tnsnames".

   ```
   sqlplus -L ORACLE_USER@SID_ssl
   ```

1. Überprüfen Sie, dass Sie sich erfolgreich mithilfe von SSL verbunden haben.

   ```
   SELECT SYS_CONTEXT('USERENV', 'network_protocol') FROM DUAL;
   
   SYS_CONTEXT('USERENV','NETWORK_PROTOCOL')
   --------------------------------------------------------------------------------
   tcps
   ```

1. Wechseln Sie zu dem Verzeichnis mit dem selbstsignierten Zertifikat.

   ```
   cd /u01/app/oracle/self_signed_cert
   ```

1. Erstellen Sie ein neues Client-Oracle-Wallet AWS DMS , das Sie verwenden können.

   ```
   orapki wallet create -wallet ./ -auto_login_only
   ```

1. Fügen Sie das selbstsignierte Stammzertifikat dem Oracle Wallet hinzu.

   ```
   orapki wallet add -wallet ./ -trusted_cert -cert self-rootCA.pem -auto_login_only
   ```

1. Listet den Inhalt des AWS DMS zu verwendenden Oracle-Wallets auf. Die Liste sollte das selbstsignierte Stammzertifikat enthalten.

   ```
   orapki wallet display -wallet ./
   ```

   Es wird eine Ausgabe ähnlich der folgenden erstellt.

   ```
   Trusted Certificates:
   Subject:        CN=aws,OU=DBeng,O=AmazonWebService,L=Sydney,ST=NSW,C=AU
   ```

1. Laden Sie das Oracle-Wallet hoch, das Sie gerade erstellt haben AWS DMS.

## Unterstützte Verschlüsselungsmethoden für die Verwendung von Oracle als Quelle für AWS DMS
<a name="CHAP_Source.Oracle.Encryption"></a>

In der folgenden Tabelle finden Sie die Methoden zur transparenten Datenverschlüsselung (TDE), die bei der Arbeit mit einer Oracle-Quelldatenbank AWS DMS unterstützt werden. 


| Zugriffsmethode für Wiederholungsprotokolle | TDE-Tabellenraum | TDE-Spalte | 
| --- | --- | --- | 
| Oracle LogMiner | Ja | Ja | 
| Binary Reader | Ja | Ja | 

AWS DMS unterstützt Oracle TDE, wenn Binary Reader verwendet wird, sowohl auf Spalten- als auch auf Tablespace-Ebene. Um die TDE-Verschlüsselung mit zu verwenden AWS DMS, identifizieren Sie zunächst den Oracle-Wallet-Speicherort, an dem der TDE-Verschlüsselungsschlüssel und das TDE-Passwort gespeichert sind. Identifizieren Sie dann den richtigen TDE-Verschlüsselungsschlüssel und das richtige Passwort für den Oracle-Quellendpunkt.

**So identifizieren Sie den Verschlüsselungsschlüssel und das Passwort für die TDE-Verschlüsselung und geben diese an**

1. Führen Sie die folgende Abfrage aus, um das Oracle-Verschlüsselungs-Wallet auf dem Oracle-Datenbank-Host zu ermitteln.

   ```
   SQL> SELECT WRL_PARAMETER FROM V$ENCRYPTION_WALLET;
   
   WRL_PARAMETER
   --------------------------------------------------------------------------------
   /u01/oracle/product/12.2.0/dbhome_1/data/wallet/
   ```

   Hier ist `/u01/oracle/product/12.2.0/dbhome_1/data/wallet/` der Wallet-Speicherort.

1. Rufen Sie die Masterschlüssel-ID für eine Nicht-CDB- oder eine CDB-Quelle wie folgt ab:

   1. Führen Sie für eine Nicht-CDB-Quelle die folgende Abfrage aus, um die Master-Verschlüsselungsschlüssel-ID abzurufen:

      ```
      SQL>  select rownum, key_id, activation_time from v$encryption_keys;
      
      ROWNUM KEY_ID                                                 ACTIVATION_TIME
      ------ ------------------------------------------------------ ---------------
           1 AeKask0XZU+NvysflCYBEVwAAAAAAAAAAAAAAAAAAAAAAAAAAAAA   04-SEP-24 10.20.56.605200 PM +00:00
           2 AV7WU9uhoU8rv8daE/HNnSwAAAAAAAAAAAAAAAAAAAAAAAAAAAAA   10-AUG-21 07.52.03.966362 PM +00:00
           3 AckpoJ/f+k8xvzJ+gSuoVH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAA   14-SEP-20 09.26.29.048870 PM +00:00
      ```

      Die Aktivierungszeit ist nützlich, wenn Sie CDC zu einem früheren Zeitpunkt starten möchten. Wenn Sie die obigen Ergebnisse verwenden, können Sie CDC beispielsweise zwischen dem 10. und 21. August, 19:52.03 Uhr und dem 14.09.-20 21:26.29 Uhr mit der Master-Key-ID in ROWNUM 2 starten. Wenn die Aufgabe die am oder nach dem 14. September bis 09.26.29 Uhr generierte Redo erreicht, schlägt sie fehl. Sie müssen den Quellendpunkt ändern, die Masterschlüssel-ID in ROWNUM 3 angeben und dann die Aufgabe fortsetzen.

   1. Für die CDB-Quelle benötigt DMS den CDB\$1ROOT Master-Verschlüsselungsschlüssel. Connect zu CDB\$1ROOT her und führen Sie die folgende Abfrage aus:

      ```
      SQL> select rownum, key_id, activation_time from v$encryption_keys where con_id = 1;
      
      ROWNUM KEY_ID                                               ACTIVATION_TIME
      ------ ---------------------------------------------------- -----------------------------------
           1 Aa2E/Vwb5U+zv5hCncS5ErMAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 29-AUG-24 12.51.19.699060 AM +00:00
      ```

1. Listen Sie über die Befehlszeile die Einträge des Verschlüsselungs-Wallets auf dem Oracle-Quelldatenbank-Host auf.

   ```
   $ mkstore -wrl /u01/oracle/product/12.2.0/dbhome_1/data/wallet/ -list
   Oracle Secret Store entries:
   ORACLE.SECURITY.DB.ENCRYPTION.AWGDC9glSk8Xv+3bVveiVSgAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
   ORACLE.SECURITY.DB.ENCRYPTION.AY1mRA8OXU9Qvzo3idU4OH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
   ORACLE.SECURITY.DB.ENCRYPTION.MASTERKEY
   ORACLE.SECURITY.ID.ENCRYPTION.
   ORACLE.SECURITY.KB.ENCRYPTION.
   ORACLE.SECURITY.KM.ENCRYPTION.AY1mRA8OXU9Qvzo3idU4OH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
   ```

   Suchen Sie den Eintrag, der die Masterschlüssel-ID enthält, die Sie in Schritt 2 (`AWGDC9glSk8Xv+3bVveiVSg`) ermittelt haben. Dieser Eintrag ist der Name des TDE-Verschlüsselungsschlüssels.

1. Sehen Sie sich die Details des Eintrags an, den Sie im vorherigen Schritt ermittelt haben.

   ```
   $ mkstore -wrl /u01/oracle/product/12.2.0/dbhome_1/data/wallet/ -viewEntry ORACLE.SECURITY.DB.ENCRYPTION.AWGDC9glSk8Xv+3bVveiVSgAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
   Oracle Secret Store Tool : Version 12.2.0.1.0
   Copyright (c) 2004, 2016, Oracle and/or its affiliates. All rights reserved.
   Enter wallet password:
   ORACLE.SECURITY.DB.ENCRYPTION.AWGDC9glSk8Xv+3bVveiVSgAAAAAAAAAAAAAAAAAAAAAAAAAAAAA = AEMAASAASGYs0phWHfNt9J5mEMkkegGFiD4LLfQszDojgDzbfoYDEACv0x3pJC+UGD/PdtE2jLIcBQcAeHgJChQGLA==
   ```

   Geben Sie das Wallet-Passwort ein, um das Ergebnis anzuzeigen.

   Hier ist der Wert rechts von `'='` das TDE-Passwort.

1. Geben Sie den Namen des TDE-Verschlüsselungsschlüssels für den Oracle-Quellendpunkt an, indem Sie das zusätzliche Verbindungsattribut `securityDbEncryptionName` festlegen.

   ```
   securityDbEncryptionName=ORACLE.SECURITY.DB.ENCRYPTION.AWGDC9glSk8Xv+3bVveiVSgAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
   ```

1. Geben Sie das zugehörige TDE-Passwort für diesen Schlüssel in der Konsole als Teil des **Passwort**-Werts der Oracle-Quelle ein. Verwenden Sie die folgende Reihenfolge, um die durch Kommata getrennten Passwortwerte zu formatieren, endend mit dem Wert des TDE-Passworts.

   ```
   Oracle_db_password,ASM_Password,AEMAASAASGYs0phWHfNt9J5mEMkkegGFiD4LLfQszDojgDzbfoYDEACv0x3pJC+UGD/PdtE2jLIcBQcAeHgJChQGLA==
   ```

   Geben Sie die Passwortwerte in dieser Reihenfolge an, unabhängig von Ihrer Oracle-Datenbankkonfiguration. Wenn Sie beispielsweise TDE verwenden, Ihre Oracle-Datenbank jedoch nicht ASM verwendet, geben Sie die Passwortwerte in der folgenden Reihenfolge an, durch Kommata getrennt.

   ```
   Oracle_db_password,,AEMAASAASGYs0phWHfNt9J5mEMkkegGFiD4LLfQszDojgDzbfoYDEACv0x3pJC+UGD/PdtE2jLIcBQcAeHgJChQGLA==
   ```

Wenn die von Ihnen angegebenen TDE-Anmeldeinformationen falsch sind, schlägt die AWS DMS Migrationsaufgabe nicht fehl. Die Aufgabe liest jedoch auch keine laufenden Replikationsänderungen und wendet sie auch nicht auf die Zieldatenbank an. Überwachen Sie nach dem Start der Aufgabe die **Tabellenstatistik** auf der Konsolenseite zur Migrationsaufgabe, um sicherzustellen, dass die Änderungen repliziert werden.

Wenn ein DBA die TDE-Anmeldeinformationen für die Oracle-Datenbank ändert, während die Aufgabe ausgeführt wird, schlägt die Aufgabe fehl. Die Fehlermeldung enthält den Namen des neuen TDE-Verschlüsselungsschlüssels. Gehen Sie wie oben beschrieben vor, um neue Werte anzugeben und die Aufgabe neu zu starten.

**Wichtig**  
Sie können ein TDE-Wallet, das an einem Oracle Automatic Storage Management (ASM)-Speicherort erstellt wurde, nicht bearbeiten, da Befehle auf Betriebssystemebene wie `cp`, `mv`, `orapki` und `mkstore` die in einem ASM-Speicherort gespeicherten Wallet-Dateien beschädigen. Diese Einschränkung gilt nur für TDE-Wallet-Dateien, die an einem ASM-Speicherort gespeichert sind. Sie gilt nicht für TDE-Wallet-Dateien, die in einem lokalen Betriebssystemverzeichnis gespeichert sind.  
Wenn Sie ein in ASM gespeichertes TDE-Wallet mit Befehlen auf Betriebssystemebene bearbeiten möchten, erstellen Sie einen lokalen Keystore und führen Sie den ASM-Keystore wie folgt mit dem lokalen Keystore zusammen:   
Erstellen Sie einen lokalen Keystore.  

   ```
   ADMINISTER KEY MANAGEMENT create keystore file system wallet location identified by wallet password;
   ```
Führen Sie den ASM-Keystore mit dem lokalen Keystore zusammen.  

   ```
   ADMINISTER KEY MANAGEMENT merge keystore ASM wallet location identified by wallet password into existing keystore file system wallet location identified by wallet password with backup;
   ```
Führen Sie dann die Schritte 3 und 4 für den lokalen Keystore aus, um die Einträge des Verschlüsselungs-Wallets und das TDE-Passwort aufzulisten.

## Unterstützte Komprimierungsmethoden für die Verwendung von Oracle als Quelle für AWS DMS
<a name="CHAP_Source.Oracle.Compression"></a>

In der folgenden Tabelle finden Sie, welche Komprimierungsmethoden bei der Arbeit mit einer Oracle-Quelldatenbank AWS DMS unterstützt werden. Wie die Tabelle zeigt, hängt die Komprimierungsunterstützung sowohl von Ihrer Oracle-Datenbankversion als auch davon ab, ob DMS so konfiguriert ist, dass Oracle für den LogMiner Zugriff auf die Redo-Logs verwendet wird.


| Version | Basic | OLTP |  HCC (von Oracle 11g R2 oder neuer)  | Weitere | 
| --- | --- | --- | --- | --- | 
| Oracle 10 | Nein | – | – | Nein | 
| Oracle 11 oder neuer — Oracle LogMiner | Ja | Ja | Ja  | Ja — Jede von Oracle unterstützte Komprimierungsmethode LogMiner. | 
| Oracle 11 oder neuer – Binary Reader | Ja | Ja | Ja – weitere Informationen finden Sie im folgenden Hinweis. | Ja | 

**Anmerkung**  
Wenn der Oracle-Quellendpunkt für die Verwendung von Binary Reader konfiguriert ist, wird die Query Low-Ebene der HCC-Komprimierungsmethode nur für Aufgaben mit Volllast unterstützt.

## Replizieren verschachtelter Tabellen mit Oracle als Quelle für AWS DMS
<a name="CHAP_Source.Oracle.NestedTables"></a>

AWS DMS unterstützt die Replikation von Oracle-Tabellen, die Spalten enthalten, bei denen es sich um verschachtelte Tabellen oder definierte Typen handelt. Fügen Sie dem Oracle-Quellendpunkt die folgende zusätzliche Verbindungsattributeinstellung hinzu, um diese Funktion zu aktivieren.

```
allowSelectNestedTables=true;
```

AWS DMS erstellt die Zieltabellen aus verschachtelten Oracle-Tabellen als reguläre über- und untergeordnete Tabellen auf dem Ziel ohne eindeutige Einschränkung. Um auf die richtigen Daten für das Ziel zuzugreifen, verbinden Sie die übergeordneten und untergeordneten Tabellen. Erstellen Sie dazu zunächst manuell einen nicht eindeutigen Index für die `NESTED_TABLE_ID`-Spalte in der untergeordneten Zieltabelle. Sie können dann die `NESTED_TABLE_ID`-Spalte in der Join `ON`-Klausel zusammen mit der übergeordneten Spalte verwenden, die dem Namen der untergeordneten Tabelle entspricht. Darüber hinaus verbessert die Erstellung eines solchen Indexes die Leistung, wenn die Daten der untergeordneten Zieltabelle aktualisiert oder gelöscht werden AWS DMS. Ein Beispiel finden Sie unter [Beispiel-Join für übergeordnete und untergeordnete Tabellen auf dem Ziel](#CHAP_Source.Oracle.NestedTables.JoinExample).

Es wird empfohlen, die Aufgabe so zu konfigurieren, dass sie beendet wird, nachdem eine vollständige Ladung abgeschlossen ist. Erstellen Sie dann diese nicht eindeutigen Indizes für alle replizierten untergeordneten Tabellen auf dem Ziel, und setzen Sie die Aufgabe fort.

Wenn eine erfasste verschachtelte Tabelle zu einer vorhandenen übergeordneten Tabelle hinzugefügt wird (erfasst oder nicht erfasst), wird sie korrekt AWS DMS behandelt. Der nicht eindeutige Index für die entsprechende Zieltabelle wird jedoch nicht erstellt. In diesem Fall kann die Leistung beeinträchtigt werden, wenn die untergeordnete Zieltabelle extrem groß wird. In einem solchen Fall empfehlen wir, die Aufgabe anzuhalten, den Index zu erstellen und dann die Aufgabe fortzusetzen.

Nachdem die verschachtelten Tabellen auf das Ziel repliziert wurden, muss der DBA einen Join für die übergeordneten und die entsprechenden untergeordneten Tabellen ausführen, um die Daten zu glätten.

### Voraussetzungen für die Replikation von verschachtelten Oracle-Tabellen als Quelle
<a name="CHAP_Source.Oracle.NestedTables.Prerequisites"></a>

Stellen Sie sicher, dass Sie die übergeordneten Tabellen für alle replizierten verschachtelten Tabellen replizieren. Schließen Sie sowohl die übergeordneten Tabellen (die Tabellen, die die geschachtelte Tabellenspalte enthalten) als auch die untergeordneten (d. h. verschachtelten) Tabellen in die AWS DMS Tabellenzuordnungen ein.

### Unterstützte verschachtelte Oracle-Tabellentypen als Quelle
<a name="CHAP_Source.Oracle.NestedTables.Types"></a>

AWS DMS unterstützt die folgenden verschachtelten Oracle-Tabellentypen als Quelle:
+ Datentyp
+ Benutzerdefiniertes Objekt

### Einschränkungen der AWS DMS Unterstützung für verschachtelte Oracle-Tabellen als Quelle
<a name="CHAP_Source.Oracle.NestedTables.Limitations"></a>

AWS DMS hat die folgenden Einschränkungen bei der Unterstützung von verschachtelten Oracle-Tabellen als Quelle:
+ AWS DMS unterstützt nur eine Ebene der Tabellenverschachtelung.
+ AWS DMS Bei der Tabellenzuordnung wird nicht überprüft, ob sowohl die übergeordnete als auch die untergeordnete (n) Tabelle (n) für die Replikation ausgewählt wurden. Dies bedeutet, dass es möglich ist, eine übergeordnete Tabelle ohne untergeordnete Tabelle oder eine untergeordnete Tabelle ohne übergeordnete Tabelle auszuwählen.

### Wie AWS DMS repliziert verschachtelte Oracle-Tabellen als Quelle
<a name="CHAP_Source.Oracle.NestedTables.HowReplicated"></a>

AWS DMS repliziert übergeordnete und verschachtelte Tabellen wie folgt auf das Ziel:
+ AWS DMS erstellt die Elterntabelle, die mit der Quelltabelle identisch ist. Anschließend definiert es die verschachtelte Spalte im übergeordneten Element als `RAW(16)` und schließt eine Referenz zu den verschachtelten Tabellen des übergeordneten Elements in seiner `NESTED_TABLE_ID`-Spalte ein.
+ AWS DMS erstellt die untergeordnete Tabelle, die mit der verschachtelten Quelle identisch ist, jedoch mit einer zusätzlichen Spalte namens`NESTED_TABLE_ID`. Diese Spalte hat denselben Typ und denselben Wert wie die entsprechende übergeordnete verschachtelte Spalte und auch dieselbe Bedeutung.

### Beispiel-Join für übergeordnete und untergeordnete Tabellen auf dem Ziel
<a name="CHAP_Source.Oracle.NestedTables.JoinExample"></a>

Um die übergeordnete Tabelle zu glätten, führen Sie einen Join zwischen der übergeordneten und der untergeordneten Tabelle aus, wie im folgenden Beispiel gezeigt:

1. Erstellen Sie die `Type`-Tabelle.

   ```
   CREATE OR REPLACE TYPE NESTED_TEST_T AS TABLE OF VARCHAR(50);
   ```

1. Erstellen Sie die übergeordnete Tabelle mit einer Spalte des Typs `NESTED_TEST_T`, wie oben definiert.

   ```
   CREATE TABLE NESTED_PARENT_TEST (ID NUMBER(10,0) PRIMARY KEY, NAME NESTED_TEST_T) NESTED TABLE NAME STORE AS NAME_KEY;
   ```

1. Glätten Sie die Tabelle `NESTED_PARENT_TEST` mit einem Join mit der untergeordneten Tabelle `NAME_KEY`, wobei `CHILD.NESTED_TABLE_ID` mit `PARENT.NAME` übereinstimmt.

   ```
   SELECT … FROM NESTED_PARENT_TEST PARENT, NAME_KEY CHILD WHERE CHILD.NESTED_
   TABLE_ID = PARENT.NAME;
   ```

## REDO wird auf Oracle ASM gespeichert, wenn Oracle als Quelle für verwendet wird AWS DMS
<a name="CHAP_Source.Oracle.REDOonASM"></a>

Bei Oracle-Quellen mit hoher REDO-Generierung kann das Speichern von REDO in Oracle ASM die Leistung verbessern. Dies gilt insbesondere in einer RAC-Konfiguration, da Sie DMS so konfigurieren können, dass ASM-REDO-Lesevorgänge auf alle ASM-Knoten verteilt werden.

Verwenden Sie das Verbindungsattribut `asmServer`, um diese Konfiguration zu verwenden. Die folgende Verbindungszeichenfolge verteilt beispielsweise DMS-REDO-Lesevorgänge auf 3 ASM-Knoten:

```
asmServer=(DESCRIPTION=(CONNECT_TIMEOUT=8)(ENABLE=BROKEN)(LOAD_BALANCE=ON)(FAILOVER=ON)
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=tcp)(HOST=asm_node1_ip_address)(PORT=asm_node1_port_number))
(ADDRESS=(PROTOCOL=tcp)(HOST=asm_node2_ip_address)(PORT=asm_node2_port_number))
(ADDRESS=(PROTOCOL=tcp)(HOST=asm_node3_ip_address)(PORT=asm_node3_port_number)))
(CONNECT_DATA=(SERVICE_NAME=+ASM)))
```

Wenn Sie NFS zum Speichern von Oracle REDO verwenden, müssen Sie sicherstellen, dass die entsprechenden Client-Patches für DNFS (Direct NFS) installiert sind – insbesondere alle Patches für den Oracle-Fehler 25224242. Weitere Informationen finden Sie in der folgenden Oracle-Veröffentlichung zu Patches im Zusammenhang mit dem Client Direct NFS: [Recommended Patches for Direct NFS Client](https://support.oracle.com/knowledge/Oracle Cloud/1495104_1.html). 

Zum Verbessern der NFS-Leseleistung empfehlen wir außerdem, den Wert `rsize` und `wsize` in `fstab` für das NFS-Volume zu erhöhen, wie im folgenden Beispiel gezeigt.

```
NAS_name_here:/ora_DATA1_archive /u09/oradata/DATA1 nfs rw,bg,hard,nointr,tcp,nfsvers=3,_netdev,
timeo=600,rsize=262144,wsize=262144
```

Passen Sie den Wert `tcp-max-xfer-size` außerdem wie folgt an:

```
vserver nfs modify -vserver vserver -tcp-max-xfer-size 262144
```

## Endpunkteinstellungen bei Verwendung von Oracle als Quelle für AWS DMS
<a name="CHAP_Source.Oracle.ConnectionAttrib"></a>

Sie können Endpunkteinstellungen, ähnlich wie zusätzliche Verbindungsattribute, zum Konfigurieren Ihrer Oracle-Quelldatenbank verwenden. Sie geben die Einstellungen an, wenn Sie den Quellendpunkt mithilfe der AWS DMS Konsole oder mithilfe des `create-endpoint` Befehls in [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html), mit der `--oracle-settings '{"EndpointSetting": "value", ...}'` JSON-Syntax erstellen.

Die folgende Tabelle zeigt die Endpunkteinstellungen, die Sie mit Oracle als Quelle verwenden können.


| Name | Description | 
| --- | --- | 
| AccessAlternateDirectly |  Legen Sie dieses Attribut auf false fest, um mit Binary Reader Änderungsdaten für Amazon RDS für Oracle als Quelle zu erfassen. Dies weist die DMS-Instance an, dass sie nicht über einen bestimmten Pfadpräfix-Ersatz mittels direktem Dateizugriff auf Redo-Log-Dateien zugreifen darf. Weitere Informationen finden Sie unter [Konfiguration einer CDC-Aufgabe für die Verwendung von Binary Reader mit einer RDS for Oracle-Quelle für AWS DMS](#CHAP_Source.Oracle.Amazon-Managed.CDC). Standardwert: aktiviert  Zulässige Werte: true/false Beispiel: `--oracle-settings '{"AccessAlternateDirectly": false}'`  | 
|  `AdditionalArchivedLogDestId`  |  Legen Sie dieses Attribut mit `ArchivedLogDestId` in einer primären/Standby-Einrichtung fest. Diese Einstellung ist bei einer Umstellung nützlich, wenn eine Datenbank in Oracle Data Guard als Quelle verwendet wird. In diesem Fall AWS DMS muss es wissen, von welchem Ziel die Archiv-Redo-Logs abgerufen werden sollen, um Änderungen zu lesen. Dies liegt daran, dass die vorherige primäre Instance nach der Umstellung eine Standby-Instance ist.  AWS DMS Unterstützt zwar die Verwendung der `RESETLOGS` Oracle-Option zum Öffnen der Datenbank, sollte aber `RESETLOGS` nur verwendet werden, wenn dies erforderlich ist. Weitere Informationen zu `RESETLOGS` finden Sie unter [RMAN Data Repair Concepts](https://docs.oracle.com/en/database/oracle/oracle-database/19/bradv/rman-data-repair-concepts.html#GUID-1805CCF7-4AF2-482D-B65A-998192F89C2B) im *Benutzerhandbuch für Oracle® Database Backup and Recovery*. Zulässige Werte: Archivierungsziel-IDs Beispiel: `--oracle-settings '{"AdditionalArchivedLogDestId": 2}'`  | 
|  `AddSupplementalLogging`  |  Konfigurieren Sie dieses Attribut so, dass für die Oracle-Datenbank die zusätzliche Protokollierung auf Tabellenebene eingerichtet wird. Dieses Attribut aktiviert je nach Tabellenmetadaten eine der folgenden Optionen für alle Tabellen, die für eine Migrationsaufgabe ausgewählt wurden: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/dms/latest/userguide/CHAP_Source.Oracle.html) Standardwert: false  Gültige Werte: true/false  Beispiel: `--oracle-settings '{"AddSupplementalLogging": false}'`  Wenn Sie diese Option verwenden, müssen Sie dennoch die zusätzliche Protokollierung auf Datenbankebene wie zuvor erläutert aktivieren.    | 
|  `AllowSelectNestedTables`  |  Setzen Sie dieses Attribut auf „true“, um die Replikation von Oracle-Tabellen zu aktivieren, die Spalten enthalten, die verschachtelte Tabellen oder definierte Typen sind. Weitere Informationen finden Sie unter [Replizieren verschachtelter Tabellen mit Oracle als Quelle für AWS DMS](#CHAP_Source.Oracle.NestedTables). Standardwert: false  Zulässige Werte: true/false Beispiel: `--oracle-settings '{"AllowSelectNestedTables": true}'`  | 
|  `ArchivedLogDestId`  |  Gibt die ID für die archivierten Redo-Protokolle an. Dieser Wert sollte mit einer Zahl in der Spalte dest\$1id der Ansicht „v\$1archived\$1log“ identisch sein. Wenn Sie mit einem zusätzlichen Redo-Protokollziel arbeiten, empfehlen wir, das Attribut `AdditionalArchivedLogDestId` zum Angeben der zusätzlichen Ziel-ID zu verwenden. Dadurch verbessert sich die Performance, indem sichergestellt wird, dass von Anfang an auf die richtigen Protokolle zugegriffen wird.  Standardwert: 1 Zulässige Werte: Zahl  Beispiel: `--oracle-settings '{"ArchivedLogDestId": 1}'`  | 
|  `ArchivedLogsOnly`  |  Wenn dieses Feld auf Y gesetzt ist, wird AWS DMS nur auf die archivierten Redo-Logs zugegriffen. Wenn die archivierten Redo-Logs nur in Oracle ASM gespeichert werden, müssen dem AWS DMS Benutzerkonto ASM-Rechte gewährt werden.  Standardwert: N  Gültige Werte: Y/N  Beispiel: `--oracle-settings '{"ArchivedLogsOnly": Y}'`  | 
|  `asmUsePLSQLArray` (nur ECA)  |  Verwenden Sie dieses zusätzliche Verbindungsattribut (ECA), wenn Sie Quelländerungen mit erfassen BinaryReader. Mit dieser Einstellung kann DMS 50 Lesevorgänge auf ASM-Ebene pro einzelnem Lese-Thread puffern und gleichzeitig die Anzahl der Threads mit dem Attribut `parallelASMReadThreads` kontrollieren. Wenn Sie dieses Attribut festlegen, verwendet der AWS DMS Binärleser einen anonymen PL/SQL Block, um Redo-Daten zu erfassen und sie als großen Puffer an die Replikationsinstanz zurückzusenden. Dadurch wird die Anzahl der Round-Trips zur Quelle reduziert. Dies kann die Leistung bei der Erfassung an der Quelle erheblich verbessern, führt jedoch zu einem höheren PGA-Speicherverbrauch auf der ASM-Instance. Wenn das Speicherziel nicht ausreicht, können Stabilitätsprobleme auftreten. Sie können die folgende Formel verwenden, um den gesamten PGA-Speicherverbrauch der ASM-Instance durch eine einzelne DMS-Aufgabe zu schätzen: `number_of_redo_threads * parallelASMReadThreads * 7 MB` Standardwert: false Zulässige Werte: true/false ECA-Beispiel: `asmUsePLSQLArray=true;`  | 
|  `ConvertTimestampWithZoneToUTC`  |  Legen Sie dieses Attribut auf `true` fest, um den Zeitstempelwert der Spalten „TIMESTAMP WITH TIME ZONE“ und „TIMESTAMP WITH LOCAL TIME ZONE“ in UTC zu konvertieren. Standardmäßig ist der Wert dieses Attributs „false“ und die Daten werden unter Verwendung der Zeitzone der Quelldatenbank repliziert. Standardwert: false Zulässige Werte: true/false Beispiel: `--oracle-settings '{"ConvertTimestampWithZoneToUTC": true}'`  | 
|  `EnableHomogenousPartitionOps`  |  Legen Sie dieses Attribut auf `true` fest, um die Replikation von Oracle-Partition- und -SubPartition-DDL-Operationen für die *homogene* Oracle-Migration zu aktivieren. Beachten Sie, dass diese Funktion und Erweiterung in AWS DMS Version 3.4.7 eingeführt wurden. Standardwert: false Zulässige Werte: true/false Beispiel: `--oracle-settings '{"EnableHomogenousPartitionOps": true}'`  | 
|  `EnableHomogenousTablespace`  |  Setzen Sie dieses Attribut, um die homogene Tablespace-Replikation zu aktivieren und vorhandene Tabellen oder Indizes unter demselben Tablespace auf dem Ziel zu erstellen. Standardwert: false Zulässige Werte: true/false Beispiel: `--oracle-settings '{"EnableHomogenousTablespace": true}'`  | 
|  `EscapeCharacter`  |  Legen Sie dieses Attribut auf ein Escape-Zeichen fest. Mit diesem Escape-Zeichen können Sie festlegen, dass sich ein einzelnes Platzhalterzeichen in Tabellenzuordnungsausdrücken wie ein normales Zeichen verhält. Weitere Informationen finden Sie unter [Platzhalter bei der Tabellenzuordnung](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Wildcards.md). Standardwert: Null  Gültige Werte: alle Zeichen außer Platzhalterzeichen Beispiel: `--oracle-settings '{"EscapeCharacter": "#"}'` Sie können nur `escapeCharacter` für Tabellennamen verwenden. Es werden keine Zeichen aus Schemanamen oder Spaltennamen maskiert.  | 
|  `ExposeViews`  |  Verwenden Sie dieses Attribut, um Daten einmal aus einer Ansicht abrufen; Sie können sie nicht für die laufende Replikation verwenden. Wenn Sie Daten aus einer Ansicht extrahieren, wird die Ansicht im Zielschema als Tabelle angezeigt. Standardwert: false Zulässige Werte: true/false Beispiel: `--oracle-settings '{"ExposeViews": true}'`  | 
|  `ExtraArchivedLogDestIds`  |  Gibt ein oder mehrere Ziele für ein oder mehrere archivierte Redo-Logs an. IDs Dies IDs sind die Werte der Spalte dest\$1id in der Ansicht v\$1archived\$1log. Verwenden Sie diese Einstellung mit dem ArchivedLogDestId zusätzlichen Verbindungsattribut in einem Setup oder einem Setup. primary-to-single primary-to-multiple-standby Diese Einstellung ist bei einem Switchover nützlich, wenn Sie eine Oracle-Data-Guard-Datenbank als Quelle verwenden. Benötigt in diesem Fall Informationen darüber, AWS DMS von welchem Ziel Archiv-Redo-Logs abgerufen werden sollen, um Änderungen zu lesen. AWS DMS benötigt dies, da die vorherige Primärinstanz nach dem Switchover eine Standby-Instanz ist. Zulässige Werte: Archivierungsziel-IDs Beispiel: `--oracle-settings '{"ExtraArchivedLogDestIds": 1}'`  | 
|  `FailTasksOnLobTruncation`  |  Mit der Einstellung `true` schlägt eine Aufgabe durch dieses Attribut fehl, wenn die tatsächliche Größe einer LOB-Spalte größer als der angegebene `LobMaxSize`-Wert ist. Wenn die Aufgabe auf den eingeschränkten LOB-Modus festgelegt ist und diese Option auf `true` festgelegt wurde, schlägt die Aufgabe fehl, anstatt LOB-Daten zu kürzen. Standardwert: false  Zulässige Werte: Boolesch  Beispiel: `--oracle-settings '{"FailTasksOnLobTruncation": true}'`  | 
|  `filterTransactionsOfUser` (nur ECA)  |  Verwenden Sie dieses zusätzliche Verbindungsattribut (ECA), damit DMS Transaktionen eines bestimmten Benutzers ignorieren kann, wenn Daten aus Oracle repliziert werden, wenn Sie LogMiner Sie können durch Kommata getrennte Benutzernamenwerte übergeben, diese müssen jedoch ausschließlich in GROSSBUCHSTABEN geschrieben sein. ECA-Beispiel: `filterTransactionsOfUser=USERNAME;`  | 
|  `NumberDataTypeScale`  |  Gibt den Skalierwert an. Sie können eine Skalierung von bis zu 38, -1 für FLOAT oder -2 für VARCHAR auswählen. Standardmäßig wird der Datentyp NUMBER in Präzision = 38 und Skalierung = 10 konvertiert. Standardwert: 10  Zulässige Werte: -2 bis 38 (-2 für VARCHAR, -1 für FLOAT) Beispiel: `--oracle-settings '{"NumberDataTypeScale": 12}'`  Wählen Sie eine Kombination aus Präzision und Skalierung, -1 (FLOAT) oder -2 (VARCHAR) aus. DMS unterstützt jede von Oracle unterstützte Kombination aus Präzision und Skalierung. Wählen Sie bei einer Präzision von 39 oder höher -2 (VARCHAR) aus. Die NumberDataTypeScale Einstellung für die Oracle-Datenbank wird nur für den NUMBER-Datentyp verwendet (ohne die explizite Präzisions- und Skalendefinition). Sie müssen beachten, dass es zu Genauigkeitsverlusten kommen kann, wenn diese Einstellung falsch konfiguriert ist.   | 
|  `OpenTransactionWindow`  |   Gibt den Zeitrahmen in Minuten an, in dem nach offenen Transaktionen für reine CDC-Aufgaben gesucht wird. Wenn Sie den Wert `OpenTransactionWindow` auf 1 oder höher einstellen, `SCN_TO_TIMESTAMP` konvertiert DMS SCN-Werte in Zeitstempelwerte. Aufgrund der Einschränkungen von Oracle Database schlägt SCN\$1TO\$1TIMESTAMP mit einem Fehler fehl, wenn Sie eine SCN angeben, die zu alt ist, als CDC-Startpunkt, und Sie können keine reinen CDC-Aufgaben starten. `ORA-08181` Standardwert: 0  Gültige Werte: eine Ganzzahl von 0 bis 240 Beispiel: `openTransactionWindow=15;`  | 
| OraclePathPrefix | Legen Sie dieses Zeichenfolge-Attribut auf den erforderlichen Wert fest, um mit dem Binary Reader Änderungsdaten für ein Amazon RDS für Oracle als Quelle zu erfassen. Dieser Wert gibt das Standard-Oracle-Root an, das für den Zugriff auf die Redo-Log-Dateien verwendet wird. Weitere Informationen finden Sie unter [Konfiguration einer CDC-Aufgabe für die Verwendung von Binary Reader mit einer RDS for Oracle-Quelle für AWS DMS](#CHAP_Source.Oracle.Amazon-Managed.CDC).Standardwert: keiner rdsdbdata/db/ORCLGültiger Wert:/\$1A/ Beispiel: `--oracle-settings '{"OraclePathPrefix": "/rdsdbdata/db/ORCL_A/"}'`  | 
| ParallelASMReadThreads |  Legen Sie dieses Attribut fest, um die Anzahl der Threads zu ändern, die DMS konfiguriert, um CDC mit Oracle Automatic Storage Management (ASM) durchzuführen. Sie können einen Ganzzahlwert zwischen 2 (Standard) und 8 (maximal) angeben. Verwenden Sie dieses Attribut zusammen mit dem `ReadAheadBlocks`-Attribut. Weitere Informationen finden Sie unter [Konfiguration einer CDC-Aufgabe für die Verwendung von Binary Reader mit einer RDS for Oracle-Quelle für AWS DMS](#CHAP_Source.Oracle.Amazon-Managed.CDC). Standardwert: 2  Gültige Werte: Eine Ganzzahl von 2 bis 8 Beispiel: `--oracle-settings '{"ParallelASMReadThreads": 6;}'`  | 
| ReadAheadBlocks |  Legen Sie dieses Attribut fest, um die Anzahl der Read-Ahead-Blöcke zu ändern, die DMS konfiguriert, um CDC mit Oracle Automatic Storage Management (ASM) und NAS-Speicher ohne ASM durchzuführen. Sie können einen Ganzzahlwert zwischen 1000 (Standard) und 2.000.000 (Maximum) angeben. Verwenden Sie dieses Attribut zusammen mit dem `ParallelASMReadThreads`-Attribut. Weitere Informationen finden Sie unter [Konfiguration einer CDC-Aufgabe für die Verwendung von Binary Reader mit einer RDS for Oracle-Quelle für AWS DMS](#CHAP_Source.Oracle.Amazon-Managed.CDC). Standardwert: 1000  Gültige Werte: Eine Ganzzahl zwischen 1000 und 2.000.000 Beispiel: `--oracle-settings '{"ReadAheadBlocks": 150000}'`  | 
|  `ReadTableSpaceName`  |  Bei der Einstellung `true` unterstützt dieses Attribut eine Replikation der Tabellenräume. Standardwert: false  Zulässige Werte: Boolesch  Beispiel: `--oracle-settings '{"ReadTableSpaceName": true}'`  | 
| ReplacePathPrefix | Legen Sie dieses Attribut auf True fest, um mit dem Binary Reader Änderungsdaten für ein Amazon RDS für Oracle als Quelle zu erfassen. Diese Einstellung weist die DMS-Instance an, das Standard Oracle-Root durch die angegebene UsePathPrefix-Einstellung zu ersetzen, um auf die Redo-Log-Dateien zuzugreifen. Weitere Informationen finden Sie unter [Konfiguration einer CDC-Aufgabe für die Verwendung von Binary Reader mit einer RDS for Oracle-Quelle für AWS DMS](#CHAP_Source.Oracle.Amazon-Managed.CDC).Standardwert: false Zulässige Werte: true/false Beispiel: `--oracle-settings '{"ReplacePathPrefix": true}'`  | 
|  `RetryInterval`  |  Gibt die Anzahl der Sekunden an, die das System wartet, bevor eine Abfrage erneut gesendet wird.  Standardwert: 5  Zulässige Werte: Zahl ab 1  Beispiel: `--oracle-settings '{"RetryInterval": 6}'`  | 
|  `SecurityDbEncryptionName`  |  Gibt den Namen eines Schlüssels an, der für die transparente Datenverschlüsselung (TDE) der Spalten und des Tablespace in der Oracle-Quelldatenbank verwendet wird. Weitere Hinweise zum Einstellen dieses Attributs und des zugehörigen Passworts auf dem Oracle-Quellendpunkt finden Sie unter [Unterstützte Verschlüsselungsmethoden für die Verwendung von Oracle als Quelle für AWS DMS](#CHAP_Source.Oracle.Encryption). Standardwert: ""  Zulässige Werte: String  Beispiel: `--oracle-settings '{"SecurityDbEncryptionName": "ORACLE.SECURITY.DB.ENCRYPTION.Adg8m2dhkU/0v/m5QUaaNJEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"}'`  | 
|  `SpatialSdo2GeoJsonFunctionName`  |  Verwenden Sie für die Migration von Oracle-Version 12.1 oder früheren Quellen zu PostgreSQL-Zielen dieses Attribut, um SDO\$1GEOMETRY zum GEOJSON-Format zu konvertieren.  AWS DMS Ruft standardmäßig die `SDO2GEOJSON` benutzerdefinierte Funktion auf, die vorhanden und für den AWS DMS Benutzer zugänglich sein muss. Order Sie können eine eigene benutzerdefinierte Funktion erstellen, die die Funktionsweise von `SDOGEOJSON` nachahmt, und stattdessen `SpatialSdo2GeoJsonFunctionName` zum Aufruf einrichten.  Standardwert: SDO2 GEOJSON Zulässige Werte: String  Beispiel: `--oracle-settings '{"SpatialSdo2GeoJsonFunctionName": "myCustomSDO2GEOJSONFunction"}'`  | 
|  `StandbyDelayTime`  |  Mit diesem Attribut wird eine Zeit in Minuten für die Verzögerung bei der Standby-Synchronisierung festgelegt. Wenn die Quelle eine Standby-Datenbank von Active Data Guard ist, verwenden Sie dieses Attribut, um die Zeitverzögerung zwischen Primär- und Standby-Datenbanken anzugeben. In AWS DMS können Sie eine Oracle CDC-Aufgabe erstellen, die eine Active Data Guard-Standby-Instanz als Quelle für die Replikation laufender Änderungen verwendet. Somit ist es nicht mehr notwendig, eine Verbindung mit einer aktiven Datenbank herzustellen, die sich möglicherweise in der Produktion befindet. Standardwert: 0  Zulässige Werte: Zahl  Beispiel: `--oracle-settings '{"StandbyDelayTime": 1}'` **Hinweis: **Bei Verwendung von DMS 3.4.6, 3.4.7 und höher ist die Verwendung dieser Verbindungseinstellung optional. In der neuesten Version von DMS 3.4.6 und Version 3.4.7 sollte `dms_user` über die Berechtigung `select` für `V_$DATAGUARD_STATS` verfügen, damit DMS die Standby-Verzögerungszeit berechnen kann.  | 
| UseAlternateFolderForOnline | Legen Sie dieses Attribut auf True fest, um mit dem Binary Reader Änderungsdaten für ein Amazon RDS für Oracle als Quelle zu erfassen. Dies weist die DMS-Instance an, einen angegebenen Präfix-Ersatz zu verwenden, um auf alle Online-Redo-Log-Dateien zuzugreifen. Weitere Informationen finden Sie unter [Konfiguration einer CDC-Aufgabe für die Verwendung von Binary Reader mit einer RDS for Oracle-Quelle für AWS DMS](#CHAP_Source.Oracle.Amazon-Managed.CDC).Standardwert: false Zulässige Werte: true/false Beispiel: `--oracle-settings '{"UseAlternateFolderForOnline": true}'`  | 
| UseBfile |  Legen Sie für dieses Attribut "Y" fest, um Änderungen mit dem Dienstprogramm Binary Reader zu erfassen. Legen Sie `UseLogminerReader` auf N fest, um dieses Attribut auf Y festzulegen. Sie müssen zusätzliche Attribute festlegen, um Binary Reader mit Amazon RDS für Oracle als Quelle verwenden zu können. Weitere Informationen zu dieser Einstellung und der Verwendung von Oracle Automatic Storage Management (ASM) finden Sie unter [Verwenden von Oracle LogMiner oder AWS DMS Binary Reader für CDC](#CHAP_Source.Oracle.CDC). Hinweis: Wenn Sie diesen Wert als zusätzliches Verbindungsattribut (ECA) festlegen, lauten die gültigen Werte „Y“ und „N“. Wenn Sie diesen Wert als Endpunkteinstellung festlegen, lauten die gültigen Werte `true` und `false`. Standardwert: N  Gültige Werte: Y/N (wenn dieser Wert als ECA festgelegt wird); true/false (wenn dieser Wert als Endpunkteinstellung festgelegt wird). Beispiel: `--oracle-settings '{"UseBfile": Y}'`  | 
|  `UseLogminerReader`  |  Setzen Sie dieses Attribut auf Y, um Änderungsdaten mit dem LogMiner Hilfsprogramm zu erfassen (Standardeinstellung). Legen Sie für diese Option „N“ fest, wenn Sie möchten, dass AWS DMS auf die Wiederholungsprotokolle als Binärdatei zugreift. Wenn Sie diese Option auf N festlegen, fügen Sie auch die Einstellung useBfile=Y hinzu. Weitere Informationen zu dieser Einstellung und zur Verwendung von Oracle Automatic Storage Management (ASM) finden Sie unter [Verwenden von Oracle LogMiner oder AWS DMS Binary Reader für CDC](#CHAP_Source.Oracle.CDC). Hinweis: Wenn Sie diesen Wert als zusätzliches Verbindungsattribut (ECA) festlegen, lauten die gültigen Werte „Y“ und „N“. Wenn Sie diesen Wert als Endpunkteinstellung festlegen, lauten die gültigen Werte `true` und `false`. Standardwert: Y  Gültige Werte: Y/N (wenn dieser Wert als ECA festgelegt wird); true/false (wenn dieser Wert als Endpunkteinstellung festgelegt wird). Beispiel: `--oracle-settings '{"UseLogminerReader": Y}'`  | 
| UsePathPrefix | Legen Sie dieses Zeichenfolge-Attribut auf den erforderlichen Wert fest, um mit dem Binary Reader Änderungsdaten für ein Amazon RDS für Oracle als Quelle zu erfassen. Dieser Wert gibt das Pfadpräfix an, das verwendet wird, um das Standard-Oracle-Root für den Zugriff auf die Redo-Log-Dateien zu ersetzen. Weitere Informationen finden Sie unter [Konfiguration einer CDC-Aufgabe für die Verwendung von Binary Reader mit einer RDS for Oracle-Quelle für AWS DMS](#CHAP_Source.Oracle.Amazon-Managed.CDC).Standardwert: keiner Zulässiger Wert: /rdsdbdata/log/ Beispiel: `--oracle-settings '{"UsePathPrefix": "/rdsdbdata/log/"}'`  | 

## Quelldatentypen für Oracle
<a name="CHAP_Source.Oracle.DataTypes"></a>

Der Oracle-Endpunkt für AWS DMS unterstützt die meisten Oracle-Datentypen. Die folgende Tabelle zeigt die Oracle-Quelldatentypen, die bei der Verwendung unterstützt werden, AWS DMS und die Standardzuordnungen zu AWS DMS Datentypen.

**Anmerkung**  
Mit Ausnahme der Datentypen LONG und LONG RAW sind bei der Replikation von einer Oracle-Quelle auf ein Oracle-Ziel (*homogene Replikation*) alle Quell- und Zieldatentypen identisch. Der Datentyp LONG wird jedoch CLOB zugeordnet, der Datentyp LONG RAW wird BLOB zugeordnet. 

Weitere Informationen zum Anzeigen des Datentyps, der im Ziel zugewiesen ist, finden Sie im Abschnitt für den Zielendpunkt, den Sie verwenden.

Weitere Informationen zu AWS DMS Datentypen finden Sie unter[Datentypen für den AWS Database Migration Service](CHAP_Reference.DataTypes.md).


|  Oracle-Datentyp  |  AWS DMS Datentyp  | 
| --- | --- | 
|  BINARY\$1FLOAT  |  REAL4  | 
|  BINARY\$1DOUBLE  |  REAL8  | 
|  BINARY  |  BYTES  | 
|  FLOAT (P)  |  Wenn die Genauigkeit kleiner oder gleich 24 ist, verwenden Sie REAL4. Wenn die Genauigkeit größer als 24 ist, verwenden Sie REAL8.  | 
|  NUMBER (P,S)  |  Verwenden Sie bei einer Skalierung größer als 0 NUMERIC. Bei einer Skalierung von 0: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/dms/latest/userguide/CHAP_Source.Oracle.html) Wenn die Skalierung kleiner als 0 ist, verwenden Sie REAL8. | 
|  DATE  |  DATETIME  | 
|  INTERVAL\$1YEAR TO MONTH  |  STRING (mit Angabe von "interval year\$1to\$1month")  | 
|  INTERVAL\$1DAY TO SECOND  |  STRING (mit Angabe von "interval day\$1to\$1second")  | 
|  TIMESTAMP (ZEITSTEMPEL)  |  DATETIME  | 
|  TIMESTAMP WITH TIME ZONE  |  STRING (mit Angabe von "timestamp\$1with\$1timezone")  | 
|  TIMESTAMP WITH LOCAL TIME ZONE  |  STRING (mit Angabe von "timestamp\$1with\$1local\$1 timezone")  | 
|  CHAR  |  STRING  | 
|  VARCHAR2  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/dms/latest/userguide/CHAP_Source.Oracle.html)  | 
|  NCHAR  |  WSTRING  | 
|  NVARCHAR2  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/dms/latest/userguide/CHAP_Source.Oracle.html)  | 
|  RAW  |  BYTES  | 
|  REAL  |  REAL8  | 
|  BLOB  |  BLOB Um diesen Datentyp mit zu verwenden AWS DMS, müssen Sie die Verwendung von BLOB-Datentypen für eine bestimmte Aufgabe aktivieren. AWS DMS unterstützt BLOB-Datentypen nur in Tabellen, die einen Primärschlüssel enthalten.  | 
|  CLOB  |  CLOB Um diesen Datentyp mit zu verwenden AWS DMS, müssen Sie die Verwendung von CLOB-Datentypen für eine bestimmte Aufgabe aktivieren. AWS DMS Unterstützt während CDC CLOB-Datentypen nur in Tabellen, die einen Primärschlüssel enthalten.  | 
|  NCLOB  |  NCLOB Um diesen Datentyp mit zu verwenden AWS DMS, müssen Sie die Verwendung von NCLOB-Datentypen für eine bestimmte Aufgabe aktivieren. AWS DMS Unterstützt während CDC NCLOB-Datentypen nur in Tabellen, die einen Primärschlüssel enthalten.  | 
|  LONG  |  CLOB Der LONG-Datentyp wird im stapeloptimierten Anwendungsmodus (CDC-Modus) nicht unterstützt. TurboStream  Um diesen Datentyp mit zu verwenden AWS DMS, aktivieren Sie die Verwendung von LOBs für eine bestimmte Aufgabe.  AWS DMS Unterstützt LOB-Datentypen bei CDC oder Volllast nur in Tabellen, die über einen Primärschlüssel verfügen. Unterstützt auch AWS DMS nicht den vollständigen LOB-Modus zum Laden von LONG-Spalten. Stattdessen können Sie den limitierten LOB-Modus verwenden, um LONG-Spalten zu einem Oracle-Ziel zu migrieren. Im eingeschränkten LOB-Modus werden alle Daten, die Sie AWS DMS auf LONG-Spalten mit einer Länge von mehr als 64 KB festgelegt haben, auf 64 KB gekürzt. Weitere Informationen zur LOB-Unterstützung finden Sie unter AWS DMS[Einstellung der LOB-Unterstützung für Quelldatenbanken in einer Aufgabe AWS DMS](CHAP_Tasks.LOBSupport.md)  | 
|  LONG RAW  |  BLOB Der LONG RAW-Datentyp wird im stapeloptimierten Anwendungsmodus (TurboStream CDC-Modus) nicht unterstützt. Um diesen Datentyp mit zu verwenden AWS DMS, aktivieren Sie die Verwendung von LOBs für eine bestimmte Aufgabe.  AWS DMS Unterstützt LOB-Datentypen bei CDC oder Volllast nur in Tabellen, die über einen Primärschlüssel verfügen. Unterstützt auch AWS DMS nicht den vollständigen LOB-Modus zum Laden von LONG RAW-Spalten. Stattdessen können Sie den limitierten LOB-Modus verwenden, um LONG RAW-Spalten zu einem Oracle-Ziel zu migrieren. Im limitierten LOB-Modus kürzt AWS DMS alle Daten auf 64 KB, die Sie auf LONG RAW-Spalten mit einer Länge von mehr als 64 KB setzen. Weitere Informationen zur LOB-Unterstützung finden Sie unter AWS DMS[Einstellung der LOB-Unterstützung für Quelldatenbanken in einer Aufgabe AWS DMS](CHAP_Tasks.LOBSupport.md)  | 
|  XMLTYPE  |  CLOB  | 
| SDO\$1GEOMETRY | BLOB (bei einer Migration von Oracle zu Oracle)CLOB (bei einer Migration von Oracle zu PostgreSQL) | 

Als Quelle verwendete Oracle-Tabellen mit Spalten der folgenden Datentypen werden nicht unterstützt und können nicht repliziert werden. Das Replizieren von Spalten mit diesen Datentypen führt zu einer Null-Spalte.
+ BFILE
+ ROWID
+ REF
+ UROWID
+ Benutzerdefinierte Datentypen
+ ANYDATA
+ VARRAY

**Anmerkung**  
Virtuelle Spalten werden nicht unterstützt.

### Migrieren räumlicher Oracle-Datentypen
<a name="CHAP_Source.Oracle.DataTypes.Spatial"></a>

*Räumliche Daten* identifizieren die Geometrieinformationen für ein Objekt oder eine Position im Raum. In einer Oracle-Datenbank wird die geometrische Beschreibung eines räumlichen Objekts in einem Objekt des Typs SDO\$1GEOMETRY gespeichert. Innerhalb dieses Objekts wird die geometrische Beschreibung in einer einzelnen Zeile in einer einzelnen Spalte einer benutzerdefinierten Tabelle gespeichert. 

AWS DMS unterstützt die Migration des Oracle-Typs SDO\$1GEOMETRY von einer Oracle-Quelle zu einem Oracle- oder PostgreSQL-Ziel.

Beachten Sie bei der Migration von Oracle-Geodatentypen mit folgenden Überlegungen AWS DMS:
+ Stellen Sie bei der Migration zu einem Oracle-Ziel sicher, dass USER\$1SDO\$1GEOM\$1METADATA-Einträge, die Typinformationen enthalten, manuell übertragen werden. 
+  AWS DMS Erstellt bei der Migration von einem Oracle-Quellendpunkt zu einem PostgreSQL-Zielendpunkt Zielspalten. Diese Spalten verfügen über Standardgeometrie- und Geographie-Typinformationen mit einer 2D-Dimension und einer Raumbezugskennung (SRID) gleich Null (0). Ein Beispiel ist `GEOMETRY, 2, 0`.
+ Konvertieren Sie bei Oracle-Version 12.1 oder früheren zu PostgreSQL-Zielen migrierten Quellen `SDO_GEOMETRY`-Objekte mithilfe der `SDO2GEOJSON`-Funktion oder des zusätzlichen Verbindungsattributs `spatialSdo2GeoJsonFunctionName` in das `GEOJSON`-Format. Weitere Informationen finden Sie unter [Endpunkteinstellungen bei Verwendung von Oracle als Quelle für AWS DMS](#CHAP_Source.Oracle.ConnectionAttrib).
+ AWS DMS unterstützt Oracle Spatial-Spaltenmigrationen nur für den vollständigen LOB-Modus. AWS DMS unterstützt die Modi Limited LOB oder Inline LOB nicht. Weitere Informationen zum LOB-Modus finden Sie unter [Einstellung der LOB-Unterstützung für Quelldatenbanken in einer Aufgabe AWS DMS](CHAP_Tasks.LOBSupport.md).
+ Da AWS DMS nur der Full-LOB-Modus für die Migration von Oracle Spatial-Spalten unterstützt wird, benötigt die Spaltentabelle einen Primärschlüssel und einen eindeutigen Schlüssel. Wenn die Tabelle keinen Primärschlüssel und keinen eindeutigen Schlüssel hat, wird die Tabelle bei der Migration übersprungen.

# Verwenden einer Microsoft SQL Server-Datenbank als Quelle für AWS DMS
<a name="CHAP_Source.SQLServer"></a>

Migrieren Sie Daten aus einer oder mehreren Microsoft SQL Server-Datenbanken mit AWS DMS. Mit einer SQL Server-Datenbank als Quelle können Sie Daten in eine andere SQL Server-Datenbank oder in eine der anderen AWS DMS unterstützten Datenbanken migrieren. 

Informationen zu Versionen von SQL Server, die als Quelle AWS DMS unterstützt werden, finden Sie unter[Quellen für AWS DMS](CHAP_Introduction.Sources.md).

Die SQL Server-Quelldatenbank kann auf einem beliebigen Computer in Ihrem Netzwerk installiert sein. Ein SQL Server-Konto mit den entsprechenden Zugriffsberechtigungen für die Quelldatenbank für den Typ der ausgewählten Aufgabe ist für die Verwendung mit AWS DMS erforderlich. Weitere Informationen finden Sie unter [Berechtigungen für SQL Server-Aufgaben](#CHAP_Source.SQLServer.Permissions).

AWS DMS unterstützt die Migration von Daten aus benannten Instanzen von SQL Server. Beim Erstellen des Quellendpunkts können Sie folgende Notation für den Servernamen verwenden.

```
IPAddress\InstanceName
```

Im folgenden Beispiel wird ein korrekter Servername für den Quellendpunkt angegeben. Hier ist der erste Teil des Namens die IP-Adresse des Servers und der zweite Teil ist der Name der SQL Server-Instanz (in diesem Beispiel SQLTest).

```
10.0.0.25\SQLTest
```

Ermitteln Sie außerdem die Portnummer, die Ihre benannte Instanz von SQL Server überwacht, und verwenden Sie sie, um Ihren AWS DMS Quellendpunkt zu konfigurieren. 

**Anmerkung**  
Port 1433 ist der Standard für Microsoft SQL Server. Jedoch werden dynamische Ports, die sich bei jedem Start von SQL Server ändern, und spezifische statische Portnummern, die zum Herstellen einer Verbindung mit SQL Server über eine Firewall genutzt werden, ebenfalls häufig verwendet. Sie möchten also die tatsächliche Portnummer Ihrer benannten Instanz von SQL Server wissen, wenn Sie den AWS DMS Quellendpunkt erstellen.

Sie können SSL verwenden, um Verbindungen zwischen Ihrem SQL Server-Endpunkt und der Replikations-Instance zu verschlüsseln. Weitere Informationen zur Verwendung von SSL mit einem SQL Server-Endpunkt finden Sie unter [Verwenden von SSL mit AWS Database Migration Service](CHAP_Security.SSL.md).

Sie können CDC für die laufende Migration aus einer SQL Server-Datenbank verwenden. Hinweise zur Konfiguration Ihrer SQL Server-Quelldatenbank für CDC finden Sie unter. [Erfassung von Datenänderungen für die laufende Replikation von SQL Server](CHAP_Source.SQLServer.CDC.md)

Weitere Informationen zur Arbeit mit SQL Server-Quelldatenbanken und AWS DMS finden Sie im Folgenden.

**Topics**
+ [Einschränkungen bei der Verwendung von SQL Server als Quelle für AWS DMS](#CHAP_Source.SQLServer.Limitations)
+ [Berechtigungen für SQL Server-Aufgaben](#CHAP_Source.SQLServer.Permissions)
+ [Voraussetzungen für die Verwendung der laufenden Replikation (CDC) von einer SQL-Server-Quelle aus](#CHAP_Source.SQLServer.Prerequisites)
+ [Unterstützte Komprimierungsmethoden für SQL Server](#CHAP_Source.SQLServer.Compression)
+ [Arbeiten mit selbstverwalteten SQL Server-Verfügbarkeitsgruppen AlwaysOn](#CHAP_Source.SQLServer.AlwaysOn)
+ [Endpunkteinstellungen bei Verwendung von SQL Server als Quelle für AWS DMS](#CHAP_Source.SQLServer.ConnectionAttrib)
+ [Quelldatentypen für SQL Server](#CHAP_Source.SQLServer.DataTypes)
+ [Erfassung von Datenänderungen für die laufende Replikation von SQL Server](CHAP_Source.SQLServer.CDC.md)

## Einschränkungen bei der Verwendung von SQL Server als Quelle für AWS DMS
<a name="CHAP_Source.SQLServer.Limitations"></a>

Die folgenden Einschränkungen gelten, wenn Sie eine SQL Server-Datenbank als Quelle für AWS DMS verwenden:
+ Die Identitätseigenschaft für eine Spalte wird nicht zu einer Spalte in der Zieldatenbank migriert.
+ Der SQL Server-Endpunkt unterstützt die Verwendung von Tabellen mit spärlichen Spalten nicht.
+ Windows-Authentifizierung wird nicht unterstützt.
+ Änderungen an berechneten Feldern in einem SQL Server werden nicht repliziert.
+ Temporäre Tabellen werden nicht unterstützt.
+ SQL Server-Partition-Switching wird nicht unterstützt.
+ Bei Verwendung der Dienstprogramme WRITETEXT und UPDATETEXT werden AWS DMS keine Ereignisse erfasst, die auf die Quelldatenbank angewendet werden.
+ Das folgende Data Manipulation Language (DML)-Muster wird nicht unterstützt. 

  ```
  SELECT * INTO new_table FROM existing_table
  ```
+ Bei der Verwendung von SQL Server als Quelle wird die Verschlüsselung auf Spaltenebene nicht unterstützt.
+ AWS DMS unterstützt keine Audits auf Serverebene für SQL Server 2008 oder SQL Server 2008 R2 als Quellen. Dies liegt an einem bekannten Problem mit SQL Server 2008 und 2008 R2. Wenn Sie beispielsweise den folgenden Befehl ausführen, schlägt dies AWS DMS fehl.

  ```
  USE [master]
  GO 
  ALTER SERVER AUDIT [my_audit_test-20140710] WITH (STATE=on)
  GO
  ```
+ Die Spalten Geometrie und Geografie werden im vollständigen LOB-Modus nicht unterstützt, wenn SQL Server als Quelle verwendet wird. Verwenden Sie stattdessen den limitierten LOB-Modus oder legen Sie die Aufgabeneinstellung `InlineLobMaxSize` so fest, dass der Inline-LOB-Modus verwendet wird.
+ Wenn Sie eine Quelldatenbank in Microsoft SQL Server in einer Replikationsaufgabe verwenden, werden die Definitionen von SQL Server Replication Publisher nicht entfernt, falls Sie die Aufgabe entfernen. Ein Microsoft SQL Server-Systemadministrator muss diese Definitionen von Microsoft SQL Server löschen.
+ Die Migration von Daten aus schemagebundenen Daten und non-schema-bound Ansichten wird nur für Aufgaben mit Volllast unterstützt. 
+ Das Umbenennen von Tabellen mit sp\$1rename wird nicht unterstützt (z. B. `sp_rename 'Sales.SalesRegion', 'SalesReg;)`
+ Das Umbenennen von Spalten mit sp\$1rename wird nicht unterstützt (z. B. `sp_rename 'Sales.Sales.Region', 'RegID', 'COLUMN';`)
+ AWS DMS unterstützt keine Änderungsverarbeitung zum Setzen und Löschen von Spaltenstandardwerten (unter Verwendung der `ALTER COLUMN SET DEFAULT` Klausel mit Anweisungen). `ALTER TABLE`
+ AWS DMS unterstützt keine Änderungsverarbeitung zum Festlegen der NULL-Zulässigkeit von Spalten (Verwendung der `ALTER COLUMN [SET|DROP] NOT NULL` Klausel mit `ALTER TABLE` Anweisungen).
+ Bei SQL Server 2012 und SQL Server 2014 kann die Verteilungsdatenbank bei Verwendung der DMS-Replikation mit Verfügbarkeitsgruppen nicht in einer Verfügbarkeitsgruppe platziert werden. SQL 2016 unterstützt das Platzieren der Verteilungsdatenbank in einer Verfügbarkeitsgruppe, mit Ausnahme von Verteilungsdatenbanken, die in Merge-, bidirektionalen oder peer-to-peer Replikationstopologien verwendet werden.
+ Unterstützt bei partitionierten Tabellen AWS DMS keine unterschiedlichen Datenkomprimierungseinstellungen für jede Partition.
+ Wenn Sie einen Wert in räumliche SQL-Server-Datentypen (GEOGRAPHY und GEOMETRY) einfügen, können Sie entweder die Eigenschaft Spatial Reference System Identifier (SRID) ignorieren oder eine andere Zahl angeben. AWS DMS Ersetzt beim Replizieren von Tabellen mit räumlichen Datentypen die SRID durch die Standard-SRID (0 für GEOMETRY und 4326 für GEOGRAPHY).
+ Wenn Ihre Datenbank nicht für MS-REPLIKATION oder MS-CDC konfiguriert ist, können Sie trotzdem Tabellen erfassen, die keinen Primärschlüssel haben, es werden jedoch nur DML-Ereignisse erfasst. INSERT/DELETE Die Ereignisse UPDATE und TRUNCATE TABLE werden ignoriert.
+ Columnstore-Indizes werden nicht unterstützt.
+ Speicheroptimierte Tabellen (unter Verwendung von In-Memory OLTP) werden nicht unterstützt.
+ Wenn Sie eine Tabelle mit einem Primärschlüssel replizieren, der aus mehreren Spalten besteht, wird das Aktualisieren der Primärschlüsselspalten während eines Volllastvorgangs nicht unterstützt.
+ Verzögerte Haltbarkeit wird nicht unterstützt.
+ Aufgrund der Art und Weise, wie RDS Backups durchführt, funktioniert die Endpunkteinstellung `readBackupOnly=true` (zusätzliches Verbindungsattribut) auf Quell-Instances in RDS für SQL Server nicht.
+ `EXCLUSIVE_AUTOMATIC_TRUNCATION` funktioniert auf Quell-Instances in Amazon RDS SQL Server nicht, da RDS-Benutzer keinen Zugriff zum Ausführen der gespeicherten SQL-Server-Prozedur `sp_repldone` haben.
+ AWS DMS erfasst keine Befehle, die gekürzt werden.
+ AWS DMS unterstützt keine Replikation von Datenbanken mit aktivierter beschleunigter Datenbankwiederherstellung (ADR).
+ AWS DMS unterstützt nicht die Erfassung von Anweisungen in Data Definition Language (DDL) und Data Manipulation Language (DML) innerhalb einer einzigen Transaktion.
+ AWS DMS unterstützt nicht die Replikation von Data-Tier-Anwendungspaketen (DACPAC).
+ UPDATE-Anweisungen, die Primärschlüssel oder eindeutige Indizes beinhalten und mehrere Datenzeilen aktualisieren, können zu Konflikten führen, wenn Sie Änderungen auf die Zieldatenbank anwenden. Dies kann beispielsweise der Fall sein, wenn die Zieldatenbank Aktualisierungen als INSERT- und DELETE-Anweisungen anstelle einer einzigen UPDATE-Anweisung anwendet. Im stapeloptimierten Anwendungsmodus wird die Tabelle möglicherweise ignoriert. Im transaktionalen Anwendungsmodus kann die UPDATE-Operation zu Verstößen gegen die Einschränkung führen. Laden Sie die entsprechende Tabelle neu, um dieses Problem zu vermeiden. Suchen Sie alternativ die problematischen Datensätze in der Kontrolltabelle „Ausnahmen anwenden“ (`dmslogs.awsdms_apply_exceptions`) und bearbeiten Sie sie manuell in der Zieldatenbank. Weitere Informationen finden Sie unter [Einstellungen für die Optimierung der Verarbeitung von Änderungen](CHAP_Tasks.CustomizingTasks.TaskSettings.ChangeProcessingTuning.md).
+ AWS DMS unterstützt nicht die Replikation von Tabellen und Schemas, bei denen der Name ein Sonderzeichen aus dem folgenden Satz enthält.

  `\\ -- \n \" \b \r ' \t ;` 
+ Datenmaskierung wird nicht unterstützt. AWS DMS migriert maskierte Daten ohne Maskierung.
+ AWS DMS repliziert bis zu 32.767 Tabellen mit Primärschlüsseln und bis zu 1.000 Spalten für jede Tabelle. Das liegt daran, dass für jede replizierte Tabelle ein Artikel zur SQL Server-Replikation AWS DMS erstellt wird und dass für Artikel zur SQL Server-Replikation diese Einschränkungen gelten.
+ Wenn Sie die Erfassung von Datenänderungen (Change Data Capture, CDC) verwenden, müssen Sie alle Spalten, die einen eindeutigen Index bilden, als `NOT NULL` definieren. Wenn diese Anforderung nicht erfüllt ist, führt dies zum SQL-Server-Systemfehler 22838. 
+ Sie können Ereignisse verlieren, wenn SQL Server vom aktiven Transaktionsprotokoll in das Sicherungsprotokoll archiviert oder sie aus dem aktiven Transaktionsprotokoll kürzt.

Beim Zugriff auf die Sicherungstransaktionsprotokolle gelten die folgenden Einschränkungen:
+ Verschlüsselte Sicherungen werden nicht unterstützt.
+ Sicherungen, die unter einer URL oder unter Windows Azure gespeichert sind, werden nicht unterstützt.
+ AWS DMS unterstützt nicht die direkte Verarbeitung von Transaktionsprotokollsicherungen auf Dateiebene aus alternativen freigegebenen Ordnern.
+  AWS DMS Unterstützt für andere Cloud SQL Server-Quellen als Amazon RDS for Microsoft SQL Server die fortlaufende Replikation (CDC) nur mit dem aktiven Transaktionsprotokoll. Sie können nicht das Backup-Protokoll für CDC verwenden. Sie können Ereignisse verlieren, wenn der SQL-Server sie vom aktiven Transaktionsprotokoll in das Backup-Protokoll archiviert oder sie aus dem aktiven Transaktionsprotokoll kürzt, bevor DMS sie lesen kann. 
+ Für Amazon RDS for Microsoft SQL Server Server-Quellen unterstützen AWS DMS 3.5.2 und niedriger die fortlaufende Replikation (CDC) nur mit dem aktiven Transaktionsprotokoll, da DMS mit CDC nicht auf das Backup-Protokoll zugreifen kann. Sie können Ereignisse verlieren, wenn RDS for SQL Server sie aus dem aktiven Transaktionsprotokoll in das Backup-Protokoll archiviert oder sie aus dem aktiven Transaktionslog kürzt, bevor DMS sie lesen kann. Diese Einschränkung gilt nicht für AWS DMS Version 3.5.3 und höher.
+ AWS DMS unterstützt CDC für Amazon RDS Proxy for SQL Server nicht als Quelle.
+ Wenn die SQL Server-Quelle während einer Aufgabe mit vollständigem Laden nicht verfügbar ist, wird die Aufgabe nach mehreren Verbindungsversuchen AWS DMS möglicherweise als abgeschlossen markiert, obwohl die Datenmigration noch unvollständig ist. In diesem Szenario enthalten die Zieltabellen nur die Datensätze, die vor dem Verbindungsverlust migriert wurden, was möglicherweise zu Dateninkonsistenzen zwischen Quell- und Zielsystem führen kann. Um die Vollständigkeit der Daten sicherzustellen, müssen Sie entweder die Aufgabe zum vollständigen Laden vollständig neu starten oder die spezifischen Tabellen, die von der Verbindungsunterbrechung betroffen sind, neu laden.

## Berechtigungen für SQL Server-Aufgaben
<a name="CHAP_Source.SQLServer.Permissions"></a>

**Topics**
+ [Berechtigungen für reine Volllastaufgaben](#CHAP_Source.SQLServer.Permissions.FullLoad)
+ [Berechtigungen für Aufgaben mit laufender Replikation](#CHAP_Source.SQLServer.Permissions.Ongoing)

### Berechtigungen für reine Volllastaufgaben
<a name="CHAP_Source.SQLServer.Permissions.FullLoad"></a>

Die folgenden Berechtigungen sind zum Ausführen reiner Volllastaufgaben erforderlich. Beachten Sie, dass AWS DMS das Login `dms_user` nicht erstellt. Informationen zum Erstellen eines Anmeldenamens für SQL Server finden Sie unter [Erstellen eines Datenbankbenutzers](https://learn.microsoft.com/en-us/sql/relational-databases/security/authentication-access/create-a-database-user?view=sql-server-ver16) *in der Dokumentation von Microsoft*.

```
USE db_name;
                
                CREATE USER dms_user FOR LOGIN dms_user; 
                ALTER ROLE [db_datareader] ADD MEMBER dms_user; 
                GRANT VIEW DATABASE STATE to dms_user;
                GRANT VIEW DEFINITION to dms_user;
                
                USE master;
                
                GRANT VIEW SERVER STATE TO dms_user;
```

### Berechtigungen für Aufgaben mit laufender Replikation
<a name="CHAP_Source.SQLServer.Permissions.Ongoing"></a>

Selbstverwaltete SQL Server-Instanzen können für die laufende Replikation mithilfe von DMS mit oder ohne Verwendung der `sysadmin` Rolle konfiguriert werden. Stellen Sie bei SQL Server-Instanzen, bei denen Sie die `sysadmin` Rolle nicht gewähren können, sicher, dass der DMS-Benutzer über die im Folgenden beschriebenen Rechte verfügt.

**Richten Sie Berechtigungen für die laufende Replikation aus einer selbstverwalteten SQL Server-Datenbank ein**

1. Erstellen Sie ein neues SQL Server-Konto mit Kennwortauthentifizierung mithilfe von SQL Server Management Studio (SSMS) oder wie zuvor beschrieben[Berechtigungen für reine Volllastaufgaben](#CHAP_Source.SQLServer.Permissions.FullLoad), beispielsweise. `self_managed_user`

1. Führen Sie die folgenden `GRANT` Befehle aus: 

   ```
   GRANT VIEW SERVER STATE TO self_managed_user;
   
   USE msdb;
       GRANT SELECT ON msdb.dbo.backupset TO self_managed_user;
       GRANT SELECT ON msdb.dbo.backupmediafamily TO self_managed_user;
       GRANT SELECT ON msdb.dbo.backupfile TO self_managed_user;
       
   USE db_name;
       CREATE USER self_managed_user FOR LOGIN self_managed_user;
       ALTER ROLE [db_owner] ADD MEMBER self_managed_user;
       GRANT VIEW DEFINITION to self_managed_user;
   ```

1. Zusätzlich zu den oben genannten Berechtigungen benötigt der Benutzer eine der folgenden Berechtigungen:
   + Der Benutzer muss Mitglied der `sysadmin` festen Serverrolle sein
   + Konfigurationen und Berechtigungen wie unter [Einrichtung einer laufenden Replikation auf einem SQL-Server in einer Availability-Group-Umgebung: Ohne Sysadmin-Rolle](CHAP_Source.SQLServer.CDC.md#CHAP_SupportScripts.SQLServer.ag) oder beschrieben[Einrichten der laufenden Replikation auf einer eigenständigen SQL-Server-Quelle: Ohne Sysadmin-Rolle](CHAP_Source.SQLServer.CDC.md#CHAP_SupportScripts.SQLServer.standalone), abhängig von Ihrer Quellkonfiguration.

#### Richten Sie Berechtigungen für die laufende Replikation aus einer Cloud-SQL Server-Datenbank ein
<a name="CHAP_Source.SQLServer.Permissions.Cloud"></a>

Eine in der Cloud gehostete SQL Server-Instance ist eine Instance, die auf Amazon RDS for Microsoft SQL Server, einer verwalteten Azure SQL Instance oder einer anderen verwalteten Cloud-SQL Server-Instanz läuft, die von DMS unterstützt wird.

Erstellen Sie ein neues SQL Server-Konto mit Kennwortauthentifizierung mithilfe von SQL Server Management Studio (SSMS) oder wie zuvor beschrieben[Berechtigungen für reine Volllastaufgaben](#CHAP_Source.SQLServer.Permissions.FullLoad), z. B. `rds_user`

Führen Sie die folgenden Befehle zum Erteilen der Berechtigungen aus.

```
GRANT VIEW SERVER STATE TO rds_user;
```

Für Amazon RDS for Microsoft SQL Server Server-Quellen unterstützt DMS-Version 3.5.3 und höher das Lesen aus Transaktionsprotokoll-Backups. Um sicherzustellen, dass DMS auf die Protokollsicherungen zugreifen kann, müssen Sie zusätzlich zu den oben genannten Rechten entweder `master` Benutzerrechte oder die folgenden Rechte für eine RDS-SQL-Server-Quelle gewähren:

```
USE msdb;
    GRANT EXEC ON msdb.dbo.rds_dms_tlog_download TO rds_user;
    GRANT EXEC ON msdb.dbo.rds_dms_tlog_read TO rds_user;
    GRANT EXEC ON msdb.dbo.rds_dms_tlog_list_current_lsn TO rds_user;
    GRANT EXEC ON msdb.dbo.rds_task_status TO rds_user;
    
USE db_name;
    CREATE USER rds_user FOR LOGIN rds_user;
    ALTER ROLE [db_owner] ADD MEMBER rds_user;
    GRANT VIEW DEFINITION to rds_user;
```

Gewähren Sie für Amazon Azure SQL Managed Instances die folgenden Rechte:

```
GRANT SELECT ON msdb.dbo.backupset TO rds_user;
GRANT SELECT ON msdb.dbo.backupmediafamily TO rds_user;
GRANT SELECT ON msdb.dbo.backupfile TO rds_user;
```

## Voraussetzungen für die Verwendung der laufenden Replikation (CDC) von einer SQL-Server-Quelle aus
<a name="CHAP_Source.SQLServer.Prerequisites"></a>

Sie können die laufende Replikation (Erfassung von Datenänderungen (Change Data Capture, CDC)) für eine selbstverwaltete SQL-Server-Datenbank On-Premises oder in Amazon EC2 oder für eine Cloud-Datenbank wie Amazon RDS oder eine von Microsoft Azure SQL verwaltete Instance verwenden.

Die folgenden Anforderungen gelten speziell für die Verwendung der fortlaufenden Replikation mit einer SQL Server-Datenbank als Quelle für AWS DMS:
+ SQL Server muss für vollständige Sicherungen konfiguriert werden und vor Beginn der Datenreplikation muss eine Sicherung ausgeführt werden.
+ Das Wiederherstellungsmodell muss auf **Bulk logged** (Massenprotokollierung) oder **Full** (Vollständig) eingestellt sein.
+ Die SQL Server-Sicherung auf mehrere Datenträger wird nicht unterstützt. Wenn das Backup so definiert ist, dass das Datenbank-Backup in mehrere Dateien auf verschiedenen Festplatten geschrieben wird, AWS DMS können die Daten nicht gelesen werden und die AWS DMS Aufgabe schlägt fehl.
+ Bei selbstverwalteten SQL-Server-Quellen werden Definitionen von SQL Server Replication Publisher für die in einer DMS-CDC-Aufgabe verwendete Quelle nicht entfernt, wenn die Aufgabe entfernt wird. Bei selbstverwalteten Quellen muss ein SQL Server-Systemadministrator diese Definitionen aus SQL Server löschen.
+ Während des CDC AWS DMS muss nach Sicherungen des SQL Server-Transaktionsprotokolls gesucht werden, um Änderungen lesen zu können. AWS DMS unterstützt keine SQL Server-Transaktionsprotokollsicherungen, die mit Sicherungssoftware von Drittanbietern erstellt wurden und *nicht* im systemeigenen Format vorliegen. Um Backups des Transaktionsprotokolls zu unterstützen, die *im nativen Format vorliegen* und mit Backup-Software von Drittanbietern erstellt wurden, fügen Sie dem Quellendpunkt das Verbindungsattribut `use3rdPartyBackupDevice=Y` hinzu.
+ Beachten Sie bei selbstverwalteten SQL Server-Quellen, dass SQL Server Änderungen an neu erstellten Tabellen erst erfasst, nachdem diese veröffentlicht wurden. AWS DMS Verwaltet die Erstellung der Publikation, wenn Tabellen zu einer SQL Server-Quelle hinzugefügt werden. Dieser Vorgang kann allerdings einige Minuten dauern. Während dieser Verzögerung vorgenommene Operationen in neu erstellten Tabellen werden nicht erfasst oder in der Zieldatenbank repliziert. 
+ AWS DMS Für die Erfassung von Änderungsdaten muss die vollständige Transaktionsprotokollierung in SQL Server aktiviert sein. Um die vollständige Transaktionsprotokollierung in SQL Server zu aktivieren, müssen Sie entweder MS-REPLICATION oder CHANGE DATA CAPTURE (CDC) aktivieren.
+ SQL-Server-*tlog*-Einträge werden erst für die Wiederverwendung markiert, wenn der MS-CDC-Erfassungsauftrag diese Änderungen verarbeitet.
+ CDC-Vorgänge werden auf speicheroptimierten Tabellen nicht unterstützt. Diese Einschränkung gilt für SQL Server 2014 (erstmalige Einführung des Features) und höher.
+ AWS DMS Für die Erfassung von Änderungsdaten ist standardmäßig eine Verteilungsdatenbank auf Amazon EC2 oder einem lokalen SQL-Server als Quelle erforderlich. Stellen Sie daher sicher, dass Sie den Verteiler aktiviert haben, während Sie MS Replication für Tabellen mit Primärschlüsseln konfigurieren.

## Unterstützte Komprimierungsmethoden für SQL Server
<a name="CHAP_Source.SQLServer.Compression"></a>

Beachten Sie in Bezug auf die Unterstützung von SQL-Server-Komprimierungsmethoden in AWS DMS Folgendes:
+ AWS DMS unterstützt die Row/Page Komprimierung in SQL Server Version 2008 und höher.
+ AWS DMS unterstützt das Vardecimal-Speicherformat nicht.
+ AWS DMS unterstützt keine spärlichen Spalten und keine Komprimierung von Spaltenstrukturen.

## Arbeiten mit selbstverwalteten SQL Server-Verfügbarkeitsgruppen AlwaysOn
<a name="CHAP_Source.SQLServer.AlwaysOn"></a>

SQL-Server-AlwaysOn-Verfügbarkeitsgruppen bieten Hochverfügbarkeit und Notfallwiederherstellung als Alternative zur Datenbankspiegelung auf Unternehmensebene. 

In AWS DMS können Sie Änderungen von einem einzelnen primären oder sekundären Verfügbarkeitsgruppenreplikat migrieren.

### Arbeiten mit dem Replikat der primären Verfügbarkeitsgruppe
<a name="CHAP_Source.SQLServer.AlwaysOn.Primary"></a>

 

**Gehen Sie wie folgt vor, um die primäre Verfügbarkeitsgruppe als Quelle in AWS DMS zu verwenden:**

1. Aktivieren Sie die Verteilungsoption für alle SQL-Server-Instances in Ihren Replikaten der Verfügbarkeitsgruppe. Weitere Informationen finden Sie unter [Einrichten der laufenden Replikation auf einer selbstverwalteten SQL-Server-Quelle](CHAP_Source.SQLServer.CDC.md#CHAP_Source.SQLServer.CDC.MSCDC).

1. Öffnen Sie in der AWS DMS Konsole die Einstellungen für die SQL Server-Quelldatenbank. Geben Sie für **Servername** den Domain Name Service (DNS)-Namen oder die IP-Adresse ein, der/die für den Verfügbarkeitsgruppen-Listener konfiguriert wurde. 

Wenn Sie eine AWS DMS Aufgabe zum ersten Mal starten, kann es länger als gewöhnlich dauern, bis sie gestartet wird. Das liegt daran, dass die Erstellung der Tabellenartikel durch den Verfügbarkeitsgruppenserver dupliziert wird. 

### Arbeiten mit dem Replikat einer sekundären Verfügbarkeitsgruppe
<a name="CHAP_Source.SQLServer.AlwaysOn.Secondary"></a>

**Gehen Sie wie folgt vor, um eine sekundäre Verfügbarkeitsgruppe als Quelle für zu verwenden: AWS DMS**

1. Verwenden Sie für die Verbindung zu einzelnen Replikaten dieselben Anmeldeinformationen wie für den Benutzer des AWS DMS Quellendpunkts.

1. Stellen Sie sicher, dass Ihre AWS DMS Replikationsinstanz DNS-Namen für alle vorhandenen Replikate auflösen und eine Verbindung zu ihnen herstellen kann. Sie können die folgende SQL-Abfrage verwenden, um DNS-Namen für alle Ihre Replikate abzurufen.

   ```
   select ar.replica_server_name, ar.endpoint_url from sys.availability_replicas ar
   JOIN sys.availability_databases_cluster adc
   ON adc.group_id = ar.group_id AND adc.database_name = '<source_database_name>';
   ```

1. Wenn Sie den Quellendpunkt erstellen, geben Sie den DNS-Namen des Verfügbarkeitsgruppen-Listeners als **Servername** des Endpunkts oder als **Serveradresse** des Endpunkt-Secrets an. Weitere Informationen zu Verfügbarkeitsgruppen-Listenern finden Sie unter [What is an availability group listener?](https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/availability-group-listener-overview?view=sql-server-ver15) in der Dokumentation zu SQL Server.

   Sie können entweder einen öffentlichen DNS-Server oder einen On-Premises-DNS-Server verwenden, um den Verfügbarkeitsgruppen-Listener, das primäre Replikat und die sekundären Replikate aufzulösen. Wenn Sie einen On-Premises-DNS-Server verwenden möchten, konfigurieren Sie den Amazon Route 53 Resolver. Weitere Informationen finden Sie unter [Verwenden Ihres eigenen Vor-Ort-Nameservers](CHAP_BestPractices.md#CHAP_BestPractices.Rte53DNSResolver).

1. Fügen Sie Ihrem Quellendpunkt die folgenden zusätzlichen Verbindungsattribute hinzu.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/dms/latest/userguide/CHAP_Source.SQLServer.html)

1. Aktivieren Sie die Verteilungsoption für alle Replikate in Ihrer Verfügbarkeitsgruppe. Fügen Sie der Verteilerliste alle Knoten hinzu. Weitere Informationen finden Sie unter [So richten Sie die Verteilung ein](CHAP_Source.SQLServer.CDC.md#CHAP_Source.SQLServer.CDC.MSCDC.Setup).

1. Führen Sie die folgende Abfrage für das primäre Lese-/Schreibreplikat aus, um die Veröffentlichung Ihrer Datenbank zu ermöglichen. Sie führen diese Abfrage nur einmal für Ihre Datenbank aus. 

   ```
   sp_replicationdboption @dbname = N'<source DB name>', @optname = N'publish', @value = N'true';
   ```



#### Einschränkungen
<a name="CHAP_Source.SQLServer.AlwaysOn.Secondary.limitations"></a>

Im Folgenden werden Einschränkungen für die Arbeit mit einem Replikat einer sekundären Verfügbarkeitsgruppe aufgeführt:
+ AWS DMS unterstützt Safeguard nicht, wenn Sie ein schreibgeschütztes Verfügbarkeitsgruppenreplikat als Quelle verwenden. Weitere Informationen finden Sie unter [Endpunkteinstellungen bei Verwendung von SQL Server als Quelle für AWS DMS](#CHAP_Source.SQLServer.ConnectionAttrib).
+ AWS DMS unterstützt das `setUpMsCdcForTables` zusätzliche Verbindungsattribut nicht, wenn ein schreibgeschütztes Verfügbarkeitsgruppenreplikat als Quelle verwendet wird. Weitere Informationen finden Sie unter [Endpunkteinstellungen bei Verwendung von SQL Server als Quelle für AWS DMS](#CHAP_Source.SQLServer.ConnectionAttrib).
+ AWS DMS kann ab Version 3.4.7 ein selbstverwaltetes sekundäres Verfügbarkeitsgruppenreplikat als Quelldatenbank für die laufende Replikation (Change Data Capture, CDC) verwenden. Multi-AZ-Lesereplikate in Cloud SQL Server werden nicht unterstützt. Wenn Sie frühere Versionen von verwenden, stellen Sie sicher AWS DMS, dass Sie das Replikat der primären Verfügbarkeitsgruppe als Quelldatenbank für CDC verwenden.

#### Failover auf andere Knoten
<a name="CHAP_Source.SQLServer.AlwaysOn.Secondary.failover"></a>

Wenn Sie das `ApplicationIntent` zusätzliche Verbindungsattribut für Ihren Endpunkt auf festlegen`ReadOnly`, stellt Ihre AWS DMS Aufgabe eine Verbindung mit dem schreibgeschützten Knoten mit der höchsten Nur-Lese-Routing-Priorität her. Anschließend erfolgt ein Failover zu anderen schreibgeschützten Knoten in Ihrer Verfügbarkeitsgruppe, wenn der schreibgeschützte Knoten mit der höchsten Priorität nicht verfügbar ist. Wenn Sie dies nicht festlegen`ApplicationIntent`, stellt Ihre AWS DMS Aufgabe nur eine Verbindung zum primären Knoten (Lese-/Schreibknoten) in Ihrer Verfügbarkeitsgruppe her.

## Endpunkteinstellungen bei Verwendung von SQL Server als Quelle für AWS DMS
<a name="CHAP_Source.SQLServer.ConnectionAttrib"></a>

Sie können Endpunkteinstellungen, ähnlich wie zusätzliche Verbindungsattribute, zum Konfigurieren Ihrer SQL-Server-Quelldatenbank verwenden. Sie geben die Einstellungen an, wenn Sie den Quellendpunkt mithilfe der AWS DMS Konsole oder mithilfe des `create-endpoint` Befehls in [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html), mit der `--microsoft-sql-server-settings '{"EndpointSetting": "value", ...}'` JSON-Syntax erstellen.

Die folgende Tabelle zeigt die Endpunkteinstellungen, die Sie mit SQL Server als Quelle verwenden können.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/dms/latest/userguide/CHAP_Source.SQLServer.html)

## Quelldatentypen für SQL Server
<a name="CHAP_Source.SQLServer.DataTypes"></a>

Die Datenmigration, die SQL Server als Quelle verwendet, AWS DMS unterstützt die meisten SQL Server-Datentypen. Die folgende Tabelle zeigt die SQL Server-Quelldatentypen, die bei der Verwendung unterstützt werden, AWS DMS sowie die Standardzuweisung von AWS DMS Datentypen.

Weitere Informationen zum Anzeigen des Datentyps, der im Ziel zugewiesen ist, finden Sie im Abschnitt für den Zielendpunkt, den Sie verwenden.

Weitere Informationen zu AWS DMS Datentypen finden Sie unter[Datentypen für den AWS Database Migration Service](CHAP_Reference.DataTypes.md).


|  SQL Server-Datentypen  |  AWS DMS Datentypen  | 
| --- | --- | 
|  BIGINT  |  INT8  | 
|  BIT  |  BOOLEAN  | 
|  DECIMAL  |  NUMERIC  | 
|  INT  |  INT4  | 
|  MONEY  |  NUMERIC  | 
|  NUMERIC (p,s)  |  NUMERIC   | 
|  SMALLINT  |  INT2  | 
|  SMALLMONEY  |  NUMERIC  | 
|  TINYINT  |  UINT1  | 
|  REAL  |  REAL4  | 
|  FLOAT  |  REAL8  | 
|  DATETIME  |  DATETIME  | 
|  DATETIME2 (SQL Server 2008 und höher)  |  DATETIME  | 
|  SMALLDATETIME  |  DATETIME  | 
|  DATE  |  DATE  | 
|  TIME  |  TIME  | 
|  DATETIMEOFFSET  |  WSTRING  | 
|  CHAR  |  STRING  | 
|  VARCHAR  |  STRING  | 
|  VARCHAR (max)  |  CLOB TEXT Um diesen Datentyp mit zu verwenden AWS DMS, müssen Sie die Verwendung von CLOB-Datentypen für eine bestimmte Aufgabe aktivieren. Bei SQL Server-Tabellen werden die LOB-Spalten im Ziel auch für UPDATE-Anweisungen aktualisiert, die den Wert der LOB-Spalte in SQL Server nicht ändern. AWS DMS   AWS DMS Unterstützt während CDC CLOB-Datentypen nur in Tabellen, die einen Primärschlüssel enthalten.  | 
|  NCHAR  |  WSTRING  | 
|  NVARCHAR (Länge)  |  WSTRING  | 
|  NVARCHAR (max)  |  NCLOB NTEXT Um diesen Datentyp mit zu verwenden AWS DMS, müssen Sie die Verwendung von SupportLobs für eine bestimmte Aufgabe aktivieren. Weitere Informationen zum Aktivieren von Lob-Unterstützung finden Sie unter [Einstellung der LOB-Unterstützung für Quelldatenbanken in einer Aufgabe AWS DMS](CHAP_Tasks.LOBSupport.md).  Bei SQL Server-Tabellen werden die LOB-Spalten im Ziel auch für UPDATE-Anweisungen aktualisiert, die den Wert der LOB-Spalte in SQL Server nicht ändern. AWS DMS   AWS DMS Unterstützt während CDC CLOB-Datentypen nur in Tabellen, die einen Primärschlüssel enthalten.  | 
|  BINARY  |  BYTES  | 
|  VARBINARY  |  BYTES  | 
|  VARBINARY (max)  |  BLOB IMAGE Bei SQL Server-Tabellen werden die LOB-Spalten im Ziel auch für UPDATE-Anweisungen aktualisiert, die den Wert der LOB-Spalte in SQL Server nicht ändern. AWS DMS  Um diesen Datentyp mit zu verwenden AWS DMS, müssen Sie die Verwendung von BLOB-Datentypen für eine bestimmte Aufgabe aktivieren. AWS DMS unterstützt BLOB-Datentypen nur in Tabellen, die einen Primärschlüssel enthalten.  | 
|  TIMESTAMP (ZEITSTEMPEL)  |  BYTES  | 
|  UNIQUEIDENTIFIER  |  STRING  | 
|  HIERARCHYID   |  Verwenden Sie HIERARCHYID bei der Replikation von Daten auf einem SQL Server-Zielendpunkt. Verwenden Sie WSTRING (250) bei der Replikation auf allen anderen Zielendpunkten.  | 
|  XML  |  NCLOB  AWS DMS Aktualisiert bei SQL Server-Tabellen die LOB-Spalten im Ziel auch für UPDATE-Anweisungen, die den Wert der LOB-Spalte in SQL Server nicht ändern. Um diesen Datentyp mit zu verwenden AWS DMS, müssen Sie die Verwendung von NCLOB-Datentypen für eine bestimmte Aufgabe aktivieren.  AWS DMS Unterstützt während CDC NCLOB-Datentypen nur in Tabellen, die einen Primärschlüssel enthalten.  | 
|  GEOMETRY  |  Verwenden Sie GEOMETRY bei der Replikation auf Zielendpunkte, die diesen Datentyp unterstützen. Verwenden Sie CLOB bei der Replikation auf Zielendpunkte, die diesen Datentyp nicht unterstützen.  | 
|  GEOGRAPHY  |  Verwenden Sie GEOGRAPHY bei der Replikation auf Zielendpunkte, die diesen Datentyp unterstützen. Verwenden Sie CLOB bei der Replikation auf Zielendpunkte, die diesen Datentyp nicht unterstützen.  | 

AWS DMS unterstützt keine Tabellen, die Felder mit den folgenden Datentypen enthalten. 
+ CURSOR
+ SQL\$1VARIANT
+ TABLE

**Anmerkung**  
Benutzerdefinierte Datentypen werden abhängig von dem Typ, auf dem sie basieren, unterstützt. Beispielsweise wird ein benutzerdefinierter Datentyp basierend auf DATETIME als Datentyp DATETIME verarbeitet.

# Erfassung von Datenänderungen für die laufende Replikation von SQL Server
<a name="CHAP_Source.SQLServer.CDC"></a>

In diesem Thema wird beschrieben, wie Sie die CDC-Replikation auf einer SQL Server-Quelle einrichten.

**Topics**
+ [Erfassen von Datenänderungen für selbstverwaltete SQL-Server-Quellen (On-Premises oder in Amazon EC2)](#CHAP_Source.SQLServer.CDC.Selfmanaged)
+ [Einrichten der laufenden Replikation auf einer SQL-Server-DB-Instance in der Cloud](#CHAP_Source.SQLServer.Configuration)

## Erfassen von Datenänderungen für selbstverwaltete SQL-Server-Quellen (On-Premises oder in Amazon EC2)
<a name="CHAP_Source.SQLServer.CDC.Selfmanaged"></a>

Damit Änderungen aus einer Quelldatenbank in Microsoft SQL Server erfasst werden, stellen Sie sicher, dass die Datenbank für vollständige Backups konfiguriert ist. Konfigurieren Sie die Datenbank entweder im vollständigen Wiederherstellungsmodus oder im massenprotokollierten Modus.

 AWS DMS Verwendet für eine selbstverwaltete SQL Server-Quelle Folgendes:

**MS-Replication**  
Zum Erfassen von Änderungen für Tabellen mit Primärschlüsseln. Sie können dies automatisch konfigurieren, indem Sie dem AWS DMS Endpunktbenutzer auf der SQL Server-Quellinstanz Sysadmin-Rechte gewähren. Oder Sie können die Schritte in diesem Abschnitt befolgen, um die Quelle vorzubereiten und einen Benutzer zu verwenden, der keine Sysadmin-Rechte für den Endpunkt hat. AWS DMS 

**MS-CDC**  
Zum Erfassen von Änderungen für Tabellen ohne Primärschlüssel. Aktivieren Sie MS-CDC auf Datenbankebene und für alle Tabellen einzeln.

Beim Einrichten einer SQL-Server-Datenbank für die laufende Replikation (CDC) können Sie einen der folgenden Schritte ausführen:
+ Einrichten der fortlaufenden Replikation mit der Sysadmin-Rolle.
+ Einrichten der fortlaufenden Replikation ohne Verwendung der Sysadmin-Rolle.

**Anmerkung**  
Sie können das folgende Skript verwenden, um alle Tabellen ohne Primärschlüssel oder eindeutigen Schlüssel zu finden:  

```
USE [DBname]
SELECT SCHEMA_NAME(schema_id) AS schema_name, name AS table_name
FROM sys.tables
WHERE OBJECTPROPERTY(object_id, 'TableHasPrimaryKey') = 0
        AND  OBJECTPROPERTY(object_id, 'TableHasUniqueCnst') = 0
ORDER BY schema_name, table_name;
```

### Einrichten der laufenden Replikation auf einer selbstverwalteten SQL-Server-Quelle
<a name="CHAP_Source.SQLServer.CDC.MSCDC"></a>

Dieser Abschnitt enthält Informationen zum Einrichten der laufenden Replikation auf einer selbstverwalteten SQL-Server-Quelle mit oder ohne die Sysadmin-Rolle.

**Topics**
+ [Einrichten der laufenden Replikation auf einer selbstverwalteten SQL-Server-Quelle: Verwenden der Sysadmin-Rolle](#CHAP_Source.SQLServer.CDC.MSCDC.Sysadmin)
+ [Einrichten der laufenden Replikation auf einer eigenständigen SQL-Server-Quelle: Ohne Sysadmin-Rolle](#CHAP_SupportScripts.SQLServer.standalone)
+ [Einrichtung einer laufenden Replikation auf einem SQL-Server in einer Availability-Group-Umgebung: Ohne Sysadmin-Rolle](#CHAP_SupportScripts.SQLServer.ag)

#### Einrichten der laufenden Replikation auf einer selbstverwalteten SQL-Server-Quelle: Verwenden der Sysadmin-Rolle
<a name="CHAP_Source.SQLServer.CDC.MSCDC.Sysadmin"></a>

AWS DMS Bei der laufenden Replikation für SQL Server wird die systemeigene SQL Server-Replikation für Tabellen mit Primärschlüsseln und die Change Data Capture (CDC) für Tabellen ohne Primärschlüssel verwendet.

Bevor Sie die laufende Replikation einrichten, informieren Sie sich unter [Voraussetzungen für die Verwendung der laufenden Replikation (CDC) von einer SQL-Server-Quelle aus](CHAP_Source.SQLServer.md#CHAP_Source.SQLServer.Prerequisites). 

Bei Tabellen mit Primärschlüsseln AWS DMS kann im Allgemeinen die erforderlichen Artefakte auf der Quelle konfiguriert werden. Bei selbstverwalteten SQL-Server-Quell-Instances müssen Sie die SQL-Server-Verteilung jedoch zunächst manuell konfigurieren. Danach können AWS DMS Quellbenutzer mit Sysadmin-Rechten automatisch die Publikation für Tabellen mit Primärschlüsseln erstellen.

Um zu überprüfen, ob die Verteilung bereits konfiguriert wurde, führen Sie den folgenden Befehl aus.

```
sp_get_distributor
```

Ist das Ergebnis für die Spaltenverteilung `NULL`, ist die Verteilung nicht konfiguriert. Sie können die Verteilung anhand des folgenden Verfahrens einrichten.<a name="CHAP_Source.SQLServer.CDC.MSCDC.Setup"></a>

**So richten Sie die Verteilung ein**

1. Stellen Sie mithilfe des Tools SQL Server Management Studio (SSMS) eine Verbindung mit der SQL-Server-Quelldatenbank her.

1. Öffnen Sie das Kontextmenü (rechte Maustaste) für den Ordner **Replikation** und wählen Sie die Option **Verteilung konfigurieren**. Der Assistent zum Konfigurieren der Verteilung wird angezeigt. 

1. Befolgen Sie die Anweisungen im Assistenten, um die Standardwerte einzugeben und die Verteilung zu erstellen.<a name="CHAP_Source.SQLServer.CDC.MSCDC.Setup.CDC"></a>

**So richten Sie CDC ein**

AWS DMS Version 3.4.7 und höher kann MS CDC für Ihre Datenbank und alle Ihre Tabellen automatisch einrichten, wenn Sie kein schreibgeschütztes Replikat verwenden. Setzen Sie das ECA `SetUpMsCdcForTables` auf true, um dieses Feature zu verwenden. Hinweise zu finden Sie unter. ECAs [Endpunkteinstellungen](CHAP_Source.SQLServer.md#CHAP_Source.SQLServer.ConnectionAttrib)

Gehen Sie für AWS DMS Versionen vor 3.4.7 oder für ein schreibgeschütztes Replikat als Quelle wie folgt vor:

1. Richten Sie bei Tabellen ohne Primärschlüssel MS-CDC für die Datenbank ein. Verwenden Sie dazu ein Konto, dem die Sysadmin-Rolle zugewiesen ist, und führen Sie den folgenden Befehl aus.

   ```
   use [DBname]
   EXEC sys.sp_cdc_enable_db
   ```

1. Richten Sie anschließend MS-CDC für jede der Quelltabellen ein. Führen Sie die folgende Abfrage für jede Tabelle mit eindeutigen Schlüsseln, aber ohne Primärschlüssel aus, um MS-CDC einzurichten.

   ```
   exec sys.sp_cdc_enable_table
   @source_schema = N'schema_name',
   @source_name = N'table_name',
   @index_name = N'unique_index_name',
   @role_name = NULL,
   @supports_net_changes = 1
   GO
   ```

1. Führen Sie die folgende Abfrage für jede Tabelle ohne Primärschlüssel oder eindeutige Schlüssel aus, um MS-CDC einzurichten.

   ```
   exec sys.sp_cdc_enable_table
   @source_schema = N'schema_name',
   @source_name = N'table_name',
   @role_name = NULL
   GO
   ```

Weitere Informationen zum Einrichten von MS-CDC für bestimmte Tabellen finden Sie in der [ SQL Server-Dokumentation](https://msdn.microsoft.com/en-us/library/cc627369.aspx). 

#### Einrichten der laufenden Replikation auf einer eigenständigen SQL-Server-Quelle: Ohne Sysadmin-Rolle
<a name="CHAP_SupportScripts.SQLServer.standalone"></a>

Dieser Abschnitt beschreibt die Einrichtung der fortlaufenden Replikation für eine eigenständige SQL-Server-Datenbankquelle, für die das Benutzerkonto keine Sysadmin-Berechtigungen benötigt.

**Anmerkung**  
Nachdem Sie die Schritte in diesem Abschnitt ausgeführt haben, hat der DMS-Benutzer, der kein Systemadministrator ist, die Berechtigung, um Folgendes zu tun:  
Lesen der Änderungen aus der Protokolldatei für Online-Transaktionen
Festplattenzugriff zum Lesen von Änderungen aus Transaktionsprotokoll-Backup-Dateien
Hinzufügen oder Ändern der von DMS verwendeten Publikation
Hinzufügen von Artikeln zu der Publikation

1. Richten Sie Microsoft SQL Server für die Replikation ein, wie unter [Erfassung von Datenänderungen für die laufende Replikation von SQL Server](#CHAP_Source.SQLServer.CDC) beschrieben.

1. Aktivieren Sie MS-REPLICATION in der Quelldatenbank. Dies kann entweder manuell oder durch einmaliges Ausführen der Aufgabe als Sysadmin-Benutzer erfolgen.

1. Erstellen Sie das `awsdms`-Schema in der Quelldatenbank mit dem folgenden Skript:

   ```
   use master
   go
   create schema awsdms
   go
   
   
   -- Create the table valued function [awsdms].[split_partition_list] on the Master database, as follows:
   USE [master]
   GO
   
   set ansi_nulls on
   go
   
   set quoted_identifier on
   go
   
   if (object_id('[awsdms].[split_partition_list]','TF')) is not null
   
   drop function [awsdms].[split_partition_list];
   
   go
   
   create function [awsdms].[split_partition_list]
   
   (
   
   @plist varchar(8000), --A delimited list of partitions
   
   @dlm nvarchar(1) --Delimiting character
   
   )
   
   returns @partitionsTable table --Table holding the BIGINT values of the string fragments
   
   (
   
   pid bigint primary key
   
   )   
   
   as
   
   begin
   
   declare @partition_id bigint;
   
   declare @dlm_pos integer;
   
   declare @dlm_len integer;
   
   set @dlm_len = len(@dlm);
   
   while (charindex(@dlm,@plist)>0)
   
   begin
   
   set @dlm_pos = charindex(@dlm,@plist);
   
   set @partition_id = cast( ltrim(rtrim(substring(@plist,1,@dlm_pos-1))) as bigint);
   
   insert into @partitionsTable (pid) values (@partition_id)
   
   set @plist = substring(@plist,@dlm_pos+@dlm_len,len(@plist));
   
   end
   
   set @partition_id = cast (ltrim(rtrim(@plist)) as bigint);
   
   insert into @partitionsTable (pid) values ( @partition_id );
   
   return
   
   end
   
   GO
   ```

1. Erstellen Sie die `[awsdms].[rtm_dump_dblog]`-Prozedur in der Master-Datenbank mit dem folgenden Skript:

   ```
   use [MASTER]
   
   go
   
   if (object_id('[awsdms].[rtm_dump_dblog]','P')) is not null drop procedure [awsdms].[rtm_dump_dblog];
   go
   
   
   set ansi_nulls on
   go
   
   set quoted_identifier on
   GO
   
   
   
   CREATE procedure [awsdms].[rtm_dump_dblog]
   
   (
   
   @start_lsn varchar(32),
   
   @seqno integer,
   
   @filename varchar(260),
   
   @partition_list varchar(8000), -- A comma delimited list: P1,P2,... Pn
   
   @programmed_filtering integer,
   
   @minPartition bigint,
   
   @maxPartition bigint
   
   )
   
   as begin
   
   declare @start_lsn_cmp varchar(32); -- Stands against the GT comparator
   
   SET NOCOUNT ON -- – Disable "rows affected display"
   
   set @start_lsn_cmp = @start_lsn;
   
   if (@start_lsn_cmp) is null
   
   set @start_lsn_cmp = '00000000:00000000:0000';
   
   if (@partition_list is null)
   
   begin
   
   RAISERROR ('Null partition list waspassed',16,1);
   
   return
   
   end
   
   if (@start_lsn) is not null
   
   set @start_lsn = '0x'+@start_lsn;
   
   if (@programmed_filtering=0)
   
   
   
   SELECT
   
   [Current LSN],
   
   [operation],
   
   [Context],
   
   [Transaction ID],
   
   [Transaction Name],
   
   [Begin Time],
   
   [End Time],
   
   [Flag Bits],
   
   [PartitionID],
   
   [Page ID],
   
   [Slot ID],
   
   [RowLog Contents 0],
   
   [Log Record],
   
   [RowLog Contents 1]
   
   FROM
   
   fn_dump_dblog (
   
   @start_lsn, NULL, N'DISK', @seqno, @filename,
   
   default, default, default, default, default, default, default,
   
   default, default, default, default, default, default, default,
   
   default, default, default, default, default, default, default,
   
   default, default, default, default, default, default, default,
   
   default, default, default, default, default, default, default,
   
   default, default, default, default, default, default, default,
   
   default, default, default, default, default, default, default,
   
   default, default, default, default, default, default, default,
   
   default, default, default, default, default, default, default)
   
   where [Current LSN] collate SQL_Latin1_General_CP1_CI_AS > @start_lsn_cmp collate SQL_Latin1_General_CP1_CI_AS
   
   and
   
   (
   
   ( [operation] in ('LOP_BEGIN_XACT','LOP_COMMIT_XACT','LOP_ABORT_XACT') )
   
   or
   
   ( [operation] in ('LOP_INSERT_ROWS','LOP_DELETE_ROWS','LOP_MODIFY_ROW')
   
   and
   
   ( ( [context] in ('LCX_HEAP','LCX_CLUSTERED','LCX_MARK_AS_GHOST') ) or ([context] = 'LCX_TEXT_MIX' and (datalength([RowLog Contents 0]) in (0,1))))
   
   and [PartitionID] in ( select * from master.awsdms.split_partition_list (@partition_list,','))
   
   )
   
   or
   
   ([operation] = 'LOP_HOBT_DDL')
   
   )
   
   
   else
   
   
   SELECT
   
   [Current LSN],
   
   [operation],
   
   [Context],
   
   [Transaction ID],
   
   [Transaction Name],
   
   [Begin Time],
   
   [End Time],
   
   [Flag Bits],
   
   [PartitionID],
   
   [Page ID],
   
   [Slot ID],
   
   [RowLog Contents 0],
   
   [Log Record],
   
   [RowLog Contents 1] -- After Image
   
   FROM
   
   fn_dump_dblog (
   
   @start_lsn, NULL, N'DISK', @seqno, @filename,
   
   default, default, default, default, default, default, default,
   
   default, default, default, default, default, default, default,
   
   default, default, default, default, default, default, default,
   
   default, default, default, default, default, default, default,
   
   default, default, default, default, default, default, default,
   
   default, default, default, default, default, default, default,
   
   default, default, default, default, default, default, default,
   
   default, default, default, default, default, default, default,
   
   default, default, default, default, default, default, default)
   
   where [Current LSN] collate SQL_Latin1_General_CP1_CI_AS > @start_lsn_cmp collate SQL_Latin1_General_CP1_CI_AS
   
   and
   
   (
   
   ( [operation] in ('LOP_BEGIN_XACT','LOP_COMMIT_XACT','LOP_ABORT_XACT') )
   
   or
   
   ( [operation] in ('LOP_INSERT_ROWS','LOP_DELETE_ROWS','LOP_MODIFY_ROW')
   
   and
   
   ( ( [context] in ('LCX_HEAP','LCX_CLUSTERED','LCX_MARK_AS_GHOST') ) or ([context] = 'LCX_TEXT_MIX' and (datalength([RowLog Contents 0]) in (0,1))))
   
   and ([PartitionID] is not null) and ([PartitionID] >= @minPartition and [PartitionID]<=@maxPartition)
   
   )
   
   or
   
   ([operation] = 'LOP_HOBT_DDL')
   
   )
   
   
   
   SET NOCOUNT OFF -- Re-enable "rows affected display"
   
   end
   
   GO
   ```

1. Erstellen Sie das Zertifikat in der Master-Datenbank mit dem folgenden Skript:

   ```
   Use [master]
   Go
   
   CREATE CERTIFICATE [awsdms_rtm_dump_dblog_cert] ENCRYPTION BY PASSWORD = N'@5trongpassword'
   
   WITH SUBJECT = N'Certificate for FN_DUMP_DBLOG Permissions';
   ```

1. Erstellen Sie die Anmeldung von dem Zertifikat mit dem folgenden Skript: 

   ```
   Use [master]
   Go
   
   CREATE LOGIN awsdms_rtm_dump_dblog_login FROM CERTIFICATE [awsdms_rtm_dump_dblog_cert];
   ```

1. Fügen Sie die Anmeldung mithilfe des folgenden Skripts zur Sysadmin-Serverrolle hinzu:

   ```
   ALTER SERVER ROLE [sysadmin] ADD MEMBER [awsdms_rtm_dump_dblog_login];
   ```

1. Fügen Sie die Signatur zu [Master]. [awsdms]. [rtm\$1dump\$1dblog] unter Verwendung des Zertifikats mit dem folgenden Skript hinzu: 

   ```
   Use [master]
   GO
   ADD SIGNATURE
   TO [master].[awsdms].[rtm_dump_dblog] BY CERTIFICATE [awsdms_rtm_dump_dblog_cert] WITH PASSWORD = '@5trongpassword';
   ```
**Anmerkung**  
Wenn Sie die gespeicherte Prozedur neu erstellen, müssen Sie die Signatur erneut hinzufügen.

1. Erstellen Sie [awsdms].[rtm\$1position\$11st\$1timestamp] in der Master-Datenbank mithilfe des folgenden Skripts:

   ```
   use [master]
       if object_id('[awsdms].[rtm_position_1st_timestamp]','P') is not null
       DROP PROCEDURE [awsdms].[rtm_position_1st_timestamp];
       go
       create procedure [awsdms].[rtm_position_1st_timestamp]
       (
       @dbname                sysname,      -- Database name
       @seqno                 integer,      -- Backup set sequence/position number within file
       @filename              varchar(260), -- The backup filename
       @1stTimeStamp          varchar(40)   -- The timestamp to position by
       ) 
       as begin
   
       SET NOCOUNT ON       -- Disable "rows affected display"
   
       declare @firstMatching table
       (
       cLsn varchar(32),
       bTim datetime
       )
   
       declare @sql nvarchar(4000)
       declare @nl                       char(2)
       declare @tb                       char(2)
       declare @fnameVar                 nvarchar(254) = 'NULL'
   
       set @nl  = char(10); -- New line
       set @tb  = char(9)   -- Tab separator
   
       if (@filename is not null)
       set @fnameVar = ''''+@filename +''''
   
       set @sql='use ['+@dbname+'];'+@nl+
       'select top 1 [Current LSN],[Begin Time]'+@nl+
       'FROM fn_dump_dblog (NULL, NULL, NULL, '+ cast(@seqno as varchar(10))+','+ @fnameVar+','+@nl+
       @tb+'default, default, default, default, default, default, default,'+@nl+
       @tb+'default, default, default, default, default, default, default,'+@nl+
       @tb+'default, default, default, default, default, default, default,'+@nl+
       @tb+'default, default, default, default, default, default, default,'+@nl+
       @tb+'default, default, default, default, default, default, default,'+@nl+
       @tb+'default, default, default, default, default, default, default,'+@nl+
       @tb+'default, default, default, default, default, default, default,'+@nl+
       @tb+'default, default, default, default, default, default, default,'+@nl+
       @tb+'default, default, default, default, default, default, default)'+@nl+
       'where operation=''LOP_BEGIN_XACT''' +@nl+
       'and [Begin Time]>= cast('+''''+@1stTimeStamp+''''+' as datetime)'+@nl
   
       --print @sql
       delete from  @firstMatching 
       insert into @firstMatching  exec sp_executesql @sql    -- Get them all
   
       select top 1 cLsn as [matching LSN],convert(varchar,bTim,121) as [matching Timestamp] from @firstMatching;
   
       SET NOCOUNT OFF      -- Re-enable "rows affected display"
   
       end
       GO
   ```

1. Erstellen Sie das Zertifikat in der Master-Datenbank mit dem folgenden Skript:

   ```
   Use [master]
   Go
   CREATE CERTIFICATE [awsdms_rtm_position_1st_timestamp_cert]
   ENCRYPTION BY PASSWORD = '@5trongpassword'
   WITH SUBJECT = N'Certificate for FN_POSITION_1st_TIMESTAMP Permissions';
   ```

1. Erstellen Sie die Anmeldung von dem Zertifikat mit dem folgenden Skript:

   ```
   Use [master]
   Go
   CREATE LOGIN awsdms_rtm_position_1st_timestamp_login FROM CERTIFICATE [awsdms_rtm_position_1st_timestamp_cert];
   ```

1. Fügen Sie die Anmeldedaten mithilfe des folgenden Skripts zur sysadmin-Rolle hinzu:

   ```
   ALTER SERVER ROLE [sysadmin] ADD MEMBER [awsdms_rtm_position_1st_timestamp_login];
   ```

1. Fügen Sie die Signatur zu [master].[awsdms].[rtm\$1position\$11st\$1timestamp] unter Verwendung des Zertifikats mit dem folgenden Skript hinzu:

   ```
   Use [master]
       GO
       ADD SIGNATURE
       TO [master].[awsdms].[rtm_position_1st_timestamp]
       BY CERTIFICATE [awsdms_rtm_position_1st_timestamp_cert]
       WITH PASSWORD = '@5trongpassword';
   ```

1. Gewähren Sie dem DMS-Benutzer mithilfe des folgenden Skripts Ausführungszugriff auf die neue gespeicherte Prozedur:

   ```
   use master
   go
   GRANT execute on [awsdms].[rtm_position_1st_timestamp] to dms_user;
   ```

1. Erstellen Sie in jeder der folgenden Datenbanken einen Benutzer mit den folgenden Berechtigungen und Rollen:
**Anmerkung**  
Sie sollten das Benutzerkonto dmsnosysadmin mit derselben SID für jedes Replikat erstellen. Die folgende SQL-Abfrage kann dabei helfen, den SID-Wert des dmsnosysadmin-Kontos auf jedem Replikat zu überprüfen. Weitere Informationen zum Erstellen eines Benutzers finden Sie unter [BENUTZER ERSTELLEN (Transact-SQL)](https://learn.microsoft.com/en-us/sql/t-sql/statements/create-user-transact-sql) in der [Microsoft-SQL-Server-Dokumentation](https://learn.microsoft.com/en-us/sql/). Weitere Informationen zum Erstellen von SQL-Benutzerkonten für die Azure-SQL-Datenbank finden Sie unter [Aktive Georeplikation](https://learn.microsoft.com/en-us/azure/azure-sql/database/active-geo-replication-overview).

   ```
   use master
   go
   grant select on sys.fn_dblog to [DMS_user]
   grant view any definition to [DMS_user]
   grant view server state to [DMS_user]--(should be granted to the login).
   grant execute on sp_repldone to [DMS_user]
   grant execute on sp_replincrementlsn to [DMS_user]
   grant execute on sp_addpublication to [DMS_user]
   grant execute on sp_addarticle to [DMS_user]
   grant execute on sp_articlefilter to [DMS_user]
   grant select on [awsdms].[split_partition_list] to [DMS_user]
   grant execute on [awsdms].[rtm_dump_dblog] to [DMS_user]
   ```

   ```
   use msdb
   go
   grant select on msdb.dbo.backupset to self_managed_user
   grant select on msdb.dbo.backupmediafamily to self_managed_user
   grant select on msdb.dbo.backupfile to self_managed_user
   ```

   Führen Sie den folgenden Befehl für die Quelldatenbank aus:

   ```
   use Source_DB
       Go
       EXEC sp_addrolemember N'db_owner', N'DMS_user'
   ```

1. Fügen Sie abschließend dem SQL-Server-Endpunkt ein zusätzliches Verbindungsattribut (ECA) hinzu:

   ```
   enableNonSysadminWrapper=true;
   ```

#### Einrichtung einer laufenden Replikation auf einem SQL-Server in einer Availability-Group-Umgebung: Ohne Sysadmin-Rolle
<a name="CHAP_SupportScripts.SQLServer.ag"></a>

Dieser Abschnitt beschreibt die Einrichtung der fortlaufenden Replikation für eine eigenständige SQL-Server-Datenbankquelle, für die das Benutzerkonto keine sysadmin-Berechtigungen benötigt.

**Anmerkung**  
Nachdem Sie die Schritte in diesem Abschnitt ausgeführt haben, hat der DMS-Benutzer, der kein Systemadministrator ist, die Berechtigung, um Folgendes zu tun:  
Lesen der Änderungen aus der Protokolldatei für Online-Transaktionen
Festplattenzugriff zum Lesen von Änderungen aus Transaktionsprotokoll-Backup-Dateien
Hinzufügen oder Ändern der von DMS verwendeten Publikation
Hinzufügen von Artikeln zu der Publikation

**So richten Sie die fortlaufende Replikation in einer Availability-Group-Umgebung ein, ohne den Sysadmin-Benutzer zu verwenden**

1. Richten Sie Microsoft SQL Server für die Replikation ein, wie unter [Erfassung von Datenänderungen für die laufende Replikation von SQL Server](#CHAP_Source.SQLServer.CDC) beschrieben.

1. Aktivieren Sie MS-REPLICATION in der Quelldatenbank. Dies kann entweder manuell oder durch einmaliges Ausführen der Aufgabe als Sysadmin-Benutzer erfolgen.
**Anmerkung**  
Sie sollten den MS-REPLICATION-Verteiler entweder lokal oder so konfigurieren, dass Benutzer, die keine Systemadministratoren sind, über den zugehörigen Verbindungsserver darauf zugreifen können.

1. Wenn die Option **Nur sp\$1repldone innerhalb eines einzelnen Aufgaben-Endpunkts verwenden** aktiviert ist, beenden Sie den MS-REPLICATION-Protokollleseauftrag.

1. Führen Sie auf jedem Replikat die folgenden Schritte aus:

   1. Erstellen Sie das `[awsdms]`[awsdms]-Schema in der Master-Datenbank:

      ```
      CREATE SCHEMA [awsdms]
      ```

   1. Erstellen Sie die `[awsdms].[split_partition_list]`-Tabellenwertfunktion in der Master-Datenbank:

      ```
      USE [master]
      GO
      
      SET ansi_nulls on
      GO
        
      SET quoted_identifier on
      GO
      
      IF (object_id('[awsdms].[split_partition_list]','TF')) is not null
        DROP FUNCTION [awsdms].[split_partition_list];
      GO
      
      CREATE FUNCTION [awsdms].[split_partition_list] 
      ( 
        @plist varchar(8000),    --A delimited list of partitions    
        @dlm nvarchar(1)    --Delimiting character
      ) 
      RETURNS @partitionsTable table --Table holding the BIGINT values of the string fragments
      (
        pid bigint primary key
      ) 
      AS 
      BEGIN
        DECLARE @partition_id bigint;
        DECLARE @dlm_pos integer;
        DECLARE @dlm_len integer;  
        SET @dlm_len = len(@dlm);
        WHILE (charindex(@dlm,@plist)>0)
        BEGIN 
          SET @dlm_pos = charindex(@dlm,@plist);
          SET @partition_id = cast( ltrim(rtrim(substring(@plist,1,@dlm_pos-1))) as bigint);
          INSERT into @partitionsTable (pid) values (@partition_id)
          SET @plist = substring(@plist,@dlm_pos+@dlm_len,len(@plist));
        END 
        SET @partition_id = cast (ltrim(rtrim(@plist)) as bigint);
        INSERT into @partitionsTable (pid) values (  @partition_id  );
        RETURN
      END
      GO
      ```

   1. Erstellen Sie die `[awsdms].[rtm_dump_dblog]`-Prozedur in der Master-Datenbank:

      ```
      USE [MASTER] 
      GO
      
      IF (object_id('[awsdms].[rtm_dump_dblog]','P')) is not null
        DROP PROCEDURE [awsdms].[rtm_dump_dblog]; 
      GO
      
      SET ansi_nulls on
      GO 
      
      SET quoted_identifier on 
      GO
                                          
      CREATE PROCEDURE [awsdms].[rtm_dump_dblog]
      (
        @start_lsn            varchar(32),
        @seqno                integer,
        @filename             varchar(260),
        @partition_list       varchar(8000), -- A comma delimited list: P1,P2,... Pn
        @programmed_filtering integer,
        @minPartition         bigint,
        @maxPartition         bigint
      ) 
      AS 
      BEGIN
      
        DECLARE @start_lsn_cmp varchar(32); -- Stands against the GT comparator
      
        SET NOCOUNT ON  -- Disable "rows affected display"
      
        SET @start_lsn_cmp = @start_lsn;
        IF (@start_lsn_cmp) is null
          SET @start_lsn_cmp = '00000000:00000000:0000';
      
        IF (@partition_list is null)
          BEGIN
            RAISERROR ('Null partition list was passed',16,1);
            return
            --set @partition_list = '0,';    -- A dummy which is never matched
          END
      
        IF (@start_lsn) is not null
          SET @start_lsn = '0x'+@start_lsn;
      
        IF (@programmed_filtering=0)
          SELECT
            [Current LSN],
            [operation],
            [Context],
            [Transaction ID],
            [Transaction Name],
            [Begin Time],
            [End Time],
            [Flag Bits],
            [PartitionID],
            [Page ID],
            [Slot ID],
            [RowLog Contents 0],
            [Log Record],
            [RowLog Contents 1] -- After Image
          FROM
            fn_dump_dblog (
              @start_lsn, NULL, N'DISK', @seqno, @filename,
              default, default, default, default, default, default, default,
              default, default, default, default, default, default, default,
              default, default, default, default, default, default, default,
              default, default, default, default, default, default, default,
              default, default, default, default, default, default, default,
              default, default, default, default, default, default, default,
              default, default, default, default, default, default, default,
              default, default, default, default, default, default, default,
              default, default, default, default, default, default, default)
          WHERE 
            [Current LSN] collate SQL_Latin1_General_CP1_CI_AS > @start_lsn_cmp collate SQL_Latin1_General_CP1_CI_AS -- This aims for implementing FN_DBLOG based on GT comparator.
            AND
            (
              (  [operation] in ('LOP_BEGIN_XACT','LOP_COMMIT_XACT','LOP_ABORT_XACT') )
              OR
              (  [operation] in ('LOP_INSERT_ROWS','LOP_DELETE_ROWS','LOP_MODIFY_ROW')
                AND
                ( ( [context]   in ('LCX_HEAP','LCX_CLUSTERED','LCX_MARK_AS_GHOST') ) or ([context] = 'LCX_TEXT_MIX') )
                AND       
                [PartitionID] in ( select * from master.awsdms.split_partition_list (@partition_list,','))
              )
            OR
            ([operation] = 'LOP_HOBT_DDL')
          )
          ELSE
            SELECT
              [Current LSN],
              [operation],
              [Context],
              [Transaction ID],
              [Transaction Name],
              [Begin Time],
              [End Time],
              [Flag Bits],
              [PartitionID],
              [Page ID],
              [Slot ID],
              [RowLog Contents 0],
              [Log Record],
              [RowLog Contents 1] -- After Image
            FROM
              fn_dump_dblog (
                @start_lsn, NULL, N'DISK', @seqno, @filename,
                default, default, default, default, default, default, default,
                default, default, default, default, default, default, default,
                default, default, default, default, default, default, default,
                default, default, default, default, default, default, default,
                default, default, default, default, default, default, default,
                default, default, default, default, default, default, default,
                default, default, default, default, default, default, default,
                default, default, default, default, default, default, default,
                default, default, default, default, default, default, default)
            WHERE [Current LSN] collate SQL_Latin1_General_CP1_CI_AS > @start_lsn_cmp collate SQL_Latin1_General_CP1_CI_AS -- This aims for implementing FN_DBLOG based on GT comparator.
            AND
            (
              (  [operation] in ('LOP_BEGIN_XACT','LOP_COMMIT_XACT','LOP_ABORT_XACT') )
              OR
              (  [operation] in ('LOP_INSERT_ROWS','LOP_DELETE_ROWS','LOP_MODIFY_ROW')
                AND
                ( ( [context]   in ('LCX_HEAP','LCX_CLUSTERED','LCX_MARK_AS_GHOST') ) or ([context] = 'LCX_TEXT_MIX') )
                AND ([PartitionID] is not null) and ([PartitionID] >= @minPartition and [PartitionID]<=@maxPartition)
              )
              OR
              ([operation] = 'LOP_HOBT_DDL')
            )
            SET NOCOUNT OFF -- Re-enable "rows affected display"
      END
      GO
      ```

   1. Erstellen Sie ein Zertifikat in der Master-Datenbank:

      ```
      USE [master]
      GO
      CREATE CERTIFICATE [awsdms_rtm_dump_dblog_cert]
        ENCRYPTION BY PASSWORD = N'@hardpassword1'
        WITH SUBJECT = N'Certificate for FN_DUMP_DBLOG Permissions'
      ```

   1. Erstellen Sie eine Anmeldung aus dem Zertifikat:

      ```
      USE [master]
      GO
      CREATE LOGIN awsdms_rtm_dump_dblog_login FROM CERTIFICATE
        [awsdms_rtm_dump_dblog_cert];
      ```

   1. Fügen Sie den Anmeldenamen zur Sysadmin-Serverrolle hinzu:

      ```
      ALTER SERVER ROLE [sysadmin] ADD MEMBER [awsdms_rtm_dump_dblog_login];
      ```

   1. Fügen Sie die Signatur zur Prozedur [master].[awsdms].[rtm\$1dump\$1dblog] unter Verwendung des Zertifikats hinzu:

      ```
      USE [master]
      GO
      
      ADD SIGNATURE
        TO [master].[awsdms].[rtm_dump_dblog]
        BY CERTIFICATE [awsdms_rtm_dump_dblog_cert]
        WITH PASSWORD = '@hardpassword1';
      ```
**Anmerkung**  
Wenn Sie die gespeicherte Prozedur neu erstellen, müssen Sie die Signatur erneut hinzufügen.

   1. Erstellen Sie die `[awsdms].[rtm_position_1st_timestamp]`-Prozedur in der Master-Datenbank:

      ```
      USE [master]
      IF object_id('[awsdms].[rtm_position_1st_timestamp]','P') is not null
        DROP PROCEDURE [awsdms].[rtm_position_1st_timestamp];
      GO
      CREATE PROCEDURE [awsdms].[rtm_position_1st_timestamp]
      (
        @dbname                sysname,      -- Database name
        @seqno                 integer,      -- Backup set sequence/position number within file
        @filename              varchar(260), -- The backup filename
        @1stTimeStamp          varchar(40)   -- The timestamp to position by
      ) 
      AS 
      BEGIN
        SET NOCOUNT ON       -- Disable "rows affected display"
      
        DECLARE @firstMatching table
        (
          cLsn varchar(32),
          bTim datetime
        )
        DECLARE @sql nvarchar(4000)
        DECLARE @nl                       char(2)
        DECLARE @tb                       char(2)
        DECLARE @fnameVar                 sysname = 'NULL'
      
        SET @nl  = char(10); -- New line
        SET @tb  = char(9)   -- Tab separator
      
        IF (@filename is not null)
          SET @fnameVar = ''''+@filename +''''
        SET @filename = ''''+@filename +''''
        SET @sql='use ['+@dbname+'];'+@nl+
          'SELECT TOP 1 [Current LSN],[Begin Time]'+@nl+
          'FROM fn_dump_dblog (NULL, NULL, NULL, '+ cast(@seqno as varchar(10))+','+ @filename +','+@nl+
          @tb+'default, default, default, default, default, default, default,'+@nl+
          @tb+'default, default, default, default, default, default, default,'+@nl+
          @tb+'default, default, default, default, default, default, default,'+@nl+
          @tb+'default, default, default, default, default, default, default,'+@nl+
          @tb+'default, default, default, default, default, default, default,'+@nl+
          @tb+'default, default, default, default, default, default, default,'+@nl+
          @tb+'default, default, default, default, default, default, default,'+@nl+
          @tb+'default, default, default, default, default, default, default,'+@nl+
          @tb+'default, default, default, default, default, default, default)'+@nl+
          'WHERE operation=''LOP_BEGIN_XACT''' +@nl+
          'AND [Begin Time]>= cast('+''''+@1stTimeStamp+''''+' as datetime)'+@nl
      
          --print @sql
          DELETE FROM @firstMatching 
          INSERT INTO @firstMatching  exec sp_executesql @sql    -- Get them all
          SELECT TOP 1 cLsn as [matching LSN],convert(varchar,bTim,121) AS[matching Timestamp] FROM @firstMatching;
      
          SET NOCOUNT OFF      -- Re-enable "rows affected display"
      
      END
      GO
      ```

   1. Erstellen Sie ein Zertifikat in der Master-Datenbank:

      ```
      USE [master]
      GO
      CREATE CERTIFICATE [awsdms_rtm_position_1st_timestamp_cert]
        ENCRYPTION BY PASSWORD = N'@hardpassword1'
        WITH SUBJECT = N'Certificate for FN_POSITION_1st_TIMESTAMP Permissions';
      ```

   1. Erstellen Sie eine Anmeldung aus dem Zertifikat:

      ```
      USE [master]
      GO
      CREATE LOGIN awsdms_rtm_position_1st_timestamp_login FROM CERTIFICATE
        [awsdms_rtm_position_1st_timestamp_cert];
      ```

   1. Fügen Sie den Anmeldenamen zur Sysadmin-Serverrolle hinzu:

      ```
      ALTER SERVER ROLE [sysadmin] ADD MEMBER [awsdms_rtm_position_1st_timestamp_login];
      ```

   1. Fügen Sie der `[master].[awsdms].[rtm_position_1st_timestamp]`-Prozedur mithilfe des Zertifikats die Signatur hinzu:

      ```
      USE [master]
      GO
      ADD SIGNATURE
        TO [master].[awsdms].[rtm_position_1st_timestamp]
        BY CERTIFICATE [awsdms_rtm_position_1st_timestamp_cert]
        WITH PASSWORD = '@hardpassword1';
      ```
**Anmerkung**  
Wenn Sie die gespeicherte Prozedur neu erstellen, müssen Sie die Signatur erneut hinzufügen.

   1. Erstellen Sie permissions/roles in jeder der folgenden Datenbanken einen Benutzer mit den folgenden Angaben:
**Anmerkung**  
Sie sollten das Benutzerkonto dmsnosysadmin mit derselben SID für jedes Replikat erstellen. Die folgende SQL-Abfrage kann dabei helfen, den SID-Wert des dmsnosysadmin-Kontos auf jedem Replikat zu überprüfen. Weitere Informationen zum Erstellen eines Benutzers finden Sie unter [BENUTZER ERSTELLEN (Transact-SQL)](https://learn.microsoft.com/en-us/sql/t-sql/statements/create-user-transact-sql) in der [Microsoft-SQL-Server-Dokumentation](https://learn.microsoft.com/en-us/sql/). Weitere Informationen zum Erstellen von SQL-Benutzerkonten für die Azure-SQL-Datenbank finden Sie unter [Aktive Georeplikation](https://learn.microsoft.com/en-us/azure/azure-sql/database/active-geo-replication-overview).

      ```
      SELECT @@servername servername, name, sid, create_date, modify_date
        FROM sys.server_principals
        WHERE name = 'dmsnosysadmin';
      ```

   1. Erteilen Sie für jedes Replikat Berechtigungen für die Master-Datenbank:

      ```
      USE master
      GO 
      
      GRANT select on sys.fn_dblog to dmsnosysadmin;
      GRANT view any definition to dmsnosysadmin;
      GRANT view server state to dmsnosysadmin -- (should be granted to the login).
      GRANT execute on sp_repldone to dmsnosysadmin;
      GRANT execute on sp_replincrementlsn to dmsnosysadmin;
      GRANT execute on sp_addpublication to dmsnosysadmin;
      GRANT execute on sp_addarticle to dmsnosysadmin;
      GRANT execute on sp_articlefilter to dmsnosysadmin;
      GRANT select on [awsdms].[split_partition_list] to dmsnosysadmin;
      GRANT execute on [awsdms].[rtm_dump_dblog] to dmsnosysadmin;
      GRANT execute on [awsdms].[rtm_position_1st_timestamp] to dmsnosysadmin;
      ```

   1. Erteilen Sie für jedes Replikat Berechtigungen für die msdb-Datenbank:

      ```
      USE msdb
      GO
      GRANT select on msdb.dbo.backupset TO self_managed_user
      GRANT select on msdb.dbo.backupmediafamily TO self_managed_user
      GRANT select on msdb.dbo.backupfile TO self_managed_user
      ```

   1. Fügen Sie die `db_owner`-Rolle zu `dmsnosysadmin` in der Quelldatenbank hinzu. Da die Datenbank synchronisiert ist, können Sie die Rolle nur dem primären Replikat hinzufügen.

      ```
      use <source DB>
      GO 
      EXEC sp_addrolemember N'db_owner', N'dmsnosysadmin'
      ```

## Einrichten der laufenden Replikation auf einer SQL-Server-DB-Instance in der Cloud
<a name="CHAP_Source.SQLServer.Configuration"></a>

In diesem Abschnitt wird die Einrichtung von CDC für eine in der Cloud gehostete SQL-Server-Datenbank-Instance beschrieben. Eine in der Cloud gehostete SQL-Server-Instance ist eine Instance, die in Amazon RDS für SQL Server, einer von Azure SQL verwalteten Instance oder einer anderen verwalteten Cloud-SQL-Server-Instance ausgeführt wird. Informationen zu den Einschränkungen der laufenden Replikation für jeden Datenbanktyp finden Sie unter [Einschränkungen bei der Verwendung von SQL Server als Quelle für AWS DMS](CHAP_Source.SQLServer.md#CHAP_Source.SQLServer.Limitations). 

Bevor Sie die laufende Replikation einrichten, informieren Sie sich unter [Voraussetzungen für die Verwendung der laufenden Replikation (CDC) von einer SQL-Server-Quelle aus](CHAP_Source.SQLServer.md#CHAP_Source.SQLServer.Prerequisites). 

Im Gegensatz zu selbstverwalteten Microsoft-SQL-Server-Quellen unterstützt Amazon RDS für SQL Server MS-Replication nicht. Daher AWS DMS muss MS-CDC für Tabellen mit oder ohne Primärschlüssel verwendet werden.

Amazon RDS gewährt keine Sysadmin-Rechte für die Einrichtung von Replikationsartefakten, die für laufende Änderungen in einer SQL Server-Quellinstanz AWS DMS verwendet werden. Aktivieren Sie MS-CDC für die Amazon-RDS-Instance (unter Verwendung von Hauptbenutzer-Berechtigungen) wie im folgenden Verfahren gezeigt.

**So aktivieren Sie MS-CDC für eine SQL-Server-DB-Instance in der Cloud**

1. Führen Sie eine der folgenden Abfragen auf Datenbankebene aus.

   Verwenden Sie diese Abfrage für eine DB-Instance von RDS für SQL Server.

   ```
   exec msdb.dbo.rds_cdc_enable_db 'DB_name'
   ```

   Verwenden Sie diese Abfrage für eine von Azure SQL verwaltete DB-Instance.

   ```
   USE DB_name 
   GO 
   EXEC sys.sp_cdc_enable_db 
   GO
   ```

1. Führen Sie die folgende Abfrage für jede Tabelle mit einem Primärschlüssel aus, um MS-CDC zu aktivieren.

   ```
   exec sys.sp_cdc_enable_table
   @source_schema = N'schema_name',
   @source_name = N'table_name',
   @role_name = NULL,
   @supports_net_changes = 1
   GO
   ```

   Führen Sie die folgende Abfrage für jede Tabelle mit eindeutigen Schlüsseln, aber ohne Primärschlüssel aus, um MS-CDC zu aktivieren.

   ```
   exec sys.sp_cdc_enable_table
   @source_schema = N'schema_name',
   @source_name = N'table_name',
   @index_name = N'unique_index_name',
   @role_name = NULL,
   @supports_net_changes = 1
   GO
   ```

    Führen Sie die folgende Abfrage für jede Tabelle ohne Primärschlüssel oder eindeutige Schlüssel aus, um MS-CDC zu aktivieren.

   ```
   exec sys.sp_cdc_enable_table
   @source_schema = N'schema_name',
   @source_name = N'table_name',
   @role_name = NULL
   GO
   ```

1. Legen Sie den Aufbewahrungszeitraum fest:
   + Stellen Sie bei RDS for SQL Server-Instanzen, die mit DMS-Version 3.5.3 und höher replizieren, sicher, dass der Aufbewahrungszeitraum auf den Standardwert von 5 Sekunden festgelegt ist. Wenn Sie ein Upgrade durchführen oder von DMS 3.5.2 und niedriger auf DMS 3.5.3 und höher wechseln, ändern Sie den Wert für das Abfrageintervall, nachdem die Aufgaben auf der neuen oder aktualisierten Instanz ausgeführt wurden. Das folgende Skript legt die Aufbewahrungsdauer auf 5 Sekunden fest:

     ```
     use dbname
     EXEC sys.sp_cdc_change_job @job_type = 'capture' ,@pollinginterval = 5
     exec sp_cdc_stop_job 'capture'
     exec sp_cdc_start_job 'capture'
     ```
   + Der Parameter `@pollinginterval` wird in Sekunden gemessen, wobei der empfohlene Wert auf 86 399 festgelegt ist. Dies bedeutet, dass das Transaktionsprotokoll Änderungen 86 399 Sekunden (einen Tag) lang speichert, wenn `@pollinginterval = 86399`. Die Prozedur `exec sp_cdc_start_job 'capture'` initiiert die Einstellungen.
**Anmerkung**  
Bei einigen Versionen von SQL Server wird der Wert von `pollinginterval` auf den Standardwert von fünf Sekunden zurückgesetzt, wenn er auf mehr als 3 599 Sekunden festgelegt wurde. In diesem Fall werden T-Log-Einträge gelöscht, bevor sie gelesen werden AWS DMS können. Informationen dazu, welche SQL-Server-Versionen von diesem bekannten Problem betroffen sind, finden Sie in [diesem Microsoft-KB-Artikel](https://support.microsoft.com/en-us/topic/kb4459220-fix-incorrect-results-occur-when-you-convert-pollinginterval-parameter-from-seconds-to-hours-in-sys-sp-cdc-scan-in-sql-server-dac8aefe-b60b-7745-f987-582dda2cfa78).

     Wenn Sie Amazon RDS mit Multi-AZ verwenden, stellen Sie sicher, dass Sie auch Ihre sekundäre Availability Zone so einstellen, dass sie im Falle eines Failovers die richtigen Werte hat.

     ```
     exec rdsadmin..rds_set_configuration 'cdc_capture_pollinginterval' , <5 or preferred value>
     ```

**Um die Aufbewahrungsfrist beizubehalten, wenn eine AWS DMS Replikationsaufgabe für mehr als eine Stunde angehalten wird**
**Anmerkung**  
Die folgenden Schritte sind für eine RDS for SQL Server-Quellreplikation mit DMS 3.5.3 und höher nicht erforderlich.

1. Halten Sie den Auftrag, der die Transaktionsprotokolle kürzt, mit dem folgenden Befehl an. 

   ```
   exec sp_cdc_stop_job 'capture'
   ```

1. Suchen Sie Ihre Aufgabe auf der AWS DMS Konsole und setzen Sie sie fort.

1. Wählen Sie die Registerkarte **Überwachung** und überprüfen Sie die Metrik `CDCLatencySource`. 

1. Wenn die Metrik `CDCLatencySource` gleich 0 (Null) ist und diesen Wert beibehält, starten Sie den Auftrag, der die Transaktionsprotokolle kürzt, mit dem folgenden Befehl neu.

   ```
   exec sp_cdc_start_job 'capture'
   ```

Denken Sie daran, den Auftrag zu starten, der die SQL-Server-Transaktionsprotokolle kürzt. Andernfalls könnte der Speicher auf Ihrer SQL-Server-Instance voll werden.

### Empfohlene Einstellungen bei der Verwendung von RDS für SQL Server als Quelle für AWS DMS
<a name="CHAP_Source.SQLServer.Configuration.Settings"></a>

#### Für AWS DMS 3.5.3 und höher
<a name="CHAP_Source.SQLServer.Configuration.Settings.353"></a>

**Anmerkung**  
Die erste Version der Protokollsicherungsfunktion von RDS für SQL Server ist standardmäßig für Endpoints aktiviert, die Sie nach der Veröffentlichung von DMS-Version 3.5.3 erstellt oder geändert haben. Um diese Funktion für bestehende Endpunkte zu verwenden, ändern Sie den Endpunkt, ohne Änderungen vorzunehmen.

AWS DMS Version 3.5.3 bietet Unterstützung für das Lesen aus Protokollsicherungen. DMS stützt sich hauptsächlich auf das Lesen aus den aktiven Transaktionsprotokollen, um Ereignisse zu replizieren. Wenn eine Transaktion gesichert wird, bevor DMS sie aus dem aktiven Protokoll lesen kann, greift die Task bei Bedarf auf die RDS-Backups zu und liest aus den nachfolgenden Backup-Logs, bis sie das aktive Transaktionslog erreicht. Um sicherzustellen, dass DMS Zugriff auf Protokollsicherungen hat, legen Sie die Aufbewahrungsfrist für automatisierte RDS-Backups auf mindestens einen Tag fest. Informationen zur Einstellung der Aufbewahrungsdauer für automatische [Backup finden Sie unter Aufbewahrungszeitraum](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_ManagingAutomatedBackups.html#USER_WorkingWithAutomatedBackups.BackupRetention) für Backups im *Amazon RDS-Benutzerhandbuch*.

Eine DMS-Aufgabe, die auf Protokollsicherungen zugreift, nutzt Speicherplatz auf der RDS-Instance. Beachten Sie, dass die Aufgabe nur auf die für die Replikation benötigten Protokollsicherungen zugreift. Amazon RDS entfernt diese heruntergeladenen Backups innerhalb weniger Stunden. Diese Entfernung hat keine Auswirkungen auf die in Amazon S3 gespeicherten Amazon RDS-Backups oder die Amazon `RESTORE DATABASE` RDS-Funktionalität. Es ist ratsam, zusätzlichen Speicherplatz auf Ihrer RDS-Quelle für SQL Server zuzuweisen, wenn Sie beabsichtigen, mithilfe von DMS zu replizieren. Eine Möglichkeit, den Speicherbedarf abzuschätzen, besteht darin, das Backup zu ermitteln, von dem aus DMS die Replikation beginnen oder fortsetzen wird, und die Dateigrößen aller nachfolgenden Backups mithilfe der RDS-Metadatenfunktion zu addieren. `tlog backup` Weitere Informationen zu dieser `tlog backup` Funktion finden Sie unter [Verfügbare Transaktionsprotokoll-Backups auflisten](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER.SQLServer.AddlFeat.TransactionLogAccess.html#USER.SQLServer.AddlFeat.TransactionLogAccess.Listing) im *Amazon RDS-Benutzerhandbuch*. 

Alternativ können Sie die automatische Speicherskalierung aktivieren und/oder die Speicherskalierung basierend auf der CloudWatch `FreeStorageSpace` Metrik für Ihre Amazon RDS-Instance auslösen.

Wir empfehlen dringend, nicht an einem Punkt zu weit hinten in den Transaktionsprotokoll-Backups zu beginnen oder fortzufahren, da dies dazu führen könnte, dass der Speicherplatz auf Ihrer SQL Server-Instance voll wird. In solchen Fällen ist es ratsam, einen Vollladevorgang zu starten. Das Replizieren aus dem Transaktionslog-Backup ist langsamer als das Lesen aus den aktiven Transaktionslogs. Weitere Informationen finden Sie unter [Verarbeitung von Transaktionsprotokoll-Backups für RDS für SQL Server](CHAP_Troubleshooting_Latency_Source_SQLServer.md#CHAP_Troubleshooting_Latency_Source_SQLServer_backup).

Beachten Sie, dass für den Zugriff auf die Protokollsicherungen zusätzliche Rechte erforderlich sind. Weitere Informationen finden Sie unter [Richten Sie Berechtigungen für die laufende Replikation aus einer Cloud-SQL Server-Datenbank ein](CHAP_Source.SQLServer.md#CHAP_Source.SQLServer.Permissions.Cloud) Stellen Sie sicher, dass Sie diese Rechte gewähren, bevor die Aufgabe mit der Replikation beginnt.

#### Für AWS DMS 3.5.2 und niedriger
<a name="CHAP_Source.SQLServer.Configuration.Settings.352"></a>

Wenn Sie mit Amazon RDS for SQL Server als Quelle arbeiten, stützt sich der MS-CDC-Erfassungsauftrag auf die Parameter `maxscans` und. `maxtrans` Diese Parameter bestimmen die maximale Anzahl von Scans, die die MS-CDC-Erfassung im Transaktionsprotokoll durchführt, und die Anzahl der Transaktionen, die für jeden Scan verarbeitet werden.

Bei Datenbanken, bei denen die Anzahl der Transaktionen größer als `maxtrans*maxscans` ist, kann eine Erhöhung des Werts `polling_interval` zu einer Anhäufung von aktiven Transaktionsprotokoll-Datensätzen führen. Diese Anhäufung kann wiederum zu einer Vergrößerung des Transaktionsprotokolls führen.

Beachten Sie, dass AWS DMS dies nicht auf den MS-CDC-Erfassungsauftrag angewiesen ist. Der MS-CDC-Erfassungsauftrag kennzeichnet die Transaktionsprotokolleinträge als verarbeitet. Dadurch kann der Backup-Auftrag für das Transaktionsprotokoll die Einträge aus dem Transaktionsprotokoll entfernen.

Es wird empfohlen, die Größe des Transaktionsprotokolls und den Erfolg der MS-CDC-Auftrags zu überwachen. Wenn die MS-CDC-Jobs fehlschlagen, kann das Transaktionsprotokoll übermäßig anwachsen und zu Replikationsfehlern führen. AWS DMS Sie können Fehler bei MS-CDC-Erfassungsaufträgen mithilfe der dynamischen Verwaltungsansicht `sys.dm_cdc_errors` in der Quelldatenbank überwachen. Sie können die Größe des Transaktionsprotokolls mithilfe des Verwaltungsbefehls `DBCC SQLPERF(LOGSPACE)` überwachen.

**So beheben Sie die von MS-CDC verursachte Vergrößerung des Transaktionsprotokolls**

1. Prüfen Sie, aus `Log Space Used %` welcher Datenbank repliziert AWS DMS wird, und stellen Sie sicher, dass sie kontinuierlich wächst.

   ```
   DBCC SQLPERF(LOGSPACE)
   ```

1. Ermitteln Sie, wodurch der Backup-Vorgang des Transaktionsprotokolls blockiert wird.

   ```
   Select log_reuse_wait, log_reuse_wait_desc, name from sys.databases where name = db_name();
   ```

   Wenn der Wert `log_reuse_wait_desc` gleich `REPLICATION` ist, wird die Blockierung des Protokoll-Backups durch die Latenz in MS-CDC verursacht.

1. Erhöhen Sie die Anzahl der vom Erfassungsauftrag verarbeiteten Ereignisse, indem Sie die Parameterwerte `maxtrans` und `maxscans` erhöhen.

   ```
   EXEC sys.sp_cdc_change_job @job_type = 'capture' ,@maxtrans = 5000, @maxscans = 20 
   exec sp_cdc_stop_job 'capture'
   exec sp_cdc_start_job 'capture'
   ```

Um dieses Problem zu beheben, legen Sie die Werte von `maxscans` und `maxtrans` so fest, dass `maxtrans*maxscans` sie der durchschnittlichen Anzahl von Ereignissen entsprechen, die für Tabellen generiert werden, die für jeden Tag aus der Quelldatenbank AWS DMS repliziert werden.

Wenn Sie für diese Parameter einen höheren als den empfohlenen Wert festlegen, verarbeiten die Erfassungsaufträge alle Ereignisse in den Transaktionsprotokollen. Wenn Sie für diese Parameter einen niedrigeren als den empfohlenen Wert festlegen, erhöht sich die MS-CDC-Latenz und das Transaktionsprotokoll wird vergrößert.

Die Ermittlung geeigneter Werte für `maxscans` und `maxtrans` kann schwierig sein, da Änderungen des Workloads zu einer unterschiedlichen Anzahl von Ereignissen führen. In diesem Fall empfehlen wir, Überwachung für die MS-CDC-Latenz einzurichten. Weitere Informationen finden Sie unter [Monitor the process](https://docs.microsoft.com/en-us/sql/relational-databases/track-changes/administer-and-monitor-change-data-capture-sql-server?view=sql-server-ver15#Monitor) in der Dokumentation zu SQL Server. Konfigurieren Sie dann `maxtrans` und `maxscans` dynamisch auf Grundlage der Überwachungsergebnisse.

Wenn die AWS DMS Aufgabe nicht in der Lage ist, die für die Fortsetzung oder Fortsetzung der Aufgabe erforderlichen Protokollsequenznummern (LSNs) zu finden, schlägt die Aufgabe möglicherweise fehl und erfordert ein vollständiges Neuladen.

**Anmerkung**  
Wenn Sie Daten aus einer RDS for SQL Server-Quelle replizieren, können Fehler auftreten, wenn Sie versuchen, die Replikation nach einem Stop-Start-Ereignis der Amazon RDS-Instance fortzusetzen. AWS DMS Dies liegt daran, dass der SQL-Server-Agent-Prozess den Erfassungsauftrag neu startet, wenn er nach dem Stopp-Start-Ereignis neu gestartet wird. Dadurch wird das MS-CDC-Abfrageintervall umgangen.  
Aus diesem Grund kann es bei Datenbanken mit einem Transaktionsvolumen, das unter der Verarbeitung des MS-CDC-Erfassungsauftrags liegt, dazu führen, dass Daten verarbeitet oder als repliziert und gesichert markiert werden, bevor sie an der Stelle fortgesetzt werden AWS DMS können, an der sie gestoppt wurden. Dies führt zu dem folgenden Fehler:  

```
[SOURCE_CAPTURE ]E: Failed to access LSN '0000dbd9:0006f9ad:0003' in the backup log sets since BACKUP/LOG-s are not available. [1020465] (sqlserver_endpoint_capture.c:764)
```
Legen Sie die Werte `maxtrans` und `maxscans` wie zuvor empfohlen fest, um dieses Problem zu beheben.

# Verwendung der Microsoft Azure SQL-Datenbank als Quelle für AWS DMS
<a name="CHAP_Source.AzureSQL"></a>

Mit AWS DMS können Sie Microsoft Azure SQL Database auf die gleiche Weise wie SQL Server als Quelle verwenden. AWS DMS unterstützt als Quelle dieselbe Liste von Datenbankversionen, die für SQL Server unterstützt werden, der lokal oder auf einer Amazon EC2 EC2-Instance ausgeführt wird. 

Weitere Informationen finden Sie unter [Verwenden einer Microsoft SQL Server-Datenbank als Quelle für AWS DMS](CHAP_Source.SQLServer.md).

**Anmerkung**  
AWS DMS unterstützt keine Change Data Capture-Operationen (CDC) mit Azure SQL Database.

# Verwenden von Microsoft Azure SQL Managed Instance als Quelle für AWS DMS
<a name="CHAP_Source.AzureMgd"></a>

Mit AWS DMS können Sie Microsoft Azure SQL Managed Instance auf die gleiche Weise wie SQL Server als Quelle verwenden. AWS DMS unterstützt als Quelle dieselbe Liste von Datenbankversionen, die für SQL Server unterstützt werden, der lokal oder auf einer Amazon EC2 EC2-Instance ausgeführt wird. 

Weitere Informationen finden Sie unter [Verwenden einer Microsoft SQL Server-Datenbank als Quelle für AWS DMS](CHAP_Source.SQLServer.md).

# Verwendung des flexiblen Servers Microsoft Azure Database for PostgreSQL als Quelle für AWS DMS
<a name="CHAP_Source.AzureDBPostgreSQL"></a>

Mit AWS DMS können Sie den flexiblen Server Microsoft Azure Database for PostgreSQL als Quelle verwenden, ähnlich wie PostgreSQL.

Informationen zu Versionen des flexiblen Servers Microsoft Azure Database for PostgreSQL, der als Quelle AWS DMS unterstützt wird, finden Sie unter. [Quellen für AWS DMS](CHAP_Introduction.Sources.md)

## Einrichtung eines flexiblen Microsoft-Azure-für-PostgreSQL-Servers für logische Replikation und Dekodierung
<a name="CHAP_Source.AzureDBPostgreSQL.setup"></a>

Sie können während der Datenbankmigration logische Replikations- und Dekodierungs-Features auf dem flexiblen Microsoft-Azure-Database-for-PostgreSQL-Server verwenden.

Für die logische Dekodierung verwendet DMS das Plugin `test_decoding` oder `pglogical`. Wenn das `pglogical`-Plugin in einer PostgreSQL-Quelldatenbank verfügbar ist, erstellt DMS einen Replikations-Slot mit `pglogical`, andernfalls wird das `test_decoding`-Plugin verwendet. 

Gehen Sie wie folgt vor, um Ihren flexiblen Microsoft-Azure-für-PostgreSQL-Server als Quellendpunkt für DMS zu konfigurieren: 

1. Öffnen Sie die Seite „Serverparameter“ im Portal.

1. Setzen Sie den `wal_level`-Serverparameter auf `LOGICAL`.

1. Wenn Sie die `pglogical`-Erweiterung verwenden möchten, setzen Sie die Parameter `shared_preload_libraries` und `azure.extensions` auf `pglogical`.

1. Setzen Sie den `max_replication_slots`-Parameter auf die maximale Anzahl von DMS-Aufgaben ein, die Sie gleichzeitig ausführen möchten. In Microsoft Azure ist der Standardwert für diesen Parameter 10. Der Maximalwert dieses Parameters hängt vom verfügbaren Speicher Ihrer PostgreSQL-Instance ab und ermöglicht zwischen 2 und 8 Replikations-Slots pro GB Speicher.

1. Legen Sie für den Parameter `max_wal_senders` einen Wert größer als 1 fest. Der Parameter `max_wal_senders` legt die Anzahl der Aufgaben fest, die gleichzeitig ausgeführt werden können. Der Standardwert lautet 10.

1. Setzen Sie den Parameterwert `max_worker_processes` auf mindestens 16. Andernfalls werden möglicherweise Fehler wie die folgenden angezeigt:

   ```
   WARNING: out of background worker slots.
   ```

1. Speichern Sie die Änderungen. Starten Sie den Server neu, um die Änderungen zu übernehmen.

1. Vergewissern Sie sich, dass Ihre PostgreSQL-Instance Netzwerkverkehr von Ihrer Verbindungsressource zulässt.

1. Erteilen Sie einem vorhandenen Benutzer Replikationsberechtigungen oder erstellen Sie einen neuen Benutzer mit Replikationsberechtigungen, indem Sie die folgenden Befehle verwenden. 
   + Mit folgendem Befehl gewähren Sie einem vorhandenen Benutzer Replikationsberechtigungen:

     ```
     ALTER USER <existing_user> WITH REPLICATION;
     ```
   + Mit folgendem Befehl erstellen Sie einen neuen Benutzer mit Replikationsberechtigungen: 

     ```
     CREATE USER aws_dms_user PASSWORD 'aws_dms_user_password';
     GRANT azure_pg_admin to aws_dms_user;
     ALTER ROLE aws_dms_user REPLICATION LOGIN;
     ```

Weitere Informationen über die logische Replikation von PostgreSQL finden Sie in den folgenden Themen:
+ [Aktivieren der Erfassung von Datenänderungen (CDC) mithilfe logischer Replikation](CHAP_Source.PostgreSQL.md#CHAP_Source.PostgreSQL.Security)
+ [Verwenden von nativen CDC-Startpunkten zum Einrichten einer CDC-Last einer PostgreSQL-Quelle](CHAP_Source.PostgreSQL.md#CHAP_Source.PostgreSQL.v10)
+ [Logische Replikation und logische Dekodierung in Azure Database für PostgreSQL – Flexibler Server](https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/concepts-logical) in der [Azure-Database-für PostgreSQL-Dokumentation](https://learn.microsoft.com/en-us/azure/postgresql/).

# Verwendung des flexiblen Servers Microsoft Azure Database for MySQL als Quelle für AWS DMS
<a name="CHAP_Source.AzureDBMySQL"></a>

Mit AWS DMS können Sie den flexiblen Server Microsoft Azure Database for MySQL als Quelle verwenden, ähnlich wie Sie es mit MySQL tun.

Informationen zu Versionen des flexiblen Servers Microsoft Azure Database for MySQL, der als Quelle AWS DMS unterstützt wird, finden Sie unter[Quellen für AWS DMS](CHAP_Introduction.Sources.md). 

Weitere Hinweise zur Verwendung einer vom Kunden verwalteten MySQL-kompatiblen Datenbank mit finden Sie unter. AWS DMS[Verwendung einer selbstverwalteten MySQL-kompatiblen Datenbank als Quelle für AWS DMS](CHAP_Source.MySQL.md#CHAP_Source.MySQL.CustomerManaged)

## Einschränkungen bei der Verwendung von Azure MySQL als Quelle für AWS Database Migration Service
<a name="CHAP_Source.AzureDBMySQL.limitations"></a>
+ Der Standardwert für die flexible Azure MySQL-Serversystemvariable `sql_generate_invisible_primary_key` ist`ON`, und der Server fügt automatisch einen generierten unsichtbaren Primärschlüssel (GIPK) zu jeder Tabelle hinzu, die ohne einen expliziten Primärschlüssel erstellt wurde. AWS DMS unterstützt keine laufende Replikation für MySQL-Tabellen mit GIPK-Einschränkungen.

# Verwendung von OCI MySQL Heatwave als Quelle für AWS DMS
<a name="CHAP_Source.heatwave"></a>

Mit AWS DMS können Sie OCI MySQL Heatwave auf die gleiche Weise wie MySQL als Quelle verwenden. Die Verwendung von OCI MySQL Heatwave als Quelle erfordert einige zusätzliche Konfigurationsänderungen.

Hinweise zu Versionen von OCI MySQL Heatwave, die als Quelle AWS DMS unterstützt werden, finden Sie unter. [Quellen für AWS DMS](CHAP_Introduction.Sources.md)

## Einrichtung von OCI MySQL Heatwave für die logische Replikation
<a name="CHAP_Source.heatwave.setup"></a>

Gehen Sie wie folgt vor, um Ihre OCI-MySQL-Heatwave-Instance als Quellendpunkt für DMS zu konfigurieren:

1. Melden Sie sich bei der OCI-Konsole an und öffnen Sie das „Hamburger“-Hauptmenü (≡) in der oberen linken Ecke.

1. Wählen Sie **Datenbanken**, **DB-Systeme**.

1. Öffnen Sie das Menü **Konfigurationen**.

1. Wählen Sie **Create configuration** (Konfiguration erstellen).

1. Geben Sie einen Konfigurationsnamen ein, z. B. **dms\$1configuration**.

1. Wählen Sie die Form Ihrer aktuellen OCI-MySQL-Heatwave-Instance. Sie finden die Form auf der Registerkarte „Eigenschaften“ der **DB-Systemkonfiguration** der Instance im Abschnitt **DB-Systemkonfiguration:Form**.

1. Wählen Sie im Abschnitt **Benutzervariablen** die Systemvariable `binlog_row_value_options` aus. Der Standardwert ist `PARTIAL_JSON`. Löschen Sie den Wert.

1. Wählen Sie die Schaltfläche **Erstellen** aus.

1. **Öffnen Sie Ihre OCI My SQLHeatwave Instance und wählen Sie die Schaltfläche Bearbeiten.**

1. Wählen Sie im Abschnitt **Konfiguration** die Schaltfläche **Konfiguration ändern** und wählen Sie die Form-Konfiguration aus, die Sie in Schritt 4 erstellt haben.

1. Sobald die Änderungen wirksam werden, ist Ihre Instance für die logische Replikation bereit.

# Verwenden von Google Cloud for MySQL als Quelle für AWS DMS
<a name="CHAP_Source.GC"></a>

Mit AWS DMS können Sie Google Cloud for MySQL auf die gleiche Weise wie MySQL als Quelle verwenden. 

Hinweise zu Versionen von GCP MySQL, die MySQL als Quelle AWS DMS unterstützen, finden Sie unter[Quellen für AWS DMS](CHAP_Introduction.Sources.md). 

Weitere Informationen finden Sie unter [Verwendung einer MySQL-kompatiblen Datenbank als Quelle für AWS DMS](CHAP_Source.MySQL.md).

**Anmerkung**  
Support für GCP MySQL 8.0 als Quelle ist in AWS DMS Version 3.4.6 verfügbar.  
AWS DMS unterstützt den SSL-Modus `verify-full` für GCP für MySQL-Instances nicht.  
Die GCP MySQL-Sicherheitseinstellung wird `Allow only SSL connections` nicht unterstützt, da sie sowohl die Überprüfung des Server- als auch des Client-Zertifikats erfordert. AWS DMS unterstützt nur die Überprüfung von Serverzertifikaten.  
AWS DMS unterstützt den Standardwert von GCP CloudSQL for MySQL `CRC32` für das `binlog_checksum` Datenbank-Flag.

# Verwenden von Google Cloud für PostgreSQL als Quelle für AWS DMS
<a name="CHAP_Source.GCPostgres"></a>

Mit AWS DMS können Sie Google Cloud for PostgreSQL auf die gleiche Weise als Quelle verwenden wie selbstverwaltete PostgreSQL-Datenbanken.

Hinweise zu Versionen von GCP PostgreSQL, die PostgreSQL als Quelle AWS DMS unterstützen, finden Sie unter. [Quellen für AWS DMS](CHAP_Introduction.Sources.md) 

Weitere Informationen finden Sie unter [Verwenden einer PostgreSQL-Datenbank als Quelle AWS DMS](CHAP_Source.PostgreSQL.md).

## Richten Sie Google Cloud für PostgreSQL für die logische Replikation und Dekodierung ein
<a name="CHAP_Source.GCPostgres.setup"></a>

Sie können während der Datenbankmigration Features für logische Replikation und Dekodierung in Google Cloud SQL for PostgreSQL verwenden.

Für die logische Dekodierung verwendet DMS eines der folgenden Plugins:
+ `test_decoding`
+ `pglogical`

Wenn das `pglogical`-Plugin in einer PostgreSQL-Quelldatenbank verfügbar ist, erstellt DMS einen Replikations-Slot mit `pglogical`, andernfalls wird das `test_decoding`-Plugin verwendet. 

Beachten Sie Folgendes zur Verwendung der logischen Dekodierung mit: AWS DMS

1. Aktivieren Sie mit Google Cloud SQL für PostgreSQL die logische Dekodierung, indem Sie das Flag `cloudsql.logical_decoding` auf `on` setzen.

1. Um `pglogical` zu aktivieren, setzen Sie das `cloudsql.enable_pglogical`-Flag auf `on` und starten Sie die Datenbank neu.

1. Um logische Dekodierungs-Features zu verwenden, erstellen Sie einen PostgreSQL-Benutzer mit dem Attribut `REPLICATION`. Wenn Sie die `pglogical`-Erweiterung verwenden, muss der Benutzer die Rolle `cloudsqlsuperuser` haben. Gehen Sie wie folgt vor, um einen Benutzer mit der `cloudsqlsuperuser`-Rolle zu erstellen:

   ```
   CREATE USER new_aws_dms_user WITH REPLICATION
   IN ROLE cloudsqlsuperuser LOGIN PASSWORD 'new_aws_dms_user_password';
   ```

   Um dieses Attribut für einen vorhandenen Benutzer festzulegen, führen Sie die folgenden Schritte aus:

   ```
   ALTER USER existing_user WITH REPLICATION;
   ```

1. Setzen Sie den `max_replication_slots`-Parameter auf die maximale Anzahl von DMS-Aufgaben ein, die Sie gleichzeitig ausführen möchten. In Google Cloud SQL ist der Standardwert für diesen Parameter 10. Der Maximalwert dieses Parameters hängt vom verfügbaren Speicher Ihrer PostgreSQL-Instance ab und ermöglicht zwischen 2 und 8 Replikations-Slots pro GB Speicher.

Weitere Informationen über die logische Replikation von PostgreSQL finden Sie in den folgenden Themen:
+ [Aktivieren der Erfassung von Datenänderungen (CDC) mithilfe logischer Replikation](CHAP_Source.PostgreSQL.md#CHAP_Source.PostgreSQL.Security)
+ [Verwenden von nativen CDC-Startpunkten zum Einrichten einer CDC-Last einer PostgreSQL-Quelle](CHAP_Source.PostgreSQL.md#CHAP_Source.PostgreSQL.v10)
+ [Einrichten der logischen Replikation und Dekodierung](https://cloud.google.com/sql/docs/postgres/replication/configure-logical-replication) in der [Cloud-SQL-for-PostgreSQL-Dokumentation](https://cloud.google.com/sql/docs/postgres).

# Verwenden einer PostgreSQL-Datenbank als Quelle AWS DMS
<a name="CHAP_Source.PostgreSQL"></a>

Sie können Daten aus einer oder mehreren PostgreSQL-Datenbanken migrieren mit. AWS DMS Mit einer PostgreSQL-Datenbank als Quelle können Sie Daten zu einer anderen PostgreSQL-Datenbank oder einer der anderen unterstützten Datenbanken migrieren. 

Hinweise zu Versionen von PostgreSQL, die als Quelle AWS DMS unterstützt werden, finden Sie unter. [Quellen für AWS DMS](CHAP_Introduction.Sources.md) 

AWS DMS unterstützt PostgreSQL für diese Datenbanktypen: 
+ Lokale Datenbanken
+ Datenbanken auf einer Amazon-EC2-Instance
+ Datenbanken auf einer DB-Instance von Amazon RDS
+ Datenbanken auf einer DB-Instance basierend auf der Amazon-Aurora-PostgreSQL-kompatiblen Edition
+ Datenbanken auf einer DB-Instance basierend auf der Amazon-Aurora-PostgreSQL-kompatiblen Serverless-Edition

**Anmerkung**  
DMS unterstützt Amazon Aurora PostgreSQL – Serverless V1 nur als Quelle für Volllastaufgaben. Sie können jedoch Amazon Aurora PostgreSQL – Serverless V2 als Quelle für Volllast-, Volllast-und-CDC- und reine CDC-Aufgaben verwenden.

Sie können Secure Sockets Layer (SSL) verwenden, um Verbindungen zwischen Ihrem PostgreSQL-Endpunkt und der Replikations-Instance zu verschlüsseln. Weitere Informationen zur Verwendung von SSL mit einem PostgreSQL-Endpunkt finden Sie unter [Verwenden von SSL mit AWS Database Migration Service](CHAP_Security.SSL.md).

Eine zusätzliche Sicherheitsanforderung bei Verwendung von PostgreSQL als Quelle besteht darin, dass das angegebene Benutzerkonto ein registrierter Benutzer in der PostgreSQL-Datenbank sein muss.

Gehen Sie wie folgt vor, um eine PostgreSQL-Datenbank als AWS DMS Quellendpunkt zu konfigurieren:
+ Erstellen Sie einen PostgreSQL-Benutzer mit entsprechenden Berechtigungen, um AWS DMS Zugriff auf Ihre PostgreSQL-Quelldatenbank zu gewähren.
**Anmerkung**  
Wenn es sich bei Ihrer PostgreSQL-Quelldatenbank um eine selbstverwaltete Datenbank handelt, informieren Sie sich unter [Arbeiten mit selbstverwalteten PostgreSQL-Datenbanken als Quelle in AWS DMS](#CHAP_Source.PostgreSQL.Prerequisites).
Wenn es sich bei Ihrer PostgreSQL-Quelldatenbank um eine von Amazon RDS verwaltete Datenbank handelt, informieren Sie sich unter [Arbeiten mit AWS-verwalteten PostgreSQL-Datenbanken als DMS-Quelle](#CHAP_Source.PostgreSQL.RDSPostgreSQL).
+ Erstellen Sie einen PostgreSQL-Quellendpunkt, der der von Ihnen ausgewählten PostgreSQL-Datenbankkonfiguration entspricht.
+ Erstellen Sie eine Aufgabe oder eine Reihe von Aufgaben, um Ihre Tabellen zu migrieren.

  Um eine full-load-only Aufgabe zu erstellen, ist keine weitere Endpunktkonfiguration erforderlich.

  Bevor Sie eine Aufgabe für die Erfassung von Datenänderungen erstellen (eine reine CDC-Aufgabe oder eine Volllast-und-CDC-Aufgabe), informieren Sie sich unter [CDC mithilfe einer selbstverwalteten PostgreSQL-Datenbank als Quelle aktivieren AWS DMS](#CHAP_Source.PostgreSQL.Prerequisites.CDC) oder [CDC mit einer AWS-verwalteten PostgreSQL-DB-Instance aktivieren mit AWS DMS](#CHAP_Source.PostgreSQL.RDSPostgreSQL.CDC).

**Topics**
+ [Arbeiten mit selbstverwalteten PostgreSQL-Datenbanken als Quelle in AWS DMS](#CHAP_Source.PostgreSQL.Prerequisites)
+ [Arbeiten mit AWS-verwalteten PostgreSQL-Datenbanken als DMS-Quelle](#CHAP_Source.PostgreSQL.RDSPostgreSQL)
+ [Aktivieren der Erfassung von Datenänderungen (CDC) mithilfe logischer Replikation](#CHAP_Source.PostgreSQL.Security)
+ [Verwenden von nativen CDC-Startpunkten zum Einrichten einer CDC-Last einer PostgreSQL-Quelle](#CHAP_Source.PostgreSQL.v10)
+ [Migration von PostgreSQL zu PostgreSQL mit AWS DMS](#CHAP_Source.PostgreSQL.Homogeneous)
+ [Migration von Babelfish für Amazon Aurora PostgreSQL mit AWS DMS](#CHAP_Source.PostgreSQL.Babelfish)
+ [AWS DMS Artefakte aus einer PostgreSQL-Quelldatenbank entfernen](#CHAP_Source.PostgreSQL.CleanUp)
+ [Zusätzliche Konfigurationseinstellungen bei Verwendung einer PostgreSQL-Datenbank als DMS-Quelle](#CHAP_Source.PostgreSQL.Advanced)
+ [Replica als Quelle für PostgreSQL lesen](#CHAP_Source.PostgreSQL.ReadReplica)
+ [Verwenden der `MapBooleanAsBoolean` PostgreSQL-Endpunkteinstellung](#CHAP_Source.PostgreSQL.ConnectionAttrib.Endpointsetting)
+ [Endpunkteinstellungen und zusätzliche Verbindungsattribute (ECAs) bei Verwendung von PostgreSQL als DMS-Quelle](#CHAP_Source.PostgreSQL.ConnectionAttrib)
+ [Einschränkungen bei Verwendung einer PostgreSQL-Datenbank als DMS-Quelle](#CHAP_Source.PostgreSQL.Limitations)
+ [Quelldatentypen für PostgreSQL](#CHAP_Source-PostgreSQL-DataTypes)

## Arbeiten mit selbstverwalteten PostgreSQL-Datenbanken als Quelle in AWS DMS
<a name="CHAP_Source.PostgreSQL.Prerequisites"></a>

Mit einer selbstverwalteten PostgreSQL-Datenbank als Quelle können Sie Daten entweder in eine andere PostgreSQL-Datenbank oder in eine der anderen Zieldatenbanken migrieren, die von unterstützt werden. AWS DMS Bei der Datenbankquelle kann es sich um eine On-Premises-Datenbank oder eine selbstverwaltete Engine handeln, die auf einer Amazon-EC2-Instance ausgeführt wird. Sie können eine DB-Instance sowohl für Volllast- als auch für CDC-Aufgaben verwenden.

### Voraussetzungen für die Verwendung einer selbstverwalteten PostgreSQL-Datenbank als Quelle AWS DMS
<a name="CHAP_Source.PostgreSQL.Prerequisites.SelfManaged"></a>

Führen Sie vor der Migration von Daten aus einer selbstverwalteten PostgreSQL-Quelldatenbank die folgenden Schritte aus: 
+ Stellen Sie sicher, dass Sie eine PostgreSQL-Datenbank der Version 9.4.x oder höher verwenden.
+ Erteilen Sie für Volllast-und-CDC- oder reine CDC-Aufgaben Superuser-Berechtigungen für das Benutzerkonto, das für die PostgreSQL-Quelldatenbank angegeben ist. Das Benutzerkonto erfordert Superuser-Berechtigungen, um auf replikationsspezifische Funktionen in der Quelle zugreifen zu können. Das DMS-Benutzerkonto benötigt SELECT-Berechtigungen für alle Spalten, um Tabellen erfolgreich zu migrieren. Falls Berechtigungen für Spalten fehlen, erstellt DMS die Zieltabelle mithilfe regulärer DMS-Datentypzuordnungen, was zu Unterschieden in den Metadaten und zu Fehlern bei Aufgaben führt.
+ Fügen Sie der `pg_hba.conf` Konfigurationsdatei die IP-Adresse des AWS DMS Replikationsservers hinzu und aktivieren Sie Replikations- und Socket-Verbindungen. Ein Beispiel folgt.

  ```
              # Replication Instance
              host all all 12.3.4.56/00 md5
              # Allow replication connections from localhost, by a user with the
              # replication privilege.
              host replication dms 12.3.4.56/00 md5
  ```

  Die Konfigurationsdatei `pg_hba.conf` von PostgreSQL steuert die Clientauthentifizierung. (HBA steht für hostbasierte Authentifizierung) Die Datei wird üblicherweise im Datenverzeichnis des Datenbankclusters gespeichert. 
+ Wenn Sie eine Datenbank als Quelle für die logische Replikation konfigurieren, AWS DMS siehe [CDC mithilfe einer selbstverwalteten PostgreSQL-Datenbank als Quelle aktivieren AWS DMS](#CHAP_Source.PostgreSQL.Prerequisites.CDC)

**Anmerkung**  
Einige AWS DMS Transaktionen befinden sich für einige Zeit im Leerlauf, bevor sie von der DMS-Engine wieder verwendet werden. Über den Parameter `idle_in_transaction_session_timeout` in PostgreSQL-Versionen 9.6 und höher können Sie für Transaktionen im Leerlauf ein Timeout und Fehlschlagen veranlassen. Beenden Sie Transaktionen im Leerlauf nicht, wenn Sie AWS DMS verwenden. 

### CDC mithilfe einer selbstverwalteten PostgreSQL-Datenbank als Quelle aktivieren AWS DMS
<a name="CHAP_Source.PostgreSQL.Prerequisites.CDC"></a>

AWS DMS unterstützt die Erfassung von Änderungsdaten (CDC) mithilfe logischer Replikation. Legen Sie die folgenden Parameter und Werte in der Konfigurationsdatei `postgresql.conf` fest, um die logische Replikation einer selbstverwalteten PostgreSQL-Quelldatenbank zu aktivieren:
+ Set `wal_level = logical`.
+ Legen Sie für `max_replication_slots` einen Wert größer als 1 fest.

  Legen Sie den Wert `max_replication_slots` gemäß der Anzahl der Aufgaben fest, die Sie ausführen möchten. Wenn Sie beispielsweise fünf Aufgaben ausführen möchten, legen Sie mindestens fünf Slots fest.. Slots werden automatisch geöffnet, sobald eine Aufgabe gestartet wird und bleiben geöffnet, selbst wenn die Aufgabe nicht mehr ausgeführt wird. Löschen Sie offene Slots unbedingt manuell. Beachten Sie, dass DMS beim Löschen der Aufgabe automatisch Replikations-Slots löscht, sofern DMS den Slot erstellt hat.
+ Legen Sie für `max_wal_senders` einen Wert größer als 1 fest.

  Der Parameter `max_wal_senders` legt die Anzahl der Aufgaben fest, die gleichzeitig ausgeführt werden können.
+ Der Parameter `wal_sender_timeout` beendet Replikationsverbindungen, die länger als die angegebene Anzahl von Millisekunden inaktiv sind. Der Standardwert für eine On-Premises-PostgreSQL-Datenbank beträgt 60 000 Millisekunden (60 Sekunden). Wenn Sie den Wert auf 0 (Null) festlegen, wird der Timeout-Mechanismus deaktiviert. Dies ist eine gültige Einstellung für DMS.

  Wenn Sie den Wert `wal_sender_timeout` auf einen anderen Wert als Null festlegen, benötigt eine DMS-Aufgabe mit CDC mindestens 10 000 Millisekunden (10 Sekunden) und schlägt fehl, wenn der Wert unter 10 000 liegt. Halten Sie den Wert unter 5 Minuten, um eine Verzögerung während eines Multi-AZ-Failovers einer DMS-Replikations-Instance zu vermeiden.

Einige Parameter sind statisch und können nur beim Serverstart festgelegt werden. Änderungen an ihren Einträgen in der Konfigurationsdatei (für eine selbstverwaltete Datenbank) oder der DB-Parametergruppe (für eine Datenbank von RDS für PostgreSQL) werden ignoriert, bis der Server neu gestartet wird. Weitere Informationen finden Sie in der [PostgreSQL-Dokumentation](https://www.postgresql.org/docs/current/intro-whatis.html).

Weitere Informationen zum Aktivieren von CDC finden Sie unter [Aktivieren der Erfassung von Datenänderungen (CDC) mithilfe logischer Replikation](#CHAP_Source.PostgreSQL.Security).

## Arbeiten mit AWS-verwalteten PostgreSQL-Datenbanken als DMS-Quelle
<a name="CHAP_Source.PostgreSQL.RDSPostgreSQL"></a>

Sie können eine AWS-verwaltete PostgreSQL-DB-Instance als Quelle für verwenden. AWS DMS Sie können sowohl Volllast- als auch CDC-Aufgaben mit einer von AWS verwalteten PostgreSQL-Quelle ausführen. 

### Voraussetzungen für die Verwendung einer AWS-verwalteten PostgreSQL-Datenbank als DMS-Quelle
<a name="CHAP_Source.PostgreSQL.RDSPostgreSQL.Prerequisites"></a>

Gehen Sie vor der Migration von Daten aus einer AWS-verwalteten PostgreSQL-Quelldatenbank wie folgt vor:
+ Wir empfehlen, dass Sie ein AWS Benutzerkonto mit den erforderlichen Mindestberechtigungen für die PostgreSQL-DB-Instance als Benutzerkonto für den PostgreSQL-Quellendpunkt für verwenden. AWS DMS Von der Verwendung des Hauptkontos wird abgeraten. Das Konto muss über die Rolle `rds_superuser` und die Rolle `rds_replication` verfügen. Die Rolle `rds_replication` erteilt Berechtigungen zur Verwaltung von logischen Slots und zum Streamen von Daten mithilfe von logischen Slots.

  Erstellen Sie vom Hauptbenutzerkonto aus mehrere Objekte für das verwendete Konto. Informationen dazu, wie Sie diese erstellen, finden Sie unter [Migrieren einer Datenbank von Amazon RDS für PostgreSQL ohne Verwendung des Hauptbenutzerkontos](#CHAP_Source.PostgreSQL.RDSPostgreSQL.NonMasterUser).
+ Wenn sich Ihre Quelldatenbank in einer Virtual Private Cloud (VPC) befindet, wählen Sie die VPC-Sicherheitsgruppe aus, die Zugriff auf die DB-Instance bietet, in der sich die Datenbank befindet. Dies ist erforderlich, damit die DMS-Replikations-Instance eine Verbindung mit der Quell-DB-Instance herstellen kann. Wenn sich die Datenbank und die DMS-Replikations-Instance in derselben VPC befinden, fügen Sie die entsprechende Sicherheitsgruppe ihren eigenen Regeln für eingehenden Datenverkehr hinzu.

**Anmerkung**  
Einige AWS DMS Transaktionen sind für einige Zeit inaktiv, bevor sie von der DMS-Engine wieder verwendet werden. Über den Parameter `idle_in_transaction_session_timeout` in PostgreSQL-Versionen 9.6 und höher können Sie für Transaktionen im Leerlauf ein Timeout und Fehlschlagen veranlassen. Beenden Sie Transaktionen im Leerlauf nicht, wenn Sie AWS DMS verwenden.

### CDC mit einer AWS-verwalteten PostgreSQL-DB-Instance aktivieren mit AWS DMS
<a name="CHAP_Source.PostgreSQL.RDSPostgreSQL.CDC"></a>

AWS DMS unterstützt CDC auf Amazon RDS-PostgreSQL-Datenbanken, wenn die DB-Instance für die logische Replikation konfiguriert ist. In der folgenden Tabelle wird die logische Replikationskompatibilität jeder AWS-verwalteten PostgreSQL-Version zusammengefasst. 


|  PostgreSQL-Version  |  AWS DMS Unterstützung bei Volllast   |  AWS DMS CDC-Unterstützung  | 
| --- | --- | --- | 
|  Aurora PostgreSQL Version 2.1 mit Kompatibilität mit PostgreSQL 10.5 (oder niedriger)  |  Ja  |  Nein  | 
|  Aurora PostgreSQL Version 2.2 mit Kompatibilität mit PostgreSQL 10.6 (oder höher)   |  Ja  |  Ja  | 
|  RDS für PostgreSQL mit Kompatibilität mit PostgreSQL 10.21 (oder höher)  |  Ja  |  Ja  | 

**So aktivieren Sie die logische Replikation für eine RDS PostgreSQL DB-Instance**

1. Verwenden Sie das AWS Hauptbenutzerkonto für die PostgreSQL-DB-Instance als Benutzerkonto für den PostgreSQL-Quellendpunkt. Das Masterbenutzerkonto hat die erforderlichen Rollen für die CDC-Einrichtung. 

   Wenn Sie ein anderes als das Hauptbenutzerkonto verwenden, müssen Sie vom Hauptbenutzerkonto aus mehrere Objekte für das verwendete Konto erstellen. Weitere Informationen finden Sie unter [Migrieren einer Datenbank von Amazon RDS für PostgreSQL ohne Verwendung des Hauptbenutzerkontos](#CHAP_Source.PostgreSQL.RDSPostgreSQL.NonMasterUser).

1. Legen Sie den Parameter `rds.logical_replication` in der DB-CLUSTER-Parametergruppe auf 1 fest. Für das Wirksamwerden dieses statischen Parameters ist ein Neustart der DB-Instance erforderlich. Im Rahmen der Anwendung dieses Parameters legt AWS DMS die Parameter `wal_level`, `max_wal_senders`, `max_replication_slots` und `max_connections` fest. Diese Parameteränderungen können die WAL-Erzeugung (Write Ahead Log) erhöhen. Setzen Sie `rds.logical_replication` also nur, wenn Sie logische Replikationsslots verwenden.

1. Der Parameter `wal_sender_timeout` beendet Replikationsverbindungen, die länger als die angegebene Anzahl von Millisekunden inaktiv sind. Die Standardeinstellung für eine AWS-verwaltete PostgreSQL-Datenbank ist 30000 Millisekunden (30 Sekunden). Wenn Sie den Wert auf 0 (Null) festlegen, wird der Timeout-Mechanismus deaktiviert. Dies ist eine gültige Einstellung für DMS.

   Wenn Sie den Wert `wal_sender_timeout` auf einen anderen Wert als Null festlegen, benötigt eine DMS-Aufgabe mit CDC mindestens 10 000 Millisekunden (10 Sekunden) und schlägt fehl, wenn der Wert zwischen 0 und 10 000 liegt. Halten Sie den Wert unter 5 Minuten, um eine Verzögerung während eines Multi-AZ-Failovers einer DMS-Replikations-Instance zu vermeiden.

1.  Stellen Sie sicher, dass der Wert des Parameters `max_worker_processes` in Ihrer DB-Cluster-Parametergruppe gleich oder höher als die kombinierten Gesamtwerte von `max_logical_replication_workers`, `autovacuum_max_workers` und `max_parallel_workers` ist. Eine hohe Anzahl von Hintergrund-Worker-Prozessen kann sich auf die Anwendungs-Workloads auf kleinen Instances auswirken. Überwachen Sie daher die Leistung Ihrer Datenbank, wenn Sie für `max_worker_processes` einen höheren Wert als den Standardwert festlegen.

1.  Wenn Sie Aurora PostgreSQL als Quelle mit CDC verwenden, setzen Sie den Wert auf. `synchronous_commit` `ON`

**So verwenden Sie PostgreSQL MultiAZ DB Cluster Read Replica für CDC (laufende Replikation)**

1. Setzen Sie die `sync_replication_slots` Parameter `rds.logical_replication` und in Ihrer DB-CLUSTER-Parametergruppe auf 1. Diese statischen Parameter erfordern einen Neustart der DB-Instance, damit sie wirksam werden.

1. Führen Sie den folgenden Befehl aus, um die `awsdms_ddl_audit` Tabelle auf Writer zu erstellen und die `objects_schema` durch den Namen des zu verwendenden Schemas zu ersetzen:

   ```
   CREATE TABLE objects_schema.awsdms_ddl_audit
   (
     c_key    bigserial primary key,
     c_time   timestamp,    -- Informational
     c_user   varchar(64),  -- Informational: current_user
     c_txn    varchar(16),  -- Informational: current transaction
     c_tag    varchar(24),  -- Either 'CREATE TABLE' or 'ALTER TABLE' or 'DROP TABLE'
     c_oid    integer,      -- For future use - TG_OBJECTID
     c_name   varchar(64),  -- For future use - TG_OBJECTNAME
     c_schema varchar(64),  -- For future use - TG_SCHEMANAME. For now - holds current_schema
     c_ddlqry  text         -- The DDL query associated with the current DDL event
   );
   ```

1. Führen Sie den folgenden Befehl aus, um die `awsdms_intercept_ddl` Funktion zu erstellen und die `objects_schema` durch den Namen des zu verwendenden Schemas zu ersetzen:

   ```
   CREATE OR REPLACE FUNCTION objects_schema.awsdms_intercept_ddl()
     RETURNS event_trigger
   LANGUAGE plpgsql
   SECURITY DEFINER
     AS $$
     declare _qry text;
   BEGIN
     if (tg_tag='CREATE TABLE' or tg_tag='ALTER TABLE' or tg_tag='DROP TABLE' or tg_tag = 'CREATE TABLE AS') then
            SELECT current_query() into _qry;
            insert into objects_schema.awsdms_ddl_audit
            values
            (
            default,current_timestamp,current_user,cast(TXID_CURRENT()as varchar(16)),tg_tag,0,'',current_schema,_qry
            );
            delete from objects_schema.awsdms_ddl_audit;
   end if;
   END;
   $$;
   ```

1. Führen Sie den folgenden Befehl aus, um den `awsdms_intercept_ddl` Event-Trigger zu erstellen:

   ```
   CREATE EVENT TRIGGER awsdms_intercept_ddl ON ddl_command_end EXECUTE PROCEDURE objects_schema.awsdms_intercept_ddl();
   ```

   Stellen Sie sicher, dass alle Benutzer und Rollen, die auf diese Ereignisse zugreifen, über die erforderlichen DDL-Berechtigungen verfügen. Beispiel:

   ```
   grant all on public.awsdms_ddl_audit to public;
   grant all on public.awsdms_ddl_audit_c_key_seq to public;
   ```

1. Erstellen Sie einen Replikationsslot auf Writer:

   ```
   SELECT * FROM pg_create_logical_replication_slot('dms_read_replica_slot', 'test_decoding', false, true);
   ```

1. Stellen Sie sicher, dass der Replikationssteckplatz auf Reader verfügbar ist:

   ```
   select * from pg_catalog.pg_replication_slots where slot_name = 'dms_read_replica_slot';
   
   slot_name            |plugin       |slot_type|datoid|database|temporary|active|active_pid|xmin|catalog_xmin|restart_lsn|confirmed_flush_lsn|wal_status|safe_wal_size|two_phase|inactive_since               |conflicting|invalidation_reason|failover|synced|
   ---------------------+-------------+---------+------+--------+---------+------+----------+----+------------+-----------+-------------------+----------+-------------+---------+-----------------------------+-----------+-------------------+--------+------+
   dms_read_replica_slot|test_decoding|logical  |     5|postgres|false    |false |          |    |3559        |0/180011B8 |0/180011F0         |reserved  |             |true     |2025-02-10 15:45:04.083 +0100|false      |                   |false   |false |
   ```

1. Erstellen Sie den DMS-Quellendpunkt für Read Replica und legen Sie den Namen des logischen Replikationssteckplatzes über das zusätzliche Verbindungsattribut fest:

   ```
   slotName=dms_read_replica_slot;
   ```

1. Erstellen und starten Sie die CDC/FL\$1CDC-Aufgabe.
**Anmerkung**  
Bei CDC/FL\$1CDC-Migrationen betrachtet DMS die Startzeit der Aufgabe als CDC-Startposition. Alle älteren Versionen aus LSNs dem Replikationssteckplatz werden ignoriert.

### Migrieren einer Datenbank von Amazon RDS für PostgreSQL ohne Verwendung des Hauptbenutzerkontos
<a name="CHAP_Source.PostgreSQL.RDSPostgreSQL.NonMasterUser"></a>

In Einzelfällen können Sie das Hauptbenutzerkonto für die DB-Instance von Amazon RDS PostgreSQL, die Sie als Quelle verwenden, nicht verwenden. In diesen Fällen erstellen Sie mehrere Objekte, um Data Definition Language (DDL)-Ereignisse zu erfassen. Sie erstellen diese Objekte in dem Konto, das nicht das Masterkonto ist, und dann erstellen Sie einen Auslöser im Masterbenutzerkonto.

**Anmerkung**  
Wenn Sie die Endpunkteinstellung `CaptureDdls` am Quellendpunkt auf `false` festlegen, müssen Sie folgende Tabelle/folgenden Auslöser in der Quelldatenbank nicht erstellen.

Gehen Sie wie folgt vor, um diese Objekte zu erstellen.

**So erstellen Sie Objekte**

1. Wählen Sie das Schema aus, in dem die Objekte erstellt werden sollen. Das Standardschema ist `public`. Stellen Sie sicher, dass das Schema vorhanden ist und dass das `OtherThanMaster`-Konto darauf zugreifen kann. 

1. Melden Sie sich mit dem anderen Benutzerkonto (nicht dem Hauptkonto) (hier das Konto `OtherThanMaster`) bei der PostgreSQL-DB-Instance an.

1. Erstellen Sie die Tabelle `awsdms_ddl_audit`, indem Sie den folgenden Befehl ausführen. Ersetzen Sie dabei `objects_schema` im folgenden Code durch den Namen des zu verwendenden Schemas.

   ```
   CREATE TABLE objects_schema.awsdms_ddl_audit
   (
     c_key    bigserial primary key,
     c_time   timestamp,    -- Informational
     c_user   varchar(64),  -- Informational: current_user
     c_txn    varchar(16),  -- Informational: current transaction
     c_tag    varchar(24),  -- Either 'CREATE TABLE' or 'ALTER TABLE' or 'DROP TABLE'
     c_oid    integer,      -- For future use - TG_OBJECTID
     c_name   varchar(64),  -- For future use - TG_OBJECTNAME
     c_schema varchar(64),  -- For future use - TG_SCHEMANAME. For now - holds current_schema
     c_ddlqry  text         -- The DDL query associated with the current DDL event
   );
   ```

1. Erstellen Sie die Funktion `awsdms_intercept_ddl`, indem Sie den folgenden Befehl ausführen und dabei `objects_schema` im folgenden Code durch den Namen des zu verwendenden Schemas ersetzen.

   ```
   CREATE OR REPLACE FUNCTION objects_schema.awsdms_intercept_ddl()
     RETURNS event_trigger
   LANGUAGE plpgsql
   SECURITY DEFINER
     AS $$
     declare _qry text;
   BEGIN
     if (tg_tag='CREATE TABLE' or tg_tag='ALTER TABLE' or tg_tag='DROP TABLE' or tg_tag = 'CREATE TABLE AS') then
            SELECT current_query() into _qry;
            insert into objects_schema.awsdms_ddl_audit
            values
            (
            default,current_timestamp,current_user,cast(TXID_CURRENT()as varchar(16)),tg_tag,0,'',current_schema,_qry
            );
            delete from objects_schema.awsdms_ddl_audit;
   end if;
   END;
   $$;
   ```

1. Melden Sie sich vom `OtherThanMaster`-Konto ab und melden Sie sich mit einem Konto an, dem die `rds_superuser`-Rolle zugewiesen ist.

1. Erstellen Sie den Ereignisauslöser `awsdms_intercept_ddl`, indem Sie den folgenden Befehl ausführen.

   ```
   CREATE EVENT TRIGGER awsdms_intercept_ddl ON ddl_command_end 
   EXECUTE PROCEDURE objects_schema.awsdms_intercept_ddl();
   ```

1. Stellen Sie sicher, dass alle Benutzer und Rollen, die auf diese Ereignisse zugreifen, über die erforderlichen DDL-Berechtigungen verfügen. Beispiel:

   ```
   grant all on public.awsdms_ddl_audit to public;
   grant all on public.awsdms_ddl_audit_c_key_seq to public;
   ```

Wenn Sie das vorangegangene Verfahren ausgeführt haben, können Sie den AWS DMS -Quellendpunkt mithilfe des `OtherThanMaster`-Kontos erstellen.

**Anmerkung**  
Diese Ereignisse werden durch die Anweisungen `CREATE TABLE`, `ALTER TABLE` und `DROP TABLE` ausgelöst.

## Aktivieren der Erfassung von Datenänderungen (CDC) mithilfe logischer Replikation
<a name="CHAP_Source.PostgreSQL.Security"></a>

Sie können das native PostgreSQL-Feature zur logischen Replikation verwenden, um CDC während einer Datenbankmigration für PostgreSQL-Quellen zu aktivieren. Sie können dieses Feature mit einer selbstverwalteten PostgreSQL- und einer DB-Instance von Amazon RDS für PostgreSQL verwenden. Dieser Ansatz reduziert Ausfallzeiten und stellt sicher, dass die Zieldatenbank mit der PostgreSQL-Quelldatenbank synchronisiert ist.

AWS DMS unterstützt CDC für PostgreSQL-Tabellen mit Primärschlüsseln. Wenn eine Tabelle keinen Primärschlüssel hat, enthalten die Write-Ahead-Logs (WAL) kein Vorher-Bild der Datenbankzeile. In diesem Fall kann DMS die Tabelle nicht aktualisieren. Sie können dann zusätzliche Konfigurationseinstellungen verwenden und die Tabellenreplikatidentität als Problemumgehung verwenden. Bei diesem Ansatz können jedoch zusätzliche Protokolle generiert werden. Es wird empfohlen, die Tabellenreplikatidentität erst nach sorgfältigen Tests als Problemumgehung zu verwenden. Weitere Informationen finden Sie unter [Zusätzliche Konfigurationseinstellungen bei Verwendung einer PostgreSQL-Datenbank als DMS-Quelle](#CHAP_Source.PostgreSQL.Advanced).

**Anmerkung**  
REPLICA IDENTITY FULL wird mit einem Plug-in für logische Dekodierung unterstützt, aber nicht mit dem Plug-in pglogical. Weitere Informationen finden Sie in der [Dokumentation zu pglogical](https://github.com/2ndQuadrant/pglogical#primary-key-or-replica-identity-required).

 AWS DMS Verwendet bei Volllast- und nur CDC- und CDC-Aufgaben logische Replikationssteckplätze, um WAL-Protokolle für die Replikation aufzubewahren, bis die Protokolle dekodiert sind. Beim Neustart (nicht bei der Fortsetzung) einer Volllast-und-CDC- oder einer reinen CDC-Aufgabe wird der Replikations-Slot neu erstellt.

**Anmerkung**  
Für die logische Dekodierung verwendet DMS entweder das Plugin test\$1decoding oder pglogical. Wenn das Plug-in pglogical in einer PostgreSQL-Quelldatenbank verfügbar ist, erstellt DMS einen Replikations-Slot mithilfe von pglogical, andernfalls wird das Plug-in test\$1decoding verwendet. Weitere Informationen zum Plug-in test\$1decoding finden Sie in der [Dokumentation zu PostgreSQL](https://www.postgresql.org/docs/9.4/test-decoding.html).  
Wenn der Datenbankparameter `max_slot_wal_keep_size` auf einen anderen Wert als den Standardwert festgelegt ist und die `restart_lsn` eines Replikations-Slots um mehr als diese Größe hinter der aktuellen LSN zurückbleibt, schlägt die DMS-Aufgabe aufgrund des Entfernens der erforderlichen WAL-Dateien fehl.

### Konfigurieren des Plug-ins pglogical
<a name="CHAP_Source.PostgreSQL.Security.Pglogical"></a>

Das als PostgreSQL-Erweiterung implementierte Plug-in pglogical ist ein logisches Replikationssystem und Modell für die selektive Datenreplikation. In der folgenden Tabelle sind die PostgreSQL-Quelldatenbankversionen aufgeführt, die das Plug-in pglogical unterstützen.


|  PostgreSQL-Quelle   |  Unterstützung für pglogical  | 
| --- | --- | 
|  Selbstverwaltetes PostgreSQL 9.4 oder höher  |  Ja  | 
|  Amazon RDS PostgreSQL 9.5 oder niedriger  |  Nein  | 
|  Amazon RDS PostgreSQL 9.6 oder höher  |  Ja  | 
|  Aurora PostgreSQL 1.x bis 2.5.x  |  Nein  | 
|  Aurora PostgreSQL 2.6.x oder höher  |  Ja  | 
|  Aurora PostgreSQL 3.3.x oder höher  |  Ja  | 

Bevor Sie pglogical für die Verwendung mit konfigurieren AWS DMS, aktivieren Sie zunächst die logische Replikation für Change Data Capture (CDC) in Ihrer PostgreSQL-Quelldatenbank. 
+ Informationen zur Aktivierung der logischen Replikation für CDC auf *selbstverwalteten* PostgreSQL-Quelldatenbanken finden Sie unter [CDC mithilfe einer selbstverwalteten PostgreSQL-Datenbank als Quelle aktivieren AWS DMS](#CHAP_Source.PostgreSQL.Prerequisites.CDC).
+ Informationen zur Aktivierung der logischen Replikation für CDC auf *von AWS verwalteten* PostgreSQL-Quelldatenbanken finden Sie unter [CDC mit einer AWS-verwalteten PostgreSQL-DB-Instance aktivieren mit AWS DMS](#CHAP_Source.PostgreSQL.RDSPostgreSQL.CDC).

Nachdem die logische Replikation in Ihrer PostgreSQL-Quelldatenbank aktiviert wurde, führen Sie die folgenden Schritte aus, um pglogical für die Verwendung mit DMS zu konfigurieren.

**Um das pglogical-Plugin für die logische Replikation in einer PostgreSQL-Quelldatenbank zu verwenden mit AWS DMS**

1. Erstellen Sie eine pglogical-Erweiterung für Ihre PostgreSQL-Quelldatenbank:

   1. Legen Sie den richtigen Parameter fest:
      + Legen Sie für selbstverwaltete PostgreSQL-Datenbanken den Datenbankparameter `shared_preload_libraries= 'pglogical'` fest.
      + Legen Sie für PostgreSQL-Datenbanken in Amazon RDS und Datenbanken der Amazon-Aurora-PostgreSQL-kompatiblen Edition den Parameter `shared_preload_libraries` in derselben RDS-Parametergruppe auf `pglogical` fest.

   1. Starten Sie Ihre PostgreSQL-Quelldatenbank neu.

   1. Führen Sie in der PostgreSQL-Datenbank den Befehl `create extension pglogical;` aus.

1. Führen Sie den folgenden Befehl aus, um zu überprüfen, ob pglogical erfolgreich installiert wurde:

   `select * FROM pg_catalog.pg_extension`

Sie können jetzt eine AWS DMS Aufgabe erstellen, die die Erfassung von Änderungsdaten für Ihren PostgreSQL-Quelldatenbank-Endpunkt durchführt.

**Anmerkung**  
Wenn Sie pglogical in Ihrer PostgreSQL-Quelldatenbank nicht aktivieren, verwendet AWS DMS standardmäßig das Plug-in `test_decoding`. Wenn pglogical für die logische Dekodierung aktiviert ist, wird standardmäßig pglogical verwendet. AWS DMS Sie können jedoch das zusätzliche Verbindungsattribut `PluginName` festlegen, um stattdessen das Plug-in `test_decoding` zu verwenden.

## Verwenden von nativen CDC-Startpunkten zum Einrichten einer CDC-Last einer PostgreSQL-Quelle
<a name="CHAP_Source.PostgreSQL.v10"></a>

Legen Sie zum Aktivieren von nativen CDC-Startpunkten mit PostgreSQL als Quelle das zusätzliche Verbindungsattribut `slotName` auf den Namen eines vorhandenen logischen Replikations-Slots fest, wenn Sie den Endpunkt erstellen. Dieser logische Replikations-Slot enthält laufende Änderungen ab dem Zeitpunkt der Erstellung des Endpunkts und unterstützt somit die Replikation ab einem früheren Zeitpunkt. 

PostgreSQL schreibt die Datenbankänderungen in WAL-Dateien, die nur verworfen werden, nachdem ein AWS DMS erfolgreich Änderungen aus dem logischen Replikations-Slot gelesen hat. Durch die Verwendung von logischen Replikations-Slots können protokollierte Änderungen vor dem Löschen geschützt werden, bevor sie vom Replikationsmodul verwendet werden. 

Je nach Änderungsrate und Verbrauch können Änderungen in einem logischen Replikations-Slot jedoch zu einer erhöhten Festplattennutzung führen. Es wird empfohlen, Speicherplatznutzungsalarme in der PostgreSQL-Quell-Instance festzulegen, wenn Sie logische Replikations-Slots verwenden. Weitere Informationen zur Einstellung des zusätzlichen Verbindungsattributs `slotName` finden Sie unter [Endpunkteinstellungen und zusätzliche Verbindungsattribute (ECAs) bei Verwendung von PostgreSQL als DMS-Quelle](#CHAP_Source.PostgreSQL.ConnectionAttrib).

Im folgenden Verfahren wird dieser Ansatz näher erläutert.

**So verwenden Sie einen systemeigenen CDC-Startpunkt zum Einrichten einer CDC-Last eines PostgreSQL-Quellendpunkts:**

1. Identifizieren Sie den logischen Replikations-Slot, der von einer früheren Replikationsaufgabe (einer übergeordneten Aufgabe) verwendet wird, die Sie als Startpunkt verwenden möchten. Fragen Sie dann die `pg_replication_slots` Ansicht in Ihrer Quelldatenbank ab, um sicherzustellen, dass dieser Slot keine aktiven Verbindungen hat. Wenn dies doch der Fall ist, lösen Sie sie auf und beenden Sie sie, bevor Sie fortfahren.

   Für die folgenden Schritte gehen Sie davon aus, dass Ihr logischer Replikations-Slot `abc1d2efghijk_34567890_z0yx98w7_6v54_32ut_1srq_1a2b34c5d67ef` ist. 

1. Erstellen Sie einen neuen Quellendpunkt, der die folgenden zusätzlichen Verbindungsattributeinstellungen enthält.

   ```
   slotName=abc1d2efghijk_34567890_z0yx98w7_6v54_32ut_1srq_1a2b34c5d67ef;
   ```

1. Erstellen Sie mithilfe der Konsole AWS CLI oder AWS DMS der API eine neue Aufgabe, die nur für CDC bestimmt ist. Wenn Sie die CLI verwenden, können Sie beispielsweise den folgenden Befehl `create-replication-task` ausführen. 

   ```
   aws dms create-replication-task --replication-task-identifier postgresql-slot-name-test 
   --source-endpoint-arn arn:aws:dms:us-west-2:012345678901:endpoint:ABCD1EFGHIJK2LMNOPQRST3UV4 
   --target-endpoint-arn arn:aws:dms:us-west-2:012345678901:endpoint:ZYX9WVUTSRQONM8LKJIHGF7ED6 
   --replication-instance-arn arn:aws:dms:us-west-2:012345678901:rep:AAAAAAAAAAA5BB4CCC3DDDD2EE 
   --migration-type cdc --table-mappings "file://mappings.json" --cdc-start-position "4AF/B00000D0" 
   --replication-task-settings "file://task-pg.json"
   ```

   Im vorhergehenden Befehl werden die folgenden Optionen festgelegt:
   + Die Option `source-endpoint-arn` ist auf den neuen Wert festgelegt, den Sie in Schritt 2 erstellt haben.
   + Die Option `replication-instance-arn` ist auf den gleichen Wert wie für die übergeordnete Aufgabe aus Schritt 1 festgelegt.
   + Die Optionen `table-mappings` und `replication-task-settings` sind auf die gleichen Werte wie für die übergeordnete Aufgabe aus Schritt 1 festgelegt.
   + Die Option `cdc-start-position` ist auf einen Startpositionswert festgelegt. Um diese Startposition zu finden, fragen Sie entweder die `pg_replication_slots`-Ansicht Ihrer Quelldatenbank ab oder sehen Sie sich die Konsolendetails für die übergeordnete Aufgabe in Schritt 1 an. Weitere Informationen finden Sie unter [Bestimmen eines nativen CDC-Startpunkts](CHAP_Task.CDC.md#CHAP_Task.CDC.StartPoint.Native).

   Gehen Sie wie folgt vor, um den benutzerdefinierten CDC-Startmodus zu aktivieren, wenn Sie eine neue reine CDC-Aufgabe über die AWS DMS Konsole erstellen:
   + Wählen Sie im Abschnitt **Aufgabeneinstellungen** für **CDC-Startmodus für Quelltransaktionen** die Option **Benutzerdefinierten CDC-Startmodus aktivieren** aus.
   + Wählen Sie für **Benutzerdefinierter CDC-Startpunkt für Quelltransaktionen** die Option **Protokollsequenznummer angeben** aus. Geben Sie die Systemänderungsnummer an oder wählen Sie **Wiederherstellungsprüfpunkt angeben** aus und geben Sie einen Wiederherstellungsprüfpunkt an.

   Wenn diese CDC-Task ausgeführt wird, wird ein AWS DMS Fehler ausgelöst, wenn der angegebene logische Replikationssteckplatz nicht existiert. Außerdem wird ein Fehler ausgelöst, wenn die Aufgabe nicht mit einer gültigen Einstellung für `cdc-start-position` erstellt wurde.

Wenn Sie native CDC-Startpunkte mit dem Plug-in pglogical verwenden und einen neuen Replikations-Slot verwenden möchten, führen Sie die folgenden Einrichtungsschritte durch, bevor Sie eine CDC-Aufgabe erstellen. 

**So verwenden Sie einen neuen Replikations-Slot, der nicht zuvor als Teil einer anderen DMS-Aufgabe erstellt wurde**

1. Erstellen Sie einen Replikations-Slot wie im Folgenden dargestellt:

   ```
   SELECT * FROM pg_create_logical_replication_slot('replication_slot_name', 'pglogical');
   ```

1. Nachdem die Datenbank den Replikations-Slot erstellt hat, rufen Sie die Werte **restart\$1lsn** und **confirmed\$1flush\$1lsn** für den Slot ab und notieren Sie sich diese:

   ```
   select * from pg_replication_slots where slot_name like 'replication_slot_name';
   ```

   Beachten Sie, dass die native CDC-Startposition für eine CDC-Aufgabe, die nach dem Replikations-Slot erstellt wurde, nicht älter sein darf als der Wert **confirmed\$1flush\$1lsn**.

   Informationen zu den Werten **restart\$1lsn** und **confirmed\$1flush\$1lsn** finden Sie unter [pg\$1replication\$1slots](https://www.postgresql.org/docs/14/view-pg-replication-slots.html) 

1. Erstellen Sie einen pglogical-Knoten.

   ```
   SELECT pglogical.create_node(node_name := 'node_name', dsn := 'your_dsn_name');
   ```

1. Erstellen Sie mit der Funktion `pglogical.create_replication_set` zwei Replikationssätze. Der erste Replikationssatz verfolgt Aktualisierungen und Löschungen für Tabellen mit Primärschlüsseln nach. Der zweite Replikationssatz verfolgt nur Einfügungen nach und hat den gleichen Namen wie der erste Replikationssatz mit dem zusätzlichen Präfix „i“.

   ```
   SELECT pglogical.create_replication_set('replication_slot_name', false, true, true, false);
   SELECT pglogical.create_replication_set('ireplication_slot_name', true, false, false, true);
   ```

1. Fügen Sie dem Replikationssatz eine Tabelle hinzu.

   ```
   SELECT pglogical.replication_set_add_table('replication_slot_name', 'schemaname.tablename', true);
   SELECT pglogical.replication_set_add_table('ireplication_slot_name', 'schemaname.tablename', true);
   ```

1. Legen Sie das zusätzliche Verbindungsattribut (Extra Connection Attribute, ECA) wie folgt fest, wenn Sie Ihren Quellendpunkt erstellen.

   ```
   PluginName=PGLOGICAL;slotName=slot_name;
   ```

Sie können jetzt mithilfe des neuen Replikations-Slots eine reine CDC-Aufgabe mit einem nativen PostgreSQL-Startpunkt erstellen. Weitere Informationen zum Plug-in pglogical finden Sie in der [Dokumentation zu pglogical 3.7](https://www.enterprisedb.com/docs/pgd/3.7/pglogical/).

## Migration von PostgreSQL zu PostgreSQL mit AWS DMS
<a name="CHAP_Source.PostgreSQL.Homogeneous"></a>

Wenn Sie von einer anderen Datenbank-Engine als PostgreSQL zu einer PostgreSQL-Datenbank migrieren, AWS DMS ist dies fast immer das beste Migrationstool, das Sie verwenden können. Wenn Sie jedoch aus einer PostgreSQL-Datenbank auf eine PostgreSQL-Datenbank migrieren, können native PostgreSQL-Tools effektiver sein.

### Verwenden nativer PostgreSQL-Tools zur Datenmigration
<a name="CHAP_Source.PostgreSQL.Homogeneous.Native"></a>

Unter den folgenden Bedingungen empfehlen wir die Verwendung von PostgreSQL-Datenbank-Migrationstools wie `pg_dump`: 
+ Sie möchten eine homogene Migration durchführen, bei der die PostgreSQL-Ausgangsdatenbank auf eine PostgreSQL-Zieldatenbank migriert werden soll. 
+ Sie möchten eine komplette Datenbank migrieren.
+ Die nativen Tools erlauben Ihnen, Ihre Daten mit einer minimalen Ausfallzeit zu migrieren. 

Das Dienstprogramm pg\$1dump verwendet den Befehl COPY, um ein Schema sowie eine Daten-Dumpdatei einer PostgreSQL-Datenbank zu erstellen. Das durch pg\$1dump erzeugte Dump-Skript lädt Daten in eine Datenbank mit dem gleichen Namen und erstellt die Tabellen, Indizes und Fremdschlüssel neu. Verwenden Sie den Befehl `pg_restore` und den Parameter `-d`, um die Daten in einer Datenbank mit einem anderen Namen wiederherzustellen.

Wenn Sie Daten aus einer PostgreSQL-Quelldatenbank, die auf EC2 ausgeführt wird, auf ein Ziel in Amazon RDS für PostgreSQL migrieren, können Sie das Plug-in pglogical verwenden.

Weitere Informationen zum Importieren einer PostgreSQL-Datenbank in Amazon RDS für PostgreSQL oder die Amazon-Aurora-PostgreSQL-kompatible Edition finden Sie unter [https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/PostgreSQL.Procedural.Importing.html](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/PostgreSQL.Procedural.Importing.html).

### Migration von Daten von PostgreSQL auf PostgreSQL mit DMS
<a name="CHAP_Source.PostgreSQL.Homogeneous.DMS"></a>

 AWS DMS kann Daten beispielsweise von einer lokalen PostgreSQL-Quelldatenbank auf eine Amazon RDS for PostgreSQL- oder Aurora PostgreSQL-Zielinstanz migrieren. Kern- oder grundlegende PostgreSQL-Datentypen werden meist erfolgreich migriert.

**Anmerkung**  
Wenn Sie partitionierte Tabellen aus einer PostgreSQL-Quelle in ein PostgreSQL-Ziel replizieren, müssen Sie die übergeordnete Tabelle nicht als Teil der Auswahlkriterien in der DMS-Aufgabe angeben. Wenn Sie die übergeordnete Tabelle angeben, werden Daten in untergeordneten Tabellen auf dem Ziel dupliziert, was möglicherweise eine PK-Verletzung verursacht. Wenn in den Auswahlkriterien für die Tabellenzuordnung nur untergeordnete Tabellen ausgewählt werden, wird die übergeordnete Tabelle automatisch aufgefüllt.

Datentypen, die in der Quelldatenbank, aber nicht in der Zieldatenbank unterstützt werden, werden möglicherweise nicht erfolgreich migriert. AWS DMS streamt einige Datentypen als Zeichenfolgen, wenn der Datentyp unbekannt ist. Bei einigen Datentypen, wie z. B. XML und JSON, können kleine Dateien erfolgreich migriert werden, bei großen Dokumenten schlägt die Migration jedoch fehl. 

Beachten Sie bei der Datentypmigration Folgendes:
+ In einigen Fällen spezifiziert der PostgreSQL-Datentyp NUMERIC (p, s) keine Genauigkeit und Skalierung. Für DMS-Versionen 3.4.2 und früher verwendet DMS standardmäßig eine Präzision von 28 und eine Skalierung von 6, NUMERIC(28,6). Beispielsweise wird der Wert 0,611111104488373 von der Quelle in 0,611111 auf dem PostgreSQL-Ziel konvertiert.
+ Eine Tabelle mit einem ARRAY-Datentyp muss über einen Primärschlüssel verfügen. Eine Tabelle mit einem ARRAY-Datentyp ohne Primärschlüssel wird während Volllastvorgängen angehalten.

Die folgende Tabelle enthält PostgreSQL-Quelldatentypen sowie Erläuterungen dazu, ob diese erfolgreich migriert werden können:


| Datentyp | Wird erfolgreich migriert | Wird teilweise migriert | migriert nicht | Kommentare | 
| --- | --- | --- | --- | --- | 
| INTEGER | X |  |  |  | 
| SMALLINT | X |  |  |  | 
| BIGINT | X |  |  |  | 
| NUMERIC/DECIMAL(p,s) |  | X |  | Wobei 0 < p < 39 und 0 < s | 
| NUMERIC/DECIMAL |  | X |  | Wobei p > 38 oder p=s=0 | 
| REAL | X |  |  |  | 
| DOUBLE | X |  |  |  | 
| SMALLSERIAL | X |  |  |  | 
| SERIAL | X |  |  |  | 
| BIGSERIAL | X |  |  |  | 
| MONEY | X |  |  |  | 
| CHAR |  | X |  | Ohne angegebene Genauigkeit | 
| CHAR(n) | X |  |  |  | 
| VARCHAR |  | X |  | Ohne angegebene Genauigkeit | 
| VARCHAR (n) | X |  |  |  | 
| TEXT | X |  |  |  | 
| BYTEA | X |  |  |  | 
| TIMESTAMP (ZEITSTEMPEL) | X |  |  | Positive und negative Unendlichkeitswerte werden auf „9999-12-31 23:59:59“ bzw. „4713-01-01 00:00:00 BC“ gekürzt. | 
| TIMESTAMP WITH TIME ZONE |  | X |  |  | 
| DATE | X |  |  |  | 
| TIME | X |  |  |  | 
| TIME WITH TIME ZONE | X |  |  |  | 
| INTERVAL |  | X |  |  | 
| BOOLEAN | X |  |  |  | 
| ENUM |  |  | X |  | 
| CIDR | X |  |  |  | 
| INET |  |  | X |  | 
| MACADDR |  |  | X |  | 
| TSVECTOR |  |  | X |  | 
| TSQUERY |  |  | X |  | 
| XML |  | X |  |  | 
| POINT | X |  |  | PostGIS Spatial Data-Typ | 
| LINE |  |  | X |  | 
| LSEG |  |  | X |  | 
| BOX |  |  | X |  | 
| PATH |  |  | X |  | 
| POLYGON | X |  |  | PostGIS Spatial Data-Typ | 
| CIRCLE |  |  | X |  | 
| JSON |  | X |  |  | 
| ARRAY | X |  |  | Primärschlüssel erforderlich | 
| COMPOSITE |  |  | X |  | 
| RANGE |  |  | X |  | 
| LINESTRING | X |  |  | PostGIS Spatial Data-Typ | 
| MULTIPOINT | X |  |  | PostGIS Spatial Data-Typ | 
| MULTILINESTRING | X |  |  | PostGIS Spatial Data-Typ | 
| MULTIPOLYGON | X |  |  | PostGIS Spatial Data-Typ | 
| GEOMETRYCOLLECTION | X |  |  | PostGIS Spatial Data-Typ | 

### Migrieren räumlicher PostGIS-Datentypen
<a name="CHAP_Source.PostgreSQL.DataTypes.Spatial"></a>

*Räumliche Daten* identifizieren die Geometrieinformationen eines Objekts oder einer Position im Raum. Objektrelationale PostgreSQL-Datenbanken unterstützen räumliche PostGIS-Datentypen. 

Stellen Sie vor der Migration räumlicher PostgreSQL-Datenobjekte sicher, dass das Plug-in PostGIS auf globaler Ebene aktiviert ist. Dadurch wird sichergestellt, dass die exakten räumlichen Quelldatenspalten für die PostgreSQL-Ziel-DB-Instance AWS DMS erstellt werden.

 AWS DMS Unterstützt für homogene Migrationen von PostgreSQL zu PostgreSQL die Migration von geometrischen und geographischen (geodätischen Koordinaten) PostGIS-Datenobjekttypen und -Subtypen wie die folgenden:
+  POINT 
+  LINESTRING 
+  POLYGON 
+  MULTIPOINT 
+  MULTILINESTRING 
+  MULTIPOLYGON 
+  GEOMETRYCOLLECTION 

## Migration von Babelfish für Amazon Aurora PostgreSQL mit AWS DMS
<a name="CHAP_Source.PostgreSQL.Babelfish"></a>

Sie können die Quelltabellen von Babelfish for Aurora PostgreSQL auf alle unterstützten Zielendpunkte migrieren, indem Sie. AWS DMS

Wenn Sie Ihren AWS DMS Quellendpunkt mit der DMS-Konsole, der API oder den CLI-Befehlen erstellen, setzen Sie die Quelle auf **Amazon Aurora PostgreSQL** und den Datenbanknamen auf. **babelfish\$1db** Stellen Sie sicher, dass im Abschnitt **Endpunkteinstellungen** auf **Babelfish und auf den **DatabaseMode**Namen der Babelfish-T-SQL-Quelldatenbank** gesetzt **BabelfishDatabaseName**ist. Anstatt den Babelfish-TCP-Port zu verwenden**1433**, verwenden Sie den Aurora PostgreSQL-TCP-Port. **5432**

Sie müssen Ihre Tabellen erstellen, bevor Sie Daten migrieren, um sicherzustellen, dass DMS die richtigen Datentypen und Tabellenmetadaten verwendet. Wenn Sie Ihre Tabellen nicht auf dem Ziel erstellen, bevor Sie die Migration ausführen, erstellt DMS die Tabellen möglicherweise mit falschen Datentypen und Berechtigungen.

### Hinzufügen von Transformationsregeln zu Ihrer Migrationsaufgabe
<a name="CHAP_Source.PostgreSQL.Babelfish.Transform"></a>

Wenn Sie eine Migrationsaufgabe für eine Babelfish-Quelle erstellen, müssen Sie Transformationsregeln einbeziehen, die sicherstellen, dass DMS die vorab erstellten Zieltabellen verwendet.

Wenn Sie bei der Definition Ihres Babelfish for PostgreSQL-Clusters den Migrationsmodus für mehrere Datenbanken festgelegt haben, fügen Sie eine Transformationsregel hinzu, die den Schemanamen in das T-SQL-Schema umbenennt. Wenn der T-SQL-Schemaname beispielsweise lautet und Ihr Babelfish for PostgreSQL-Schemaname lautet`dbo`, benennen Sie das Schema um `mydb_dbo``dbo`, sodass es eine Transformationsregel verwendet. Den Namen des PostgreSQL-Schemas finden Sie unter [Babelfish-Architektur](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/babelfish-architecture.html) im *Amazon* Aurora Aurora-Benutzerhandbuch. 

Wenn Sie den Einzeldatenbankmodus verwenden, müssen Sie keine Transformationsregel verwenden, um Datenbankschemas umzubenennen. PostgreSQL-Schemanamen haben eine one-to-one Zuordnung zu den Schemanamen in der T-SQL-Datenbank.

Das folgende Beispiel für eine Transformationsregel zeigt, wie der Schemaname von `mydb_dbo` zurück in umbenannt wird: `dbo`

```
{
    "rules": [
        {
            "rule-type": "transformation",
            "rule-id": "566251737",
            "rule-name": "566251737",
            "rule-target": "schema",
            "object-locator": {
                "schema-name": "mydb_dbo"
            },
            "rule-action": "rename",
            "value": "dbo",
            "old-value": null
        },
        {
            "rule-type": "selection",
            "rule-id": "566111704",
            "rule-name": "566111704",
            "object-locator": {
                "schema-name": "mydb_dbo",
                "table-name": "%"
            },
            "rule-action": "include",
            "filters": []
        }
    ]
}
```

### Einschränkungen für die Verwendung eines PostgreSQL-Quellendpunkts mit Babelfish-Tabellen
<a name="CHAP_Source.PostgreSQL.Babelfish.Limitations"></a>

Die folgenden Einschränkungen gelten, wenn Sie einen PostgreSQL-Quellendpunkt mit Babelfish-Tabellen verwenden:
+ DMS unterstützt nur die Migration von Babelfish Version 16.2/15.6 und höher sowie von DMS Version 3.5.3 und höher.
+ DMS repliziert keine Änderungen der Babelfish-Tabellendefinition auf den Zielendpunkt. Eine Behelfslösung für diese Einschränkung besteht darin, zuerst die Änderungen der Tabellendefinition auf das Ziel anzuwenden und dann die Tabellendefinition auf der Babelfish-Quelle zu ändern.
+ Wenn Sie Babelfish-Tabellen mit dem BYTEA-Datentyp erstellen, konvertiert DMS sie bei der Migration zu SQL Server als Ziel in den `varbinary(max)` Datentyp.
+ DMS unterstützt den Full-LOB-Modus für binäre Datentypen nicht. Verwenden Sie stattdessen den eingeschränkten LOB-Modus für binäre Datentypen.
+ DMS unterstützt keine Datenvalidierung für Babelfish als Quelle.
+ **Verwenden Sie für die Aufgabeneinstellung **Target-Tabellenvorbereitungsmodus** nur die Modi „**Nichts tun**“ oder „Kürzen“.** Verwenden Sie nicht den Modus **Tabellen am Ziel ablegen**. Wenn Sie **Drop-Tabellen auf Target** verwenden, erstellt DMS möglicherweise die Tabellen mit falschen Datentypen.
+ Wenn Sie die fortlaufende Replikation (CDC oder Volllast und CDC) verwenden, setzen Sie das `PluginName` zusätzliche Verbindungsattribut (ECA) auf. `TEST_DECODING`
+ DMS unterstützt keine Replikation (CDC oder Full Load und CDC) von partitionierten Tabellen für Babelfish als Quelle.

## AWS DMS Artefakte aus einer PostgreSQL-Quelldatenbank entfernen
<a name="CHAP_Source.PostgreSQL.CleanUp"></a>

 AWS DMS Erstellt zum Erfassen von DDL-Ereignissen verschiedene Artefakte in der PostgreSQL-Datenbank, wenn eine Migrationsaufgabe gestartet wird. Wenn die Aufgabe abgeschlossen ist, können Sie diese Artefakte entfernen.

Entfernen Sie die Artefakte, indem Sie die folgenden Anweisungen ausgeben (in der Reihenfolge, in der sie angezeigt werden), wobei `{AmazonRDSMigration}` das Schema ist, in dem die Artefakte erstellt wurden. Ein Schema sollte nur mit äußerster Vorsicht gelöscht werden. Löschen Sie nie ein Schema, das in Betrieb ist, besonders kein öffentliches.

```
drop event trigger awsdms_intercept_ddl;
```

Der Ereignisauslöser gehört keinem bestimmten Schema an.

```
drop function {AmazonRDSMigration}.awsdms_intercept_ddl()
drop table {AmazonRDSMigration}.awsdms_ddl_audit
drop schema {AmazonRDSMigration}
```

## Zusätzliche Konfigurationseinstellungen bei Verwendung einer PostgreSQL-Datenbank als DMS-Quelle
<a name="CHAP_Source.PostgreSQL.Advanced"></a>

Sie können zusätzliche Konfigurationseinstellungen für die Migration von Daten aus einer PostgreSQL-Datenbank auf zwei Weisen hinzufügen:
+ Sie können dem Attribut "Extra Connection" Werte hinzufügen, um DDL-Ereignisse zu erfassen und um das Schema anzugeben, in dem die betrieblichen DDL-Datenbankartefakte erstellt werden. Weitere Informationen finden Sie unter [Endpunkteinstellungen und zusätzliche Verbindungsattribute (ECAs) bei Verwendung von PostgreSQL als DMS-Quelle](#CHAP_Source.PostgreSQL.ConnectionAttrib).
+ Sie können Verbindungszeichenfolgenparameter außer Kraft setzen. Wählen Sie diese Option aus, um einen der folgenden Schritte auszuführen:
  + Geben Sie interne AWS DMS Parameter an. Solche Parameter sind selten erforderlich und werden daher nicht auf der Benutzeroberfläche angezeigt.
  + Geben Sie Pass-Through-Werte (Passthru) für den spezifischen Datenbankclient an. AWS DMS schließt Passthrough-Parameter in die Verbindungszeichenfolge ein, die an den Datenbankclient übergeben wird.
+ Mithilfe des Parameters auf Tabellenebene `REPLICA IDENTITY` in PostgreSQL-Versionen 9.4 und höher können Sie kontrollieren, welche Informationen in Write-Ahead-Logs () geschrieben werden. WALs Dies dient insbesondere dazu, Zeilen zu identifizieren, WALs die aktualisiert oder gelöscht werden. `REPLICA IDENTITY FULL`zeichnet die alten Werte aller Spalten in der Zeile auf. Gehen Sie bei jeder Tabelle `REPLICA IDENTITY FULL` vorsichtig `FULL` vor, da eine zusätzliche Anzahl WALs davon möglicherweise nicht erforderlich ist. Weitere Informationen finden Sie unter [ALTER TABLE-REPLICA IDENTITY](https://www.postgresql.org/docs/devel/sql-altertable.html). 

## Replica als Quelle für PostgreSQL lesen
<a name="CHAP_Source.PostgreSQL.ReadReplica"></a>

Verwenden Sie PostgreSQL-Read-Replicas als CDC-Quellen, um die Belastung der Primärdatenbank AWS DMS zu reduzieren. Diese Funktion ist ab PostgreSQL 16.x verfügbar und erfordert AWS DMS Version 3.6.1 oder höher. Die Verwendung von Read Replicas für die CDC-Verarbeitung reduziert die betrieblichen Auswirkungen auf Ihre Primärdatenbank.

**Anmerkung**  
Amazon RDS PostgreSQL Version 16.x hat Einschränkungen für die logische Read Replica-Replikation in den Three-AZ-Konfigurationen (TAZ). Für die vollständige Unterstützung der logischen Read Replica-Replikation in TAZ-Bereitstellungen müssen Sie PostgreSQL Version 17.x oder höher verwenden.

### Voraussetzungen
<a name="CHAP_Source.PostgreSQL.ReadReplica.prereq"></a>

Bevor Sie eine Read Replica als CDC-Quelle für verwenden AWS DMS, müssen Sie die logische Replikation sowohl auf der primären Datenbankinstanz als auch auf ihrer Read Replica aktivieren, um eine logische Dekodierung auf einer Read Replica zu erstellen. Führen Sie die folgenden Aktionen durch:
+ Aktivieren Sie die logische Replikation sowohl für Ihre primäre Datenbankinstanz als auch für deren Lesereplikat zusammen mit allen anderen erforderlichen Datenbankparametern. Weitere Informationen finden Sie unter [Arbeiten mit AWS-verwalteten PostgreSQL-Datenbanken als DMS-Quelle](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.PostgreSQL.html#CHAP_Source.PostgreSQL.RDSPostgreSQL).
+ Für reine CDC-Aufgaben erstellen Sie einen Replikationsslot auf der primären (Writer-) Instanz. Weitere Informationen finden Sie unter [Verwenden systemeigener CDC-Startpunkte zum Einrichten eines CDC-Ladens einer PostgreSQL-Quelle](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.PostgreSQL.html#CHAP_Source.PostgreSQL.v10). Diese Aktion ist erforderlich, da Read Replicas die Erstellung eines Replikationsslots nicht unterstützen.
+ Für PostgreSQL Version 16 muss der Slot manuell auf der Read Replica erstellt werden.
+ Für PostgreSQL Version 17 und höher muss der Replikationsslot auf der Primärseite erstellt werden, und er wird automatisch mit der Read Replica synchronisiert.
+ Bei Verwendung von Full Load \$1 CDC oder reinen CDC-Aufgaben AWS DMS können logische Replikationsslots auf primären Instances automatisch verwaltet werden, nicht jedoch auf Read Replicas. Bei Read Replicas der PostgreSQL Version 16 müssen Sie Replikationsslots manuell löschen und neu erstellen, bevor Sie eine Aufgabe neu starten (nicht fortsetzen). Das Überspringen dieses Schritts kann zu Aufgabenfehlern oder falschen CDC-Startpositionen führen. Ab PostgreSQL Version 17 automatisiert die logische Slot-Synchronisation von der primären Instanz aus diesen Prozess.

Nachdem Sie die Voraussetzungen erfüllt haben, können Sie in den Endpunkteinstellungen Ihren AWS DMS Quellendpunkt mit Replikation `SlotName` der Read Replica-Quelle einrichten und Ihre AWS DMS Aufgabe mithilfe systemeigener CDC-Startpunkte konfigurieren. Weitere Informationen finden Sie unter [Endpunkteinstellungen und Zusätzliche Verbindungsattribute (ECAs) bei Verwendung von PostgreSQL als DMS-Quelle](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.PostgreSQL.html#CHAP_Source.PostgreSQL.ConnectionAttrib) und [Verwenden systemeigener CDC-Startpunkte zum Einrichten einer CDC-Last einer](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.PostgreSQL.html#CHAP_Source.PostgreSQL.v10) PostgreSQL-Quelle.

## Verwenden der `MapBooleanAsBoolean` PostgreSQL-Endpunkteinstellung
<a name="CHAP_Source.PostgreSQL.ConnectionAttrib.Endpointsetting"></a>

Sie können PostgreSQL-Endpunkteinstellungen verwenden, um einen booleschen Wert aus Ihrer PostgreSQL-Quelle einem Amazon-Redshift-Ziel als booleschen Wert zuzuordnen. Standardmäßig wird ein BOOLEAN-Typ als varchar(5) migriert. Sie können `MapBooleanAsBoolean` angeben, damit PostgreSQL den booleschen Wert als booleschen Wert migriert, wie im folgenden Beispiel gezeigt.

```
--postgre-sql-settings '{"MapBooleanAsBoolean": true}'
```

Beachten Sie, dass Sie diese Einstellung sowohl am Quell- als auch am Zielendpunkt festlegen müssen, damit sie wirksam wird.

Da MySQL keinen BOOLEAN-Typ hat, sollten Sie bei der Migration von BOOLEAN-Daten nach MySQL eine Transformationsregel anstelle dieser Einstellung verwenden.

## Endpunkteinstellungen und zusätzliche Verbindungsattribute (ECAs) bei Verwendung von PostgreSQL als DMS-Quelle
<a name="CHAP_Source.PostgreSQL.ConnectionAttrib"></a>

Sie können Endpunkteinstellungen und zusätzliche Verbindungsattribute (ECAs) verwenden, um Ihre PostgreSQL-Quelldatenbank zu konfigurieren. Sie geben Endpunkteinstellungen an, wenn Sie den Quellendpunkt mithilfe der AWS DMS Konsole oder mithilfe des `create-endpoint` Befehls in [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html), mit der `--postgre-sql-settings '{"EndpointSetting": "value", ...}'` JSON-Syntax erstellen.

Die folgende Tabelle zeigt die Endpunkteinstellungen ECAs , die Sie mit PostgreSQL als Quelle verwenden können.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/dms/latest/userguide/CHAP_Source.PostgreSQL.html)

## Einschränkungen bei Verwendung einer PostgreSQL-Datenbank als DMS-Quelle
<a name="CHAP_Source.PostgreSQL.Limitations"></a>

Die folgenden Einschränkungen gelten bei der Verwendung von PostgreSQL als Quelle für AWS DMS:
+ AWS DMS funktioniert nicht mit Amazon RDS for PostgreSQL 10.4 oder Amazon Aurora PostgreSQL 10.4, weder als Quelle noch als Ziel.
+ Eine erfasste Tabelle muss über einen Primärschlüssel verfügen. Wenn eine Tabelle keinen Primärschlüssel hat, werden DELETE- und UPDATE-Datensatzoperationen für diese Tabelle AWS DMS ignoriert. Informationen zur Problemumgehung finden Sie unter [Aktivieren der Erfassung von Datenänderungen (CDC) mithilfe logischer Replikation](#CHAP_Source.PostgreSQL.Security). 

  **Hinweis:** Wir empfehlen nicht, ohne Key/Unique Primärindex zu migrieren, da sonst zusätzliche Einschränkungen gelten, wie z. B. „KEINE“ Batch-Anwendungsfähigkeit, vollständige LOB-Fähigkeit, Datenvalidierung und die Unfähigkeit, effizient auf das Redshift-Ziel zu replizieren.
+ AWS DMS ignoriert den Versuch, ein Primärschlüsselsegment zu aktualisieren. In diesen Fällen identifiziert die Zieldatenbank die Aktualisierung als eine, die keine Zeilen aktualisiert hat. Da die Ergebnisse der Aktualisierung eines Primärschlüssels in PostgreSQL jedoch unvorhersehbar sind, werden keine Datensätze in die Ausnahmetabelle geschrieben.
+ AWS DMS unterstützt die Ausführungsoption „**Prozessänderungen anhand eines Zeitstempels starten**“ nicht.
+ AWS DMS repliziert keine Änderungen, die sich aus Partitions- oder Unterpartitionsoperationen (`ADD``DROP`, oder) ergeben. `TRUNCATE`
+ Die Replikation mehrerer Tabellen mit demselben Namen, wobei jeder Name eine andere Groß- und Kleinschreibung hat (z. B. Tabelle1, und Tabelle1) TABLE1, kann zu unvorhersehbarem Verhalten führen. Aufgrund dieses Problems wird diese Art der Replikation AWS DMS nicht unterstützt.
+  AWS DMS Unterstützt in den meisten Fällen die Änderungsverarbeitung der DDL-Anweisungen CREATE, ALTER und DROP für Tabellen. AWS DMS unterstützt diese Änderungsverarbeitung nicht, wenn sich die Tabellen in einem inneren Funktions- oder Prozedurtextblock oder in anderen verschachtelten Konstrukten befinden.

  Die folgende Änderung wird beispielsweise nicht erfasst:

  ```
  CREATE OR REPLACE FUNCTION attu.create_distributors1() RETURNS void
  LANGUAGE plpgsql
  AS $$
  BEGIN
  create table attu.distributors1(did serial PRIMARY KEY,name
  varchar(40) NOT NULL);
  END;
  $$;
  ```
+ Derzeit werden `boolean`-Datentypen in einer PostgreSQL-Quelle als `bit`-Datentyp mit inkonsistenten Werten zu einem SQL-Server-Ziel migriert. Um dieses Problem zu umgehen, erstellen Sie die Tabelle vorab mit einem `VARCHAR(1)` Datentyp für die Spalte (oder lassen AWS DMS Sie die Tabelle erstellen). Dann lassen Sie die nachgeschaltete Verarbeitung ein „F“ als „False“ und ein „T“ als „True“ behandeln.
+ AWS DMS unterstützt keine Änderungsverarbeitung von TRUNCATE-Vorgängen.
+ Der OID LOB-Datentyp wird nicht auf das Ziel migriert.
+ AWS DMS unterstützt den PostGIS-Datentyp nur für homogene Migrationen.
+ Wenn es sich bei Ihrer Quelle um eine PostgreSQL-Datenbank handelt, die On-Premises oder auf einer Amazon-EC2-Instance ausgeführt wird, stellen Sie sicher, dass das Ausgabe-Plug-in test\$1decoding auf dem Quellendpunkt installiert ist. Sie finden dieses Plug-in im PostgreSQL-Paket contrib. Weitere Informationen zum Test-Decodier-Plugin finden Sie in der [PostgreSQL-Dokumentation](https://www.postgresql.org/docs/10/static/test-decoding.html).
+ AWS DMS unterstützt keine Änderungsverarbeitung zum Setzen und Löschen von Spaltenstandardwerten (unter Verwendung der ALTER COLUMN SET DEFAULT-Klausel für ALTER TABLE-Anweisungen).
+ AWS DMS unterstützt keine Änderungsverarbeitung, um die NULL-Zulässigkeit für Spalten festzulegen (unter Verwendung der ALTER COLUMN [SET\$1DROP] NOT NULL-Klausel für ALTER TABLE-Anweisungen).
+ Wenn die logische Replikation aktiviert ist, beträgt die maximale Anzahl von Änderungen, die pro Transaktion im Arbeitsspeicher gespeichert werden, 4 MB. Danach werden die Änderungen auf den Datenträger übertragen. Daher nimmt der Wert für `ReplicationSlotDiskUsage` zu und `restart_lsn` schreitet erst voran, wenn die Transaktion abgeschlossen oder angehalten und das Rollback beendet ist. Da es sich um eine lange Transaktion handelt, kann das Rollback lange dauern. Vermeiden Sie daher lang andauernde Transaktionen oder viele Untertransaktionen, wenn die logische Replikation aktiviert ist. Teilen Sie die Transaktion stattdessen in mehrere kleinere Transaktionen auf. 

  In Aurora PostgreSQL, Versionen 13 und höher, können Sie den `logical_decoding_work_mem` Parameter so einstellen, dass gesteuert wird, wann DMS-Daten auf die Festplatte übertragen. Weitere Informationen finden Sie unter [Dateien in Aurora PostgreSQL ausgeben](CHAP_Troubleshooting_Latency_Source_PostgreSQL.md#CHAP_Troubleshooting_Latency_Source_PostgreSQL_Spill).
+ Eine Tabelle mit einem ARRAY-Datentyp muss über einen Primärschlüssel verfügen. Eine Tabelle mit einem ARRAY-Datentyp ohne Primärschlüssel wird während Volllastvorgängen angehalten.
+ AWS DMS [unterstützt nicht die Migration von Tabellenmetadaten im Zusammenhang mit Tabellenpartitionierung oder Tabellenvererbung.](https://www.postgresql.org/docs/15/ddl-inherit.html) Wenn Sie AWS DMS auf eine partitionierte Tabelle oder eine Tabelle stoßen, die Vererbung verwendet, wird das folgende Verhalten beobachtet:
  + AWS DMS identifiziert und meldet sowohl übergeordnete als auch untergeordnete Tabellen, die an der Partitionierung oder Vererbung in der Quelldatenbank beteiligt sind.
  + **Tabellenerstellung auf Target**: AWS DMS Erstellt die Tabelle in der Zieldatenbank als Standardtabelle (nicht partitioniert, nicht vererbt), wobei die Struktur und Eigenschaften der ausgewählten Tabelle (n) beibehalten werden, jedoch nicht die Partitionierungs- oder Vererbungslogik.
  + **Differenzierung von Datensätzen in geerbten Tabellen**: Bei Tabellen, die Vererbung verwenden, werden Datensätze, die zu untergeordneten Tabellen gehören, beim Auffüllen der übergeordneten Tabelle AWS DMS nicht unterschieden. Daher werden keine SQL-Abfragen mit Syntax wie: `SELECT * FROM ONLY parent_table_name` verwendet.
+ Um partitionierte Tabellen aus einer PostgreSQL-Quelle auf ein PostgreSQL-Ziel zu replizieren, müssen Sie zunächst die über- und untergeordneten Tabellen im Ziel manuell erstellen. Definieren Sie anschließend eine separate Aufgabe, um auf diese Tabellen zu replizieren. Legen Sie die Aufgabenkonfiguration in solchen Fällen auf **Vor dem Laden kürzen** fest.
+ Der PostgreSQL-Datentyp `NUMERIC` verfügt über keine feste Größe. Wenn Sie Daten mit dem Datentyp `NUMERIC`, jedoch ohne Präzision und Skalierung übertagen, verwendet DMS standardmäßig `NUMERIC(28,6)` (mit 28 als Genauigkeit und 6 als Skalierung). Beispielsweise wird der Wert 0,611111104488373 von der Quelle auf dem PostgreSQL-Ziel in 0,611111 konvertiert.
+ AWS DMS unterstützt Aurora PostgreSQL Serverless V1 nur als Quelle für Volllastaufgaben. AWS DMS unterstützt Aurora PostgreSQL Serverless V2 als Quelle für Volllast-, Volllast- und CDC- und reine CDC-Aufgaben.
+ AWS DMS unterstützt nicht die Replikation einer Tabelle mit einem eindeutigen Index, der mit einer Koaleszenzfunktion erstellt wurde.
+ Wenn die Primärschlüsseldefinition für Quelle und Ziel nicht übereinstimmt, sind die Ergebnisse der Replikation möglicherweise nicht vorhersehbar.
+ Bei Verwendung des Features für paralleles Laden wird die Tabellensegmentierung nach Partitionen oder Unterpartitionen nicht unterstützt. Weitere Informationen zum parallelen Laden finden Sie unter [Verwendung des parallelen Ladens für ausgewählte Tabellen und Ansichten](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Tablesettings.md#CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Tablesettings.ParallelLoad). 
+ AWS DMS unterstützt keine verzögerten Beschränkungen.
+ AWS DMS Version 3.4.7 unterstützt PostgreSQL 14.x als Quelle mit diesen Einschränkungen:
  + AWS DMS unterstützt keine Änderungsverarbeitung von zweiphasigen Commits.
  + AWS DMS unterstützt keine logische Replikation, um lange laufende Transaktionen zu streamen.
+ AWS DMS unterstützt CDC für Amazon RDS Proxy for PostgreSQL nicht als Quelle.
+ Bei der Verwendung von [Quellfiltern](CHAP_Tasks.CustomizingTasks.Filters.md), die keine Primärschlüsselspalte enthalten, werden `DELETE`-Operationen nicht erfasst.
+ Wenn Ihre Quelldatenbank auch ein Ziel für ein anderes Replikationssystem eines Drittanbieters ist, werden DDL-Änderungen während CDC möglicherweise nicht migriert. Diese Situation kann das Auslösen des Ereignisauslösers `awsdms_intercept_ddl` verhindern. Ändern Sie diesen Auslöser in der Quelldatenbank wie folgt, um das Problem zu umgehen:

  ```
  alter event trigger awsdms_intercept_ddl enable always;
  ```
+ AWS DMS unterstützt keine Replikation von Änderungen, die an Primärschlüsseldefinitionen in der Quelldatenbank vorgenommen wurden. Wenn die Primärschlüsselstruktur während einer aktiven Replikationsaufgabe geändert wird, werden nachfolgende Änderungen an den betroffenen Tabellen nicht auf das Ziel repliziert.
+ Bei der DDL-Replikation als Teil eines Skripts beträgt die maximale Gesamtzahl der DDL-Befehle pro Skript 8192 und die maximale Gesamtzahl der Zeilen pro Skript 8192 Zeilen.
+ AWS DMS unterstützt keine Materialized Views.
+ Bei Volllast- und CDC-Aufgaben, die eine Read Replica als Quelle verwenden, AWS DMS können keine Replikationsslots auf Read Replicas erstellt werden.

## Quelldatentypen für PostgreSQL
<a name="CHAP_Source-PostgreSQL-DataTypes"></a>

Die folgende Tabelle zeigt die PostgreSQL-Quelldatentypen, die bei der Verwendung unterstützt werden, AWS DMS und die Standardzuweisung zu AWS DMS Datentypen.

Weitere Informationen zum Anzeigen des Datentyps, der im Ziel zugewiesen ist, finden Sie im Abschnitt für den Zielendpunkt, den Sie verwenden.

Weitere Informationen zu AWS DMS Datentypen finden Sie unter. [Datentypen für den AWS Database Migration Service](CHAP_Reference.DataTypes.md)


|  PostgreSQL-Datentypen  |  DMS-Datentypen  | 
| --- | --- | 
|  INTEGER  |  INT4  | 
|  SMALLINT  |  INT2  | 
|  BIGINT  |  INT8  | 
|  NUMERIC (p,s)  |  Wenn die Präzision 0 bis 38 ist, verwenden Sie NUMERIC. Wenn die Präzision 39 oder größer ist, verwenden Sie STRING.  | 
|  DECIMAL(P,S)  |  Wenn die Präzision 0 bis 38 ist, verwenden Sie NUMERIC. Wenn die Präzision 39 oder größer ist, verwenden Sie STRING.  | 
|  REAL  |  REAL4  | 
|  DOUBLE  |  REAL8  | 
|  SMALLSERIAL  |  INT2  | 
|  SERIAL  |  INT4  | 
|  BIGSERIAL  |  INT8  | 
|  MONEY  |  NUMERIC(38,4) Der Datentyp MONEY ist in SQL Server FLOAT zugeordnet.  | 
|  CHAR  |  WSTRING (1)  | 
|  CHAR(N)  |  WSTRING (n)  | 
|  VARCHAR(N)  |  WSTRING (n)  | 
|  TEXT  |  NCLOB  | 
|  ZITATEXT  |  NCLOB  | 
|  BYTEA  |  BLOB  | 
|  TIMESTAMP (ZEITSTEMPEL)  |  DATETIME  | 
|  TIMESTAMP WITH TIME ZONE  |  DATETIME  | 
|  DATE  |  DATE  | 
|  TIME  |  TIME  | 
|  TIME WITH TIME ZONE  |  TIME  | 
|  INTERVAL  |  STRING (128) – 1 JAHR, 2 MONATE, 3 TAGE, 4 STUNDEN, 5 MINUTEN, 6 SEKUNDEN  | 
|  BOOLEAN  |  CHAR (5) "false" oder "true"  | 
|  ENUM  |  STRING (64)  | 
|  CIDR  |  STRING (50)  | 
|  INET  |  STRING (50)  | 
|  MACADDR  |  STRING (18)  | 
|  BIT (n)  |  STRING (n)  | 
|  BIT VARYING (n)  |  STRING (n)  | 
|  UUID  |  STRING  | 
|  TSVECTOR  |  CLOB  | 
|  TSQUERY  |  CLOB  | 
|  XML  |  CLOB  | 
|  POINT  |  STRING (255) "(x,y)"  | 
|  LINE  |  STRING (255) "(x,y,z)"  | 
|  LSEG  |  STRING (255) "((x1,y1),(x2,y2))"  | 
|  BOX  |  STRING (255) "((x1,y1),(x2,y2))"  | 
|  PATH  |  CLOB "((x1,y1),(xn,yn))"  | 
|  POLYGON  |  CLOB "((x1,y1),(xn,yn))"  | 
|  CIRCLE  |  STRING (255) "(x,y),r"  | 
|  JSON  |  NCLOB  | 
|  JSONB  |  NCLOB  | 
|  ARRAY  |  NCLOB  | 
|  COMPOSITE  |  NCLOB  | 
|  HSTORE  |  NCLOB  | 
|  INT4REICHWEITE  |  STRING (255)  | 
|  INT8REICHWEITE  |  STRING (255)  | 
|  NUMRANGE  |  STRING (255)  | 
|  STRRANGE  |  STRING (255)  | 

### Arbeiten mit LOB-Quelldatentypen für PostgreSQL
<a name="CHAP_Source-PostgreSQL-DataTypes-LOBs"></a>

PostgreSQL-Spaltengrößen wirken sich auf die Konvertierung von PostgreSQL-LOB-Datentypen in AWS DMS -Datentypen aus. Um damit zu arbeiten, führen Sie für die folgenden AWS DMS -Datentypen folgende Schritte aus:
+ BLOB – Legen Sie bei der Aufgabenerstellung für **LOB-Grenze begrenzen auf** den Wert **Maximale LOB-Größe (KB)** fest.
+ CLOB — Bei der Replikation wird jedes Zeichen als ein UTF8 Zeichen behandelt. Suchen Sie daher nach der Länge des längsten Zeichentextes in der Spalte, hier als `max_num_chars_text` gezeigt. Nutzen Sie diese Länge, um den Wert für **LOB-Größe begrenzen auf** anzugeben. Wenn die Daten 4-Byte-Zeichen enthalten, multiplizieren Sie diese mit 2, um den Wert **Limit LOB size to (LOB-Größe begrenzen auf)** festzulegen, da dieser in Bytes angegeben wird. In diesem Fall ist **Limit LOB size to (LOB-Größe begrenzen auf)** gleich `max_num_chars_text`, multipliziert mit 2.
+ NCLOB – Die Replikation verarbeitet jedes Zeichen als Doppelbyte-Zeichen. Suchen Sie daher nach der Länge des längsten Zeichentextes in der Spalte (`max_num_chars_text`) und multiplizieren ihn mit 2. Auf diese Weise geben Sie den Wert für **LOB-Größe begrenzen auf** an. In diesem Fall ist **Limit LOB size to (LOB-Größe begrenzen auf)** gleich `max_num_chars_text`, multipliziert mit 2. Wenn die Daten 4-Byte-Zeichen enthalten, multiplizieren Sie diese erneut mit 2. In diesem Fall ist **Limit LOB size to (LOB-Größe begrenzen auf)** gleich `max_num_chars_text`, multipliziert mit 4.

# Verwendung einer MySQL-kompatiblen Datenbank als Quelle für AWS DMS
<a name="CHAP_Source.MySQL"></a>

Mit dem Database Migration Service können Sie Daten aus jeder MySQL-kompatiblen Datenbank (MySQL, MariaDB oder Amazon Aurora MySQL) migrieren. AWS 

Hinweise zu Versionen von MySQL, die als Quelle AWS DMS unterstützt werden, finden Sie unter[Quellen für AWS DMS](CHAP_Introduction.Sources.md). 

Sie können mit SSL Verbindungen zwischen Ihrem MySQL-kompatiblen Endpunkt und der Replikations-Instance verschlüsseln. Weitere Informationen zur Verwendung von SSL mit einem MySQL-kompatiblen Endpunkt finden Sie unter [Verwenden von SSL mit AWS Database Migration Service](CHAP_Security.SSL.md).

In den folgenden Abschnitten bezieht sich der Begriff „selbstverwaltet“ auf Datenbanken, die entweder On-Premises oder in Amazon EC2 installiert sind. Der Begriff „von AWS verwaltet“ bezieht sich auf Datenbanken in Amazon RDS, Amazon Aurora oder Amazon S3.

Weitere Informationen zur Arbeit mit MySQL-kompatiblen Datenbanken und finden Sie in den AWS DMS folgenden Abschnitten.

**Topics**
+ [Migration von MySQL zu MySQL mit AWS DMS](#CHAP_Source.MySQL.Homogeneous)
+ [Verwendung einer beliebigen MySQL-kompatiblen Datenbank als Quelle für AWS DMS](#CHAP_Source.MySQL.Prerequisites)
+ [Verwendung einer selbstverwalteten MySQL-kompatiblen Datenbank als Quelle für AWS DMS](#CHAP_Source.MySQL.CustomerManaged)
+ [Verwendung einer AWS-verwalteten MySQL-kompatiblen Datenbank als Quelle für AWS DMS](#CHAP_Source.MySQL.AmazonManaged)
+ [Einschränkungen bei der Verwendung einer MySQL-Datenbank als Quelle für AWS DMS](#CHAP_Source.MySQL.Limitations)
+ [Unterstützung für XA-Transaktionen](#CHAP_Source.MySQL.XA)
+ [Endpunkteinstellungen bei Verwendung von MySQL als Quelle für AWS DMS](#CHAP_Source.MySQL.ConnectionAttrib)
+ [Quelldatentypen für MySQL](#CHAP_Source.MySQL.DataTypes)

**Anmerkung**  
Bei der Konfiguration von AWS Database Migration Service (AWS DMS) -Zuordnungsregeln ist es wichtig, Platzhalter (%) für Datenbank- oder Schemanamen zu vermeiden. Stattdessen müssen Sie explizit nur die vom Benutzer erstellten Datenbanken angeben, die migriert werden müssen. Die Verwendung eines Platzhalterzeichens schließt alle Datenbanken in den Migrationsprozess ein, einschließlich Systemdatenbanken, die auf der Zielinstanz nicht erforderlich sind. Da der MySQL Amazon RDS-Mastbenutzer nicht über die erforderlichen Berechtigungen verfügt, um Daten in Zielsystemdatenbanken zu importieren, schlägt der Versuch fehl, diese Systemdatenbanken zu migrieren.

## Migration von MySQL zu MySQL mit AWS DMS
<a name="CHAP_Source.MySQL.Homogeneous"></a>

Für eine heterogene Migration, bei der Sie von einer anderen Datenbank-Engine als MySQL zu einer MySQL-Datenbank migrieren, AWS DMS ist dies fast immer das beste Migrationstool. Für eine homogene Migration, bei der Sie von einer MySQL-Datenbank auf eine MySQL-Datenbank migrieren, empfehlen wir jedoch, ein Migrationsprojekt für homogene Datenmigrationen zu verwenden. Bei homogenen Datenmigrationen werden native Datenbanktools verwendet, um im Vergleich zu AWS DMS eine bessere Leistung und Genauigkeit bei der Datenmigration zu erzielen.

## Verwendung einer beliebigen MySQL-kompatiblen Datenbank als Quelle für AWS DMS
<a name="CHAP_Source.MySQL.Prerequisites"></a>

Bevor Sie beginnen, mit einer MySQL-Datenbank als Quelle für zu arbeiten AWS DMS, stellen Sie sicher, dass Sie die folgenden Voraussetzungen erfüllen. Diese Voraussetzungen gelten entweder für selbstverwaltete oder für AWS-verwaltete Quellen.

Sie müssen über ein Konto verfügen AWS DMS , das die Rolle des Replikationsadministrators innehat. Die Rolle benötigt die folgenden Berechtigungen:
+ **REPLICATION CLIENT** – Diese Berechtigung ist nur für CDC-Aufgaben erforderlich. Mit anderen Worten, für full-load-only Aufgaben ist dieses Recht nicht erforderlich. 
**Anmerkung**  
Für MariaDB Version 10.5.2\$1 können Sie BINLOG MONITOR verwenden — es ist ein Ersatz für REPLICATION CLIENT.
+ **REPLICATION SLAVE** – Diese Berechtigung ist nur für CDC-Aufgaben erforderlich. Mit anderen Worten, full-load-only Aufgaben benötigen dieses Recht nicht.
+ **SUPER** – Diese Berechtigung ist nur für MySQL-Versionen vor 5.6.6 erforderlich.

Der AWS DMS Benutzer muss außerdem über SELECT-Rechte für die Quelltabellen verfügen, die für die Replikation vorgesehen sind.

Gewähren Sie die folgenden Rechte, wenn Sie MySQL-spezifische Tests vor der Migration verwenden:

```
grant select on mysql.user to <dms_user>;
grant select on mysql.db to <dms_user>;
grant select on mysql.tables_priv to <dms_user>;
grant select on mysql.role_edges to <dms_user>  #only for MySQL version 8.0.11 and higher
grant select on performance_schema.replication_connection_status to <dms_user>;  #Required for primary instance validation - MySQL version 5.7 and higher only
```

Wenn Sie eine RDS-Quelle verwenden und planen, MySQL-spezifische Tests vor der Migration durchzuführen, fügen Sie die folgende Berechtigung hinzu:

```
grant select on mysql.rds_configuration to <dms_user>;  #Required for binary log retention check
```

Wenn der Parameter `BatchEnable` ist, muss `true` er Folgendes gewähren:

```
grant create temporary tables on `<schema>`.* to <dms_user>;
```

## Verwendung einer selbstverwalteten MySQL-kompatiblen Datenbank als Quelle für AWS DMS
<a name="CHAP_Source.MySQL.CustomerManaged"></a>

Sie können die folgenden selbstverwalteten MySQL-kompatiblen Datenbanken als Quellen für AWS DMS verwenden:
+ MySQL Community Edition
+ MySQL Standard Edition
+ MySQL Enterprise Edition
+ MySQL Cluster Carrier Grade Edition
+ MariaDB Community Edition
+ MariaDB Enterprise Edition
+ MariaDB Column Store

Stellen Sie sicher, dass die binäre Protokollierung aktiviert ist, damit Sie CDC verwenden können. Um die binäre Protokollierung zu aktivieren, müssen die folgenden Parameter in der MySQL-Datei `my.ini` (Windows) oder `my.cnf` (UNIX) konfiguriert werden.


| Parameter | Wert | 
| --- | --- | 
| `server_id` | Legen Sie diesen Parameter auf einen Wert von 1 oder größer fest. | 
| `log-bin` | Legen Sie den Pfad zur binären Protokolldatei fest, z. B. `log-bin=E:\MySql_Logs\BinLog`. Schließen Sie nicht die Dateierweiterung ein. | 
| `binlog_format` | Legen Sie diesen Parameter auf `ROW` fest. Wir empfehlen, diese Einstellung während der Replikation zu verwenden, da es in gewissen Fällen zu Inkonsistenzen bei der Replikation von Daten auf das Ziel kommen kann, wenn `binlog_format` auf `STATEMENT` festgelegt ist. Die Datenbank-Engine schreibt auch ähnlich inkonsistente Daten in das Ziel, wenn `binlog_format` auf `MIXED` festgelegt ist, da die Datenbank-Engine automatisch zur `STATEMENT`-basierten Protokollierung wechselt. Dies kann dazu führen, dass inkonsistente Daten in die Zieldatenbank geschrieben werden. | 
| `expire_logs_days` | Legen Sie diesen Parameter auf einen Wert von 1 oder größer fest. Um zu verhindern, dass zu viel Speicherplatz verwendet wird, empfehlen wir, nicht den Standardwert 0 zu verwenden. | 
| `binlog_checksum` | Setzen Sie diesen Parameter `NONE` für DMS-Version 3.4.7 oder früher auf. | 
| `binlog_row_image` | Legen Sie diesen Parameter auf `FULL` fest. | 
| `log_slave_updates` | Setzen Sie diesen Parameter auf `TRUE`, wenn Sie eine Read Replica von MySQL oder MariaDB als Quelle verwenden. | 

Wenn Sie eine MySQL- oder MariaDB-Read-Replica als Quelle für eine DMS-Migrationsaufgabe im Modus **Vorhandene Daten migrieren und laufende Änderungen replizieren** verwenden, besteht die Möglichkeit eines Datenverlusts. Unter den folgenden Bedingungen schreibt DMS weder bei Volllast noch bei CDC eine Transaktion:
+ Die Transaktion wurde vor dem Start der DMS-Aufgabe für die primäre Instanz festgeschrieben.
+ Die Transaktion wurde aufgrund der Verzögerung zwischen der primären Instanz und dem Replikat erst nach dem Start der DMS-Aufgabe für das Replikat festgeschrieben.

Je länger die Verzögerung zwischen der primären Instanz und dem Replikat ist, desto größer ist die Gefahr eines Datenverlusts.

Sofern Ihre Quelle die (geclusterte) NDB-Datenbank-Engine nutzt, müssen die folgenden Parameter konfiguriert werden, um CDC auf Tabellen zu aktivieren, die diese Speicher-Engine verwenden. Fügen Sie diese Änderungen in der MySQL-Datei `my.ini` (Windows) oder `my.cnf` (UNIX) hinzu.


| Parameter | Wert | 
| --- | --- | 
| `ndb_log_bin` | Legen Sie diesen Parameter auf `ON` fest. Dieser Wert stellt sicher, dass Änderungen in geclusterten Tabellen im binären Protokoll protokolliert werden. | 
| `ndb_log_update_as_write` | Legen Sie diesen Parameter auf `OFF` fest. Dieser Wert verhindert das Schreiben von UPDATE-Anweisungen als INSERT-Anweisungen in das Binärprotokoll. | 
| `ndb_log_updated_only` | Legen Sie diesen Parameter auf `OFF` fest. Dieser Wert stellt sicher, dass das Binärprotokoll die gesamte Zeile enthält und nicht nur die geänderten Spalten. | 

## Verwendung einer AWS-verwalteten MySQL-kompatiblen Datenbank als Quelle für AWS DMS
<a name="CHAP_Source.MySQL.AmazonManaged"></a>

Sie können die folgenden AWS verwalteten MySQL-kompatiblen Datenbanken als Quellen für verwenden: AWS DMS
+ MySQL Community Edition
+ MariaDB Community Edition
+ Amazon Aurora MySQL-Compatible Edition

Wenn Sie eine von AWS-managed MySQL-kompatible Datenbank als Quelle für verwenden, stellen Sie sicher AWS DMS, dass Sie die folgenden Voraussetzungen für CDC erfüllen:
+ Aktivieren Sie automatische Backups auf Instance-Ebene, um Binärprotokolle für RDS für MySQL und für RDS für MariaDB zu aktivieren. Ändern Sie die Variable `binlog_format` in der Parametergruppe, um Binärprotokolle für einen Aurora-MySQL-Cluster zu aktivieren.

  Weitere Informationen zum Einrichten von automatischen Backups finden Sie unter [Working with automated backups](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithAutomatedBackups.html) im *Benutzerhandbuch für Amazon RDS*.

  Weitere Informationen zum Einrichten der Binärprotokollierung für eine Datenbank von Amazon RDS für MySQL finden Sie unter [Setting the binary logging format](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_LogAccess.MySQL.BinaryFormat.html) im *Benutzerhandbuch für Amazon RDS*. 

  Weitere Informationen zum Einrichten der Binärprotokollierung für einen Aurora-MySQL-Cluster finden Sie unter [Wie aktiviere ich die Binärprotokollierung für meinen Amazon-Aurora-MySQL-kompatiblen Cluster?](https://aws.amazon.com/premiumsupport/knowledge-center/enable-binary-logging-aurora/). 
+ Wenn Sie CDC verwenden möchten, aktivieren Sie die Binärprotokollierung. Weitere Informationen zum Einrichten der Binärprotokollierung für eine Datenbank von Amazon RDS für MySQL finden Sie unter [Setting the binary logging format](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_LogAccess.MySQL.BinaryFormat.html) im *Benutzerhandbuch für Amazon RDS*.
+ Stellen Sie sicher, dass die Binärprotokolle für verfügbar sind. AWS DMS Da AWS-managed MySQL-kompatible Datenbanken die Binärprotokolle so schnell wie möglich löschen, sollten Sie die Dauer erhöhen, für die die Protokolle verfügbar bleiben. Um z. B. die Aufbewahrungszeit der Protokolle auf 24 Stunden zu verlängern, führen Sie den folgenden Befehl aus. 

  ```
   call mysql.rds_set_configuration('binlog retention hours', 24);
  ```
+ Stellen Sie den Parameter `binlog_format` auf `"ROW"` ein.
**Anmerkung**  
In MySQL oder MariaDB ist `binlog_format` ein dynamischer Parameter, sodass kein Neustart erforderlich ist, damit der neue Wert wirksam wird. Der neue Wert gilt jedoch nur für neue Sitzungen. Wenn Sie `binlog_format` zu Replikationszwecken in `ROW` ändern, kann Ihre Datenbank weiterhin nachfolgende Binärprotokolle mit dem Format `MIXED` erstellen, sofern diese Sitzungen gestartet wurden, bevor der Wert geändert wurde. Dadurch wird möglicherweise AWS DMS verhindert, dass alle Änderungen in der Quelldatenbank ordnungsgemäß erfasst werden. Wenn Sie die Einstellung `binlog_format` für eine MariaDB- oder MySQL-Datenbank ändern, starten Sie die Datenbank unbedingt neu, um alle vorhandenen Sitzungen zu beenden, oder starten Sie alle Anwendungen neu, die Data Manipulation Language (DML)-Operationen ausführen. Wenn Sie Ihre Datenbank zwingen, alle Sitzungen neu zu starten, nachdem Sie den `binlog_format` Parameter geändert haben, `ROW` wird sichergestellt, dass Ihre Datenbank alle nachfolgenden Änderungen an der Quelldatenbank im richtigen Format schreibt, sodass diese Änderungen ordnungsgemäß erfasst werden AWS DMS können.
+ Stellen Sie den Parameter `binlog_row_image` auf `"Full"` ein. 
+ Setzen Sie den `binlog_checksum` Parameter `"NONE"` für DMS-Version 3.4.7 oder früher auf. Weitere Informationen zum Festlegen von Parametern in Amazon RDS MySQL finden Sie unter [Working with automated backups](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithAutomatedBackups.html) im *Benutzerhandbuch für Amazon RDS*.
+ Wenn Sie ein Lesereplikat von Amazon RDS MySQL oder Amazon RDS MariaDB als Quelle verwenden, aktivieren Sie für das Lesereplikat Backups und stellen Sie sicher, dass der Parameter `log_slave_updates` auf `TRUE` gesetzt ist.

## Einschränkungen bei der Verwendung einer MySQL-Datenbank als Quelle für AWS DMS
<a name="CHAP_Source.MySQL.Limitations"></a>

Wenn Sie eine MySQL-Datenbank als Quelle verwenden, sollten Sie Folgendes beachten:
+  Die Erfassung von Datenänderungen (Change Data Capture, CDC) wird für Amazon RDS MySQL 5.5 oder frühere Versionen nicht unterstützt. Für Amazon RDS MySQL müssen Sie die Version 5.6, 5.7 oder 8.0 verwenden, um CDC zu aktivieren. CDC wird für selbstverwaltete MySQL-5.5-Quellen unterstützt. 
+ Für CDC werden `CREATE TABLE`, `ADD COLUMN` und `DROP COLUMN` zur Änderung des Spaltendatentyps und `renaming a column` unterstützt. `DROP TABLE`, `RENAME TABLE` und Änderungen an anderen Attributen wie beispielsweise Standard-Spaltenwert, Nullfähigkeit für Spalten, Zeichensatz usw. werden jedoch nicht unterstützt.
+  Wenn Sie für partitionierte Tabellen auf der Quelle den **Target-Tabellenvorbereitungsmodus** auf **Tabellen auf Ziel löschen** setzen, AWS DMS wird eine einfache Tabelle ohne Partitionen auf dem MySQL-Ziel erstellt. Wenn Sie partitionierte Tabellen in eine partitionierte Tabelle auf dem Ziel migrieren möchten, erstellen Sie zunächst die partitionierten Tabellen in der MySQL-Zieldatenbank.
+  Die Verwendung einer `ALTER TABLE table_name ADD COLUMN column_name` Anweisung zum Hinzufügen von Spalten am Anfang (FIRST) oder in der Mitte einer Tabelle (AFTER) wird für relationale Ziele nicht unterstützt. Spalten werden stets am Ende der Tabelle hinzugefügt. Wenn das Ziel Amazon S3 oder Amazon Kinesis Data Streams ist, wird das Hinzufügen von Spalten mit FIRST oder AFTER unterstützt.
+ CDC wird nicht unterstützt, wenn ein Tabellenname Groß- und Kleinbuchstaben enthält und die Quell-Engine auf einem Betriebssystem mit Dateinamen ohne Berücksichtigung von Groß-/Kleinschreibung gehostet wird. Ein Beispiel dafür ist Microsoft Windows oder OS X mit HFS\$1.
+ Sie können Aurora MySQL-Compatible Edition Serverless v1 für Volllast verwenden, aber Sie können sie nicht für CDC verwenden. Dies liegt daran, dass Sie die Voraussetzungen für MySQL nicht aktivieren können. Weitere Informationen finden Sie unter [Parameter groups and Aurora Serverless v1](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless.how-it-works.html#aurora-serverless.parameter-groups). 

  Aurora MySQL-Compatible Edition Serverless v2 unterstützt CDC.
+  Das Attribut AUTO\$1INCREMENT auf einer Spalte wird nicht zu einer Spalte in der Zieldatenbank migriert.
+  Das Erfassen von Änderungen, wenn die Binärprotokolle nicht auf Standardblockspeicher gespeichert sind, wird nicht unterstützt. Beispiel: CDC funktioniert nicht, wenn die Binärprotokolle auf Amazon S3 gespeichert werden.
+  AWS DMS erstellt standardmäßig Zieltabellen mit der InnoDB-Speicher-Engine. Falls Sie eine andere Speicher-Engine als InnoDB benötigen, müssen Sie die Tabelle manuell erstellen und dann die Daten mit dem Modus [do nothing](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_GettingStarted.html) migrieren.
+ Sie können Aurora MySQL-Repliken nicht als Quelle verwenden, AWS DMS es sei denn, Ihr DMS-Migrationsaufgabenmodus lautet **Vorhandene Daten migrieren** — nur Volllast.
+  Wenn die MySQL-kompatible Quelle bei Volllast gestoppt wird, wird die AWS DMS Aufgabe nicht mit einem Fehler beendet. Die Aufgabe wird erfolgreich abgeschlossen, aber das Ziel wurde möglicherweise nicht mit der Quelle synchronisiert. Wenn dies geschieht, starten Sie entweder die Aufgabe neu oder Sie laden die betroffenen Tabellen neu.
+  Indizes, die auf einem Teil des Spaltenwerts erstellt wurden, werden nicht migriert. Beispielsweise wird der Index CREATE INDEX first\$1ten\$1chars ON customer (name(10)) nicht auf dem Ziel erstellt.
+ In einigen Fällen ist die Aufgabe so konfiguriert, dass sie nicht repliziert wird LOBs (“ SupportLobs "ist in den Aufgabeneinstellungen falsch oder in der Task-Konsole wurde die **Option LOB-Spalten nicht einbeziehen** ausgewählt). In diesen Fällen migriert AWS DMS keine MEDIUMBLOB-, LONGBLOB-, MEDIUMTEXT- und LONGTEXT-Spalten zum Ziel.

  Spalten des Typs BLOB, TINYBLOB, TEXT und TINYTEXT sind davon nicht betroffen und werden zum Ziel migriert.
+ Temporäre Datentabellen oder systemversionierte Tabellen werden in MariaDB-Quell- und Zieldatenbanken nicht unterstützt.
+ Bei der Migration zwischen zwei Amazon RDS Aurora MySQL-Clustern muss es sich beim RDS Aurora MySQL-Quellendpunkt um eine read/write Instance und nicht um eine Replikat-Instance handeln. 
+ AWS DMS unterstützt derzeit keine Migration von Ansichten für MariaDB.
+ AWS DMS unterstützt keine DDL-Änderungen für partitionierte Tabellen für MySQL. Setzen Sie `skipTableSuspensionForPartitionDdl` auf `true`, um das Sperren von Tabellen bei DDL-Änderungen an Partitionen während CDC zu überspringen.
+ AWS DMS unterstützt nur XA-Transaktionen in Version 3.5.0 und höher. Frühere Versionen unterstützen keine XA-Transaktionen. AWS DMS unterstützt keine XA-Transaktionen in MariaDB Version 10.6 oder höher. Weitere Informationen finden Sie im Folgenden. [Unterstützung für XA-Transaktionen](#CHAP_Source.MySQL.XA)
+ AWS DMS wird nicht GTIDs für die Replikation verwendet, auch wenn die Quelldaten sie enthalten. 
+ AWS DMS unterstützt das erweiterte Binärprotokoll von Aurora MySQL nicht.
+ AWS DMS unterstützt keine Komprimierung von binären Protokolltransaktionen.
+ AWS DMS verbreitet die Ereignisse ON DELETE CASCADE und ON UPDATE CASCADE nicht für MySQL-Datenbanken unter Verwendung der InnoDB-Speicher-Engine. Für diese Ereignisse generiert MySQL keine Binlog-Ereignisse, um die kaskadierten Operationen in den untergeordneten Tabellen widerzuspiegeln. Folglich AWS DMS können die entsprechenden Änderungen nicht in die untergeordneten Tabellen repliziert werden. Weitere Informationen finden Sie unter [Indizes, Fremdschlüssel oder kaskadierende Aktualisierungen oder Löschungen wurden nicht migriert](CHAP_Troubleshooting.md#CHAP_Troubleshooting.MySQL.FKsAndIndexes).
+ AWS DMS erfasst keine Änderungen an berechneten (`VIRTUAL`und`GENERATED ALWAYS`) Spalten. Gehen Sie wie folgt vor, um diese Einschränkung zu umgehen:
  + Erstellen Sie die Zieltabelle vorab in der Zieldatenbank und erstellen Sie die AWS DMS -Aufgabe mit der Einstellung `DO_NOTHING` oder `TRUNCATE_BEFORE_LOAD` für Aufgaben mit vollständigem Laden.
  + Fügen Sie eine Transformationsregel hinzu, um die berechnete Spalte aus dem Aufgabenbereich zu entfernen. Informationen zu Transformationsregeln finden Sie unter [Transformationsregeln und Aktionen](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Transformations.md).
+ Aufgrund interner MySQL-Einschränkungen AWS DMS können BINLOGs nicht mehr als 4 GB verarbeitet werden. BINLOGs Eine Größe von mehr als 4 GB kann zu Fehlern bei DMS-Aufgaben oder anderem unvorhersehbarem Verhalten führen. Sie müssen die Größe der Transaktionen reduzieren, um eine Größe von mehr als 4 GB BINLOGs zu vermeiden.
+ AWS DMS unterstützt keine Backticks (```) oder einfache Anführungszeichen (`'`) in Schema-, Tabellen- und Spaltennamen.
+ AWS DMS migriert keine Daten aus unsichtbaren Spalten in Ihrer Quelldatenbank. Um diese Spalten in Ihren Migrationsbereich aufzunehmen, verwenden Sie die ALTER TABLE-Anweisung, um diese Spalten sichtbar zu machen.

## Unterstützung für XA-Transaktionen
<a name="CHAP_Source.MySQL.XA"></a>

Eine Extended Architecture (XA)-Transaktion ist eine Transaktion, die verwendet werden kann, um eine Reihe von Operationen aus mehreren Transaktionsressourcen in einer einzigen, zuverlässigen globalen Transaktion zusammenzufassen. Eine XA-Transaktion verwendet ein zweiphasiges Commit-Protokoll. Im Allgemeinen kann die Erfassung von Änderungen während offener XA-Transaktionen zu Datenverlust führen. Wenn Ihre Datenbank keine XA-Transaktionen verwendet, können Sie diese Berechtigung und die Konfiguration ignorieren, `IgnoreOpenXaTransactionsCheck` indem Sie den Standardwert verwenden. `TRUE` Gehen Sie wie folgt vor, um mit der Replikation aus einer Quelle zu beginnen, die XA-Transaktionen enthält:
+ Stellen Sie sicher, dass der AWS DMS Endpunktbenutzer über die folgenden Rechte verfügt:

  ```
  grant XA_RECOVER_ADMIN on *.* to 'userName'@'%';
  ```
+ Setzen Sie die Endpunkteinstellung `IgnoreOpenXaTransactionsCheck` auf `false`.

**Anmerkung**  
AWS DMS unterstützt keine XA-Transaktionen auf MariaDB Source DB Version 10.6 oder höher.

## Endpunkteinstellungen bei Verwendung von MySQL als Quelle für AWS DMS
<a name="CHAP_Source.MySQL.ConnectionAttrib"></a>

Sie können Endpunkteinstellungen, ähnlich wie zusätzliche Verbindungsattribute, zum Konfigurieren Ihrer MySQL-Quelldatenbank verwenden. Sie geben die Einstellungen an, wenn Sie den Quellendpunkt mithilfe der AWS DMS Konsole oder mithilfe des `create-endpoint` Befehls in [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html), mit der `--my-sql-settings '{"EndpointSetting": "value", ...}'` JSON-Syntax erstellen.

Die folgende Tabelle zeigt die Endpunkteinstellungen, die Sie mit MySQL als Quelle verwenden können.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/dms/latest/userguide/CHAP_Source.MySQL.html)

## Quelldatentypen für MySQL
<a name="CHAP_Source.MySQL.DataTypes"></a>

Die folgende Tabelle zeigt die Quelldatentypen der MySQL-Datenbank, die bei der Verwendung unterstützt werden, AWS DMS sowie die Standardzuweisung von AWS DMS Datentypen.

Weitere Informationen zum Anzeigen des Datentyps, der im Ziel zugewiesen ist, finden Sie im Abschnitt für den Zielendpunkt, den Sie verwenden.

Weitere Hinweise zu AWS DMS Datentypen finden Sie unter[Datentypen für den AWS Database Migration Service](CHAP_Reference.DataTypes.md).


|  MySQL-Datentypen  |  AWS DMS Datentypen  | 
| --- | --- | 
|  INT  |  INT4  | 
|  BIGINT  |  INT8  | 
|  MEDIUMINT  |  INT4  | 
|  TINYINT  |  INT1  | 
|  SMALLINT  |  INT2  | 
|  UNSIGNED TINYINT  |  UINT1  | 
|  UNSIGNED SMALLINT  |  UINT2  | 
|  UNSIGNED MEDIUMINT  |  UINT4  | 
|  UNSIGNED INT  |  UINT4  | 
|  UNSIGNED BIGINT  |  UINT8  | 
|  DECIMAL(10)  |  NUMERIC (10,0)  | 
|  BINARY  |  BYTES(1)  | 
|  BIT  |  BOOLEAN  | 
|  BIT(64)  |  BYTES(8)  | 
|  BLOB  |  BYTES(65535)  | 
|  LONGBLOB  |  BLOB  | 
|  MEDIUMBLOB  |  BLOB  | 
|  TINYBLOB  |  BYTES(255)  | 
|  DATE  |  DATE  | 
|  DATETIME  |  DATETIME DATETIME ohne einen Wert in Klammern wird ohne Millisekunden repliziert. DATETIME mit einem Wert zwischen 1 und 5 in Klammern (z. B. `DATETIME(5)`) wird mit Millisekunden repliziert. Bei der Replikation einer DATETIME-Spalte bleibt die Uhrzeit im Ziel gleich. Sie wird nicht in UTC konvertiert.  | 
|  TIME  |  STRING  | 
|  TIMESTAMP (ZEITSTEMPEL)  |  DATETIME Bei der Replikation einer TIMESTAMP-Spalte wird die Uhrzeit im Ziel in UTC konvertiert.  | 
|  JAHR  |  INT2  | 
|  DOUBLE  |  REAL8  | 
|  FLOAT  |  REAL(DOUBLE) Wenn die FLOAT-Werte nicht im folgenden Bereich liegen, verwenden Sie eine Transformation, um FLOAT auf STRING abzubilden. Weitere Informationen zu Umwandlungen finden Sie unter [Transformationsregeln und Aktionen](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Transformations.md). Der unterstützte FLOAT-Bereich ist -1,79E\$1308 bis -2,23E-308, 0 und 2,23E-308 bis 1,79E\$1308.  | 
|  VARCHAR (45)  |  WSTRING (45)  | 
|  VARCHAR (2000)  |  WSTRING (2000)  | 
|  VARCHAR (4000)  |  WSTRING (4000)  | 
|  VARBINARY (4000)  |  BYTES (4000)  | 
|  VARBINARY (2000)  |  BYTES (2000)  | 
|  CHAR  |  WSTRING  | 
|  TEXT  |  WSTRING  | 
|  LONGTEXT  |  NCLOB  | 
|  MEDIUMTEXT  |  NCLOB  | 
|  TINYTEXT  |  WSTRING(255)  | 
|  GEOMETRY  |  BLOB  | 
|  POINT  |  BLOB  | 
|  LINESTRING  |  BLOB  | 
|  POLYGON  |  BLOB  | 
|  MULTIPOINT  |  BLOB  | 
|  MULTILINESTRING  |  BLOB  | 
|  MULTIPOLYGON  |  BLOB  | 
|  GEOMETRYCOLLECTION  |  BLOB  | 
|  ENUM  |  ZEICHENFOLGE () *length* Hier *length* ist die Länge des längsten Werts in der ENUM-Datei.  | 
|  SET  |  ZEICHENFOLGE () *length* Hier *length* ist die Gesamtlänge aller Werte im SET, einschließlich Kommas.  | 
|  JSON  |  CLOB  | 

**Anmerkung**  
In einigen Fällen können Sie die Datentypen DATETIME und TIMESTAMP mit einem „Null“-Wert (d. h. 0000-00-00) angeben. Stellen Sie in diesem Fall sicher, dass die Zieldatenbank in der Replikationsaufgabe „Null“-Werte für die Datentypen DATETIME und TIMESTAMP unterstützt. Andernfalls werden diese Werte als "null" im Ziel erfasst.

# Verwendung einer SAP ASE-Datenbank als Quelle für AWS DMS
<a name="CHAP_Source.SAP"></a>

Sie können Daten aus einer SAP Adaptive Server Enterprise (ASE) -Datenbank — früher bekannt als Sybase — migrieren mit. AWS DMS Mit einer SAP ASE-Datenbank als Quelle können Sie Daten in jede der anderen unterstützten Zieldatenbanken migrieren. AWS DMS 

Hinweise zu Versionen von SAP ASE, die als Quelle AWS DMS unterstützt werden, finden Sie unter[Quellen für AWS DMS](CHAP_Introduction.Sources.md).

Weitere Informationen zur Arbeit mit SAP ASE-Datenbanken und AWS DMS finden Sie in den folgenden Abschnitten.

**Topics**
+ [Voraussetzungen für die Verwendung einer SAP ASE-Datenbank als Quelle für AWS DMS](#CHAP_Source.SAP.Prerequisites)
+ [Einschränkungen bei der Verwendung von SAP ASE als Quelle für AWS DMS](#CHAP_Source.SAP.Limitations)
+ [Für die Verwendung von SAP ASE als Quelle sind Berechtigungen erforderlich für AWS DMS](#CHAP_Source.SAP.Security)
+ [Entfernen des Kürzungspunkts](#CHAP_Source.SAP.Truncation)
+ [Endpunkteinstellungen bei Verwendung von SAP ASE als Quelle für AWS DMS](#CHAP_Source.SAP.ConnectionAttrib)
+ [Quelldatentypen für SAP ASE](#CHAP_Source.SAP.DataTypes)

## Voraussetzungen für die Verwendung einer SAP ASE-Datenbank als Quelle für AWS DMS
<a name="CHAP_Source.SAP.Prerequisites"></a>

Gehen Sie wie folgt vor, damit eine SAP ASE-Datenbank als Quelle dienen AWS DMS kann:
+ Aktivieren Sie die SAP ASE-Replikation für Tabellen mit dem Befehl `sp_setreptable`. Weitere Informationen finden Sie unter [Sybase-Infocenter-Archiv]( http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.dc32410_1501/html/refman/X37830.htm). 
+ Deaktivieren Sie `RepAgent` auf der SAP ASE-Datenbank. Weitere Informationen finden Sie unter [Den RepAgent Thread in der Primärdatenbank beenden und deaktivieren](http://infocenter-archive.sybase.com/help/index.jsp?topic=/com.sybase.dc20096_1260/html/mra126ag/mra126ag65.htm). 
+ Um auf einer Windows EC2-Instance, die für nicht-lateinische Zeichen (z. B. Chinesisch) konfiguriert ist, auf SAP ASE Version 15.7 zu replizieren, installieren Sie SAP ASE 15.7 SP121 auf dem Zielcomputer.

**Anmerkung**  
Für die laufende CDC-Replikation (Change Data Capture, Erfassung von Datenänderungen) führt DMS `dbcc logtransfer` und `dbcc log` aus, um Daten aus dem Transaktionsprotokoll zu lesen.

## Einschränkungen bei der Verwendung von SAP ASE als Quelle für AWS DMS
<a name="CHAP_Source.SAP.Limitations"></a>

Die folgenden Einschränkungen gelten, wenn Sie eine SAP ASE-Datenbank als Quelle für AWS DMS verwenden:
+ Sie können für jede SAP ASE-Datenbank nur eine AWS DMS Aufgabe mit laufender Replikation oder CDC ausführen. Sie können mehrere full-load-only Aufgaben parallel ausführen.
+ Es ist nicht möglich, eine Tabelle umzubenennen. Beispielsweise schlägt der folgende Befehl fehl:

  ```
  sp_rename 'Sales.SalesRegion', 'SalesReg;
  ```
+ Es ist nicht möglich, eine Spalte umzubenennen. Beispielsweise schlägt der folgende Befehl fehl:

  ```
  sp_rename 'Sales.Sales.Region', 'RegID', 'COLUMN';
  ```
+ Nullwerte am Ende von Zeichenfolgen binären Datentyps werden gekürzt, wenn sie in der Zieldatenbank repliziert werden. Beispielsweise wird `0x0000000000000000000000000100000100000000` in der Quelltabelle zu `0x00000000000000000000000001000001` in der Zieltabelle.
+ Wenn die Datenbankstandardeinstellung so eingestellt ist, dass keine NULL-Werte zulässig sind, AWS DMS wird die Zieltabelle mit Spalten erstellt, die keine NULL-Werte zulassen. Wenn eine Volllast- oder CDC-Replikationsaufgabe leere Werte enthält, wird daher ein AWS DMS Fehler ausgegeben. Sie können diese Fehler verhindern, indem Sie mithilfe der folgenden Befehle NULL-Werte in der Quelldatenbank zulassen.

  ```
  sp_dboption database_name, 'allow nulls by default', 'true'
  go
  use database_name
  CHECKPOINT
  go
  ```
+ Der Indexbefehl `reorg rebuild` wird nicht unterstützt.
+ AWS DMS unterstützt weder Cluster noch die Verwendung von MSA (Multi-Site Availability) /Warm Standby als Quelle.
+ Wenn der Transformations-Header-Ausdruck `AR_H_TIMESTAMP` in Zuordnungsregeln verwendet wird, werden die Millisekunden für eine hinzugefügte Spalte nicht erfasst.
+ Das Ausführen von Zusammenführungsoperationen während CDC resultiert in einem Fehler, der nicht behoben werden kann. Führen Sie einen Volllastvorgang aus, um das Ziel wieder zu synchronisieren.
+ Rollback-Auslöser-Ereignisse werden für Tabellen, die ein Sperrschema für Datenzeilen verwenden, nicht unterstützt.
+ AWS DMS kann eine Replikationsaufgabe nicht fortsetzen, nachdem eine Tabelle innerhalb des Aufgabenbereichs aus einer SAP-Quelldatenbank gelöscht wurde. Wenn die DMS-Replikationsaufgabe angehalten und eine DML-Operation (INSERT, UPDATE, DELETE) ausgeführt und anschließend die Tabelle gelöscht wurde, müssen Sie die Replikationsaufgabe neu starten.

## Für die Verwendung von SAP ASE als Quelle sind Berechtigungen erforderlich für AWS DMS
<a name="CHAP_Source.SAP.Security"></a>

Um eine SAP ASE-Datenbank als Quelle in einer AWS DMS Aufgabe zu verwenden, müssen Sie Berechtigungen erteilen. Erteilen Sie dem in den AWS DMS Datenbankdefinitionen angegebenen Benutzerkonto die folgenden Berechtigungen in der SAP ASE-Datenbank: 
+ sa\$1role
+ replication\$1role
+ sybase\$1ts\$1role
+ Wenn Sie über die Berechtigung zum Ausführen der `sp_setreptable` gespeicherten Prozedur verfügen müssen, ist standardmäßig die SAP ASE-Replikationsoption AWS DMS aktiviert. Wenn Sie eine Tabelle direkt vom Datenbankendpunkt aus und nicht über sie AWS DMS selbst ausführen `sp_setreptable` möchten, können Sie das `enableReplication` zusätzliche Verbindungsattribut verwenden. Weitere Informationen finden Sie unter [Endpunkteinstellungen bei Verwendung von SAP ASE als Quelle für AWS DMS](#CHAP_Source.SAP.ConnectionAttrib).

## Entfernen des Kürzungspunkts
<a name="CHAP_Source.SAP.Truncation"></a>

Wenn eine Aufgabe gestartet AWS DMS wird, wird ein `$replication_truncation_point` Eintrag in der `syslogshold` Systemansicht erstellt, der darauf hinweist, dass ein Replikationsvorgang im Gange ist. Während der Ausführung AWS DMS wird der Abschneidepunkt für die Replikation in regelmäßigen Abständen entsprechend der Datenmenge, die bereits auf das Ziel kopiert wurde, verschoben.

Nachdem der `$replication_truncation_point` Eintrag eingerichtet wurde, sollten Sie die AWS DMS Aufgabe weiterlaufen lassen, um zu verhindern, dass das Datenbankprotokoll zu groß wird. Wenn Sie die AWS DMS Aufgabe dauerhaft beenden möchten, entfernen Sie den Abschneidepunkt für die Replikation, indem Sie den folgenden Befehl ausführen:

```
dbcc settrunc('ltm','ignore')
```

Nachdem der Kürzungspunkt entfernt wurde, können Sie die AWS DMS Aufgabe nicht fortsetzen. Das Protokoll wird weiterhin automatisch an den Checkpoints gekürzt (falls automatische Kürzung eingestellt ist).

## Endpunkteinstellungen bei Verwendung von SAP ASE als Quelle für AWS DMS
<a name="CHAP_Source.SAP.ConnectionAttrib"></a>

Sie können Endpunkteinstellungen, ähnlich wie zusätzliche Verbindungsattribute, zum Konfigurieren Ihrer SAP-ASE-Quelldatenbank verwenden. Sie geben die Einstellungen an, wenn Sie den Quellendpunkt mithilfe der AWS DMS Konsole oder mithilfe des `create-endpoint` Befehls in [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html), mit der `--sybase-settings '{"EndpointSetting": "value", ...}'` JSON-Syntax erstellen.

Die folgende Tabelle zeigt die Endpunkteinstellungen, die Sie mit SAP ASE als Quelle verwenden können.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/dms/latest/userguide/CHAP_Source.SAP.html)

## Quelldatentypen für SAP ASE
<a name="CHAP_Source.SAP.DataTypes"></a>

Eine Liste der SAP ASE-Quelldatentypen, die bei der Verwendung von Datentypen unterstützt werden, AWS DMS sowie die Standardzuordnung von AWS DMS Datentypen finden Sie in der folgenden Tabelle. AWS DMS unterstützt keine SAP ASE-Quelltabellen mit Spalten des Datentyps Benutzerdefinierter Typ (UDT). Replizierte Spalten mit diesem Datentyp werden als NULL erstellt. 

Weitere Informationen zum Anzeigen des Datentyps, der im Ziel zugewiesen ist, finden Sie im Abschnitt [Ziele für die Datenmigration](CHAP_Target.md) für Ihren Zielendpunkt.

Weitere Hinweise zu AWS DMS Datentypen finden Sie unter. [Datentypen für den AWS Database Migration Service](CHAP_Reference.DataTypes.md)


|  SAP ASE-Datentypen  |  AWS DMS Datentypen  | 
| --- | --- | 
| BIGINT | INT8 | 
| UNSIGNED BIGINT | UINT8 | 
| INT | INT4 | 
| UNSIGNED INT | UINT4 | 
| SMALLINT | INT2 | 
| UNSIGNED SMALLINT | UINT2 | 
| TINYINT | UINT1 | 
| DECIMAL | NUMERIC | 
| NUMERIC | NUMERIC | 
| FLOAT | REAL8 | 
| DOUBLE | REAL8 | 
| REAL | REAL4 | 
| MONEY | NUMERIC | 
| SMALLMONEY | NUMERIC | 
| DATETIME | DATETIME | 
| BIGDATETIME | DATETIME(6) | 
| SMALLDATETIME | DATETIME | 
| DATE | DATE | 
| TIME | TIME | 
| BIGTIME | TIME | 
| CHAR | STRING | 
| UNICHAR | WSTRING | 
| NCHAR | WSTRING | 
| VARCHAR | STRING | 
| UNIVARCHAR | WSTRING | 
| NVARCHAR | WSTRING | 
| BINARY | BYTES | 
| VARBINARY | BYTES | 
| BIT | BOOLEAN | 
| TEXT | CLOB | 
| UNITEXT | NCLOB | 
| IMAGE | BLOB | 

# MongoDB als Quelle verwenden für AWS DMS
<a name="CHAP_Source.MongoDB"></a>

 Hinweise zu Versionen von MongoDB, die als Quelle AWS DMS unterstützt werden, finden Sie unter[Quellen für AWS DMS](CHAP_Introduction.Sources.md). 

Beachten Sie Folgendes im Zusammenhang mit der Unterstützung der MongoDB-Versionen:
+ Versionen von AWS DMS 3.4.5 und höher unterstützen die MongoDB-Versionen 4.2 und 4.4. 
+ Versionen von AWS DMS 3.4.5 und höher sowie Versionen von MongoDB 4.2 und höher unterstützen verteilte Transaktionen. Weitere Informationen zu verteilten MongoDB-Transaktionen finden Sie unter [Transactions](https://docs.mongodb.com/manual/core/transactions/) in der [Dokumentation zu MongoDB](https://www.mongodb.com/docs/).
+ Versionen von AWS DMS 3.5.0 und höher unterstützen keine Versionen von MongoDB vor 3.6.
+ Versionen von AWS DMS 3.5.1 und höher unterstützen MongoDB Version 5.0.
+ Versionen von AWS DMS 3.5.2 und höher unterstützen MongoDB Version 6.0.
+ Versionen von AWS DMS 3.5.4 und höher unterstützen MongoDB Version 7.0 und 8.0.



Falls Sie noch keine Erfahrung mit MongoDB haben, beachten Sie die folgenden wichtigen MongoDB-Datenbankkonzepte: 
+ Ein Datensatz in MongoDB ist ein *Dokument*, bei dem es sich um eine Datenstruktur aus Feld-Wert-Paaren handelt. Der Wert eines Felds kann andere Dokumente, Arrays und Dokument-Arrays enthalten. Ein Dokument entspricht etwa einer Zeile in einer relationalen Datenbanktabelle.
+ Eine *Sammlung* ist in MongoDB eine Gruppe von Dokumente und entspricht in etwa einer Tabelle in einer relationalen Datenbank.
+ Eine *Datenbank* in MongoDB ist ein Satz von Sammlungen und entspricht in etwa einem Schema in einer relationalen Datenbank.
+ Intern wird ein MongoDB-Dokument als binäre JSON-Datei (BSON) in einem komprimierten Format gespeichert, das einen Typ für jedes Feld im Dokument enthält. Jedes Dokument hat eine eindeutige ID.

AWS DMS unterstützt zwei Migrationsmodi, wenn MongoDB als Quelle verwendet wird: den *Dokumentmodus oder den* *Tabellenmodus*. Sie geben den zu verwendenden Migrationsmodus während der Erstellung des MongoDB-Endpunkts oder durch Festlegen des Parameters **Metadatenmodus** in der AWS DMS -Konsole an. Optional können Sie eine zweite Spalte mit der Bezeichnung `_id` erstellen, die als Primärschlüssel fungiert, indem Sie im Endpunktkonfigurationsbereich das Häkchen für **\$1id als separate Spalte** setzen. 

Der ausgewählte Migrationsmodus wirkt sich wie nachstehend erläutert auf das resultierende Format der Zieldaten aus. 

**Dokumentmodus**  
Im Dokumentmodus wird das MongoDB-Dokument unverändert migriert. Dies bedeutet, dass die Dokumentdaten in einer einzelnen Spalte mit dem Namen `_doc` in einer Zieltabelle zusammengefasst werden. Der Dokumentmodus ist die Standardeinstellung, wenn Sie MongoDB als Quellendpunkt verwenden.  
Nehmen wir als Beispiel die folgenden Dokumente in einer MongoDB-Sammlung mit dem Namen "myCollection".  

```
 db.myCollection.find()
{ "_id" : ObjectId("5a94815f40bd44d1b02bdfe0"), "a" : 1, "b" : 2, "c" : 3 }
{ "_id" : ObjectId("5a94815f40bd44d1b02bdfe1"), "a" : 4, "b" : 5, "c" : 6 }
```
Nach der Migration der Daten in eine relationale Datenbanktabelle mit Dokumentmodus sind die Daten folgendermaßen strukturiert. Die Datenfelder im MongoDB-Dokument sind in der Spalte ` _doc` zusammengefasst.      
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/dms/latest/userguide/CHAP_Source.MongoDB.html)
Sie können optional den `extractDocID` des zusätzlichen Verbindungsattributs auf *true* einstellen, um eine zweite Spalte mit dem Namen `"_id"` zu erstellen, die als Primärschlüssel fungiert. Sie müssen diesen Parameter auf *true* setzen, wenn Sie CDC verwenden möchten.  
*Wenn Sie CDC mit Quellen verwenden, die [Transaktionen mit mehreren Dokumenten](https://www.mongodb.com/docs/manual/reference/method/Session.startTransaction/#mongodb-method-Session.startTransaction) erzeugen, **muss der `ExtractDocId` Parameter auf true gesetzt werden**.* Wenn dieser Parameter nicht aktiviert ist, schlägt die AWS DMS Aufgabe fehl, wenn sie auf eine Transaktion mit mehreren Dokumenten trifft.  
 AWS DMS Verwaltet im Dokumentmodus die Erstellung und Umbenennung von Sammlungen wie folgt:  
+ Wenn Sie der Quelldatenbank eine neue Sammlung hinzufügen, AWS DMS wird eine neue Zieltabelle für die Sammlung erstellt und alle Dokumente repliziert. 
+ Wenn Sie eine vorhandene Sammlung in der Quelldatenbank umbenennen, benennt AWS DMS die Zieltabelle nicht um. 
Wenn der Zielendpunkt Amazon DocumentDB ist, führen Sie die Migration im **Dokumentmodus** aus.

**Tabellenmodus**  
 AWS DMS Transformiert im Tabellenmodus jedes Feld der obersten Ebene in einem MongoDB-Dokument in eine Spalte in der Zieltabelle. Wenn ein Feld verschachtelt ist, werden die verschachtelten AWS DMS Werte zu einer einzigen Spalte zusammengefasst. AWS DMS fügt dann dem Spaltensatz der Zieltabelle ein Schlüsselfeld und Datentypen hinzu.   
 AWS DMS Fügt für jedes MongoDB-Dokument jeden Schlüssel und Typ zum Spaltensatz der Zieltabelle hinzu. Wenn Sie beispielsweise den Tabellenmodus verwenden, wird das vorherige Beispiel in die folgende Tabelle AWS DMS migriert.      
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/dms/latest/userguide/CHAP_Source.MongoDB.html)
Verschachtelte Werte werden in einer Spalte mit durch Punkte getrennte Schlüsselnamen auf eine Ebene gebracht. Die Spalte erhält als Name die Namensverkettung der reduzierten Felder, die durch Punkte voneinander getrennt sind. AWS DMS Migriert beispielsweise ein JSON-Dokument mit einem Feld mit verschachtelten Werten, z. B. `{"a" : {"b" : {"c": 1}}}` in eine Spalte mit dem Namen `a.b.c.`  
Um die Zielspalten zu erstellen, AWS DMS scannt eine bestimmte Anzahl von MongoDB-Dokumenten und erstellt einen Satz aller Felder und ihrer Typen. AWS DMS verwendet dann diesen Satz, um die Spalten der Zieltabelle zu erstellen. Wenn Sie Ihren MongoDB-Quellendpunkt mithilfe der Konsole erstellen oder ändern, können Sie die Anzahl der zu scannenden Dokumente angeben. Der Standardwert ist 1000 Dokumente. Wenn Sie das verwenden AWS CLI, können Sie das zusätzliche Verbindungsattribut verwenden`docsToInvestigate`.  
 AWS DMS Verwaltet Dokumente und Sammlungen im Tabellenmodus wie folgt:  
+ Wenn Sie ein Dokument zu einer vorhandenen Sammlung hinzufügen, wird das Dokument repliziert. Wenn es Felder gibt, die am Ziel nicht vorhanden sind, werden diese Felder nicht repliziert.
+ Wenn Sie ein Dokument aktualisieren, wird das aktualisierte Dokument repliziert. Wenn es Felder gibt, die am Ziel nicht vorhanden sind, werden diese Felder nicht repliziert.
+ Das Löschen eines Dokuments wird vollständig unterstützt.
+ Das Hinzufügen einer neuen Sammlung führt nicht zu einer neuen Tabelle in der Zieldatenbank, wenn der Vorgang zeitgleich mit einer CDC-Aufgabe erfolgt.
+ In der CDC-Phase (Change Data Capture) wird das Umbenennen einer Sammlung AWS DMS nicht unterstützt.

**Topics**
+ [Erforderliche Berechtigungen bei der Verwendung von MongoDB als Quelle für AWS DMS](#CHAP_Source.MongoDB.PrerequisitesCDC)
+ [Konfigurieren eines MongoDB-Replikatsatzes für CDC](#CHAP_Source.MongoDB.PrerequisitesCDC.ReplicaSet)
+ [Sicherheitsanforderungen bei der Verwendung von MongoDB als Quelle für AWS DMS](#CHAP_Source.MongoDB.Security)
+ [Segmentieren von MongoDB-Sammlungen und parallele Migration](#CHAP_Source.MongoDB.ParallelLoad)
+ [Migration mehrerer Datenbanken bei Verwendung von MongoDB als Quelle für AWS DMS](#CHAP_Source.MongoDB.Multidatabase)
+ [Einschränkungen bei der Verwendung von MongoDB als Quelle für AWS DMS](#CHAP_Source.MongoDB.Limitations)
+ [Endpunktkonfigurationseinstellungen bei Verwendung von MongoDB als Quelle für AWS DMS](#CHAP_Source.MongoDB.Configuration)
+ [Quelldatentypen für MongoDB](#CHAP_Source.MongoDB.DataTypes)

## Erforderliche Berechtigungen bei der Verwendung von MongoDB als Quelle für AWS DMS
<a name="CHAP_Source.MongoDB.PrerequisitesCDC"></a>

Für eine AWS DMS Migration mit einer MongoDB-Quelle können Sie entweder ein Benutzerkonto mit Root-Rechten oder einen Benutzer mit Berechtigungen nur für die zu migrierende Datenbank erstellen. 

Der folgende Code erstellt einen Benutzer als Stammkonto.

```
use admin
db.createUser(
  {
    user: "root",
    pwd: "password",
    roles: [ { role: "root", db: "admin" } ]
  }
)
```

Für eine MongoDB-3.x-Quelle wird mit dem folgenden Code ein Benutzer mit minimalen Berechtigungen für die zu migrierende Datenbank erstellt.

```
use database_to_migrate
db.createUser( 
{ 
    user: "dms-user",
    pwd: "password",
    roles: [ { role: "read", db: "local" }, "read"] 
})
```

Für eine MongoDB-4.x-Quelle wird mit dem folgenden Code ein Benutzer mit minimalen Berechtigungen erstellt.

```
{ resource: { db: "", collection: "" }, actions: [ "find", "changeStream" ] }
```

Erstellen Sie beispielsweise die folgende Rolle in der Datenbank „admin“.

```
use admin
db.createRole(
{
role: "changestreamrole",
privileges: [
{ resource: { db: "", collection: "" }, actions: [ "find","changeStream" ] }
],
roles: []
}
)
```

Nachdem die Rolle erstellt wurde, erstellen Sie einen Benutzer in der zu migrierenden Datenbank.

```
 use test
> db.createUser( 
{ 
user: "dms-user12345",
pwd: "password",
roles: [ { role: "changestreamrole", db: "admin" }, "read"] 
})
```

## Konfigurieren eines MongoDB-Replikatsatzes für CDC
<a name="CHAP_Source.MongoDB.PrerequisitesCDC.ReplicaSet"></a>

Um die fortlaufende Replikation oder CDC mit MongoDB zu verwenden, AWS DMS ist Zugriff auf das MongoDB-Betriebsprotokoll (oplog) erforderlich. Zum Erstellen des Protokolls "oplog" müssen Sie einen Replikatsatz bereitstellen, sofern keiner vorhanden ist. Weitere Informationen finden Sie in der [MongoDB-Dokumentation](https://docs.mongodb.com/manual/tutorial/deploy-replica-set/).

Sie können CDC mit dem primären oder sekundären Knoten eines MongoDB-Replikatsatzes als Quellendpunkt verwenden.

**So wandeln Sie eine eigenständige Instance in einen Replikatsatz um**

1. Stellen Sie über die Befehlszeile eine Verbindung mit `mongo` her.

   ```
   mongo localhost
   ```

1. Stoppen Sie den Service `mongod`.

   ```
   service mongod stop
   ```

1. Starten Sie `mongod` mit dem folgenden Befehl neu:

   ```
   mongod --replSet "rs0" --auth -port port_number
   ```

1. Testen Sie die Verbindung zum Replikatsatz mithilfe der folgenden Befehle:

   ```
   mongo -u root -p password --host rs0/localhost:port_number 
     --authenticationDatabase "admin"
   ```

Wenn Sie eine Migration im Dokumentmodus durchführen möchten, wählen Sie beim Erstellen des MongoDB-Endpunkts die Option `_id as a separate column` aus. Bei Auswahl dieser Option wird eine zweite Spalte namens `_id` erstellt, die als Primärschlüssel fungiert. Diese zweite Spalte ist erforderlich, AWS DMS um DML-Operationen (Data Manipulation Language) zu unterstützen.

**Anmerkung**  
AWS DMS verwendet das Betriebsprotokoll (Oplog), um Änderungen während der laufenden Replikation aufzuzeichnen. Wenn MongoDB die Datensätze aus dem Oplog löscht, bevor sie AWS DMS gelesen werden, schlagen Ihre Aufgaben fehl. Wir empfehlen, die Oplog-Größe so zu ändern, dass die Änderungen mindestens 24 Stunden lang beibehalten werden. 

## Sicherheitsanforderungen bei der Verwendung von MongoDB als Quelle für AWS DMS
<a name="CHAP_Source.MongoDB.Security"></a>

AWS DMS unterstützt zwei Authentifizierungsmethoden für MongoDB. Die beiden Authentifizierungsmethoden werden verwendet, um das Passwort zu verschlüsseln, daher werden sie nur verwendet, wenn der Parameter `authType` auf *PASSWORD* festgelegt ist.

Die MongoDB-Authentifizierungsmethoden sind:
+ **MONGODB-CR** – für die Abwärtskompatibilität
+ **SCRAM-SHA-1** – die Standardeinstellung bei Verwendung von MongoDB-Version 3.x und 4.0

Wenn keine Authentifizierungsmethode angegeben ist, verwendet AWS DMS die Standardmethode für die Version der MongoDB-Quelle.

## Segmentieren von MongoDB-Sammlungen und parallele Migration
<a name="CHAP_Source.MongoDB.ParallelLoad"></a>

Um die Leistung einer Migrationsaufgabe zu verbessern, unterstützen MongoDB-Quellendpunkte zwei Optionen für paralleles vollständiges Laden bei der Tabellenzuordnung. 

Anders ausgedrückt: Sie können eine Sammlung parallel migrieren, indem Sie entweder die automatische Segmentierung oder die Bereichssegmentierung mit der Tabellenzuordnung für paralleles vollständiges Laden in den JSON-Einstellungen verwenden. Mit der automatischen Segmentierung können Sie die Kriterien für die automatische Segmentierung Ihrer Quelle für AWS DMS die Migration in jedem Thread angeben. Mit der Bereichssegmentierung können Sie AWS DMS den spezifischen Bereich jedes Segments angeben, das DMS in jedem Thread migrieren soll. Weitere Informationen zu diesen Einstellungen finden Sie unter [Regeln und Operationen für Tabellen- und Sammlungseinstellungen](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Tablesettings.md).

### Parallele Migration einer MongoDB-Datenbank mithilfe von Bereichen für die automatische Segmentierung
<a name="CHAP_Source.MongoDB.ParallelLoad.AutoPartitioned"></a>

Sie können Ihre Dokumente parallel migrieren, indem Sie die Kriterien angeben, nach denen AWS DMS Ihre Daten für jeden Thread automatisch partitionieren (segmentieren) soll. Insbesondere geben Sie die Anzahl an Dokumenten an, die pro Thread migriert werden sollen. Mit diesem Ansatz wird AWS DMS versucht, die Segmentgrenzen zu optimieren, um eine maximale Leistung pro Thread zu erzielen.

Sie können die Segmentierungskriterien mithilfe der folgenden Tabelleneinstellungsoptionen in der Tabellenzuordnung angeben.


|  Tabelleneinstellungsoption  |  Description  | 
| --- | --- | 
|  `"type"`  |  (Erforderlich) Setzen Sie dies für MongoDB als Quelle auf `"partitions-auto"`.  | 
|  `"number-of-partitions"`  |  (Optional) Gesamtzahl der für die Migration verwendeten Partitionen (Segmente). Der Standardwert ist 16.  | 
|  `"collection-count-from-metadata"`  |  (Optional) Wenn diese Option auf `true` gesetzt ist, verwendet AWS DMS eine geschätzte Sammlungsanzahl, um die Anzahl von Partitionen zu bestimmen. Wenn diese Option auf gesetzt ist`false`, wird die tatsächliche Anzahl der Sammlungen AWS DMS verwendet. Der Standardwert ist `true`.  | 
|  `"max-records-skip-per-page"`  |  (Optional) Die Anzahl der Datensätze, die bei der Festlegung der Grenzen für jede Partition gleichzeitig übersprungen werden sollen. AWS DMS verwendet einen Ansatz zum Überspringen von Seiten, um die Mindestgrenze für eine Partition zu bestimmen. Der Standardwert ist 10 000.  Das Festlegen eines relativ großen Werts kann zu Cursor-Timeouts und Aufgabenfehlern führen. Das Festlegen eines relativ niedrigen Werts führt zu mehr Operationen pro Seite und zu einem langsameren vollständigen Laden.   | 
|  `"batch-size"`  |  (Optional) Begrenzt die Anzahl der in einem Stapel zurückgegebenen Dokumente. Für jeden Stapel ist ein Round-Trip zum Server erforderlich. Wenn die Stapelgröße Null (0) ist, verwendet der Cursor die vom Server definierte maximale Stapelgröße. Der Standardwert ist 0.  | 

Das folgende Beispiel zeigt eine Tabellenzuordnung für die automatische Segmentierung.

```
{
    "rules": [
        {
            "rule-type": "selection",
            "rule-id": "1",
            "rule-name": "1",
            "object-locator": {
                "schema-name": "admin",
                "table-name": "departments"
            },
            "rule-action": "include",
            "filters": []
        },
        {
            "rule-type": "table-settings",
            "rule-id": "2",
            "rule-name": "2",
            "object-locator": {
                "schema-name": "admin",
                "table-name": "departments"
            },
            "parallel-load": {
                "type": "partitions-auto",
                "number-of-partitions": 5,
                "collection-count-from-metadata": "true",
                "max-records-skip-per-page": 1000000,
                "batch-size": 50000
            }
        }
    ]
}
```

Für die automatische Segmentierung gelten die folgenden Einschränkungen. Bei der Migration für die einzelnen Segmente werden die Sammlungsanzahl und der `_id`-Mindestwert für die Sammlung separat abgerufen. Anschließend wird die Mindestgrenze für dieses Segment anhand eines seitenweisen Überspringens berechnet. 

Stellen Sie daher sicher, dass der `_id`-Mindestwert für jede Sammlung konstant bleibt, bis alle Segmentgrenzen in der Sammlung berechnet wurden. Wenn Sie den `_id`-Mindestwert für eine Sammlung während der Berechnung der Segmentgrenze ändern, kann dies zu Datenverlust oder zu Fehlern aufgrund von doppelten Zeilen führen.

### Parallele Migration einer MongoDB-Datenbank mithilfe der Bereichssegmentierung
<a name="CHAP_Source.MongoDB.ParallelLoad.Ranges"></a>

Sie können Ihre Dokumente parallel migrieren, indem Sie die Bereiche für jedes Segment in einem Thread angeben. Bei diesem Ansatz weisen Sie AWS DMS die spezifischen Dokumente an, die in jedem Thread migriert werden sollen, und zwar entsprechend den von Ihnen ausgewählten Dokumentbereichen pro Thread.

Die folgende Abbildung zeigt eine MongoDB-Sammlung mit sieben Elementen und `_id` als Primärschlüssel.

![\[MongoDB-Sammlung mit sieben Elementen\]](http://docs.aws.amazon.com/de_de/dms/latest/userguide/images/datarep-docdb-collection.png)


Um die Sammlung in drei spezifische Segmente für die parallel Migration AWS DMS aufzuteilen, können Sie Ihrer Migrationsaufgabe Regeln für die Tabellenzuweisung hinzufügen. Dieses Verfahren wird im folgenden JSON-Beispiel veranschaulicht.

```
{ // Task table mappings:
  "rules": [
    {
      "rule-type": "selection",
      "rule-id": "1",
      "rule-name": "1",
      "object-locator": {
        "schema-name": "testdatabase",
        "table-name": "testtable"
      },
      "rule-action": "include"
    }, // "selection" :"rule-type"
    {
      "rule-type": "table-settings",
      "rule-id": "2",
      "rule-name": "2",
      "object-locator": {
        "schema-name": "testdatabase",
        "table-name": "testtable"
      },
      "parallel-load": {
        "type": "ranges",
        "columns": [
           "_id",
           "num"
        ],
        "boundaries": [
          // First segment selects documents with _id less-than-or-equal-to 5f805c97873173399a278d79
          // and num less-than-or-equal-to 2.
          [
             "5f805c97873173399a278d79",
             "2"
          ],
          // Second segment selects documents with _id > 5f805c97873173399a278d79 and
          // _id less-than-or-equal-to 5f805cc5873173399a278d7c and
          // num > 2 and num less-than-or-equal-to 5.
          [
             "5f805cc5873173399a278d7c",
             "5"
          ]                                   
          // Third segment is implied and selects documents with _id > 5f805cc5873173399a278d7c.
        ] // :"boundaries"
      } // :"parallel-load"
    } // "table-settings" :"rule-type"
  ] // :"rules"
} // :Task table mappings
```

Mit dieser Definition für die Tabellenzuordnung wird die Quellsammlung in drei Segmente aufgeteilt, die parallel migriert werden. Im Folgenden sind die Segmentierungsgrenzen aufgeführt.

```
Data with _id less-than-or-equal-to "5f805c97873173399a278d79" and num less-than-or-equal-to 2 (2 records)
Data with _id > "5f805c97873173399a278d79" and num > 2 and _id  less-than-or-equal-to "5f805cc5873173399a278d7c" and num less-than-or-equal-to 5 (3 records)
Data with _id > "5f805cc5873173399a278d7c" and num > 5 (2 records)
```

Nach Abschluss der Migrationsaufgabe können Sie anhand der Aufgabenprotokolle überprüfen, ob die Tabellen parallel geladen wurden, wie im folgenden Beispiel gezeigt. Sie können auch die zum Entladen der einzelnen Segmente aus der Quelltabelle verwendete MongoDB-Klausel `find` überprüfen.

```
[TASK_MANAGER    ] I:  Start loading segment #1 of 3 of table 'testdatabase'.'testtable' (Id = 1) by subtask 1. Start load timestamp 0005B191D638FE86  (replicationtask_util.c:752)

[SOURCE_UNLOAD   ] I:  Range Segmentation filter for Segment #0 is initialized.   (mongodb_unload.c:157)

[SOURCE_UNLOAD   ] I:  Range Segmentation filter for Segment #0 is: { "_id" : { "$lte" : { "$oid" : "5f805c97873173399a278d79" } }, "num" : { "$lte" : { "$numberInt" : "2" } } }  (mongodb_unload.c:328)

[SOURCE_UNLOAD   ] I: Unload finished for segment #1 of segmented table 'testdatabase'.'testtable' (Id = 1). 2 rows sent.

[TASK_MANAGER    ] I: Start loading segment #1 of 3 of table 'testdatabase'.'testtable' (Id = 1) by subtask 1. Start load timestamp 0005B191D638FE86 (replicationtask_util.c:752)
 
[SOURCE_UNLOAD   ] I: Range Segmentation filter for Segment #0 is initialized. (mongodb_unload.c:157) 

[SOURCE_UNLOAD   ] I: Range Segmentation filter for Segment #0 is: { "_id" : { "$lte" : { "$oid" : "5f805c97873173399a278d79" } }, "num" : { "$lte" : { "$numberInt" : "2" } } } (mongodb_unload.c:328)
 
[SOURCE_UNLOAD   ] I: Unload finished for segment #1 of segmented table 'testdatabase'.'testtable' (Id = 1). 2 rows sent.

[TARGET_LOAD     ] I: Load finished for segment #1 of segmented table 'testdatabase'.'testtable' (Id = 1). 1 rows received. 0 rows skipped. Volume transfered 480.

[TASK_MANAGER    ] I: Load finished for segment #1 of table 'testdatabase'.'testtable' (Id = 1) by subtask 1. 2 records transferred.
```

 AWS DMS Unterstützt derzeit die folgenden MongoDB-Datentypen als Segmentschlüsselspalte:
+ Double
+ Zeichenfolge
+ ObjectId
+ 32-Bit-Ganzzahl
+ 64-Bit-Ganzzahl

## Migration mehrerer Datenbanken bei Verwendung von MongoDB als Quelle für AWS DMS
<a name="CHAP_Source.MongoDB.Multidatabase"></a>

AWS DMS Versionen 3.4.5 und höher unterstützen die Migration mehrerer Datenbanken in einer einzigen Aufgabe für alle unterstützten MongoDB-Versionen. Gehen Sie wie folgt vor, um mehrere Datenbanken zu migrieren:

1. Wenn Sie den MongoDB-Quellendpunkt erstellen, führen Sie eine der folgenden Aktionen aus:
   + Stellen Sie sicher, dass das Feld **Datenbankname** unter **Endpunktkonfiguration** auf der Seite **Endpunkt erstellen** der DMS-Konsole leer ist.
   + Weisen Sie dem AWS CLI `CreateEndpoint` Parameter in mithilfe des Befehls einen leeren Zeichenkettenwert zu. `DatabaseName` `MongoDBSettings`

1. Geben Sie für jede Datenbank, die Sie aus einer MongoDB-Quelle migrieren möchten, den Datenbanknamen als Schemanamen in der Tabellenzuordnung für die Aufgabe an. Sie können dies entweder mithilfe der geführten Eingabe in der Konsole oder direkt in JSON vornehmen. Weitere Informationen zur geführten Eingabe finden Sie unter [Festlegen der Tabellenauswahl und der Transformationsregeln über die Konsole](CHAP_Tasks.CustomizingTasks.TableMapping.Console.md). Weitere Informationen zu JSON finden Sie unter [Auswahlregeln und Aktionen](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Selections.md).

Sie können beispielsweise die folgende JSON-Struktur angeben, um drei MongoDB-Datenbanken zu migrieren.

**Example Migrieren aller Tabellen in einem Schema**  
Die folgende JSON-Struktur migriert alle Tabellen aus den Datenbanken `Customers`, `Orders` und `Suppliers` im Quellendpunkt zum Zielendpunkt.  

```
{
    "rules": [
        {
            "rule-type": "selection",
            "rule-id": "1",
            "rule-name": "1",
            "object-locator": {
                "schema-name": "Customers",
                "table-name": "%"
            },
            "rule-action": "include",
            "filters": []
        },
        {
            "rule-type": "selection",
            "rule-id": "2",
            "rule-name": "2",
            "object-locator": {
                "schema-name": "Orders",
                "table-name": "%"
            },
            "rule-action": "include",
            "filters": []
        },
        {
            "rule-type": "selection",
            "rule-id": "3",
            "rule-name": "3",
            "object-locator": {
                "schema-name": "Inventory",
                "table-name": "%"
            },
            "rule-action": "include",
            "filters": []
        }
    ]
}
```

## Einschränkungen bei der Verwendung von MongoDB als Quelle für AWS DMS
<a name="CHAP_Source.MongoDB.Limitations"></a>

Die folgenden Einschränkungen gelten bei der Verwendung von MongoDB als Quelle für AWS DMS:
+ Im Tabellenmodus müssen die Dokumente in einer Sammlung hinsichtlich des Datentyps, den sie für den Wert im gleichen Feld verwenden, konsistent sein. Wenn ein Dokument in einer Sammlung beispielsweise `'{ a:{ b:value ... }'` enthält, müssen alle Dokumente in der Sammlung, die auf den `value` des Felds `a.b` verweisen, denselben Datentyp für `value` verwenden, wo immer er in der Sammlung vorkommt.
+ Wenn die Option `_id` als separate Spalte gesetzt ist, darf der ID-String 200 Zeichen nicht überschreiten.
+ Objekt-ID und Array-Schlüssel werden in Spalten konvertiert, die mit dem Präfix `oid` und `array` im Tabellenmodus versehen sind.

  Intern wird auf diese Spalten mit den mit Präfix versehenen Namen verwiesen. Wenn Sie Transformationsregeln verwenden AWS DMS , die auf diese Spalten verweisen, stellen Sie sicher, dass Sie die Spalte mit dem Präfix angeben. Sie geben z. B. `${oid__id}` statt `${_id}` oder `${array__addresses}` und nicht `${_addresses}` an. 
+  Namen von Sammlungen und Schlüsseln dürfen das Dollarzeichen (\$1) nicht enthalten. 
+ AWS DMS unterstützt im Tabellenmodus mit einem RDBMS-Ziel keine Sammlungen, die dasselbe Feld mit unterschiedlicher Groß- und Kleinschreibung enthalten. Unterstützt beispielsweise AWS DMS nicht, zwei Sammlungen mit dem Namen `Field1` und zu verwenden. `field1` 
+ Der Tabellenmodus und der Dokumentmodus haben die oben beschriebenen Einschränkungen.
+ Für die parallele Migration mithilfe der automatischen Segmentierung gelten die oben beschriebenen Einschränkungen.
+ Quellfilter werden für MongoDB nicht unterstützt.
+ AWS DMS unterstützt keine Dokumente, bei denen die Verschachtelungsebene höher als 97 ist.
+ AWS DMS erfordert UTF-8-kodierte Quelldaten für die Migration zu Nicht-DocumentDB-Zielen. Für Quellen mit Nicht-UTF-8-Zeichen konvertieren Sie sie vor der Migration in UTF-8 oder migrieren Sie stattdessen zu Amazon DocumentDB.
+ AWS DMS unterstützt die folgenden Funktionen von MongoDB Version 5.0 nicht:
  + Live-Resharding
  + Clientseitige Verschlüsselung auf Feldebene (Client-Side Field Level Encryption, CSFLE)
  + Migration von Zeitreihen-Sammlungen
**Anmerkung**  
Eine in der Phase des vollständigen Ladens migrierte Zeitreihen-Sammlung wird in Amazon DocumentDB in eine normale Sammlung konvertiert, da DocumentDB keine Zeitreihen-Sammlungen unterstützt.

## Endpunktkonfigurationseinstellungen bei Verwendung von MongoDB als Quelle für AWS DMS
<a name="CHAP_Source.MongoDB.Configuration"></a>

Wenn Sie Ihren MongoDB-Quellendpunkt einrichten, können Sie mithilfe der AWS DMS Konsole mehrere Endpunktkonfigurationseinstellungen angeben. 

In der folgenden Tabelle werden die Konfigurationseinstellungen beschrieben, die bei der Verwendung von MongoDB-Datenbanken als AWS DMS Quelle verfügbar sind. 


| Einstellung (Attribut) | Zulässige Werte | Standardwert und Beschreibung | 
| --- | --- | --- | 
|  **Authentifizierungsmodus**  |  `"none"` `"password"`  |  Der Wert `"password"` fordert zur Eingabe eines Benutzernamens und eines Passworts auf. Wenn `"none"` angegeben ist, werden die Parameter Benutzername und Passwort nicht verwendet.  | 
|  **Authentifizierungsquelle**  |  Ein gültiger MongoDB-Datenbankname.  |  Der Name der MongoDB-Datenbank, die Sie verwenden möchten, um Ihre Anmeldeinformationen für die Authentifizierung zu überprüfen. Der Standardwert ist `"admin"`.   | 
|  **Authentifizierungsmechanismus**  |  `"default"` `"mongodb_cr"` `"scram_sha_1"`  |  Der Authentifizierungsmechanismus. Der Wert von ` "default"` ist `"scram_sha_1"`. Diese Einstellung wird nicht verwendet, wenn `authType` auf `"no"` festgelegt ist.  | 
|  **Metadatenmodus**  |  Dokument und Tabelle  |  Zur Auswahl von Dokument- oder Tabellenmodus   | 
|  **Anzahl der zu scannenden Dokumente** (`docsToInvestigate`)  |  Eine positive Ganzzahl größer als `0`.  |  Verwenden Sie diese Option nur im Tabellenmodus, um die Zieltabellendefinition zu definieren.  | 
|  **\$1id als separate Spalte**  |  Häkchen im Kästchen  |  Optionales Auswahlfeld, mit dem eine zweite Spalte mit der Bezeichnung `_id` erstellt wird, die als Primärschlüssel fungiert.  | 
|   `ExtractDocID`   |  `true` `false`  |  `false` – Verwenden Sie dieses Attribut, wenn `NestingLevel` auf `"none"` gesetzt ist.  Wenn Sie CDC mit Quellen verwenden, die [Transaktionen mit mehreren Dokumenten](https://www.mongodb.com/docs/manual/reference/method/Session.startTransaction/#mongodb-method-Session.startTransaction) erzeugen, **muss der `ExtractDocId` Parameter auf gesetzt werden**. `true` Wenn dieser Parameter nicht aktiviert ist, schlägt die AWS DMS Aufgabe fehl, wenn sie auf eine Transaktion mit mehreren Dokumenten trifft.  | 
|  `socketTimeoutMS`  |  Eine Ganzzahl größer oder gleich 0. Nur zusätzliches Verbindungsattribut (Extra Connection Attribute, ECA)  |  Diese Einstellung wird in Millisekunden angegeben und konfiguriert das Verbindungs-Timeout für MongoDB-Clients. Wenn der Wert kleiner oder gleich Null ist, wird der Standardwert des MongoDB-Clients verwendet.  | 
|   `UseUpdateLookUp`   |  `true` `false`  |  Wenn der Wert true ist, wird bei CDC-Aktualisierungsereignissen das gesamte aktualisierte Dokument auf das Ziel AWS DMS kopiert. Wenn auf false gesetzt, AWS DMS wird der MongoDB-Aktualisierungsbefehl verwendet, um nur geänderte Felder im Dokument auf dem Ziel zu aktualisieren.  | 
|   `ReplicateShardCollections`   |  `true` `false`  |  Wenn der Wert wahr ist, werden Daten in Shard-Sammlungen AWS DMS repliziert. AWS DMS verwendet diese Einstellung nur, wenn der Zielendpunkt ein elastischer DocumentDB-Cluster ist. Wenn Sie für diese Einstellung true festlegen, beachten Sie Folgendes: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/dms/latest/userguide/CHAP_Source.MongoDB.html)  | 
|  `useTransactionVerification`  |  `true` `false`  |  Wenn`false`, deaktiviert die Überprüfung zwischen dem Change-Stream und den Logs.   Sie können Operationen verpassen, wenn Diskrepanzen zwischen Change-Streams und Oplog-Einträgen auftreten, da das DMS-Standardverhalten darin besteht, dass die Aufgabe in solchen Szenarien fehlschlägt. Standard: `true`.   | 
|  `useOplog`  |  `true` `false`  |  Wenn`true`, ermöglicht es der DMS-Aufgabe, direkt aus dem 'Oplog' zu lesen, anstatt den Änderungsstream zu verwenden. Standard: `false`.  | 

Wenn Sie **Dokument** als **Metadatenmodus** auswählen, sind verschiedene Optionen verfügbar. 

Wenn der Zielendpunkt DocumentDB ist, führen Sie die Migration unbedingt im **Dokumentmodus** aus. Ändern Sie außerdem Ihren Quellendpunkt und wählen Sie die Option **\$1id als separate Spalte** aus. Dies ist eine zwingende Voraussetzung, wenn Ihr MongoDB-Quell-Workload Transaktionen beinhaltet.

## Quelldatentypen für MongoDB
<a name="CHAP_Source.MongoDB.DataTypes"></a>

Datenmigration, die MongoDB als Quelle verwendet, AWS DMS unterstützt die meisten MongoDB-Datentypen. In der folgenden Tabelle finden Sie die MongoDB-Quelldatentypen, die bei der Verwendung unterstützt werden, AWS DMS und die Standardzuweisung von AWS DMS Datentypen. Weitere Informationen zu MongoDB-Datentypen finden Sie unter [ BSON-Typen](https://docs.mongodb.com/manual/reference/bson-types) in der MongoDB-Dokumentation.

Weitere Informationen zum Anzeigen des Datentyps, der im Ziel zugewiesen ist, finden Sie im Abschnitt für den Zielendpunkt, den Sie verwenden.

Weitere Informationen zu AWS DMS Datentypen finden Sie unter[Datentypen für den AWS Database Migration Service](CHAP_Reference.DataTypes.md).


|  MongoDB-Datentypen  |  AWS DMS Datentypen  | 
| --- | --- | 
| Boolesch | Bool | 
| Binär | BLOB | 
| Date | Date | 
| Zeitstempel | Date | 
| Int | INT4 | 
| Long | INT8 | 
| Double | REAL8 | 
| String (UTF-8) | CLOB | 
| Array | CLOB | 
| OID | Zeichenfolge | 
| REGEX | CLOB | 
| CODE | CLOB | 

# Verwendung von Amazon DocumentDB (mit MongoDB-Kompatibilität) als Quelle für AWS DMS
<a name="CHAP_Source.DocumentDB"></a>

Informationen zu den Versionen von Amazon DocumentDB (mit MongoDB-Kompatibilität), die AWS DMS als Quelle unterstützt, finden Sie unter [Quellen für AWS DMS](CHAP_Introduction.Sources.md).

 Wenn Sie Amazon DocumentDB als Quelle verwenden, können Sie Daten von einem Amazon-DocumentDB-Cluster zu einem anderen migrieren. Sie können auch Daten von einem Amazon DocumentDB-Cluster zu einem der anderen Zielendpunkte migrieren, die von unterstützt werden. AWS DMS

Wenn Sie noch keine Erfahrung mit Amazon DocumentDB haben, sollten Sie die folgenden wichtigen Konzepte für Amazon-DocumentDB-Datenbanken beachten:
+ Ein Datensatz in Amazon DocumentDB ist ein *Dokument*, bei dem es sich um eine Datenstruktur aus Feld-Wert-Paaren handelt. Der Wert eines Felds kann andere Dokumente, Arrays und Dokument-Arrays enthalten. Ein Dokument entspricht etwa einer Zeile in einer relationalen Datenbanktabelle.
+ Eine *Sammlung* in Amazon DocumentDB ist eine Gruppe von Dokumenten und entspricht in etwa einer Tabelle in einer relationalen Datenbank.
+ Eine *Datenbank* in Amazon DocumentDB ist ein Satz von Sammlungen und entspricht in etwa einem Schema in einer relationalen Datenbank.

AWS DMS unterstützt zwei Migrationsmodi, wenn Amazon DocumentDB als Quelle verwendet wird: den Dokumentmodus und den Tabellenmodus. Sie geben den Migrationsmodus an, wenn Sie den Amazon DocumentDB DocumentDB-Quellendpunkt in der AWS DMS Konsole erstellen, indem Sie entweder die Option **Metadatenmodus** oder das zusätzliche Verbindungsattribut `nestingLevel` verwenden. Im Folgenden wird erläutert, wie sich der ausgewählte Migrationsmodus auf das resultierende Format der Zieldaten auswirkt.

**Dokumentmodus**  
Im *Dokumentmodus* wird das JSON-Dokument unverändert migriert. Das bedeutet, dass die Dokumentdaten in einem von zwei Elementen zusammengefasst werden. Wenn Sie eine relationale Datenbank als Ziel verwenden, handelt es sich bei den Daten um eine einzelne Spalte mit der Bezeichnung `_doc` in einer Zieltabelle. Wenn Sie eine nicht relationale Datenbank als Ziel verwenden, handelt es sich bei den Daten um ein einzelnes JSON-Dokument. Der Dokumentmodus ist der Standardmodus, den wir für die Migration zu einem Amazon-DocumentDB-Ziel empfehlen.  
Nehmen wir als Beispiel die folgenden Dokumente in einer Amazon-DocumentDB-Sammlung mit dem Namen `myCollection`.  

```
 db.myCollection.find()
{ "_id" : ObjectId("5a94815f40bd44d1b02bdfe0"), "a" : 1, "b" : 2, "c" : 3 }
{ "_id" : ObjectId("5a94815f40bd44d1b02bdfe1"), "a" : 4, "b" : 5, "c" : 6 }
```
Nach der Migration der Daten in eine relationale Datenbanktabelle mit Dokumentmodus sind die Daten folgendermaßen strukturiert. Die Datenfelder im Dokument sind in der Spalte ` _doc` zusammengefasst.      
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/dms/latest/userguide/CHAP_Source.DocumentDB.html)
Sie können optional das zusätzliche Verbindungsattribut `extractDocID` auf `true` setzen, um eine zweite Spalte mit der Bezeichnung `"_id"` zu erstellen, die als Primärschlüssel fungiert. Wenn Sie die Erfassung von Datenänderungen (Change Data Capture, CDC) verwenden möchten, setzen Sie diesen Parameter auf `true`, es sei denn, Sie verwenden Amazon DocumentDB als Ziel.  
Wenn Sie CDC mit Quellen verwenden, die [Transaktionen mit mehreren Dokumenten](https://www.mongodb.com/docs/manual/reference/method/Session.startTransaction/#mongodb-method-Session.startTransaction) erstellen, **muss der `ExtractDocId` Parameter auf gesetzt werden**. `true` Wenn dieser Parameter nicht aktiviert ist, schlägt die AWS DMS Aufgabe fehl, wenn sie auf eine Transaktion mit mehreren Dokumenten trifft.  
Wenn Sie der Quelldatenbank eine neue Sammlung hinzufügen, AWS DMS wird eine neue Zieltabelle für die Sammlung erstellt und alle Dokumente repliziert. 

**Tabellenmodus**  
Im *Tabellenmodus* wandelt AWS DMS jedes Feld der obersten Ebene in einem Amazon-DocumentDB-Dokument in eine Spalte in der Zieltabelle um. Wenn ein Feld verschachtelt ist, werden die AWS DMS verschachtelten Werte zu einer einzigen Spalte zusammengefasst. AWS DMS fügt dann dem Spaltensatz der Zieltabelle ein Schlüsselfeld und Datentypen hinzu.   
 AWS DMS Fügt für jedes Amazon DocumentDB DocumentDB-Dokument jeden Schlüssel und Typ zum Spaltensatz der Zieltabelle hinzu. Wenn Sie beispielsweise den Tabellenmodus verwenden, wird das vorherige Beispiel in die folgende Tabelle AWS DMS migriert.      
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/dms/latest/userguide/CHAP_Source.DocumentDB.html)
Verschachtelte Werte werden in einer Spalte mit durch Punkte getrennte Schlüsselnamen auf eine Ebene gebracht. Die Spalte erhält als Namen die Aneinanderreihung der reduzierten Feldnamen, die durch Punkte voneinander getrennt werden. AWS DMS Migriert beispielsweise ein JSON-Dokument mit einem Feld mit verschachtelten Werten, z. B. `{"a" : {"b" : {"c": 1}}}` in eine Spalte mit dem Namen `a.b.c.`  
Um die Zielspalten zu erstellen, AWS DMS scannt eine bestimmte Anzahl von Amazon DocumentDB DocumentDB-Dokumenten und erstellt einen Satz aller Felder und ihrer Typen. AWS DMS verwendet dann diesen Satz, um die Spalten der Zieltabelle zu erstellen. Wenn Sie Ihren Amazon-DocumentDB-Quellendpunkt mithilfe der Konsole erstellen oder ändern, können Sie die Anzahl der zu scannenden Dokumente angeben. Der Standardwert beträgt 1 000 Dokumente. Wenn Sie das verwenden AWS CLI, können Sie das zusätzliche Verbindungsattribut verwenden`docsToInvestigate`.  
 AWS DMS Verwaltet Dokumente und Sammlungen im Tabellenmodus wie folgt:  
+ Wenn Sie ein Dokument zu einer vorhandenen Sammlung hinzufügen, wird das Dokument repliziert. Wenn es Felder gibt, die am Ziel nicht vorhanden sind, werden diese Felder nicht repliziert.
+ Wenn Sie ein Dokument aktualisieren, wird das aktualisierte Dokument repliziert. Wenn es Felder gibt, die am Ziel nicht vorhanden sind, werden diese Felder nicht repliziert.
+ Das Löschen eines Dokuments wird vollständig unterstützt.
+ Das Hinzufügen einer neuen Sammlung führt nicht zu einer neuen Tabelle in der Zieldatenbank, wenn der Vorgang zeitgleich mit einer CDC-Aufgabe erfolgt.
+ In der CDC-Phase (Change Data Capture) wird das Umbenennen einer Sammlung AWS DMS nicht unterstützt.

**Topics**
+ [Festlegen von Berechtigungen zur Verwendung von Amazon DocumentDB als Quelle](#CHAP_Source.DocumentDB.Permissions)
+ [Konfigurieren von CDC für einen Amazon-DocumentDB-Cluster](#CHAP_Source.DocumentDB.ConfigureCDC)
+ [Herstellen einer Verbindung mit Amazon DocumentDB über TLS](#CHAP_Source.DocumentDB.TLS)
+ [Erstellen eines Amazon-DocumentDB-Quellendpunkts](#CHAP_Source.DocumentDB.ConfigureEndpoint)
+ [Segmentieren von Amazon-DocumentDB-Sammlungen und parallele Migration](#CHAP_Source.DocumentDB.ParallelLoad)
+ [Migration mehrerer Datenbanken bei Verwendung von Amazon DocumentDB als Quelle für AWS DMS](#CHAP_Source.DocumentDB.Multidatabase)
+ [Einschränkungen bei der Verwendung von Amazon DocumentDB als Quelle für AWS DMS](#CHAP_Source.DocumentDB.Limitations)
+ [Verwenden von Endpunkteinstellungen mit Amazon DocumentDB als Quelle](#CHAP_Source.DocumentDB.ECAs)
+ [Quelldatentypen für Amazon DocumentDB](#CHAP_Source.DocumentDB.DataTypes)

## Festlegen von Berechtigungen zur Verwendung von Amazon DocumentDB als Quelle
<a name="CHAP_Source.DocumentDB.Permissions"></a>

Wenn Sie die Amazon DocumentDB DocumentDB-Quelle für eine AWS DMS Migration verwenden, können Sie ein Benutzerkonto mit Root-Rechten erstellen. Alternativ können Sie einen Benutzer erstellen, der ausschließlich über Berechtigungen für die zu migrierende Datenbank verfügt. 

Mit dem folgenden Code wird ein Benutzer als Root-Konto erstellt.

```
use admin
db.createUser(
  {
    user: "root",
    pwd: "password",
    roles: [ { role: "root", db: "admin" } ]
  })
```

Für Amazon DocumentDB 3.6 wird mit dem folgenden Code ein Benutzer mit minimalen Berechtigungen für die zu migrierende Datenbank erstellt.

```
use db_name
db.createUser( 
    {
        user: "dms-user",
        pwd: "password",
        roles: [{ role: "read", db: "db_name" }]
    }
)
```

 AWS DMS Verwendet für Amazon DocumentDB 4.0 und höher einen bereitstellungsweiten Change-Stream. Hier wird mit dem folgenden Code ein Benutzer mit minimalen Berechtigungen erstellt.

```
db.createUser( 
{ 
    user: "dms-user",
    pwd: "password",
    roles: [ { role: "readAnyDatabase", db: "admin" }] 
})
```

## Konfigurieren von CDC für einen Amazon-DocumentDB-Cluster
<a name="CHAP_Source.DocumentDB.ConfigureCDC"></a>

Um die fortlaufende Replikation oder CDC mit Amazon DocumentDB zu verwenden, ist Zugriff auf die Change-Streams des Amazon DocumentDB-Clusters AWS DMS erforderlich. Eine Beschreibung der zeitlich geordneten Reihenfolge von Aktualisierungsereignissen in den Sammlungen und Datenbanken Ihres Clusters finden Sie unter [Using Change Streams](https://docs.aws.amazon.com/documentdb/latest/developerguide/change_streams.html) im *Entwicklerhandbuch für Amazon DocumentDB*. 

Authentifizieren Sie sich mit der MongoDB-Shell bei Ihrem Amazon-DocumentDB-Cluster. Führen Sie anschließend den folgenden Befehl aus, um Änderungsstreams zu aktivieren.

```
db.adminCommand({modifyChangeStreams: 1,
    database: "DB_NAME",
    collection: "", 
    enable: true});
```

Damit wird der Änderungsstream für alle Sammlungen in Ihrer Datenbank aktiviert. Nachdem Change-Streams aktiviert wurden, können Sie eine Migrationsaufgabe erstellen, die bestehende Daten migriert und gleichzeitig laufende Änderungen repliziert. AWS DMS erfasst weiterhin Änderungen und wendet sie an, auch nachdem die Massendaten geladen wurden. Schließlich werden die Quell- und Zieldatenbank synchronisiert, sodass die Ausfallzeit für eine Migration minimiert wird.

**Anmerkung**  
AWS DMS verwendet das Betriebsprotokoll (Oplog), um Änderungen während der laufenden Replikation aufzuzeichnen. Wenn Amazon DocumentDB die Datensätze aus dem Oplog löscht, bevor sie AWS DMS gelesen werden, schlagen Ihre Aufgaben fehl. Wir empfehlen, die Oplog-Größe so zu ändern, dass die Änderungen mindestens 24 Stunden lang beibehalten werden.

## Herstellen einer Verbindung mit Amazon DocumentDB über TLS
<a name="CHAP_Source.DocumentDB.TLS"></a>

Standardmäßig akzeptiert ein neu erstellter Amazon-DocumentDB-Cluster sichere Verbindungen nur mit Transport Layer Security (TLS). Wenn TLS aktiviert ist, erfordert jede Verbindung mit Amazon DocumentDB einen öffentlichen Schlüssel.

Sie können den öffentlichen Schlüssel für Amazon DocumentDB abrufen, indem Sie die Datei `rds-combined-ca-bundle.pem` aus einem AWS-gehosteten Amazon S3 S3-Bucket herunterladen. Weitere Informationen zum Herunterladen dieser Datei finden Sie unter [Encrypting connections using TLS](https://docs.aws.amazon.com/documentdb/latest/developerguide/security.encryption.ssl.html) im *Entwicklerhandbuch für Amazon DocumentDB*. 

Nachdem Sie die `rds-combined-ca-bundle.pem` Datei heruntergeladen haben, können Sie den darin enthaltenen öffentlichen Schlüssel importieren. AWS DMS Das entsprechende Verfahren wird im Folgenden beschrieben.

**Um Ihren öffentlichen Schlüssel mit der AWS DMS Konsole zu importieren**

1. Melden Sie sich bei der an AWS-Managementkonsole und wählen Sie AWS DMS.

1. Wählen Sie im Navigationsbereich **Certificates** aus.

1. Wählen Sie **Import certificate (Zertifikat importieren)**. Die Seite **Importieren eines CA-Zertifikats** wird angezeigt.

1. Führen Sie im Abschnitt **Zertifikatkonfiguration** eine der folgenden Aktionen aus:
   + Geben Sie in **Zertifikat-ID** einen eindeutigen Namen für das Zertifikat ein, z. B. `docdb-cert`.
   + Wählen Sie **Datei auswählen**, navigieren Sie zum Speicherort der Datei `rds-combined-ca-bundle.pem` und wählen Sie diese aus.

1. Klicken Sie auf **Add new CA certificate (Neues CA-Zertifikat hinzufügen)**.

Im AWS CLI folgenden Beispiel wird der AWS DMS `import-certificate` Befehl verwendet, um die `rds-combined-ca-bundle.pem` Datei mit dem öffentlichen Schlüssel zu importieren.

```
aws dms import-certificate \
    --certificate-identifier docdb-cert \
    --certificate-pem file://./rds-combined-ca-bundle.pem
```

## Erstellen eines Amazon-DocumentDB-Quellendpunkts
<a name="CHAP_Source.DocumentDB.ConfigureEndpoint"></a>

Sie können einen Amazon-DocumentDB-Quellendpunkt mithilfe der Konsole oder der AWS CLI erstellen. Gehen Sie bei Verwendung der Konsole folgendermaßen vor.

**So konfigurieren Sie einen Amazon DocumentDB DocumentDB-Quellendpunkt mit der Konsole AWS DMS**

1. Melden Sie sich bei an AWS-Managementkonsole und wählen Sie AWS DMS.

1. Wählen Sie im Navigationsbereich **Endpunkte** und anschließend **Endpunkt erstellen** aus.

1. Geben Sie für **Endpunkt-Kennung** einen Namen ein, anhand dessen Sie ihn leicht identifizieren können, z. B. `docdb-source`.

1. Wählen Sie für **Quellen-Engine** die Option **Amazon DocumentDB (mit MongoDB-Kompatibilität)** aus.

1. Geben Sie für **Servername** den Namen des Servers ein, auf dem sich der Amazon-DocumentDB-Datenbankendpunkt befindet. Sie könnten beispielsweise den öffentlichen DNS-Namen Ihrer Amazon-EC2-Instance eingeben, z. B. `democluster.cluster-cjf6q8nxfefi.us-east-2.docdb.amazonaws.com`.

1. Geben Sie für **Port** 27017 ein.

1. Für **SSL mode (SSL-Modus)** wählen Sie **verify-full** aus. Wenn Sie SSL in Ihrem Amazon-DocumentDB-Cluster deaktiviert haben, können Sie diesen Schritt überspringen.

1. Wählen Sie für **CA-Zertifikat** das Amazon-DocumentDB-Zertifikat `rds-combined-ca-bundle.pem` aus. Anweisungen zum Hinzufügen dieses Zertifikats finden Sie unter [Herstellen einer Verbindung mit Amazon DocumentDB über TLS](#CHAP_Source.DocumentDB.TLS).

1. Geben Sie für **Datenbankname** den Namen Ihrer Datenbank ein.

Gehen Sie bei Verwendung der CLI folgendermaßen vor.

**Um einen Amazon DocumentDB DocumentDB-Quellendpunkt mit dem zu konfigurieren AWS CLI**
+ Führen Sie den folgenden AWS DMS `create-endpoint` Befehl aus, um einen Amazon DocumentDB DocumentDB-Quellendpunkt zu konfigurieren und Platzhalter durch Ihre eigenen Werte zu ersetzen.

  ```
  aws dms create-endpoint \
             --endpoint-identifier a_memorable_name \
             --endpoint-type source \
             --engine-name docdb \
             --username value \
             --password value \
             --server-name servername_where_database_endpoint_resides \
             --port 27017 \
             --database-name name_of_endpoint_database
  ```

## Segmentieren von Amazon-DocumentDB-Sammlungen und parallele Migration
<a name="CHAP_Source.DocumentDB.ParallelLoad"></a>

Um die Leistung einer Migrationsaufgabe zu verbessern, unterstützen Amazon-DocumentDB-Quellendpunkte zwei Optionen des Features für paralleles vollständiges Laden bei der Tabellenzuordnung. Anders ausgedrückt: Sie können eine Sammlung parallel migrieren, indem Sie entweder die Optionen für die automatische Segmentierung oder für die Bereichssegmentierung der Tabellenzuordnung für paralleles vollständiges Laden in den JSON-Einstellungen verwenden. Mit den Optionen für die automatische Segmentierung können Sie die Kriterien für AWS DMS die automatische Segmentierung Ihrer Migrationsquelle in jedem Thread angeben. Mit den Optionen für die Bereichssegmentierung können Sie AWS DMS den spezifischen Bereich jedes Segments angeben, das DMS in jedem Thread migrieren soll. Weitere Informationen zu diesen Einstellungen finden Sie unter [Regeln und Operationen für Tabellen- und Sammlungseinstellungen](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Tablesettings.md).

### Parallele Migration einer Amazon-DocumentDB-Datenbank mithilfe von Bereichen für die automatische Segmentierung
<a name="CHAP_Source.DocumentDB.ParallelLoad.AutoPartitioned"></a>

Sie können Ihre Dokumente parallel migrieren, indem Sie die Kriterien für AWS DMS die automatische Partitionierung (Segmentierung) Ihrer Daten für jeden Thread angeben, insbesondere die Anzahl der Dokumente, die pro Thread migriert werden sollen. Bei diesem Verfahren versucht AWS DMS , die Segmentgrenzen zu optimieren, um eine maximale Leistung pro Thread zu erzielen.

Sie können die Segmentierungskriterien mithilfe der folgenden Tabelleneinstellungsoptionen in der Tabellenzuordnung angeben:


|  Tabelleneinstellungsoption  |  Description  | 
| --- | --- | 
|  `"type"`  |  (Erforderlich) Setzen Sie dies für Amazon DocumentDB als Quelle auf `"partitions-auto"`.  | 
|  `"number-of-partitions"`  |  (Optional) Gesamtzahl der für die Migration verwendeten Partitionen (Segmente). Der Standardwert ist 16.  | 
|  `"collection-count-from-metadata"`  |  (Optional) Wenn diese Option auf gesetzt ist`true`, wird eine geschätzte Anzahl von Datensammlungen AWS DMS verwendet, um die Anzahl der Partitionen zu bestimmen. Wenn auf gesetzt`false`, AWS DMS wird die tatsächliche Anzahl der Sammlungen verwendet. Der Standardwert ist `true`.  | 
|  `"max-records-skip-per-page"`  |  (Optional) Die Anzahl der Datensätze, die bei der Festlegung der Grenzen für jede Partition gleichzeitig übersprungen werden sollen. AWS DMS verwendet einen Ansatz zum Überspringen von Seiten, um die Mindestgrenze für eine Partition zu bestimmen. Der Standardwert ist 10 000. Das Festlegen eines relativ großen Werts kann zu Cursor-Timeouts und Aufgabenfehlern führen. Das Festlegen eines relativ niedrigen Werts führt zu mehr Operationen pro Seite und zu einem langsameren vollständigen Laden.   | 
|  `"batch-size"`  |  (Optional) Begrenzt die Anzahl der in einem Stapel zurückgegebenen Dokumente. Für jeden Stapel ist ein Round-Trip zum Server erforderlich. Wenn die Stapelgröße Null (0) ist, verwendet der Cursor die vom Server definierte maximale Stapelgröße. Der Standardwert ist 0.  | 

Das folgende Beispiel zeigt eine Tabellenzuordnung für die automatische Segmentierung.

```
{
    "rules": [
        {
            "rule-type": "selection",
            "rule-id": "1",
            "rule-name": "1",
            "object-locator": {
                "schema-name": "admin",
                "table-name": "departments"
            },
            "rule-action": "include",
            "filters": []
        },
        {
            "rule-type": "table-settings",
            "rule-id": "2",
            "rule-name": "2",
            "object-locator": {
                "schema-name": "admin",
                "table-name": "departments"
            },
            "parallel-load": {
                "type": "partitions-auto",
                "number-of-partitions": 5,
                "collection-count-from-metadata": "true",
                "max-records-skip-per-page": 1000000,
                "batch-size": 50000
            }
        }
    ]
}
```

Für die automatische Segmentierung gelten die folgenden Einschränkungen. Bei der Migration für die einzelnen Segmente werden die Sammlungsanzahl und der `_id`-Mindestwert für die Sammlung separat abgerufen. Anschließend wird die Mindestgrenze für dieses Segment anhand eines seitenweisen Überspringens berechnet. Stellen Sie daher sicher, dass der `_id`-Mindestwert für jede Sammlung konstant bleibt, bis alle Segmentgrenzen in der Sammlung berechnet wurden. Wenn Sie den `_id`-Mindestwert für eine Sammlung während der Berechnung der Segmentgrenze ändern, kann dies zu Datenverlust oder zu Fehlern aufgrund von doppelten Zeilen führen.

### Parallele Migration einer Amazon-DocumentDB-Datenbank mithilfe von spezifischen Segmentbereichen
<a name="CHAP_Source.DocumentDB.ParallelLoad.Ranges"></a>

Das folgende Beispiel zeigt eine Amazon-DocumentDB-Sammlung mit sieben Elementen und `_id` als Primärschlüssel.

![\[Amazon-DocumentDB-Sammlung mit sieben Elementen\]](http://docs.aws.amazon.com/de_de/dms/latest/userguide/images/datarep-docdb-collection.png)


Um die Sammlung in drei Segmente aufzuteilen und parallel zu migrieren, können Sie Ihrer Migrationsaufgabe Regeln für die Tabellenzuordnung hinzufügen, wie im folgenden JSON-Beispiel gezeigt.

```
{ // Task table mappings:
  "rules": [
    {
      "rule-type": "selection",
      "rule-id": "1",
      "rule-name": "1",
      "object-locator": {
        "schema-name": "testdatabase",
        "table-name": "testtable"
      },
      "rule-action": "include"
    }, // "selection" :"rule-type"
    {
      "rule-type": "table-settings",
      "rule-id": "2",
      "rule-name": "2",
      "object-locator": {
        "schema-name": "testdatabase",
        "table-name": "testtable"
      },
      "parallel-load": {
        "type": "ranges",
        "columns": [
           "_id",
           "num"
        ],
        "boundaries": [
          // First segment selects documents with _id less-than-or-equal-to 5f805c97873173399a278d79
          // and num less-than-or-equal-to 2.
          [
             "5f805c97873173399a278d79",
             "2"
          ],
          // Second segment selects documents with _id > 5f805c97873173399a278d79 and
          // _id less-than-or-equal-to 5f805cc5873173399a278d7c and
          // num > 2 and num less-than-or-equal-to 5.
          [
             "5f805cc5873173399a278d7c",
             "5"
          ]                                   
          // Third segment is implied and selects documents with _id > 5f805cc5873173399a278d7c.
        ] // :"boundaries"
      } // :"parallel-load"
    } // "table-settings" :"rule-type"
  ] // :"rules"
} // :Task table mappings
```

Mit dieser Definition für die Tabellenzuordnung wird die Quellsammlung in drei Segmente aufgeteilt, die parallel migriert werden. Im Folgenden sind die Segmentierungsgrenzen aufgeführt.

```
Data with _id less-than-or-equal-to "5f805c97873173399a278d79" and num less-than-or-equal-to 2 (2 records)
Data with _id less-than-or-equal-to "5f805cc5873173399a278d7c" and num less-than-or-equal-to 5 and not in (_id less-than-or-equal-to  "5f805c97873173399a278d79" and num less-than-or-equal-to 2) (3 records)
Data not in (_id less-than-or-equal-to "5f805cc5873173399a278d7c" and num less-than-or-equal-to 5) (2 records)
```

Nach Abschluss der Migrationsaufgabe können Sie anhand der Aufgabenprotokolle überprüfen, ob die Tabellen parallel geladen wurden, wie im folgenden Beispiel gezeigt. Sie können auch die zum Entladen der einzelnen Segmente aus der Quelltabelle verwendete Amazon-DocumentDB-Klausel `find` überprüfen.

```
[TASK_MANAGER    ] I:  Start loading segment #1 of 3 of table 'testdatabase'.'testtable' (Id = 1) by subtask 1. Start load timestamp 0005B191D638FE86  (replicationtask_util.c:752)

[SOURCE_UNLOAD   ] I:  Range Segmentation filter for Segment #0 is initialized.   (mongodb_unload.c:157)

[SOURCE_UNLOAD   ] I:  Range Segmentation filter for Segment #0 is: { "_id" : { "$lte" : { "$oid" : "5f805c97873173399a278d79" } }, "num" : { "$lte" : { "$numberInt" : "2" } } }  (mongodb_unload.c:328)

[SOURCE_UNLOAD   ] I: Unload finished for segment #1 of segmented table 'testdatabase'.'testtable' (Id = 1). 2 rows sent.

[TASK_MANAGER    ] I: Start loading segment #1 of 3 of table 'testdatabase'.'testtable' (Id = 1) by subtask 1. Start load timestamp 0005B191D638FE86 (replicationtask_util.c:752)
 
[SOURCE_UNLOAD   ] I: Range Segmentation filter for Segment #0 is initialized. (mongodb_unload.c:157) 

[SOURCE_UNLOAD   ] I: Range Segmentation filter for Segment #0 is: { "_id" : { "$lte" : { "$oid" : "5f805c97873173399a278d79" } }, "num" : { "$lte" : { "$numberInt" : "2" } } } (mongodb_unload.c:328)
 
[SOURCE_UNLOAD   ] I: Unload finished for segment #1 of segmented table 'testdatabase'.'testtable' (Id = 1). 2 rows sent.

[TARGET_LOAD     ] I: Load finished for segment #1 of segmented table 'testdatabase'.'testtable' (Id = 1). 1 rows received. 0 rows skipped. Volume transfered 480.

[TASK_MANAGER    ] I: Load finished for segment #1 of table 'testdatabase'.'testtable' (Id = 1) by subtask 1. 2 records transferred.
```

 AWS DMS Unterstützt derzeit die folgenden Amazon DocumentDB DocumentDB-Datentypen als Segmentschlüsselspalte:
+ Double
+ Zeichenfolge
+ ObjectId
+ 32-Bit-Ganzzahl
+ 64-Bit-Ganzzahl

## Migration mehrerer Datenbanken bei Verwendung von Amazon DocumentDB als Quelle für AWS DMS
<a name="CHAP_Source.DocumentDB.Multidatabase"></a>

AWS DMS Versionen 3.4.5 und höher unterstützen die Migration mehrerer Datenbanken in einer einzigen Aufgabe nur für Amazon DocumentDB DocumentDB-Versionen 4.0 und höher. Gehen Sie folgendermaßen vor, um mehrere Datenbanken zu migrieren:

1. Wenn Sie den Amazon-DocumentDB-Quellendpunkt erstellen:
   + Lassen Sie im AWS-Managementkonsole Feld „**Datenbankname“ unter **Endpunktkonfiguration auf der Seite „Endpoint** **erstellen**“ das Feld Datenbankname** leer. AWS DMS
   + Weisen Sie im Feld AWS Command Line Interface (AWS CLI) dem **DatabaseName**Parameter im **Dokument**, den Sie für die **CreateEndpoint**Aktion angebenDBSettings, einen leeren Zeichenkettenwert zu.

1. Geben Sie für jede Datenbank, die Sie von diesem Amazon-DocumentDB-Quellendpunkt migrieren möchten, den Namen jeder Datenbank als Namen eines Schemas in der Tabellenzuordnung für die Aufgabe an, entweder mithilfe der geführten Eingabe in der Konsole oder direkt in JSON. Weitere Informationen zur geführten Eingabe finden Sie in der Beschreibung zu [Festlegen der Tabellenauswahl und der Transformationsregeln über die Konsole](CHAP_Tasks.CustomizingTasks.TableMapping.Console.md). Weitere Informationen zu JSON finden Sie unter [Auswahlregeln und Aktionen](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Selections.md).

Sie können beispielsweise die folgende JSON-Struktur angeben, um drei Amazon-DocumentDB-Datenbanken zu migrieren.

**Example Migrieren aller Tabellen in einem Schema**  
Die folgende JSON-Struktur migriert alle Tabellen aus den Datenbanken `Customers`, `Orders` und `Suppliers` im Quellendpunkt zum Zielendpunkt.  

```
{
    "rules": [
        {
            "rule-type": "selection",
            "rule-id": "1",
            "rule-name": "1",
            "object-locator": {
                "schema-name": "Customers",
                "table-name": "%"
            },
            "object-locator": {
                "schema-name": "Orders",
                "table-name": "%"
            },
            "object-locator": {
                "schema-name": "Inventory",
                "table-name": "%"
            },
            "rule-action": "include"
        }
    ]
}
```

## Einschränkungen bei der Verwendung von Amazon DocumentDB als Quelle für AWS DMS
<a name="CHAP_Source.DocumentDB.Limitations"></a>

Die folgenden Einschränkungen gelten bei der Verwendung von Amazon DocumentDB als Quelle für AWS DMS:
+ Wenn die Option `_id` als separate Spalte gesetzt ist, darf der ID-String 200 Zeichen nicht überschreiten.
+ Objekt-ID und Array-Schlüssel werden in Spalten konvertiert, die mit dem Präfix `oid` und `array` im Tabellenmodus versehen sind.

  Intern wird auf diese Spalten mit den mit Präfix versehenen Namen verwiesen. Wenn Sie Transformationsregeln verwenden AWS DMS , die auf diese Spalten verweisen, stellen Sie sicher, dass Sie die Spalte mit dem Präfix angeben. Geben Sie beispielsweise `${oid__id}` anstatt `${_id}` oder `${array__addresses}` anstatt `${_addresses}` an. 
+  Namen von Sammlungen und Schlüsseln dürfen das Dollarzeichen (\$1) nicht enthalten. 
+ Der Tabellenmodus und der Dokumentmodus haben die oben genannten Einschränkungen.
+ Für die parallele Migration mithilfe der automatischen Segmentierung gelten die oben beschriebenen Einschränkungen.
+ Eine Amazon-DocumentDB-Quelle (MongoDB-kompatibel) unterstützt die Verwendung eines spezifischen Zeitstempels als Startposition für CDC nicht. Eine laufende Replikationsaufgabe beginnt unabhängig vom Zeitstempel mit der Erfassung von Änderungen.
+ AWS DMS unterstützt keine Dokumente, bei denen die Verschachtelungsebene höher als 97 für AWS DMS Versionen unter 3.5.2 ist.
+ Quellfilter werden für DocumentDB nicht unterstützt.
+ AWS DMS unterstützt keine CDC-Replikation (Change Data Capture) für DocumentDB als Quelle im Elastic Cluster-Modus.

## Verwenden von Endpunkteinstellungen mit Amazon DocumentDB als Quelle
<a name="CHAP_Source.DocumentDB.ECAs"></a>

Sie können Endpunkteinstellungen, ähnlich wie zusätzliche Verbindungsattribute, zum Konfigurieren Ihrer Amazon-DocumentDB-Quelldatenbank verwenden. Sie geben die Einstellungen an, wenn Sie den Quellendpunkt mithilfe der AWS DMS Konsole oder mithilfe des `create-endpoint` Befehls in [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html), mit der `--doc-db-settings '{"EndpointSetting": "value", ...}'` JSON-Syntax erstellen.

Die folgende Tabelle zeigt die Endpunkteinstellungen, die Sie mit Amazon DocumentDB als Quelle verwenden können.


| Attributname | Zulässige Werte | Standardwert und Beschreibung | 
| --- | --- | --- | 
|   `NestingLevel`   |  `"none"` `"one"`  |  `"none"` – Geben Sie `"none"` an, um den Dokumentmodus zu verwenden. Geben Sie `"one"` an, um den Tabellenmodus zu verwenden.  | 
|   `ExtractDocID`   |  `true` `false`  |  `false` – Verwenden Sie dieses Attribut, wenn `NestingLevel` auf `"none"` gesetzt ist.  Wenn Sie CDC mit Quellen verwenden, die [Transaktionen mit mehreren Dokumenten](https://www.mongodb.com/docs/manual/reference/method/Session.startTransaction/#mongodb-method-Session.startTransaction) erzeugen, **muss der `ExtractDocId` Parameter auf gesetzt werden**. `true` Wenn dieser Parameter nicht aktiviert ist, schlägt die AWS DMS Aufgabe fehl, wenn sie auf eine Transaktion mit mehreren Dokumenten trifft.  | 
|   `DocsToInvestigate`   |  Eine positive Ganzzahl größer als `0`.  |  `1000` – Verwenden Sie dieses Attribut, wenn `NestingLevel` auf `"one"` gesetzt ist.   | 
|   `ReplicateShardCollections `   |  `true` `false`  |  Wenn der Wert true ist, werden Daten in Shard-Sammlungen AWS DMS repliziert. AWS DMS verwendet diese Einstellung nur, wenn der Zielendpunkt ein elastischer DocumentDB-Cluster ist. Wenn Sie für diese Einstellung true festlegen, beachten Sie Folgendes: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/dms/latest/userguide/CHAP_Source.DocumentDB.html)  | 

## Quelldatentypen für Amazon DocumentDB
<a name="CHAP_Source.DocumentDB.DataTypes"></a>

Die folgende Tabelle enthält die Amazon-DocumentDB-Quelldatentypen, die bei Verwendung von AWS DMS unterstützt werden. In dieser Tabelle finden Sie auch die Standardzuordnungen von AWS DMS Datentypen. Weitere Informationen zu den Datentypen finden Sie unter [BSON types](https://docs.mongodb.com/manual/reference/bson-types) in der Dokumentation zu MongoDB.

Weitere Informationen zum Anzeigen des Datentyps, der im Ziel zugewiesen ist, finden Sie im Abschnitt für den Zielendpunkt, den Sie verwenden.

Weitere Informationen zu AWS DMS Datentypen finden Sie unter[Datentypen für den AWS Database Migration Service](CHAP_Reference.DataTypes.md).


|  Amazon-DocumentDB-Datentypen  |  AWS DMS Datentypen  | 
| --- | --- | 
| Boolesch | Bool | 
| Binär | BLOB | 
| Date | Date | 
| Zeitstempel | Date | 
| Int | INT4 | 
| Long | INT8 | 
| Double | REAL8 | 
| String (UTF-8) | CLOB | 
| Array | CLOB | 
| OID | Zeichenfolge | 

# Verwendung von Amazon S3 als Quelle für AWS DMS
<a name="CHAP_Source.S3"></a>

Sie können Daten aus einem Amazon S3 S3-Bucket migrieren mit AWS DMS. Erteilen Sie dazu Zugriff auf einen Amazon-S3-Bucket, der eine oder mehrere Datendateien enthält. Fügen Sie diesem S3-Bucket eine JSON-Datei hinzu, die die Zuweisung zwischen den Daten und den Datenbanktabellen der Daten in diesen Dateien beschreibt.

Die Quelldatendateien müssen im Amazon-S3-Bucket enthalten sein, bevor die Volllastaufgabe beginnt. Geben Sie den Bucket-Namen mit dem `bucketName`-Parameter an. 

Die Quelldatendateien können in den folgenden Formaten vorliegen:
+ Durch Kommas getrennter Wert (.csv)
+ Parquet (DMS-Version 3.5.3 und höher). Hinweise zur Verwendung von Dateien im Parquet-Format finden Sie unter. [Verwenden von Dateien im Parquet-Format in Amazon S3 als Quelle für AWS DMS](#CHAP_Source.S3.Parquet)

Verwenden Sie für Quelldatendateien im Format mit kommagetrennten Werten (.csv) die folgende Benennungskonvention. In dieser Konvention ist *`schemaName`* das Quellschema und *`tableName`* ist der Name einer Tabelle in diesem Schema.

```
/schemaName/tableName/LOAD001.csv
/schemaName/tableName/LOAD002.csv
/schemaName/tableName/LOAD003.csv
...
```

 Angenommen, Ihre Datendateien befinden sich in `amzn-s3-demo-bucket` im folgenden Amazon-S3-Pfad.

```
s3://amzn-s3-demo-bucket/hr/employee
```

Beim Laden AWS DMS wird davon ausgegangen, dass der Name des Quellschemas lautet `hr` und dass der Name der Quelltabelle lautet. `employee`

Zusätzlich zu `bucketName` (was erforderlich ist) können Sie optional einen `bucketFolder` Parameter angeben, um anzugeben, wo im Amazon S3 S3-Bucket nach Datendateien gesucht werden AWS DMS soll. Wenn Sie das vorherige Beispiel fortsetzen und `bucketFolder` auf einstellen`sourcedata`, werden die Datendateien im folgenden Pfad AWS DMS gelesen.

```
s3://amzn-s3-demo-bucket/sourcedata/hr/employee
```

Sie können mithilfe der zusätzlichen Verbindungsattribute die Trennzeichen für die Spalte und die Zeile sowie den Nullwertindikator und andere Parameter festlegen. Weitere Informationen finden Sie unter [Endpunkteinstellungen für Amazon S3 als Quelle für AWS DMS](#CHAP_Source.S3.Configuring).

Sie können einen Bucket-Eigentümer angeben und Sniping verhindern, wenn Sie die Amazon-S3-Endpunkteinstellung `ExpectedBucketOwner` verwenden, wie im Folgenden gezeigt. Wenn Sie dann eine Anforderung stellen, um eine Verbindung zu testen oder eine Migration durchzuführen, gleicht S3 die Konto-ID des Bucket-Eigentümers mit dem angegebenen Parameter ab.

```
--s3-settings='{"ExpectedBucketOwner": "AWS_Account_ID"}'
```

**Topics**
+ [Definition externer Tabellen für Amazon S3 als Quelle für AWS DMS](#CHAP_Source.S3.ExternalTableDef)
+ [Verwenden von CDC mit Amazon S3 als Quelle für AWS DMS](#CHAP_Source.S3.CDC)
+ [Voraussetzungen für die Verwendung von Amazon S3 als Quelle für AWS DMS](#CHAP_Source.S3.Prerequisites)
+ [Einschränkungen bei der Verwendung von Amazon S3 als Quelle für AWS DMS](#CHAP_Source.S3.Limitations)
+ [Endpunkteinstellungen für Amazon S3 als Quelle für AWS DMS](#CHAP_Source.S3.Configuring)
+ [Quelldatentypen für Amazon S3](#CHAP_Source.S3.DataTypes)
+ [Verwenden von Dateien im Parquet-Format in Amazon S3 als Quelle für AWS DMS](#CHAP_Source.S3.Parquet)

## Definition externer Tabellen für Amazon S3 als Quelle für AWS DMS
<a name="CHAP_Source.S3.ExternalTableDef"></a>

Zusätzlich zu den Datendateien müssen Sie auch eine externe Tabellendefinition bereitstellen. Eine *externe Tabellendefinition* ist ein JSON-Dokument, das beschreibt, AWS DMS wie die Daten aus Amazon S3 zu interpretieren sind. Die maximale Größe dieses Dokuments ist 2 MB. Wenn Sie mit der AWS DMS Management Console einen Quellendpunkt erstellen, können Sie den JSON-Code direkt in das Feld für die Tabellenzuweisung eingeben. Wenn Sie die AWS Command Line Interface (AWS CLI) oder die AWS DMS API verwenden, um Migrationen durchzuführen, können Sie eine JSON-Datei erstellen, um die Definition der externen Tabelle anzugeben.

Angenommen, Sie haben eine Datei mit den folgenden Daten.

```
101,Smith,Bob,2014-06-04,New York
102,Smith,Bob,2015-10-08,Los Angeles
103,Smith,Bob,2017-03-13,Dallas
104,Smith,Bob,2017-03-13,Dallas
```

Im Folgenden sehen Sie ein Beispiel für eine externe Tabellendefinition für diese Daten.

```
{
    "TableCount": "1",
    "Tables": [
        {
            "TableName": "employee",
            "TablePath": "hr/employee/",
            "TableOwner": "hr",
            "TableColumns": [
                {
                    "ColumnName": "Id",
                    "ColumnType": "INT8",
                    "ColumnNullable": "false",
                    "ColumnIsPk": "true"
                },
                {
                    "ColumnName": "LastName",
                    "ColumnType": "STRING",
                    "ColumnLength": "20"
                },
                {
                    "ColumnName": "FirstName",
                    "ColumnType": "STRING",
                    "ColumnLength": "30"
                },
                {
                    "ColumnName": "HireDate",
                    "ColumnType": "DATETIME"
                },
                {
                    "ColumnName": "OfficeLocation",
                    "ColumnType": "STRING",
                    "ColumnLength": "20"
                }
            ],
            "TableColumnsTotal": "5"
        }
    ]
}
```

In diesem JSON-Dokument sind folgende Elemente enthalten:

`TableCount` – die Anzahl der Quelltabellen. In diesem Beispiel es nur eine Tabelle.

`Tables` – ein Array bestehend aus einer JSON-Zuweisung je Quelltabelle. In diesem Beispiel es nur eine Zuweisung. Jede Zuweisung umfasst die folgenden Schlüsselelemente:
+ `TableName` – der Name der Quelltabelle.
+ `TablePath` – der Pfad in Ihrem Amazon-S3-Bucket, in dem AWS DMS die Datei mit den Daten für die Volllastaufgabe finden kann. Wenn ein `bucketFolder`-Wert angegeben ist, wird dieser Wert dem Pfad vorangestellt.
+ `TableOwner` – der Name des Schemas für diese Tabelle.
+ `TableColumns` – ein Array einer oder mehrerer Zuweisungen, die jeweils eine Spalte in der Quelltabelle beschreiben:
  + `ColumnName` – der Name einer Spalte in der Quelltabelle.
  + `ColumnType` – der Datentyp für die Spalte. Die zulässigen Datentypen finden Sie unter [Quelldatentypen für Amazon S3](#CHAP_Source.S3.DataTypes).
  + `ColumnLength` – die Anzahl an Bytes in dieser Spalte. Die maximale Spaltenlänge ist auf 2147483647 Byte (2.047 MegaBytes) begrenzt, da eine S3-Quelle den FULL LOB-Modus nicht unterstützt. `ColumnLength`ist für die folgenden Datentypen gültig:
    + BYTE
    + STRING
  + `ColumnNullable` – ein boolescher Wert, der `true` lautet, wenn diese Spalte NULL-Werte enthalten darf (Standard = `false`).
  + `ColumnIsPk` – ein boolescher Wert, der `true` lautet, wenn diese Spalte Teil des Primärschlüssels ist (Standard = `false`).
  + `ColumnDateFormat` – das Eingabedatumsformat für eine Spalte mit den Typen DATE, TIME und DATETIME, das verwendet wird, um eine Datenzeichenfolge in ein Datumsobjekt zu analysieren. Mögliche Werte sind:

    ```
    - YYYY-MM-dd HH:mm:ss
    - YYYY-MM-dd HH:mm:ss.F
    - YYYY/MM/dd HH:mm:ss
    - YYYY/MM/dd HH:mm:ss.F
    - MM/dd/YYYY HH:mm:ss
    - MM/dd/YYYY HH:mm:ss.F
    - YYYYMMdd HH:mm:ss
    - YYYYMMdd HH:mm:ss.F
    ```
+ `TableColumnsTotal` – die Gesamtanzahl der Spalten. Diese Anzahl muss der Anzahl der Elemente im `TableColumns`-Array entsprechen.

Wenn Sie nichts anderes angeben, wird AWS DMS davon ausgegangen, dass der Wert Null `ColumnLength` ist.

**Anmerkung**  
In unterstützten Versionen von AWS DMS können die S3-Quelldaten auch eine optionale Operationsspalte als erste Spalte vor dem `TableName` Spaltenwert enthalten. Diese Operationsspalte identifiziert die Operation (`INSERT`), die verwendet wird, um die Daten während eines vollständigen Ladevorgangs zu einem S3-Zielendpunkt zu migrieren.   
Falls vorhanden, ist der Wert dieser Spalte das erste Zeichen des `INSERT`-Schlüsselworts der Operation (`I`). Sofern vorhanden, gibt diese Spalte in der Regel an, dass die S3-Quelle während einer früheren Migration durch DMS als S3-Ziel erstellt wurde.   
In früheren DMS-Versionen als 3.4.2 war diese Spalte in S3-Quelldaten, die aus einer früheren DMS-Volllastaufgabe erstellt wurden, nicht vorhanden. Durch das Hinzufügen dieser Spalte zu den S3-Zieldaten werden alle Zeilen in einem konsistenten Format zum S3-Ziel geschrieben. Dies geschieht unabhängig davon, ob die Daten während eines vollständigen oder während eines CDC-Ladevorgangs geschrieben werden. Weitere Informationen zu den Optionen zum Formatieren von S3-Zieldaten finden Sie unter [Angabe von Quelldatenbankoperationen in migrierten S3-Daten](CHAP_Target.S3.md#CHAP_Target.S3.Configuring.InsertOps).

Für eine Spalte des Typs NUMERIC müssen Sie die Genauigkeit und Skalierung festlegen. *Genauigkeit* ist die Gesamtanzahl der Stellen in einer Zahl und *Skalierung* die Anzahl der Dezimalstellen. Dafür verwenden Sie die Elemente `ColumnPrecision` und `ColumnScale`, wie im Folgenden dargestellt.

```
...
    {
        "ColumnName": "HourlyRate",
        "ColumnType": "NUMERIC",
        "ColumnPrecision": "5"
        "ColumnScale": "2"
    }
...
```

Geben Sie für eine Spalte vom Typ DATETIME mit Daten, die Sekundenbruchteile enthalten, die Skalierung an. *Skalierung* ist die Anzahl der Dezimalstellen für die Sekundenbruchteile. Diese kann zwischen 0 und 9 liegen. Verwenden Sie dafür das Element `ColumnScale`, wie im Folgenden dargestellt.

```
...
{
      "ColumnName": "HireDate",
      "ColumnType": "DATETIME",
      "ColumnScale": "3"
}
...
```

Wenn Sie nichts anderes angeben, `ColumnScale` wird von Null AWS DMS ausgegangen und die Sekundenbruchteile werden gekürzt.

## Verwenden von CDC mit Amazon S3 als Quelle für AWS DMS
<a name="CHAP_Source.S3.CDC"></a>

Nach AWS DMS dem vollständigen Laden der Daten können Datenänderungen optional auf den Zielendpunkt repliziert werden. Dazu laden Sie Change Data Capture-Dateien (CDC-Dateien) in Ihren Amazon S3 S3-Bucket hoch. AWS DMS liest diese CDC-Dateien, wenn Sie sie hochladen, und wendet die Änderungen dann am Zielendpunkt an. 

Die CDC-Dateien werden wie folgt benannt:

```
CDC00001.csv
CDC00002.csv
CDC00003.csv
...
```

**Anmerkung**  
Um CDC-Dateien im Änderungsdatenordner zu replizieren, laden Sie sie erfolgreich in lexikalischer (sequenzieller) Reihenfolge hoch. Laden Sie beispielsweise die Datei CDC00002 .csv vor der Datei CDC00003 .csv hoch. Andernfalls wird die CDC00002 CSV-Datei übersprungen und nicht repliziert, wenn Sie sie nach der Datei „.csv“ laden. CDC00003 Die Datei CDC00004 .csv wird jedoch erfolgreich repliziert, wenn sie nach der Datei .csv geladen wird. CDC00003

Geben Sie den Parameter an, um anzugeben, wo die Dateien zu AWS DMS finden sind. `cdcPath` Wenn Sie im vorherigen Beispiel `cdcPath` auf `changedata` setzen, liest AWS DMS die CDC-Dateien im folgenden Pfad.

```
s3://amzn-s3-demo-bucket/changedata
```

Wenn Sie `cdcPath` auf `changedata` und `bucketFolder` auf `myFolder` setzen, liest AWS DMS die CDC-Dateien im folgenden Pfad.

```
s3://amzn-s3-demo-bucket/myFolder/changedata
```

Die Datensätze in einer CDC-Datei werden wie folgt formatiert:
+ Operation – die Änderungsoperation, die ausgeführt werden soll: `INSERT` oder `I`, `UPDATE` oder `U` oder `DELETE` oder `D`. Diese Schlüsselwort- und Zeichenwerte unterscheiden zwischen Groß- und Kleinschreibung.
**Anmerkung**  
 AWS DMS Kann in unterstützten AWS DMS Versionen den Vorgang, der für jeden Ladedatensatz ausgeführt werden soll, auf zwei Arten identifizieren. AWS DMS kann dies anhand des Schlüsselwortwerts des Datensatzes (z. B.`INSERT`) oder anhand des Anfangszeichens des Schlüsselworts (z. B.`I`) tun. In früheren Versionen AWS DMS wurde der Ladevorgang nur anhand des vollständigen Schlüsselwortwerts erkannt.   
In früheren Versionen von wurde der vollständige Schlüsselwortwert geschrieben AWS DMS, um die CDC-Daten zu protokollieren. Vorherige Versionen schrieben den Operationswert darüber hinaus nur mit dem Anfangszeichen des Schlüsselworts in S3-Ziele.   
Durch die Erkennung beider Formate kann AWS DMS der Vorgang unabhängig davon ausgeführt werden, wie die Operationsspalte zur Erstellung der S3-Quelldaten geschrieben wurde. Dieser Ansatz unterstützt die Verwendung von S3-Zieldaten als Quelle für eine spätere Migration. Dank dieses Ansatzes müssen Sie nicht länger das Format des Anfangszeichens eines Schlüsselworts ändern, das in der Operationsspalte der späteren S3-Quelle erscheint
+ Tabellenname – der Name der Quelltabelle.
+ Schemaname – der Name des Quellschemas.
+ Daten – eine oder mehrere Spalten, die die zu ändernden Daten darstellen.

Im Folgenden sehen Sie ein Beispiel einer CDC-Datei für eine Tabelle mit dem Namen `employee`.

```
INSERT,employee,hr,101,Smith,Bob,2014-06-04,New York
UPDATE,employee,hr,101,Smith,Bob,2015-10-08,Los Angeles
UPDATE,employee,hr,101,Smith,Bob,2017-03-13,Dallas
DELETE,employee,hr,101,Smith,Bob,2017-03-13,Dallas
```

## Voraussetzungen für die Verwendung von Amazon S3 als Quelle für AWS DMS
<a name="CHAP_Source.S3.Prerequisites"></a>

Um Amazon S3 als Quelle für verwenden zu können AWS DMS, muss sich Ihr S3-Quell-Bucket in derselben AWS Region befinden wie die DMS-Replikationsinstanz, die Ihre Daten migriert. Darüber hinaus muss das AWS -Konto, das Sie für die Migration verwenden, über Lesezugriff auf den Quell-Bucket verfügen. Für AWS DMS Version 3.4.7 und höher muss DMS über einen VPC-Endpunkt oder eine öffentliche Route auf den Quell-Bucket zugreifen. Informationen zu VPC-Endpunkten finden Sie unter. [Konfiguration von VPC-Endpunkten für AWS DMS](CHAP_VPC_Endpoints.md)

Die AWS Identity and Access Management (IAM-) Rolle, die dem Benutzerkonto zugewiesen ist, mit dem die Migrationsaufgabe erstellt wurde, muss über die folgenden Berechtigungen verfügen.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
       {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket*/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket*"
            ]
        }
    ]
}
```

------

Die AWS Identity and Access Management (IAM-) Rolle, die dem Benutzerkonto zugewiesen wurde, das zur Erstellung der Migrationsaufgabe verwendet wurde, muss über die folgenden Berechtigungen verfügen, wenn die Versionierung im Amazon S3 S3-Bucket aktiviert ist.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
       {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:GetObjectVersion"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket*/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket*"
            ]
        }
    ]
}
```

------

## Einschränkungen bei der Verwendung von Amazon S3 als Quelle für AWS DMS
<a name="CHAP_Source.S3.Limitations"></a>

Die folgenden Einschränkungen gelten bei Verwendung von Amazon S3 als Quelle:
+ Aktivieren Sie die Versionsverwaltung für S3 nicht. Wenn Sie die Versionsverwaltung für S3 benötigen, verwenden Sie Lebenszyklusrichtlinien, um alte Versionen aktiv zu löschen. Andernfalls kann es aufgrund eines Timeouts eines `list-object`-Aufrufs in S3 zu Verbindungsfehlern beim Endpunkttest kommen. Informationen zum Erstellen einer Lebenszyklusrichtlinie für einen S3-Bucket finden Sie unter [Verwalten Ihres Speicher-Lebenszyklus](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html). Informationen zum Löschen einer Version eines S3-Objekts finden Sie unter [Löschen von Objekten aus einem versionsverwaltungsfähigen Bucket](https://docs.aws.amazon.com/AmazonS3/latest/dev/DeletingObjectVersions.html).
+ Ein VPC-fähiger S3-Bucket (Gateway-VPC) wird in den Versionen 3.4.7 und höher unterstützt.
+ MySQL konvertiert den `time` Datentyp in. `string` Um `time` Datentypwerte in MySQL zu sehen, definieren Sie die Spalte in der Zieltabelle als `string` und setzen Sie die Einstellung **Zieltabellenvorbereitungsmodus** der Aufgabe auf **Kürzen.**
+ AWS DMS verwendet den `BYTE` Datentyp intern für Daten in beiden `BYTE` `BYTES` Datentypen.
+ S3-Quellendpunkte unterstützen die Funktion zum erneuten Laden von DMS-Tabellen nicht.
+ AWS DMS unterstützt den vollständigen LOB-Modus mit Amazon S3 als Quelle nicht.

Bei der Verwendung von Dateien im Parquet-Format in Amazon S3 als Quelle gelten die folgenden Einschränkungen:
+ Datumsangaben`MMYYYYDD`, die in der Funktion zur Datumspartitionierung von S3 Parquet Source enthalten `DDMMYYYY` sind oder von ihr nicht unterstützt werden.

## Endpunkteinstellungen für Amazon S3 als Quelle für AWS DMS
<a name="CHAP_Source.S3.Configuring"></a>

Sie können Endpunkteinstellungen, ähnlich wie zusätzliche Verbindungsattribute, zum Konfigurieren Ihrer Amazon-S3-Quelldatenbank verwenden. Sie geben die Einstellungen an, wenn Sie den Quellendpunkt mithilfe der AWS DMS Konsole oder mithilfe des `create-endpoint` Befehls in [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html), mit der `--s3-settings '{"EndpointSetting": "value", ...}'` JSON-Syntax erstellen.

**Anmerkung**  
AWS DMS verwendet standardmäßig eine sichere Verbindung zum Amazon S3 S3-Endpunkt, ohne dass der SSL-Modus oder das Zertifikat angegeben werden müssen.

Die folgende Tabelle zeigt die Endpunkteinstellungen, die Sie mit Amazon S3 als Quelle verwenden können.


| **Option** | **Beschreibung** | 
| --- | --- | 
| BucketFolder |  (Optional) Ein Ordnername im S3-Bucket. Wenn dieses Attribut angegeben ist, werden die Quelldatendateien und CDC-Dateien im Pfad `s3://amzn-s3-demo-bucket/bucketFolder/schemaName/tableName/` bzw. `s3://amzn-s3-demo-bucket/bucketFolder/` gelesen. Wenn dieses Attribut nicht angegeben ist, wird der Pfad `schemaName/tableName/` verwendet.  `'{"BucketFolder": "sourceData"}'`  | 
| BucketName |  Der Name des S3-Buckets. `'{"BucketName": "amzn-s3-demo-bucket"}'`  | 
| CdcPath | Der Speicherort von CDC-Dateien. Dieses Attribut ist erforderlich, wenn eine Aufgabe Änderungsdaten erfasst. Andernfalls ist es optional. Wenn CdcPath vorhanden, AWS DMS liest es CDC-Dateien aus diesem Pfad und repliziert die Datenänderungen auf den Zielendpunkt. Weitere Informationen finden Sie unter [Verwenden von CDC mit Amazon S3 als Quelle für AWS DMS](#CHAP_Source.S3.CDC). `'{"CdcPath": "changeData"}'`  | 
| CsvDelimiter |  Das Trennzeichen, das zum Trennen von Spalten in den Quelldateien dient. Standardmäßig wird ein Komma verwendet. Ein Beispiel folgt. `'{"CsvDelimiter": ","}'`  | 
| CsvNullValue |  Eine benutzerdefinierte Zeichenfolge, die beim Lesen aus der Quelle als Null AWS DMS behandelt wird. Der Standardwert ist eine leere Zeichenfolge. Wenn Sie diesen Parameter nicht festlegen, wird eine leere Zeichenfolge als Nullwert AWS DMS behandelt. Wenn Sie diesen Parameter auf eine Zeichenfolge wie „\$1 N“ setzen, AWS DMS wird diese Zeichenfolge als Nullwert und leere Zeichenketten als leerer Zeichenkettenwert behandelt.  | 
| CsvRowDelimiter |  Das Trennzeichen, das zum Trennen von Zeilen in den Quelldateien dient. Standardmäßig wird ein Zeilenumbruch (`\n`) verwendet. `'{"CsvRowDelimiter": "\n"}'`  | 
| DataFormat |  Setzen Sie diesen Wert auf, `Parquet` um Daten im Parquet-Format zu lesen. `'{"DataFormat": "Parquet"}'`  | 
| IgnoreHeaderRows |  Wenn dieser Wert auf 1 gesetzt ist, wird die Kopfzeile der ersten Zeile in einer CSV-Datei AWS DMS ignoriert. Mit dem Wert 1 wird die Funktion aktiviert, mit 0 deaktiviert. Der Standardwert ist 0. `'{"IgnoreHeaderRows": 1}'`  | 
| Rfc4180 |  Wenn dieser Wert auf `true` oder `y` gesetzt ist, muss auf jedes führende doppelte Anführungszeichen ein endendes doppeltes Anführungszeichen folgen. Diese Formatierung entspricht RFC 4180. Wenn dieser Parameter auf `false` oder `n` gesetzt ist, werden Zeichenfolgen-Literale wie vorhanden in das Ziel kopiert. In diesem Fall signalisiert ein Trennzeichen (Zeile oder Spalte) das Ende des Feldes. Daher können Sie keine Trennzeichen als Teil der Zeichenfolge verwenden, da diese das Ende des Werts bezeichnen. Der Standardwert ist `true`. Zulässige Werte: `true`, `false`, `y`, `n` `'{"Rfc4180": false}'`  | 

## Quelldatentypen für Amazon S3
<a name="CHAP_Source.S3.DataTypes"></a>

Datenmigration, die Amazon S3 als Quelle für AWS DMS Anforderungen verwendet, um Daten aus Amazon S3 AWS DMS Datentypen zuzuordnen. Weitere Informationen finden Sie unter [Definition externer Tabellen für Amazon S3 als Quelle für AWS DMS](#CHAP_Source.S3.ExternalTableDef).

Weitere Informationen zum Anzeigen des Datentyps, der im Ziel zugewiesen ist, finden Sie im Abschnitt für den Zielendpunkt, den Sie verwenden.

Weitere Informationen zu AWS DMS Datentypen finden Sie unter[Datentypen für den AWS Database Migration Service](CHAP_Reference.DataTypes.md).

Die folgenden AWS DMS Datentypen werden mit Amazon S3 als Quelle verwendet:
+ BYTE – erfordert `ColumnLength`. Weitere Informationen finden Sie unter [Definition externer Tabellen für Amazon S3 als Quelle für AWS DMS](#CHAP_Source.S3.ExternalTableDef).
+ DATE
+ TIME
+ DATETIME – weitere Informationen finden Sie im Beispiel für den Typ DATETIME unter [Definition externer Tabellen für Amazon S3 als Quelle für AWS DMS](#CHAP_Source.S3.ExternalTableDef).
+ INT1
+ INT2
+ INT4
+ INT8
+ NUMERIC — Erfordert `ColumnPrecision` und`ColumnScale`. AWS DMS unterstützt die folgenden Höchstwerte:
  + **ColumnPrecision: 38**
  + **ColumnScale: 31**

  Weitere Informationen finden Sie im Beispiel für den Typ NUMERIC unter [Definition externer Tabellen für Amazon S3 als Quelle für AWS DMS](#CHAP_Source.S3.ExternalTableDef).
+ REAL4
+ REAL8
+ STRING – erfordert `ColumnLength`. Weitere Informationen finden Sie unter [Definition externer Tabellen für Amazon S3 als Quelle für AWS DMS](#CHAP_Source.S3.ExternalTableDef).
+ UINT1
+ UINT2
+ UINT4
+ UINT8
+ BLOB
+ CLOB
+ BOOLEAN

## Verwenden von Dateien im Parquet-Format in Amazon S3 als Quelle für AWS DMS
<a name="CHAP_Source.S3.Parquet"></a>

In AWS DMS Version 3.5.3 und höher können Sie Dateien im Parquet-Format in einem S3-Bucket als Quelle für die Full-Load- oder CDC-Replikation verwenden. 

DMS unterstützt nur Dateien im Parquet-Format als Quelle, die DMS durch die Migration von Daten auf einen S3-Zielendpunkt generiert. Dateinamen müssen im unterstützten Format vorliegen, andernfalls nimmt DMS sie nicht in die Migration auf.

Quelldatendateien im Parquet-Format müssen sich im folgenden Ordner und in der folgenden Benennungskonvention befinden.

```
schema/table1/LOAD00001.parquet
schema/table2/LOAD00002.parquet
schema/table2/LOAD00003.parquet
```

Verwenden Sie für Quelldatendateien für CDC-Daten im Parquet-Format die folgenden Ordner- und Benennungsregeln, um sie zu benennen und zu speichern.

```
schema/table/20230405-094615814.parquet
schema/table/20230405-094615853.parquet
schema/table/20230405-094615922.parquet
```

Um auf Dateien im Parquet-Format zuzugreifen, legen Sie die folgenden Endpunkteinstellungen fest:
+ Setzen Sie `DataFormat` auf `Parquet`. 
+ Legen Sie die `cdcPath` Einstellung nicht fest. Stellen Sie sicher, dass Sie Ihre Dateien im Parquet-Format in den angegebenen Schema-/Tabellenordnern erstellen. 

[https://docs.aws.amazon.com/dms/latest/APIReference/API_S3Settings.html](https://docs.aws.amazon.com/dms/latest/APIReference/API_S3Settings.html)

### Unterstützte Datentypen für Dateien im Parquet-Format
<a name="CHAP_Source.S3.Parquet.Datatypes"></a>

AWS DMS unterstützt die folgenden Quell- und Zieldatentypen bei der Migration von Daten aus Dateien im Parquet-Format. Stellen Sie vor der Migration sicher, dass Ihre Zieltabelle Spalten mit den richtigen Datentypen enthält.


| Quelldatentyp | Zieldatentyp | 
| --- | --- | 
| BYTE | BINARY | 
| DATE | DATE32 | 
| TIME | TIME32 | 
| DATETIME | TIMESTAMP | 
| INT1 | INT8 | 
| INT2 | INT16 | 
| INT4 | INT32 | 
| INT8 | INT64 | 
| NUMERIC | DECIMAL | 
| REAL4 | FLOAT | 
| REAL8 | DOUBLE | 
| STRING | STRING | 
| UINT1 | UINT8 | 
| UINT2 | UINT16 | 
| UINT4 | UINT32 | 
| UINT8 | UINT | 
| WSTRING | STRING | 
| BLOB | BINARY | 
| NCLOB | STRING | 
| CLOB | STRING | 
| BOOLEAN | BOOL | 

# Verwendung der IBM Db2 für Linux-, Unix-, Windows- und Amazon RDS-Datenbank (Db2 LUW) als Quelle für AWS DMS
<a name="CHAP_Source.DB2"></a>

Mit AWS Database Migration Service () können Sie Daten von einer IBM Db2 for Linux-, Unix-, Windows- und Amazon RDS-Datenbank (Db2 LUW) in jede unterstützte Zieldatenbank migrieren.AWS DMS

Informationen zu Versionen von Db2 unter Linux, Unix, Windows und RDS, die als Quelle AWS DMS unterstützt werden, finden Sie unter. [Quellen für AWS DMS](CHAP_Introduction.Sources.md) 

Sie können Secure Sockets Layer (SSL) verwenden, um Verbindungen zwischen Ihrem Db2 LUW-Endpunkt und der Replikations-Instance zu verschlüsseln. Weitere Informationen zur Verwendung von SSL mit einem Db2 LUW-Endpunkt finden Sie unter [Verwenden von SSL mit AWS Database Migration Service](CHAP_Security.SSL.md).

Beim AWS DMS Lesen von Daten aus einer IBM Db2-Quelldatenbank wird die Standard-Isolationsstufe CURSOR STABILITY (CS) für Db2-Version 9.7 und höher verwendet. Weitere Informationen finden Sie in der Dokumentation zu [IBM Db2 für Linux, UNIX und Windows](https://www.ibm.com/docs/en/db2/12.1.0).

## Voraussetzungen für die Verwendung von Db2 LUW als Quelle für AWS DMS
<a name="CHAP_Source.DB2.Prerequisites"></a>

Die folgenden Voraussetzungen müssen erfüllt sein, damit Sie eine Db2 LUW-Datenbank als Quelle verwenden können.

Zum Aktivieren einer fortlaufenden Replikation, auch als Change Data Capture (CDC) bezeichnet, gehen Sie wie folgt vor:
+ Stellen Sie die Datenbank so ein, dass sie wiederherstellbar ist. AWS DMS Dazu müssen Änderungen erfasst werden. Eine Datenbank ist wiederherstellbar, wenn einer oder beide der Datenbank-Konfigurationsparameter `LOGARCHMETH1` und `LOGARCHMETH2` auf `ON` gesetzt sind.

  Wenn Ihre Datenbank wiederherstellbar ist, AWS DMS können Sie bei Bedarf auf Db2 zugreifen. `ARCHIVE LOG`
+ Stellen Sie sicher, dass die DB2 Transaktionsprotokolle verfügbar sind und über einen ausreichenden Aufbewahrungszeitraum verfügen, bis zu dem sie verarbeitet werden können. AWS DMS
+ DB2 erfordert eine `SYSADM` `DBADM` Autorisierung zum Extrahieren von Transaktionsprotokolldatensätzen. Erteilen Sie dem Benutzerkonto die folgenden Berechtigungen:
  + `SYSADM` oder `DBADM`
  + `DATAACCESS`
**Anmerkung**  
Für reine Volllast-Aufgaben benötigt das DMS-Benutzerkonto die Berechtigung DATAACCESS.
+ Wenn Sie IBM DB2 für LUW Version 9.7 als Quelle verwenden, legen Sie das zusätzliche Verbindungsattribut (ECA) `CurrentLsn` wie folgt fest:

  `CurrentLsn=LSN`, wobei `LSN` eine Protokoll-Sequenznummer (Log Sequence Number, LSN) angibt, bei der die Replikation beginnen soll. Oder `CurrentLsn=scan`.
+ Wenn Sie Amazon RDS for Db2 LUW als Quelle verwenden, stellen Sie sicher, dass die Archivprotokolle für verfügbar sind. AWS DMS Da AWS-managed Db2-Datenbanken die Archivprotokolle so schnell wie möglich löschen, sollten Sie den Zeitraum, für den die Protokolle verfügbar bleiben, verlängern. Um beispielsweise die Aufbewahrung von Protokollen auf 24 Stunden zu erhöhen, führen Sie den folgenden Befehl aus:

  ```
  db2 "call rdsadmin.set_archive_log_retention( ?, 'TESTDB', '24')"
  ```

  Weitere Informationen zu den LUW-Prozeduren von Amazon RDS for Db2 finden Sie in der [Referenz zu gespeicherten Prozeduren von Amazon RDS for Db2](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/db2-stored-procedures.html) im *Amazon Relational Database* Service User Guide.
+ Gewähren Sie die folgenden Rechte, wenn Sie spezielle Tests vor der Migration verwenden DB2 :

  ```
  GRANT CONNECT ON DATABASE TO USER <DMS_USER>;
  GRANT SELECT ON SYSIBM.SYSDUMMY1 TO USER <DMS_USER>;
  GRANT SELECT ON SYSIBMADM.ENV_INST_INFO TO USER <DMS_USER>;
  GRANT SELECT ON SYSIBMADM.DBCFG TO USER <DMS_USER>;
  GRANT SELECT ON SYSCAT.SCHEMATA TO USER <DMS_USER>;
  GRANT SELECT ON SYSCAT.COLUMNS TO USER <DMS_USER>;
  GRANT SELECT ON SYSCAT.TABLES TO USER <DMS_USER>;
  GRANT EXECUTE ON FUNCTION SYSPROC.AUTH_LIST_AUTHORITIES_FOR_AUTHID TO <DMS_USER>;
  GRANT EXECUTE ON PACKAGE NULLID.SYSSH200 TO USER <DMS_USER>;
  ```

## Einschränkungen bei der Verwendung von Db2 LUW als Quelle für AWS DMS
<a name="CHAP_Source.DB2.Limitations"></a>

AWS DMS unterstützt keine geclusterten Datenbanken. Sie können jedoch für jeden der Endpunkte eines Clusters eine separate Db2 LUW definieren. Sie können beispielsweise eine Volllast-Migrationsaufgabe mit einem beliebigen Knoten im Cluster erstellen und dann für jeden Knoten separate Aufgaben erstellen.

AWS DMS unterstützt den `BOOLEAN` Datentyp in Ihrer Db2-LUW-Quelldatenbank nicht.

Bei der Verwendung der fortlaufenden Replikation (CDC) gelten die folgenden Einschränkungen:
+ Wenn eine Tabelle mit mehreren Partitionen gekürzt wird, entspricht die Anzahl der in der AWS DMS Konsole angezeigten DDL-Ereignisse der Anzahl der Partitionen. Der Grund hierfür ist, dass Db2 LUW eine separate DDL für jede Partition aufzeichnet.
+ Die folgenden DDL-Aktionen werden für partitionierte Tabellen nicht unterstützt:
  + ALTER TABLE ADD PARTITION
  + ALTER TABLE DETACH PARTITION
  + ALTER TABLE ATTACH PARTITION
+ AWS DMS unterstützt keine laufende Replikationsmigration von einer HADR-Standby-Instanz ( DB2High Availability Disaster Recovery). Auf die Standby-Instance kann nicht zugegriffen werden.
+ Der Datentyp DECFLOAT wird nicht unterstützt. Folglich werden Änderungen an DECFLOAT-Spalten während der fortlaufenden Replikation ignoriert.
+ Die Anweisung RENAME COLUMN wird nicht unterstützt.
+ Bei Aktualisierungen von MDC-Tabellen (Multi-Dimensional Clustering) wird jedes Update in der AWS DMS Konsole als INSERT \$1 DELETE angezeigt.
+ Wenn die Aufgabeneinstellung **Include LOB columns in replication (LOB-Spalten in Replikation einschließen)** nicht aktiviert ist, werden alle Tabellen mit LOB-Spalten während der fortlaufenden Replikation gesperrt.
+ Bei Db2 LUW-Versionen 10.5 und höher werden Zeichenkettenspalten variabler Länge mit gespeicherten Daten ignoriert. out-of-row Diese Einschränkung gilt nur für Tabellen, die mit erweiterter Zeilengröße für Spalten mit Datentypen wie VARCHAR und VARGRAPHIC erstellt wurden. Verschieben Sie die Tabelle in einen Tabellenbereich mit einer höheren Seitengröße, um diese Einschränkung zu umgehen. Weitere Informationen finden Sie unter [Was kann ich tun, wenn ich die Seitengröße von Tablespaces ändern möchte]( https://www.ibm.com/support/pages/what-can-i-do-if-i-want-change-pagesize-db2-tablespaces )? DB2 
+ Bei laufender Replikation unterstützt DMS nicht die Migration von Daten, die auf Seitenebene mit dem LOAD-Hilfsprogramm geladen wurden. DB2 Verwenden Sie stattdessen das IMPORT-Hilfsprogramm, das SQL-Inserts nutzt. Weitere Informationen finden Sie unter [Differences between the import and load utilities]( https://www.ibm.com/docs/en/db2/11.1?topic=utilities-differences-between-import-load-utility). 
+ Während eine Replikationsaufgabe ausgeführt wird, erfasst DMS CREATE TABLE DDLs nur, wenn die Tabellen mit dem DATA CAPTURE CHANGE-Attribut erstellt wurden.
+ Bei der Verwendung des Db2-Datenbankpartitionsfeatures (DPF) gelten für DMS die folgenden Einschränkungen:
  + DMS kann in einer DPF-Umgebung keine Transaktionen zwischen Db2-Knoten koordinieren. Dies ist auf Einschränkungen innerhalb der IBM DB2 READLOG API-Schnittstelle zurückzuführen. In DPF können sich Transaktionen über mehrere Db2-Knoten erstrecken, je nachdem, wie die Daten DB2 partitioniert werden. Daher muss Ihre DMS-Lösung Transaktionen von jedem Db2-Knoten unabhängig voneinander erfassen.
  + DMS kann lokale Transaktionen von jedem Db2-Knoten im DPF-Cluster erfassen, indem die Einstellung `1` auf mehrere DMS-Quellendpunkte `connectNode` gesetzt wird. Diese Konfiguration entspricht den logischen Knotennummern, die in der Serverkonfigurationsdatei definiert sind. DB2 `db2nodes.cfg`
  + Lokale Transaktionen auf einzelnen Db2-Knoten können Teil einer größeren, globalen Transaktion sein. DMS wendet jede lokale Transaktion unabhängig auf dem Ziel an, ohne dass dies mit Transaktionen auf anderen Db2-Knoten koordiniert wird. Diese unabhängige Verarbeitung kann zu Komplikationen führen, insbesondere wenn Zeilen zwischen Partitionen verschoben werden.
  + Wenn DMS von mehreren Db2-Knoten aus repliziert, gibt es keine Garantie für die korrekte Reihenfolge der Operationen auf dem Ziel, da DMS Operationen unabhängig für jeden Db2-Knoten anwendet. Sie müssen sicherstellen, dass die Erfassung lokaler Transaktionen unabhängig von jedem Db2-Knoten für Ihren speziellen Anwendungsfall funktioniert.
  + Bei der Migration aus einer DPF-Umgebung empfehlen wir, zuerst eine Volllastaufgabe ohne zwischengespeicherte Ereignisse auszuführen und dann ausschließlich CDC-Aufgaben auszuführen. Es wird empfohlen, eine Aufgabe pro DB2-Knoten auszuführen, beginnend mit dem Full Load-Startzeitstempel oder LRI (Log Record Identifier), den Sie mit dem zusätzlichen Verbindungsattribut Endpoint festgelegt haben. `StartFromContext` Informationen zur Bestimmung Ihres Replikationsstartpunkts [finden Sie in der *IBM Support-Dokumentation* unter Den LSN- oder LRI-Wert für den Replikationsstart](https://www.ibm.com/support/pages/db2-finding-lsn-or-lri-value-replication-start) ermitteln. 
+ Wenn Sie bei laufender Replikation (CDC) die Replikation ab einem bestimmten Zeitstempel starten möchten, müssen Sie das `StartFromContext` zusätzliche Verbindungsattribut auf den erforderlichen Zeitstempel setzen.
+ Derzeit unterstützt DMS das Db2 PureScale Feature nicht, eine DB2 LUW-Erweiterung, mit der Sie Ihre Datenbanklösung skalieren können.
+ Die `DATA CAPTURE CHANGES` Tabellenoption ist eine entscheidende Voraussetzung für Datenreplikationsprozesse. DB2 Wenn diese Option beim Erstellen von Tabellen nicht aktiviert wird, kann dies zu fehlenden Daten führen, insbesondere bei Replikationsaufgaben, die nur CDC (Change Data Capture) betreffen, die von einem früheren Startpunkt aus initiiert wurden. AWS DMS aktiviert dieses Attribut standardmäßig, wenn eine CDC- oder FULL\$1CDC-Aufgabe neu gestartet wird. Es kann jedoch sein, dass alle Änderungen, die vor dem Neustart der Aufgabe an der Quelldatenbank vorgenommen wurden, übersehen werden.

  ```
  ALTER TABLE TABLE_SCHEMA.TABLE_NAME DATA CAPTURE CHANGES INCLUDE LONGVAR COLUMNS;
  ```

## Endpunkteinstellungen bei Verwendung von Db2 LUW als Quelle für AWS DMS
<a name="CHAP_Source.DB2.ConnectionSettings"></a>

Sie können die Einstellungen angeben, wenn Sie den Quellendpunkt mithilfe der AWS DMS Konsole erstellen, oder indem Sie den `create-endpoint` Befehl in [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/dms/create-endpoint.html), mit dem

`--ibm-db2-settings '{"EndpointSetting1": "value1","EndpointSetting2": "value2"}'`

JSON-Syntax.

Die folgende Tabelle zeigt die Endpunkteinstellungen, die Sie mit Db2 LUW als Quelle verwenden können.


| Name der Einstellung | Description | 
| --- | --- | 
|  `CurrentLsn`  |  Verwenden Sie für die laufende Replikation (CDC) `CurrentLsn`, um eine Protokoll-Sequenznummer (Log Sequence Number, LSN) anzugeben, ab der die Replikation beginnen soll.   | 
|  `MaxKBytesPerRead`  |  Maximale Anzahl von Bytes pro Lesezugriff als NUMBER-Wert. Der Standardwert ist 64 KB.  | 
|  `SetDataCaptureChanges`  |  Aktiviert die fortlaufende Replikation (CDC) als BOOLEAN-Wert. Der Standardwert ist true.  | 

## Zusätzliche Verbindungsattribute (ECAs) bei Verwendung von Db2 LUW als Quelle für AWS DMS
<a name="CHAP_Source.DB2.ConnectionAttrib"></a>

Sie können die zusätzlichen Verbindungsattribute (ECAs) angeben, wenn Sie den Quellendpunkt mit der AWS DMS Konsole erstellen, oder indem Sie den `create-endpoint` Befehl in [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/dms/create-endpoint.html), mit dem

`--extra-connection-attributes 'ECAname1=value1;ECAname2=value2;'`

In der folgenden Tabelle sind ECAs die aufgeführt, die Sie mit Db2 LUW als Quelle verwenden können.


| Attributname | Description | 
| --- | --- | 
|  `ConnectionTimeout`  |  Verwenden Sie diesen ECA, um das Zeitlimit für die Endpunktverbindung für den Db2-LUW-Endpunkt in Sekunden festzulegen. Der Standardwert liegt bei 10 Sekunden. Beispiel: `ConnectionTimeout=30;`  | 
|  `executeTimeout`  |  Zusätzliches Verbindungsattribut, das das Zeitlimit für Anweisungen (Abfragen) für den DB2 LUW-Endpunkt in Sekunden festlegt. Der Standardwert liegt bei 60 Sekunden. Beispiel: `executeTimeout=120;`  | 
|  `StartFromContext`  |  Verwenden Sie `StartFromContext` für die laufende Replikation (CDC), um die Untergrenze eines Protokolls anzugeben, bei der die Replikation beginnen soll. `StartFromContext` akzeptiert verschiedene Formen von Werten. Gültige Werte sind: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/dms/latest/userguide/CHAP_Source.DB2.html) [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/dms/latest/userguide/CHAP_Source.DB2.html) [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/dms/latest/userguide/CHAP_Source.DB2.html) Um den LRI/LSN Bereich einer Protokolldatei zu ermitteln, führen Sie den `db2flsn` Befehl wie im folgenden Beispiel gezeigt aus. <pre>db2flsn -db SAMPLE -lrirange 2</pre> Die Ausgabe sieht bei diesem Beispiel in etwa wie folgt aus.  <pre><br />S0000002.LOG: has LRI range 00000000000000010000000000002254000000000004F9A6 to <br />000000000000000100000000000022CC000000000004FB13</pre> In dieser Ausgabe ist die Protokolldatei S0000002.LOG und der **StartFromContext**LRI-Wert entspricht den 34 Byte am Ende des Bereichs. <pre>0100000000000022CC000000000004FB13</pre>  | 

## Quelldatentypen für IBM Db2 LUW
<a name="CHAP_Source.DB2.DataTypes"></a>

Datenmigration, die Db2 LUW als Quelle verwendet, AWS DMS unterstützt die meisten Db2 LUW-Datentypen. Die folgende Tabelle zeigt die Db2-LUW-Quelldatentypen, die bei der Verwendung unterstützt werden, AWS DMS sowie die Standardzuweisung von Datentypen. AWS DMS Weitere Informationen über die Db2 LUW-Datentypen finden Sie in der [Db2 LUW-Dokumentation](https://www.ibm.com/support/knowledgecenter/SSEPGG_10.5.0/com.ibm.db2.luw.sql.ref.doc/doc/r0008483.html).

Weitere Informationen zum Anzeigen des Datentyps, der im Ziel zugewiesen ist, finden Sie im Abschnitt für den Zielendpunkt, den Sie verwenden.

Weitere Informationen zu AWS DMS Datentypen finden Sie unter. [Datentypen für den AWS Database Migration Service](CHAP_Reference.DataTypes.md)


|  Db2 LUW-Datentypen  |  AWS DMS Datentypen  | 
| --- | --- | 
|  INTEGER  |  INT4  | 
|  SMALLINT  |  INT2  | 
|  BIGINT  |  INT8  | 
|  DECIMAL (p,s)  |  NUMERIC (p,s)  | 
|  FLOAT  |  REAL8  | 
|  DOUBLE  |  REAL8  | 
|  REAL  |  REAL4  | 
|  DECFLOAT (p)  |  Wenn die Genauigkeit 16 ist, dann REAL8; wenn die Genauigkeit 34 ist, dann STRING  | 
|  GRAPHIC (n)  |  WSTRING für grafische Zeichenfolgen mit fester Länge und dem Typ Doppelbyte-Zeichen mit einer Länge größer 0 und kleiner oder gleich 127  | 
|  VARGRAPHIC (n)  |  WSTRING für grafische Zeichenfolgen mit variabler Länge und dem Typ Doppelbyte-Zeichen mit einer Länge größer 0 und kleiner oder gleich 16.352  | 
|  LONG VARGRAPHIC (n)  |  CLOB für grafische Zeichenfolgen mit variabler Länge und dem Typ Doppelbyte-Zeichen mit einer Länge größer 0 und kleiner oder gleich 16.352  | 
|  CHARACTER (n)  |  STRING für Zeichenfolgen mit fester Länge und dem Typ Doppelbyte-Zeichen mit einer Länge größer 0 und kleiner oder gleich 255  | 
|  VARCHAR (n)  |  STRING für Zeichenfolgen mit variabler Länge und dem Typ Doppelbyte-Zeichen mit einer Länge größer 0 und kleiner oder gleich 32.704  | 
|  LONG VARCHAR (n)  |  CLOB für Zeichenfolgen mit variabler Länge und dem Typ Doppelbyte-Zeichen mit einer Länge größer 0 und kleiner oder gleich 32.704  | 
|  CHAR (n) FOR BIT DATA  |  BYTES  | 
|  VARCHAR (n) FOR BIT DATA  |  BYTES  | 
|  LONG VARCHAR FOR BIT DATA  |  BYTES  | 
|  DATE  |  DATE  | 
|  TIME  |  TIME  | 
|  TIMESTAMP (ZEITSTEMPEL)  |  DATETIME  | 
|  BLOB (n)  |  BLOB Die maximale Länge beträgt 2.147.483.647 Byte.  | 
|  CLOB (n)  |  CLOB Die maximale Länge beträgt 2.147.483.647 Byte.  | 
|  DBCLOB (n)  |  CLOB Die maximale Länge beträgt 1.073.741.824 Doppelbyte-Zeichen.  | 
|  XML  |  CLOB  | 

# Verwendung von IBM Db2 for z/OS Databases als Quelle für AWS DMS
<a name="CHAP_Source.DB2zOS"></a>

Mit AWS Database Migration Service (AWS DMS) können Sie Daten von einer IBM for z/OS Datenbank in jede unterstützte Zieldatenbank migrieren. 

Hinweise zu Versionen von Db2 für z/OS , die als Quelle AWS DMS unterstützt werden, finden Sie unter[Quellen für AWS DMS](CHAP_Introduction.Sources.md).

## Voraussetzungen für die Verwendung von Db2 for z/OS als Quelle für AWS DMS
<a name="CHAP_Source.DB2zOS.Prerequisites"></a>

Um eine IBM Db2 for z/OS Datenbank als Quelle in zu verwenden AWS DMS, gewähren Sie dem z/OS Benutzer Db2 for, der in den Verbindungseinstellungen für den Quellendpunkt angegeben ist, die folgenden Rechte.

```
GRANT SELECT ON SYSIBM.SYSTABLES TO Db2USER;
GRANT SELECT ON SYSIBM.SYSTABLESPACE TO Db2USER;
GRANT SELECT ON SYSIBM.SYSTABLEPART TO Db2USER;                    
GRANT SELECT ON SYSIBM.SYSCOLUMNS TO Db2USER;
GRANT SELECT ON SYSIBM.SYSDATABASE TO Db2USER;
GRANT SELECT ON SYSIBM.SYSDUMMY1 TO Db2USER
```

Gewähren Sie außerdem SELECT ON `user defined`-Quelltabellen.

Ein AWS DMS IBM Db2 for z/OS Source-Endpunkt benötigt den IBM Data Server Driver for ODBC, um auf Daten zuzugreifen. Der Datenbankserver muss über eine gültige IBM-ODBC-Connect-Lizenz für DMS verfügen, um eine Verbindung zu diesem Endpunkt herstellen zu können.

## Einschränkungen bei der Verwendung von Db2 for z/OS als Quelle für AWS DMS
<a name="CHAP_Source.DB2zOS.Limitations"></a>

Die folgenden Einschränkungen gelten, wenn Sie eine IBM Db2 for z/OS -Datenbank als Quelle für verwenden: AWS DMS
+ Es werden nur Replikationsaufgaben mit Volllast unterstützt. Change Data Capture (CDC) wird nicht unterstützt.
+ Paralleles Laden wird nicht unterstützt.
+ Die Datenvalidierung von Ansichten wird nicht unterstützt.
+ Schema-, Tabellen- und Spaltennamen müssen in Tabellenzuordnungen für Ebenentransformationen und Auswahlfilter auf Column/table Zeilenebene in GROSSBUCHSTABEN angegeben werden.

## Quelldatentypen für IBM Db2 für z/OS
<a name="CHAP_Source.DB2zOS.DataTypes"></a>

Datenmigrationen, bei denen Db2 for z/OS als Quelle für verwendet wird, AWS DMS unterstützen die meisten Db2-Datentypen. z/OS In der folgenden Tabelle sind die Db2-Datentypen für z/OS Quellen aufgeführt, die bei der Verwendung unterstützt werden AWS DMS, sowie die Standardzuweisung von Datentypen. AWS DMS 

Weitere Informationen zu Db2 für z/OS Datentypen finden Sie in der Dokumentation zu [IBM Db2](https://www.ibm.com/docs/en/db2-for-zos/12?topic=elements-data-types). z/OS 

Weitere Informationen zum Anzeigen des Datentyps, der im Ziel zugewiesen ist, finden Sie im Abschnitt für den Zielendpunkt, den Sie verwenden.

Weitere Informationen zu AWS DMS Datentypen finden Sie unter. [Datentypen für den AWS Database Migration Service](CHAP_Reference.DataTypes.md)


|  Db2 für z/OS Datentypen  |  AWS DMS Datentypen  | 
| --- | --- | 
|  INTEGER  |  INT4  | 
|  SMALLINT  |  INT2  | 
|  BIGINT  |  INT8  | 
|  DECIMAL (p,s)  |  NUMERIC (p,s) Wenn ein Dezimalpunkt in der DB2 Konfiguration auf ein Komma (,) gesetzt ist, konfigurieren Sie Replicate so, dass die Einstellung unterstützt wird DB2 .   | 
|  FLOAT  |  REAL8  | 
|  DOUBLE  |  REAL8  | 
|  REAL  |  REAL4  | 
|  DECFLOAT (p)  |  Wenn die Genauigkeit 16 ist, dann REAL8; wenn die Genauigkeit 34 ist, dann STRING  | 
|  GRAPHIC (n)  |  Wenn n>=127, dann WSTRING für grafische Zeichenfolgen mit fester Länge und dem Typ Doppelbyte-Zeichen mit einer Länge größer 0 und kleiner oder gleich 127  | 
|  VARGRAPHIC (n)  |  WSTRING für grafische Zeichenfolgen mit variabler Länge und dem Typ Doppelbyte-Zeichen mit einer Länge größer 0 und kleiner oder gleich 16.352  | 
|  LONG VARGRAPHIC (n)  |  CLOB für grafische Zeichenfolgen mit variabler Länge und dem Typ Doppelbyte-Zeichen mit einer Länge größer 0 und kleiner oder gleich 16.352  | 
|  CHARACTER (n)  |  STRING für Zeichenfolgen mit fester Länge und dem Typ Doppelbyte-Zeichen mit einer Länge größer 0 und kleiner oder gleich 255  | 
|  VARCHAR (n)  |  STRING für Zeichenfolgen mit variabler Länge und dem Typ Doppelbyte-Zeichen mit einer Länge größer 0 und kleiner oder gleich 32.704  | 
|  LONG VARCHAR (n)  |  CLOB für Zeichenfolgen mit variabler Länge und dem Typ Doppelbyte-Zeichen mit einer Länge größer 0 und kleiner oder gleich 32.704  | 
|  CHAR (n) FOR BIT DATA  |  BYTES  | 
|  VARCHAR (n) FOR BIT DATA  |  BYTES  | 
|  LONG VARCHAR FOR BIT DATA  |  BYTES  | 
|  DATE  |  DATE  | 
|  TIME  |  TIME  | 
|  TIMESTAMP (ZEITSTEMPEL)  |  DATETIME  | 
|  BLOB (n)  |  BLOB Die maximale Länge beträgt 2.147.483.647 Byte.  | 
|  CLOB (n)  |  CLOB Die maximale Länge beträgt 2.147.483.647 Byte.  | 
|  DBCLOB (n)  |  CLOB Die maximale Länge beträgt 1.073.741.824 Doppelbyte-Zeichen.  | 
|  XML  |  CLOB  | 
|  BINARY  |  BYTES  | 
|  VARBINARY  |  BYTES  | 
|  ROWID  |  BYTES. Weitere Informationen zum Arbeiten mit ROWID finden Sie in den folgenden Abschnitten:   | 
|  TIMESTAMP WITH TIME ZONE  |  Nicht unterstützt  | 

ROWID-Spalten werden standardmäßig migriert, wenn der Zieltabellen-Vorbereitungsmodus für die Aufgabe auf DROP\$1AND\$1CREATE (Standard) gesetzt ist. Bei der Datenüberprüfung werden diese Spalten ignoriert, da die Zeilen außerhalb der spezifischen Datenbank und Tabelle bedeutungslos sind. Sie können einen der folgenden Schritte ausführen, um die Migration dieser Spalten zu deaktivieren: 
+ Erstellen Sie die Zieltabelle ohne diese Spalten vorab. Setzen Sie dann den Zieltabellen-Vorbereitungsmodus der Aufgabe entweder auf DO\$1NOTHING oder TRUNCATE\$1BEFORE\$1LOAD. Sie können AWS Schema Conversion Tool (AWS SCT) verwenden, um die Zieltabelle ohne die Spalten vorab zu erstellen.
+ Fügen Sie einer Aufgabe eine Tabellenzuordnungsregel hinzu, die diese Spalten herausfiltert, sodass sie ignoriert werden. Weitere Informationen finden Sie unter [Transformationsregeln und Aktionen](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Transformations.md).

## EBCDIC-Sortierungen im Service PostgreSQL für Mainframe-Modernisierung AWS
<a name="CHAP_Source.DB2zOS.EBCDIC"></a>

AWS Das Mainframe-Modernisierungsprogramm unterstützt Sie bei der Modernisierung Ihrer Mainframe-Anwendungen auf verwaltete Laufzeitumgebungen. AWS Es stellt Tools und Ressourcen bereit, die Sie bei der Planung und Implementierung von Migrations- und Modernisierungsprojekten unterstützen. [Weitere Informationen zur Mainframe-Modernisierung und -Migration finden Sie unter Mainframe-Modernisierung mit. AWS](https://aws.amazon.com/mainframe/)

Einige IBM Db2 for z/OS -Datensätze sind im Zeichensatz Extended Binary Coded Decimal Interchange (EBCDIC) codiert. Dieser Zeichensatz wurde entwickelt, bevor ASCII (American Standard Code for Information Interchange) allgemein verwendet wurde. Eine *Codepage* ordnet jedes Textzeichen den Zeichen in einem Zeichensatz zu. Eine herkömmliche Codepage enthält die Zuordnungsinformationen zwischen einem Codepoint und einer Zeichen-ID. Eine *Zeichen-ID* ist eine 8-Byte-Datenzeichenfolge. Ein *Codepoint* ist eine 8-Bit-Binärzahl, die ein Zeichen darstellt. Codepoints werden in der Regel als hexadezimale Abbildungen ihrer Binärwerte angezeigt.

Wenn Sie derzeit entweder Micro Focus oder eine BluAge Komponente des Mainframe Modernization Service verwenden, müssen Sie angeben, dass bestimmte Codepunkte *verschoben* (übersetzt) werden AWS DMS sollen. Sie können die AWS DMS Aufgabeneinstellungen verwenden, um die Schichten durchzuführen. Das folgende Beispiel zeigt, wie Sie die AWS DMS `CharacterSetSettings` Operation verwenden, um die Schichten in einer DMS-Aufgabeneinstellung abzubilden.

```
"CharacterSetSettings": {
        "CharacterSetSupport": null,
        "CharacterReplacements": [
{"SourceCharacterCodePoint": "0000","TargetCharacterCodePoint": "0180"}
,{"SourceCharacterCodePoint": "00B8","TargetCharacterCodePoint": "0160"}
,{"SourceCharacterCodePoint": "00BC","TargetCharacterCodePoint": "0161"}
,{"SourceCharacterCodePoint": "00BD","TargetCharacterCodePoint": "017D"}
,{"SourceCharacterCodePoint": "00BE","TargetCharacterCodePoint": "017E"}
,{"SourceCharacterCodePoint": "00A8","TargetCharacterCodePoint": "0152"}
,{"SourceCharacterCodePoint": "00B4","TargetCharacterCodePoint": "0153"}
,{"SourceCharacterCodePoint": "00A6","TargetCharacterCodePoint": "0178"}
            }
        ]
    }
```

Es gibt bereits einige EBCDIC-Sortierungen für PostgreSQL, die die erforderlichen Änderungen erfassen. Es werden verschiedene Codepages unterstützt. Die folgenden Abschnitte enthalten JSON-Beispiele dafür, was Sie für alle unterstützten Codepages ändern müssen. Sie können einfach copy-and-past das notwendige JSON verwenden, das Sie für Ihre DMS-Aufgabe benötigen.

### Spezifische EBCDIC-Sortierungen für Micro Focus
<a name="CHAP_Source.DB2zOS.EBCDIC.MicroFocus"></a>

Ändern Sie bei Micro Focus eine Teilmenge von Zeichen wie erforderlich für die folgenden Sortierungen.

```
 da-DK-cp1142m-x-icu
 de-DE-cp1141m-x-icu
 en-GB-cp1146m-x-icu
 en-US-cp1140m-x-icu
 es-ES-cp1145m-x-icu
 fi-FI-cp1143m-x-icu
 fr-FR-cp1147m-x-icu
 it-IT-cp1144m-x-icu
 nl-BE-cp1148m-x-icu
```

**Example Datenänderungen pro Sortierung bei Micro Focus:**  
**en\$1us\$1cp1140m**  
Codeänderung:  

```
0000    0180
00A6    0160
00B8    0161
00BC    017D
00BD    017E
00BE    0152
00A8    0153
00B4    0178
```
Entsprechendes Eingabe-Mapping für eine AWS DMS Aufgabe:  

```
 {"SourceCharacterCodePoint": "0000","TargetCharacterCodePoint": "0180"}
,{"SourceCharacterCodePoint": "00A6","TargetCharacterCodePoint": "0160"}
,{"SourceCharacterCodePoint": "00B8","TargetCharacterCodePoint": "0161"}
,{"SourceCharacterCodePoint": "00BC","TargetCharacterCodePoint": "017D"}
,{"SourceCharacterCodePoint": "00BD","TargetCharacterCodePoint": "017E"}
,{"SourceCharacterCodePoint": "00BE","TargetCharacterCodePoint": "0152"}
,{"SourceCharacterCodePoint": "00A8","TargetCharacterCodePoint": "0153"}
,{"SourceCharacterCodePoint": "00B4","TargetCharacterCodePoint": "0178"}
```
**en\$1us\$1cp1141m**  
Codeänderung:  

```
0000    0180
00B8    0160
00BC    0161
00BD    017D
00BE    017E
00A8    0152
00B4    0153
00A6    0178
```
Entsprechendes Eingabe-Mapping für eine AWS DMS Aufgabe:  

```
 {"SourceCharacterCodePoint": "0000","TargetCharacterCodePoint": "0180"}
,{"SourceCharacterCodePoint": "00B8","TargetCharacterCodePoint": "0160"}
,{"SourceCharacterCodePoint": "00BC","TargetCharacterCodePoint": "0161"}
,{"SourceCharacterCodePoint": "00BD","TargetCharacterCodePoint": "017D"}
,{"SourceCharacterCodePoint": "00BE","TargetCharacterCodePoint": "017E"}
,{"SourceCharacterCodePoint": "00A8","TargetCharacterCodePoint": "0152"}
,{"SourceCharacterCodePoint": "00B4","TargetCharacterCodePoint": "0153"}
,{"SourceCharacterCodePoint": "00A6","TargetCharacterCodePoint": "0178"}
```
**en\$1us\$1cp1142m**  
Codeänderung:  

```
0000    0180
00A6    0160
00B8    0161
00BC    017D
00BD    017E
00BE    0152
00A8    0153
00B4    0178
```
Entsprechendes Eingabe-Mapping für eine AWS DMS Aufgabe:  

```
 {"SourceCharacterCodePoint": "0000","TargetCharacterCodePoint": "0180"}
,{"SourceCharacterCodePoint": "00A6","TargetCharacterCodePoint": "0160"}
,{"SourceCharacterCodePoint": "00B8","TargetCharacterCodePoint": "0161"}
,{"SourceCharacterCodePoint": "00BC","TargetCharacterCodePoint": "017D"}
,{"SourceCharacterCodePoint": "00BD","TargetCharacterCodePoint": "017E"}
,{"SourceCharacterCodePoint": "00BE","TargetCharacterCodePoint": "0152"}
,{"SourceCharacterCodePoint": "00A8","TargetCharacterCodePoint": "0153"}
,{"SourceCharacterCodePoint": "00B4","TargetCharacterCodePoint": "0178"}
```
**en\$1us\$1cp1143m**  
Codeänderung:  

```
0000    0180
00B8    0160
00BC    0161
00BD    017D
00BE    017E
00A8    0152
00B4    0153
00A6    0178
```
Entsprechendes Eingabe-Mapping für eine AWS DMS Aufgabe:  

```
 {"SourceCharacterCodePoint": "0000","TargetCharacterCodePoint": "0180"}
,{"SourceCharacterCodePoint": "00B8","TargetCharacterCodePoint": "0160"}
,{"SourceCharacterCodePoint": "00BC","TargetCharacterCodePoint": "0161"}
,{"SourceCharacterCodePoint": "00BD","TargetCharacterCodePoint": "017D"}
,{"SourceCharacterCodePoint": "00BE","TargetCharacterCodePoint": "017E"}
,{"SourceCharacterCodePoint": "00A8","TargetCharacterCodePoint": "0152"}
,{"SourceCharacterCodePoint": "00B4","TargetCharacterCodePoint": "0153"}
,{"SourceCharacterCodePoint": "00A6","TargetCharacterCodePoint": "0178"}
```
**en\$1us\$1cp1144m**  
Codeänderung:  

```
0000    0180
00B8    0160
00BC    0161
00BD    017D
00BE    017E
00A8    0152
00B4    0153
00A6    0178
```
Entsprechendes Eingabe-Mapping für eine AWS DMS Aufgabe:  

```
 {"SourceCharacterCodePoint": "0000","TargetCharacterCodePoint": "0180"}
,{"SourceCharacterCodePoint": "00B8","TargetCharacterCodePoint": "0160"}
,{"SourceCharacterCodePoint": "00BC","TargetCharacterCodePoint": "0161"}
,{"SourceCharacterCodePoint": "00BD","TargetCharacterCodePoint": "017D"}
,{"SourceCharacterCodePoint": "00BE","TargetCharacterCodePoint": "017E"}
,{"SourceCharacterCodePoint": "00A8","TargetCharacterCodePoint": "0152"}
,{"SourceCharacterCodePoint": "00B4","TargetCharacterCodePoint": "0153"}
,{"SourceCharacterCodePoint": "00A6","TargetCharacterCodePoint": "0178"}
```
**en\$1us\$1cp1145m**  
Codeänderung:  

```
0000    0180
00A6    0160
00B8    0161
00A8    017D
00BC    017E
00BD    0152
00BE    0153
00B4    0178
```
Entsprechendes Eingabe-Mapping für eine AWS DMS Aufgabe:  

```
 {"SourceCharacterCodePoint": "0000","TargetCharacterCodePoint": "0180"}
,{"SourceCharacterCodePoint": "00A6","TargetCharacterCodePoint": "0160"}
,{"SourceCharacterCodePoint": "00B8","TargetCharacterCodePoint": "0161"}
,{"SourceCharacterCodePoint": "00A8","TargetCharacterCodePoint": "017D"}
,{"SourceCharacterCodePoint": "00BC","TargetCharacterCodePoint": "017E"}
,{"SourceCharacterCodePoint": "00BD","TargetCharacterCodePoint": "0152"}
,{"SourceCharacterCodePoint": "00BE","TargetCharacterCodePoint": "0153"}
,{"SourceCharacterCodePoint": "00B4","TargetCharacterCodePoint": "0178"}
```
**en\$1us\$1cp1146m**  
Codeänderung:  

```
0000    0180
00A6    0160
00B8    0161
00BC    017D
00BD    017E
00BE    0152
00A8    0153
00B4    0178
```
Entsprechendes Eingabe-Mapping für eine AWS DMS Aufgabe:  

```
 {"SourceCharacterCodePoint": "0000","TargetCharacterCodePoint": "0180"}
,{"SourceCharacterCodePoint": "00A6","TargetCharacterCodePoint": "0160"}
,{"SourceCharacterCodePoint": "00B8","TargetCharacterCodePoint": "0161"}
,{"SourceCharacterCodePoint": "00BC","TargetCharacterCodePoint": "017D"}
,{"SourceCharacterCodePoint": "00BD","TargetCharacterCodePoint": "017E"}
,{"SourceCharacterCodePoint": "00BE","TargetCharacterCodePoint": "0152"}
,{"SourceCharacterCodePoint": "00A8","TargetCharacterCodePoint": "0153"}
,{"SourceCharacterCodePoint": "00B4","TargetCharacterCodePoint": "0178"}
```
**en\$1us\$1cp1147m**  
Codeänderung:  

```
0000    0180
00B8    0160
00A8    0161
00BC    017D
00BD    017E
00BE    0152
00B4    0153
00A6    0178
```
Entsprechendes Eingabe-Mapping für eine AWS DMS Aufgabe:  

```
 {"SourceCharacterCodePoint": "0000","TargetCharacterCodePoint": "0180"}
,{"SourceCharacterCodePoint": "00B8","TargetCharacterCodePoint": "0160"}
,{"SourceCharacterCodePoint": "00A8","TargetCharacterCodePoint": "0161"}
,{"SourceCharacterCodePoint": "00BC","TargetCharacterCodePoint": "017D"}
,{"SourceCharacterCodePoint": "00BD","TargetCharacterCodePoint": "017E"}
,{"SourceCharacterCodePoint": "00BE","TargetCharacterCodePoint": "0152"}
,{"SourceCharacterCodePoint": "00B4","TargetCharacterCodePoint": "0153"}
,{"SourceCharacterCodePoint": "00A6","TargetCharacterCodePoint": "0178"}
```
**en\$1us\$1cp1148m**  
Codeänderung:  

```
0000    0180
00A6    0160
00B8    0161
00BC    017D
00BD    017E
00BE    0152
00A8    0153
00B4    0178
```
Entsprechendes Eingabe-Mapping für eine AWS DMS Aufgabe:  

```
 {"SourceCharacterCodePoint": "0000","TargetCharacterCodePoint": "0180"}
,{"SourceCharacterCodePoint": "00A6","TargetCharacterCodePoint": "0160"}
,{"SourceCharacterCodePoint": "00B8","TargetCharacterCodePoint": "0161"}
,{"SourceCharacterCodePoint": "00BC","TargetCharacterCodePoint": "017D"}
,{"SourceCharacterCodePoint": "00BD","TargetCharacterCodePoint": "017E"}
,{"SourceCharacterCodePoint": "00BE","TargetCharacterCodePoint": "0152"}
,{"SourceCharacterCodePoint": "00A8","TargetCharacterCodePoint": "0153"}
,{"SourceCharacterCodePoint": "00B4","TargetCharacterCodePoint": "0178"}
```

### BluAge spezifische EBCDIC-Kollationen
<a name="CHAP_Source.DB2zOS.EBCDIC.BluAge"></a>

Verschieben Sie für BluAge alle folgenden *niedrigen und *hohen Werte** nach Bedarf. Diese Sortierungen sollten nur zur Unterstützung des BluAge Mainframe-Migrationsdienstes verwendet werden.

```
da-DK-cp1142b-x-icu
 da-DK-cp277b-x-icu
 de-DE-cp1141b-x-icu
 de-DE-cp273b-x-icu
 en-GB-cp1146b-x-icu
 en-GB-cp285b-x-icu
 en-US-cp037b-x-icu
 en-US-cp1140b-x-icu
 es-ES-cp1145b-x-icu
 es-ES-cp284b-x-icu
 fi-FI-cp1143b-x-icu
 fi-FI-cp278b-x-icu 
 fr-FR-cp1147b-x-icu
 fr-FR-cp297b-x-icu
 it-IT-cp1144b-x-icu
 it-IT-cp280b-x-icu
 nl-BE-cp1148b-x-icu
 nl-BE-cp500b-x-icu
```

**Example BluAge Datenverschiebungen:**  
**da-DK-cp277b** und **da-DK-cp1142b**  
Codeänderung:  

```
0180    0180
0001    0181
0002    0182
0003    0183
009C    0184
0009    0185
0086    0186
007F    0187
0097    0188
008D    0189
008E    018A
000B    018B
000C    018C
000D    018D
000E    018E
000F    018F
0010    0190
0011    0191
0012    0192
0013    0193
009D    0194
0085    0195
0008    0196
0087    0197
0018    0198
0019    0199
0092    019A
008F    019B
001C    019C
001D    019D
001E    019E
001F    019F
0080    01A0
0081    01A1
0082    01A2
0083    01A3
0084    01A4
000A    01A5
0017    01A6
001B    01A7
0088    01A8
0089    01A9
008A    01AA
008B    01AB
008C    01AC
0005    01AD
0006    01AE
0007    01AF
0090    01B0
0091    01B1
0016    01B2
0093    01B3
0094    01B4
0095    01B5
0096    01B6
0004    01B7
0098    01B8
0099    01B9
009A    01BA
009B    01BB
0014    01BC
0015    01BD
009E    01BE
001A    01BF
009F    027F
```
Entsprechendes Eingabe-Mapping für eine AWS DMS Aufgabe:  

```
 {"SourceCharacterCodePoint": "0180","TargetCharacterCodePoint": "0180"}
,{"SourceCharacterCodePoint": "0001","TargetCharacterCodePoint": "0181"}
,{"SourceCharacterCodePoint": "0002","TargetCharacterCodePoint": "0182"}
,{"SourceCharacterCodePoint": "0003","TargetCharacterCodePoint": "0183"}
,{"SourceCharacterCodePoint": "009C","TargetCharacterCodePoint": "0184"}
,{"SourceCharacterCodePoint": "0009","TargetCharacterCodePoint": "0185"}
,{"SourceCharacterCodePoint": "0086","TargetCharacterCodePoint": "0186"}
,{"SourceCharacterCodePoint": "007F","TargetCharacterCodePoint": "0187"}
,{"SourceCharacterCodePoint": "0097","TargetCharacterCodePoint": "0188"}
,{"SourceCharacterCodePoint": "008D","TargetCharacterCodePoint": "0189"}
,{"SourceCharacterCodePoint": "008E","TargetCharacterCodePoint": "018A"}
,{"SourceCharacterCodePoint": "000B","TargetCharacterCodePoint": "018B"}
,{"SourceCharacterCodePoint": "000C","TargetCharacterCodePoint": "018C"}
,{"SourceCharacterCodePoint": "000D","TargetCharacterCodePoint": "018D"}
,{"SourceCharacterCodePoint": "000E","TargetCharacterCodePoint": "018E"}
,{"SourceCharacterCodePoint": "000F","TargetCharacterCodePoint": "018F"}
,{"SourceCharacterCodePoint": "0010","TargetCharacterCodePoint": "0190"}
,{"SourceCharacterCodePoint": "0011","TargetCharacterCodePoint": "0191"}
,{"SourceCharacterCodePoint": "0012","TargetCharacterCodePoint": "0192"}
,{"SourceCharacterCodePoint": "0013","TargetCharacterCodePoint": "0193"}
,{"SourceCharacterCodePoint": "009D","TargetCharacterCodePoint": "0194"}
,{"SourceCharacterCodePoint": "0085","TargetCharacterCodePoint": "0195"}
,{"SourceCharacterCodePoint": "0008","TargetCharacterCodePoint": "0196"}
,{"SourceCharacterCodePoint": "0087","TargetCharacterCodePoint": "0197"}
,{"SourceCharacterCodePoint": "0018","TargetCharacterCodePoint": "0198"}
,{"SourceCharacterCodePoint": "0019","TargetCharacterCodePoint": "0199"}
,{"SourceCharacterCodePoint": "0092","TargetCharacterCodePoint": "019A"}
,{"SourceCharacterCodePoint": "008F","TargetCharacterCodePoint": "019B"}
,{"SourceCharacterCodePoint": "001C","TargetCharacterCodePoint": "019C"}
,{"SourceCharacterCodePoint": "001D","TargetCharacterCodePoint": "019D"}
,{"SourceCharacterCodePoint": "001E","TargetCharacterCodePoint": "019E"}
,{"SourceCharacterCodePoint": "001F","TargetCharacterCodePoint": "019F"}
,{"SourceCharacterCodePoint": "0080","TargetCharacterCodePoint": "01A0"}
,{"SourceCharacterCodePoint": "0081","TargetCharacterCodePoint": "01A1"}
,{"SourceCharacterCodePoint": "0082","TargetCharacterCodePoint": "01A2"}
,{"SourceCharacterCodePoint": "0083","TargetCharacterCodePoint": "01A3"}
,{"SourceCharacterCodePoint": "0084","TargetCharacterCodePoint": "01A4"}
,{"SourceCharacterCodePoint": "000A","TargetCharacterCodePoint": "01A5"}
,{"SourceCharacterCodePoint": "0017","TargetCharacterCodePoint": "01A6"}
,{"SourceCharacterCodePoint": "001B","TargetCharacterCodePoint": "01A7"}
,{"SourceCharacterCodePoint": "0088","TargetCharacterCodePoint": "01A8"}
,{"SourceCharacterCodePoint": "0089","TargetCharacterCodePoint": "01A9"}
,{"SourceCharacterCodePoint": "008A","TargetCharacterCodePoint": "01AA"}
,{"SourceCharacterCodePoint": "008B","TargetCharacterCodePoint": "01AB"}
,{"SourceCharacterCodePoint": "008C","TargetCharacterCodePoint": "01AC"}
,{"SourceCharacterCodePoint": "0005","TargetCharacterCodePoint": "01AD"}
,{"SourceCharacterCodePoint": "0006","TargetCharacterCodePoint": "01AE"}
,{"SourceCharacterCodePoint": "0007","TargetCharacterCodePoint": "01AF"}
,{"SourceCharacterCodePoint": "0090","TargetCharacterCodePoint": "01B0"}
,{"SourceCharacterCodePoint": "0091","TargetCharacterCodePoint": "01B1"}
,{"SourceCharacterCodePoint": "0016","TargetCharacterCodePoint": "01B2"}
,{"SourceCharacterCodePoint": "0093","TargetCharacterCodePoint": "01B3"}
,{"SourceCharacterCodePoint": "0094","TargetCharacterCodePoint": "01B4"}
,{"SourceCharacterCodePoint": "0095","TargetCharacterCodePoint": "01B5"}
,{"SourceCharacterCodePoint": "0096","TargetCharacterCodePoint": "01B6"}
,{"SourceCharacterCodePoint": "0004","TargetCharacterCodePoint": "01B7"}
,{"SourceCharacterCodePoint": "0098","TargetCharacterCodePoint": "01B8"}
,{"SourceCharacterCodePoint": "0099","TargetCharacterCodePoint": "01B9"}
,{"SourceCharacterCodePoint": "009A","TargetCharacterCodePoint": "01BA"}
,{"SourceCharacterCodePoint": "009B","TargetCharacterCodePoint": "01BB"}
,{"SourceCharacterCodePoint": "0014","TargetCharacterCodePoint": "01BC"}
,{"SourceCharacterCodePoint": "0015","TargetCharacterCodePoint": "01BD"}
,{"SourceCharacterCodePoint": "009E","TargetCharacterCodePoint": "01BE"}
,{"SourceCharacterCodePoint": "001A","TargetCharacterCodePoint": "01BF"}
,{"SourceCharacterCodePoint": "009F","TargetCharacterCodePoint": "027F"}
```
**de-DE-273b** und **de-DE-1141b**  
Codeänderung:  

```
0180    0180
0001    0181
0002    0182
0003    0183
009C    0184
0009    0185
0086    0186
007F    0187
0097    0188
008D    0189
008E    018A
000B    018B
000C    018C
000D    018D
000E    018E
000F    018F
0010    0190
0011    0191
0012    0192
0013    0193
009D    0194
0085    0195
0008    0196
0087    0197
0018    0198
0019    0199
0092    019A
008F    019B
001C    019C
001D    019D
001E    019E
001F    019F
0080    01A0
0081    01A1
0082    01A2
0083    01A3
0084    01A4
000A    01A5
0017    01A6
001B    01A7
0088    01A8
0089    01A9
008A    01AA
008B    01AB
008C    01AC
0005    01AD
0006    01AE
0007    01AF
0090    01B0
0091    01B1
0016    01B2
0093    01B3
0094    01B4
0095    01B5
0096    01B6
0004    01B7
0098    01B8
0099    01B9
009A    01BA
009B    01BB
0014    01BC
0015    01BD
009E    01BE
001A    01BF
009F    027F
```
Entsprechendes Eingabe-Mapping für eine AWS DMS Aufgabe:  

```
 {"SourceCharacterCodePoint": "0180","TargetCharacterCodePoint": "0180"}
,{"SourceCharacterCodePoint": "0001","TargetCharacterCodePoint": "0181"}
,{"SourceCharacterCodePoint": "0002","TargetCharacterCodePoint": "0182"}
,{"SourceCharacterCodePoint": "0003","TargetCharacterCodePoint": "0183"}
,{"SourceCharacterCodePoint": "009C","TargetCharacterCodePoint": "0184"}
,{"SourceCharacterCodePoint": "0009","TargetCharacterCodePoint": "0185"}
,{"SourceCharacterCodePoint": "0086","TargetCharacterCodePoint": "0186"}
,{"SourceCharacterCodePoint": "007F","TargetCharacterCodePoint": "0187"}
,{"SourceCharacterCodePoint": "0097","TargetCharacterCodePoint": "0188"}
,{"SourceCharacterCodePoint": "008D","TargetCharacterCodePoint": "0189"}
,{"SourceCharacterCodePoint": "008E","TargetCharacterCodePoint": "018A"}
,{"SourceCharacterCodePoint": "000B","TargetCharacterCodePoint": "018B"}
,{"SourceCharacterCodePoint": "000C","TargetCharacterCodePoint": "018C"}
,{"SourceCharacterCodePoint": "000D","TargetCharacterCodePoint": "018D"}
,{"SourceCharacterCodePoint": "000E","TargetCharacterCodePoint": "018E"}
,{"SourceCharacterCodePoint": "000F","TargetCharacterCodePoint": "018F"}
,{"SourceCharacterCodePoint": "0010","TargetCharacterCodePoint": "0190"}
,{"SourceCharacterCodePoint": "0011","TargetCharacterCodePoint": "0191"}
,{"SourceCharacterCodePoint": "0012","TargetCharacterCodePoint": "0192"}
,{"SourceCharacterCodePoint": "0013","TargetCharacterCodePoint": "0193"}
,{"SourceCharacterCodePoint": "009D","TargetCharacterCodePoint": "0194"}
,{"SourceCharacterCodePoint": "0085","TargetCharacterCodePoint": "0195"}
,{"SourceCharacterCodePoint": "0008","TargetCharacterCodePoint": "0196"}
,{"SourceCharacterCodePoint": "0087","TargetCharacterCodePoint": "0197"}
,{"SourceCharacterCodePoint": "0018","TargetCharacterCodePoint": "0198"}
,{"SourceCharacterCodePoint": "0019","TargetCharacterCodePoint": "0199"}
,{"SourceCharacterCodePoint": "0092","TargetCharacterCodePoint": "019A"}
,{"SourceCharacterCodePoint": "008F","TargetCharacterCodePoint": "019B"}
,{"SourceCharacterCodePoint": "001C","TargetCharacterCodePoint": "019C"}
,{"SourceCharacterCodePoint": "001D","TargetCharacterCodePoint": "019D"}
,{"SourceCharacterCodePoint": "001E","TargetCharacterCodePoint": "019E"}
,{"SourceCharacterCodePoint": "001F","TargetCharacterCodePoint": "019F"}
,{"SourceCharacterCodePoint": "0080","TargetCharacterCodePoint": "01A0"}
,{"SourceCharacterCodePoint": "0081","TargetCharacterCodePoint": "01A1"}
,{"SourceCharacterCodePoint": "0082","TargetCharacterCodePoint": "01A2"}
,{"SourceCharacterCodePoint": "0083","TargetCharacterCodePoint": "01A3"}
,{"SourceCharacterCodePoint": "0084","TargetCharacterCodePoint": "01A4"}
,{"SourceCharacterCodePoint": "000A","TargetCharacterCodePoint": "01A5"}
,{"SourceCharacterCodePoint": "0017","TargetCharacterCodePoint": "01A6"}
,{"SourceCharacterCodePoint": "001B","TargetCharacterCodePoint": "01A7"}
,{"SourceCharacterCodePoint": "0088","TargetCharacterCodePoint": "01A8"}
,{"SourceCharacterCodePoint": "0089","TargetCharacterCodePoint": "01A9"}
,{"SourceCharacterCodePoint": "008A","TargetCharacterCodePoint": "01AA"}
,{"SourceCharacterCodePoint": "008B","TargetCharacterCodePoint": "01AB"}
,{"SourceCharacterCodePoint": "008C","TargetCharacterCodePoint": "01AC"}
,{"SourceCharacterCodePoint": "0005","TargetCharacterCodePoint": "01AD"}
,{"SourceCharacterCodePoint": "0006","TargetCharacterCodePoint": "01AE"}
,{"SourceCharacterCodePoint": "0007","TargetCharacterCodePoint": "01AF"}
,{"SourceCharacterCodePoint": "0090","TargetCharacterCodePoint": "01B0"}
,{"SourceCharacterCodePoint": "0091","TargetCharacterCodePoint": "01B1"}
,{"SourceCharacterCodePoint": "0016","TargetCharacterCodePoint": "01B2"}
,{"SourceCharacterCodePoint": "0093","TargetCharacterCodePoint": "01B3"}
,{"SourceCharacterCodePoint": "0094","TargetCharacterCodePoint": "01B4"}
,{"SourceCharacterCodePoint": "0095","TargetCharacterCodePoint": "01B5"}
,{"SourceCharacterCodePoint": "0096","TargetCharacterCodePoint": "01B6"}
,{"SourceCharacterCodePoint": "0004","TargetCharacterCodePoint": "01B7"}
,{"SourceCharacterCodePoint": "0098","TargetCharacterCodePoint": "01B8"}
,{"SourceCharacterCodePoint": "0099","TargetCharacterCodePoint": "01B9"}
,{"SourceCharacterCodePoint": "009A","TargetCharacterCodePoint": "01BA"}
,{"SourceCharacterCodePoint": "009B","TargetCharacterCodePoint": "01BB"}
,{"SourceCharacterCodePoint": "0014","TargetCharacterCodePoint": "01BC"}
,{"SourceCharacterCodePoint": "0015","TargetCharacterCodePoint": "01BD"}
,{"SourceCharacterCodePoint": "009E","TargetCharacterCodePoint": "01BE"}
,{"SourceCharacterCodePoint": "001A","TargetCharacterCodePoint": "01BF"}
,{"SourceCharacterCodePoint": "009F","TargetCharacterCodePoint": "027F"}
```
**en-GB-285b** und **en-GB-1146b**  
Codeänderung:  

```
0180    0180
0001    0181
0002    0182
0003    0183
009C    0184
0009    0185
0086    0186
007F    0187
0097    0188
008D    0189
008E    018A
000B    018B
000C    018C
000D    018D
000E    018E
000F    018F
0010    0190
0011    0191
0012    0192
0013    0193
009D    0194
0085    0195
0008    0196
0087    0197
0018    0198
0019    0199
0092    019A
008F    019B
001C    019C
001D    019D
001E    019E
001F    019F
0080    01A0
0081    01A1
0082    01A2
0083    01A3
0084    01A4
000A    01A5
0017    01A6
001B    01A7
0088    01A8
0089    01A9
008A    01AA
008B    01AB
008C    01AC
0005    01AD
0006    01AE
0007    01AF
0090    01B0
0091    01B1
0016    01B2
0093    01B3
0094    01B4
0095    01B5
0096    01B6
0004    01B7
0098    01B8
0099    01B9
009A    01BA
009B    01BB
0014    01BC
0015    01BD
009E    01BE
001A    01BF
009F    027F
```
Entsprechendes Eingabe-Mapping für eine AWS DMS Aufgabe:  

```
{"SourceCharacterCodePoint": "0180","TargetCharacterCodePoint": "0180"}
,{"SourceCharacterCodePoint": "0001","TargetCharacterCodePoint": "0181"}
,{"SourceCharacterCodePoint": "0002","TargetCharacterCodePoint": "0182"}
,{"SourceCharacterCodePoint": "0003","TargetCharacterCodePoint": "0183"}
,{"SourceCharacterCodePoint": "009C","TargetCharacterCodePoint": "0184"}
,{"SourceCharacterCodePoint": "0009","TargetCharacterCodePoint": "0185"}
,{"SourceCharacterCodePoint": "0086","TargetCharacterCodePoint": "0186"}
,{"SourceCharacterCodePoint": "007F","TargetCharacterCodePoint": "0187"}
,{"SourceCharacterCodePoint": "0097","TargetCharacterCodePoint": "0188"}
,{"SourceCharacterCodePoint": "008D","TargetCharacterCodePoint": "0189"}
,{"SourceCharacterCodePoint": "008E","TargetCharacterCodePoint": "018A"}
,{"SourceCharacterCodePoint": "000B","TargetCharacterCodePoint": "018B"}
,{"SourceCharacterCodePoint": "000C","TargetCharacterCodePoint": "018C"}
,{"SourceCharacterCodePoint": "000D","TargetCharacterCodePoint": "018D"}
,{"SourceCharacterCodePoint": "000E","TargetCharacterCodePoint": "018E"}
,{"SourceCharacterCodePoint": "000F","TargetCharacterCodePoint": "018F"}
,{"SourceCharacterCodePoint": "0010","TargetCharacterCodePoint": "0190"}
,{"SourceCharacterCodePoint": "0011","TargetCharacterCodePoint": "0191"}
,{"SourceCharacterCodePoint": "0012","TargetCharacterCodePoint": "0192"}
,{"SourceCharacterCodePoint": "0013","TargetCharacterCodePoint": "0193"}
,{"SourceCharacterCodePoint": "009D","TargetCharacterCodePoint": "0194"}
,{"SourceCharacterCodePoint": "0085","TargetCharacterCodePoint": "0195"}
,{"SourceCharacterCodePoint": "0008","TargetCharacterCodePoint": "0196"}
,{"SourceCharacterCodePoint": "0087","TargetCharacterCodePoint": "0197"}
,{"SourceCharacterCodePoint": "0018","TargetCharacterCodePoint": "0198"}
,{"SourceCharacterCodePoint": "0019","TargetCharacterCodePoint": "0199"}
,{"SourceCharacterCodePoint": "0092","TargetCharacterCodePoint": "019A"}
,{"SourceCharacterCodePoint": "008F","TargetCharacterCodePoint": "019B"}
,{"SourceCharacterCodePoint": "001C","TargetCharacterCodePoint": "019C"}
,{"SourceCharacterCodePoint": "001D","TargetCharacterCodePoint": "019D"}
,{"SourceCharacterCodePoint": "001E","TargetCharacterCodePoint": "019E"}
,{"SourceCharacterCodePoint": "001F","TargetCharacterCodePoint": "019F"}
,{"SourceCharacterCodePoint": "0080","TargetCharacterCodePoint": "01A0"}
,{"SourceCharacterCodePoint": "0081","TargetCharacterCodePoint": "01A1"}
,{"SourceCharacterCodePoint": "0082","TargetCharacterCodePoint": "01A2"}
,{"SourceCharacterCodePoint": "0083","TargetCharacterCodePoint": "01A3"}
,{"SourceCharacterCodePoint": "0084","TargetCharacterCodePoint": "01A4"}
,{"SourceCharacterCodePoint": "000A","TargetCharacterCodePoint": "01A5"}
,{"SourceCharacterCodePoint": "0017","TargetCharacterCodePoint": "01A6"}
,{"SourceCharacterCodePoint": "001B","TargetCharacterCodePoint": "01A7"}
,{"SourceCharacterCodePoint": "0088","TargetCharacterCodePoint": "01A8"}
,{"SourceCharacterCodePoint": "0089","TargetCharacterCodePoint": "01A9"}
,{"SourceCharacterCodePoint": "008A","TargetCharacterCodePoint": "01AA"}
,{"SourceCharacterCodePoint": "008B","TargetCharacterCodePoint": "01AB"}
,{"SourceCharacterCodePoint": "008C","TargetCharacterCodePoint": "01AC"}
,{"SourceCharacterCodePoint": "0005","TargetCharacterCodePoint": "01AD"}
,{"SourceCharacterCodePoint": "0006","TargetCharacterCodePoint": "01AE"}
,{"SourceCharacterCodePoint": "0007","TargetCharacterCodePoint": "01AF"}
,{"SourceCharacterCodePoint": "0090","TargetCharacterCodePoint": "01B0"}
,{"SourceCharacterCodePoint": "0091","TargetCharacterCodePoint": "01B1"}
,{"SourceCharacterCodePoint": "0016","TargetCharacterCodePoint": "01B2"}
,{"SourceCharacterCodePoint": "0093","TargetCharacterCodePoint": "01B3"}
,{"SourceCharacterCodePoint": "0094","TargetCharacterCodePoint": "01B4"}
,{"SourceCharacterCodePoint": "0095","TargetCharacterCodePoint": "01B5"}
,{"SourceCharacterCodePoint": "0096","TargetCharacterCodePoint": "01B6"}
,{"SourceCharacterCodePoint": "0004","TargetCharacterCodePoint": "01B7"}
,{"SourceCharacterCodePoint": "0098","TargetCharacterCodePoint": "01B8"}
,{"SourceCharacterCodePoint": "0099","TargetCharacterCodePoint": "01B9"}
,{"SourceCharacterCodePoint": "009A","TargetCharacterCodePoint": "01BA"}
,{"SourceCharacterCodePoint": "009B","TargetCharacterCodePoint": "01BB"}
,{"SourceCharacterCodePoint": "0014","TargetCharacterCodePoint": "01BC"}
,{"SourceCharacterCodePoint": "0015","TargetCharacterCodePoint": "01BD"}
,{"SourceCharacterCodePoint": "009E","TargetCharacterCodePoint": "01BE"}
,{"SourceCharacterCodePoint": "001A","TargetCharacterCodePoint": "01BF"}
,{"SourceCharacterCodePoint": "009F","TargetCharacterCodePoint": "027F"}
```
**en-us-037b** und **en-us-1140b**  
Codeänderung:  

```
0180    0180
0001    0181
0002    0182
0003    0183
009C    0184
0009    0185
0086    0186
007F    0187
0097    0188
008D    0189
008E    018A
000B    018B
000C    018C
000D    018D
000E    018E
000F    018F
0010    0190
0011    0191
0012    0192
0013    0193
009D    0194
0085    0195
0008    0196
0087    0197
0018    0198
0019    0199
0092    019A
008F    019B
001C    019C
001D    019D
001E    019E
001F    019F
0080    01A0
0081    01A1
0082    01A2
0083    01A3
0084    01A4
000A    01A5
0017    01A6
001B    01A7
0088    01A8
0089    01A9
008A    01AA
008B    01AB
008C    01AC
0005    01AD
0006    01AE
0007    01AF
0090    01B0
0091    01B1
0016    01B2
0093    01B3
0094    01B4
0095    01B5
0096    01B6
0004    01B7
0098    01B8
0099    01B9
009A    01BA
009B    01BB
0014    01BC
0015    01BD
009E    01BE
001A    01BF
009F    027F
```
Entsprechendes Eingabe-Mapping für eine AWS DMS Aufgabe:  

```
{"SourceCharacterCodePoint": "0180","TargetCharacterCodePoint": "0180"}
,{"SourceCharacterCodePoint": "0001","TargetCharacterCodePoint": "0181"}
,{"SourceCharacterCodePoint": "0002","TargetCharacterCodePoint": "0182"}
,{"SourceCharacterCodePoint": "0003","TargetCharacterCodePoint": "0183"}
,{"SourceCharacterCodePoint": "009C","TargetCharacterCodePoint": "0184"}
,{"SourceCharacterCodePoint": "0009","TargetCharacterCodePoint": "0185"}
,{"SourceCharacterCodePoint": "0086","TargetCharacterCodePoint": "0186"}
,{"SourceCharacterCodePoint": "007F","TargetCharacterCodePoint": "0187"}
,{"SourceCharacterCodePoint": "0097","TargetCharacterCodePoint": "0188"}
,{"SourceCharacterCodePoint": "008D","TargetCharacterCodePoint": "0189"}
,{"SourceCharacterCodePoint": "008E","TargetCharacterCodePoint": "018A"}
,{"SourceCharacterCodePoint": "000B","TargetCharacterCodePoint": "018B"}
,{"SourceCharacterCodePoint": "000C","TargetCharacterCodePoint": "018C"}
,{"SourceCharacterCodePoint": "000D","TargetCharacterCodePoint": "018D"}
,{"SourceCharacterCodePoint": "000E","TargetCharacterCodePoint": "018E"}
,{"SourceCharacterCodePoint": "000F","TargetCharacterCodePoint": "018F"}
,{"SourceCharacterCodePoint": "0010","TargetCharacterCodePoint": "0190"}
,{"SourceCharacterCodePoint": "0011","TargetCharacterCodePoint": "0191"}
,{"SourceCharacterCodePoint": "0012","TargetCharacterCodePoint": "0192"}
,{"SourceCharacterCodePoint": "0013","TargetCharacterCodePoint": "0193"}
,{"SourceCharacterCodePoint": "009D","TargetCharacterCodePoint": "0194"}
,{"SourceCharacterCodePoint": "0085","TargetCharacterCodePoint": "0195"}
,{"SourceCharacterCodePoint": "0008","TargetCharacterCodePoint": "0196"}
,{"SourceCharacterCodePoint": "0087","TargetCharacterCodePoint": "0197"}
,{"SourceCharacterCodePoint": "0018","TargetCharacterCodePoint": "0198"}
,{"SourceCharacterCodePoint": "0019","TargetCharacterCodePoint": "0199"}
,{"SourceCharacterCodePoint": "0092","TargetCharacterCodePoint": "019A"}
,{"SourceCharacterCodePoint": "008F","TargetCharacterCodePoint": "019B"}
,{"SourceCharacterCodePoint": "001C","TargetCharacterCodePoint": "019C"}
,{"SourceCharacterCodePoint": "001D","TargetCharacterCodePoint": "019D"}
,{"SourceCharacterCodePoint": "001E","TargetCharacterCodePoint": "019E"}
,{"SourceCharacterCodePoint": "001F","TargetCharacterCodePoint": "019F"}
,{"SourceCharacterCodePoint": "0080","TargetCharacterCodePoint": "01A0"}
,{"SourceCharacterCodePoint": "0081","TargetCharacterCodePoint": "01A1"}
,{"SourceCharacterCodePoint": "0082","TargetCharacterCodePoint": "01A2"}
,{"SourceCharacterCodePoint": "0083","TargetCharacterCodePoint": "01A3"}
,{"SourceCharacterCodePoint": "0084","TargetCharacterCodePoint": "01A4"}
,{"SourceCharacterCodePoint": "000A","TargetCharacterCodePoint": "01A5"}
,{"SourceCharacterCodePoint": "0017","TargetCharacterCodePoint": "01A6"}
,{"SourceCharacterCodePoint": "001B","TargetCharacterCodePoint": "01A7"}
,{"SourceCharacterCodePoint": "0088","TargetCharacterCodePoint": "01A8"}
,{"SourceCharacterCodePoint": "0089","TargetCharacterCodePoint": "01A9"}
,{"SourceCharacterCodePoint": "008A","TargetCharacterCodePoint": "01AA"}
,{"SourceCharacterCodePoint": "008B","TargetCharacterCodePoint": "01AB"}
,{"SourceCharacterCodePoint": "008C","TargetCharacterCodePoint": "01AC"}
,{"SourceCharacterCodePoint": "0005","TargetCharacterCodePoint": "01AD"}
,{"SourceCharacterCodePoint": "0006","TargetCharacterCodePoint": "01AE"}
,{"SourceCharacterCodePoint": "0007","TargetCharacterCodePoint": "01AF"}
,{"SourceCharacterCodePoint": "0090","TargetCharacterCodePoint": "01B0"}
,{"SourceCharacterCodePoint": "0091","TargetCharacterCodePoint": "01B1"}
,{"SourceCharacterCodePoint": "0016","TargetCharacterCodePoint": "01B2"}
,{"SourceCharacterCodePoint": "0093","TargetCharacterCodePoint": "01B3"}
,{"SourceCharacterCodePoint": "0094","TargetCharacterCodePoint": "01B4"}
,{"SourceCharacterCodePoint": "0095","TargetCharacterCodePoint": "01B5"}
,{"SourceCharacterCodePoint": "0096","TargetCharacterCodePoint": "01B6"}
,{"SourceCharacterCodePoint": "0004","TargetCharacterCodePoint": "01B7"}
,{"SourceCharacterCodePoint": "0098","TargetCharacterCodePoint": "01B8"}
,{"SourceCharacterCodePoint": "0099","TargetCharacterCodePoint": "01B9"}
,{"SourceCharacterCodePoint": "009A","TargetCharacterCodePoint": "01BA"}
,{"SourceCharacterCodePoint": "009B","TargetCharacterCodePoint": "01BB"}
,{"SourceCharacterCodePoint": "0014","TargetCharacterCodePoint": "01BC"}
,{"SourceCharacterCodePoint": "0015","TargetCharacterCodePoint": "01BD"}
,{"SourceCharacterCodePoint": "009E","TargetCharacterCodePoint": "01BE"}
,{"SourceCharacterCodePoint": "001A","TargetCharacterCodePoint": "01BF"}
,{"SourceCharacterCodePoint": "009F","TargetCharacterCodePoint": "027F"}
```
**es-ES-284b** und **es-ES-1145b**  
Codeänderung:  

```
0180    0180
0001    0181
0002    0182
0003    0183
009C    0184
0009    0185
0086    0186
007F    0187
0097    0188
008D    0189
008E    018A
000B    018B
000C    018C
000D    018D
000E    018E
000F    018F
0010    0190
0011    0191
0012    0192
0013    0193
009D    0194
0085    0195
0008    0196
0087    0197
0018    0198
0019    0199
0092    019A
008F    019B
001C    019C
001D    019D
001E    019E
001F    019F
0080    01A0
0081    01A1
0082    01A2
0083    01A3
0084    01A4
000A    01A5
0017    01A6
001B    01A7
0088    01A8
0089    01A9
008A    01AA
008B    01AB
008C    01AC
0005    01AD
0006    01AE
0007    01AF
0090    01B0
0091    01B1
0016    01B2
0093    01B3
0094    01B4
0095    01B5
0096    01B6
0004    01B7
0098    01B8
0099    01B9
009A    01BA
009B    01BB
0014    01BC
0015    01BD
009E    01BE
001A    01BF
009F    027F
```
Entsprechendes Eingabe-Mapping für eine AWS DMS Aufgabe:  

```
 {"SourceCharacterCodePoint": "0180","TargetCharacterCodePoint": "0180"}
,{"SourceCharacterCodePoint": "0001","TargetCharacterCodePoint": "0181"}
,{"SourceCharacterCodePoint": "0002","TargetCharacterCodePoint": "0182"}
,{"SourceCharacterCodePoint": "0003","TargetCharacterCodePoint": "0183"}
,{"SourceCharacterCodePoint": "009C","TargetCharacterCodePoint": "0184"}
,{"SourceCharacterCodePoint": "0009","TargetCharacterCodePoint": "0185"}
,{"SourceCharacterCodePoint": "0086","TargetCharacterCodePoint": "0186"}
,{"SourceCharacterCodePoint": "007F","TargetCharacterCodePoint": "0187"}
,{"SourceCharacterCodePoint": "0097","TargetCharacterCodePoint": "0188"}
,{"SourceCharacterCodePoint": "008D","TargetCharacterCodePoint": "0189"}
,{"SourceCharacterCodePoint": "008E","TargetCharacterCodePoint": "018A"}
,{"SourceCharacterCodePoint": "000B","TargetCharacterCodePoint": "018B"}
,{"SourceCharacterCodePoint": "000C","TargetCharacterCodePoint": "018C"}
,{"SourceCharacterCodePoint": "000D","TargetCharacterCodePoint": "018D"}
,{"SourceCharacterCodePoint": "000E","TargetCharacterCodePoint": "018E"}
,{"SourceCharacterCodePoint": "000F","TargetCharacterCodePoint": "018F"}
,{"SourceCharacterCodePoint": "0010","TargetCharacterCodePoint": "0190"}
,{"SourceCharacterCodePoint": "0011","TargetCharacterCodePoint": "0191"}
,{"SourceCharacterCodePoint": "0012","TargetCharacterCodePoint": "0192"}
,{"SourceCharacterCodePoint": "0013","TargetCharacterCodePoint": "0193"}
,{"SourceCharacterCodePoint": "009D","TargetCharacterCodePoint": "0194"}
,{"SourceCharacterCodePoint": "0085","TargetCharacterCodePoint": "0195"}
,{"SourceCharacterCodePoint": "0008","TargetCharacterCodePoint": "0196"}
,{"SourceCharacterCodePoint": "0087","TargetCharacterCodePoint": "0197"}
,{"SourceCharacterCodePoint": "0018","TargetCharacterCodePoint": "0198"}
,{"SourceCharacterCodePoint": "0019","TargetCharacterCodePoint": "0199"}
,{"SourceCharacterCodePoint": "0092","TargetCharacterCodePoint": "019A"}
,{"SourceCharacterCodePoint": "008F","TargetCharacterCodePoint": "019B"}
,{"SourceCharacterCodePoint": "001C","TargetCharacterCodePoint": "019C"}
,{"SourceCharacterCodePoint": "001D","TargetCharacterCodePoint": "019D"}
,{"SourceCharacterCodePoint": "001E","TargetCharacterCodePoint": "019E"}
,{"SourceCharacterCodePoint": "001F","TargetCharacterCodePoint": "019F"}
,{"SourceCharacterCodePoint": "0080","TargetCharacterCodePoint": "01A0"}
,{"SourceCharacterCodePoint": "0081","TargetCharacterCodePoint": "01A1"}
,{"SourceCharacterCodePoint": "0082","TargetCharacterCodePoint": "01A2"}
,{"SourceCharacterCodePoint": "0083","TargetCharacterCodePoint": "01A3"}
,{"SourceCharacterCodePoint": "0084","TargetCharacterCodePoint": "01A4"}
,{"SourceCharacterCodePoint": "000A","TargetCharacterCodePoint": "01A5"}
,{"SourceCharacterCodePoint": "0017","TargetCharacterCodePoint": "01A6"}
,{"SourceCharacterCodePoint": "001B","TargetCharacterCodePoint": "01A7"}
,{"SourceCharacterCodePoint": "0088","TargetCharacterCodePoint": "01A8"}
,{"SourceCharacterCodePoint": "0089","TargetCharacterCodePoint": "01A9"}
,{"SourceCharacterCodePoint": "008A","TargetCharacterCodePoint": "01AA"}
,{"SourceCharacterCodePoint": "008B","TargetCharacterCodePoint": "01AB"}
,{"SourceCharacterCodePoint": "008C","TargetCharacterCodePoint": "01AC"}
,{"SourceCharacterCodePoint": "0005","TargetCharacterCodePoint": "01AD"}
,{"SourceCharacterCodePoint": "0006","TargetCharacterCodePoint": "01AE"}
,{"SourceCharacterCodePoint": "0007","TargetCharacterCodePoint": "01AF"}
,{"SourceCharacterCodePoint": "0090","TargetCharacterCodePoint": "01B0"}
,{"SourceCharacterCodePoint": "0091","TargetCharacterCodePoint": "01B1"}
,{"SourceCharacterCodePoint": "0016","TargetCharacterCodePoint": "01B2"}
,{"SourceCharacterCodePoint": "0093","TargetCharacterCodePoint": "01B3"}
,{"SourceCharacterCodePoint": "0094","TargetCharacterCodePoint": "01B4"}
,{"SourceCharacterCodePoint": "0095","TargetCharacterCodePoint": "01B5"}
,{"SourceCharacterCodePoint": "0096","TargetCharacterCodePoint": "01B6"}
,{"SourceCharacterCodePoint": "0004","TargetCharacterCodePoint": "01B7"}
,{"SourceCharacterCodePoint": "0098","TargetCharacterCodePoint": "01B8"}
,{"SourceCharacterCodePoint": "0099","TargetCharacterCodePoint": "01B9"}
,{"SourceCharacterCodePoint": "009A","TargetCharacterCodePoint": "01BA"}
,{"SourceCharacterCodePoint": "009B","TargetCharacterCodePoint": "01BB"}
,{"SourceCharacterCodePoint": "0014","TargetCharacterCodePoint": "01BC"}
,{"SourceCharacterCodePoint": "0015","TargetCharacterCodePoint": "01BD"}
,{"SourceCharacterCodePoint": "009E","TargetCharacterCodePoint": "01BE"}
,{"SourceCharacterCodePoint": "001A","TargetCharacterCodePoint": "01BF"}
,{"SourceCharacterCodePoint": "009F","TargetCharacterCodePoint": "027F"}
```
**fi\$1FI-278b** und **fi-FI-1143b**  
Codeänderung:  

```
0180    0180
0001    0181
0002    0182
0003    0183
009C    0184
0009    0185
0086    0186
007F    0187
0097    0188
008D    0189
008E    018A
000B    018B
000C    018C
000D    018D
000E    018E
000F    018F
0010    0190
0011    0191
0012    0192
0013    0193
009D    0194
0085    0195
0008    0196
0087    0197
0018    0198
0019    0199
0092    019A
008F    019B
001C    019C
001D    019D
001E    019E
001F    019F
0080    01A0
0081    01A1
0082    01A2
0083    01A3
0084    01A4
000A    01A5
0017    01A6
001B    01A7
0088    01A8
0089    01A9
008A    01AA
008B    01AB
008C    01AC
0005    01AD
0006    01AE
0007    01AF
0090    01B0
0091    01B1
0016    01B2
0093    01B3
0094    01B4
0095    01B5
0096    01B6
0004    01B7
0098    01B8
0099    01B9
009A    01BA
009B    01BB
0014    01BC
0015    01BD
009E    01BE
001A    01BF
009F    027F
```
Entsprechendes Eingabe-Mapping für eine AWS DMS Aufgabe:  

```
 {"SourceCharacterCodePoint": "0180","TargetCharacterCodePoint": "0180"}
,{"SourceCharacterCodePoint": "0001","TargetCharacterCodePoint": "0181"}
,{"SourceCharacterCodePoint": "0002","TargetCharacterCodePoint": "0182"}
,{"SourceCharacterCodePoint": "0003","TargetCharacterCodePoint": "0183"}
,{"SourceCharacterCodePoint": "009C","TargetCharacterCodePoint": "0184"}
,{"SourceCharacterCodePoint": "0009","TargetCharacterCodePoint": "0185"}
,{"SourceCharacterCodePoint": "0086","TargetCharacterCodePoint": "0186"}
,{"SourceCharacterCodePoint": "007F","TargetCharacterCodePoint": "0187"}
,{"SourceCharacterCodePoint": "0097","TargetCharacterCodePoint": "0188"}
,{"SourceCharacterCodePoint": "008D","TargetCharacterCodePoint": "0189"}
,{"SourceCharacterCodePoint": "008E","TargetCharacterCodePoint": "018A"}
,{"SourceCharacterCodePoint": "000B","TargetCharacterCodePoint": "018B"}
,{"SourceCharacterCodePoint": "000C","TargetCharacterCodePoint": "018C"}
,{"SourceCharacterCodePoint": "000D","TargetCharacterCodePoint": "018D"}
,{"SourceCharacterCodePoint": "000E","TargetCharacterCodePoint": "018E"}
,{"SourceCharacterCodePoint": "000F","TargetCharacterCodePoint": "018F"}
,{"SourceCharacterCodePoint": "0010","TargetCharacterCodePoint": "0190"}
,{"SourceCharacterCodePoint": "0011","TargetCharacterCodePoint": "0191"}
,{"SourceCharacterCodePoint": "0012","TargetCharacterCodePoint": "0192"}
,{"SourceCharacterCodePoint": "0013","TargetCharacterCodePoint": "0193"}
,{"SourceCharacterCodePoint": "009D","TargetCharacterCodePoint": "0194"}
,{"SourceCharacterCodePoint": "0085","TargetCharacterCodePoint": "0195"}
,{"SourceCharacterCodePoint": "0008","TargetCharacterCodePoint": "0196"}
,{"SourceCharacterCodePoint": "0087","TargetCharacterCodePoint": "0197"}
,{"SourceCharacterCodePoint": "0018","TargetCharacterCodePoint": "0198"}
,{"SourceCharacterCodePoint": "0019","TargetCharacterCodePoint": "0199"}
,{"SourceCharacterCodePoint": "0092","TargetCharacterCodePoint": "019A"}
,{"SourceCharacterCodePoint": "008F","TargetCharacterCodePoint": "019B"}
,{"SourceCharacterCodePoint": "001C","TargetCharacterCodePoint": "019C"}
,{"SourceCharacterCodePoint": "001D","TargetCharacterCodePoint": "019D"}
,{"SourceCharacterCodePoint": "001E","TargetCharacterCodePoint": "019E"}
,{"SourceCharacterCodePoint": "001F","TargetCharacterCodePoint": "019F"}
,{"SourceCharacterCodePoint": "0080","TargetCharacterCodePoint": "01A0"}
,{"SourceCharacterCodePoint": "0081","TargetCharacterCodePoint": "01A1"}
,{"SourceCharacterCodePoint": "0082","TargetCharacterCodePoint": "01A2"}
,{"SourceCharacterCodePoint": "0083","TargetCharacterCodePoint": "01A3"}
,{"SourceCharacterCodePoint": "0084","TargetCharacterCodePoint": "01A4"}
,{"SourceCharacterCodePoint": "000A","TargetCharacterCodePoint": "01A5"}
,{"SourceCharacterCodePoint": "0017","TargetCharacterCodePoint": "01A6"}
,{"SourceCharacterCodePoint": "001B","TargetCharacterCodePoint": "01A7"}
,{"SourceCharacterCodePoint": "0088","TargetCharacterCodePoint": "01A8"}
,{"SourceCharacterCodePoint": "0089","TargetCharacterCodePoint": "01A9"}
,{"SourceCharacterCodePoint": "008A","TargetCharacterCodePoint": "01AA"}
,{"SourceCharacterCodePoint": "008B","TargetCharacterCodePoint": "01AB"}
,{"SourceCharacterCodePoint": "008C","TargetCharacterCodePoint": "01AC"}
,{"SourceCharacterCodePoint": "0005","TargetCharacterCodePoint": "01AD"}
,{"SourceCharacterCodePoint": "0006","TargetCharacterCodePoint": "01AE"}
,{"SourceCharacterCodePoint": "0007","TargetCharacterCodePoint": "01AF"}
,{"SourceCharacterCodePoint": "0090","TargetCharacterCodePoint": "01B0"}
,{"SourceCharacterCodePoint": "0091","TargetCharacterCodePoint": "01B1"}
,{"SourceCharacterCodePoint": "0016","TargetCharacterCodePoint": "01B2"}
,{"SourceCharacterCodePoint": "0093","TargetCharacterCodePoint": "01B3"}
,{"SourceCharacterCodePoint": "0094","TargetCharacterCodePoint": "01B4"}
,{"SourceCharacterCodePoint": "0095","TargetCharacterCodePoint": "01B5"}
,{"SourceCharacterCodePoint": "0096","TargetCharacterCodePoint": "01B6"}
,{"SourceCharacterCodePoint": "0004","TargetCharacterCodePoint": "01B7"}
,{"SourceCharacterCodePoint": "0098","TargetCharacterCodePoint": "01B8"}
,{"SourceCharacterCodePoint": "0099","TargetCharacterCodePoint": "01B9"}
,{"SourceCharacterCodePoint": "009A","TargetCharacterCodePoint": "01BA"}
,{"SourceCharacterCodePoint": "009B","TargetCharacterCodePoint": "01BB"}
,{"SourceCharacterCodePoint": "0014","TargetCharacterCodePoint": "01BC"}
,{"SourceCharacterCodePoint": "0015","TargetCharacterCodePoint": "01BD"}
,{"SourceCharacterCodePoint": "009E","TargetCharacterCodePoint": "01BE"}
,{"SourceCharacterCodePoint": "001A","TargetCharacterCodePoint": "01BF"}
,{"SourceCharacterCodePoint": "009F","TargetCharacterCodePoint": "027F"}
```
**fr-FR-297b** und **fr-FR-1147b**  
Codeänderung:  

```
0180    0180
0001    0181
0002    0182
0003    0183
009C    0184
0009    0185
0086    0186
007F    0187
0097    0188
008D    0189
008E    018A
000B    018B
000C    018C
000D    018D
000E    018E
000F    018F
0010    0190
0011    0191
0012    0192
0013    0193
009D    0194
0085    0195
0008    0196
0087    0197
0018    0198
0019    0199
0092    019A
008F    019B
001C    019C
001D    019D
001E    019E
001F    019F
0080    01A0
0081    01A1
0082    01A2
0083    01A3
0084    01A4
000A    01A5
0017    01A6
001B    01A7
0088    01A8
0089    01A9
008A    01AA
008B    01AB
008C    01AC
0005    01AD
0006    01AE
0007    01AF
0090    01B0
0091    01B1
0016    01B2
0093    01B3
0094    01B4
0095    01B5
0096    01B6
0004    01B7
0098    01B8
0099    01B9
009A    01BA
009B    01BB
0014    01BC
0015    01BD
009E    01BE
001A    01BF
009F    027F
```
Entsprechendes Eingabe-Mapping für eine AWS DMS Aufgabe:  

```
{"SourceCharacterCodePoint": "0180","TargetCharacterCodePoint": "0180"}
,{"SourceCharacterCodePoint": "0001","TargetCharacterCodePoint": "0181"}
,{"SourceCharacterCodePoint": "0002","TargetCharacterCodePoint": "0182"}
,{"SourceCharacterCodePoint": "0003","TargetCharacterCodePoint": "0183"}
,{"SourceCharacterCodePoint": "009C","TargetCharacterCodePoint": "0184"}
,{"SourceCharacterCodePoint": "0009","TargetCharacterCodePoint": "0185"}
,{"SourceCharacterCodePoint": "0086","TargetCharacterCodePoint": "0186"}
,{"SourceCharacterCodePoint": "007F","TargetCharacterCodePoint": "0187"}
,{"SourceCharacterCodePoint": "0097","TargetCharacterCodePoint": "0188"}
,{"SourceCharacterCodePoint": "008D","TargetCharacterCodePoint": "0189"}
,{"SourceCharacterCodePoint": "008E","TargetCharacterCodePoint": "018A"}
,{"SourceCharacterCodePoint": "000B","TargetCharacterCodePoint": "018B"}
,{"SourceCharacterCodePoint": "000C","TargetCharacterCodePoint": "018C"}
,{"SourceCharacterCodePoint": "000D","TargetCharacterCodePoint": "018D"}
,{"SourceCharacterCodePoint": "000E","TargetCharacterCodePoint": "018E"}
,{"SourceCharacterCodePoint": "000F","TargetCharacterCodePoint": "018F"}
,{"SourceCharacterCodePoint": "0010","TargetCharacterCodePoint": "0190"}
,{"SourceCharacterCodePoint": "0011","TargetCharacterCodePoint": "0191"}
,{"SourceCharacterCodePoint": "0012","TargetCharacterCodePoint": "0192"}
,{"SourceCharacterCodePoint": "0013","TargetCharacterCodePoint": "0193"}
,{"SourceCharacterCodePoint": "009D","TargetCharacterCodePoint": "0194"}
,{"SourceCharacterCodePoint": "0085","TargetCharacterCodePoint": "0195"}
,{"SourceCharacterCodePoint": "0008","TargetCharacterCodePoint": "0196"}
,{"SourceCharacterCodePoint": "0087","TargetCharacterCodePoint": "0197"}
,{"SourceCharacterCodePoint": "0018","TargetCharacterCodePoint": "0198"}
,{"SourceCharacterCodePoint": "0019","TargetCharacterCodePoint": "0199"}
,{"SourceCharacterCodePoint": "0092","TargetCharacterCodePoint": "019A"}
,{"SourceCharacterCodePoint": "008F","TargetCharacterCodePoint": "019B"}
,{"SourceCharacterCodePoint": "001C","TargetCharacterCodePoint": "019C"}
,{"SourceCharacterCodePoint": "001D","TargetCharacterCodePoint": "019D"}
,{"SourceCharacterCodePoint": "001E","TargetCharacterCodePoint": "019E"}
,{"SourceCharacterCodePoint": "001F","TargetCharacterCodePoint": "019F"}
,{"SourceCharacterCodePoint": "0080","TargetCharacterCodePoint": "01A0"}
,{"SourceCharacterCodePoint": "0081","TargetCharacterCodePoint": "01A1"}
,{"SourceCharacterCodePoint": "0082","TargetCharacterCodePoint": "01A2"}
,{"SourceCharacterCodePoint": "0083","TargetCharacterCodePoint": "01A3"}
,{"SourceCharacterCodePoint": "0084","TargetCharacterCodePoint": "01A4"}
,{"SourceCharacterCodePoint": "000A","TargetCharacterCodePoint": "01A5"}
,{"SourceCharacterCodePoint": "0017","TargetCharacterCodePoint": "01A6"}
,{"SourceCharacterCodePoint": "001B","TargetCharacterCodePoint": "01A7"}
,{"SourceCharacterCodePoint": "0088","TargetCharacterCodePoint": "01A8"}
,{"SourceCharacterCodePoint": "0089","TargetCharacterCodePoint": "01A9"}
,{"SourceCharacterCodePoint": "008A","TargetCharacterCodePoint": "01AA"}
,{"SourceCharacterCodePoint": "008B","TargetCharacterCodePoint": "01AB"}
,{"SourceCharacterCodePoint": "008C","TargetCharacterCodePoint": "01AC"}
,{"SourceCharacterCodePoint": "0005","TargetCharacterCodePoint": "01AD"}
,{"SourceCharacterCodePoint": "0006","TargetCharacterCodePoint": "01AE"}
,{"SourceCharacterCodePoint": "0007","TargetCharacterCodePoint": "01AF"}
,{"SourceCharacterCodePoint": "0090","TargetCharacterCodePoint": "01B0"}
,{"SourceCharacterCodePoint": "0091","TargetCharacterCodePoint": "01B1"}
,{"SourceCharacterCodePoint": "0016","TargetCharacterCodePoint": "01B2"}
,{"SourceCharacterCodePoint": "0093","TargetCharacterCodePoint": "01B3"}
,{"SourceCharacterCodePoint": "0094","TargetCharacterCodePoint": "01B4"}
,{"SourceCharacterCodePoint": "0095","TargetCharacterCodePoint": "01B5"}
,{"SourceCharacterCodePoint": "0096","TargetCharacterCodePoint": "01B6"}
,{"SourceCharacterCodePoint": "0004","TargetCharacterCodePoint": "01B7"}
,{"SourceCharacterCodePoint": "0098","TargetCharacterCodePoint": "01B8"}
,{"SourceCharacterCodePoint": "0099","TargetCharacterCodePoint": "01B9"}
,{"SourceCharacterCodePoint": "009A","TargetCharacterCodePoint": "01BA"}
,{"SourceCharacterCodePoint": "009B","TargetCharacterCodePoint": "01BB"}
,{"SourceCharacterCodePoint": "0014","TargetCharacterCodePoint": "01BC"}
,{"SourceCharacterCodePoint": "0015","TargetCharacterCodePoint": "01BD"}
,{"SourceCharacterCodePoint": "009E","TargetCharacterCodePoint": "01BE"}
,{"SourceCharacterCodePoint": "001A","TargetCharacterCodePoint": "01BF"}
,{"SourceCharacterCodePoint": "009F","TargetCharacterCodePoint": "027F"}
```
**it-IT-280b** und **it-IT-1144b**  
Codeänderung:  

```
0180    0180
0001    0181
0002    0182
0003    0183
009C    0184
0009    0185
0086    0186
007F    0187
0097    0188
008D    0189
008E    018A
000B    018B
000C    018C
000D    018D
000E    018E
000F    018F
0010    0190
0011    0191
0012    0192
0013    0193
009D    0194
0085    0195
0008    0196
0087    0197
0018    0198
0019    0199
0092    019A
008F    019B
001C    019C
001D    019D
001E    019E
001F    019F
0080    01A0
0081    01A1
0082    01A2
0083    01A3
0084    01A4
000A    01A5
0017    01A6
001B    01A7
0088    01A8
0089    01A9
008A    01AA
008B    01AB
008C    01AC
0005    01AD
0006    01AE
0007    01AF
0090    01B0
0091    01B1
0016    01B2
0093    01B3
0094    01B4
0095    01B5
0096    01B6
0004    01B7
0098    01B8
0099    01B9
009A    01BA
009B    01BB
0014    01BC
0015    01BD
009E    01BE
001A    01BF
009F    027F
```
Entsprechendes Eingabe-Mapping für eine AWS DMS Aufgabe:  

```
 {"SourceCharacterCodePoint": "0180","TargetCharacterCodePoint": "0180"}
,{"SourceCharacterCodePoint": "0001","TargetCharacterCodePoint": "0181"}
,{"SourceCharacterCodePoint": "0002","TargetCharacterCodePoint": "0182"}
,{"SourceCharacterCodePoint": "0003","TargetCharacterCodePoint": "0183"}
,{"SourceCharacterCodePoint": "009C","TargetCharacterCodePoint": "0184"}
,{"SourceCharacterCodePoint": "0009","TargetCharacterCodePoint": "0185"}
,{"SourceCharacterCodePoint": "0086","TargetCharacterCodePoint": "0186"}
,{"SourceCharacterCodePoint": "007F","TargetCharacterCodePoint": "0187"}
,{"SourceCharacterCodePoint": "0097","TargetCharacterCodePoint": "0188"}
,{"SourceCharacterCodePoint": "008D","TargetCharacterCodePoint": "0189"}
,{"SourceCharacterCodePoint": "008E","TargetCharacterCodePoint": "018A"}
,{"SourceCharacterCodePoint": "000B","TargetCharacterCodePoint": "018B"}
,{"SourceCharacterCodePoint": "000C","TargetCharacterCodePoint": "018C"}
,{"SourceCharacterCodePoint": "000D","TargetCharacterCodePoint": "018D"}
,{"SourceCharacterCodePoint": "000E","TargetCharacterCodePoint": "018E"}
,{"SourceCharacterCodePoint": "000F","TargetCharacterCodePoint": "018F"}
,{"SourceCharacterCodePoint": "0010","TargetCharacterCodePoint": "0190"}
,{"SourceCharacterCodePoint": "0011","TargetCharacterCodePoint": "0191"}
,{"SourceCharacterCodePoint": "0012","TargetCharacterCodePoint": "0192"}
,{"SourceCharacterCodePoint": "0013","TargetCharacterCodePoint": "0193"}
,{"SourceCharacterCodePoint": "009D","TargetCharacterCodePoint": "0194"}
,{"SourceCharacterCodePoint": "0085","TargetCharacterCodePoint": "0195"}
,{"SourceCharacterCodePoint": "0008","TargetCharacterCodePoint": "0196"}
,{"SourceCharacterCodePoint": "0087","TargetCharacterCodePoint": "0197"}
,{"SourceCharacterCodePoint": "0018","TargetCharacterCodePoint": "0198"}
,{"SourceCharacterCodePoint": "0019","TargetCharacterCodePoint": "0199"}
,{"SourceCharacterCodePoint": "0092","TargetCharacterCodePoint": "019A"}
,{"SourceCharacterCodePoint": "008F","TargetCharacterCodePoint": "019B"}
,{"SourceCharacterCodePoint": "001C","TargetCharacterCodePoint": "019C"}
,{"SourceCharacterCodePoint": "001D","TargetCharacterCodePoint": "019D"}
,{"SourceCharacterCodePoint": "001E","TargetCharacterCodePoint": "019E"}
,{"SourceCharacterCodePoint": "001F","TargetCharacterCodePoint": "019F"}
,{"SourceCharacterCodePoint": "0080","TargetCharacterCodePoint": "01A0"}
,{"SourceCharacterCodePoint": "0081","TargetCharacterCodePoint": "01A1"}
,{"SourceCharacterCodePoint": "0082","TargetCharacterCodePoint": "01A2"}
,{"SourceCharacterCodePoint": "0083","TargetCharacterCodePoint": "01A3"}
,{"SourceCharacterCodePoint": "0084","TargetCharacterCodePoint": "01A4"}
,{"SourceCharacterCodePoint": "000A","TargetCharacterCodePoint": "01A5"}
,{"SourceCharacterCodePoint": "0017","TargetCharacterCodePoint": "01A6"}
,{"SourceCharacterCodePoint": "001B","TargetCharacterCodePoint": "01A7"}
,{"SourceCharacterCodePoint": "0088","TargetCharacterCodePoint": "01A8"}
,{"SourceCharacterCodePoint": "0089","TargetCharacterCodePoint": "01A9"}
,{"SourceCharacterCodePoint": "008A","TargetCharacterCodePoint": "01AA"}
,{"SourceCharacterCodePoint": "008B","TargetCharacterCodePoint": "01AB"}
,{"SourceCharacterCodePoint": "008C","TargetCharacterCodePoint": "01AC"}
,{"SourceCharacterCodePoint": "0005","TargetCharacterCodePoint": "01AD"}
,{"SourceCharacterCodePoint": "0006","TargetCharacterCodePoint": "01AE"}
,{"SourceCharacterCodePoint": "0007","TargetCharacterCodePoint": "01AF"}
,{"SourceCharacterCodePoint": "0090","TargetCharacterCodePoint": "01B0"}
,{"SourceCharacterCodePoint": "0091","TargetCharacterCodePoint": "01B1"}
,{"SourceCharacterCodePoint": "0016","TargetCharacterCodePoint": "01B2"}
,{"SourceCharacterCodePoint": "0093","TargetCharacterCodePoint": "01B3"}
,{"SourceCharacterCodePoint": "0094","TargetCharacterCodePoint": "01B4"}
,{"SourceCharacterCodePoint": "0095","TargetCharacterCodePoint": "01B5"}
,{"SourceCharacterCodePoint": "0096","TargetCharacterCodePoint": "01B6"}
,{"SourceCharacterCodePoint": "0004","TargetCharacterCodePoint": "01B7"}
,{"SourceCharacterCodePoint": "0098","TargetCharacterCodePoint": "01B8"}
,{"SourceCharacterCodePoint": "0099","TargetCharacterCodePoint": "01B9"}
,{"SourceCharacterCodePoint": "009A","TargetCharacterCodePoint": "01BA"}
,{"SourceCharacterCodePoint": "009B","TargetCharacterCodePoint": "01BB"}
,{"SourceCharacterCodePoint": "0014","TargetCharacterCodePoint": "01BC"}
,{"SourceCharacterCodePoint": "0015","TargetCharacterCodePoint": "01BD"}
,{"SourceCharacterCodePoint": "009E","TargetCharacterCodePoint": "01BE"}
,{"SourceCharacterCodePoint": "001A","TargetCharacterCodePoint": "01BF"}
,{"SourceCharacterCodePoint": "009F","TargetCharacterCodePoint": "027F"}
```
**nl-BE-500b** und **nl-BE-1148b**  
Codeänderung:  

```
0180    0180
0001    0181
0002    0182
0003    0183
009C    0184
0009    0185
0086    0186
007F    0187
0097    0188
008D    0189
008E    018A
000B    018B
000C    018C
000D    018D
000E    018E
000F    018F
0010    0190
0011    0191
0012    0192
0013    0193
009D    0194
0085    0195
0008    0196
0087    0197
0018    0198
0019    0199
0092    019A
008F    019B
001C    019C
001D    019D
001E    019E
001F    019F
0080    01A0
0081    01A1
0082    01A2
0083    01A3
0084    01A4
000A    01A5
0017    01A6
001B    01A7
0088    01A8
0089    01A9
008A    01AA
008B    01AB
008C    01AC
0005    01AD
0006    01AE
0007    01AF
0090    01B0
0091    01B1
0016    01B2
0093    01B3
0094    01B4
0095    01B5
0096    01B6
0004    01B7
0098    01B8
0099    01B9
009A    01BA
009B    01BB
0014    01BC
0015    01BD
009E    01BE
001A    01BF
009F    027F
```
Entsprechendes Eingabe-Mapping für eine AWS DMS Aufgabe:  

```
 {"SourceCharacterCodePoint": "0180","TargetCharacterCodePoint": "0180"}
,{"SourceCharacterCodePoint": "0001","TargetCharacterCodePoint": "0181"}
,{"SourceCharacterCodePoint": "0002","TargetCharacterCodePoint": "0182"}
,{"SourceCharacterCodePoint": "0003","TargetCharacterCodePoint": "0183"}
,{"SourceCharacterCodePoint": "009C","TargetCharacterCodePoint": "0184"}
,{"SourceCharacterCodePoint": "0009","TargetCharacterCodePoint": "0185"}
,{"SourceCharacterCodePoint": "0086","TargetCharacterCodePoint": "0186"}
,{"SourceCharacterCodePoint": "007F","TargetCharacterCodePoint": "0187"}
,{"SourceCharacterCodePoint": "0097","TargetCharacterCodePoint": "0188"}
,{"SourceCharacterCodePoint": "008D","TargetCharacterCodePoint": "0189"}
,{"SourceCharacterCodePoint": "008E","TargetCharacterCodePoint": "018A"}
,{"SourceCharacterCodePoint": "000B","TargetCharacterCodePoint": "018B"}
,{"SourceCharacterCodePoint": "000C","TargetCharacterCodePoint": "018C"}
,{"SourceCharacterCodePoint": "000D","TargetCharacterCodePoint": "018D"}
,{"SourceCharacterCodePoint": "000E","TargetCharacterCodePoint": "018E"}
,{"SourceCharacterCodePoint": "000F","TargetCharacterCodePoint": "018F"}
,{"SourceCharacterCodePoint": "0010","TargetCharacterCodePoint": "0190"}
,{"SourceCharacterCodePoint": "0011","TargetCharacterCodePoint": "0191"}
,{"SourceCharacterCodePoint": "0012","TargetCharacterCodePoint": "0192"}
,{"SourceCharacterCodePoint": "0013","TargetCharacterCodePoint": "0193"}
,{"SourceCharacterCodePoint": "009D","TargetCharacterCodePoint": "0194"}
,{"SourceCharacterCodePoint": "0085","TargetCharacterCodePoint": "0195"}
,{"SourceCharacterCodePoint": "0008","TargetCharacterCodePoint": "0196"}
,{"SourceCharacterCodePoint": "0087","TargetCharacterCodePoint": "0197"}
,{"SourceCharacterCodePoint": "0018","TargetCharacterCodePoint": "0198"}
,{"SourceCharacterCodePoint": "0019","TargetCharacterCodePoint": "0199"}
,{"SourceCharacterCodePoint": "0092","TargetCharacterCodePoint": "019A"}
,{"SourceCharacterCodePoint": "008F","TargetCharacterCodePoint": "019B"}
,{"SourceCharacterCodePoint": "001C","TargetCharacterCodePoint": "019C"}
,{"SourceCharacterCodePoint": "001D","TargetCharacterCodePoint": "019D"}
,{"SourceCharacterCodePoint": "001E","TargetCharacterCodePoint": "019E"}
,{"SourceCharacterCodePoint": "001F","TargetCharacterCodePoint": "019F"}
,{"SourceCharacterCodePoint": "0080","TargetCharacterCodePoint": "01A0"}
,{"SourceCharacterCodePoint": "0081","TargetCharacterCodePoint": "01A1"}
,{"SourceCharacterCodePoint": "0082","TargetCharacterCodePoint": "01A2"}
,{"SourceCharacterCodePoint": "0083","TargetCharacterCodePoint": "01A3"}
,{"SourceCharacterCodePoint": "0084","TargetCharacterCodePoint": "01A4"}
,{"SourceCharacterCodePoint": "000A","TargetCharacterCodePoint": "01A5"}
,{"SourceCharacterCodePoint": "0017","TargetCharacterCodePoint": "01A6"}
,{"SourceCharacterCodePoint": "001B","TargetCharacterCodePoint": "01A7"}
,{"SourceCharacterCodePoint": "0088","TargetCharacterCodePoint": "01A8"}
,{"SourceCharacterCodePoint": "0089","TargetCharacterCodePoint": "01A9"}
,{"SourceCharacterCodePoint": "008A","TargetCharacterCodePoint": "01AA"}
,{"SourceCharacterCodePoint": "008B","TargetCharacterCodePoint": "01AB"}
,{"SourceCharacterCodePoint": "008C","TargetCharacterCodePoint": "01AC"}
,{"SourceCharacterCodePoint": "0005","TargetCharacterCodePoint": "01AD"}
,{"SourceCharacterCodePoint": "0006","TargetCharacterCodePoint": "01AE"}
,{"SourceCharacterCodePoint": "0007","TargetCharacterCodePoint": "01AF"}
,{"SourceCharacterCodePoint": "0090","TargetCharacterCodePoint": "01B0"}
,{"SourceCharacterCodePoint": "0091","TargetCharacterCodePoint": "01B1"}
,{"SourceCharacterCodePoint": "0016","TargetCharacterCodePoint": "01B2"}
,{"SourceCharacterCodePoint": "0093","TargetCharacterCodePoint": "01B3"}
,{"SourceCharacterCodePoint": "0094","TargetCharacterCodePoint": "01B4"}
,{"SourceCharacterCodePoint": "0095","TargetCharacterCodePoint": "01B5"}
,{"SourceCharacterCodePoint": "0096","TargetCharacterCodePoint": "01B6"}
,{"SourceCharacterCodePoint": "0004","TargetCharacterCodePoint": "01B7"}
,{"SourceCharacterCodePoint": "0098","TargetCharacterCodePoint": "01B8"}
,{"SourceCharacterCodePoint": "0099","TargetCharacterCodePoint": "01B9"}
,{"SourceCharacterCodePoint": "009A","TargetCharacterCodePoint": "01BA"}
,{"SourceCharacterCodePoint": "009B","TargetCharacterCodePoint": "01BB"}
,{"SourceCharacterCodePoint": "0014","TargetCharacterCodePoint": "01BC"}
,{"SourceCharacterCodePoint": "0015","TargetCharacterCodePoint": "01BD"}
,{"SourceCharacterCodePoint": "009E","TargetCharacterCodePoint": "01BE"}
,{"SourceCharacterCodePoint": "001A","TargetCharacterCodePoint": "01BF"}
,{"SourceCharacterCodePoint": "009F","TargetCharacterCodePoint": "027F"}
```

# Ziele für die Datenmigration
<a name="CHAP_Target"></a>

AWS Database Migration Service (AWS DMS) kann viele der gängigsten Datenbanken als Ziel für die Datenreplikation verwenden. Das Ziel kann sich auf einer Amazon Elastic Compute Cloud (Amazon EC2) -Instance, einer Amazon Relational Database Service (Amazon RDS) -Instance oder einer lokalen Datenbank befinden. 

Eine umfassende Liste gültiger Ziele finden Sie unter [Ziele für AWS DMS](CHAP_Introduction.Targets.md).

**Anmerkung**  
AWS DMS unterstützt keine regionsübergreifende AWS Migration für die folgenden Zielendpunkttypen:  
Amazon-DynamoDB
 OpenSearch Amazon-Dienst
Amazon Kinesis Data Streams
Amazon Aurora PostgreSQL Limitless ist als Ziel für AWS Database Migration Service () verfügbar.AWS DMS Weitere Informationen finden Sie unter [Verwenden einer PostgreSQL-Datenbank als Ziel für](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.PostgreSQL.html). AWS Database Migration Service

**Topics**
+ [Verwendung einer Oracle-Datenbank als Ziel für AWS Database Migration Service](CHAP_Target.Oracle.md)
+ [Verwenden einer Microsoft SQL Server-Datenbank als Ziel für AWS Database Migration Service](CHAP_Target.SQLServer.md)
+ [Verwendung einer PostgreSQL-Datenbank als Ziel für AWS Database Migration Service](CHAP_Target.PostgreSQL.md)
+ [Verwendung einer MySQL-kompatiblen Datenbank als Ziel für AWS Database Migration Service](CHAP_Target.MySQL.md)
+ [Verwenden einer Amazon Redshift Redshift-Datenbank als Ziel für AWS Database Migration Service](CHAP_Target.Redshift.md)
+ [Verwendung einer SAP ASE-Datenbank als Ziel für AWS Database Migration Service](CHAP_Target.SAP.md)
+ [Verwendung von Amazon S3 als Ziel für AWS Database Migration Service](CHAP_Target.S3.md)
+ [Verwenden einer Amazon DynamoDB DynamoDB-Datenbank als Ziel für AWS Database Migration Service](CHAP_Target.DynamoDB.md)
+ [Verwendung von Amazon Kinesis Data Streams als Ziel für AWS Database Migration Service](CHAP_Target.Kinesis.md)
+ [Verwendung von Apache Kafka als Ziel für AWS Database Migration Service](CHAP_Target.Kafka.md)
+ [Verwendung eines Amazon OpenSearch Service-Clusters als Ziel für AWS Database Migration Service](CHAP_Target.Elasticsearch.md)
+ [Amazon DocumentDB als Ziel für den AWS Database Migration Service verwenden](CHAP_Target.DocumentDB.md)
+ [Verwendung von Amazon Neptune als Ziel für AWS Database Migration Service](CHAP_Target.Neptune.md)
+ [Verwenden von Redis OSS als Ziel für AWS Database Migration Service](CHAP_Target.Redis.md)
+ [Babelfish als Ziel verwenden für AWS Database Migration Service](CHAP_Target.Babelfish.md)
+ [Verwendung von Amazon Timestream als Ziel für AWS Database Migration Service](CHAP_Target.Timestream.md)
+ [Verwendung von Amazon RDS for Db2 und IBM Db2 LUW als Ziel für AWS DMS](CHAP_Target.DB2.md)

# Verwendung einer Oracle-Datenbank als Ziel für AWS Database Migration Service
<a name="CHAP_Target.Oracle"></a>

Sie können Daten entweder aus einer anderen Oracle-Datenbank oder aus einer der anderen unterstützten Datenbanken zu Oracle-Datenbankzielen migrieren. AWS DMS Sie können Secure Sockets Layer (SSL) verwenden, um Verbindungen zwischen Ihrem Oracle-Endpunkt und der Replikations-Instance zu verschlüsseln. Weitere Hinweise zur Verwendung von SSL mit einem Oracle-Endpunkt finden Sie unter[Verwenden von SSL mit AWS Database Migration Service](CHAP_Security.SSL.md). AWS DMS unterstützt auch die Verwendung von Oracle Transparent Data Encryption (TDE) zur Verschlüsselung ruhender Daten in der Zieldatenbank, da Oracle TDE zum Schreiben in die Datenbank weder einen Verschlüsselungsschlüssel noch ein Kennwort benötigt.

Hinweise zu Versionen von Oracle, die als Ziel AWS DMS unterstützen, finden Sie unter. [Ziele für AWS DMS](CHAP_Introduction.Targets.md) 

Wenn Sie Oracle als Ziel verwenden, gehen wir davon aus, dass die Daten in das Schema oder den Benutzer migriert werden sollen, das bzw. der für die Zielverbindung verwendet wird. Wenn Sie Daten in ein anderes Schema migrieren möchten, verwenden Sie dazu eine Schematransformation. Nehmen wir an, Ihr Zielendpunkt stellt eine Verbindung mit dem Benutzer `RDSMASTER` her und Sie möchten vom Benutzer `PERFDATA1` zu `PERFDATA2` migrieren. Erstellen Sie in diesem Fall eine Transformation, die dem folgenden Beispiel ähnelt.

```
{
   "rule-type": "transformation",
   "rule-id": "2",
   "rule-name": "2",
   "rule-action": "rename",
   "rule-target": "schema",
   "object-locator": {
   "schema-name": "PERFDATA1"
},
"value": "PERFDATA2"
}
```

Wenn Sie Oracle als Ziel verwenden, AWS DMS migriert alle Tabellen und Indizes in Standardtabellen- und Index-Tablespaces im Ziel. Wenn Sie Tabellen und Indizes in verschiedene Tabellen- und Index-Tablespaces migrieren möchten, verwenden Sie hierfür eine Tablespace-Transformation. Angenommen, Sie verfügen über eine Reihe von Tabellen im `INVENTORY`-Schema, die einigen Tablespaces in der Oracle-Quelldatenbank zugeordnet sind. Für die Migration möchten Sie all diese Tabellen zu einem einzelnen `INVENTORYSPACE`-Tabellenraum in der Zieldatenbank zuweisen. Erstellen Sie in diesem Fall eine Transformation, die dem folgenden Beispiel ähnelt.

```
{
   "rule-type": "transformation",
   "rule-id": "3",
   "rule-name": "3",
   "rule-action": "rename",
   "rule-target": "table-tablespace",
   "object-locator": {
      "schema-name": "INVENTORY",
      "table-name": "%",
      "table-tablespace-name": "%"
   },
   "value": "INVENTORYSPACE"
}
```

Weitere Informationen zu Umwandlungen finden Sie unter [Festlegen der Tabellenauswahl- und Transformationsregeln mit JSON](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.md).

Wenn Oracle sowohl Quelle als auch Ziel ist, können Sie vorhandene Tabellen- oder Index-Tablespace-Zuweisungen beibehalten, indem Sie das zusätzliche Verbindungsattribut für Oracle Source, `enableHomogenousTablespace=true`, festlegen. Weitere Informationen finden Sie unter [Endpunkteinstellungen bei Verwendung von Oracle als Quelle für AWS DMS](CHAP_Source.Oracle.md#CHAP_Source.Oracle.ConnectionAttrib).

Weitere Informationen zur Arbeit mit Oracle-Datenbanken als Ziel für finden Sie in den AWS DMS folgenden Abschnitten: 

**Topics**
+ [Einschränkungen von Oracle als Ziel für AWS Database Migration Service](#CHAP_Target.Oracle.Limitations)
+ [Benutzerkontoberechtigungen, die bei der Verwendung von Oracle als Ziel erforderlich sind](#CHAP_Target.Oracle.Privileges)
+ [Konfiguration einer Oracle-Datenbank als Ziel für AWS Database Migration Service](#CHAP_Target.Oracle.Configuration)
+ [Endpunkteinstellungen bei Verwendung von Oracle als Ziel für AWS DMS](#CHAP_Target.Oracle.ConnectionAttrib)
+ [Zieldatentypen für Oracle](#CHAP_Target.Oracle.DataTypes)

## Einschränkungen von Oracle als Ziel für AWS Database Migration Service
<a name="CHAP_Target.Oracle.Limitations"></a>

Bei der Verwendung von Oracle als Ziel für die Datenmigration gelten folgende Einschränkungen:
+ AWS DMS erstellt kein Schema in der Oracle-Zieldatenbank. Sie müssen gewünschte Schemata selbst in der Oracle-Zieldatenbank erstellen. Der Schemaname muss für das Oracle-Ziel bereits vorhanden sein. Tabellen aus dem Quellschema werden in den Benutzer oder das Schema importiert, das für die Verbindung mit der Zielinstanz AWS DMS verwendet wird. Um mehrere Schemata zu migrieren, können Sie mehrere Replikationsaufgaben erstellen. Sie können Daten auch in verschiedene Schemata auf einem Ziel migrieren. Dazu müssen Sie Schematransformationsregeln für die AWS DMS Tabellenzuordnungen verwenden.
+ AWS DMS unterstützt die `Use direct path full load` Option für Tabellen mit INDEXTYPE CONTEXT nicht. Um dieses Problem zu umgehen, können Sie den Array-Ladevorgang ausführen. 
+ Mit der Batch-optimierten Option „Apply (Anwenden)“ wird beim Laden in die Nettoänderungstabelle ein direkter Pfad verwendet, der den XML-Typ nicht unterstützt. Um dieses Problem zu umgehen, können Sie den transaktionalen Modus „Apply (Anwenden)“ verwenden.
+ Leere Zeichenfolgen, die aus Quelldatenbanken migriert werden, können vom Oracle-Ziel unterschiedlich behandelt (z. B. in eine Leerzeichenfolge konvertiert) werden. Dies kann dazu führen, dass bei der AWS DMS Überprüfung eine Nichtübereinstimmung gemeldet wird.
+ Sie können die Gesamtzahl der Spalten pro Tabelle, die im stapeloptimierten Anwendungsmodus unterstützt werden, mit der folgenden Formel ausdrücken:

  ```
  2 * columns_in_original_table + columns_in_primary_key <= 999
  ```

  Wenn die Originaltabelle beispielsweise 25 Spalten hat und ihr Primärschlüssel aus 5 Spalten besteht, beträgt die Gesamtzahl der Spalten 55. Wenn eine Tabelle die unterstützte Anzahl von Spalten überschreitet, werden alle Änderungen im one-by-one Modus übernommen.
+ AWS DMS unterstützt Autonomous DB auf Oracle Cloud Infrastructure (OCI) nicht.
+ Im transaktionalen Apply-Modus kann ein Oracle-Ziel DML-Anweisungen mit einer Größe von bis zu 32 KB verarbeiten. Dieses Limit ist zwar für viele Anwendungsfälle ausreichend, DML-Anweisungen mit einer Größe von mehr als 32 KB schlagen jedoch fehl und es wird folgende Fehlermeldung angezeigt: „ORA-01460: unimplemented or unreasonable conversion requested“. Um dieses Problem zu beheben, müssen Sie die Batch-Anwendungsfunktion aktivieren, indem Sie die Task-Einstellung auf setzen. `BatchApplyEnabled` `true` Batch Apply reduziert die Gesamtgröße der Anweisung, sodass Sie die Beschränkung von 32 KB umgehen können. Weitere Informationen finden Sie unter [Ziel-Metadaten-Aufgabeneinstellungen](CHAP_Tasks.CustomizingTasks.TaskSettings.TargetMetadata.md).
+ AWS DMS Das vollständige Laden von LOB-Tabellen über den direkten Pfad kann aufgrund besonderer Anforderungen an die Verarbeitung von LOB-Daten mit dem Fehler ORA-39777 fehlschlagen. Dieser Fehler tritt beim Laden des direkten Pfads auf und kann Migrationsaufgaben, die LOB-Spalten betreffen, unterbrechen. Um das Problem zu beheben, deaktivieren Sie die `useDirectPathFullLoad` Einstellung auf dem Zielendpunkt und wiederholen Sie den Ladevorgang.

## Benutzerkontoberechtigungen, die bei der Verwendung von Oracle als Ziel erforderlich sind
<a name="CHAP_Target.Oracle.Privileges"></a>

Um ein Oracle-Ziel in einer AWS Database Migration Service Aufgabe zu verwenden, gewähren Sie die folgenden Rechte in der Oracle-Datenbank. Sie erteilen diese Berechtigungen dem Benutzerkonto, das in den Oracle-Datenbankdefinitionen für AWS DMS angegeben wurde.
+ SELECT ANY TRANSACTION 
+ SELECT on V\$1NLS\$1PARAMETERS 
+ SELECT on V\$1TIMEZONE\$1NAMES 
+ SELECT on ALL\$1INDEXES 
+ SELECT on ALL\$1OBJECTS 
+ SELECT on DBA\$1OBJECTS
+ SELECT on ALL\$1TABLES 
+ SELECT on ALL\$1USERS 
+ SELECT on ALL\$1CATALOG 
+ SELECT on ALL\$1CONSTRAINTS 
+ SELECT on ALL\$1CONS\$1COLUMNS 
+ SELECT on ALL\$1TAB\$1COLS 
+ SELECT on ALL\$1IND\$1COLUMNS 
+ DROP ANY TABLE 
+ SELECT ANY TABLE
+ INSERT ANY TABLE 
+ UPDATE ANY TABLE
+ CREATE ANY VIEW
+ DROP ANY VIEW
+ CREATE ANY PROCEDURE
+ ALTER ANY PROCEDURE
+ DROP ANY PROCEDURE
+ CREATE ANY SEQUENCE
+ ALTER ANY SEQUENCE
+ DROP ANY SEQUENCE 
+ DELETE ANY TABLE

Erteilen Sie für die folgenden Anforderungen diese zusätzlichen Berechtigungen:
+ Um eine bestimmte Tabellenliste zu verwenden, weisen Sie den replizierten Tabellen die Berechtigungen SELECT und auch ALTER zu.
+ Damit ein Benutzer in einem Standardtabellenbereich eine Tabelle erstellen kann, erteilen Sie die Berechtigung GRANT UNLIMITED TABLESPACE.
+ Für die Anmeldung gewähren Sie die Berechtigung CREATE SESSION.
+ Wenn Sie einen direkten Pfad verwenden (Standard bei Volllast), `GRANT LOCK ANY TABLE to dms_user;`.
+ Wenn das Schema bei Verwendung des Tabellenvorbereitungsmodus „DROP and CREATE“ anders ist, `GRANT CREATE ANY INDEX to dms_user;`.
+ Bei einigen Szenarien mit Volllast können Sie die Option „DROP und CREATE Tabelle“ oder „TRUNCATE vor dem Laden“ wählen, wobei sich ein Zieltabellenschema vom DMS-Benutzer unterscheidet. Erteilen Sie in diesem Fall die Berechtigung DROP ANY TABLE.
+ Um Änderungen in Änderungstabellen oder einer Audit-Tabelle zu speichern, in der sich das Zieltabellenschema vom DMS-Benutzer unterscheidet, gewähren Sie CREATE ANY TABLE und CREATE ANY INDEX.
+ Um LOB-Spalten mit der Validierungsfunktion zu validieren, gewähren Sie dem DMS-Benutzer die `SYS.DBMS_CRYPTO` EXECUTE-Berechtigung.

### Für die Zieldatenbank sind Leserechte erforderlich AWS Database Migration Service
<a name="CHAP_Target.Oracle.Privileges.Read"></a>

Dem AWS DMS Benutzerkonto müssen Leseberechtigungen für die folgenden DBA-Tabellen gewährt werden:
+ SELECT on DBA\$1USERS
+ SELECT on DBA\$1TAB\$1PRIVS
+ SELECT on DBA\$1OBJECTS
+ SELECT on DBA\$1SYNONYMS
+ SELECT on DBA\$1SEQUENCES
+ SELECT on DBA\$1TYPES
+ SELECT on DBA\$1INDEXES
+ SELECT on DBA\$1TABLES
+ SELECT on DBA\$1TRIGGERS
+ SELECT on SYS.DBA\$1REGISTRY

Wenn eine der erforderlichen Berechtigungen V\$1xxx nicht erteilt werden kann, erteilen Sie sie V\$1\$1xxx.

### Bewertungen vor der Migration
<a name="CHAP_Target.Oracle.Privileges.Premigration"></a>

Um die unter [Bewertungen von Oracle](CHAP_Tasks.AssessmentReport.Oracle.md) Mit Oracle als Ziel aufgeführten Bewertungen vor der Migration verwenden zu können, müssen Sie dem im Zielendpunkt der Oracle-Datenbank angegebenen Benutzerkonto die folgenden Berechtigungen hinzufügen:

```
GRANT SELECT ON V_$INSTANCE TO dms_user;
GRANT EXECUTE ON SYS.DBMS_XMLGEN TO dms_user;
```

## Konfiguration einer Oracle-Datenbank als Ziel für AWS Database Migration Service
<a name="CHAP_Target.Oracle.Configuration"></a>

Bevor Sie eine Oracle-Datenbank als Datenmigrationsziel verwenden können, müssen Sie ein Oracle-Benutzerkonto für angeben AWS DMS. Das Benutzerkonto muss über read/write Berechtigungen für die Oracle-Datenbank verfügen, wie unter angegeben[Benutzerkontoberechtigungen, die bei der Verwendung von Oracle als Ziel erforderlich sind](#CHAP_Target.Oracle.Privileges).

## Endpunkteinstellungen bei Verwendung von Oracle als Ziel für AWS DMS
<a name="CHAP_Target.Oracle.ConnectionAttrib"></a>

Sie können Endpunkteinstellungen zum Konfigurieren Ihrer Oracle-Zieldatenbank verwenden, ähnlich wie Sie zusätzliche Verbindungsattribute verwenden. Sie geben die Einstellungen an, wenn Sie den Zielendpunkt mithilfe der AWS DMS Konsole oder mithilfe des `create-endpoint` Befehls in [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html), mit der `--oracle-settings '{"EndpointSetting": "value", ...}'` JSON-Syntax erstellen.

Die folgende Tabelle zeigt die Endpunkteinstellungen, die Sie mit Oracle als Ziel verwenden können.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/dms/latest/userguide/CHAP_Target.Oracle.html)

## Zieldatentypen für Oracle
<a name="CHAP_Target.Oracle.DataTypes"></a>

Eine Oracle-Zieldatenbank, die mit verwendet wird, AWS DMS unterstützt die meisten Oracle-Datentypen. Die folgende Tabelle zeigt die Oracle-Zieldatentypen, die bei der Verwendung unterstützt werden, AWS DMS sowie die Standardzuweisung von AWS DMS Datentypen. Weitere Informationen zum Anzeigen der Datentypen, die von der Quelle zugeordnet werden, finden Sie im Abschnitt für die Quelle, die Sie verwenden.


|  AWS DMS Datentyp  |  Oracle-Datentyp  | 
| --- | --- | 
|  BOOLEAN  |  NUMBER (1)  | 
|  BYTES  |  RAW (Länge)  | 
|  DATE  |  DATETIME  | 
|  TIME  | TIMESTAMP (0) | 
|  DATETIME  |  TIMESTAMP (Skalierung)  | 
|  INT1  | NUMBER (3) | 
|  INT2  |  NUMBER (5)  | 
|  INT4  | NUMBER (10) | 
|  INT8  |  NUMBER (19)  | 
|  NUMERIC  |  NUMBER (p,s)  | 
|  REAL4  |  FLOAT  | 
|  REAL8  | FLOAT | 
|  STRING  |  Mit Datumsangabe: DATE  Mit Zeitangabe: TIMESTAMP  Mit Zeitstempelangabe: TIMESTAMP  Mit Angabe von "timestamp\$1with\$1timezone": TIMESTAMP WITH TIMEZONE  Mit Angabe von "timestamp\$1with\$1local\$1timezone": TIMESTAMP WITH LOCAL TIMEZONE Mit Angabe von "interval\$1year\$1to\$1month": INTERVAL YEAR TO MONTH  Mit Angabe von "interval\$1day\$1to\$1second": INTERVAL DAY TO SECOND  Wenn Länge > 4000: CLOB In allen anderen Fällen: VARCHAR2 (Länge)  | 
|  UINT1  |  NUMBER (3)  | 
|  UINT2  |  NUMBER (5)  | 
|  UINT4  |  NUMBER (10)  | 
|  UINT8  |  NUMBER (19)  | 
|  WSTRING  |  Wenn Länge > 2000: NCLOB In allen anderen Fällen: NVARCHAR2 (Länge)  | 
|  BLOB  |  BLOB Um diesen Datentyp mit verwenden zu können AWS DMS, müssen Sie die Verwendung von BLOBs für eine bestimmte Aufgabe aktivieren. BLOB-Datentypen werden nur in Tabellen unterstützt, die einen Primärschlüssel enthalten.  | 
|  CLOB  |  CLOB Um diesen Datentyp mit zu verwenden AWS DMS, müssen Sie die Verwendung von CLOBs für eine bestimmte Aufgabe aktivieren. Bei Change Data Capture (CDC) unterstützt werden CLOB-Datentypen nur in Tabellen unterstützt, die einen Primärschlüssel enthalten. STRING Ein VARCHAR2 Oracle-Datentyp in der Quelle mit einer deklarierten Größe von mehr als 4000 Byte wird über den AWS DMS CLOB einem STRING auf dem Oracle-Ziel zugeordnet.  | 
|  NCLOB  |  NCLOB Um diesen Datentyp mit zu verwenden AWS DMS, müssen Sie die Verwendung von NCLOBs für eine bestimmte Aufgabe aktivieren. Bei CDC werden NCLOB-Datentypen nur in Tabellen unterstützt, die einen Primärschlüssel enthalten. WSTRING Ein VARCHAR2 Oracle-Datentyp in der Quelle mit einer deklarierten Größe von mehr als 4000 Byte wird über den AWS DMS NCLOB einem WSTRING auf dem Oracle-Ziel zugeordnet.   | 
| XMLTYPE |  Der XMLTYPE-Zieldatentyp ist nur für Replikationsaufgaben relevant. Oracle-to-Oracle Wenn die Quelldatenbank Oracle ist, werden die Quelldatentypen unverändert in der Oracle-Zieldatenbank repliziert. Beispiel: Ein XMLTYPE-Datentyp in der Quelldatenbank wird als XMLTYPE-Datentyp in der Zieldatenbank erstellt.  | 

# Verwenden einer Microsoft SQL Server-Datenbank als Ziel für AWS Database Migration Service
<a name="CHAP_Target.SQLServer"></a>

Sie können Daten mit Hilfe von zu Microsoft SQL Server-Datenbanken migrieren AWS DMS. Mit einer SQL Server-Datenbank als Ziel können Sie Daten aus einer anderen SQL Server-Datenbank oder einer der anderen unterstützten Datenbanken migrieren.

Informationen zu Versionen von SQL Server, die als Ziel AWS DMS unterstützt werden, finden Sie unter[Ziele für AWS DMS](CHAP_Introduction.Targets.md). 

AWS DMS unterstützt die lokalen und Amazon RDS-Editionen von Enterprise, Standard, Workgroup und Developer.

Weitere Informationen zur Arbeit mit AWS DMS und zu SQL Server-Zieldatenbanken finden Sie im Folgenden.

**Topics**
+ [Einschränkungen bei der Verwendung von SQL Server als Ziel für AWS Database Migration Service](#CHAP_Target.SQLServer.Limitations)
+ [Sicherheitsanforderungen bei der Verwendung von SQL Server als Ziel für AWS Database Migration Service](#CHAP_Target.SQLServer.Security)
+ [Endpunkteinstellungen bei Verwendung von SQL Server als Ziel für AWS DMS](#CHAP_Target.SQLServer.ConnectionAttrib)
+ [Zieldatentypen für Microsoft SQL Server](#CHAP_Target.SQLServer.DataTypes)

## Einschränkungen bei der Verwendung von SQL Server als Ziel für AWS Database Migration Service
<a name="CHAP_Target.SQLServer.Limitations"></a>

Die folgenden Einschränkungen gelten, wenn Sie eine SQL Server-Datenbank als Ziel für AWS DMS verwenden:
+ Wenn Sie eine SQL Server-Zieltabelle mit einer berechneten Spalte manuell erstellen, wird die Volllastreplikation bei Verwendung des BCP-Dienstprogramms zum Kopieren großer Datenmengen nicht unterstützt. Um eine Replikation mit vollständigem Ladevorgang zu verwenden, deaktivieren Sie das BCP-Laden, indem Sie das zusätzliche Verbindungsattribut (Extra Connection Attribute, ECA) `'useBCPFullLoad=false'` auf dem Endpunkt festlegen. Hinweise zur Einstellung von ECAs Endpunkten finden Sie unter[Erstellen der Quell- und Zielendpunkte](CHAP_Endpoints.Creating.md). Weitere Informationen zum Arbeiten mit BCP finden Sie in der [Microsoft SQL Server-Dokumentation](https://docs.microsoft.com/en-us/sql/relational-databases/import-export/import-and-export-bulk-data-by-using-the-bcp-utility-sql-server).
+  AWS DMS Ersetzt beim Replizieren von Tabellen mit räumlichen SQL Server-Datentypen (GEOMETRY und GEOGRAPHY) alle Raumbezugskennungen (SRID), die Sie möglicherweise eingefügt haben, durch die Standard-SRID. Die Standard-SRID für GEOMETRY ist 0 und für GEOGRAPHY 4326.
+ Temporäre Tabellen werden nicht unterstützt. Die Migration von temporären Tabellen ist mit einer reinen Replikationsaufgabe im transaktionalen Anwendungsmodus möglich, wenn diese Tabellen manuell auf dem Ziel erstellt werden.
+ Derzeit werden `boolean` Datentypen in einer PostgreSQL-Quelle als `bit` Datentyp mit inkonsistenten Werten in ein SQLServer Ziel migriert. 

  Führen Sie folgende Schritte aus, um dieses Problem zu umgehen:
  + Erstellen Sie die Tabelle vorab mit einem `VARCHAR(1)` Datentyp für die Spalte (oder lassen Sie AWS DMS die Tabelle erstellen). Dann lassen Sie die nachgeschaltete Verarbeitung ein „F“ als „False“ und ein „T“ als „True“ behandeln.
  + Um die nachgeschaltete Verarbeitung nicht ändern zu müssen, fügen Sie der Aufgabe eine Transformationsregel hinzu, um die „F“ -Werte in „0“ und die „T“ -Werte in „1“ zu ändern, und speichern Sie diese als SQL-Server-Bit-Datentyp.
+ AWS DMS unterstützt keine Änderungsverarbeitung, um die NULL-Zulässigkeit für Spalten festzulegen (unter Verwendung der `ALTER COLUMN [SET|DROP] NOT NULL` Klausel mit `ALTER TABLE` Anweisungen).
+ Windows-Authentifizierung wird nicht unterstützt.

## Sicherheitsanforderungen bei der Verwendung von SQL Server als Ziel für AWS Database Migration Service
<a name="CHAP_Target.SQLServer.Security"></a>

Im Folgenden werden die Sicherheitsanforderungen für die Verwendung AWS DMS mit einem Microsoft SQL Server-Ziel beschrieben:
+ Das AWS DMS Benutzerkonto muss mindestens die `db_owner` Benutzerrolle in der SQL Server-Datenbank haben, zu der Sie eine Verbindung herstellen.
+ Ein SQL Server-Systemadministrator muss diese Berechtigung allen AWS DMS -Benutzerkonten erteilen.

## Endpunkteinstellungen bei Verwendung von SQL Server als Ziel für AWS DMS
<a name="CHAP_Target.SQLServer.ConnectionAttrib"></a>

Sie können Endpunkteinstellungen zum Konfigurieren Ihrer SQL-Server-Zieldatenbank verwenden, ähnlich wie Sie zusätzliche Verbindungsattribute verwenden. Sie geben die Einstellungen an, wenn Sie den Zielendpunkt mithilfe der AWS DMS Konsole oder mithilfe des `create-endpoint` Befehls in [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html), mit der `--microsoft-sql-server-settings '{"EndpointSetting": "value", ...}'` JSON-Syntax erstellen.

Die folgende Tabelle zeigt die Endpunkteinstellungen, die Sie mit SQL Server als Ziel verwenden können.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/dms/latest/userguide/CHAP_Target.SQLServer.html)

## Zieldatentypen für Microsoft SQL Server
<a name="CHAP_Target.SQLServer.DataTypes"></a>

Die folgende Tabelle zeigt die Microsoft SQL Server-Zieldatentypen, die bei der Verwendung unterstützt werden, AWS DMS und die Standardzuordnung von AWS DMS Datentypen. Weitere Informationen zu AWS DMS Datentypen finden Sie unter[Datentypen für den AWS Database Migration Service](CHAP_Reference.DataTypes.md).


|  AWS DMS Datentyp  |  SQL Server-Datentyp  | 
| --- | --- | 
|  BOOLEAN  |  TINYINT  | 
|  BYTES  |  VARBINARY (Länge)  | 
|  DATE  |  Verwenden Sie für SQL Server 2008 und höher DATE. Verwenden Sie für frühere Versionen, wenn die Skalierung 3 oder weniger ist, DATETIME. Verwenden Sie in allen anderen Fällen VARCHAR (37).  | 
|  TIME  |  Verwenden Sie für SQL Server 2008 und höher DATETIME2 (%d). Verwenden Sie für frühere Versionen, wenn die Skalierung 3 oder weniger ist, DATETIME. Verwenden Sie in allen anderen Fällen VARCHAR (37).  | 
|  DATETIME  |  Verwenden Sie für SQL Server 2008 und höher DATETIME2 (scale).  Verwenden Sie für frühere Versionen, wenn die Skalierung 3 oder weniger ist, DATETIME. Verwenden Sie in allen anderen Fällen VARCHAR (37).  | 
|  INT1  | SMALLINT | 
|  INT2  |  SMALLINT  | 
|  INT4  | INT | 
|  INT8  |  BIGINT  | 
|  NUMERIC  |  NUMERIC (p,s)  | 
|  REAL4  |  REAL  | 
|  REAL8  | FLOAT | 
|  STRING  |  Wenn die Spalte eine Datums- oder Zeitspalte ist, gehen Sie wie folgt vor:  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/dms/latest/userguide/CHAP_Target.SQLServer.html) Wenn die Spalte keine Datums- oder Zeitspalte ist, verwenden Sie VARCHAR (Länge).  | 
|  UINT1  |  TINYINT  | 
|  UINT2  |  SMALLINT  | 
|  UINT4  |  INT  | 
|  UINT8  |  BIGINT  | 
|  WSTRING  |  NVARCHAR (Länge)  | 
|  BLOB  |  VARBINARY(max) IMAGE Um diesen Datentyp mit zu verwenden AWS DMS, müssen Sie die Verwendung von BLOBs für eine bestimmte Aufgabe aktivieren. AWS DMS unterstützt BLOB-Datentypen nur in Tabellen, die einen Primärschlüssel enthalten.  | 
|  CLOB  |  VARCHAR(max) Um diesen Datentyp mit zu verwenden AWS DMS, müssen Sie die Verwendung von CLOBs für eine bestimmte Aufgabe aktivieren. Bei Change Data Capture (CDC) unterstützt AWS DMS CLOB-Datentypen nur in Tabellen, die einen Primärschlüssel enthalten.  | 
|  NCLOB  |  NVARCHAR(max) Um diesen Datentyp mit zu verwenden AWS DMS, müssen Sie die Verwendung von NCLOBs für eine bestimmte Aufgabe aktivieren. AWS DMS Unterstützt während CDC NCLOB-Datentypen nur in Tabellen, die einen Primärschlüssel enthalten.  | 

# Verwendung einer PostgreSQL-Datenbank als Ziel für AWS Database Migration Service
<a name="CHAP_Target.PostgreSQL"></a>

Sie können Daten zu PostgreSQL-Datenbanken migrieren AWS DMS, indem Sie entweder eine andere PostgreSQL-Datenbank oder eine der anderen unterstützten Datenbanken verwenden. 

Hinweise zu Versionen von PostgreSQL, die als Ziel AWS DMS unterstützen, finden Sie unter. [Ziele für AWS DMS](CHAP_Introduction.Targets.md)

**Anmerkung**  
Amazon Aurora Serverless ist als Ziel für Amazon Aurora mit PostgreSQL-Kompatibilität verfügbar. Weitere Informationen zu Amazon Aurora Serverless finden Sie unter [Using Amazon Aurora Serverless v2](https://docs.aws.amazon.com//AmazonRDS/latest/AuroraUserGuide/aurora-serverless-v2.html) im *Amazon Aurora Aurora-Benutzerhandbuch*.
Aurora-Serverless-DB-Cluster sind nur von einer Amazon VPC aus zugänglich und können keine [öffentliche IP-Adresse](https://docs.aws.amazon.com//AmazonRDS/latest/AuroraUserGuide/aurora-serverless-v2.requirements.html) verwenden. Wenn Sie also eine Replikations-Instance in einer anderen Region als Aurora PostgreSQL Serverless haben möchten, müssen Sie [VPC-Peering](https://docs.aws.amazon.com//dms/latest/userguide/CHAP_ReplicationInstance.VPC.html#CHAP_ReplicationInstance.VPC.Configurations.ScenarioVPCPeer) konfigurieren. Prüfen Sie andernfalls die Verfügbarkeit von Aurora-PostgreSQL-Serverless-[Regionen](https://docs.aws.amazon.com//AmazonRDS/latest/AuroraUserGuide/Concepts.AuroraFeaturesRegionsDBEngines.grids.html#Concepts.Aurora_Fea_Regions_DB-eng.Feature.Serverless) und entscheiden Sie sich, eine dieser Regionen sowohl für Aurora PostgreSQL Serverless als auch für Ihre Replikations-Instance zu verwenden.
Die Babelfish-Funktion ist in Amazon Aurora integriert. Hierfür entstehen keine zusätzlichen Kosten. Weitere Informationen finden Sie unter [Verwendung von Babelfish für Aurora PostgreSQL als Ziel für AWS Database Migration Service](#CHAP_Target.PostgreSQL.Babelfish).

AWS DMS verfolgt einen table-by-table Ansatz bei der Migration von Daten von der Quelle zum Ziel in der Volllastphase. Die Tabellenreihenfolge kann während der Volllastphase nicht garantiert werden. Die Tabellen sind während der Vollastphase und während des Anwendens der zwischengespeicherten Transaktionen für einzelne Tabellen nicht synchron. Dies hat zur Folge, dass aktive referentielle Integritätseinschränkungen während der Volllastphase zu Aufgabenfehlern führen können.

In PostgreSQL werden Fremdschlüssel (referentielle Integritätseinschränkungen) mithilfe von Auslösern implementiert. AWS DMS Lädt während der Vollladephase jede Tabelle einzeln. Es wird ausdrücklich empfohlen, dass Sie Fremdschlüsseleinschränkungen während eines vollständigen Ladevorgangs mit einer der folgenden Methoden deaktivieren:
+ Deaktivieren Sie vorübergehend alle Auslöser aus der Instance und beenden Sie den vollständigen Ladevorgang.
+ Verwenden Sie den `session_replication_role`-Parameter in PostgreSQL.

Ein Auslöser kann sich zu jedem beliebigen Zeitpunkt in einem der folgenden Zustände befinden: `origin`, `replica`, `always` und `disabled`. Wenn der `session_replication_role`-Parameter auf `replica` gesetzt ist, sind nur Auslöser aktiv, die sich im Status `replica` befinden, und sie werden ausgelöst, wenn sie aufgerufen werden. Andernfalls bleiben die Auslöser inaktiv. 

PostgreSQL verfügt über einen ausfallsicheren Mechanismus, um zu verhindern, dass eine Tabelle gekürzt wird, auch dann, wenn `session_replication_role` festgelegt ist. Sie können diesen als Alternative zur Deaktivierung von Auslösern verwenden, um den vollständigen Ladevorgang abzuschließen. Legen Sie hierfür den Vorbereitungsmodus der Zieltabelle auf `DO_NOTHING` fest. Andernfalls schlagen DROP- und TRUNCATE-Operationen fehl, wenn Fremdschlüsseleinschränkungen bestehen.

In Amazon RDS können Sie diesen Parameter mithilfe einer Parametergruppe steuern/festlegen. Für eine PostgreSQL-Instance, die in Amazon EC2 ausgeführt wird, können Sie den Parameter direkt festlegen.



Weitere Informationen zur Arbeit mit einer PostgreSQL-Datenbank als Ziel für AWS DMS finden Sie in den folgenden Abschnitten: 

**Topics**
+ [Einschränkungen bei der Verwendung von PostgreSQL als Ziel für AWS Database Migration Service](#CHAP_Target.PostgreSQL.Limitations)
+ [Einschränkungen bei der Verwendung von Amazon Aurora PostgreSQL Limitless als Ziel für AWS Database Migration Service](#CHAP_Target.PostgreSQL.Aurora.Limitations)
+ [Sicherheitsanforderungen bei der Verwendung einer PostgreSQL-Datenbank als Ziel für AWS Database Migration Service](#CHAP_Target.PostgreSQL.Security)
+ [Endpunkteinstellungen und zusätzliche Verbindungsattribute (ECAs) bei Verwendung von PostgreSQL als Ziel für AWS DMS](#CHAP_Target.PostgreSQL.ConnectionAttrib)
+ [Zieldatentypen für PostgreSQL](#CHAP_Target.PostgreSQL.DataTypes)
+ [Verwendung von Babelfish für Aurora PostgreSQL als Ziel für AWS Database Migration Service](#CHAP_Target.PostgreSQL.Babelfish)

## Einschränkungen bei der Verwendung von PostgreSQL als Ziel für AWS Database Migration Service
<a name="CHAP_Target.PostgreSQL.Limitations"></a>

Bei der Verwendung einer PostgreSQL-Datenbank als Ziel für AWS DMS gelten die folgenden Einschränkungen:
+ Bei heterogenen Migrationen wird der JSON-Datentyp intern in den nativen CLOB-Datentyp konvertiert.
+ Wenn bei einer Migration von Oracle nach PostgreSQL eine Spalte in Oracle ein NULL-Zeichen (Hexadezimalwert U\$10000) enthält, wird das NULL-Zeichen in ein Leerzeichen AWS DMS umgewandelt (Hexadezimalwert U\$10020). Der Grund hierfür ist eine PostgreSQL-Einschränkung.
+ AWS DMS unterstützt keine Replikation in eine Tabelle mit einem eindeutigen Index, der mit der Coalesce-Funktion erstellt wurde.
+ Wenn Ihre Tabellen Sequenzen verwenden, aktualisieren Sie den Wert von `NEXTVAL` für jede Sequenz in der Zieldatenbank, nachdem Sie die Replikation aus der Quelldatenbank beendet haben. AWS DMS kopiert Daten aus Ihrer Quelldatenbank, migriert aber während der laufenden Replikation keine Sequenzen zur Zieldatenbank.

## Einschränkungen bei der Verwendung von Amazon Aurora PostgreSQL Limitless als Ziel für AWS Database Migration Service
<a name="CHAP_Target.PostgreSQL.Aurora.Limitations"></a>

Die folgenden Einschränkungen gelten, wenn Sie Amazon Aurora PostgreSQL Limitless als Ziel verwenden für: AWS DMS
+ AWS DMS Data Validation unterstützt Amazon Aurora PostgreSQL Limitless nicht.
+ AWS DMS migriert Quelltabellen als Standardtabellen, die nicht verteilt werden. Nach der Migration können Sie diese Standardtabellen in Limitless-Tabellen konvertieren, indem Sie dem offiziellen Konvertierungsleitfaden folgen.

## Sicherheitsanforderungen bei der Verwendung einer PostgreSQL-Datenbank als Ziel für AWS Database Migration Service
<a name="CHAP_Target.PostgreSQL.Security"></a>

Aus Sicherheitsgründen muss das für die Datenmigration verwendete Benutzerkonto ein registrierter Benutzer in einer PostgreSQL-Zieldatenbank sein.

Ihr PostgreSQL-Zielendpunkt erfordert Mindestbenutzerberechtigungen, um eine AWS DMS Migration durchzuführen. Weitere Informationen finden Sie in den folgenden Beispielen.

```
    CREATE USER newuser WITH PASSWORD 'your-password';
    ALTER SCHEMA schema_name OWNER TO newuser;
```

Oder

```
    GRANT USAGE ON SCHEMA schema_name TO myuser;
    GRANT CONNECT ON DATABASE postgres to myuser;
    GRANT CREATE ON DATABASE postgres TO myuser;
    GRANT CREATE ON SCHEMA schema_name TO myuser;
    GRANT UPDATE, INSERT, SELECT, DELETE, TRUNCATE ON ALL TABLES IN SCHEMA schema_name TO myuser;
    GRANT TRUNCATE ON schema_name."BasicFeed" TO myuser;
```

## Endpunkteinstellungen und zusätzliche Verbindungsattribute (ECAs) bei Verwendung von PostgreSQL als Ziel für AWS DMS
<a name="CHAP_Target.PostgreSQL.ConnectionAttrib"></a>

Sie können Endpunkteinstellungen und Zusätzliche Verbindungsattribute (ECAs) verwenden, um Ihre PostgreSQL-Zieldatenbank zu konfigurieren. 

Sie geben die Einstellungen an, wenn Sie den Zielendpunkt mithilfe der AWS DMS Konsole oder mithilfe des `create-endpoint` Befehls in der mit der [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html)`--postgre-sql-settings '{"EndpointSetting": "value", ...}'`JSON-Syntax erstellen.

Sie geben dies ECAs mithilfe des `ExtraConnectionAttributes` Parameters für Ihren Endpunkt an.

Die folgende Tabelle zeigt die Endpunkteinstellungen, die Sie mit PostgreSQL als Ziel verwenden können.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/dms/latest/userguide/CHAP_Target.PostgreSQL.html)

## Zieldatentypen für PostgreSQL
<a name="CHAP_Target.PostgreSQL.DataTypes"></a>

Der PostgreSQL-Datenbankendpunkt für AWS DMS unterstützt die meisten PostgreSQL-Datenbankdatentypen. Die folgende Tabelle zeigt die Zieldatentypen der PostgreSQL-Datenbank, die bei der Verwendung unterstützt werden, AWS DMS und die Standardzuordnung von AWS DMS Datentypen.

Weitere Hinweise zu AWS DMS Datentypen finden Sie unter. [Datentypen für den AWS Database Migration Service](CHAP_Reference.DataTypes.md)


|  AWS DMS Datentyp  |  PostgreSQL-Datentyp  | 
| --- | --- | 
|  BOOLEAN  |  BOOLEAN  | 
|  BLOB  |  BYTEA  | 
|  BYTES  |  BYTEA  | 
|  DATE  |  DATE  | 
|  TIME  |  TIME  | 
|  DATETIME  |  Wenn die Skalierung 0 bis 6 ist, verwenden Sie TIMESTAMP. Wenn die Skalierung 7 bis 9 ist, verwenden Sie VARCHAR (37).  | 
|  INT1  |  SMALLINT  | 
|  INT2  |  SMALLINT  | 
|  INT4  |  INTEGER  | 
|  INT8  |  BIGINT  | 
|  NUMERIC   |  DECIMAL (P,S)  | 
|  REAL4  |  FLOAT4  | 
|  REAL8  |  FLOAT8  | 
|  STRING  |  Ist die Länge 1 bis 21.845, verwenden Sie VARCHAR (Länge in Byte).  Ist die Länge 21.846 bis 2.147.483.647, verwenden Sie VARCHAR (65535).  | 
|  UINT1  |  SMALLINT  | 
|  UINT2  |  INTEGER  | 
|  UINT4  |  BIGINT  | 
|  UINT8  |  BIGINT  | 
|  WSTRING  |  Ist die Länge 1 bis 21.845, verwenden Sie VARCHAR (Länge in Byte).  Ist die Länge 21.846 bis 2.147.483.647, verwenden Sie VARCHAR (65535).  | 
|  NCLOB  |  TEXT  | 
|  CLOB  |  TEXT  | 

**Anmerkung**  
 AWS DMS Erstellt bei der Replikation aus einer PostgreSQL-Quelle die Zieltabelle mit den gleichen Datentypen für alle Spalten, mit Ausnahme von Spalten mit benutzerdefinierten Datentypen. In solchen Fällen wird der Datentyp als "character varying" im Ziel erstellt.

## Verwendung von Babelfish für Aurora PostgreSQL als Ziel für AWS Database Migration Service
<a name="CHAP_Target.PostgreSQL.Babelfish"></a>

Sie können SQL-Server-Quelltabellen unter Verwendung von AWS Database Migration Service zu einem Babelfish-für-Amazon-Aurora-PostgreSQL-Ziel migrieren. Mithilfe von Babelfish versteht Aurora PostgreSQL T-SQL, den proprietären SQL-Dialekt von Microsoft SQL Server, und unterstützt dasselbe Kommunikationsprotokoll. Somit können für SQL Server geschriebene Anwendungen jetzt mit weniger Codeänderungen mit Aurora verwendet werden. Die Babelfish-Funktion ist in Amazon Aurora integriert. Hierfür entstehen keine zusätzlichen Kosten. Sie können Babelfish über die Amazon-RDS-Konsole in Ihrem Amazon-Aurora-Cluster aktivieren.

**Wenn Sie Ihren AWS DMS Zielendpunkt mithilfe der AWS DMS Konsolen-, API- oder CLI-Befehle erstellen, geben Sie als Ziel-Engine **Amazon Aurora PostgreSQL** an und nennen Sie die Datenbank babelfish\$1db.** Fügen Sie im Abschnitt **Endpunkteinstellungen** Einstellungen hinzu, um für `DatabaseMode` `Babelfish`und für `BabelfishDatabaseName` den Namen der Babelfish-T-SQL-Zieldatenbank festzulegen.

### Hinzufügen von Transformationsregeln zu Ihrer Migrationsaufgabe
<a name="CHAP_Target.PostgreSQL.Babelfish.transform"></a>

Wenn Sie eine Migrationsaufgabe für ein Babelfish-Ziel definieren, müssen Sie Transformationsregeln einbeziehen, die sicherstellen, dass DMS die vorab erstellten T-SQL-Babelfish-Tabellen in der Zieldatenbank verwendet.

Fügen Sie Ihrer Migrationsaufgabe zunächst eine Transformationsregel hinzu, die alle Tabellennamen in Kleinbuchstaben umschreibt. Babelfish speichert die Namen von Tabellen, die Sie mit T-SQL erstellen, in Kleinbuchstaben im PostgreSQL-Katalog `pg_class`. Wenn Sie jedoch über SQL-Server-Tabellen mit Namen in Groß- und Kleinschreibung verfügen, erstellt DMS die Tabellen unter Verwendung von systemeigenen PostgreSQL-Datentypen anstelle der T-SQL-kompatiblen Datentypen. Aus diesem Grund sollten Sie unbedingt eine Transformationsregel hinzufügen, die alle Tabellennamen in Kleinbuchstaben umschreibt. Beachten Sie, dass Spaltennamen nicht in Kleinbuchstaben umgewandelt werden sollten.

Wenn Sie bei der Definition Ihres Clusters den Migrationsmodus für mehrere Datenbanken verwendet haben, fügen Sie als Nächstes eine Transformationsregel hinzu, die das ursprüngliche SQL-Server-Schema umbenennt. Achten Sie darauf, das SQL-Server-Schema so umzubenennen, dass der Name den Namen der T-SQL-Datenbank beinhaltet. Wenn der ursprüngliche SQL Server-Schemaname beispielsweise dbo lautet und Ihr T-SQL-Datenbankname mydb lautet, benennen Sie das Schema mithilfe einer Transformationsregel in mydb\$1dbo um.

**Anmerkung**  
Wenn Sie Babelfish für Aurora PostgreSQL 16 oder höher verwenden, ist der Standard-Migrationsmodus „Mutidatabase“. Achten Sie bei der Ausführung von DMS-Migrationsaufgaben darauf, den Parameter für den Migrationsmodus zu überprüfen und die Transformationsregeln bei Bedarf zu aktualisieren.

Wenn Sie den Einzeldatenbankmodus verwenden, benötigen Sie keine Transformationsregel, um Schemanamen umzubenennen. Schemanamen haben eine one-to-one Zuordnung zur T-SQL-Zieldatenbank in Babelfish.

Die folgende Beispieltransformationsregel schreibt alle Tabellennamen in Kleinbuchstaben um und benennt den ursprünglichen SQL-Server-Schemanamen von `dbo` in `mydb_dbo` um.

```
{
   "rules": [
   {
      "rule-type": "transformation",
      "rule-id": "566251737",
      "rule-name": "566251737",
      "rule-target": "schema",
      "object-locator": {
         "schema-name": "dbo"
      },
      "rule-action": "rename",
      "value": "mydb_dbo",
      "old-value": null
   },
   {
      "rule-type": "transformation",
      "rule-id": "566139410",
      "rule-name": "566139410",
      "rule-target": "table",
      "object-locator": {
         "schema-name": "%",
         "table-name": "%"
      },
      "rule-action": "convert-lowercase",
      "value": null,
      "old-value": null
   },
   {
      "rule-type": "selection",
      "rule-id": "566111704",
      "rule-name": "566111704",
      "object-locator": {
         "schema-name": "dbo",
         "table-name": "%"
      },
      "rule-action": "include",
      "filters": []
   }
]
}
```

### Einschränkungen bei der Verwendung eines PostgreSQL-Zielendpunkts mit Babelfish-Tabellen
<a name="CHAP_Target.PostgreSQL.Babelfish.limitations"></a>

Bei der Verwendung eines PostgreSQL-Zielendpunkts mit Babelfish-Tabellen gelten folgende Einschränkungen:
+ Verwenden Sie für den **Zieltabellen-Vorbereitungsmodus** nur die Modi **Nichts unternehmen** oder **Kürzen**. Verwenden Sie nicht den Modus **Tabellen am Ziel ablegen**. In diesem Modus erstellt DMS die Tabellen als PostgreSQL-Tabellen, die T-SQL möglicherweise nicht erkennt.
+ AWS DMS unterstützt den Datentyp sql\$1variant nicht.
+ Babelfish unter dem Postgres-Endpunkt unterstützt keine Datentypen `HEIRARCHYID` `GEOMETRY` (vor 3.5.4) und `GEOGRAPHY` (vor 3.5.4). Um diese Datentypen zu migrieren, können Sie Transformationsregeln hinzufügen, um den Datentyp in wstring (250) zu konvertieren.
+ Babelfish unterstützt nur die Migration der Datentypen `BINARY`, `VARBINARY` und `IMAGE` unter Verwendung des Datentyps `BYTEA`. Für frühere Versionen von Aurora PostgreSQL können Sie DMS verwenden, um diese Tabellen zu einem [Babelfish-Zielendpunkt](CHAP_Target.Babelfish.md) zu migrieren. Sie müssen keine Länge für den Datentyp `BYTEA` angeben, wie im folgenden Beispiel zu sehen.

  ```
  [Picture] [VARBINARY](max) NULL
  ```

  Ändern Sie den vorherigen T-SQL-Datentyp in den von T-SQL unterstützten Datentyp `BYTEA`.

  ```
  [Picture] BYTEA NULL
  ```
+ Wenn Sie in früheren Versionen von Aurora PostgreSQL Babelfish eine Migrationsaufgabe für die laufende Replikation von SQL Server zu Babelfish unter Verwendung des PostgreSQL-Zielendpunkts erstellen, müssen Sie den Datentyp `SERIAL` allen Tabellen zuweisen, die Spalten `IDENTITY` verwenden. Ab Aurora PostgreSQL (Version 15.3/14.8 und höher) und Babelfish (Version 3.2.0 und höher) wird die Identitätsspalte unterstützt und es ist nicht mehr erforderlich, den Datentyp SERIAL zuzuweisen. Weitere Informationen finden Sie unter [Verwendung von SERIAL](https://docs.aws.amazon.com/dms/latest/sql-server-to-aurora-postgresql-migration-playbook/chap-sql-server-aurora-pg.tsql.sequences..html) im Abschnitt zu Sequenzen und Identität des *Playbooks zur Migration von SQL Server zu Aurora PostgreSQL*. Wenn Sie dann die Tabelle in Babelfish erstellen, ändern Sie die Spaltendefinition der folgenden Angabe.

  ```
      [IDCol] [INT] IDENTITY(1,1) NOT NULL PRIMARY KEY
  ```

  Ändern Sie die vorherige Angabe in Folgendes.

  ```
      [IDCol] SERIAL PRIMARY KEY
  ```

  Das Babelfish-kompatible Aurora PostgreSQL erstellt eine Sequenz mit der Standardkonfiguration und fügt der Spalte eine Einschränkung `NOT NULL` hinzu. Die neu erstellte Sequenz verhält sich wie eine reguläre Sequenz (um 1 erhöht) und enthält keine zusammengesetzte Option `SERIAL`.
+ Nachdem Sie Daten mit Tabellen migriert haben, die Spalten `IDENTITY` oder den Datentyp `SERIAL` verwenden, setzen Sie das PostgreSQL-basierte Sequenzobjekt auf der Grundlage des Maximalwerts für die Spalte zurück. Wenn die Tabellen vollständig geladen sind, verwenden Sie die folgende T-SQL-Abfrage, um Anweisungen zu generieren, um das zugehörige Sequenzobjekt zu setzen.

  ```
  DECLARE @schema_prefix NVARCHAR(200) = ''
  
  IF current_setting('babelfishpg_tsql.migration_mode') = 'multi-db'
          SET @schema_prefix = db_name() + '_'
  
  SELECT 'SELECT setval(pg_get_serial_sequence(''' + @schema_prefix + schema_name(tables.schema_id) + '.' + tables.name + ''', ''' + columns.name + ''')
                 ,(select max(' + columns.name + ') from ' + schema_name(tables.schema_id) + '.' + tables.name + '));'
  FROM sys.tables tables
  JOIN sys.columns columns ON tables.object_id = columns.object_id
  WHERE columns.is_identity = 1
  
  UNION ALL
  
  SELECT 'SELECT setval(pg_get_serial_sequence(''' + @schema_prefix + table_schema + '.' + table_name + ''', 
  ''' + column_name + '''),(select max(' + column_name + ') from ' + table_schema + '.' + table_name + '));'
  FROM information_schema.columns
  WHERE column_default LIKE 'nextval(%';
  ```

  Die Abfrage generiert eine Reihe von SELECT-Anweisungen, die Sie ausführen, um die maximalen IDENTITY- und SERIAL-Werte zu aktualisieren.
+ Bei Babelfish-Versionen vor 3.2 kann **Vollständiger LOB-Modus** zu einem Tabellenfehler führen. Erstellen Sie in diesem Fall eine separate Aufgabe für die Tabellen, die nicht geladen werden konnten. Verwenden Sie dann **Limitierter LOB-Modus**, um den entsprechenden Wert für **Maximale LOB-Größe (KB)** anzugeben. Eine weitere Option besteht darin, für das SQL-Server-Endpunkt-Verbindungsattribut die Einstellung `ForceFullLob=True` festzulegen.
+ Bei Babelfish-Versionen vor 3.2 wird bei der Datenvalidierung mit Babelfish-Tabellen, die keine auf Ganzzahlen basierenden Primärschlüssel verwenden, eine Meldung generiert, dass kein geeigneter eindeutiger Schlüssel gefunden werden kann. Ab Aurora PostgreSQL (Version 15.3/14.8 und höher) und Babelfish (Version 3.2.0 und höher) wird die Datenvalidierung für nicht ganzzahlige Primärschlüssel unterstützt. 
+ Aufgrund von Genauigkeitsunterschieden bei der Anzahl der Dezimalstellen für Sekunden meldet DMS Datenvalidierungsfehler für Babelfish-Tabellen, die Datentypen `DATETIME` verwenden. Um diese Fehler zu unterdrücken, können Sie den folgenden Validierungsregeltyp für Datentypen `DATETIME` hinzufügen.

  ```
  {
           "rule-type": "validation",
           "rule-id": "3",
           "rule-name": "3",
           "rule-target": "column",
           "object-locator": {
               "schema-name": "dbo",
               "table-name": "%",
               "column-name": "%",
               "data-type": "datetime"
           },
           "rule-action": "override-validation-function",
           "source-function": "case when ${column-name} is NULL then NULL else 0 end",
           "target-function": "case when ${column-name} is NULL then NULL else 0 end"
       }
  ```

# Verwendung einer MySQL-kompatiblen Datenbank als Ziel für AWS Database Migration Service
<a name="CHAP_Target.MySQL"></a>

Sie können Daten mit AWS DMS jeder der unterstützten Quell-Daten-Engines in jede MySQL-kompatible Datenbank migrieren. AWS DMS Wenn Sie zu einer lokalen MySQL-kompatiblen Datenbank migrieren, AWS DMS muss sich Ihre Quell-Engine innerhalb des Ökosystems befinden. AWS Die Engine kann sich in einem AWS verwalteten Service wie Amazon RDS, Amazon Aurora oder Amazon S3 befinden. Alternativ kann sich die Engine in einer selbstverwalteten Datenbank auf Amazon EC2 befinden. 

Sie können mit SSL Verbindungen zwischen Ihrem MySQL-kompatiblen Endpunkt und der Replikations-Instance verschlüsseln. Weitere Informationen zur Verwendung von SSL mit einem MySQL-kompatiblen Endpunkt finden Sie unter [Verwenden von SSL mit AWS Database Migration Service](CHAP_Security.SSL.md). 

Hinweise zu Versionen von MySQL, die als Ziel AWS DMS unterstützen, finden Sie unter[Ziele für AWS DMS](CHAP_Introduction.Targets.md).

Sie können die folgenden MySQL-kompatiblen Datenbanken als Ziele verwenden für: AWS DMS
+ MySQL Community Edition
+ MySQL Standard Edition
+ MySQL Enterprise Edition
+ MySQL Cluster Carrier Grade Edition
+ MariaDB Community Edition
+ MariaDB Enterprise Edition
+ MariaDB Column Store
+ Amazon Aurora MySQL

**Anmerkung**  
Unabhängig von der Quell-Speicher-Engine (MyISAM, MEMORY usw.) erstellt AWS DMS eine MySQL-kompatible Zieltabelle standardmäßig als InnoDB-Tabelle.   
Wenn Sie eine Tabelle benötigen, die eine andere Speicher-Engine als InnoDB verwendet, können Sie die Tabelle in der MySQL-kompatiblen Zieldatenbank manuell erstellen und die Tabelle mithilfe des Modus **Nichts unternehmen** migrieren. Weitere Informationen finden Sie unter [Aufgabeneinstellungen für vollständiges Laden](CHAP_Tasks.CustomizingTasks.TaskSettings.FullLoad.md).

Weitere Details zum Arbeiten mit einer MySQL-kompatiblen Datenbank als Ziel für AWS DMS finden Sie in den folgenden Abschnitten. 

**Topics**
+ [Verwendung einer beliebigen MySQL-kompatiblen Datenbank als Ziel für AWS Database Migration Service](#CHAP_Target.MySQL.Prerequisites)
+ [Einschränkungen bei der Verwendung einer MySQL-kompatiblen Datenbank als Ziel für AWS Database Migration Service](#CHAP_Target.MySQL.Limitations)
+ [Endpunkteinstellungen bei Verwendung einer MySQL-kompatiblen Datenbank als Ziel für AWS DMS](#CHAP_Target.MySQL.ConnectionAttrib)
+ [Zieldatentypen für MySQL](#CHAP_Target.MySQL.DataTypes)

## Verwendung einer beliebigen MySQL-kompatiblen Datenbank als Ziel für AWS Database Migration Service
<a name="CHAP_Target.MySQL.Prerequisites"></a>

Bevor Sie mit einer MySQL-kompatiblen Datenbank als Ziel für AWS DMS arbeiten, stellen Sie sicher, dass Sie die folgenden Voraussetzungen erfüllt haben:
+ Geben Sie ein Benutzerkonto an AWS DMS , das über read/write Rechte für die MySQL-kompatible Datenbank verfügt. Führen Sie die folgenden Befehle aus, um die erforderlichen Berechtigungen zu erstellen.

  ```
  CREATE USER '<user acct>'@'%' IDENTIFIED BY '<user password>';
  GRANT ALTER, CREATE, DROP, INDEX, INSERT, UPDATE, DELETE, SELECT, CREATE TEMPORARY TABLES  ON <schema>.* TO 
  '<user acct>'@'%';
  GRANT ALL PRIVILEGES ON awsdms_control.* TO '<user acct>'@'%';
  ```
+ Während der Volllast-Migrationsphase müssen Sie Fremdschlüssel in Ihren Zieltabellen deaktivieren. Um Fremdschlüsselprüfungen in einer MySQL-kompatiblen Datenbank während eines vollen Ladevorgangs zu deaktivieren, können Sie den folgenden Befehl zum Abschnitt **Zusätzliche Verbindungsattribute** der AWS DMS Konsole für Ihren Zielendpunkt hinzufügen.

  ```
  Initstmt=SET FOREIGN_KEY_CHECKS=0;
  ```
+ Legen Sie den Datenbankparameter `local_infile = 1` fest, um AWS DMS das Laden von Daten in die Zieldatenbank zu ermöglichen.
+ Erteilen Sie die folgenden Berechtigungen, wenn Sie MySQL-spezifische Bewertungen vor der Migration verwenden.

  ```
  grant select on mysql.user to <dms_user>;
  grant select on mysql.db to <dms_user>;
  grant select on mysql.tables_priv to <dms_user>;
  grant select on mysql.role_edges to <dms_user>  #only for MySQL version 8.0.11 and higher
  ```

## Einschränkungen bei der Verwendung einer MySQL-kompatiblen Datenbank als Ziel für AWS Database Migration Service
<a name="CHAP_Target.MySQL.Limitations"></a>

Wenn Sie eine MySQL-Datenbank als Ziel verwenden, unterstützt Folgendes AWS DMS nicht:
+ Die DDL-Anweisungen (Data Definition Language) TRUNCATE PARTITION, DROP TABLE und RENAME TABLE.
+ Verwenden einer `ALTER TABLE table_name ADD COLUMN column_name`-Anweisung zum Hinzufügen von Spalten an den Anfang oder in die Mitte einer Tabelle
+ Beim Laden von Daten in ein MySQL-kompatibles Ziel in einer Vollladeaufgabe werden AWS DMS keine Fehler gemeldet, die durch Einschränkungen in den Task-Logs verursacht werden, was zu doppelten Schlüsselfehlern oder Nichtübereinstimmungen mit der Anzahl der Datensätze führen kann. Dies ist auf die Art und Weise zurückzuführen, wie MySQL lokale Daten mit dem Befehl `LOAD DATA` behandelt. Während der Volllastphase müssen Sie folgende Schritte ausführen: 
  + Einschränkungen deaktivieren
  + Stellen Sie mithilfe der AWS DMS Validierung sicher, dass die Daten konsistent sind.
+ Wenn Sie den Wert einer Spalte auf den vorhandenen Wert aktualisieren, geben MySQL-kompatible Datenbanken die Warnung `0 rows affected` zurück. Obwohl dieses Verhalten technisch gesehen kein Fehler ist, unterscheidet es sich von der Art und Weise, wie andere Datenbank-Engines mit solchen Fällen umgehen. Oracle führt beispielsweise eine Aktualisierung einer Zeile durch. AWS DMS Generiert für MySQL-kompatible Datenbanken einen Eintrag in der Steuertabelle awsdms\$1apply\$1exceptions und protokolliert die folgende Warnung.

  ```
  Some changes from the source database had no impact when applied to
  the target database. See awsdms_apply_exceptions table for details.
  ```
+ Aurora Serverless ist als Ziel für Amazon Aurora Version 2, kompatibel mit MySQL Version 5.7, verfügbar. (Wählen Sie Aurora-MySQL-Version 2.07.1 aus, um Aurora Serverless mit MySQL-5.7-Kompatibilität verwenden zu können.) Weitere Informationen zu Aurora Serverless finden Sie unter [Using Aurora Serverless v2](https://docs.aws.amazon.com//AmazonRDS/latest/AuroraUserGuide/aurora-serverless-v2.html) im *Amazon Aurora Aurora-Benutzerhandbuch*.
+ AWS DMS unterstützt nicht die Verwendung eines Reader-Endpunkts für Aurora oder Amazon RDS, es sei denn, die Instances befinden sich im Schreibmodus, d. h. die `innodb_read_only` Parameter `read_only` und sind auf `0` oder `OFF` gesetzt. Weitere Informationen zur Verwendung von Amazon RDS und Aurora als Ziele finden Sie in folgenden Themen:
  +  [ Feststellen, mit welcher DB-Instance Sie verbunden sind](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.BestPractices.html#AuroraMySQL.BestPractices.DeterminePrimaryInstanceConnection) 
  +  [ Aktualisieren von Lesereplikaten mit MySQL](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_MySQL.Replication.ReadReplicas.html#USER_MySQL.Replication.ReadReplicas.Updates) 
+ Bei der Replikation des TIME-Datentyps wird der Bruchteil des Zeitwerts nicht repliziert.
+ Bei der Replikation des TIME-Datentyps mit dem zusätzlichen Verbindungsattribut ist der Zeitwert auf den Bereich `loadUsingCSV=false` begrenzt. `[00:00:00, 23:59:59]`

## Endpunkteinstellungen bei Verwendung einer MySQL-kompatiblen Datenbank als Ziel für AWS DMS
<a name="CHAP_Target.MySQL.ConnectionAttrib"></a>

Sie können Endpunkteinstellungen zum Konfigurieren Ihrer MySQL-kompatiblen Zieldatenbank verwenden, ähnlich wie Sie zusätzliche Verbindungsattribute verwenden. Sie geben die Einstellungen an, wenn Sie den Zielendpunkt mithilfe der AWS DMS Konsole oder mithilfe des `create-endpoint` Befehls in [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html), mit der `--my-sql-settings '{"EndpointSetting": "value", ...}'` JSON-Syntax erstellen.

Die folgende Tabelle zeigt die Endpunkteinstellungen, die Sie mit MySQL als Ziel verwenden können.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/dms/latest/userguide/CHAP_Target.MySQL.html)

Sie können auch zusätzliche Verbindungsattribute verwenden, um Ihre MySQL-kompatible Zieldatenbank zu konfigurieren.

Die folgende Tabelle zeigt die zusätzlichen Verbindungsattribute, die Sie verwenden können, wenn MySQL das Ziel ist.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/dms/latest/userguide/CHAP_Target.MySQL.html)

Alternativ können Sie den Parameter `AfterConnectScript` des Befehls `--my-sql-settings` verwenden, um Fremdschlüsselprüfungen zu deaktivieren und die Zeitzone für Ihre Datenbank anzugeben.

## Zieldatentypen für MySQL
<a name="CHAP_Target.MySQL.DataTypes"></a>

Die folgende Tabelle zeigt die Zieldatentypen der MySQL-Datenbank, die bei der Verwendung unterstützt werden, AWS DMS und die Standardzuweisung von AWS DMS Datentypen.

Weitere Hinweise zu AWS DMS Datentypen finden Sie unter[Datentypen für den AWS Database Migration Service](CHAP_Reference.DataTypes.md).


|  AWS DMS Datentypen  |  MySQL-Datentypen  | 
| --- | --- | 
|  BOOLEAN  |  BOOLEAN  | 
|  BYTES  |  Ist die Länge 1 bis 65.535, verwenden Sie VARBINARY (Länge).  Ist die Länge 65.536 bis 2.147.483.647, verwenden Sie LONGLOB.  | 
|  DATE  |  DATE  | 
|  TIME  |  TIME  | 
|  TIMESTAMP (ZEITSTEMPEL)  |  Ist die Skalierung => 0 und =< 6, dann: DATETIME (Skalierung) Ist die Skalierung => 7 und =< 9, dann: VARCHAR (37)  | 
|  INT1  |  TINYINT  | 
|  INT2  |  SMALLINT  | 
|  INT4  |  INTEGER  | 
|  INT8  |  BIGINT  | 
|  NUMERIC  |  DECIMAL (p,s)  | 
|  REAL4  |  FLOAT  | 
|  REAL8  |  DOUBLE PRECISION  | 
|  STRING  |  Ist die Länge 1 bis 21.845, verwenden Sie VARCHAR (Länge). Ist die Länge 21.846 bis 2.147.483.647, verwenden Sie LONGTEXT.  | 
|  UINT1  |  UNSIGNED TINYINT  | 
|  UINT2  |  UNSIGNED SMALLINT  | 
|  UINT4  |  UNSIGNED INTEGER  | 
|  UINT8  |  UNSIGNED BIGINT  | 
|  WSTRING  |  Ist die Länge 1 bis 32.767, verwenden Sie VARCHAR (Länge).  Ist die Länge 32.768 bis 2.147.483.647, verwenden Sie LONGTEXT.  | 
|  BLOB  |  Ist die Länge 1 bis 65.535, verwenden Sie BLOB. Ist die Länge 65.536 bis 2.147.483.647, verwenden Sie LONGBLOB. Ist die Länge 0, verwenden Sie LONGBLOB (vollständige LOB-Unterstützung).  | 
|  NCLOB  |  Ist die Länge 1 bis 65.535, verwenden Sie TEXT. Ist die Länge 65.536 bis 2.147.483.647, verwenden Sie LONGTEXT mit ucs2 für CHARACTER SET. Ist die Länge 0, verwenden Sie LONGTEXT (vollständige LOB-Unterstützung) mit ucs2 für CHARACTER SET.  | 
|  CLOB  |  Ist die Länge 1 bis 65.535, verwenden Sie TEXT. Ist die Länge 65.536 bis 2.147.483.647, verwenden Sie LONGTEXT. Ist die Länge 0, verwenden Sie LONGTEXT (vollständige LOB-Unterstützung).  | 

# Verwenden einer Amazon Redshift Redshift-Datenbank als Ziel für AWS Database Migration Service
<a name="CHAP_Target.Redshift"></a>

Sie können Daten zu Amazon Redshift Redshift-Datenbanken migrieren mit AWS Database Migration Service. Amazon Redshift ist ein vollständig verwalteter Data-Warehouse-Service in Petabytegröße in der Cloud. Mit einer Amazon-Redshift-Datenbank als Ziel können Sie Daten aus allen anderen unterstützten Quelldatenbanken migrieren.

Sie können Amazon Redshift Serverless als Ziel für verwenden. AWS DMS Weitere Informationen finden Sie unter [Verwendung AWS DMS mit Amazon Redshift Serverless als ZielAmazon Redshift Serverless](#CHAP_Target.Redshift.RSServerless).

 Der Amazon Redshift Redshift-Cluster muss sich im selben AWS Konto und in derselben AWS Region wie die Replikationsinstanz befinden. 

Verschiebt während einer Datenbankmigration zu Amazon Redshift AWS DMS zunächst Daten in einen Amazon S3 S3-Bucket. Wenn sich die Dateien in einem Amazon S3 S3-Bucket befinden, AWS DMS werden sie in die richtigen Tabellen im Amazon Redshift Data Warehouse übertragen. AWS DMS erstellt den S3-Bucket in derselben AWS Region wie die Amazon Redshift Redshift-Datenbank. Die AWS DMS Replikationsinstanz muss sich in derselben AWS Region befinden. 

Wenn Sie die AWS CLI oder DMS-API verwenden, um Daten zu Amazon Redshift zu migrieren, richten Sie eine AWS Identity and Access Management (IAM-) Rolle ein, um den S3-Zugriff zu ermöglichen. Weitere Informationen zum Erstellen dieser IAM-Rolle finden Sie unter [Die IAM-Rollen zur Verwendung mit erstellen AWS DMS](security-iam.md#CHAP_Security.APIRole).

Der Amazon-Redshift-Endpunkt bietet eine vollständige Automatisierung für die folgenden Aufgaben:
+ Schemagenerierung und Datentypzuweisung
+ Vollständiges Laden von Quelldatenbanktabellen
+ Inkrementelles Laden der an Quelltabellen vorgenommenen Änderungen
+ Anwendung von Schemaänderungen in DDL (Data Definition Language), die an Quelltabellen vorgenommen wurden
+ Synchronisierung zwischen vollständigen Ladevorgängen und CDC-Prozessen (Change Data Capture, Erfassung von Änderungsdaten)

AWS Database Migration Service unterstützt sowohl Volllast- als auch Änderungsverarbeitungsvorgänge. AWS DMS liest die Daten aus der Quelldatenbank und erstellt eine Reihe von Dateien mit kommagetrennten Werten (.csv). AWS DMS Erstellt bei Vollladevorgängen Dateien für jede Tabelle. AWS DMS kopiert dann die Tabellendateien für jede Tabelle in einen separaten Ordner in Amazon S3. Wenn die Dateien auf Amazon S3 hochgeladen werden, AWS DMS sendet ein Kopierbefehl und die Daten in den Dateien werden nach Amazon Redshift kopiert. AWS DMS Kopiert bei der Bearbeitung von Änderungen die Nettoänderungen in die CSV-Dateien. AWS DMS lädt dann die Net-Change-Dateien auf Amazon S3 hoch und kopiert die Daten nach Amazon Redshift.

Weitere Informationen zur Arbeit mit Amazon Redshift als Ziel für AWS DMS finden Sie in den folgenden Abschnitten: 

**Topics**
+ [Voraussetzungen für die Verwendung einer Amazon Redshift Redshift-Datenbank als Ziel für AWS Database Migration Service](#CHAP_Target.Redshift.Prerequisites)
+ [Erforderliche Berechtigungen für die Verwendung von Redshift als Ziel](#CHAP_Target.Redshift.Privileges)
+ [Einschränkungen bei der Verwendung von Amazon Redshift als Ziel für AWS Database Migration Service](#CHAP_Target.Redshift.Limitations)
+ [Konfiguration einer Amazon Redshift Redshift-Datenbank als Ziel für AWS Database Migration Service](#CHAP_Target.Redshift.Configuration)
+ [Verwendung von erweitertem VPC-Routing mit Amazon Redshift als Ziel für AWS Database Migration Service](#CHAP_Target.Redshift.EnhancedVPC)
+ [Erstellen und Verwenden von AWS KMS Schlüsseln zur Verschlüsselung von Amazon Redshift Redshift-Zieldaten](#CHAP_Target.Redshift.KMSKeys)
+ [Endpunkteinstellungen bei Verwendung von Amazon Redshift als Ziel für AWS DMS](#CHAP_Target.Redshift.ConnectionAttrib)
+ [Verwenden eines Datenverschlüsselungsschlüssels und eines Amazon-S3-Buckets als Zwischenspeicher](#CHAP_Target.Redshift.EndpointSettings)
+ [Multithread-Aufgabeneinstellungen für Amazon Redshift](#CHAP_Target.Redshift.ParallelApply)
+ [Zieldatentypen für Amazon Redshift](#CHAP_Target.Redshift.DataTypes)
+ [Verwendung AWS DMS mit Amazon Redshift Serverless als Ziel](#CHAP_Target.Redshift.RSServerless)

## Voraussetzungen für die Verwendung einer Amazon Redshift Redshift-Datenbank als Ziel für AWS Database Migration Service
<a name="CHAP_Target.Redshift.Prerequisites"></a>

In der folgenden Liste werden die erforderlichen Voraussetzungen für die Arbeit mit Amazon Redshift als Ziel für die Datenmigration beschrieben:
+ Verwenden Sie die AWS Management Console, um einen Amazon Redshift Redshift-Cluster zu starten. Notieren Sie sich die grundlegenden Informationen zu Ihrem AWS Konto und Ihrem Amazon Redshift Redshift-Cluster, wie z. B. Ihr Passwort, Ihren Benutzernamen und Ihren Datenbanknamen. Sie benötigen diese Werte beim Erstellen des Amazon-Redshift-Zielendpunkts. 
+ Der Amazon Redshift Redshift-Cluster muss sich im selben AWS Konto und in derselben AWS Region wie die Replikationsinstanz befinden.
+ Die AWS DMS Replikationsinstanz benötigt Netzwerkkonnektivität zum Amazon Redshift Redshift-Endpunkt (Hostname und Port), den Ihr Cluster verwendet.
+ AWS DMS verwendet einen Amazon S3 S3-Bucket, um Daten in die Amazon Redshift Redshift-Datenbank zu übertragen. Damit AWS DMS den Bucket erstellen kann, verwendet die Konsole eine IAM-Rolle, `dms-access-for-endpoint`. Wenn Sie die AWS CLI oder DMS-API verwenden, um eine Datenbankmigration mit Amazon Redshift als Zieldatenbank zu erstellen, müssen Sie diese IAM-Rolle erstellen. Weitere Informationen zum Erstellen dieser Rolle finden Sie unter [Die IAM-Rollen zur Verwendung mit erstellen AWS DMS](security-iam.md#CHAP_Security.APIRole). 
+ AWS DMS konvertiert BLOBs CLOBs, und NCLOBs in ein VARCHAR auf der Amazon Redshift Redshift-Zielinstanz. Amazon Redshift unterstützt keine VARCHAR-Datentypen, die größer als 64 KB sind, sodass Sie herkömmliche Datentypen nicht LOBs auf Amazon Redshift speichern können. 
+ Setzen Sie die Einstellung für die Zielmetadaten-Aufgabe [BatchApplyEnabled](CHAP_Tasks.CustomizingTasks.TaskSettings.ChangeProcessingTuning.md)auf `true` for AWS DMS , um Änderungen an Amazon Redshift Redshift-Zieltabellen während der CDC zu verarbeiten. Ein Primärschlüssel für die Quell- und Zieltabelle ist erforderlich. Ohne Primärschlüssel werden Änderungen Anweisung für Anweisung angewendet. Dies kann sich negativ auf die Aufgabenleistung während der CDC auswirken, indem Ziellatenz verursacht wird und sich auf die Cluster-Commit-Warteschlange auswirkt. 
+ Wenn Row Level Security für die Tabellen in Redshift aktiviert ist, müssen Sie allen Ihren DMS-Benutzern die entsprechenden Berechtigungen gewähren.

## Erforderliche Berechtigungen für die Verwendung von Redshift als Ziel
<a name="CHAP_Target.Redshift.Privileges"></a>

Verwenden Sie den Befehl GRANT, um Zugriffsberechtigungen für einen Benutzer oder eine Benutzergruppe zu definieren. Zu den Rechten gehören Zugriffsoptionen wie das Lesen von Daten in Tabellen und Ansichten, das Schreiben von Daten und das Erstellen von Tabellen. Weitere Informationen über die Verwendung von GRANT mit Amazon Redshift finden Sie unter [GRANT](https://docs.aws.amazon.com//redshift/latest/dg/r_GRANT.html) im *Datenbankentwicklerhandbuch zu Amazon Redshift*. 

Im Folgenden ist die Syntax zum Erteilen von bestimmten Berechtigungen für eine Tabelle, eine Datenbank, ein Schema, eine Funktion oder eine Prozedur oder von Berechtigungen auf Sprachebene für Amazon-Redshift-Tabellen und -Ansichten dargestellt.

```
GRANT { { SELECT | INSERT | UPDATE | DELETE | REFERENCES } [,...] | ALL [ PRIVILEGES ] }
    ON { [ TABLE ] table_name [, ...] | ALL TABLES IN SCHEMA schema_name [, ...] }
    TO { username [ WITH GRANT OPTION ] | GROUP group_name | PUBLIC } [, ...]

GRANT { { CREATE | TEMPORARY | TEMP } [,...] | ALL [ PRIVILEGES ] }
    ON DATABASE db_name [, ...]
    TO { username [ WITH GRANT OPTION ] | GROUP group_name | PUBLIC } [, ...]

GRANT { { CREATE | USAGE } [,...] | ALL [ PRIVILEGES ] }
    ON SCHEMA schema_name [, ...]
    TO { username [ WITH GRANT OPTION ] | GROUP group_name | PUBLIC } [, ...]

GRANT { EXECUTE | ALL [ PRIVILEGES ] }
    ON { FUNCTION function_name ( [ [ argname ] argtype [, ...] ] ) [, ...] | ALL FUNCTIONS IN SCHEMA schema_name [, ...] }
    TO { username [ WITH GRANT OPTION ] | GROUP group_name | PUBLIC } [, ...]

GRANT { EXECUTE | ALL [ PRIVILEGES ] }
    ON { PROCEDURE procedure_name ( [ [ argname ] argtype [, ...] ] ) [, ...] | ALL PROCEDURES IN SCHEMA schema_name [, ...] }
    TO { username [ WITH GRANT OPTION ] | GROUP group_name | PUBLIC } [, ...]

GRANT USAGE 
    ON LANGUAGE language_name [, ...]
    TO { username [ WITH GRANT OPTION ] | GROUP group_name | PUBLIC } [, ...]
```

Im Folgenden finden Sie die Syntax für Berechtigungen auf Spaltenebene für Amazon-Redshift-Tabellen und -Ansichten. 

```
GRANT { { SELECT | UPDATE } ( column_name [, ...] ) [, ...] | ALL [ PRIVILEGES ] ( column_name [,...] ) }
     ON { [ TABLE ] table_name [, ...] }
     TO { username | GROUP group_name | PUBLIC } [, ...]
```

Im Folgenden finden Sie die Syntax für das ASSUMEROLE-Recht, das Benutzern und Gruppen mit einer spezifizierten Rolle gewährt wird.

```
GRANT ASSUMEROLE
    ON { 'iam_role' [, ...] | ALL }
    TO { username | GROUP group_name | PUBLIC } [, ...]
    FOR { ALL | COPY | UNLOAD } [, ...]
```

## Einschränkungen bei der Verwendung von Amazon Redshift als Ziel für AWS Database Migration Service
<a name="CHAP_Target.Redshift.Limitations"></a>

Die folgenden Einschränkungen gelten, wenn Sie eine Amazon-Redshift-Datenbank als Ziel verwenden:
+ Aktivieren Sie nicht die Versionsverwaltung für den S3-Bucket, den Sie als Zwischenspeicher für Ihr Amazon-Redshift-Ziel verwenden. Wenn Sie eine S3-Versionsverwaltung benötigen, verwenden Sie Lebenszyklusrichtlinien, um alte Versionen aktiv zu löschen. Andernfalls kann es aufgrund eines Timeouts eines `list-object`-Aufrufs in S3 zu Verbindungsfehlern beim Endpunkttest kommen. Informationen zum Erstellen einer Lebenszyklusrichtlinie für einen S3-Bucket finden Sie unter [Verwalten Ihres Speicher-Lebenszyklus](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html). Informationen zum Löschen einer Version eines S3-Objekts finden Sie unter [Löschen von Objekten aus einem versionsverwaltungsfähigen Bucket](https://docs.aws.amazon.com/AmazonS3/latest/dev/DeletingObjectVersions.html).
+ Die folgende DDL wird nicht unterstützt:

  ```
  ALTER TABLE table name MODIFY COLUMN column name data type;
  ```
+  AWS DMS kann keine Änderungen an einem Schema migrieren oder replizieren, dessen Name mit einem Unterstrich (\$1) beginnt. Verwenden Sie für Schemata, deren Namen mit einem Unterstrich beginnen, Zuweisungstransformationen, um das Schema im Ziel umzubenennen. 
+  Amazon Redshift unterstützt keine Größe von VARCHARs mehr als 64 KB. LOBs aus herkömmlichen Datenbanken können nicht in Amazon Redshift gespeichert werden.
+  Das Anwenden einer DELETE-Anweisung auf eine Tabelle mit einem mehrspaltigen Primärschlüssel wird nicht unterstützt, wenn einer der Primärschlüsselspaltennamen ein reserviertes Wort verwendet. Eine Liste der reservierten Wörter in Amazon Redshift finden Sie [hier](https://docs.aws.amazon.com/redshift/latest/dg/r_pg_keywords.html).
+ Es kann zu Leistungsproblemen kommen, wenn Ihr Quellsystem UPDATE-Operationen für den Primärschlüssel einer Quelltabelle ausführt. Diese Leistungsprobleme treten auf, wenn Änderungen auf das Ziel angewendet werden. Das liegt daran, dass UPDATE- (und DELETE-)Operationen auf den Primärschlüsselwert angewiesen sind, um die Zielzeile zu identifizieren. Wenn Sie den Primärschlüssel einer Quelltabelle aktualisieren, enthält Ihr Aufgabenprotokoll Meldungen wie die folgende:

  ```
  Update on table 1 changes PK to a PK that was previously updated in the same bulk update.
  ```
+ DMS unterstützt keine benutzerdefinierten DNS-Namen, wenn Sie einen Endpunkt für einen Redshift-Cluster konfigurieren, und Sie müssen den von Amazon bereitgestellten DNS-Namen verwenden. Da sich der Amazon Redshift Redshift-Cluster in demselben AWS Konto und derselben Region wie die Replikationsinstanz befinden muss, schlägt die Validierung fehl, wenn Sie einen benutzerdefinierten DNS-Endpunkt verwenden.
+ In Amazon Redshift gilt ein standardmäßiges Timeout für inaktive Sitzungen von 4 Stunden. Wenn im Rahmen der DMS-Replikationsaufgabe keine Aktivität stattfindet, unterbricht Redshift die Sitzung nach 4 Stunden. Fehler können darauf zurückzuführen sein, dass DMS keine Verbindung herstellen kann und möglicherweise neu gestartet werden muss. Um das Problem zu umgehen, legen Sie für den DMS-Replikationsbenutzer einen Grenzwert für SESSION TIMEOUT von mehr als 4 Stunden fest. Sie können sich auch die Beschreibung von [ALTER USER](https://docs.aws.amazon.com/redshift/latest/dg/r_ALTER_USER.html) im *Datenbankentwicklerhandbuch für Amazon Redshift* ansehen.
+ Wenn Quelltabellendaten ohne einen primären oder eindeutigen Schlüssel AWS DMS repliziert werden, kann die CDC-Latenz hoch sein, was zu einem inakzeptablen Leistungsniveau führen kann.
+ Das Kürzen von Partitionen wird während der CDC-Replikation von der Oracle-Quelle zum Redshift-Ziel nicht unterstützt.
+ Doppelte Datensätze können in Zieltabellen erscheinen, da Amazon Redshift Primärschlüssel nicht erzwingt und AWS DMS CDC möglicherweise erneut abspielt, wenn eine Aufgabe wieder aufgenommen wird. Verwenden Sie die Einstellung, um Duplikate zu vermeiden. `ApplyErrorInsertPolicy=INSERT_RECORD` Weitere Informationen finden Sie unter [Aufgabeneinstellungen zur Fehlerbehandlung](CHAP_Tasks.CustomizingTasks.TaskSettings.ErrorHandling.md). Alternativ können Sie Verfahren zur Duplikaterkennung auf Anwendungsebene und zur Bereinigung nach der Migration implementieren.

## Konfiguration einer Amazon Redshift Redshift-Datenbank als Ziel für AWS Database Migration Service
<a name="CHAP_Target.Redshift.Configuration"></a>

AWS Database Migration Service muss für die Verwendung mit der Amazon Redshift Redshift-Instance konfiguriert sein. Die folgende Tabelle beschreibt die verfügbaren Konfigurationseigenschaften für den Amazon-Redshift-Endpunkt.


| Property (Eigenschaft) | Description (Beschreibung) | 
| --- | --- | 
| server | Der Name des verwendeten Amazon-Redshift-Clusters. | 
| port | Die Portnummer für Amazon Redshift. Der Standardwert lautet 5439. | 
| username | Ein Amazon-Redshift-Benutzername eines registrierten Benutzers. | 
| password | Das Passwort für den Benutzer, der in der Eigenschaft "Benutzername" angegeben ist. | 
| Datenbank | Der Name des Amazon Redshift Data Warehouse (Service), mit dem Sie arbeiten. | 

Wenn Sie zusätzliche Attribute für Verbindungszeichenfolgen zu Ihrem Amazon-Redshift-Endpunkt hinzufügen möchten, können Sie die Attribute `maxFileSize` und `fileTransferUploadStreams` festlegen. Weitere Informationen zu diesen Attributen finden Sie unter [Endpunkteinstellungen bei Verwendung von Amazon Redshift als Ziel für AWS DMS](#CHAP_Target.Redshift.ConnectionAttrib).

## Verwendung von erweitertem VPC-Routing mit Amazon Redshift als Ziel für AWS Database Migration Service
<a name="CHAP_Target.Redshift.EnhancedVPC"></a>

Wenn Sie Enhanced VPC Routing mit Ihrem Amazon-Redshift-Ziel verwenden, wird der gesamte COPY-Datenverkehr zwischen Ihrem Amazon-Redshift-Cluster und Ihren Daten-Repositorys über Ihre VPC geleitet. Da Enhanced VPC Routing sich darauf auswirkt, wie Amazon Redshift auf andere Ressourcen zugreift, schlagen COPY-Befehle möglicherweise fehl, wenn die VPC nicht ordnungsgemäß konfiguriert wurde.

AWS DMS kann von diesem Verhalten beeinflusst werden, da der Befehl COPY verwendet wird, um Daten in S3 in einen Amazon Redshift-Cluster zu verschieben.

Die folgenden Schritte sind AWS DMS erforderlich, um Daten in ein Amazon Redshift Redshift-Ziel zu laden:

1. AWS DMS kopiert Daten aus der Quelle in CSV-Dateien auf dem Replikationsserver.

1. AWS DMS verwendet das AWS SDK, um die .csv-Dateien in einen S3-Bucket auf Ihrem Konto zu kopieren.

1. AWS DMS verwendet dann den COPY-Befehl in Amazon Redshift, um Daten aus den CSV-Dateien in S3 in eine entsprechende Tabelle in Amazon Redshift zu kopieren.

Wenn Enhanced VPC Routing nicht aktiviert ist, leitet Amazon Redshift den Datenverkehr über das Internet weiter, einschließlich des Datenverkehrs zu anderen Diensten innerhalb des AWS Netzwerks. Bei deaktivierter Funktion müssen Sie den Netzwerkpfad nicht konfigurieren. Wenn die Funktion aktiviert ist, müssen Sie speziell einen Netzwerkpfad zwischen Ihrem VPC-Cluster und Ihren Datenressourcen erstellen. Weitere Informationen zu der erforderlichen Konfiguration finden Sie unter [Enhanced VPC Routing](https://docs.aws.amazon.com/redshift/latest/mgmt/enhanced-vpc-routing.html) in der Amazon-Redshift-Dokumentation. 

## Erstellen und Verwenden von AWS KMS Schlüsseln zur Verschlüsselung von Amazon Redshift Redshift-Zieldaten
<a name="CHAP_Target.Redshift.KMSKeys"></a>

Sie können Ihre an Amazon S3 übertragenen Zieldaten verschlüsseln, bevor Sie diese nach Amazon Redshift kopieren. Dazu können Sie benutzerdefinierte AWS KMS Schlüssel erstellen und verwenden. Sie können den Schlüssel verwenden, den Sie zur Verschlüsselung Ihrer Zieldaten erstellt haben. Verwenden Sie dazu beim Erstellen des Amazon-Redshift-Zielendpunkts einen der folgenden Mechanismen:
+ Verwenden Sie die folgende Option beim Ausführen des `create-endpoint`-Befehls mithilfe der AWS CLI.

  ```
  --redshift-settings '{"EncryptionMode": "SSE_KMS", "ServerSideEncryptionKmsKeyId": "your-kms-key-ARN"}'
  ```

  Hier handelt es sich bei `your-kms-key-ARN` um den Amazon-Ressourcennamen (ARN) für Ihren KMS-Schlüssel. Weitere Informationen finden Sie unter [Verwenden eines Datenverschlüsselungsschlüssels und eines Amazon-S3-Buckets als Zwischenspeicher](#CHAP_Target.Redshift.EndpointSettings).
+ Richten Sie für das zusätzliche Verbindungsattribut `encryptionMode` den Wert `SSE_KMS` und für das zusätzliche Verbindungsattribut `serverSideEncryptionKmsKeyId` den ARN für Ihren KMS-Schlüssel ein. Weitere Informationen finden Sie unter [Endpunkteinstellungen bei Verwendung von Amazon Redshift als Ziel für AWS DMS](#CHAP_Target.Redshift.ConnectionAttrib).

Um Amazon Redshift Redshift-Zieldaten mit einem KMS-Schlüssel zu verschlüsseln, benötigen Sie eine AWS Identity and Access Management (IAM-) Rolle, die über Berechtigungen für den Zugriff auf Amazon Redshift Redshift-Daten verfügt. Auf diese IAM-Rolle wird dann in einer Richtlinie (einer Schlüsselrichtlinie) zugegriffen, die dem von Ihnen erstellten Verschlüsselungsschlüssel angefügt ist. Sie können diesen Vorgang in Ihrer IAM-Konsole ausführen, indem Sie Folgendes erstellen:
+ Eine IAM-Rolle mit einer verwalteten Richtlinie. AWS
+ Einen KMS-Schlüssel mit einer Schlüsselrichtlinie, die sich auf diese Rolle bezieht.

Die entsprechende Vorgehensweise wird nachfolgend beschrieben.

**Um eine IAM-Rolle mit der erforderlichen verwalteten Richtlinie zu erstellen AWS**

1. Öffnen Sie unter [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) die IAM-Konsole.

1. Wählen Sie im Navigationsbereich **Rollen**. Die Seite **Roles (Rollen)** wird geöffnet.

1. Wählen Sie **Rolle erstellen** aus. Die Seite **Create role (Rolle erstellen)** wird geöffnet.

1. Wenn **AWS -Service** als vertrauenswürdige Entität ausgewählt ist, wählen Sie **DMS** als den Service aus, der die Rolle verwendet.

1. Wählen Sie **Weiter: Berechtigungen** aus. Die Seite **Attach permissions policies (Berechtigungsrichtlinien anfügen)** wird angezeigt.

1. Suchen und wählen Sie die `AmazonDMSRedshiftS3Role`-Richtlinie aus.

1. Wählen Sie **Next: Markierungen (Weiter: Markierungen)**. Die Seite **Add tags (Tags hinzufügen)** wird angezeigt. Hier können Sie alle gewünschten Tags hinzufügen.

1. Wählen Sie **Next: Review (Weiter: Prüfen)** aus und überprüfen Sie Ihre Ergebnisse.

1. Wenn die Einstellungen Ihren Vorstellungen entsprechen, geben Sie einen Namen für die Rolle (z. B. `DMS-Redshift-endpoint-access-role`) sowie eine zusätzliche Beschreibung ein und wählen Sie anschließend **Create role (Rolle erstellen)** aus. Die Seite **Roles (Rollen)** wird geöffnet und zeigt eine Mitteilung an, die darauf hinweist, dass Ihre Rolle erstellt wurde.

Sie haben jetzt die neue Rolle erstellt, über die Sie auf Amazon-Redshift-Ressourcen zugreifen können, um diese mit einem angegebenen Namen, z. B. `DMS-Redshift-endpoint-access-role`, zu verschlüsseln.

**Um einen AWS KMS Verschlüsselungsschlüssel mit einer Schlüsselrichtlinie zu erstellen, die auf Ihre IAM-Rolle verweist**
**Anmerkung**  
Weitere Informationen zur AWS DMS Funktionsweise mit AWS KMS Verschlüsselungsschlüsseln finden Sie unter[Einen Verschlüsselungsschlüssel festlegen und AWS KMS Berechtigungen angeben](CHAP_Security.md#CHAP_Security.EncryptionKey).

1. Melden Sie sich bei der AWS Key Management Service (AWS KMS) -Konsole an AWS-Managementkonsole und öffnen Sie sie unter [https://console.aws.amazon.com/kms](https://console.aws.amazon.com/kms).

1. Um das zu ändern AWS-Region, verwenden Sie die Regionsauswahl in der oberen rechten Ecke der Seite.

1. Klicken Sie im Navigationsbereich auf **Kundenverwaltete Schlüssel**.

1. Klicken Sie auf **Create key**. Die Seite **Configure key (Schlüssel konfigurieren)** wird geöffnet.

1. Wählen Sie für **Key type (Schlüsseltyp)** **Symmetric (Symmetrisch)**.
**Anmerkung**  
Wenn Sie diesen Schlüssel erstellen, können Sie nur einen symmetrischen Schlüssel erstellen, da alle AWS Dienste, wie Amazon Redshift, nur mit symmetrischen Verschlüsselungsschlüsseln arbeiten.

1. Wählen Sie **Erweiterte Optionen** aus. Stellen Sie für **Key material origin (Schlüsselmaterialherkunft)** sicher, dass **KMS** ausgewählt ist, und wählen Sie dann **Next (Weiter)**. Die Seite **Add Labels (Etiketten hinzufügen)** wird geöffnet.

1. Geben Sie unter **Create alias and description (Alias und Beschreibung erstellen)** einen Alias für den Schlüssel (z. B. `DMS-Redshift-endpoint-encryption-key`) und eventuell eine weitere Beschreibung ein.

1. Fügen Sie unter **Tags** alle Tags hinzu, die Sie verwenden möchten, um den Schlüssel zu identifizieren und seine Nutzung zu verfolgen, und wählen Sie anschließend **Next Step (Nächster Schritt)** aus. Die Seite **Define key administrative permissions (Schlüsselverwaltungsberechtigungen definieren)** wird geöffnet und zeigt eine Liste der Benutzer und Rollen an, aus denen Sie auswählen können.

1. Fügen Sie die Benutzer und Rollen hinzu, die den Schlüssel verwalten sollen. Stellen Sie sicher, dass diese Benutzer und Rollen über die erforderlichen Berechtigungen verfügen, um den Schlüssel zu verwalten. 

1. Wählen Sie unter **Key deletion (Schlüssellöschung)** aus, ob die Schlüsseladministratoren den Schlüssel löschen können, und klicken Sie anschließend auf **Next Step (Nächster Schritt)**. Die Seite **Define Key usage permissions (Schlüsselnutzungsberechtigungen definieren)** wird geöffnet und zeigt eine weitere Liste mit Benutzern und Rollen an, aus denen Sie auswählen können.

1. Wählen Sie unter **Dieses Konto** die verfügbaren Benutzer aus, die kryptografische Operationen für Amazon-Redshift-Ziele ausführen sollen. Wählen Sie zudem die Rolle aus, die Sie zuvor unter **Rollen** erstellt haben, um den Zugriff zur Verschlüsselung von Amazon-Redshift-Zielobjekten zu ermöglichen (z. B. `DMS-Redshift-endpoint-access-role`).

1. **Wenn Sie weitere Konten hinzufügen möchten, die nicht aufgeführt sind und über denselben Zugriff verfügen, wählen Sie unter **Andere AWS Konten** die Option **Weiteres AWS Konto hinzufügen** und dann Weiter aus.** Die Seite **Review and edit key policy (Schlüsselrichtlinie prüfen und bearbeiten)** wird geöffnet. Hier wird das JSON für die Schlüsselrichtlinie angezeigt, die Sie überprüfen und bearbeiten können, indem Sie in den vorhandenen JSON-Inhalt schreiben. Hier können Sie sehen, wo die Schlüsselrichtlinie auf die Rolle und die Benutzer (z. B. `Admin` und `User1`) verweist, die Sie im vorherigen Schritt ausgewählt haben. Sie können auch die verschiedenen Schlüsselaktionen sehen, die für die verschiedenen Prinzipale (Benutzer und Rollen) zulässig sind, wie im folgenden Beispiel dargestellt.

------
#### [ JSON ]

****  

   ```
   {
       "Id": "key-consolepolicy-3",
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "Enable IAM User Permissions",
               "Effect": "Allow",
               "Principal": {
                   "AWS": [
                       "arn:aws:iam::111122223333:root"
                   ]
               },
               "Action": "kms:*",
               "Resource": "*"
           },
           {
               "Sid": "Allow access for Key Administrators",
               "Effect": "Allow",
               "Principal": {
                   "AWS": [
                       "arn:aws:iam::111122223333:role/Admin"
                   ]
               },
               "Action": [
                   "kms:Create*",
                   "kms:Describe*",
                   "kms:Enable*",
                   "kms:List*",
                   "kms:Put*",
                   "kms:Update*",
                   "kms:Revoke*",
                   "kms:Disable*",
                   "kms:Get*",
                   "kms:Delete*",
                   "kms:TagResource",
                   "kms:UntagResource",
                   "kms:ScheduleKeyDeletion",
                   "kms:CancelKeyDeletion"
               ],
               "Resource": "*"
           },
           {
               "Sid": "Allow use of the key",
               "Effect": "Allow",
               "Principal": {
                   "AWS": [
                       "arn:aws:iam::111122223333:role/DMS-Redshift-endpoint-access-role",
                       "arn:aws:iam::111122223333:role/Admin",
                       "arn:aws:iam::111122223333:role/User1"
                   ]
               },
               "Action": [
                   "kms:Encrypt",
                   "kms:Decrypt",
                   "kms:ReEncrypt*",
                   "kms:GenerateDataKey*",
                   "kms:DescribeKey"
               ],
               "Resource": "*"
           },
           {
               "Sid": "Allow attachment of persistent resources",
               "Effect": "Allow",
               "Principal": {
                   "AWS": [
                       "arn:aws:iam::111122223333:role/DMS-Redshift-endpoint-access-role",
                       "arn:aws:iam::111122223333:role/Admin",
                       "arn:aws:iam::111122223333:role/User1"
                   ]
               },
               "Action": [
                   "kms:CreateGrant",
                   "kms:ListGrants",
                   "kms:RevokeGrant"
               ],
               "Resource": "*",
               "Condition": {
                   "Bool": {
                       "kms:GrantIsForAWSResource": true
                   }
               }
           }
       ]
   }
   ```

------

1. Wählen Sie **Finish** (Abschließen). Die Seite mit den **Verschlüsselungsschlüsseln** wird mit einer Meldung geöffnet, die darauf hinweist, dass Ihr AWS KMS key Schlüssel erstellt wurde.

Damit haben Sie einen neuen KMS-Schlüssel mit einem angegebenen Alias (z. B. `DMS-Redshift-endpoint-encryption-key`) erstellt. Dieser Schlüssel ermöglicht die Verschlüsselung AWS DMS von Amazon Redshift Redshift-Zieldaten.

## Endpunkteinstellungen bei Verwendung von Amazon Redshift als Ziel für AWS DMS
<a name="CHAP_Target.Redshift.ConnectionAttrib"></a>

Sie können Endpunkteinstellungen zur Konfiguration Ihrer Amazon-Redshift-Zieldatenbank verwenden, ähnlich wie Sie zusätzliche Verbindungsattribute verwenden. Sie geben die Einstellungen an, wenn Sie den Zielendpunkt mithilfe der AWS DMS Konsole oder mithilfe des `create-endpoint` Befehls in [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html), mit der `--redshift-settings '{"EndpointSetting": "value", ...}'` JSON-Syntax erstellen.

Die folgende Tabelle zeigt die Endpunkteinstellungen, die Sie mit Amazon Redshift als Ziel verwenden können.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/dms/latest/userguide/CHAP_Target.Redshift.html)

## Verwenden eines Datenverschlüsselungsschlüssels und eines Amazon-S3-Buckets als Zwischenspeicher
<a name="CHAP_Target.Redshift.EndpointSettings"></a>

Sie können die Einstellungen für den Amazon-Redshift-Zielendpunkt verwenden, um Folgendes zu konfigurieren:
+ Ein benutzerdefinierter AWS KMS Datenverschlüsselungsschlüssel. Sie können dann diesen Schlüssel verwenden, um Ihre an Amazon S3 übertragenen Daten zu verschlüsseln, bevor sie nach Amazon Redshift kopiert werden.
+ Einen benutzerdefinierten S3-Bucket als Zwischenspeicher für die zu Amazon Redshift migrierten Daten.
+ Mapping von BOOLEAN als BOOLEAN aus einer PostgreSQL-Quelle. Standardmäßig wird ein BOOLEAN-Typ als varchar(1) migriert. Sie können `MapBooleanAsBoolean` angeben, damit das Redshift-Ziel den BOOLEAN-Typ als BOOLEAN migriert, wie im folgenden Beispiel gezeigt.

  ```
  --redshift-settings '{"MapBooleanAsBoolean": true}'
  ```

  Beachten Sie, dass Sie diese Einstellung sowohl am Quell- als auch am Zielendpunkt festlegen müssen, damit sie wirksam wird.

### KMS-Schlüsseleinstellungen für die Datenverschlüsselung
<a name="CHAP_Target.Redshift.EndpointSettings.KMSkeys"></a>

Die folgenden Beispiele veranschaulichen die Konfiguration eines benutzerdefinierten KMS-Schlüssels, um Ihre per Push an S3 übertragenen Daten zu verschlüsseln. Um zu beginnen, können Sie den folgenden `create-endpoint`-Aufruf in der AWS CLI ausführen.

```
aws dms create-endpoint --endpoint-identifier redshift-target-endpoint --endpoint-type target 
--engine-name redshift --username your-username --password your-password 
--server-name your-server-name --port 5439 --database-name your-db-name 
--redshift-settings '{"EncryptionMode": "SSE_KMS", 
"ServerSideEncryptionKmsKeyId": "arn:aws:kms:us-east-1:111122223333:key/24c3c5a1-f34a-4519-a85b-2debbef226d1"}'
```

Das durch die `--redshift-settings`-Option angegebene JSON-Objekt definiert zwei Parameter. Der eine ist ein `EncryptionMode`-Parameter mit dem Wert `SSE_KMS`. Der andere ist ein `ServerSideEncryptionKmsKeyId`-Parameter mit dem Wert `arn:aws:kms:us-east-1:111122223333:key/24c3c5a1-f34a-4519-a85b-2debbef226d1`. Bei diesem Wert handelt es sich um einen Amazon-Ressourcenname (ARN) für Ihren benutzerdefinierten KMS-Schlüssel.

Standardmäßig erfolgt S3-Datenverschlüsselung mithilfe von serverseitiger S3-Verschlüsselung. Für das Amazon-Redshift-Ziel im vorherigen Beispiel ist dies gleichbedeutend mit der Angabe der Endpunkteinstellungen, wie im folgenden Beispiel dargestellt.

```
aws dms create-endpoint --endpoint-identifier redshift-target-endpoint --endpoint-type target 
--engine-name redshift --username your-username --password your-password 
--server-name your-server-name --port 5439 --database-name your-db-name 
--redshift-settings '{"EncryptionMode": "SSE_S3"}'
```

Weitere Informationen zur Verwendung der serverseitigen S3-Verschlüsselung finden Sie unter [Schutz von Daten mittels serverseitiger Verschlüsselung](https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html) im *Amazon-Simple-Storage-Service-Benutzerhandbuch*.

**Anmerkung**  
Sie können auch den CLI-Befehl `modify-endpoint` verwenden, um den Wert des Parameters `EncryptionMode` für einen vorhandenen Endpunkt von `SSE_KMS` in `SSE_S3` zu ändern. Sie können jedoch nicht den Wert für `EncryptionMode` von `SSE_S3` in `SSE_KMS` ändern.

### Einstellungen von Amazon-S3-Buckets
<a name="CHAP_Target.Redshift.EndpointSettings.S3Buckets"></a>

Wenn Sie Daten auf einen Amazon Redshift-Zielendpunkt migrieren, AWS DMS verwendet es einen standardmäßigen Amazon S3 S3-Bucket als Zwischenspeicher für Aufgaben, bevor die migrierten Daten nach Amazon Redshift kopiert werden. Beispielsweise wird in den dargelegten Beispielen für das Erstellen eines Amazon-Redshift-Zielendpunkts mit einem AWS KMS -Datenverschlüsselungsschlüssel dieser Standard-S3-Bucket verwendet (siehe [KMS-Schlüsseleinstellungen für die Datenverschlüsselung](#CHAP_Target.Redshift.EndpointSettings.KMSkeys)). 

Sie können stattdessen einen benutzerdefinierten S3-Bucket für diesen Zwischenspeicher angeben, indem Sie die folgenden Parameter in den Wert Ihrer `--redshift-settings` Option für den Befehl aufnehmen: AWS CLI `create-endpoint`
+ `BucketName` – Eine Zeichenfolge, die Sie als Namen des S3-Bucket-Speichers angeben. Wenn Ihre Servicezugriffsrolle auf der Richtlinie `AmazonDMSRedshiftS3Role` basiert, muss dieser Wert das Präfix `dms-` haben, also beispielsweise `dms-my-bucket-name` lauten.
+ `BucketFolder` – (Optional) Eine Zeichenfolge die Sie als Namen des Speicherordners im angegebenen S3-Bucket angeben können.
+ `ServiceAccessRoleArn` – Der ARN einer IAM-Rolle, die administrativen Zugriff auf den S3-Bucket erlaubt. In der Regel erstellen Sie diese Rolle auf Grundlage der `AmazonDMSRedshiftS3Role`-Richtlinie. Ein Beispiel finden Sie unter dem Vorgehen zum Erstellen einer IAM-Rolle mit der erforderlichen von AWS verwalteten Richtlinie in [Erstellen und Verwenden von AWS KMS Schlüsseln zur Verschlüsselung von Amazon Redshift Redshift-Zieldaten](#CHAP_Target.Redshift.KMSKeys).
**Anmerkung**  
Wenn Sie mithilfe der `--service-access-role-arn` Option des `create-endpoint`-Befehls den ARN einer anderen IAM-Rolle angeben, hat diese IAM-Rollenoption Priorität.

Das folgende Beispiel gezeigt, wie Sie diese Parameter verwenden können, um einen benutzerdefinierten Amazon-S3-Bucket im folgenden Aufruf `create-endpoint` über die AWS CLI anzugeben. 

```
aws dms create-endpoint --endpoint-identifier redshift-target-endpoint --endpoint-type target 
--engine-name redshift --username your-username --password your-password 
--server-name your-server-name --port 5439 --database-name your-db-name 
--redshift-settings '{"ServiceAccessRoleArn": "your-service-access-ARN", 
"BucketName": "your-bucket-name", "BucketFolder": "your-bucket-folder-name"}'
```

## Multithread-Aufgabeneinstellungen für Amazon Redshift
<a name="CHAP_Target.Redshift.ParallelApply"></a>

Sie können die Leistung von Aufgaben zum vollständigen Laden und CDC-Aufgaben (CDC = Change Data Capture) für einen Amazon-Redshift-Zielendpunkt verbessern, indem Sie Multithread-Aufgabeneinstellungen verwenden. Auf diese Weise können Sie die Anzahl der gleichzeitigen Threads und die Anzahl der Datensätze angeben, die in einem Puffer gespeichert werden sollen.

### Aufgabeneinstellungen für vollständige Multithread-Ladevorgänge für Amazon Redshift
<a name="CHAP_Target.Redshift.ParallelApply.FullLoad"></a>

Zur Förderung der Leistung beim vollständigen Laden können Sie die folgenden `ParallelLoad*`-Aufgabeneinstellungen verwenden:
+ `ParallelLoadThreads` – Gibt die Anzahl der gleichzeitigen Threads an, die DMS während eines vollständigen Ladevorgangs verwendet, um Datensätze an einen Amazon-Redshift-Zielendpunkt zu übertragen. Der Standardwert ist Null (0) und der maximale Wert ist 32. Weitere Informationen finden Sie unter [Aufgabeneinstellungen für vollständiges Laden](CHAP_Tasks.CustomizingTasks.TaskSettings.FullLoad.md).

  Das Attribut `enableParallelBatchInMemoryCSVFiles` kann auf `false` gesetzt sein, wenn Sie die `ParallelLoadThreads`-Aufgabeneinstellung verwenden. Das Attribut verbessert die Leistung umfangreicherer Aufgaben für vollständige Multithread-Ladevorgänge, da DMS auf die Festplatte und nicht in den Arbeitsspeicher schreibt. Der Standardwert ist `true`.
+ `ParallelLoadBufferSize` – Gibt die maximale Anzahl von Datensatzanforderungen bei Verwendung von Threads für paralleles Laden mit dem Redshift-Ziel an. Der Standardwert ist 100 und der maximale Wert 1 000. Wir empfehlen, diese Option zu verwenden, wenn ParallelLoadThreads > 1 (mehr als eins) ist.

**Anmerkung**  
Support für die Verwendung von `ParallelLoad*` Task-Einstellungen während FULL LOAD auf Amazon Redshift Redshift-Zielendpunkte ist in den AWS DMS Versionen 3.4.5 und höher verfügbar.  
Die Redshift-Endpunkteinstellung `ReplaceInvalidChars` wird nicht für die Verwendung während eines CDC-Vorgangs (Change Data Capture) oder während einer FULL-LOAD-Migrationsaufgabe mit aktiviertem parallelem Laden unterstützt. Sie wird für die FULL-LOAD-Migration unterstützt, wenn paralleles Laden nicht aktiviert ist. *Weitere Informationen finden Sie [RedshiftSettings](https://docs.aws.amazon.com/dms/latest/APIReference/API_RedshiftSettings.html)in der API-Referenz AWS Database Migration Service *

### Multithread-CDC-Aufgabeneinstellungen für Amazon Redshift
<a name="CHAP_Target.Redshift.ParallelApply.CDC"></a>

Zur Förderung der CDC-Leistung können Sie die folgenden `ParallelApply*`-Aufgabeneinstellungen verwenden:
+ `ParallelApplyThreads`— Gibt die Anzahl gleichzeitiger Threads an, die während eines CDC-Ladens AWS DMS verwendet werden, um Datensätze an einen Amazon Redshift Redshift-Zielendpunkt zu übertragen. Der Standardwert ist Null (0) und der maximale Wert ist 32. Der empfohlene Mindestwert entspricht der Anzahl der Slices in Ihrem Cluster.
+ `ParallelApplyBufferSize` – Gibt die maximale Anzahl von Datensatzanforderungen bei Verwendung von Threads für parallele Anwendung mit dem Redshift-Ziel an. Der Standardwert ist 100 und der maximale Wert 1 000. Wir empfehlen, diese Option zu verwenden, wenn ParallelApplyThreads > 1 (größer als eins) ist. 

  Um Redshift als Ziel optimal zu nutzen, sollte der Wert von `ParallelApplyBufferSize` mindestens dem Zweifachen der Anzahl von `ParallelApplyThreads` entsprechen (also mindestens doppelt so groß sein).

**Anmerkung**  
Support für die Verwendung von `ParallelApply*` Aufgabeneinstellungen während der Übertragung von CDC zu Amazon Redshift Redshift-Zielendpunkten ist in den AWS DMS Versionen 3.4.3 und höher verfügbar.

Der Grad der angewandten Parallelität hängt von der Korrelation zwischen der gesamten *Stapelgröße* und der *maximalen Dateigröße* ab, die für die Übertragung von Daten verwendet wird. Wenn Sie Multithread-CDC-Aufgabeneinstellungen mit einem Redshift-Ziel verwenden, erzielen Sie Vorteile, wenn die Stapelgröße im Verhältnis zur maximalen Dateigröße groß ist. Sie können beispielsweise die folgende Kombination aus Endpunkt- und Aufgabeneinstellungen verwenden, um eine optimale Leistung zu erzielen. 

```
// Redshift endpoint setting
                
        MaxFileSize=250000;

// Task settings

        BatchApplyEnabled=true;
        BatchSplitSize =8000;
        BatchApplyTimeoutMax =1800;
        BatchApplyTimeoutMin =1800;
        ParallelApplyThreads=32;
        ParallelApplyBufferSize=100;
```

Bei Verwendung der Einstellungen im vorherigen Beispiel profitiert ein Kunde mit einer hohen Transaktions-Workload von der Tatsache, dass sein Stapelpuffer, der 8 000 Datensätze enthält, innerhalb von 1 800 Sekunden gefüllt wird und 32 parallele Threads mit einer maximalen Dateigröße von 250 MB verwendet werden.

Weitere Informationen finden Sie unter [Einstellungen für die Optimierung der Verarbeitung von Änderungen](CHAP_Tasks.CustomizingTasks.TaskSettings.ChangeProcessingTuning.md).

**Anmerkung**  
DMS-Abfragen, die während der laufenden Replikation auf einen Redshift-Cluster ausgeführt werden, können dieselbe WLM-Warteschlange (WLM = Workload Management) gemeinsam mit anderen laufenden Anwendungsabfragen nutzen. Daher sollten Sie die WLM-Eigenschaften ordnungsgemäß konfigurieren, um die Leistung während der laufenden Replikation auf ein Redshift-Ziel zu beeinflussen. Wenn beispielsweise andere parallele ETL-Abfragen ausgeführt werden, läuft DMS langsamer und die Leistungsverbesserungen gehen verloren.

## Zieldatentypen für Amazon Redshift
<a name="CHAP_Target.Redshift.DataTypes"></a>

Der Amazon Redshift Redshift-Endpunkt für AWS DMS unterstützt die meisten Amazon Redshift Redshift-Datentypen. Die folgende Tabelle zeigt die Amazon Redshift Redshift-Zieldatentypen, die bei der Verwendung unterstützt werden, AWS DMS und die Standardzuweisung von AWS DMS Datentypen.

Weitere Informationen zu AWS DMS Datentypen finden Sie unter[Datentypen für den AWS Database Migration Service](CHAP_Reference.DataTypes.md).


| AWS DMS Datentypen | Amazon-Redshift-Datentypen | 
| --- | --- | 
| BOOLEAN | BOOL | 
| BYTES | VARCHAR (Länge) | 
| DATE | DATE | 
| TIME | VARCHAR(20) | 
| DATETIME |  Wenn die Skala => 0 und =< 6 ist, je nach Redshift-Zielspaltentyp einer der folgenden: TIMESTAMP (s) TIMESTAMPTZ (s) – Wenn der Quell-Zeitstempel einen Zonen-Offset enthält (wie in SQL Server oder Oracle), wird er beim Einfügen/Aktualisieren in UTC konvertiert. Wenn er keinen Offset enthält, wird die Zeit bereits in UTC berücksichtigt. Ist die Skalierung => 7 und =< 9, dann:  VARCHAR (37) | 
| INT1 | INT2 | 
| INT2 | INT2 | 
| INT4 | INT4 | 
| INT8 | INT8 | 
| NUMERIC | Ist die Skalierung => 0 und =< 37, dann:  NUMERIC (p,s)  Ist die Skalierung => 38 und =< 127, dann:  VARCHAR (Länge) | 
| REAL4 | FLOAT4 | 
| REAL8 | FLOAT8 | 
| STRING | Bei einer Länge von 1 bis 65 535 Verwendung von VARCHAR (Länge in Byte)  Bei einer Länge von 65 536 bis 2 147 483 647 Verwendung von VARCHAR (65535) | 
| UINT1 | INT2 | 
| UINT2 | INT2 | 
| UINT4 | INT4 | 
| UINT8 | NUMERIC (20,0) | 
| WSTRING |  Bei einer Länge von 1 bis 65 535 Verwendung von NVARCHAR (Länge in Byte)  Bei einer Länge von 65 536 bis 2 147 483 647 Verwendung von NVARCHAR (65535) | 
| BLOB | VARCHAR (maximale LOB-Größe \$1 2)  Die maximale LOB-Größe darf 31 KB nicht überschreiten. Amazon Redshift unterstützt keine Größe von VARCHARs mehr als 64 KB. | 
| NCLOB | NVARCHAR (maximale LOB-Größe)  Die maximale LOB-Größe darf 63 KB nicht überschreiten. Amazon Redshift unterstützt keine Größe von VARCHARs mehr als 64 KB. | 
| CLOB | VARCHAR (maximale LOB-Größe)  Die maximale LOB-Größe darf 63 KB nicht überschreiten. Amazon Redshift unterstützt keine Größe von VARCHARs mehr als 64 KB. | 

## Verwendung AWS DMS mit Amazon Redshift Serverless als Ziel
<a name="CHAP_Target.Redshift.RSServerless"></a>

AWS DMS unterstützt die Verwendung von Amazon Redshift Serverless als Zielendpunkt. Informationen zur Verwendung von Amazon Redshift Serverless finden Sie unter [Amazon Redshift Serverless](https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-serverless.html) im [Amazon-Redshift-Verwaltungshandbuch](https://docs.aws.amazon.com/redshift/latest/mgmt/welcome.html).

In diesem Thema wird beschrieben, wie Sie einen Amazon Redshift Serverless-Endpoint mit verwenden. AWS DMS

**Anmerkung**  
Wenn Sie einen Amazon Redshift Serverless-Endpunkt erstellen, verwenden Sie für das **DatabaseName**Feld Ihrer [RedshiftSettings](https://docs.aws.amazon.com/dms/latest/APIReference/API_RedshiftSettings.html)Endpunktkonfiguration entweder den Namen des Amazon Redshift Data Warehouse oder den Namen des Arbeitsgruppen-Endpunkts. Verwenden Sie für das **ServerName**Feld den Wert für Endpoint, der auf der **Arbeitsgruppenseite** für den serverlosen Cluster angezeigt wird (z. B.). `default-workgroup.093291321484.us-east-1.redshift-serverless.amazonaws.com` Weitere Informationen zum Erstellen eines Endpunkts finden Sie unter [Erstellen der Quell- und Zielendpunkte](CHAP_Endpoints.Creating.md). Informationen zum Arbeitsgruppenendpunkt finden Sie unter [Verbinden mit Amazon Redshift Serverless](https://docs.aws.amazon.com/redshift/latest/mgmt/serverless-connecting.html).

### Vertrauensrichtlinie mit Amazon Redshift Serverless als Ziel
<a name="CHAP_Target.Redshift.RSServerless.policy"></a>

Wenn Sie Amazon Redshift Serverless als Zielendpunkt verwenden, müssen Sie Ihrer Vertrauensrichtlinie den folgenden hervorgehobenen Abschnitt hinzufügen. Diese Vertrauensrichtlinie wird der Rolle `dms-access-for-endpoint` angefügt.

Weitere Informationen zur Verwendung einer Vertrauensrichtlinie mit finden Sie AWS DMS unter. [Die IAM-Rollen zur Verwendung mit erstellen AWS DMS](security-iam.md#CHAP_Security.APIRole)

### Einschränkungen bei Verwendung von Amazon Redshift Serverless als Ziel
<a name="CHAP_Target.Redshift.RSServerless.Limitations"></a>

Bei Verwendung von Redshift Serverless als Ziel gelten folgende Einschränkungen:
+ AWS DMS unterstützt Amazon Redshift Serverless nur als Endpunkt in Regionen, die Amazon Redshift Serverless unterstützen. Informationen über die Regionen, die Amazon Redshift Serverless unterstützen, finden Sie unter **Redshift Serverless API** im Thema [Endpunkte und Kontingente von Amazon Redshift](https://docs.aws.amazon.com/general/latest/gr/redshift-service.html) in der [Allgemeinen AWS -Referenz](https://docs.aws.amazon.com/general/latest/gr/Welcome.html).
+ Wenn Sie Enhanced VPC Routing verwenden, stellen Sie sicher, dass Sie einen Amazon-S3-Endpunkt in derselben VPC erstellen, in der sich auch Ihr Redshift-Serverless-Cluster oder Ihr von Redshift bereitgestellter Cluster befindet. Weitere Informationen finden Sie unter [Verwendung von erweitertem VPC-Routing mit Amazon Redshift als Ziel für AWS Database Migration Service](#CHAP_Target.Redshift.EnhancedVPC).
+ AWS DMS unterstützt Enhanced Throughput für Amazon Redshift Serverless nicht als Ziel. Weitere Informationen finden Sie unter [Verbesserter Durchsatz für Volllast-Migrationen von Oracle zu Amazon Redshift und Amazon S3](CHAP_Serverless.Components.md#CHAP_Serverless.Throughput).
+ AWS DMS unterstützt keine Verbindungen zu Amazon Redshift Redshift Serverless, wenn der SSL-Modus auf eingestellt ist. `verify-full` Verwenden Sie für Verbindungen, die eine SSL-Überprüfung zu Amazon Redshift Serverless-Zielen erfordern, alternative SSL-Modi wie `require` oder. `verify-ca`

# Verwendung einer SAP ASE-Datenbank als Ziel für AWS Database Migration Service
<a name="CHAP_Target.SAP"></a>

Sie können Daten zu Datenbanken von SAP Adaptive Server Enterprise (ASE) — früher bekannt als Sybase — migrieren AWS DMS, indem Sie entweder eine der unterstützten Datenbankquellen verwenden.

Hinweise zu Versionen von SAP ASE, die als Ziel AWS DMS unterstützt werden, finden Sie unter. [Ziele für AWS DMS](CHAP_Introduction.Targets.md)

## Voraussetzungen für die Verwendung einer SAP ASE-Datenbank als Ziel für AWS Database Migration Service
<a name="CHAP_Target.SAP.Prerequisites"></a>

Bevor Sie beginnen, mit einer SAP ASE-Datenbank als Ziel für zu arbeiten AWS DMS, stellen Sie sicher, dass Sie die folgenden Voraussetzungen erfüllen:
+ Gewähren Sie dem AWS DMS Benutzer Zugriff auf das SAP ASE-Konto. Dieser Benutzer muss über read/write Berechtigungen in der SAP ASE-Datenbank verfügen.
+ In einigen Fällen kann es vorkommen, dass Sie auf eine SAP-ASE-Version 15.7 replizieren, die auf einer Amazon-EC2-Instance unter Microsoft Windows installiert ist, die mit nicht-lateinischen Zeichen (z. B. Chinesisch) konfiguriert ist. In solchen Fällen AWS DMS muss SAP ASE 15.7 SP121 auf dem SAP ASE-Zielcomputer installiert sein.

## Einschränkungen bei der Verwendung einer SAP ASE-Datenbank als Ziel für AWS DMS
<a name="CHAP_Target.SAP.Limitations"></a>

Die folgenden Einschränkungen gelten, wenn Sie eine SAP-ASE-Datenbank als Ziel für AWS DMS verwenden:
+ AWS DMS unterstützt keine Tabellen, die Felder mit den folgenden Datentypen enthalten. Replizierte Spalten mit diesen Datentypen werden als Null angezeigt. 
  + Benutzerdefinierter Typ (UDT)

## Endpunkteinstellungen bei Verwendung von SAP ASE als Ziel für AWS DMS
<a name="CHAP_Target.SAP.ConnectionAttrib"></a>

Sie können Endpunkteinstellungen zum Konfigurieren Ihrer SAP-ASE-Zieldatenbank verwenden, ähnlich wie Sie zusätzliche Verbindungsattribute verwenden. Sie geben die Einstellungen an, wenn Sie den Zielendpunkt mithilfe der AWS DMS Konsole oder mithilfe des `create-endpoint` Befehls in [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html), mit der `--sybase-settings '{"EndpointSetting": "value", ...}'` JSON-Syntax erstellen.

Die folgende Tabelle zeigt die Endpunkteinstellungen, die Sie mit SAP ASE als Ziel verwenden können.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/dms/latest/userguide/CHAP_Target.SAP.html)

## Zieldatentypen für SAP ASE
<a name="CHAP_Target.SAP.DataTypes"></a>

Die folgende Tabelle zeigt die Zieldatentypen der SAP ASE-Datenbank, die bei der Verwendung unterstützt werden, AWS DMS sowie die Standardzuweisung von AWS DMS Datentypen.

Weitere Hinweise zu AWS DMS Datentypen finden Sie unter[Datentypen für den AWS Database Migration Service](CHAP_Reference.DataTypes.md).


|  AWS DMS Datentypen  |  SAP ASE-Datentypen  | 
| --- | --- | 
| BOOLEAN | BIT | 
| BYTES | VARBINARY (Länge) | 
| DATE | DATE | 
| TIME | TIME | 
| TIMESTAMP (ZEITSTEMPEL) |  Ist die Skalierung => 0 und =< 6, dann: BIGDATETIME  Ist die Skalierung => 7 und =< 9, dann: VARCHAR (37)  | 
| INT1 | TINYINT | 
| INT2 | SMALLINT | 
| INT4 | INTEGER | 
| INT8 | BIGINT | 
| NUMERIC | NUMERIC (p,s) | 
| REAL4 | REAL | 
| REAL8 | DOUBLE PRECISION | 
| STRING | VARCHAR (Länge) | 
| UINT1 | TINYINT | 
| UINT2 | UNSIGNED SMALLINT | 
| UINT4 | UNSIGNED INTEGER | 
| UINT8 | UNSIGNED BIGINT | 
| WSTRING | VARCHAR (Länge) | 
| BLOB | IMAGE | 
| CLOB | UNITEXT | 
| NCLOB | TEXT | 

# Verwendung von Amazon S3 als Ziel für AWS Database Migration Service
<a name="CHAP_Target.S3"></a>

Sie können Daten AWS DMS aus jeder der unterstützten Datenbankquellen zu Amazon S3 migrieren. Wenn Sie Amazon S3 als Ziel in einer AWS DMS Aufgabe verwenden, werden sowohl Volllast- als auch CDC-Daten (Change Data Capture) standardmäßig in das Format mit kommagetrennten Werten (.csv) geschrieben. Für kompaktere Speicher- und schnellere Abfrageoptionen haben Sie zudem die Möglichkeit, die Daten im Apache Parquet-Format (.parquet) zu schreiben. 

AWS DMS benennt Dateien, die während eines vollständigen Ladevorgangs erstellt wurden, mithilfe eines inkrementellen Hexadezimalzählers — zum Beispiel .csv,... LOAD00001 LOAD00002 , LOAD00009, LOAD0000 A usw. für CSV-Dateien. AWS DMS benennt CDC-Dateien mithilfe von Zeitstempeln, zum Beispiel 20141029-1134010000.csv. AWS DMS Erstellt für jede Quelltabelle, die Datensätze enthält, einen Ordner unter dem angegebenen Zielordner (sofern die Quelltabelle nicht leer ist). AWS DMS schreibt alle Volllast- und CDC-Dateien in den angegebenen Amazon S3 S3-Bucket. Sie können die Größe der AWS DMS erstellten Dateien mithilfe der [MaxFileSize](https://docs.aws.amazon.com/dms/latest/APIReference/API_S3Settings.html#DMS-Type-S3Settings-MaxFileSize)Endpunkteinstellung steuern. 

Der Parameter `bucketFolder` enthält den Speicherort, an dem die CSV- oder Parquet-Dateien vor dem Hochladen in den S3-Bucket gespeichert werden. Bei CSV-Dateien werden die Tabellendaten im folgenden Format im S3-Bucket gespeichert, dargestellt für Dateien des vollständigen Ladevorgangs.

```
database_schema_name/table_name/LOAD00000001.csv
database_schema_name/table_name/LOAD00000002.csv
...
database_schema_name/table_name/LOAD00000009.csv
database_schema_name/table_name/LOAD0000000A.csv
database_schema_name/table_name/LOAD0000000B.csv
...database_schema_name/table_name/LOAD0000000F.csv
database_schema_name/table_name/LOAD00000010.csv
...
```

Sie können mithilfe der zusätzlichen Verbindungsattribute die Trennzeichen für die Spalte und die Zeile sowie andere Parameter festlegen. Weitere Informationen zu den zusätzlichen Verbindungsattributen finden Sie unter [Endpunkteinstellungen bei Verwendung von Amazon S3 als Ziel für AWS DMS](#CHAP_Target.S3.Configuring) am Ende dieses Abschnitts.

Um Spoofing zu verhindern, AWS DMS überprüft die Inhaberschaft des Buckets, bevor Operationen ausgeführt werden. Wenn die `ExpectedBucketOwner` Amazon S3 S3-Endpunkteinstellung nicht angegeben ist, wird standardmäßig die AWS Konto-ID AWS DMS verwendet, der die AWS DMS Servicerolle gehört, als erwarteter Bucket-Besitzer.

Um Daten in einen S3-Bucket zu migrieren, der einem anderen AWS Konto gehört, müssen Sie den tatsächlichen Bucket-Besitzer in der `ExpectedBucketOwner` Amazon S3 S3-Endpunkteinstellung explizit angeben, wie im Folgenden dargestellt. Andernfalls schlägt die kontoübergreifende Replikationsaufgabe fehl.

```
--s3-settings '{"ExpectedBucketOwner": "AWS_Account_ID"}'
```

Wenn Sie Datenänderungen mithilfe einer CDC-Aufgabe replizieren, gibt die erste Spalte der CSV- oder .parquet-Ausgabedatei an, wie die Zeilendaten geändert wurden, wie in der folgenden CSV-Datei gezeigt. AWS DMS 

```
I,101,Smith,Bob,4-Jun-14,New York
U,101,Smith,Bob,8-Oct-15,Los Angeles
U,101,Smith,Bob,13-Mar-17,Dallas
D,101,Smith,Bob,13-Mar-17,Dallas
```

Nehmen wir für dieses Beispiel an, dass die Quelldatenbank eine `EMPLOYEE` Tabelle enthält. AWS DMS schreibt als Reaktion auf die folgenden Ereignisse Daten in die .csv- oder .parquet-Datei:
+ Ein neuer Mitarbeiter (Bob Smith, Mitarbeiter-ID 101) wird am 04. Juni 2014 in der Niederlassung in New York eingestellt. In der CSV- oder Parquet-Datei gibt das `I` in der ersten Spalte an, dass eine neue Zeile in die MITARBEITER-Tabelle in der Quelldatenbank `INSERT`ed (eingefügt) wurde.
+ Am 08. Oktober 2015 wechselt Bob zur Niederlassung in Los Angeles. In der CSV- oder Parquet-Datei gibt das `U` an, dass die entsprechende Zeile in der MITARBEITER-Tabelle `UPDATE`d (aktualisiert) wurde, um Bobs neuen Firmenstandort widerzuspiegeln. Der Rest der Linie spiegelt die Zeile in der MITARBEITER-Tabelle wider, wie sie nach dem `UPDATE` angezeigt wird. 
+ Am 13. März 2017 wechselt Bob erneut zur Niederlassung in Dallas. In der CSV- oder Parquet-Datei gibt das `U` an, dass diese Zeile erneut `UPDATE`d (aktualisiert) wurde. Der Rest der Linie spiegelt die Zeile in der MITARBEITER-Tabelle wider, wie sie nach dem `UPDATE` angezeigt wird.
+ Nach einiger Zeit der Arbeit in Dallas verlässt Bob die Firma. In der CSV- oder Parquet-Datei gibt das `D` an, dass die Zeile in der Quelltabelle `DELETE`d (gelöscht) wurde. Der Rest der Linie spiegelt wider, wie die Zeile in der MITARBEITER-Tabelle vor der Löschung angezeigt wurde.

Beachten Sie, dass CDC standardmäßig die Zeilenänderungen für jede Datenbanktabelle unabhängig von der Transaktionsreihenfolge AWS DMS speichert. Wenn Sie die Zeilenänderungen in CDC-Dateien der Transaktionsreihenfolge entsprechend speichern möchten, müssen Sie dies und den Ordnerpfad, in dem die CDC-Transaktionsdateien auf dem S3-Ziel gespeichert werden sollen, über S3-Endpunkteinstellungen angeben. Weitere Informationen finden Sie unter [Erfassen von Datenänderungen (CDC), einschließlich Transaktionsreihenfolge auf dem S3-Ziel](#CHAP_Target.S3.EndpointSettings.CdcPath).

Um die Häufigkeit von Schreibvorgängen auf ein Amazon-S3-Ziel während einer Datenreplikationsaufgabe zu steuern, können Sie die zusätzlichen Verbindungsattribute `cdcMaxBatchInterval` und `cdcMinFileSize` konfigurieren. Dies kann zu einer besseren Leistung bei der Analyse der Daten ohne zusätzliche überflüssige Aufgaben führen. Weitere Informationen finden Sie unter [Endpunkteinstellungen bei Verwendung von Amazon S3 als Ziel für AWS DMS](#CHAP_Target.S3.Configuring). 

**Topics**
+ [Voraussetzungen für die Verwendung von Amazon S3 als Ziel](#CHAP_Target.S3.Prerequisites)
+ [Einschränkungen bei der Verwendung von Amazon S3 als Ziel](#CHAP_Target.S3.Limitations)
+ [Sicherheit](#CHAP_Target.S3.Security)
+ [Speichern von Amazon-S3-Objekten mithilfe von Apache Parquet](#CHAP_Target.S3.Parquet)
+ [Markieren von Amazon-S3-Objekten](#CHAP_Target.S3.Tagging)
+ [AWS KMS Schlüssel zur Verschlüsselung von Amazon S3 S3-Zielobjekten erstellen](#CHAP_Target.S3.KMSKeys)
+ [Verwenden einer datumsbasierten Ordnerpartitionierung](#CHAP_Target.S3.DatePartitioning)
+ [Paralleles Laden partitionierter Quellen bei Verwendung von Amazon S3 als Ziel für AWS DMS](#CHAP_Target.S3.ParallelLoad)
+ [Endpunkteinstellungen bei Verwendung von Amazon S3 als Ziel für AWS DMS](#CHAP_Target.S3.Configuring)
+ [Verwendung AWS Glue Data Catalog mit einem Amazon S3 S3-Ziel für AWS DMS](#CHAP_Target.S3.GlueCatalog)
+ [Verwenden von Datenverschlüsselung, Parquet-Dateien und CDC auf Ihrem Amazon-S3-Ziel](#CHAP_Target.S3.EndpointSettings)
+ [Angabe von Quelldatenbankoperationen in migrierten S3-Daten](#CHAP_Target.S3.Configuring.InsertOps)
+ [Zieldatentypen für S3 Parquet](#CHAP_Target.S3.DataTypes)

## Voraussetzungen für die Verwendung von Amazon S3 als Ziel
<a name="CHAP_Target.S3.Prerequisites"></a>

Überprüfen Sie, ob folgende Bedingungen erfüllt sind, bevor Sie Amazon S3 als Ziel verwenden: 
+ Der S3-Bucket, den Sie als Ziel verwenden, befindet sich in derselben AWS Region wie die DMS-Replikationsinstanz, die Sie für die Migration Ihrer Daten verwenden.
+ Das AWS Konto, das Sie für die Migration verwenden, hat eine IAM-Rolle mit Schreib- und Löschzugriff auf den S3-Bucket, den Sie als Ziel verwenden.
+ Diese Rolle besitzt Tagging-Zugriff, sodass Sie alle S3-Objekte, die in den Ziel-Bucket geschrieben werden, markieren können.
+ Der IAM-Rolle wurde DMS (dms.amazonaws.com) als *vertrauenswürdige Entität* hinzugefügt. 
+ Für AWS DMS Version 3.4.7 und höher muss DMS über einen VPC-Endpunkt oder eine öffentliche Route auf den Quell-Bucket zugreifen. Informationen zu VPC-Endpunkten finden Sie unter. [Konfiguration von VPC-Endpunkten für AWS DMS](CHAP_VPC_Endpoints.md)

Um diesen Kontozugriff einzurichten, vergewissern Sie sich, dass die dem Benutzerkonto zugewiesene Rolle, mit der die Migrationsaufgabe erstellt wird, den folgenden Satz von Berechtigungen aufweist.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:DeleteObject",
                "s3:PutObjectTagging"
            ],
            "Resource": [
                "arn:aws:s3:::buckettest2/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::buckettest2"
            ]
        }
    ]
}
```

------

Die Voraussetzungen für die Verwendung der Validierung mit S3 als Ziel finden Sie unter [Voraussetzungen für die S3-Zielvalidierung](CHAP_Validating_S3.md#CHAP_Validating_S3_prerequisites).

## Einschränkungen bei der Verwendung von Amazon S3 als Ziel
<a name="CHAP_Target.S3.Limitations"></a>

Bei der Verwendung von Amazon S3 als Ziel gelten die folgenden Einschränkungen:
+ Aktivieren Sie die Versionsverwaltung für S3 nicht. Wenn Sie die Versionsverwaltung für S3 benötigen, verwenden Sie Lebenszyklusrichtlinien, um alte Versionen aktiv zu löschen. Andernfalls kann es aufgrund eines Timeouts eines `list-object`-Aufrufs in S3 zu Verbindungsfehlern beim Endpunkttest kommen. Informationen zum Erstellen einer Lebenszyklusrichtlinie für einen S3-Bucket finden Sie unter [Verwalten Ihres Speicher-Lebenszyklus](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html). Informationen zum Löschen einer Version eines S3-Objekts finden Sie unter [Löschen von Objekten aus einem versionsverwaltungsfähigen Bucket](https://docs.aws.amazon.com/AmazonS3/latest/dev/DeletingObjectVersions.html).
+ Ein VPC-fähiger S3-Bucket (Gateway-VPC) wird in den Versionen 3.4.7 und höher unterstützt.
+ Die folgenden DDL-Befehle (Data Definition Language) werden für Change Data Capture (CDC) unterstützt: Truncate Table (Tabelle kürzen), Drop Table (Tabelle löschen), Create Table (Tabelle erstellen), Rename Table (Tabelle umbenennen), Add Column (Spalte hinzufügen), Drop Column (Spalte löschen), Rename Column (Spalte umbenennen) und Change Column Data Type (Spaltendatentyp ändern). Beachten Sie, dass beim Hinzufügen, Löschen oder Umbenennen einer Spalte in der Quelldatenbank keine ALTER-Anweisung im Ziel-S3-Bucket aufgezeichnet wird und AWS DMS dass zuvor erstellte Datensätze nicht an die neue Struktur angepasst werden. AWS DMS Erstellt nach der Änderung alle neuen Datensätze unter Verwendung der neuen Tabellenstruktur.
**Anmerkung**  
Bei einer DDL-Operation zum Kürzen werden alle Dateien und die entsprechenden Tabellenordner aus einem S3-Bucket entfernt. Mithilfe von Aufgabeneinstellungen können Sie dieses Verhalten deaktivieren und konfigurieren, wie DMS mit dem DDL-Verhalten bei Change Data Capture (CDC) umgehen soll. Weitere Informationen finden Sie unter [Aufgabeneinstellungen für den Umgang mit der DDL-Änderungsverarbeitung](CHAP_Tasks.CustomizingTasks.TaskSettings.DDLHandling.md).
+ Der vollständige LOB-Modus wird nicht unterstützt.
+ Änderungen an der Quelltabellenstruktur während des vollständigen Ladevorgangs werden nicht unterstützt. Änderungen an Daten werden während des vollständigen Ladevorgangs unterstützt.
+ Mehrere Aufgaben, die Daten aus derselben Quelltabelle in denselben S3-Ziel-Endpunkt-Bucket replizieren, führen dazu, dass diese Aufgaben in dieselbe Datei schreiben. Wir empfehlen, unterschiedliche Zielendpunkte (Buckets) anzugeben, wenn die Datenquelle aus derselben Tabelle stammt.
+ `BatchApply` wird für einen S3-Endpunkt nicht unterstützt. Bei Verwendung von Batch Apply (z. B. der Zielmetadaten-Aufgabeneinstellung `BatchApplyEnabled`) für ein S3-Ziel kann es zu einem Datenverlust kommen.
+ Sie können `DatePartitionEnabled` oder `addColumnName` nicht zusammen mit `PreserveTransactions` oder `CdcPath` verwenden.
+ AWS DMS unterstützt nicht das Umbenennen mehrerer Quelltabellen in denselben Zielordner mithilfe von Transformationsregeln.
+ Wenn während der Vollladephase intensiv in die Quelltabelle geschrieben wird, schreibt DMS möglicherweise doppelte Datensätze in den S3-Bucket oder zwischengespeicherte Änderungen.
+ Wenn Sie die Aufgabe mit einem `TargetTablePrepMode` von `DO_NOTHING` konfigurieren, schreibt DMS möglicherweise doppelte Datensätze in den S3-Bucket, wenn die Aufgabe während der Vollladephase unterbrochen und abrupt wieder aufgenommen wird.
+ Wenn Sie den Zielendpunkt mit der `PreserveTransactions`-Einstellung `true` konfigurieren, werden zuvor generierte CDC-Dateien beim erneuten Laden einer Tabelle nicht gelöscht. Weitere Informationen finden Sie unter [Erfassen von Datenänderungen (CDC), einschließlich Transaktionsreihenfolge auf dem S3-Ziel](#CHAP_Target.S3.EndpointSettings.CdcPath).

Die Einschränkungen für die Verwendung der Validierung mit S3 als Ziel finden Sie unter [Einschränkungen bei Verwendung der S3-Zielvalidierung](CHAP_Validating_S3.md#CHAP_Validating_S3_limitations).

## Sicherheit
<a name="CHAP_Target.S3.Security"></a>

Um Amazon S3 als Ziel verwenden zu können, muss das für die Migration eingesetzte Konto über Schreib- und Löschzugriff auf den Amazon-S3-Bucket verfügen, den Sie als Ziel verwenden. Geben Sie den Amazon-Ressourcennamen (ARN) einer IAM-Rolle an, die über die erforderlichen Berechtigungen für den Zugriff auf Amazon S3 verfügt. 

AWS DMS unterstützt eine Reihe vordefinierter Grants für Amazon S3, sogenannte vorgefertigte Zugriffskontrolllisten (ACLs). Jede vordefinierte ACL umfasst eine Reihe von Empfängern und Berechtigungen, die Sie verwenden können, um Berechtigungen für den Amazon-S3-Bucket festzulegen. Sie können eine vordefinierte ACL mit dem `cannedAclForObjects` in dem Attribut der Verbindungszeichenfolge für Ihren S3-Zielendpunkt festlegen. Weitere Informationen zur Verwendung des zusätzlichen Oracle-Verbindungsattributs `cannedAclForObjects` finden Sie unter [Endpunkteinstellungen bei Verwendung von Amazon S3 als Ziel für AWS DMS](#CHAP_Target.S3.Configuring). Weitere Informationen zu Amazon S3 Canned finden Sie ACLs unter [Canned ACL](https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl).

Die IAM-Rolle, die Sie für die Migration verwenden, muss in der Lage sein, die API-Operation `s3:PutObjectAcl` durchzuführen.

## Speichern von Amazon-S3-Objekten mithilfe von Apache Parquet
<a name="CHAP_Target.S3.Parquet"></a>

Das CSV-Format ist das Standardspeicherformat für Amazon-S3-Zielobjekte. Das Apache Parquet-Speicherformat (.parquet) bietet indessen kompaktere Speicheroptionen und schnellere Abfragen.

Apache Parquet ist ein Open-Source-Dateispeicherformat, das ursprünglich für Hadoop entwickelt wurde. Weitere Informationen über Apache Parquet finden Sie unter [https://parquet.apache.org/](https://parquet.apache.org/).

Um .parquet als das Speicherformat für Ihre migrierten S3-Zielobjekte festzulegen, können Sie die folgenden Mechanismen verwenden:
+ Endpunkteinstellungen, die Sie bei der Erstellung des Endpunkts mithilfe der AWS CLI oder der API für AWS DMS als Parameter für ein JSON-Objekt angeben. Weitere Informationen finden Sie unter [Verwenden von Datenverschlüsselung, Parquet-Dateien und CDC auf Ihrem Amazon-S3-Ziel](#CHAP_Target.S3.EndpointSettings).
+ Zusätzliche Verbindungsattribute, die Sie bei der Erstellung des Endpunkts als eine durch Semikolons getrennte Liste bereitstellen. Weitere Informationen finden Sie unter [Endpunkteinstellungen bei Verwendung von Amazon S3 als Ziel für AWS DMS](#CHAP_Target.S3.Configuring).

## Markieren von Amazon-S3-Objekten
<a name="CHAP_Target.S3.Tagging"></a>

Sie können von einer Replikations-Instance erstellte Amazon-S3-Objekte markieren, indem Sie entsprechende JSON-Objekte als Teil der Aufgaben-Tabellen-Zuweisungsregeln angeben. Weitere Informationen über die Anforderungen und Optionen für das Markieren von S3-Objekten, einschließlich gültiger Tag-Namen, finden Sie unter [Markieren von Objekten](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-tagging.html) im *Benutzerhandbuch für Amazon Simple Storage Service*. Weitere Informationen über Tabellenzuweisungen mithilfe von JSON finden Sie unter [Festlegen der Tabellenauswahl- und Transformationsregeln mit JSON](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.md).

Sie markieren S3-Objekte, die für bestimmte Tabellen und Schemata erstellt wurden, mithilfe eines oder mehrerer JSON-Objekte des `selection`-Regeltyps. Nach Ausführung dieses `selection`-Objekts (oder dieser Objekte) können Sie ein oder mehrere JSON-Objekte des `post-processing`-Regeltyps mithilfe der `add-tag`-Aktion hinzufügen. Diese Nachbearbeitungsregeln identifizieren die zu markierenden S3-Objekte und geben die Namen und Werte der Tags an, die Sie diesen S3-Objekten hinzufügen möchten.

Sie finden die Parameter zur Angabe in den JSON-Objekten des `post-processing`-Regeltyps in der folgenden Tabelle.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/dms/latest/userguide/CHAP_Target.S3.html)

Wenn Sie mehrere `post-processing`-Regeltypen verwenden, um eine Reihe von S3-Objekten zu markieren, wird jedes S3-Objekt mit nur einem `tag-set`-Objekt aus einer Nachbearbeitungsregel markiert. Zum Markieren eines bestimmten S3-Objekts wird der Tag-Satz verwendet, dessen zugehöriger Objekt-Locator dem S3-Objekt am besten entspricht. 

Nehmen Sie beispielsweise an, dass zwei Nachbearbeitungsregeln das gleiche S3-Objekt identifizieren. Darüber hinaus gehen wir davon aus, dass der Objekt-Locator der einen Regel Platzhalter verwendet und der Objekt-Locator der anderen Regel eine genaue Übereinstimmung zur Identifizierung des S3-Objekts einsetzt (ohne Platzhalter). In diesem Fall wird der Tag-Satz zur Markierung des S3-Objekts verwendet, dessen Nachbearbeitungsregel eine genaue Übereinstimmung aufweist. Wenn mehrere Nachbearbeitungsregeln einem bestimmten S3-Objekt gleich gut entsprechen, wird der Tag-Satz zur Markierung des Objekts verwendet, der der ersten dieser Nachbearbeitungsregeln zugewiesen ist.

**Example Hinzufügen von statischen Tags zu einem S3-Objekt, das für ein einzelnes Schema und eine einzelne Tabelle erstellt wurde**  
Die folgenden Auswahl- und Nachbearbeitungsregeln fügen einem erstellten S3-Objekt drei Tags (`tag_1`, `tag_2` und `tag_3` mit den entsprechenden statischen Werten `value_1`, `value_2` und `value_3`) hinzu. Dieses S3-Objekt entspricht einer einzelnen Tabelle in der Quelle mit dem Namen `STOCK` mit einem Schema mit dem Namen `aat2`.  

```
{
    "rules": [
        {
            "rule-type": "selection",
            "rule-id": "5",
            "rule-name": "5",
            "object-locator": {
                "schema-name": "aat2",
                "table-name": "STOCK"
            },
            "rule-action": "include"
        },
        {
            "rule-type": "post-processing",
            "rule-id": "41",
            "rule-name": "41",
            "rule-action": "add-tag",
            "object-locator": {
                "schema-name": "aat2",
                "table-name": "STOCK"
            },
            "tag-set": [
              {
                "key": "tag_1",
                "value": "value_1"
              },
              {
                "key": "tag_2",
                "value": "value_2"
              },
              {
                "key": "tag_3",
                "value": "value_3"
              }                                     
           ]
        }
    ]
}
```

**Example Hinzufügen von statischen und dynamischen Tags zu S3-Objekten, die für mehrere Tabellen und Schemata erstellt wurden**  
Das folgende Beispiel zeigt eine Auswahlregel und zwei Nachbearbeitungsregeln, wobei die Eingabe aus der Quelle alle Tabellen und deren zugehörigen Schemata umfasst.  

```
{
    "rules": [
        {
            "rule-type": "selection",
            "rule-id": "1",
            "rule-name": "1",
            "object-locator": {
                "schema-name": "%",
                "table-name": "%"
            },
            "rule-action": "include"
        },
        {
            "rule-type": "post-processing",
            "rule-id": "21",
            "rule-name": "21",
            "rule-action": "add-tag",
            "object-locator": {
                "schema-name": "%",
                "table-name": "%",
            },
            "tag-set": [
              { 
                "key": "dw-schema-name",
                "value":"${schema-name}"
              },
              {
                "key": "dw-schema-table",
                "value": "my_prefix_${table-name}"
              }
            ]
        },
        {
            "rule-type": "post-processing",
            "rule-id": "41",
            "rule-name": "41",
            "rule-action": "add-tag",
            "object-locator": {
                "schema-name": "aat",
                "table-name": "ITEM",
            },
            "tag-set": [
              {
                "key": "tag_1",
                "value": "value_1"
              },
              {
                "key": "tag_2",
                "value": "value_2"
              }           ]
        }
    ]
}
```
Die erste Nachbearbeitungsregel fügt die beiden Tags (`dw-schema-name` und `dw-schema-table`) sowie die dazugehörigen dynamischen Werte (`${schema-name}` und `my_prefix_${table-name}`) fast allen S3-Objekten hinzu, die in der Zieldatenbank erstellt wurden. Eine Ausnahme bildet das S3-Objekt, das über die zweite Nachbearbeitungsregel identifiziert und markiert wird. Daher wird jedes S3-Zielobjekt, das durch den Platzhalter-Objekt-Locator identifiziert wurde, mit Tags erstellt, die das Schema und die Tabelle erkennen lassen, dem es in der Quelle zugewiesen ist.  
Die zweite Nachbearbeitungsregel fügt `tag_1` und `tag_2` mit den entsprechenden statischen Werten `value_1` und `value_2` einem erstellten S3-Objekt hinzu, welches von einem Objekt-Locator als eine genaue Übereinstimmung identifiziert wurde. Dieses erstellte S3-Objekt entspricht daher der einzigen Tabelle in der Quelle mit dem Namen `ITEM` mit einem Schema mit dem Namen `aat`. Aufgrund der genauen Entsprechung ersetzen diese Tags alle Tags für dieses Objekt, die von der ersten Nachbearbeitungsregel hinzugefügt wurden, da diese den S3-Objekten nur aufgrund der Platzhalter entsprechen.

**Example Hinzufügen von dynamischen Tag-Namen und -Werten zu S3-Objekten**  
Das folgende Beispiel umfasst zwei Auswahlregeln und eine Nachbearbeitungsregel. Die Eingabe aus der Quelle schließt nur die `ITEM`-Tabelle entweder im `retail`- oder `wholesale`-Schema ein.  

```
{
    "rules": [
        {
            "rule-type": "selection",
            "rule-id": "1",
            "rule-name": "1",
            "object-locator": {
                "schema-name": "retail",
                "table-name": "ITEM"
            },
            "rule-action": "include"
        },
        {
            "rule-type": "selection",
            "rule-id": "1",
            "rule-name": "1",
            "object-locator": {
                "schema-name": "wholesale",
                "table-name": "ITEM"
            },
            "rule-action": "include"
        },
        {
            "rule-type": "post-processing",
            "rule-id": "21",
            "rule-name": "21",
            "rule-action": "add-tag",
            "object-locator": {
                "schema-name": "%",
                "table-name": "ITEM",
            },
            "tag-set": [
              { 
                "key": "dw-schema-name",
                "value":"${schema-name}"
              },
              {
                "key": "dw-schema-table",
                "value": "my_prefix_ITEM"
              },
              {
                "key": "${schema-name}_ITEM_tag_1",
                "value": "value_1"
              },
              {
                "key": "${schema-name}_ITEM_tag_2",
                "value": "value_2"
              }
            ]
    ]
}
```
Der Tag-Satz für die Nachbereitungsregel fügt allen S3-Objekten, die für die `ITEM`-Tabelle in der Zieldatenbank erstellt wurden, zwei Tags (`dw-schema-name` und `dw-schema-table`) hinzu. Das erste Tag hat den dynamischen Wert `"${schema-name}"` und das zweite Tag den statischen Wert `"my_prefix_ITEM"`. Daher wird jedes S3-Zielobjekt mit Tags erstellt, die das Schema und die Tabelle erkennen lassen, dem es in der Quelle zugewiesen ist.   
Darüber hinaus fügt das Tag-Set zwei zusätzliche Tags mit dynamischen Namen hinzu (`${schema-name}_ITEM_tag_1` und `"${schema-name}_ITEM_tag_2"`). Diese haben die entsprechenden statischen Werte `value_1` und `value_2`. Aus diesem Grund werden diese Tags nach dem aktuellen Schema benannt, `retail` oder `wholesale`. In diesem Objekt ist es nicht möglich, einen doppelten dynamischen Tag-Namen zu verleihen, da jedes Objekt für einen einzelnen eindeutigen Schemanamen erstellt wurde. Der Schemaname wird dazu verwendet, einen anderweitig eindeutigen Tag-Namen zu erstellen.

## AWS KMS Schlüssel zur Verschlüsselung von Amazon S3 S3-Zielobjekten erstellen
<a name="CHAP_Target.S3.KMSKeys"></a>

Sie können benutzerdefinierte AWS KMS Schlüssel erstellen und verwenden, um Ihre Amazon S3 S3-Zielobjekte zu verschlüsseln. Nachdem Sie einen KMS-Schlüssel erstellt haben, können Sie ihn verwenden, um Objekte mithilfe eines der folgenden Ansätze zu verschlüsseln, wenn Sie den S3-Zielendpunkt erstellen:
+ Verwenden Sie die folgenden Optionen für die S3-Zielobjekte (im standardmäßigen CSV-Dateispeicherformat), wenn Sie den `create-endpoint`-Befehl mithilfe der AWS CLI ausführen.

  ```
  --s3-settings '{"ServiceAccessRoleArn": "your-service-access-ARN", 
  "CsvRowDelimiter": "\n", "CsvDelimiter": ",", "BucketFolder": "your-bucket-folder", 
  "BucketName": "your-bucket-name", "EncryptionMode": "SSE_KMS", 
  "ServerSideEncryptionKmsKeyId": "your-KMS-key-ARN"}'
  ```

  Hier `your-KMS-key-ARN` ist Ihr- der Amazon-Ressourcenname (ARN) für Ihren KMS-Schlüssel und es ist erforderlich, dass Ihre IAM-Rolle über Zugriffsberechtigungen verfügt, siehe[Verwenden von Datenverschlüsselung, Parquet-Dateien und CDC auf Ihrem Amazon-S3-Ziel](#CHAP_Target.S3.EndpointSettings).
+ Richten Sie für das zusätzliche Verbindungsattribut `encryptionMode` den Wert `SSE_KMS` und für das zusätzliche Verbindungsattribut `serverSideEncryptionKmsKeyId` den ARN für Ihren KMS-Schlüssel ein. Weitere Informationen finden Sie unter [Endpunkteinstellungen bei Verwendung von Amazon S3 als Ziel für AWS DMS](#CHAP_Target.S3.Configuring).

Um Amazon-S3-Zielobjekte mithilfe eines KMS-Schlüssels zu verschlüsseln, benötigen Sie eine IAM-Rolle mit Berechtigungen für den Zugriff auf den Amazon-S3-Bucket. Auf diese IAM-Rolle wird dann in einer Richtlinie (einer Schlüsselrichtlinie) zugegriffen, die dem von Ihnen erstellten Verschlüsselungsschlüssel angefügt ist. Sie können diesen Vorgang in Ihrer IAM-Konsole ausführen, indem Sie Folgendes erstellen:
+ Eine Richtlinie mit Berechtigungen für den Zugriff auf den Amazon-S3-Bucket
+ Eine IAM-Rolle mit dieser Richtlinie
+ Einen KMS-Verschlüsselungsschlüssel mit einer Schlüsselrichtlinie, die sich auf diese Rolle bezieht

Die entsprechende Vorgehensweise wird nachfolgend beschrieben.

**So erstellen Sie eine IAM-Richtlinie mit Berechtigungen für den Zugriff auf den Amazon-S3-Bucket**

1. Öffnen Sie unter [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) die IAM-Konsole.

1. Wählen Sie im Navigationsbereich die Option **Policies (Richtlinien)** aus. Die Seite **Policies (Richtlinien)** wird geöffnet.

1. Wählen Sie **Richtlinie erstellen** aus. Die Seite **Create policy (Richtlinie erstellen)** wird geöffnet.

1. Wählen Sie **Service** und anschließend die Option **S3** aus. Es wird eine Liste mit den Aktionsberechtigungen angezeigt.

1. Wählen Sie **Expand all (Alle maximieren)** aus, um die Liste zu erweitern, und aktivieren Sie zumindest die folgenden Berechtigungen:
   + **ListBucket**
   + **PutObject**
   + **DeleteObject**

   Wählen Sie alle anderen Berechtigungen aus, die Sie benötigen, und klicken Sie anschließend auf **Collapse all (Alle minimieren)**, um die Liste zu reduzieren.

1. Wählen Sie **Resources (Ressourcen)** aus, um die Ressourcen festzulegen, auf die Sie Zugriff erlangen möchten. Wählen Sie zumindest **Alle Ressourcen** aus, um allgemeinen Zugriff auf die Amazon-S3-Ressourcen zu gewähren.

1. Fügen Sie alle anderen Bedingungen oder Berechtigungen hinzu, die Sie benötigen, und wählen Sie dann **Review policy (Richtlinie überprüfen)** aus. Überprüfen Sie die Ergebnisse auf der Seite **Review policy (Richtlinie prüfen)**.

1. Wenn die Einstellungen Ihren Vorstellungen entsprechen, geben Sie einen Namen für die Richtlinie (z. B. `DMS-S3-endpoint-access`) sowie eine Beschreibung ein und wählen Sie anschließend **Create policy (Richtlinie erstellen)** aus. Die Seite **Policies (Richtlinien)** wird geöffnet und zeigt eine Mitteilung an, die darauf hinweist, dass Ihre Richtlinie erstellt wurde.

1. Wählen Sie den Richtliniennamen aus der Liste mit den **Policies (Richtlinien)** aus. Die Seite **Summary (Übersicht)** wird geöffnet und zeigt den JSON-Code für die Richtlinie an, der dem folgenden Beispiel ähnelt.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "VisualEditor0",
               "Effect": "Allow",
               "Action": [
                   "s3:PutObject",
                   "s3:ListBucket",
                   "s3:DeleteObject"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------

Sie haben jetzt die neue Richtlinie erstellt, über die Sie auf Amazon-S3-Ressourcen zugreifen können, um diese mit einem angegebenen Namen, z. B. `DMS-S3-endpoint-access`, zu verschlüsseln.

**So erstellen Sie eine IAM-Rolle mit dieser Richtlinie**

1. Wählen Sie im Navigationsbereich Ihrer IAM-Konsole **Rollen** aus. Die Detailseite **Roles (Rollen)** wird geöffnet.

1. Wählen Sie **Rolle erstellen** aus. Die Seite **Create role (Rolle erstellen)** wird geöffnet.

1. Wenn der AWS Service als vertrauenswürdige Entität ausgewählt ist, wählen Sie **DMS** als den Service aus, um die IAM-Rolle zu verwenden.

1. Wählen Sie **Weiter: Berechtigungen** aus. Die Ansicht **Attach permissions policies (Berechtigungsrichtlinien hinzufügen)** wird auf der Seite **Create role (Rolle erstellen)** angezeigt.

1. Suchen Sie die IAM-Richtlinie für die IAM-Rolle, die Sie im vorherigen Verfahren (`DMS-S3-endpoint-access`) erstellt haben, und wählen Sie sie aus.

1. Wählen Sie **Weiter: Tags** aus. Die Ansicht **Add tags (Tags hinzufügen)** wird auf der Seite **Create role (Rolle erstellen)** angezeigt. Hier können Sie alle gewünschten Tags hinzufügen.

1. Wählen Sie **Weiter: Prüfen** aus. Die Ansicht **Review (Überprüfen)** wird auf der Seite **Create role (Rolle erstellen)** angezeigt. Hier können Sie die Ergebnisse überprüfen.

1. Wenn die Einstellungen Ihren Vorstellungen entsprechen, geben Sie einen Namen für die Rolle (Pflichtangabe, z. B. `DMS-S3-endpoint-access-role`) sowie eine zusätzliche Beschreibung ein, und wählen Sie anschließend **Create role (Rolle erstellen)** aus. Die Detailseite **Roles (Rollen)** wird geöffnet und zeigt eine Mitteilung an, die darauf hinweist, dass Ihre Rolle erstellt wurde.

Sie haben jetzt die neue Rolle erstellt, über die Sie auf Amazon-S3-Ressourcen zugreifen können, um diese mit einem angegebenen Namen, z. B. `DMS-S3-endpoint-access-role`, zu verschlüsseln.

**So erstellen Sie einen KMS-Verschlüsselungsschlüssel mit einer Schlüsselrichtlinie, die sich auf Ihre IAM-Rolle bezieht**
**Anmerkung**  
Weitere Informationen zur AWS DMS Funktionsweise mit AWS KMS Verschlüsselungsschlüsseln finden Sie unter. [Einen Verschlüsselungsschlüssel festlegen und AWS KMS Berechtigungen angeben](CHAP_Security.md#CHAP_Security.EncryptionKey)

1. Melden Sie sich bei der AWS Key Management Service (AWS KMS) -Konsole an AWS-Managementkonsole und öffnen Sie sie unter [https://console.aws.amazon.com/kms](https://console.aws.amazon.com/kms).

1. Um das zu ändern AWS-Region, verwenden Sie die Regionsauswahl in der oberen rechten Ecke der Seite.

1. Klicken Sie im Navigationsbereich auf **Kundenverwaltete Schlüssel**.

1. Klicken Sie auf **Create key**. Die Seite **Configure key (Schlüssel konfigurieren)** wird geöffnet.

1. Wählen Sie für **Key type (Schlüsseltyp)** **Symmetric (Symmetrisch)**.
**Anmerkung**  
Wenn Sie diesen Schlüssel erstellen, können Sie nur einen symmetrischen Schlüssel erstellen, da alle AWS Dienste, wie Amazon S3, nur mit symmetrischen Verschlüsselungsschlüsseln arbeiten.

1. Wählen Sie **Erweiterte Optionen** aus. Stellen Sie für **Key material origin (Schlüsselmaterialherkunft)** sicher, dass **KMS** ausgewählt ist, und wählen Sie dann **Next (Weiter)**. Die Seite **Add Labels (Etiketten hinzufügen)** wird geöffnet.

1. Geben Sie unter **Create alias and description (Alias und Beschreibung erstellen)** einen Alias für den Schlüssel (z. B. `DMS-S3-endpoint-encryption-key`) und eventuell eine weitere Beschreibung ein.

1. Fügen Sie unter **Tags** alle Tags hinzu, die Sie verwenden möchten, um den Schlüssel zu identifizieren und seine Nutzung zu verfolgen, und wählen Sie anschließend **Next Step (Nächster Schritt)** aus. Die Seite **Define key administrative permissions (Schlüsselverwaltungsberechtigungen definieren)** wird geöffnet und zeigt eine Liste der Benutzer und Rollen an, aus denen Sie auswählen können.

1. Fügen Sie die Benutzer und Rollen hinzu, die den Schlüssel verwalten sollen. Stellen Sie sicher, dass diese Benutzer und Rollen über die erforderlichen Berechtigungen verfügen, um den Schlüssel zu verwalten. 

1. Wählen Sie unter **Key deletion (Schlüssellöschung)** aus, ob die Schlüsseladministratoren den Schlüssel löschen können, und klicken Sie anschließend auf **Next Step (Nächster Schritt)**. Die Seite **Define Key usage permissions (Schlüsselnutzungsberechtigungen definieren)** wird geöffnet und zeigt eine weitere Liste mit Benutzern und Rollen an, aus denen Sie auswählen können.

1. Wählen Sie für **Dieses Konto** die verfügbaren Benutzer aus, die kryptografische Operationen auf Amazon-S3-Zielen ausführen sollen. Wählen Sie zudem die Rolle aus, die Sie zuvor unter **Rollen** erstellt haben, um den Zugriff zur Verschlüsselung von Amazon-S3-Zielobjekten zu aktivieren, wie z. B. `DMS-S3-endpoint-access-role`.

1. **Wenn Sie weitere Konten hinzufügen möchten, die nicht aufgeführt sind und über denselben Zugriff verfügen, wählen Sie unter **Andere AWS Konten** die Option **Weiteres AWS Konto hinzufügen** und dann Weiter aus.** Die Seite **Review and edit key policy (Schlüsselrichtlinie prüfen und bearbeiten)** wird geöffnet. Hier wird das JSON für die Schlüsselrichtlinie angezeigt, die Sie überprüfen und bearbeiten können, indem Sie in den vorhandenen JSON-Inhalt schreiben. Hier können Sie sehen, wo die Schlüsselrichtlinie auf die Rolle und die Benutzer (z. B. `Admin` und `User1`) verweist, die Sie im vorherigen Schritt ausgewählt haben. Sie können auch die verschiedenen Schlüsselaktionen sehen, die für die verschiedenen Prinzipale (Benutzer und Rollen) zulässig sind, wie im folgenden Beispiel gezeigt.

------
#### [ JSON ]

****  

   ```
   {
       "Id": "key-consolepolicy-3",
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "Enable IAM User Permissions",
               "Effect": "Allow",
               "Principal": {
                   "AWS": [
                       "arn:aws:iam::111122223333:root"
                   ]
               },
               "Action": "kms:*",
               "Resource": "*"
           },
           {
               "Sid": "Allow access for Key Administrators",
               "Effect": "Allow",
               "Principal": {
                   "AWS": [
                       "arn:aws:iam::111122223333:role/Admin"
                   ]
               },
               "Action": [
                   "kms:Create*",
                   "kms:Describe*",
                   "kms:Enable*",
                   "kms:List*",
                   "kms:Put*",
                   "kms:Update*",
                   "kms:Revoke*",
                   "kms:Disable*",
                   "kms:Get*",
                   "kms:Delete*",
                   "kms:TagResource",
                   "kms:UntagResource",
                   "kms:ScheduleKeyDeletion",
                   "kms:CancelKeyDeletion"
               ],
               "Resource": "*"
           },
           {
               "Sid": "Allow use of the key",
               "Effect": "Allow",
               "Principal": {
                   "AWS": [
                       "arn:aws:iam::111122223333:role/DMS-S3-endpoint-access-role",
                       "arn:aws:iam::111122223333:role/Admin",
                       "arn:aws:iam::111122223333:role/User1"
                   ]
               },
               "Action": [
                   "kms:Encrypt",
                   "kms:Decrypt",
                   "kms:ReEncrypt*",
                   "kms:GenerateDataKey*",
                   "kms:DescribeKey"
               ],
               "Resource": "*"
           },
           {
               "Sid": "Allow attachment of persistent resources",
               "Effect": "Allow",
               "Principal": {
                   "AWS": [
                       "arn:aws:iam::111122223333:role/DMS-S3-endpoint-access-role",
                       "arn:aws:iam::111122223333:role/Admin",
                       "arn:aws:iam::111122223333:role/User1"
                   ]
               },
               "Action": [
                   "kms:CreateGrant",
                   "kms:ListGrants",
                   "kms:RevokeGrant"
               ],
               "Resource": "*",
               "Condition": {
                   "Bool": {
                       "kms:GrantIsForAWSResource": true
                   }
               }
           }
       ]
   }
   ```

------

1. Wählen Sie **Finish** (Abschließen). Die Seite **Verschlüsselungsschlüssel** wird geöffnet und zeigt eine Mitteilung an, die darauf hinweist, dass Ihr KMS-Schlüssel erstellt wurde.

Damit haben Sie einen neuen KMS-Schlüssel mit einem angegebenen Alias (z. B. `DMS-S3-endpoint-encryption-key`) erstellt. Dieser Schlüssel ermöglicht AWS DMS die Verschlüsselung von Amazon S3 S3-Zielobjekten.

## Verwenden einer datumsbasierten Ordnerpartitionierung
<a name="CHAP_Target.S3.DatePartitioning"></a>

AWS DMS unterstützt S3-Ordnerpartitionen auf der Grundlage eines Transaktions-Commit-Datums, wenn Sie Amazon S3 als Zielendpunkt verwenden. Bei Verwendung der datumsbasierten Ordnerpartitionierung können Sie Daten aus einer einzelnen Quelltabelle in eine Zeithierarchie-Ordnerstruktur in einem S3-Bucket schreiben. Die Partitionierung der Ordner beim Erstellen von S3-Zielendpunkten bietet Ihnen folgende Möglichkeiten:
+ Bessere Verwaltung Ihrer S3-Objekte
+ Größenbeschränkung der einzelnen S3-Ordner
+ Optimierung von Data-Lake-Abfragen oder anderen nachfolgenden Operationen

Sie können die datumsbasierte Ordnerpartitionierung beim Erstellen eines S3-Zielendpunkts aktivieren. Sie können sie aktivieren, wenn Sie vorhandene Daten migrieren und laufende Änderungen replizieren (vollständiges Laden \$1 CDC) oder wenn Sie nur Datenänderungen replizieren (nur CDC). Wenn Sie bestehende Daten migrieren und laufende Änderungen replizieren, werden nur laufende Änderungen partitioniert. Verwenden Sie die folgenden Einstellungen für den Zielendpunkt:
+ `DatePartitionEnabled` – Gibt an, dass eine Partitionierung auf der Grundlage von Datumsangaben erfolgen soll. Setzen Sie diese boolesche Option auf `true`, um S3-Bucket-Ordner basierend auf den Commit-Daten von Transaktionen zu partitionieren. 

  Sie können diese Einstellung nicht zusammen mit `PreserveTransactions` oder `CdcPath` verwenden.

  Der Standardwert ist `false`. 
+ `DatePartitionSequence` – Identifiziert die Reihenfolge des Datumsformats, das bei der Ordnerpartitionierung verwendet werden soll. Setzen Sie diese ENUM-Option auf `YYYYMMDD`,`YYYYMMDDHH`, `YYYYMM`, `MMYYYYDD` oder `DDMMYYYY`. Der Standardwert ist `YYYYMMDD`. Verwenden Sie diese Einstellung, wenn `DatePartitionEnabled` auf `true.` gesetzt ist.
+ `DatePartitionDelimiter` – Gibt ein Datumstrennzeichen für die Ordnerpartitionierung an. Setzen Sie diese ENUM-Option auf `SLASH`,`DASH`, `UNDERSCORE` oder `NONE`. Der Standardwert ist `SLASH`. Verwenden Sie diese Einstellung, wenn `DatePartitionEnabled` auf `true` festgelegt ist.
+ `DatePartitionTimezone`— Legen Sie beim Erstellen eines S3-Zielendpunkts fest`DatePartitionTimezone`, dass die aktuelle UTC-Zeit in eine angegebene Zeitzone konvertiert wird. Die Konvertierung erfolgt, wenn ein Datumspartitionsordner erstellt und ein CDC-Dateiname generiert wird. Das Zeitzonenformat ist Gebiet/Ort. Verwenden Sie diesen Parameter, wenn er auf gesetzt `DatePartitionedEnabled` ist`true`, wie im folgenden Beispiel gezeigt:

  ```
  s3-settings='{"DatePartitionEnabled": true, "DatePartitionSequence": "YYYYMMDDHH", "DatePartitionDelimiter": "SLASH", "DatePartitionTimezone":"Asia/Seoul", "BucketName": "dms-nattarat-test"}'
  ```

Das folgende Beispiel zeigt, wie die datumsbasierte Ordnerpartitionierung mit Standardwerten für die Reihenfolge der Datenpartitionen und das Trennzeichen aktiviert wird. Es verwendet die `--s3-settings '{json-settings}'` Option von AWS CLI. `create-endpoint`Befehl. 

```
   --s3-settings '{"DatePartitionEnabled": true,"DatePartitionSequence": "YYYYMMDD","DatePartitionDelimiter": "SLASH"}'
```

## Paralleles Laden partitionierter Quellen bei Verwendung von Amazon S3 als Ziel für AWS DMS
<a name="CHAP_Target.S3.ParallelLoad"></a>

Sie können einen parallelen vollständigen Ladevorgang partitionierter Datenquellen in Amazon-S3-Ziele konfigurieren. Durch dieses Vorgehen verbessern sich die Ladezeiten bei der Migration partitionierter Daten von unterstützten Quelldatenbank-Engines zum S3-Ziel. Um die Ladezeiten partitionierter Quelldaten zu verbessern, erstellen Sie S3-Zielunterordner, die den Partitionen jeder Tabelle in der Quelldatenbank zugeordnet sind. Diese partitionsgebundenen Unterordner ermöglichen es AWS DMS , parallel Prozesse auszuführen, um jeden Unterordner auf dem Ziel zu füllen.

Für die Konfiguration eines parallelen vollständigen Ladevorgangs für ein S3-Ziel unterstützt S3 drei `parallel-load`-Regeltypen für die `table-settings`-Regel der Tabellenzuweisung:
+ `partitions-auto`
+ `partitions-list`
+ `ranges`

Weitere Informationen zu diesen Arten von Regeln für paralleles Laden finden Sie unter [Regeln und Operationen für Tabellen- und Sammlungseinstellungen](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Tablesettings.md).

Für die Regeltypen `partitions-auto` und `partitions-list` verwendet AWS DMS die einzelnen Partitionsnamen vom Quellendpunkt, um die Ziel-Unterordnerstruktur wie folgt zu identifizieren.

```
bucket_name/bucket_folder/database_schema_name/table_name/partition_name/LOADseq_num.csv
```

Hier umfasst der Unterordnerpfad, in den Daten migriert und in dem Daten auf dem S3-Ziel gespeichert werden, einen zusätzlichen Unterordner `partition_name`, der einer gleichnamigen Quellpartition entspricht. In diesem Unterordner `partition_name` werden dann eine oder mehrere Dateien `LOADseq_num.csv` mit Daten gespeichert, die von der angegebenen Quellpartition migriert wurden. `seq_num` ist hier der Sequenznummer-Nachsatz im Namen der CSV-Datei, also beispielsweise `00000001` in der CSV-Datei namens `LOAD00000001.csv`.

Bei einigen Datenbank-Engines, wie MongoDB und DocumentDB, gibt es das Konzept der Partitionen jedoch nicht. AWS DMS Fügt für diese Datenbank-Engines den Index des laufenden Quellsegments wie folgt als Präfix zum Namen der Ziel-.csv-Datei hinzu.

```
.../database_schema_name/table_name/SEGMENT1_LOAD00000001.csv
.../database_schema_name/table_name/SEGMENT1_LOAD00000002.csv
...
.../database_schema_name/table_name/SEGMENT2_LOAD00000009.csv
.../database_schema_name/table_name/SEGMENT3_LOAD0000000A.csv
```

Hier sind die Dateien `SEGMENT1_LOAD00000001.csv` und `SEGMENT1_LOAD00000002.csv` mit demselben laufenden Quellsegmentindex-Präfix `SEGMENT1` benannt. Sie sind so benannt, da die migrierten Quelldaten für diese beiden CSV-Dateien demselben laufenden Quellsegmentindex zugeordnet sind. Andererseits sind die migrierten Daten, die in den Zieldateien `SEGMENT2_LOAD00000009.csv` und `SEGMENT3_LOAD0000000A.csv` gespeichert sind, unterschiedlichen laufenden Quellsegmentindizes zugeordnet. Jedem Dateinamen wird der Name des laufenden Segmentindex, `SEGMENT2` und `SEGMENT3`, als Präfix vorangestellt.

Für den Parallelladetyp `ranges` definieren Sie die Spaltennamen und Spaltenwerte mithilfe der Einstellungen `columns` und `boundaries` der `table-settings`-Regeln. Mit diesen Regeln können Sie wie folgt den Segmentnamen entsprechende Partitionen angeben.

```
"parallel-load": {
    "type": "ranges",
    "columns": [
         "region",
         "sale"
    ],
    "boundaries": [
          [
               "NORTH",
               "1000"
          ],
          [
               "WEST",
               "3000"
          ]
    ],
    "segment-names": [
          "custom_segment1",
          "custom_segment2",
          "custom_segment3"
    ]
}
```

Die Einstellung `segment-names` definiert hier Namen für drei Partitionen, um Daten parallel zu dem S3-Ziel zu migrieren. Die migrierten Daten werden parallel geladen und der Reihenfolge nach in CSV-Dateien in den Unterordnern der Partition gespeichert, wie im Folgenden dargestellt.

```
.../database_schema_name/table_name/custom_segment1/LOAD[00000001...].csv
.../database_schema_name/table_name/custom_segment2/LOAD[00000001...].csv
.../database_schema_name/table_name/custom_segment3/LOAD[00000001...].csv
```

 AWS DMS Speichert hier eine Reihe von .csv-Dateien in jedem der drei Partitionsunterordner. Die Reihe von CSV-Dateien in jedem Partitionsunterordner wird inkrementell, beginnend bei `LOAD00000001.csv`, benannt, bis alle Daten migriert sind.

Es kann vorkommen, dass Sie die Partitionsunterordner für einen Parallelladetyp `ranges` nicht explizit über die Einstellung `segment-names` benennen. In diesen Fällen AWS DMS wird standardmäßig jede Reihe von CSV-Dateien in ihrem Unterordner erstellt. `table_name` Hier stellt AWS DMS den Dateinamen jeder Serie von CSV-Dateien den Namen des laufenden Quellsegmentindex voran, wie im Folgenden dargestellt.

```
.../database_schema_name/table_name/SEGMENT1_LOAD[00000001...].csv
.../database_schema_name/table_name/SEGMENT2_LOAD[00000001...].csv
.../database_schema_name/table_name/SEGMENT3_LOAD[00000001...].csv
...
.../database_schema_name/table_name/SEGMENTZ_LOAD[00000001...].csv
```

## Endpunkteinstellungen bei Verwendung von Amazon S3 als Ziel für AWS DMS
<a name="CHAP_Target.S3.Configuring"></a>

Sie können Endpunkteinstellungen zur Konfiguration Ihrer Amazon-S3-Zieldatenbank verwenden, ähnlich wie Sie zusätzliche Verbindungsattribute verwenden. Sie geben die Einstellungen an, wenn Sie den Zielendpunkt mithilfe der AWS DMS Konsole oder mithilfe des `create-endpoint` Befehls in [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html), mit der `--s3-settings '{"EndpointSetting": "value", ...}'` JSON-Syntax erstellen.

**Anmerkung**  
DMS schreibt Änderungen auf der Grundlage der Commit-Reihenfolge aus der Quelldatenbank in Parquet-Dateien. Bei der Migration mehrerer Tabellen wird jedoch die ursprüngliche Transaktionsreihenfolge aufgrund der Partitionierung auf Tabellenebene nicht beibehalten. Um die Informationen zur Transaktionssequenz beizubehalten, konfigurieren Sie die `TimestampColumnName` Endpunkteinstellung so, dass sie den Quell-Commit-Zeitstempel für jede Zeile enthält, den Sie dann in der Downstream-Verarbeitung verwenden können, um die ursprüngliche Transaktionssequenz zu rekonstruieren. Im Gegensatz zum CSV-Format, das diese `PreserveTransactions` Einstellung bietet, behandeln Parquet-Dateien Transaktionen aufgrund ihrer spaltenförmigen Speicherstruktur unterschiedlich. Dieser Ansatz ermöglicht jedoch eine genaue Nachverfolgung der Quell-Commit-Zeiten, unterstützt die Rekonstruktion der Transaktionsreihenfolge nach der Migration und ermöglicht eine effiziente Datenverarbeitung bei gleichzeitiger Wahrung der Datenkonsistenz.

Die folgende Tabelle zeigt die Endpunkteinstellungen, die Sie mit Amazon S3 als Ziel verwenden können.


| **Option** | **Beschreibung** | 
| --- | --- | 
| CsvNullValue |  Ein optionaler Parameter, der angibt, wie Nullwerte AWS DMS behandelt werden. Bei der Verarbeitung des Nullwerts können Sie diesen Parameter verwenden, um eine benutzerdefinierte Zeichenfolge als null zu übergeben, wenn Sie in das Ziel schreiben. Wenn Zielspalten beispielsweise auf Null gesetzt werden können, können Sie diese Option verwenden, um zwischen dem leeren Zeichenfolgenwert und dem Nullwert zu unterscheiden.  Standardwert: `""` Gültige Werte: jede gültige Zeichenfolge Beispiel: `--s3-settings '{"CsvNullValue": "NULL"}'` Wenn der Spaltenwert der Quelldatenbank Null ist, lautet der Spaltenwert in der S3-CSV-Datei `NULL` anstelle der Zeichenfolge „“.  | 
| AddColumnName |  Ein optionaler Parameter, den sie, sofern er auf `true` oder `y` festgelegt ist, verwenden können, um der CSV-Ausgabedatei Informationen zu Spaltennamen hinzuzufügen. Sie können diesen Parameter nicht zusammen mit `PreserveTransactions` oder `CdcPath` verwenden. Standardwert: `false` Zulässige Werte: `true`, `false`, `y`, `n` Beispiel: `--s3-settings '{"AddColumnName": true}'`  | 
| AddTrailingPaddingCharacter |  Verwenden Sie die S3-Zielendpunkteinstellung `AddTrailingPaddingCharacter`, um Zeichenfolgedaten aufzufüllen. Der Standardwert ist `false`. Typ: Boolescher Wert Beispiel: `--s3-settings '{"AddTrailingPaddingCharacter": true}'`  | 
| BucketFolder |  Ein optionaler Parameter zum Festlegen eines Ordnernamens im S3-Bucket. Wenn angegeben, werden Zielobjekte als CSV- oder Parquet-Dateien im Pfad `BucketFolder/schema_name/table_name/` erstellt. Wenn dieser Parameter nicht festgelegt ist, wird der Pfad `schema_name/table_name/` verwendet.  Beispiel: `--s3-settings '{"BucketFolder": "testFolder"}'`  | 
| BucketName |  Der Name des S3-Buckets, in dem S3-Zielobjekte als CSV- oder Parquet-Dateien erstellt werden. Beispiel: `--s3-settings '{"BucketName": "buckettest"}'`  | 
| CannedAclForObjects |  Ein Wert, der es AWS DMS ermöglicht, eine vordefinierte (gespeicherte) Zugriffskontrollliste für Objekte anzugeben, die im S3-Bucket als CSV- oder .parquet-Dateien erstellt wurden. Weitere Informationen zu Amazon S3 Canned ACLs finden Sie unter [Canned ACL](https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl) im *Amazon S3 Developer Guide.* Standardwert: KEINE Gültige Werte für dieses Attribut sind: NONE; PRIVATE; PUBLIC\$1READ; PUBLIC\$1READ\$1WRITE; AUTHENTICATED\$1READ; \$1READ; BUCKET\$1OWNER\$1READ; BUCKET\$1OWNER\$1FULL\$1CONTROL. AWS\$1EXEC Beispiel: `--s3-settings '{"CannedAclForObjects": "PUBLIC_READ"}'`  | 
| CdcInsertsOnly |  Ein optionaler Parameter während der Erfassung von Änderungsdaten (Change Data Capture, CDC), um nur die INSERT-Operationen in die CSV- oder Parquet-Ausgabedateien zu schreiben. Standardmäßig (die `false`-Einstellung) enthält das erste Feld in einem CSV- oder PARTETT-Datensatz den Buchstaben I (INSERT), U (UPDATE) oder D (DELETE). Dieser Buchstabe gibt an, ob die Zeile für einen CDC-Ladenvorgang in das Ziel in der Quelldatenbank eingefügt, aktualisiert oder gelöscht wurde. Wenn `cdcInsertsOnly` auf `true` oder gesetzt INSERTs ist, `y` werden nur Daten aus der Quelldatenbank in die .csv- oder .parquet-Datei migriert. Im Fall von CSV-Dateien ist die Art der Aufzeichnung dieser INSERTs vom Wert für `IncludeOpForFullLoad` abhängig. Wenn `IncludeOpForFullLoad` auf `true` festgelegt ist, wird das erste Feld jedes CDC-Datensatzes auf I festgelegt, um die INSERT-Operation an der Quelle anzugeben. Wenn `IncludeOpForFullLoad` auf `false` festgelegt ist, wird jeder CDC-Datensatz ohne erstes Feld geschrieben, um die INSERT-Operation an der Quelle anzugeben. Weitere Informationen darüber, wie diese Parameter miteinander funktionieren, finden Sie unter [Angabe von Quelldatenbankoperationen in migrierten S3-Daten](#CHAP_Target.S3.Configuring.InsertOps). Standardwert: `false` Zulässige Werte: `true`, `false`, `y`, `n` Beispiel: `--s3-settings '{"CdcInsertsOnly": true}'`  | 
| CdcInsertsAndUpdates |  Aktiviert eine CDC (Change Data Capture)-Last zum Schreiben von INSERT- und UPDATE-Operationen in .csv- oder .parquet-Ausgabedateien (Columnar Storage). Die Standardeinstellung ist`false`, aber wenn auf `true` oder gesetzt `cdcInsertsAndUpdates` ist`y`, INSERTs und UPDATEs aus der Quelldatenbank werden in die .csv- oder .parquet-Datei migriert.  Nur im CSV-Dateiformat hängt die Art INSERTs und Weise, wie diese Daten aufgezeichnet UPDATEs werden, vom Wert des Parameters ab. `includeOpForFullLoad` Wenn `includeOpForFullLoad` auf `true` gesetzt ist, wird das erste Feld jedes CDC-Datensatzes entweder auf `I` oder `U` gesetzt, um INSERT- und UPDATE-Operationen an der Quelle anzuzeigen. Wenn `includeOpForFullLoad` jedoch auf `false` gesetzt ist, werden CDC-Datensätze ohne Anzeige von INSERT- oder UPDATE-Operationen an der Quelle geschrieben.   Weitere Informationen darüber, wie diese Parameter miteinander funktionieren, finden Sie unter [Angabe von Quelldatenbankoperationen in migrierten S3-Daten](#CHAP_Target.S3.Configuring.InsertOps).  `CdcInsertsOnly` und `cdcInsertsAndUpdates` können nicht beide für denselben Endpunkt auf „true“ gesetzt werden. Setzen Sie entweder `cdcInsertsOnly` oder `cdcInsertsAndUpdates` auf `true` für denselben Endpunkt, aber nicht beide.   Standardwert: `false` Zulässige Werte: `true`, `false`, `y`, `n` Beispiel: `--s3-settings '{"CdcInsertsAndUpdates": true}'`  | 
|  `CdcPath`  |  Gibt den Ordnerpfad von CDC-Dateien an. Für eine S3-Quelle ist diese Einstellung erforderlich, wenn eine Aufgabe Änderungsdaten erfasst; ansonsten ist sie optional. Wenn `CdcPath` festgelegt ist, liest DMS CDC-Dateien aus diesem Pfad und repliziert die Datenänderungen auf dem Zielendpunkt. Wenn Sie für ein S3-Ziel `PreserveTransactions` auf „true“ gesetzt haben, prüft DMS, ob Sie für diesen Parameter einen Ordnerpfad auf Ihrem S3-Ziel festgelegt haben, in dem DMS die Transaktionsreihenfolge für den CDC-Ladevorgang speichern kann. DMS erstellt diesen CDC-Ordnerpfad in Ihrem S3-Zielarbeitsverzeichnis oder an dem durch `BucketFolder` und `BucketName` angegebenen S3-Zielort. Sie können diesen Parameter nicht zusammen mit `DatePartitionEnabled` oder `AddColumnName` verwenden. Typ: Zeichenfolge Wenn Sie beispielsweise `CdcPath` als `MyChangedData` und `BucketName` als `MyTargetBucket`, `BucketFolder` aber nicht angeben, erstellt DMS den folgenden CDC-Ordnerpfad: `MyTargetBucket/MyChangedData`.  Wenn Sie denselben `CdcPath` und `BucketName` als `MyTargetBucket` sowie `BucketFolder` als `MyTargetData` angeben, erstellt DMS den folgenden CDC-Ordnerpfad: `MyTargetBucket/MyTargetData/MyChangedData`. Diese Einstellung wird in den AWS DMS Versionen 3.4.2 und höher unterstützt. Bei der Erfassung von Datenänderungen in der Reihenfolge der Transaktionen speichert DMS die Zeilenänderungen immer in CSV-Dateien, unabhängig vom Wert der DataFormat S3-Einstellung auf dem Ziel.   | 
|  `CdcMaxBatchInterval`  |  Bedingung für die maximale Intervalllänge, definiert in Sekunden, für die Ausgabe einer Datei in Amazon S3. Standardwert: 60 Sekunden Wenn `CdcMaxBatchInterval` und `CdcMinFileSize` angegeben sind, wird das Schreiben der Datei durch die Parameterbedingung ausgelöst, die zuerst erfüllt wird.  Ab AWS DMS Version 3.5.3 hängt die Häufigkeit der `confirmed_flush_lsn` Aktualisierungen bei der Verwendung von PostgreSQL oder Aurora PostgreSQL als Quelle und Amazon S3 mit Parquet als Ziel von der Datenmenge ab, die der Zielendpunkt so konfiguriert ist, dass er im Speicher aufbewahrt. AWS DMS sendet die Daten erst `confirmed_flush_lsn` zurück an die Quelle, nachdem die Daten im Speicher in Amazon S3 geschrieben wurden. Wenn Sie den `CdcMaxBatchInterval` Parameter auf einen höheren Wert konfigurieren, stellen Sie möglicherweise eine erhöhte Auslastung der Replikationssteckplätze in der Quelldatenbank fest.   | 
|  `CdcMinFileSize`  |  Bedingung für die minimale Dateigröße, definiert in Kilobyte, für die Ausgabe einer Datei in Amazon S3. Standardwert: 32000 KB Wenn `CdcMinFileSize` und `CdcMaxBatchInterval` angegeben sind, wird das Schreiben der Datei durch die Parameterbedingung ausgelöst, die zuerst erfüllt wird.  | 
|  `PreserveTransactions`  |  Wenn hier `true` festgelegt ist, speichert DMS die Transaktionsreihenfolge für Change Data Capture (CDC) auf dem Amazon-S3-Ziel, das durch `CdcPath` angegeben ist. Sie können diesen Parameter nicht zusammen mit `DatePartitionEnabled` oder `AddColumnName` verwenden. Typ: Boolescher Wert Bei der Erfassung von Datenänderungen in der Reihenfolge der Transaktionen speichert DMS die Zeilenänderungen immer in CSV-Dateien, unabhängig vom Wert der DataFormat S3-Einstellung auf dem Ziel. Diese Einstellung wird in den AWS DMS Versionen 3.4.2 und höher unterstützt.   | 
| IncludeOpForFullLoad |  Ein optionaler Parameter während eines vollständigen Ladevorgangs, um die INSERT-Operationen nur zu CSV-Ausgabedateien zu schreiben. Bei vollständigen Ladevorgängen können Datensätze nur eingefügt werden. Standardmäßig (Einstellung `false`) werden in diesen Ausgabedateien für einen vollständigen Ladevorgang keine Informationen aufgezeichnet, um anzugeben, dass die Zeilen in der Quelldatenbank eingefügt wurden. Wenn `IncludeOpForFullLoad` auf `true` oder `y` festgelegt ist, wird die INSERT-Operation als I-Anmerkung im ersten Feld der CSV-Datei aufgezeichnet.  Dieser Parameter funktioniert mit `CdcInsertsOnly` oder `CdcInsertsAndUpdates` nur für die Ausgabe zu .csv-Dateien. Weitere Informationen darüber, wie diese Parameter miteinander funktionieren, finden Sie unter [Angabe von Quelldatenbankoperationen in migrierten S3-Daten](#CHAP_Target.S3.Configuring.InsertOps).  Standardwert: `false` Zulässige Werte: `true`, `false`, `y`, `n` Beispiel: `--s3-settings '{"IncludeOpForFullLoad": true}'`  | 
| CompressionType |  Ein optionaler Parameter, wenn er auf gesetzt ist, `GZIP` verwendet GZIP, um die CSV-Zieldateien zu komprimieren. Wenn dieser Parameter auf den Standardwert gesetztist, bleiben die Dateien unkomprimiert. Standardwert: `NONE` Gültige Werte: `GZIP` oder `NONE`. Beispiel: `--s3-settings '{"CompressionType": "GZIP"}'`  | 
| CsvDelimiter |  Das Trennzeichen, das zum Trennen von Spalten in den CSV-Quelldateien dient. Standardmäßig wird ein Komma (,) verwendet. Beispiel: `--s3-settings '{"CsvDelimiter": ","}'`  | 
| CsvRowDelimiter |  Das Trennzeichen, das zum Trennen von Zeilen in den CSV-Quelldateien dient. Standardmäßig wird ein Zeilenumbruch (\$1n) verwendet. Beispiel: `--s3-settings '{"CsvRowDelimiter": "\n"}'`  | 
|   `MaxFileSize`   |  Ein Wert, der die maximale Größe (in KB) der CSV-Datei angibt, die erstellt werden soll, während die Migration zum S3-Ziel in der Volllast-Phase ausgeführt wird. Standardwert: 1048576 KB (1 GB) Gültige Werte: 1 bis 1 048 576 Beispiel: `--s3-settings '{"MaxFileSize": 512}'`  | 
| Rfc4180 |  Ein optionaler Parameter, der verwendet wird, um das Verhalten so einzustellen, dass es RFC für Daten entspricht, die nur im CSV-Format zu Amazon S3 migriert werden. Wenn dieser Wert auf Amazon S3 als Ziel gesetzt ist `true` oder Amazon S3 als Ziel `y` verwendet wird und die Daten Anführungszeichen, Kommas oder AWS DMS Zeilenumbrüche enthalten, wird die gesamte Spalte mit einem zusätzlichen Paar doppelter Anführungszeichen („) eingeschlossen. Jedes Anführungszeichen innerhalb der Daten wird zweimal wiederholt. Diese Formatierung entspricht RFC 4180. Standardwert: `true` Zulässige Werte: `true`, `false`, `y`, `n` Beispiel: `--s3-settings '{"Rfc4180": false}'`  | 
| EncryptionMode |  Der serverseitige Verschlüsselungsmodus, mit dem Sie Ihre CSV- oder Parquet-Objektdateien, die Sie nach S3 kopiert haben, verschlüsseln möchten, Die gültigen Werte sind `SSE_S3` (S3-serverseitige Verschlüsselung) oder `SSE_KMS` (KMS-Verschlüsselung). Wenn Sie `SSE_KMS` auswählen, legen Sie den `ServerSideEncryptionKmsKeyId`-Parameter auf den Amazon-Ressourcennamen (ARN) fest, so dass der KMS-Schlüssel für die Verschlüsselung verwendet wird.  Sie können auch den CLI-Befehl `modify-endpoint` verwenden, um den Wert des Attributs `EncryptionMode` für einen vorhandenen Endpunkt von `SSE_KMS` in `SSE_S3` zu ändern. Sie können jedoch nicht den Wert für `EncryptionMode` von `SSE_S3` in `SSE_KMS` ändern.  Standardwert: `SSE_S3` Gültige Werte: `SSE_S3` oder `SSE_KMS`. Beispiel: `--s3-settings '{"EncryptionMode": SSE_S3}'`  | 
| ServerSideEncryptionKmsKeyId |  Wenn Sie `EncryptionMode` auf `SSE_KMS` setzen, legen Sie für diesen Parameter den Amazon-Ressourcennamen (ARN) für den KMS-Schlüssel fest. Sie finden diesen ARN, indem Sie den Schlüsselalias in der Liste der für Ihr Konto erstellten AWS KMS Schlüssel auswählen. Wenn Sie den Schlüssel erstellen, müssen Sie ihm auch bestimmte Richtlinien und Rollen, die mit diesem KMS-Schlüssel verknüpft sind, zuweisen. Weitere Informationen finden Sie unter [AWS KMS Schlüssel zur Verschlüsselung von Amazon S3 S3-Zielobjekten erstellen](#CHAP_Target.S3.KMSKeys). Beispiel: `--s3-settings '{"ServerSideEncryptionKmsKeyId":"arn:aws:kms:us-east-1:111122223333:key/11a1a1a1-aaaa-9999-abab-2bbbbbb222a2"}'`  | 
| DataFormat |  Das Ausgabeformat für die Dateien, das zur Erstellung von S3-Objekten AWS DMS verwendet wird. AWS DMS Unterstützt für Amazon S3 S3-Ziele entweder .csv- oder .parquet-Dateien. Die Parquet-Dateien verfügen über ein binäres spaltenbasiertes Speicherformat mit effizienten Komprimierungsoptionen und schnellerer Abfrageleistung. Weitere Informationen über Parquet-Dateien finden Sie unter [https://parquet.apache.org/](https://parquet.apache.org/). Standardwert: `csv` Gültige Werte: `csv` oder `parquet`. Beispiel: `--s3-settings '{"DataFormat": "parquet"}'`  | 
| EncodingType |  Der Parquet-Kodierungstyp. Die Kodierungstypoptionen umfassen Folgendes: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/dms/latest/userguide/CHAP_Target.S3.html) Standardwert: `rle-dictionary` Gültige Werte: `rle-dictionary`, `plain` oder `plain-dictionary` Beispiel: `--s3-settings '{"EncodingType": "plain-dictionary"}'`  | 
| DictPageSizeLimit |  Die zulässige Maximalgröße (in Bytes) für eine Verzeichnisseite in einer Parquet-Datei. Wenn eine Verzeichnisseite diesen Wert überschreitet, verwendet die Seite die einfache Kodierung. Standardwert: 1.024.000 (1 MB) Zulässige Werte: Jede gültige Ganzzahl Beispiel: `--s3-settings '{"DictPageSizeLimit": 2,048,000}'`  | 
| RowGroupLength |  Die Anzahl der Zeilen einer Zeilengruppe in einer Parquet-Datei. Standardwert: 10.024 (10 KB) Zulässige Werte: Jede gültige Ganzzahl Beispiel: `--s3-settings '{"RowGroupLength": 20,048}'`  | 
| DataPageSize |  Die zulässige Maximalgröße (in Bytes) für eine Datenseite in einer Parquet-Datei. Standardwert: 1.024.000 (1 MB) Zulässige Werte: Jede gültige Ganzzahl Beispiel: `--s3-settings '{"DataPageSize": 2,048,000}'`  | 
| ParquetVersion |  Die Version des Parquet-Dateiformats. Standardwert: `PARQUET_1_0` Gültige Werte: `PARQUET_1_0` oder `PARQUET_2_0`. Beispiel: `--s3-settings '{"ParquetVersion": "PARQUET_2_0"}'`  | 
| EnableStatistics |  Legen Sie `true` oder `y` fest, um Statistiken über Parquet-Dateiseiten und Zeilengruppen zu aktivieren. Standardwert: `true` Zulässige Werte: `true`, `false`, `y`, `n` Beispiel: `--s3-settings '{"EnableStatistics": false}'`  | 
| TimestampColumnName |  Ein optionaler Parameter, um eine Zeitstempelspalte in die S3-Zielendpunktdaten einzufügen. AWS DMS schließt eine zusätzliche `STRING` Spalte in den Objektdateien .csv oder .parquet Ihrer migrierten Daten ein, wenn Sie einen Wert angeben, der nicht leer `TimestampColumnName` ist. Bei einem vollständigen Ladevorgang enthält jede Zeile der Zeitstempelspalte einen Zeitstempel für den Zeitpunkt, an dem die Daten von DMS von der Quelle zum Ziel übertragen wurden.  Bei einem CDC-Ladevorgang enthält jede Zeile der Zeitstempelspalte den Zeitstempel für den Commit dieser Zeile in der Quelldatenbank. Das Zeichenfolgeformat für den Wert dieser Zeitstempelspalte ist `yyyy-MM-dd HH:mm:ss.SSSSSS`. Standardmäßig wird die Genauigkeit für diesen Wert in Mikrosekunden angegeben. Für einen CDC-Ladevorgang hängt die Rundung für die Genauigkeit vom Commit-Zeitstempel ab, der von DMS für die Quell-Datenbank unterstützt wird. Wenn für den Parameter `AddColumnName` `true` festgelegt ist, bezieht DMS auch den Namen für die Zeitstempelspalte ein, den Sie als den nicht leeren Wert von `TimestampColumnName` festlegen. Beispiel: `--s3-settings '{"TimestampColumnName": "TIMESTAMP"}'`  | 
| UseTaskStartTimeForFullLoadTimestamp |  Bei Einstellung von `true` verwendet dieser Parameter die Startzeit der Aufgabe als Zeitstempel-Spaltenwert anstelle der Zeit, zu der Daten in das Ziel geschrieben werden. Bei einem vollständigen Ladevorgang, wenn `UseTaskStartTimeForFullLoadTimestamp` auf `true` gesetzt ist, enthält jede Zeile der Zeitstempel-Spalte die Startzeit der Aufgabe. Bei CDC-Ladevorgängen enthält jede Zeile der Spalte Zeitstempel die Übergabezeit der Transaktion. Wenn `UseTaskStartTimeForFullLoadTimestamp` auf `false` gesetzt ist, wird der Zeitstempel des vollständigen Ladevorgangs in der Zeitstempel-Spalte um den Zeitpunkt des Eintreffens der Daten im Ziel erhöht. Standardwert: `false` Zulässige Werte: `true`, `false` Beispiel: `--s3-settings '{"UseTaskStartTimeForFullLoadTimestamp": true}'` `UseTaskStartTimeForFullLoadTimestamp: true` hilft dabei, das S3-Ziel `TimestampColumnName` für einen vollständigen Ladevorgang mit `TimestampColumnName` für einen CDC-Ladevorgang sortierbar zu machen.  | 
| ParquetTimestampInMillisecond |  Ein optionaler Parameter, der die Genauigkeit der `TIMESTAMP`-Spaltenwerte angibt, die in eine S3-Objektdatei im .parquet-Format geschrieben werden. Wenn dieses Attribut auf `true` oder gesetzt ist`y`, werden alle `TIMESTAMP` Spalten in eine Datei im .parquet-Format mit einer Genauigkeit von Millisekunden AWS DMS geschrieben. Andernfalls schreibt DMS sie mit einer Genauigkeit in Mikrosekunden. Derzeit AWS Glue kann Amazon Athena und nur Werte mit einer Genauigkeit von Millisekunden verarbeiten. `TIMESTAMP` Setzen Sie dieses Attribut für .parquet-formatierte S3-Endpunkt-Objektdateien nur dann auf „true“, wenn Sie vorhaben, die Daten mithilfe von Athena oder AWS Glue abzufragen oder zu verarbeiten.    AWS DMS schreibt alle in eine S3-Datei geschriebenen `TIMESTAMP` Spaltenwerte im CSV-Format mit einer Genauigkeit im Mikrosekundenbereich.   Die Einstellung dieses Attributs hat keine Auswirkung auf das Zeichenfolgeformat des Zeitstempelspaltenwerts; der durch Festlegen des `TimestampColumnName`-Attributs eingefügt wird.    Standardwert: `false` Zulässige Werte: `true`, `false`, `y`, `n` Beispiel: `--s3-settings '{"ParquetTimestampInMillisecond": true}'`  | 
| GlueCatalogGeneration |  Um eine zu generieren AWS Glue Data Catalog, setzen Sie diese Endpunkteinstellung auf. `true` Standardwert: `false` Zulässige Werte: `true`, `false` Beispiel: `--s3-settings '{"GlueCatalogGeneration": true}'` **Hinweis:** Verwenden Sie `GlueCatalogGeneration` nicht mit `PreserveTransactions` und `CdcPath`.  | 

## Verwendung AWS Glue Data Catalog mit einem Amazon S3 S3-Ziel für AWS DMS
<a name="CHAP_Target.S3.GlueCatalog"></a>

AWS Glue ist ein Service, der einfache Möglichkeiten zur Kategorisierung von Daten bietet und aus einem Metadaten-Repository besteht, das als AWS Glue Data Catalog. Sie können die Integration AWS Glue Data Catalog mit Ihrem Amazon S3 S3-Zielendpunkt durchführen und Amazon S3 S3-Daten über andere AWS Dienste wie Amazon Athena abfragen. Amazon Redshift funktioniert damit AWS Glue , unterstützt AWS DMS es aber nicht als vorgefertigte Option. 

Um den Datenkatalog zu generieren, setzen Sie die `GlueCatalogGeneration` Endpunkteinstellung auf`true`, wie im folgenden AWS CLI Beispiel gezeigt.

```
aws dms create-endpoint --endpoint-identifier s3-target-endpoint 
            --engine-name s3 --endpoint-type target--s3-settings '{"ServiceAccessRoleArn": 
            "your-service-access-ARN", "BucketFolder": "your-bucket-folder", "BucketName": 
            "your-bucket-name", "DataFormat": "parquet", "GlueCatalogGeneration": true}'
```

Für eine Replikationsaufgabe mit vollständigem Ladevorgang, die Daten des Typs `csv` umfasst, legen Sie für `IncludeOpForFullLoad` `true` fest.

Verwenden Sie `GlueCatalogGeneration` nicht mit `PreserveTransactions` und `CdcPath`. Der AWS Glue Crawler kann die verschiedenen Schemas von Dateien, die unter den angegebenen Daten gespeichert sind, nicht abgleichen. `CdcPath`

Damit Amazon Athena Ihre Amazon-S3-Daten indexiert und Sie Ihre Daten mithilfe von Standard-SQL-Abfragen über Amazon Athena abfragen können, muss die dem Endpunkt zugeordnete IAM-Rolle über die folgende Richtlinie verfügen:

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	  
    "Statement": [ 
        {
            "Effect": "Allow", 
            "Action": [
                "s3:GetBucketLocation", 
                "s3:GetObject",
                "s3:ListBucket", 
                "s3:ListBucketMultipartUploads", 
                "s3:ListMultipartUploadParts", 
                "s3:AbortMultipartUpload" 
            ], 
            "Resource": [
                "arn:aws:s3:::bucket123", 
                "arn:aws:s3:::bucket123/*" 
            ]
        },
        {
            "Effect": "Allow", 
            "Action": [ 
                "glue:CreateDatabase", 
                "glue:GetDatabase", 
                "glue:CreateTable", 
                "glue:DeleteTable", 
                "glue:UpdateTable", 
                "glue:GetTable", 
                "glue:BatchCreatePartition", 
                "glue:CreatePartition", 
                "glue:UpdatePartition", 
                "glue:GetPartition", 
                "glue:GetPartitions", 
                "glue:BatchGetPartition"
            ], 
            "Resource": [
                "arn:aws:glue:*:111122223333:catalog", 
                "arn:aws:glue:*:111122223333:database/*", 
                "arn:aws:glue:*:111122223333:table/*" 
            ]
        }, 
        {
            "Effect": "Allow",
            "Action": [
                "athena:StartQueryExecution",
                "athena:GetQueryExecution", 
                "athena:CreateWorkGroup"
            ],
            "Resource": "arn:aws:athena:*:111122223333:workgroup/glue_catalog_generation_for_task_*"
        }
    ]
}
```

------

**Referenzen**
+ *Weitere Informationen zu AWS Glue finden Sie unter [Konzepte im Entwicklerhandbuch](https://docs.aws.amazon.com//glue/latest/dg/components-key-concepts.html).AWS Glue *
+ Weitere Informationen finden AWS Glue Data Catalog Sie unter [Komponenten](https://docs.aws.amazon.com/glue/latest/dg/components-overview.html) im *AWS Glue Entwicklerhandbuch*.

## Verwenden von Datenverschlüsselung, Parquet-Dateien und CDC auf Ihrem Amazon-S3-Ziel
<a name="CHAP_Target.S3.EndpointSettings"></a>

Sie können die Einstellungen für den S3-Zielendpunkt verwenden, um Folgendes zu konfigurieren:
+ Einen benutzerdefinierten KMS-Schlüssel für die Verschlüsselung Ihrer S3-Zielobjekte
+ Parquet-Dateien als Speicherformat für S3-Zielobjekte
+ Change Data Capture (CDC), einschließlich Transaktionsreihenfolge auf dem S3-Ziel
+  AWS Glue Data Catalog Integrieren Sie es in Ihren Amazon S3 S3-Zielendpunkt und fragen Sie Amazon S3 S3-Daten über andere Services wie Amazon Athena ab.

### AWS KMS wichtige Einstellungen für die Datenverschlüsselung
<a name="CHAP_Target.S3.EndpointSettings.KMSkeys"></a>

Die folgenden Beispiele veranschaulichen die Konfiguration eines benutzerdefinierten KMS-Schlüssels, um Ihre S3-Zielobjekte zu verschlüsseln. Um zu starten, können Sie den folgenden `create-endpoint`-CLI-Befehl ausführen.

```
aws dms create-endpoint --endpoint-identifier s3-target-endpoint --engine-name s3 --endpoint-type target 
--s3-settings '{"ServiceAccessRoleArn": "your-service-access-ARN", "CsvRowDelimiter": "\n", 
"CsvDelimiter": ",", "BucketFolder": "your-bucket-folder", 
"BucketName": "your-bucket-name", 
"EncryptionMode": "SSE_KMS", 
"ServerSideEncryptionKmsKeyId": "arn:aws:kms:us-east-1:111122223333:key/72abb6fb-1e49-4ac1-9aed-c803dfcc0480"}'
```

Das durch die `--s3-settings`-Option angegebene JSON-Objekt definiert zwei Parameter. Der eine ist ein `EncryptionMode`-Parameter mit dem Wert `SSE_KMS`. Der andere ist ein `ServerSideEncryptionKmsKeyId`-Parameter mit dem Wert `arn:aws:kms:us-east-1:111122223333:key/72abb6fb-1e49-4ac1-9aed-c803dfcc0480`. Bei diesem Wert handelt es sich um einen Amazon-Ressourcenname (ARN) für Ihren benutzerdefinierten KMS-Schlüssel. Bei einem S3-Ziel legen Sie auch zusätzliche Einstellungen fest. Diese identifizieren die Zugriffsrolle des Servers, legen die Trennzeichen für das CSV-Objektspeicherformat fest und geben den Speicherort sowie den Namen des Buckets zum Speichern von S3-Zielobjekten an.

Standardmäßig erfolgt S3-Datenverschlüsselung mithilfe von serverseitiger S3-Verschlüsselung. Für das S3-Ziel des vorherigen Beispiels ist dies gleichbedeutend mit der Angabe der Endpunkteinstellungen, wie im folgenden Beispiel dargestellt.

```
aws dms create-endpoint --endpoint-identifier s3-target-endpoint --engine-name s3 --endpoint-type target
--s3-settings '{"ServiceAccessRoleArn": "your-service-access-ARN", "CsvRowDelimiter": "\n", 
"CsvDelimiter": ",", "BucketFolder": "your-bucket-folder", 
"BucketName": "your-bucket-name", 
"EncryptionMode": "SSE_S3"}'
```

Weitere Informationen über das Arbeiten mit serverseitiger S3-Verschlüsselung finden Sie unter [Schützen von Daten mithilfe serverseitiger Verschlüsselung](https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html).

**Anmerkung**  
Sie können auch den CLI-Befehl `modify-endpoint` verwenden, um den Wert des Parameters `EncryptionMode` für einen vorhandenen Endpunkt von `SSE_KMS` in `SSE_S3` zu ändern. Sie können jedoch nicht den Wert für `EncryptionMode` von `SSE_S3` in `SSE_KMS` ändern.

### Einstellungen für das Speichern von S3-Zielobjekten mithilfe von Parquet-Dateien
<a name="CHAP_Target.S3.EndpointSettings.Parquet"></a>

Das Standardformat für die Erstellung von S3-Zielobjekten ist CSV-Dateien. Die folgenden Beispiele zeigen einige Endpunkteinstellungen, um Parquet-Dateien als Format für die Erstellung von S3-Zielobjekten festzulegen. Sie können das Parquet-Dateiformat mit allen Standardeinstellungen angeben, wie im folgenden Beispiel gezeigt.

```
aws dms create-endpoint --endpoint-identifier s3-target-endpoint --engine-name s3 --endpoint-type target 
--s3-settings '{"ServiceAccessRoleArn": "your-service-access-ARN", "DataFormat": "parquet"}'
```

Hier wird der `DataFormat`-Parameter als `parquet` festgelegt, um das Format mit allen S3-Standards zu ermöglichen. Diese Standardwerte umfassen eine Verzeichniskodierung (`"EncodingType: "rle-dictionary"`), die eine Kombination aus Bit-Packing und Run-Length-Kodierung verwendet, um sich wiederholende Werte effizienter zu speichern.

Sie können zusätzliche Einstellungen für Optionen festlegen, die nicht zu den Standardeinstellungen gehören, wie im folgenden Beispiel gezeigt.

```
aws dms create-endpoint --endpoint-identifier s3-target-endpoint --engine-name s3 --endpoint-type target
--s3-settings '{"ServiceAccessRoleArn": "your-service-access-ARN", "BucketFolder": "your-bucket-folder",
"BucketName": "your-bucket-name", "DataFormat": "parquet", "EncodingType: "plain-dictionary", "DictPageSizeLimit": 3,072,000,
"EnableStatistics": false }'
```

Hier werden zusätzlich zu den Parametern für mehrere S3-Bucket-Standardoptionen und dem `DataFormat`-Parameter die folgenden zusätzlichen Parquet-Dateiparameter festgelegt:
+ `EncodingType` – Auf eine Verzeichniskodierung (`plain-dictionary`) festgelegt, die die in den einzelnen Spalten auftretenden Werte in einem Block auf der Verzeichnisseite speichert, der auch nach Spalten organisiert ist.
+ `DictPageSizeLimit` – Auf eine maximale Verzeichnisseitengröße von 3 MB festgelegt.
+ `EnableStatistics` – Deaktiviert den Standard, der die Sammlung von Statistiken über Parquet-Dateiseiten und -Zeilengruppen ermöglicht.

### Erfassen von Datenänderungen (CDC), einschließlich Transaktionsreihenfolge auf dem S3-Ziel
<a name="CHAP_Target.S3.EndpointSettings.CdcPath"></a>

Wenn eine CDC-Task AWS DMS ausgeführt wird, werden standardmäßig alle in Ihrer Quelldatenbank (oder Datenbanken) protokollierten Zeilenänderungen in einer oder mehreren Dateien für jede Tabelle gespeichert. Jede Gruppe von Dateien, die Änderungen für dieselbe Tabelle enthalten, befindet sich in einem einzigen Zielverzeichnis, das dieser Tabelle zugeordnet ist. AWS DMS erstellt so viele Zielverzeichnisse wie Datenbanktabellen, die auf den Amazon S3 S3-Zielendpunkt migriert wurden. Die Dateien werden auf dem S3-Ziel in diesen Verzeichnissen ohne Berücksichtigung der Transaktionsreihenfolge gespeichert. Weitere Informationen zu den Dateinamenskonventionen, zu den Dateninhalten und zum Format finden Sie unter [Verwendung von Amazon S3 als Ziel für AWS Database Migration Service](#CHAP_Target.S3).

Um Änderungen an der Quelldatenbank so zu erfassen, dass auch die Transaktionsreihenfolge erfasst wird, können Sie S3-Endpunkteinstellungen angeben, sodass die Zeilenänderungen für *alle* Datenbanktabellen in einer oder mehreren CSV-Dateien gespeichert werden, die je nach Transaktionsgröße erstellt werden. AWS DMS In diesen CSV-*Transaktionsdateien* sind alle Zeilenänderungen sequentiell in der Transaktionsreihenfolge für alle an den einzelnen Transaktionen beteiligten Tabellen aufgeführt. Diese Transaktionsdateien befinden sich alle in einem einzelnen *Transaktionsverzeichnis*, das Sie auch auf dem S3-Ziel angeben. In jeder Transaktionsdatei werden der Transaktionsvorgang und die Identität der Datenbank und der Quelltabelle für jede Zeilenänderung wie folgt als Teil der Zeilendaten gespeichert. 

```
operation,table_name,database_schema_name,field_value,...
```

`operation` ist hier der Transaktionsvorgang für die geänderte Zeile, `table_name` der Name der Datenbanktabelle, in der die Zeile geändert wurde, `database_schema_name` der Name des Datenbankschemas, in dem sich die Tabelle befindet, und `field_value` der erste von einem oder mehreren Feldwerten, die die Daten für die Zeile angeben.

Im folgenden Beispiel einer Transaktionsdatei sind geänderte Zeilen für eine oder mehrere Transaktionen zu sehen, die sich auf zwei Tabellen beziehen.

```
I,Names_03cdcad11a,rdsTempsdb,13,Daniel
U,Names_03cdcad11a,rdsTempsdb,23,Kathy
D,Names_03cdcad11a,rdsTempsdb,13,Cathy
I,Names_6d152ce62d,rdsTempsdb,15,Jane
I,Names_6d152ce62d,rdsTempsdb,24,Chris
I,Names_03cdcad11a,rdsTempsdb,16,Mike
```

Hier wird der Transaktionsvorgang für jede Zeile in der ersten Spalte durch `I` („Insert“ – Einfügen), `U` („Update“ – Aktualisieren) oder `D` („Delete“ – Löschen) angezeigt. Der Tabellenname ist der zweite Spaltenwert (z. B. `Names_03cdcad11a`). Der Name des Datenbankschemas ist der Wert der dritten Spalte (z. B. `rdsTempsdb`). Die verbleibenden Spalten werden mit Ihren eigenen Zeilendaten gefüllt (z. B. `13,Daniel`).

 AWS DMS Benennt außerdem die Transaktionsdateien, die es auf dem Amazon S3 S3-Ziel erstellt, mithilfe eines Zeitstempels gemäß der folgenden Namenskonvention.

```
CDC_TXN-timestamp.csv
```

`timestamp` ist hier der Zeitpunkt, zu dem die Transaktionsdatei erstellt wurde, wie im folgenden Beispiel dargestellt. 

```
CDC_TXN-20201117153046033.csv
```

Dieser Zeitstempel im Dateinamen stellt sicher, dass die Transaktionsdateien in der Reihenfolge der Transaktionen erstellt und aufgeführt werden, wenn Sie sie in ihrem Transaktionsverzeichnis auflisten.

**Anmerkung**  
Beim Erfassen von Datenänderungen in der Reihenfolge der Transaktionen werden die Zeilenänderungen AWS DMS immer in CSV-Dateien gespeichert, unabhängig vom Wert der `DataFormat` S3-Einstellung auf dem Ziel.

Um die Häufigkeit von Schreibvorgängen auf ein Amazon-S3-Ziel während einer Datenreplikationsaufgabe zu steuern, können Sie die Einstellungen `CdcMaxBatchInterval` und `CdcMinFileSize` konfigurieren. Dies kann zu einer besseren Leistung bei der Analyse der Daten ohne zusätzliche überflüssige Aufgaben führen. Weitere Informationen finden Sie unter [Endpunkteinstellungen bei Verwendung von Amazon S3 als Ziel für AWS DMS](#CHAP_Target.S3.Configuring). 

**Gibt AWS DMS an, dass alle Zeilenänderungen in der Reihenfolge der Transaktionen gespeichert werden sollen**

1. Legen Sie für die S3-Einstellung `PreserveTransactions` auf dem Ziel `true` fest.

1. Stellen Sie die `CdcPath` S3-Einstellung auf dem Ziel auf einen relativen Ordnerpfad ein, in dem Sie die .csv-Transaktionsdateien speichern möchten AWS DMS .

   AWS DMS erstellt diesen Pfad entweder unter dem standardmäßigen S3-Ziel-Bucket und -Arbeitsverzeichnis oder unter dem Bucket und Bucket-Ordner, die Sie mithilfe der `BucketName` `BucketFolder` S3-Einstellungen auf dem Ziel angeben.

## Angabe von Quelldatenbankoperationen in migrierten S3-Daten
<a name="CHAP_Target.S3.Configuring.InsertOps"></a>

Bei der AWS DMS Migration von Datensätzen zu einem S3-Ziel kann in jedem migrierten Datensatz ein zusätzliches Feld erstellt werden. Dieses zusätzliche Feld gibt die Operation an, die auf den Datensatz in der Quelldatenbank angewendet wird. Wie dieses erste Feld AWS DMS erstellt und festgelegt wird, hängt vom Typ der Migrationsaufgabe und den Einstellungen von `includeOpForFullLoad``cdcInsertsOnly`, und ab. `cdcInsertsAndUpdates`

Wenn im Falle eines vollständigen Ladevorgangs `includeOpForFullLoad` auf `true` gesetzt ist, erstellt AWS DMS in jedem CSV-Datensatz stets ein zusätzliches erstes Feld. Dieses Feld enthält den Buchstaben I (INSERT), um anzugeben, dass die Zeile in der Quelldatenbank eingefügt wurde. Wenn ein CDC geladen `cdcInsertsOnly` wird `false` (Standardeinstellung), wird AWS DMS außerdem immer ein zusätzliches erstes Feld in jedem .csv- oder .parquet-Datensatz erstellt. Dieses Feld enthält die Buchstaben I (INSERT), U (UPDATE) oder D (DELETE), um anzugeben, ob die Zeile in der Quelldatenbank eingefügt, aktualisiert oder gelöscht wurde.

In der folgenden Tabelle sehen Sie, wie sich die Einstellungen der Attribute `includeOpForFullLoad` und `cdcInsertsOnly` gemeinsam auf die Einstellung migrierter Datensätze auswirken.


| Mit diesen Parametereinstellungen | Legt DMS die Zieldatensätze für CSV- und Parquet-Ausgaben wie folgt fest  | includeOpForFullLoad | cdcInsertsOnly | Für vollständige Ladevorgänge | Für CDC-Ladevorgänge | 
| --- | --- | --- | --- | --- | --- | 
| true | true | Wert des hinzugefügten ersten Felds ist auf I festgelegt | Wert des hinzugefügten ersten Felds ist auf I festgelegt | 
| false | false | Kein hinzugefügtes Feld | Wert des hinzugefügten ersten Felds ist auf I, U oder D festgelegt | 
| false | true | Kein hinzugefügtes Feld | Kein hinzugefügtes Feld | 
| true | false | Wert des hinzugefügten ersten Felds ist auf I festgelegt | Wert des hinzugefügten ersten Felds ist auf I, U oder D festgelegt | 

Wenn `includeOpForFullLoad` und `cdcInsertsOnly` auf denselben Wert festgelegt sind, werden die Zieldatensätze entsprechend dem Attribut festgelegt, das die Datensatzeinstellungen für den aktuellen Migrationstyp steuert. Das Attribut ist `includeOpForFullLoad` für vollständige Ladevorgänge und `cdcInsertsOnly` für CDC-Ladevorgänge.

Wenn `includeOpForFullLoad` und auf unterschiedliche Werte gesetzt `cdcInsertsOnly` sind, AWS DMS werden die Einstellungen für den Zieldatensatz sowohl für CDC als auch für Volllast konsistent. Hierzu werden die Datensatzeinstellungen des CDC-Ladevorgangs an die Datensatzeinstellungen früherer vollständiger Ladevorgänge angepasst, wie durch `includeOpForFullLoad` angegeben. 

Nehmen Sie beispielsweise an, dass für einen vollständigen Ladevorgang ein erstes Feld hinzugefügt wird, um einen eingefügten Datensatz anzuzeigen. In diesem Fall wird einem folgenden CDC-Ladevorgang ein erstes Feld hinzugefügt, das einen eingefügten, aktualisierten oder gelöschten Datensatz in der Quelle anzeigt wie zutreffend. Nehmen Sie nun an, dass für einen vollständigen Ladevorgang *nicht* festgelegt wurde, dass zur Anzeige eines eingefügten Datensatzes ein erstes Feld hinzugefügt wird. In diesem Fall wird für diesen CDC-Ladevorgang ebenfalls festgelegt, dass jedem Datensatz unabhängig von der entsprechenden Datensatzoperation in der Quelle ein erstes Feld hinzugefügt wird.

Ebenso hängt die Art und Weise, wie DMS ein zusätzliches erstes Feld erstellt und einstellt, von den Einstellungen von `includeOpForFullLoad` und `cdcInsertsAndUpdates` ab. In der folgenden Tabelle können Sie sehen, wie sich die Einstellungen der Attribute `includeOpForFullLoad` und `cdcInsertsAndUpdates` gemeinsam auf die Einstellung migrierter Datensätze in diesem Format auswirken. 


| Mit diesen Parametereinstellungen | DMS legt Zieldatensätze für CSV-Ausgaben wie folgt fest  | includeOpForFullLoad | cdcInsertsAndAktualisierungen | Für vollständige Ladevorgänge | Für CDC-Ladevorgänge | 
| --- | --- | --- | --- | --- | --- | 
| true | true | Wert des hinzugefügten ersten Felds ist auf I festgelegt | Wert des hinzugefügten ersten Felds ist auf I oder U gesetzt | 
| false | false | Kein hinzugefügtes Feld | Wert des hinzugefügten ersten Felds ist auf I, U oder D festgelegt | 
| false | true | Kein hinzugefügtes Feld | Wert des hinzugefügten ersten Felds ist auf I oder U gesetzt | 
| true | false | Wert des hinzugefügten ersten Felds ist auf I festgelegt | Wert des hinzugefügten ersten Felds ist auf I, U oder D festgelegt | 

## Zieldatentypen für S3 Parquet
<a name="CHAP_Target.S3.DataTypes"></a>

Die folgende Tabelle zeigt die Parquet-Zieldatentypen, die bei der Verwendung unterstützt werden, AWS DMS und die Standardzuweisung von AWS DMS Datentypen.

Weitere Informationen zu AWS DMS Datentypen finden Sie unter[Datentypen für den AWS Database Migration Service](CHAP_Reference.DataTypes.md).


|  AWS DMS Datentyp  |  S3-Parquet-Datentyp   | 
| --- | --- | 
| BYTES | BINARY | 
| DATE | DATE32 | 
| TIME | TIME32 | 
| DATETIME | TIMESTAMP | 
| INT1 | INT8 | 
| INT2 | INT16 | 
| INT4 | INT32 | 
| INT8 | INT64 | 
| NUMERIC | DECIMAL | 
| REAL4 | FLOAT | 
| REAL8 | DOUBLE | 
| STRING | STRING | 
| UINT1 | UINT8 | 
| UINT2 | UINT16 | 
| UINT4 | UINT32 | 
| UINT8 | UINT64 | 
| WSTRING | STRING | 
| BLOB | BINARY | 
| NCLOB | STRING | 
| CLOB | STRING | 
| BOOLEAN | BOOL | 

# Verwenden einer Amazon DynamoDB DynamoDB-Datenbank als Ziel für AWS Database Migration Service
<a name="CHAP_Target.DynamoDB"></a>

Sie können AWS DMS es verwenden, um Daten in eine Amazon DynamoDB-Tabelle zu migrieren. Amazon DynamoDB ist ein vollständig verwalteter NoSQL-Datenbankservice, der schnelle und vorhersehbare Leistung mit nahtloser Skalierbarkeit bietet. AWS DMS unterstützt die Verwendung einer relationalen Datenbank oder MongoDB als Quelle.

In DynamoDB sind Tabellen, Elemente und Attribute die zentralen Komponenten, mit denen Sie arbeiten. Eine *Tabelle* ist eine Sammlung von Elementen und jedes *Element* wiederum eine Sammlung von Attributen. DynamoDB nutzt die als Partitionsschlüssel bezeichneten Primärschlüssel, um jedes Element in einer Tabelle eindeutig zu identifizieren. Sie können auch Schlüssel und sekundäre Indizes verwenden, um die Abfrage flexibler zu gestalten.

Verwenden Sie Objektzuordnungen zum Migrieren Ihrer Daten aus einer Quelldatenbank in eine DynamoDB-Zieltabelle. Anhand von Objektzuweisungen können Sie bestimmen, wo sich die Quelldaten in der Zieltabelle befinden. 

Wenn AWS DMS Tabellen auf einem DynamoDB-Zielendpunkt erstellt werden, werden so viele Tabellen wie auf dem Quelldatenbank-Endpunkt erstellt. AWS DMS legt auch mehrere DynamoDB-Parameterwerte fest. Die Kosten für die Erstellung der Tabelle sind abhängig von der Datenmenge und der Anzahl der zu migrierenden Tabellen.

**Anmerkung**  
Die Option **SSL-Modus** auf der AWS DMS Konsole oder API gilt nicht für einige Datenstreaming- und NoSQL-Dienste wie Kinesis und DynamoDB. **Sie sind standardmäßig sicher, sodass AWS DMS angezeigt wird, dass die Einstellung für den SSL-Modus auf „Keine“ gesetzt ist (SSL-Modus=Keine).** Sie müssen keine zusätzliche Konfiguration für Ihren Endpunkt angeben, um SSL verwenden zu können. Wenn Sie beispielsweise DynamoDB als Zielendpunkt verwenden, ist dies standardmäßig sicher. Alle API-Aufrufe an DynamoDB verwenden SSL, sodass keine zusätzliche SSL-Option am Endpunkt erforderlich ist. AWS DMS Mithilfe des HTTPS-Protokolls, das AWS DMS standardmäßig verwendet, wenn eine Verbindung mit einer DynamoDB-Datenbank hergestellt wird, können Sie Daten sicher über SSL-Endpunkte einfügen und abrufen.

 AWS DMS Unterstützt eine Multithread-Volllast auf eine DynamoDB-Zielinstanz, um die Übertragungsgeschwindigkeit zu erhöhen. DMS unterstützt Multithreading u. a. mithilfe der folgenden Aufgabeneinstellungen:
+ `MaxFullLoadSubTasks` – Geben Sie diese Option an, um die maximale Anzahl von Quelltabellen festzulegen, die parallel geladen werden sollen. DMS lädt jede Tabelle mithilfe einer dedizierten Unteraufgabe in die entsprechende DynamoDB-Zieltabelle. Der Standardwert ist 8. Der Höchstwert ist 49.
+ `ParallelLoadThreads`— Verwenden Sie diese Option, um die Anzahl der Threads anzugeben, die AWS DMS verwendet werden, um jede Tabelle in ihre DynamoDB-Zieltabelle zu laden. Der Standardwert ist 0 (Single-Thread). Der maximale Wert beträgt 200. Sie können eine Erhöhung dieses Höchstwerts anfordern.
**Anmerkung**  
DMS weist jedem Segment einer Tabelle einen eigenen Thread zum Laden zu. Geben Sie aus diesem Grund für `ParallelLoadThreads` die maximale Anzahl der Segmente an, die Sie für eine Tabelle in der Quelle verwenden werden.
+ `ParallelLoadBufferSize` – Verwenden Sie diese Option, um die maximale Anzahl der Datensätze anzugeben, die in dem Puffer gespeichert werden sollen, den die parallelen Lade-Threads zum Laden von Daten in das DynamoDB-Ziel verwenden. Der Standardwert lautet 50. Die maximale Wert ist 1.000. Verwenden Sie diese Einstellung mit `ParallelLoadThreads`; `ParallelLoadBufferSize` ist nur gültig, wenn es mehr als einen Thread gibt.
+ Table-Mapping-Einstellungen für einzelne Tabellen – Verwenden Sie `table-settings`-Regeln, um einzelne Tabellen von der Quelle zu unterscheiden, die Sie parallel laden möchten. Verwenden Sie diese Regeln darüber hinaus, um festzulegen, wie die Zeilen jeder Tabelle für das Multithread-Laden aufgegliedert werden sollen. Weitere Informationen finden Sie unter [Regeln und Operationen für Tabellen- und Sammlungseinstellungen](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Tablesettings.md).

**Anmerkung**  
Wenn DynamoDB-Parameterwerte für eine Migrationsaufgabe AWS DMS festgelegt werden, ist der Standardparameterwert für Read Capacity Units (RCU) auf 200 festgelegt.  
Der Schreibkapazitätseinheiten (WCU)-Parameterwert ist auch festgelegt, aber sein Wert hängt von mehreren anderen Einstellungen ab:  
Der Standardwert für den WCU-Parameter lautet 200.
Wenn die Einstellung für die `ParallelLoadThreads`-Aufgabe größer als 1 ist (der Standard ist 0), dann wird der WCU-Parameter auf das 200-fache des `ParallelLoadThreads`-Werts festgelegt.
Für die von Ihnen verwendeten Ressourcen fallen die AWS DMS Standardnutzungsgebühren an.

## Migrieren aus einer relationalen Datenbank in eine DynamoDB-Tabelle
<a name="CHAP_Target.DynamoDB.RDBMS2DynamoDB"></a>

AWS DMS unterstützt die Migration von Daten zu skalaren DynamoDB-Datentypen. Bei der Migration von Daten aus einer relationalen Datenbank wie Oracle oder MySQL zu DynamoDB sollten Sie die Art und Weise, wie Sie diese Daten speichern, umstrukturieren.

 AWS DMS Unterstützt derzeit die Umstrukturierung von einzelnen Tabellen zu einzelnen Tabellen zu skalaren DynamoDB-Attributen. Wenn Sie Daten aus einer relationalen Datenbanktabelle zu DynamoDB migrieren, formatieren Sie die Daten aus einer Tabelle in die skalaren DynamoDB-Datentypattribute um. Diese Attribute können Daten aus mehreren Spalten aufnehmen und Sie können eine Spalte direkt einem Attribut zuweisen.

AWS DMS unterstützt die folgenden skalaren DynamoDB-Datentypen:
+ Zeichenfolge
+ Zahl
+ Boolesch

**Anmerkung**  
NULL-Daten aus der Quelle werden auf dem Ziel ignoriert.

## Voraussetzungen für die Verwendung von DynamoDB als Ziel für AWS Database Migration Service
<a name="CHAP_Target.DynamoDB.Prerequisites"></a>

Bevor Sie mit der Arbeit mit einer DynamoDB-Datenbank als Ziel für beginnen, stellen Sie sicher AWS DMS, dass Sie eine IAM-Rolle erstellen. Diese IAM-Rolle sollte es ermöglichen AWS DMS , Zugriff auf die DynamoDB-Tabellen zu übernehmen und zu gewähren, in die migriert wird. In der folgenden IAM-Richtlinie sind die Mindestzugriffsberechtigungen dargestellt.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
      {
         "Sid": "",
         "Effect": "Allow",
         "Principal": {
            "Service": "dms.amazonaws.com"
         },
         "Action": "sts:AssumeRole"
      }
   ]
}
```

------

Die Rolle, die Sie für die Migration zu DynamoDB verwenden, muss die folgenden Berechtigungen aufweisen:

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "dynamodb:PutItem",
                "dynamodb:CreateTable",
                "dynamodb:DescribeTable",
                "dynamodb:DeleteTable",
                "dynamodb:DeleteItem",
                "dynamodb:UpdateItem"
            ],
            "Resource": [
                "arn:aws:dynamodb:us-west-2:111122223333:table/name1",
                "arn:aws:dynamodb:us-west-2:111122223333:table/OtherName*",
                "arn:aws:dynamodb:us-west-2:111122223333:table/awsdms_apply_exceptions",
                "arn:aws:dynamodb:us-west-2:111122223333:table/awsdms_full_load_exceptions"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "dynamodb:ListTables"
            ],
            "Resource": "*"
        }
    ]
}
```

------

## Einschränkungen bei der Verwendung von DynamoDB als Ziel für AWS Database Migration Service
<a name="CHAP_Target.DynamoDB.Limitations"></a>

Die folgenden Einschränkungen gelten bei Verwendung von DynamoDB als Ziel:
+ DynamoDB begrenzt die Genauigkeit des Number-Datentyps auf 38 Stellen. Speichern Sie alle Datentypen mit einer höheren Genauigkeit als Zeichenfolge. Sie müssen dies explizit mithilfe der Objektzuweisungsfunktion festlegen.
+ Da DynamoDB keinen Date-Datentyp hat, werden die Daten, die diesen Datentyp verwenden, in Zeichenfolgen umgewandelt.
+ DynamoDB lässt keine Aktualisierungen der Primärschlüssel-Attribute zu. Diese Einschränkung ist wichtig, wenn Sie die laufende Replikation mit Change Data Capture (CDC) verwenden, da sie zu unerwünschten Daten im Ziel führen kann. Je nachdem, wie Sie das Objekt zuweisen, kann eine CDC-Operation, die den Primärschlüssel aktualisiert, Folgendes tun. Es kann entweder fehlschlagen oder ein neues Element mit dem aktualisierten Primärschlüssel und unvollständigen Daten einfügen.
+ AWS DMS unterstützt nur die Replikation von Tabellen mit nicht zusammengesetzten Primärschlüsseln. Die Ausnahme ist, wenn Sie eine Objektzuweisung für die Zieltabelle mit einem benutzerdefinierten Partitionsschlüssel oder Sortierschlüssel (oder beiden) festlegen.
+ AWS DMS unterstützt keine LOB-Daten, es sei denn, es handelt sich um ein CLOB. AWS DMS konvertiert CLOB-Daten bei der Migration der Daten in eine DynamoDB-Zeichenfolge.
+ Bei der Verwendung von DynamoDB als Ziel wird nur die Steuerungstabelle „Apply Exceptions (Ausnahmen anwenden)“ (`dmslogs.awsdms_apply_exceptions`) unterstützt. Weitere Informationen zu Steuerungstabellen finden Sie unter [Kontrolltabellen-Aufgabeneinstellungen](CHAP_Tasks.CustomizingTasks.TaskSettings.ControlTable.md).
+ AWS DMS unterstützt die Aufgabeneinstellung `TargetTablePrepMode=TRUNCATE_BEFORE_LOAD` für DynamoDB als Ziel nicht. 
+ AWS DMS unterstützt die Aufgabeneinstellung `TaskRecoveryTableEnabled` für DynamoDB als Ziel nicht. 
+ `BatchApply`wird für einen DynamoDB-Endpunkt nicht unterstützt.
+ AWS DMS kann keine Attribute migrieren, deren Namen mit reservierten Wörtern in DynamoDB übereinstimmen. Weitere Informationen finden Sie unter [Reservierte Wörter in DynamoDB im](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ReservedWords.html) *Amazon DynamoDB Developer Guide*.

## Verwenden der Objektzuordnung zum Migrieren von Daten zu DynamoDB
<a name="CHAP_Target.DynamoDB.ObjectMapping"></a>

AWS DMS verwendet Tabellenzuordnungsregeln, um Daten aus der Quelle der DynamoDB-Zieltabelle zuzuordnen. Um Daten zu einem DynamoDB-Ziel zuzuweisen, verwenden Sie eine Art von Tabellenzuordnungsregel mit der Bezeichnung *object-mapping*. Mit Objektzuweisungen können Sie Attributnamen und die zu ihnen zu migrierenden Daten definieren. Bei der Verwendung der Objektzuweisung müssen Sie über Auswahlregeln verfügen.

DynamoDB hat keine voreingestellte Struktur, mit Ausnahme eines Partitionsschlüssels und eines optionalen Sortierschlüssels. Wenn Sie einen Primärschlüssel haben, der nicht zusammengesetzt ist, verwendet ihn. AWS DMS Wenn Sie über einen zusammengesetzten Primärschlüssel verfügen oder einen Sortierschlüssel verwenden möchten, müssen Sie diese Schlüssel und die anderen Attribute in Ihrer DynamoDB-Zieltabelle definieren.

Zum Erstellen einer Objektzuweisungsregel legen Sie `rule-type` als *object-mapping* fest. Diese Regel gibt an, welchen Objektzuweisungstyp Sie verwenden möchten. 

Die Struktur für die Regel lautet wie folgt:

```
{ "rules": [
    {
      "rule-type": "object-mapping",
      "rule-id": "<id>",
      "rule-name": "<name>",
      "rule-action": "<valid object-mapping rule action>",
      "object-locator": {
      "schema-name": "<case-sensitive schema name>",
      "table-name": ""
      },
      "target-table-name": "<table_name>"
    }
  ]
}
```

AWS DMS unterstützt derzeit `map-record-to-record` und `map-record-to-document` als einzig gültige Werte für den `rule-action` Parameter. Diese Werte geben an, AWS DMS was standardmäßig mit Datensätzen geschieht, die nicht in der `exclude-columns` Attributliste ausgeschlossen sind. Diese Werte wirken sich in keiner Weise auf die Attributzuweisungen aus. 
+ Sie können `map-record-to-record` beim Migrieren aus einer relationalen Datenbank zu DynamoDB verwenden. Dabei wird der Primärschlüssel aus der relationalen Datenbank als Partitionsschlüssel in DynamoDB verwendet und für jede Spalte in der Quelldatenbank wird ein Attribut erstellt. Bei Verwendung wird für jede Spalte in der Quelltabelle`map-record-to-record`, die nicht in der `exclude-columns` Attributliste aufgeführt ist, ein entsprechendes Attribut auf der DynamoDB-Zielinstanz AWS DMS erstellt. Dies geschieht unabhängig davon, ob diese Quellspalte in einer Attributzuweisung verwendet wird oder nicht. 
+ Verwenden Sie `map-record-to-document`, um Quellspalten mithilfe des Attributnamens „\$1doc“ in einer einzelnen, flachen DynamoDB-Zuordnung auf dem Ziel zu platzieren. Platziert bei Verwendung `map-record-to-document` die Daten in einem einzigen, flachen DynamoDB-Kartenattribut auf der Quelle. AWS DMS Dieses Attribut hat den Namen "\$1doc". Diese Platzierung gilt für jede Spalte der Quelltabelle, die nicht in der `exclude-columns`-Attributliste aufgeführt ist. 

Der Unterschied zwischen den `rule-action`-Parametern `map-record-to-record` und `map-record-to-document` lässt sich am besten verstehen, wenn Sie die beiden Parameter in Aktion erleben. In diesem Beispiel wird davon ausgegangen, dass Sie mit einer Tabellenzeile einer relationalen Datenbank beginnen, die die folgende Struktur aufweist und die folgenden Daten enthält:

![\[Beispieldatenbank\]](http://docs.aws.amazon.com/de_de/dms/latest/userguide/images/datarep-dynamodb1.png)


Um diese Informationen zu DynamoDB zu migrieren, erstellen Sie Regeln zum Zuweisen der Daten in ein DynamoDB-Tabellenelement. Beachten Sie die für den `exclude-columns`-Parameter aufgeführten Spalten. Diese Spalten werden nicht direkt dem Ziel zugewiesen. Stattdessen wird die Attributzuordnung verwendet, um die Daten zu neuen Elementen zu kombinieren, z. B. wo *FirstName*und *LastName*werden gruppiert, sodass sie *CustomerName*auf dem DynamoDB-Ziel liegen. *NickName*und *Einkommen* sind nicht ausgeschlossen.

```
{
    "rules": [
        {
            "rule-type": "selection",
            "rule-id": "1",
            "rule-name": "1",
            "object-locator": {
                "schema-name": "test",
                "table-name": "%"
            },
            "rule-action": "include"
        },
        {
            "rule-type": "object-mapping",
            "rule-id": "2",
            "rule-name": "TransformToDDB",
            "rule-action": "map-record-to-record",
            "object-locator": {
                "schema-name": "test",
                "table-name": "customer"
            },
            "target-table-name": "customer_t",
            "mapping-parameters": {
                "partition-key-name": "CustomerName",
                "exclude-columns": [
                    "FirstName",
                    "LastName",
                    "HomeAddress",
                    "HomePhone",
                    "WorkAddress",
                    "WorkPhone"
                ],
                "attribute-mappings": [
                    {
                        "target-attribute-name": "CustomerName",
                        "attribute-type": "scalar",
                        "attribute-sub-type": "string",
                        "value": "${FirstName},${LastName}"
                    },
                    {
                        "target-attribute-name": "ContactDetails",
                        "attribute-type": "document",
                        "attribute-sub-type": "dynamodb-map",
                        "value": {
                            "M": {
                                "Home": {
                                    "M": {
                                        "Address": {
                                            "S": "${HomeAddress}"
                                        },
                                        "Phone": {
                                            "S": "${HomePhone}"
                                        }
                                    }
                                },
                                "Work": {
                                    "M": {
                                        "Address": {
                                            "S": "${WorkAddress}"
                                        },
                                        "Phone": {
                                            "S": "${WorkPhone}"
                                        }
                                    }
                                }
                            }
                        }
                    }
                ]
            }
        }
    ]
}
```

Mithilfe des `rule-action` Parameters *map-record-to-record*werden die Daten für *NickName*und das *Einkommen* den gleichnamigen Elementen im DynamoDB-Ziel zugeordnet. 

![\[Fangen Sie an mit AWS DMS\]](http://docs.aws.amazon.com/de_de/dms/latest/userguide/images/datarep-dynamodb2.png)


Nehmen wir jedoch an, dass Sie dieselben Regeln verwenden, aber den `rule-action` Parameter in ändern *map-record-to-document*. In diesem Fall werden die Spalten, die nicht im `exclude-columns` Parameter aufgeführt sind, *NickName*und das *Einkommen* einem *\$1doc-Element* zugeordnet.

![\[Fangen Sie an mit AWS DMS\]](http://docs.aws.amazon.com/de_de/dms/latest/userguide/images/datarep-dynamodb3.png)


### Verwenden von benutzerdefinierten Bedingungsausdrücken mit Objektzuweisung
<a name="CHAP_Target.DynamoDB.ObjectMapping.ConditionExpression"></a>

Sie können das DynamoDB-Feature für Bedingungsausdrücke verwenden, um Daten zu bearbeiten, die in eine DynamoDB-Tabelle geschrieben werden. Weitere Informationen zu Bedingungsausdrücken in DynamoDB finden Sie unter [Bedingungsausdrücke](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.ConditionExpressions.html).

Ein Bedingungsausdruckselement besteht aus: 
+ einem Ausdruck (erforderlich) 
+ Ausdrucksattributwerte (erforderlich). Gibt eine DynamoDB-JSON-Struktur des Attributwerts an. Dies ist nützlich, um ein Attribut mit einem Wert in DynamoDB zu vergleichen, den Sie möglicherweise erst zur Laufzeit kennen. Sie können einen Ausdrucksattributwert als Platzhalter für einen tatsächlichen Wert definieren.
+ Namen von Ausdrucksattributen (erforderlich). Dadurch können potenzielle Konflikte mit reservierten DynamoDB-Wörtern, Attributnamen, die Sonderzeichen enthalten, und Ähnlichem vermieden werden.
+ Optionen für die Verwendung des Bedingungsausdrucks (optional). Die Standardeinstellung ist apply-during-cdc = falsch und apply-during-full-load = wahr

Die Struktur für die Regel lautet wie folgt:

```
"target-table-name": "customer_t",
      "mapping-parameters": {
        "partition-key-name": "CustomerName",
        "condition-expression": {
          "expression":"<conditional expression>",
          "expression-attribute-values": [
              {
                "name":"<attribute name>",
                "value":<attribute value>
              }
          ],
          "apply-during-cdc":<optional Boolean value>,
          "apply-during-full-load": <optional Boolean value>
        }
```

Im folgenden Beispiel werden die für den Bedingungsausdruck verwendeten Abschnitte hervorgehoben.

![\[Fangen Sie an mit AWS DMS\]](http://docs.aws.amazon.com/de_de/dms/latest/userguide/images/datarep-Tasks-conditional1.png)


### Verwenden der Attributzuweisung mit Objektzuweisung
<a name="CHAP_Target.DynamoDB.ObjectMapping.AttributeMapping"></a>

Mit Attributzuweisungen können Sie eine Vorlagenzeichenfolge festlegen, indem Sie anhand von Quellspaltennamen Daten auf dem Ziel umstrukturieren. Es wird keine Formatierung vorgenommen, außer den Angaben, die der Benutzer für die Vorlage festlegt.

Das folgende Beispiel zeigt die Struktur der Quelldatenbank und die gewünschte Struktur des DynamoDB-Ziels. Zuerst wird die Struktur der Quelle dargestellt, in diesem Fall eine Oracle-Datenbank, und dann die gewünschte Struktur der Daten in DynamoDB. Am Ende des Beispiels ist das JSON-Format dargestellt, mit dem die gewünschte Zielstruktur erstellt wird.

Die Struktur der Oracle-Daten ist im Folgenden angegeben:


****  

| FirstName | LastName | StoreId | HomeAddress | HomePhone | WorkAddress | WorkPhone | DateOfBirth | 
| --- | --- | --- | --- | --- | --- | --- | --- | 
| Primärschlüssel | – |  | 
| Randy | Marsh | 5 | 221B Baker Street  | 1234567890 | 31 Spooner Street, Quahog  | 9876543210  | 02/29/1988  | 

Die Struktur der DynamoDB-Daten ist im Folgenden angegeben:


****  

| CustomerName | StoreId | ContactDetails | DateOfBirth | 
| --- | --- | --- | --- | 
| Partitionsschlüssel | Sortierschlüssel | – | 
| <pre>Randy,Marsh</pre> | <pre>5</pre> | <pre>{<br />    "Name": "Randy",<br />    "Home": {<br />        "Address": "221B Baker Street",<br />        "Phone": 1234567890<br />    },<br />    "Work": {<br />        "Address": "31 Spooner Street, Quahog",<br />        "Phone": 9876541230<br />    }<br />}</pre> | <pre>02/29/1988</pre> | 

Im folgenden JSON-Beispiel sind die Objekt- und Spaltenzuordnungen dargestellt, mit denen die DynamoDB-Struktur erzielt wird:

```
{
    "rules": [
        {
            "rule-type": "selection",
            "rule-id": "1",
            "rule-name": "1",
            "object-locator": {
                "schema-name": "test",
                "table-name": "%"
            },
            "rule-action": "include"
        },
        {
            "rule-type": "object-mapping",
            "rule-id": "2",
            "rule-name": "TransformToDDB",
            "rule-action": "map-record-to-record",
            "object-locator": {
                "schema-name": "test",
                "table-name": "customer"
            },
            "target-table-name": "customer_t",
            "mapping-parameters": {
                "partition-key-name": "CustomerName",
                "sort-key-name": "StoreId",
                "exclude-columns": [
                    "FirstName",
                    "LastName",
                    "HomeAddress",
                    "HomePhone",
                    "WorkAddress",
                    "WorkPhone"
                ],
                "attribute-mappings": [
                    {
                        "target-attribute-name": "CustomerName",
                        "attribute-type": "scalar",
                        "attribute-sub-type": "string",
                        "value": "${FirstName},${LastName}"
                    },
                    {
                        "target-attribute-name": "StoreId",
                        "attribute-type": "scalar",
                        "attribute-sub-type": "string",
                        "value": "${StoreId}"
                    },
                    {
                        "target-attribute-name": "ContactDetails",
                        "attribute-type": "scalar",
                        "attribute-sub-type": "string",
                        "value": "{\"Name\":\"${FirstName}\",\"Home\":{\"Address\":\"${HomeAddress}\",\"Phone\":\"${HomePhone}\"}, \"Work\":{\"Address\":\"${WorkAddress}\",\"Phone\":\"${WorkPhone}\"}}"
                    }
                ]
            }
        }
    ]
}
```

Alternativ kann bei der Spaltenzuordnung das DynamoDB-Format als Dokumenttyp verwendet werden. Im folgenden Codebeispiel wird *dynamodb-map* als `attribute-sub-type` für die Attributzuweisung verwendet. 

```
{
    "rules": [
        {
            "rule-type": "selection",
            "rule-id": "1",
            "rule-name": "1",
            "object-locator": {
                "schema-name": "test",
                "table-name": "%"
            },
            "rule-action": "include"
        },
        {
            "rule-type": "object-mapping",
            "rule-id": "2",
            "rule-name": "TransformToDDB",
            "rule-action": "map-record-to-record",
            "object-locator": {
                "schema-name": "test",
                "table-name": "customer"
            },
            "target-table-name": "customer_t",
            "mapping-parameters": {
                "partition-key-name": "CustomerName",
                "sort-key-name": "StoreId",
                "exclude-columns": [
                    "FirstName",
                    "LastName",
                    "HomeAddress",
                    "HomePhone",
                    "WorkAddress",
                    "WorkPhone"
                ],
                "attribute-mappings": [
                    {
                        "target-attribute-name": "CustomerName",
                        "attribute-type": "scalar",
                        "attribute-sub-type": "string",
                        "value": "${FirstName},${LastName}"
                    },
                    {
                        "target-attribute-name": "StoreId",
                        "attribute-type": "scalar",
                        "attribute-sub-type": "string",
                        "value": "${StoreId}"
                    },
                    {
                        "target-attribute-name": "ContactDetails",
                        "attribute-type": "document",
                        "attribute-sub-type": "dynamodb-map",
                        "value": {
                          "M": {
                            "Name": {
                              "S": "${FirstName}"
                            },
                            "Home": {
                                    "M": {
                                        "Address": {
                                            "S": "${HomeAddress}"
                                        },
                                        "Phone": {
                                            "S": "${HomePhone}"
                                        }
                                    }
                                },
                                "Work": {
                                    "M": {
                                        "Address": {
                                            "S": "${WorkAddress}"
                                        },
                                        "Phone": {
                                            "S": "${WorkPhone}"
                                        }
                                    }
                                }
                            }
                        }        
                    }
                ]
            }
        }
    ]
}
```

Als Alternative zu `dynamodb-map` können Sie das Attribut `dynamodb-list` as attribute-sub-type for verwenden, wie im folgenden Beispiel gezeigt.

```
{
"target-attribute-name": "ContactDetailsList",
"attribute-type": "document",
"attribute-sub-type": "dynamodb-list",
"value": {
    "L": [
            {
                "N": "${FirstName}"
            },
            {   
                "N": "${HomeAddress}"
            },
            {   
                "N": "${HomePhone}"
            },
            {
                "N": "${WorkAddress}"
            },
            {
                "N": "${WorkPhone}"
            }
        ]   
    }
}
```

### Beispiel 1: Verwenden der Attributzuweisung mit Objektzuweisung
<a name="CHAP_Target.DynamoDB.ColumnMappingExample1"></a>

Im folgenden Beispiel werden Daten aus zwei MySQL-Datenbanktabellen, *nfl\$1data und *sport\$1team**, in zwei DynamoDB-Tabellen mit dem Namen und migriert. *NFLTeams*SportTeams** Unten stehend ist die Tabellenstruktur und das JSON-Format angegeben, das zum Zuweisen der Daten aus den MySQL-Datenbanktabellen zu den DynamoDB-Tabellen verwendet wird.

Die Struktur der MySQL-Datenbanktabelle *nfl\$1data* ist im Folgenden dargestellt:

```
mysql> desc nfl_data;
+---------------+-------------+------+-----+---------+-------+
| Field         | Type        | Null | Key | Default | Extra |
+---------------+-------------+------+-----+---------+-------+
| Position      | varchar(5)  | YES  |     | NULL    |       |
| player_number | smallint(6) | YES  |     | NULL    |       |
| Name          | varchar(40) | YES  |     | NULL    |       |
| status        | varchar(10) | YES  |     | NULL    |       |
| stat1         | varchar(10) | YES  |     | NULL    |       |
| stat1_val     | varchar(10) | YES  |     | NULL    |       |
| stat2         | varchar(10) | YES  |     | NULL    |       |
| stat2_val     | varchar(10) | YES  |     | NULL    |       |
| stat3         | varchar(10) | YES  |     | NULL    |       |
| stat3_val     | varchar(10) | YES  |     | NULL    |       |
| stat4         | varchar(10) | YES  |     | NULL    |       |
| stat4_val     | varchar(10) | YES  |     | NULL    |       |
| team          | varchar(10) | YES  |     | NULL    |       |
+---------------+-------------+------+-----+---------+-------+
```

Die Struktur der MySQL-Datenbanktabelle *sport\$1team* ist im Folgenden dargestellt:

```
mysql> desc sport_team;
+---------------------------+--------------+------+-----+---------+----------------+
| Field                     | Type         | Null | Key | Default | Extra          |
+---------------------------+--------------+------+-----+---------+----------------+
| id                        | mediumint(9) | NO   | PRI | NULL    | auto_increment |
| name                      | varchar(30)  | NO   |     | NULL    |                |
| abbreviated_name          | varchar(10)  | YES  |     | NULL    |                |
| home_field_id             | smallint(6)  | YES  | MUL | NULL    |                |
| sport_type_name           | varchar(15)  | NO   | MUL | NULL    |                |
| sport_league_short_name   | varchar(10)  | NO   |     | NULL    |                |
| sport_division_short_name | varchar(10)  | YES  |     | NULL    |                |
```

Im Folgenden sind die Tabellenzuordnungsregeln für die Zuordnung der zwei Tabellen zu den zwei DynamoDB-Tabellen aufgeführt:

```
{
  "rules":[
    {
      "rule-type": "selection",
      "rule-id": "1",
      "rule-name": "1",
      "object-locator": {
        "schema-name": "dms_sample",
        "table-name": "nfl_data"
      },
      "rule-action": "include"
    },
    {
      "rule-type": "selection",
      "rule-id": "2",
      "rule-name": "2",
      "object-locator": {
        "schema-name": "dms_sample",
        "table-name": "sport_team"
      },
      "rule-action": "include"
    },
    {
      "rule-type":"object-mapping",
      "rule-id":"3",
      "rule-name":"MapNFLData",
      "rule-action":"map-record-to-record",
      "object-locator":{
        "schema-name":"dms_sample",
        "table-name":"nfl_data"
      },
      "target-table-name":"NFLTeams",
      "mapping-parameters":{
        "partition-key-name":"Team",
        "sort-key-name":"PlayerName",
        "exclude-columns": [
          "player_number", "team", "name"
        ],
        "attribute-mappings":[
          {
            "target-attribute-name":"Team",
            "attribute-type":"scalar",
            "attribute-sub-type":"string",
            "value":"${team}"
          },
          {
            "target-attribute-name":"PlayerName",
            "attribute-type":"scalar",
            "attribute-sub-type":"string",
            "value":"${name}"
          },
          {
            "target-attribute-name":"PlayerInfo",
            "attribute-type":"scalar",
            "attribute-sub-type":"string",
            "value":"{\"Number\": \"${player_number}\",\"Position\": \"${Position}\",\"Status\": \"${status}\",\"Stats\": {\"Stat1\": \"${stat1}:${stat1_val}\",\"Stat2\": \"${stat2}:${stat2_val}\",\"Stat3\": \"${stat3}:${
stat3_val}\",\"Stat4\": \"${stat4}:${stat4_val}\"}"
          }
        ]
      }
    },
    {
      "rule-type":"object-mapping",
      "rule-id":"4",
      "rule-name":"MapSportTeam",
      "rule-action":"map-record-to-record",
      "object-locator":{
        "schema-name":"dms_sample",
        "table-name":"sport_team"
      },
      "target-table-name":"SportTeams",
      "mapping-parameters":{
        "partition-key-name":"TeamName",
        "exclude-columns": [
          "name", "id"
        ],
        "attribute-mappings":[
          {
            "target-attribute-name":"TeamName",
            "attribute-type":"scalar",
            "attribute-sub-type":"string",
            "value":"${name}"
          },
          {
            "target-attribute-name":"TeamInfo",
            "attribute-type":"scalar",
            "attribute-sub-type":"string",
            "value":"{\"League\": \"${sport_league_short_name}\",\"Division\": \"${sport_division_short_name}\"}"
          }
        ]
      }
    }
  ]
}
```

Die Beispielausgabe für die *NFLTeams*DynamoDB-Tabelle ist unten dargestellt:

```
  "PlayerInfo": "{\"Number\": \"6\",\"Position\": \"P\",\"Status\": \"ACT\",\"Stats\": {\"Stat1\": \"PUNTS:73\",\"Stat2\": \"AVG:46\",\"Stat3\": \"LNG:67\",\"Stat4\": \"IN 20:31\"}",
  "PlayerName": "Allen, Ryan",
  "Position": "P",
  "stat1": "PUNTS",
  "stat1_val": "73",
  "stat2": "AVG",
  "stat2_val": "46",
  "stat3": "LNG",
  "stat3_val": "67",
  "stat4": "IN 20",
  "stat4_val": "31",
  "status": "ACT",
  "Team": "NE"
}
```

Die Beispielausgabe für die SportsTeams *DynamoDB-Tabelle* ist unten dargestellt:

```
{
  "abbreviated_name": "IND",
  "home_field_id": 53,
  "sport_division_short_name": "AFC South",
  "sport_league_short_name": "NFL",
  "sport_type_name": "football",
  "TeamInfo": "{\"League\": \"NFL\",\"Division\": \"AFC South\"}",
  "TeamName": "Indianapolis Colts"
}
```

## Zieldatentypen für DynamoDB
<a name="CHAP_Target.DynamoDB.DataTypes"></a>

Der DynamoDB-Endpunkt für AWS DMS unterstützt die meisten DynamoDB-Datentypen. Die folgende Tabelle zeigt die AWS DMS Amazon-Zieldatentypen, die bei der Verwendung unterstützt werden, AWS DMS und die Standardzuweisung von AWS DMS Datentypen.

Weitere Informationen zu AWS DMS Datentypen finden Sie unter[Datentypen für den AWS Database Migration Service](CHAP_Reference.DataTypes.md).

Bei der AWS DMS Migration von Daten aus heterogenen Datenbanken ordnen wir Datentypen aus der Quelldatenbank Zwischendatentypen zu, die als Datentypen bezeichnet AWS DMS werden. Wir weisen dann die Zwischendatentypen zu den Zieldatentypen zu. Die folgende Tabelle zeigt jeden AWS DMS Datentyp und den Datentyp, dem er in DynamoDB zugeordnet ist:


| AWS DMS Datentyp | DynamoDB-Datentyp | 
| --- | --- | 
|  Zeichenfolge  |  Zeichenfolge  | 
|  WString  |  Zeichenfolge  | 
|  Boolesch  |  Boolesch  | 
|  Datum  |  Zeichenfolge  | 
|  DateTime  |  Zeichenfolge  | 
|  INT1  |  Zahl  | 
|  INT2  |  Zahl  | 
|  INT4  |  Zahl  | 
|  INT8  |  Zahl  | 
|  Numerischer Wert  |  Zahl  | 
|  Real4  |  Zahl  | 
|  Real8  |  Zahl  | 
|  UINT1  |  Zahl  | 
|  UINT2  |  Zahl  | 
|  UINT4  |  Zahl  | 
| UINT8 | Zahl | 
| CLOB | Zeichenfolge | 

# Verwendung von Amazon Kinesis Data Streams als Ziel für AWS Database Migration Service
<a name="CHAP_Target.Kinesis"></a>

Sie können AWS DMS es verwenden, um Daten in einen Amazon Kinesis Kinesis-Datenstream zu migrieren. Amazon-Kinesis-Datenströme sind Teil des Service Amazon Kinesis Data Streams. Sie können Kinesis-Datenströme zum Erfassen und Verarbeiten großer Ströme von Datensätzen in Echtzeit nutzen.

Ein Kinesis-Datenstrom besteht aus Shards. *Shards* sind eindeutig identifizierbare Sequenzen von Datensätzen in einem Stream. Weitere Informationen zu Shards in Amazon Kinesis Data Streams finden Sie unter [Shard](https://docs.aws.amazon.com/streams/latest/dev/key-concepts.html#shard) im *Amazon-Kinesis-Data-Streams-Entwicklerhandbuch*.

AWS Database Migration Service veröffentlicht Datensätze mithilfe von JSON in einem Kinesis-Datenstream. Während der Konvertierung serialisiert AWS DMS jeden Datensatz aus der Quelldatenbank in ein Attributwertpaar im JSON-Format oder in ein JSON\$1UNFORMATTED-Nachrichtenformat. Ein JSON\$1UNFORMATTED-Nachrichtenformat ist eine einzeilige JSON-Zeichenfolge mit neuem Zeilenbegrenzer. Es ermöglicht Amazon Data Firehose, Kinesis-Daten an ein Amazon S3 S3-Ziel zu senden und sie dann mit verschiedenen Abfrage-Engines, einschließlich Amazon Athena, abzufragen.

Sie verwenden die Objektzuweisung zum Migrieren Ihrer Daten von einer unterstützten Datenquelle zu einem Ziel-Stream. Mit der Objektzuweisung bestimmen Sie, wie die Datensätze im Stream zu strukturieren sind. Außerdem definieren Sie einen Partitionsschlüssel für jede Tabelle, die Kinesis Data Streams zum Gruppieren der Daten in Shards verwendet. 

AWS DMS legt auch mehrere Kinesis Data Streams Streams-Parameterwerte fest. Die Kosten für die Erstellung der Tabelle sind abhängig von der Datenmenge und der Anzahl der zu migrierenden Tabellen.

**Anmerkung**  
Die Option **SSL-Modus** auf der AWS DMS Konsole oder API gilt nicht für einige Datenstreaming- und NoSQL-Dienste wie Kinesis und DynamoDB. **Sie sind standardmäßig sicher, sodass AWS DMS angezeigt wird, dass die Einstellung für den SSL-Modus auf „Keine“ gesetzt ist (SSL-Modus=Keine).** Sie müssen keine zusätzliche Konfiguration für Ihren Endpunkt angeben, um SSL verwenden zu können. Wenn Sie beispielsweise Kinesis als Zielendpunkt verwenden, ist dies standardmäßig sicher. Alle API-Aufrufe an Kinesis verwenden SSL, sodass keine zusätzliche SSL-Option am AWS DMS Endpunkt erforderlich ist. Mithilfe des HTTPS-Protokolls, das AWS DMS standardmäßig verwendet, wenn eine Verbindung zu einem Kinesis-Datenstrom hergestellt wird, können Sie Daten sicher über SSL-Endpunkte einfügen und abrufen.

**Kinesis-Data-Streams-Endpunkteinstellungen**

Wenn Sie Kinesis Data Streams Streams-Zielendpunkte verwenden, können Sie Transaktions- und Kontrolldetails mithilfe der `KinesisSettings` Option in der AWS DMS API abrufen. 

Sie können die Verbindungseinstellungen auf eine der folgenden Weisen festlegen:
+ In der AWS DMS Konsole mithilfe der Endpunkteinstellungen.
+ In der CLI mit der `kinesis-settings` Option des [CreateEndpoint](https://docs.aws.amazon.com/dms/latest/APIReference/API_CreateEndpoint.html)Befehls.

Verwenden Sie in der CLI die folgenden Anforderungsparameter der Option `kinesis-settings`:
**Anmerkung**  
Unterstützung für die Endpunkteinstellung `IncludeNullAndEmpty` ist in AWS DMS -Version 3.4.1 und höher verfügbar. Unterstützung für die anderen folgenden Endpunkteinstellungen für Kinesis Data Streams Streams-Ziele ist jedoch in AWS DMS verfügbar. 
+ `MessageFormat` – Das Ausgabeformat für die Datensätze, die auf dem Endpunkt erstellt wurden. Das Nachrichtenformat ist `JSON` (Standard) oder `JSON_UNFORMATTED` (eine einzelne Zeile ohne Tabulator).
+ `IncludeControlDetails` – Zeigt detaillierte Steuerungsinformationen für Tabellendefinition, Spaltendefinition und Tabellen- und Spaltenänderungen in der Kinesis-Nachrichtenausgabe an. Der Standardwert ist `false`.
+ `IncludeNullAndEmpty` – Schließt NULL-Spalten und leere Spalten in das Ziel ein. Der Standardwert ist `false`.
+ `IncludePartitionValue` – Zeigt den Partitionswert innerhalb der Kinesis-Nachrichtenausgabe an, es sei denn, der Partitionstyp ist `schema-table-type`. Der Standardwert ist `false`.
+ `IncludeTableAlterOperations` – Enthält alle DDL-Operationen (DDL = Data Definition Language), die die Tabelle in den Steuerungsdaten ändern, wie etwa `rename-table`, `drop-table`, `add-column`, `drop-column` und `rename-column`. Der Standardwert ist `false`.
+ `IncludeTransactionDetails` – Stellt detaillierte Transaktionsinformationen aus der Quelldatenbank bereit. Diese Informationen beinhalten einen Durchführungszeitstempel, eine Protokollposition sowie Werte für `transaction_id`, `previous_transaction_id` und `transaction_record_id ` (den Datensatzoffset innerhalb einer Transaktion). Der Standardwert ist `false`.
+ `PartitionIncludeSchemaTable` – Fügt Schema- und Tabellennamen zu Partitionswerten als Präfix hinzu, wenn der Partitionstyp `primary-key-type` ist. Dadurch wird die Datenverteilung zwischen Kinesis-Shards erhöht. Angenommen, ein `SysBench`-Schema hat Tausende von Tabellen und jede davon hat nur einen begrenzten Bereich für einen Primärschlüssel. In diesem Fall wird derselbe Primärschlüssel von Tausenden von Tabellen an denselben Shard gesendet, was zu einer Drosselung führt. Der Standardwert ist `false`.
+ `UseLargeIntegerValue`— Verwenden Sie bis zu 18-stellige Ganzzahlen, anstatt Ganzzahlen in Doppelzahlen umzuwandeln. Diese Option ist ab AWS DMS Version 3.5.4 verfügbar. Der Standardwert lautet „false“.

Das folgende Beispiel zeigt die Option `kinesis-settings` mit einem Beispielbefehl `create-endpoint`, der über die AWS CLI ausgegeben wird.

```
aws dms \
  create-endpoint \
    --region <aws-region> \
    --endpoint-identifier <user-endpoint-identifier> \
    --endpoint-type target \
    --engine-name kinesis \
    --kinesis-settings ServiceAccessRoleArn=arn:aws:iam::<account-id>:role/<kinesis-role-name>,StreamArn=arn:aws:kinesis:<aws-region>:<account-id>:stream/<stream-name>,MessageFormat=json-unformatted,
IncludeControlDetails=true,IncludeTransactionDetails=true,IncludePartitionValue=true,PartitionIncludeSchemaTable=true,
IncludeTableAlterOperations=true
```

**Aufgabeneinstellungen für vollständige Multithread-Ladevorgänge**

 AWS DMS Unterstützt eine Multithread-Volllast auf eine Kinesis Data Streams Streams-Ziel-Instance, um die Übertragungsgeschwindigkeit zu erhöhen. DMS unterstützt Multithreading u. a. mithilfe der folgenden Aufgabeneinstellungen:
+ `MaxFullLoadSubTasks` – Geben Sie diese Option an, um die maximale Anzahl von Quelltabellen festzulegen, die parallel geladen werden sollen. DMS lädt jede Tabelle in die entsprechende Kinesis-Zieltabelle mithilfe einer dedizierten Unteraufgabe. Der Standardwert beträgt 8; der Maximalwert beträgt 49.
+ `ParallelLoadThreads`— Verwenden Sie diese Option, um die Anzahl der Threads anzugeben, die AWS DMS verwendet werden, um jede Tabelle in ihre Kinesis-Zieltabelle zu laden. Der Höchstwert für ein Kinesis-Data-Streams-Ziel ist 32. Sie können eine Erhöhung dieses Höchstwerts anfordern.
+ `ParallelLoadBufferSize` – Verwenden Sie diese Option, um die maximale Anzahl der Datensätze anzugeben, die in dem Puffer gespeichert werden sollen, den die parallelen Lade-Threads zum Laden von Daten in das Kinesis-Ziel verwenden. Der Standardwert lautet 50. Die maximale Wert ist 1.000. Verwenden Sie diese Einstellung mit `ParallelLoadThreads`; `ParallelLoadBufferSize` ist nur gültig, wenn es mehr als einen Thread gibt.
+ `ParallelLoadQueuesPerThread` – Verwenden Sie diese Option, um die Anzahl der Warteschlangen anzugeben, auf die jeder gleichzeitige Thread zugreift, um Datensätze aus Warteschlangen zu entfernen und eine Stapellast für das Ziel zu generieren. Der Standardwert ist 1. Für Kinesis-Ziele mit verschiedenen Nutzlastgrößen beträgt der gültige Bereich jedoch 5–512 Warteschlangen pro Thread.

**Aufgabeneinstellungen für Multithreaded CDC-Ladevorgänge**

Sie können die Leistung der Änderungsdatenerfassung (Change Data Capture, CDC) für Echtzeitdaten-Streaming-Zielendpunkte wie Kinesis mithilfe von Aufgabeneinstellungen verbessern, die das Verhalten des API–Aufrufs `PutRecords` ändern. Dazu können Sie die Anzahl der gleichzeitigen Threads, der Warteschlangen pro Thread und die Anzahl der Datensätze angeben, die in einem Puffer unter Verwendung von `ParallelApply*`-Aufgabeneinstellungen gespeichert werden sollen. Beispiel: Sie möchten eine CDC-Last durchführen und 128 Threads parallel anwenden. Außerdem möchten Sie auf 64 Warteschlangen pro Thread zugreifen, wobei 50 Datensätze pro Puffer gespeichert sind. 

 AWS DMS Unterstützt die folgenden Task-Einstellungen, um die CDC-Leistung zu verbessern:
+ `ParallelApplyThreads`— Gibt die Anzahl der gleichzeitigen Threads an, die während eines CDC-Ladevorgangs AWS DMS verwendet werden, um Datensätze an einen Kinesis-Zielendpunkt zu übertragen. Der Standardwert ist Null (0) und der maximale Wert ist 32.
+ `ParallelApplyBufferSize` – Gibt die maximale Anzahl von Datensätzen an, die in jeder Pufferwarteschlange für gleichzeitige Threads gespeichert werden sollen, um sie während einer CDC-Last an einen Kinesis-Zielendpunkt zu übertragen. Der Standardwert ist 100 und der maximale Wert 1 000. Verwenden Sie diese Option, wenn `ParallelApplyThreads` mehrere Threads angibt. 
+ `ParallelApplyQueuesPerThread` – Gibt die Anzahl der Warteschlangen an, auf die jeder Thread zugreift, um Datensätze aus Warteschlangen zu entfernen und während des CDC eine Stapellast für einen Kinesis-Endpunkt zu generieren. Der Standardwert ist 1 und der maximale Wert 512.

Wenn Sie `ParallelApply*`-Aufgabeneinstellungen verwenden, ist der `primary-key` der Tabelle der `partition-key-type`-Standardwert, nicht `schema-name.table-name`.

## Verwenden eines Vorher-Abbilds zum Anzeigen von Originalwerten von CDC-Zeilen für einen Kinesis-Datenstrom als Ziel
<a name="CHAP_Target.Kinesis.BeforeImage"></a>

Wenn Sie CDC-Aktualisierungen in ein Data-Streaming-Ziel wie Kinesis schreiben, können Sie die ursprünglichen Werte einer Quelldatenbankzeile vor der Änderung durch eine Aktualisierung anzeigen. Um dies zu ermöglichen, AWS DMS füllt es ein *Vorher-Image* der Aktualisierungsereignisse auf der Grundlage von Daten aus, die von der Quelldatenbank-Engine bereitgestellt werden. 

Verschiedene Quelldatenbank-Engines liefern unterschiedliche Mengen an Informationen für ein Vorher-Abbild: 
+ Oracle stellt für Spalten nur dann Aktualisierungen bereit, wenn sie sich ändern. 
+ PostgreSQL stellt nur Daten für Spalten bereit, die Teil des Primärschlüssels sind (geändert oder nicht). Um Daten für alle Spalten (geändert oder nicht) bereitzustellen, müssen Sie `FULL` statt `DEFAULT` für `REPLICA_IDENTITY` festlegen. Beachten Sie, dass Sie die Einstellung `REPLICA_IDENTITY` für jede Tabelle sorgfältig auswählen sollten. Wenn Sie für `REPLICA_IDENTITY` `FULL` festlegen, werden alle Spaltenwerte kontinuierlich in das Write-Ahead Logging (WAL) geschrieben. Dies kann bei Tabellen, die häufig aktualisiert werden, zu Leistungs- oder Ressourcenproblemen führen.
+ MySQL stellt generell Daten für alle Spalten außer für BLOB- und CLOB-Datentypen bereit (geändert oder nicht).

Verwenden Sie entweder die `BeforeImageSettings`-Aufgabeneinstellung oder den `add-before-image-columns`-Parameter, um die Erstellung von Vorher-Abbildern zum Hinzufügen von Originalwerten aus der Quelldatenbank zur AWS DMS -Ausgabe zu aktivieren. Dieser Parameter wendet eine Spalten-Transformationsregel an. 

`BeforeImageSettings` fügt jeder Aktualisierungsoperation ein neues JSON-Attribut mit Werten hinzu, die aus dem Quelldatenbanksystem erfasst werden, wie nachfolgend gezeigt.

```
"BeforeImageSettings": {
    "EnableBeforeImage": boolean,
    "FieldName": string,  
    "ColumnFilter": pk-only (default) / non-lob / all (but only one)
}
```

**Anmerkung**  
Gilt nur für `BeforeImageSettings` AWS DMS Aufgaben, die eine CDC-Komponente enthalten, z. B. Volllast- und CDC-Aufgaben (bei denen vorhandene Daten migriert und laufende Änderungen repliziert werden), oder für reine CDC-Aufgaben (bei denen nur Datenänderungen repliziert werden). Wenden Sie `BeforeImageSettings` nicht auf Nur-Volllast-Aufgaben an.

Für `BeforeImageSettings`-Optionen gilt Folgendes:
+ Legen Sie die `EnableBeforeImage`-Option vor dem Imaging auf `true` fest. Der Standardwert ist `false`. 
+ Verwenden Sie die `FieldName`-Option, um dem neuen JSON-Attribut einen Namen zuzuweisen. Wann `EnableBeforeImage` `true` ist, ist `FieldName` erforderlich und darf nicht leer sein.
+ Die `ColumnFilter`-Option gibt eine Spalte an, die vor dem Imaging hinzugefügt werden soll. Wenn Sie nur Spalten hinzufügen möchten, die Teil der Primärschlüssel der Tabelle sind, verwenden Sie den Standardwert `pk-only`. Wenn Sie eine Spalte hinzufügen möchten, die einen Vorher-Abbild-Wert hat, verwenden Sie `all`. Beachten Sie, dass das Vorher-Abbild keine Spalten mit LOB-Datentypen wie CLOB oder BLOB enthält.

  ```
  "BeforeImageSettings": {
      "EnableBeforeImage": true,
      "FieldName": "before-image",
      "ColumnFilter": "pk-only"
    }
  ```

**Anmerkung**  
Amazon-S3-Ziele unterstützen `BeforeImageSettings` nicht. Verwenden Sie für S3-Ziele nur die `add-before-image-columns`-Transformationsregel, die vor de- Imaging während des CDC-Vorgangs ausgeführt werden soll.

### Verwenden einer Vorher-Abbild-Transformationsregel
<a name="CHAP_Target.Kinesis.BeforeImage.Transform-Rule"></a>

Alternativ zu den Aufgabeneinstellungen können Sie den `add-before-image-columns`-Parameter verwenden, der eine Spalten-Transformationsregel anwendet. Mit diesem Parameter können Sie das Vorher-Abbild während des CDC-Vorgangs auf Data-Streaming-Zielen wie Kinesis aktivieren. 

Wenn Sie `add-before-image-columns` in einer Transformationsregel verwenden, können Sie eine feinere Steuerung der Ergebnisse für das Vorher-Abbild anwenden. Mit Transformationsregeln können Sie einen Objekt-Locator verwenden, der Ihnen die Kontrolle über die für die Regel ausgewählten Tabellen gibt. Außerdem können Sie Transformationsregeln miteinander verketten, wodurch verschiedene Regeln auf verschiedene Tabellen angewendet werden können. Anschließend können Sie die erzeugten Spalten mithilfe anderer Regeln bearbeiten. 

**Anmerkung**  
Verwenden Sie den `add-before-image-columns`-Parameter nicht zusammen mit der `BeforeImageSettings`-Aufgabeneinstellung innerhalb derselben Aufgabe. Verwenden Sie stattdessen entweder den Parameter oder die Einstellung, aber nicht beide, für eine einzelne Aufgabe.

Ein `transformation`-Regeltyp mit dem `add-before-image-columns`-Parameter für eine Spalte muss einen `before-image-def`-Abschnitt bereitstellen. Es folgt ein Beispiel.

```
    {
      "rule-type": "transformation",
      …
      "rule-target": "column",
      "rule-action": "add-before-image-columns",
      "before-image-def":{
        "column-filter": one-of  (pk-only / non-lob / all),
        "column-prefix": string,
        "column-suffix": string,
      }
    }
```

Der Wert von `column-prefix` wird einem Spaltennamen vorangestellt, und der Standardwert von `column-prefix` ist `BI_`. Der Wert von `column-suffix` wird an den Spaltennamen angehängt, und der Standardwert ist leer. Setzen Sie nicht `column-prefix` und `column-suffix` auf leere Zeichenfolgen.

Wählen Sie einen Wert für `column-filter`. Wenn Sie nur Spalten hinzufügen möchten, die Teil der Primärschlüssel der Tabelle sind, wählen Sie `pk-only` . Wählen Sie `non-lob`, um nur Spalten hinzuzufügen, die nicht vom LOB-Typ sind. Oder lassen`all` Sie eine Spalte hinzufügen, die einen Vorher-Abbild-Wert hat.

### Beispiel für eine Vorher-Abbild-Transformationsregel
<a name="CHAP_Target.Kinesis.BeforeImage.Example"></a>

Die Transformationsregel im folgenden Beispiel fügt eine neue Spalte mit dem Namen `BI_emp_no` auf dem Ziel hinzu. Eine Anweisung wie `UPDATE employees SET emp_no = 3 WHERE emp_no = 1;` füllt daher das `BI_emp_no` Feld mit 1. Wenn Sie CDC-Aktualisierungen für Amazon-S3-Ziele schreiben, ermöglicht die `BI_emp_no`-Spalte, zu erkennen, welche ursprüngliche Zeile aktualisiert wurde.

```
{
  "rules": [
    {
      "rule-type": "selection",
      "rule-id": "1",
      "rule-name": "1",
      "object-locator": {
        "schema-name": "%",
        "table-name": "%"
      },
      "rule-action": "include"
    },
    {
      "rule-type": "transformation",
      "rule-id": "2",
      "rule-name": "2",
      "rule-target": "column",
      "object-locator": {
        "schema-name": "%",
        "table-name": "employees"
      },
      "rule-action": "add-before-image-columns",
      "before-image-def": {
        "column-prefix": "BI_",
        "column-suffix": "",
        "column-filter": "pk-only"
      }
    }
  ]
}
```

Weitere Informationen zur Verwendung der `add-before-image-columns`-Regelaktion finden Sie unter [Transformationsregeln und Aktionen](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Transformations.md).

## Voraussetzungen für die Verwendung eines Kinesis-Datenstroms als Ziel für AWS Database Migration Service
<a name="CHAP_Target.Kinesis.Prerequisites"></a>

### IAM-Rolle für die Verwendung eines Kinesis-Datenstroms als Ziel für AWS Database Migration Service
<a name="CHAP_Target.Kinesis.Prerequisites.IAM"></a>

Bevor Sie einen Kinesis-Datenstream als Ziel für einrichten, stellen Sie sicher AWS DMS, dass Sie eine IAM-Rolle erstellen. Diese Rolle muss es ermöglichen AWS DMS , Zugriff auf die Kinesis-Datenströme zu übernehmen und zu gewähren, in die migriert werden. In der folgenden IAM-Richtlinie sind die Mindestzugriffsberechtigungen dargestellt.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
   {
     "Sid": "1",
     "Effect": "Allow",
     "Principal": {
        "Service": "dms.amazonaws.com"
     },
   "Action": "sts:AssumeRole"
   }
]
}
```

------

Die Rolle, die Sie für die Migration zu einem Kinesis-Datenstrom verwenden, muss über die folgenden Berechtigungen verfügen.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "kinesis:DescribeStream",
        "kinesis:PutRecord",
        "kinesis:PutRecords"
      ],
      "Resource": "*"
    }
  ]
}
```

------

### Zugreifen auf einen Kinesis-Datenstream als Ziel für AWS Database Migration Service
<a name="CHAP_Target.Kinesis.Prerequisites.Access"></a>

In AWS DMS Version 3.4.7 und höher müssen Sie einen der folgenden Schritte ausführen, um eine Verbindung zu einem Kinesis-Endpunkt herzustellen:
+ Konfigurieren von DMS für die Verwendung von VPC-Endpunkten. Informationen zur Konfiguration von VPC-Endpunkten finden Sie in [Konfiguration von VPC-Endpunkten für AWS DMS](CHAP_VPC_Endpoints.md).
+ Konfigurieren Sie DMS so, dass es öffentliche Routen verwendet, d. h. Ihre Replikations-Instance öffentlich zugänglich macht. Informationen zu Replikations-Instances finden Sie unter [Öffentliche und private Replikations-Instances](CHAP_ReplicationInstance.PublicPrivate.md).

## Einschränkungen bei der Verwendung von Kinesis Data Streams als Ziel für AWS Database Migration Service
<a name="CHAP_Target.Kinesis.Limitations"></a>

Bei der Verwendung von Kinesis Data Streams als Ziel gelten die folgenden Einschränkungen:
+ AWS DMS veröffentlicht jedes Update eines einzelnen Datensatzes in der Quelldatenbank als einen Datensatz in einem bestimmten Kinesis-Datenstrom, unabhängig von den Transaktionen. Sie können jedoch Transaktionsdetails für jeden Datensatz hinzufügen, indem Sie relevante Parameter der `KinesisSettings`-API verwenden.
+ Der vollständige LOB-Modus wird nicht unterstützt.
+ Die maximale unterstützte LOB-Größe beträgt 1 MB.
+ Kinesis Data Streams unterstützt keine Deduplizierung. Anwendungen, die Daten aus einem Stream aufnehmen, müssen doppelte Datensätze verarbeiten können. Weitere Informationen finden Sie unter [Umgang mit doppelten Datensätzen](https://docs.aws.amazon.com/streams/latest/dev/kinesis-record-processor-duplicates.html) im *Amazon-Kinesis-Data-Streams-Entwicklerhandbuch*.
+ AWS DMS unterstützt die folgenden vier Formen für Partitionsschlüssel:
  + `SchemaName.TableName`: Eine Kombination des Schema- und Tabellennamens.
  + `${AttributeName}`: Der Wert in einem der Felder in der JSON-Datei oder der Primärschlüssel der Tabelle in der Quelldatenbank.
  + `transaction-id`: Die CDC-Transaktions-ID. Alle Datensätze innerhalb derselben Transaktion gehen auf dieselbe Partition.
  + `constant`: Ein fester Literalwert für jeden Datensatz, unabhängig von Tabelle oder Daten. Alle Datensätze werden an denselben Partitionsschlüsselwert „constant“ gesendet, wodurch eine strikte globale Reihenfolge in allen Tabellen gewährleistet ist.

  ```
  {
      "rule-type": "object-mapping",
      "rule-id": "2",
      "rule-name": "PartitionKeyTypeExample",
      "rule-action": "map-record-to-document",
      "object-locator": {
          "schema-name": "onprem",
          "table-name": "it_system"
      },
      "mapping-parameters": {
          "partition-key-type": "transaction-id | constant | attribute-name | schema-table"
      }
  }
  ```
+ Weitere Informationen zum Verschlüsseln Ihrer Daten im Ruhezustand in Kinesis Data Streams finden Sie unter [Datenschutz in Kinesis Data Streams](https://docs.aws.amazon.com/streams/latest/dev/server-side-encryption.html.html) im *AWS Key Management Service -Entwicklerhandbuch*. 
+ Die `IncludeTransactionDetails` Endpunkteinstellung wird nur unterstützt, wenn der Quellendpunkt Oracle, SQL Server, PostgreSQL oder MySQL ist. Bei anderen Quellendpunkttypen sind Transaktionsdetails nicht enthalten.
+ `BatchApply` wird für einen Kinesis-Endpunkt nicht unterstützt. Die Verwendung von Batch Apply (z. B. die `BatchApplyEnabled` Zielmetadaten-Aufgabeneinstellung) für ein Kinesis-Ziel führt zu Aufgabenfehlern und Datenverlust. Nicht aktivieren`BatchApply`, wenn Kinesis als Zielendpunkt verwendet wird.
+ Kinesis-Ziele werden nur für einen Kinesis-Datenstream im selben AWS Konto und in derselben AWS-Region Replikationsinstanz unterstützt.
+ Bei der Migration von einer MySQL-Quelle enthalten die BeforeImage Daten keine CLOB- und BLOB-Datentypen. Weitere Informationen finden Sie unter [Verwenden eines Vorher-Abbilds zum Anzeigen von Originalwerten von CDC-Zeilen für einen Kinesis-Datenstrom als Ziel](#CHAP_Target.Kinesis.BeforeImage).
+ AWS DMS unterstützt nicht die Migration von Werten mit einem `BigInt` Datentyp mit mehr als 16 Ziffern. Um diese Einschränkung zu umgehen, können Sie die folgende Transformationsregel verwenden, um die `BigInt`-Spalte in eine Zeichenfolge zu konvertieren. Informationen zu Transformationsregeln finden Sie unter [Transformationsregeln und Aktionen](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Transformations.md).

  ```
  {
      "rule-type": "transformation",
      "rule-id": "id",
      "rule-name": "name",
      "rule-target": "column",
      "object-locator": {
          "schema-name": "valid object-mapping rule action",
          "table-name": "",
          "column-name": ""
      },
      "rule-action": "change-data-type",
      "data-type": {
          "type": "string",
          "length": 20
      }
  }
  ```
+ Wenn mehrere DML-Operationen innerhalb einer einzigen Transaktion eine LOB-Spalte (Large Object) in der Quelldatenbank ändern, behält die Zieldatenbank nur den letzten LOB-Wert der letzten Operation in dieser Transaktion bei. Die LOB-Zwischenwerte, die durch frühere Operationen in derselben Transaktion festgelegt wurden, werden überschrieben, was zu potenziellem Datenverlust oder Inkonsistenzen führen kann. Dieses Verhalten ist darauf zurückzuführen, wie LOB-Daten während der Replikation verarbeitet werden.
+ AWS DMS unterstützt keine Quelldaten mit eingebetteten `'\0'` Zeichen, wenn Kinesis als Zielendpunkt verwendet wird. Daten, die eingebettete `'\0'` Zeichen enthalten, werden beim ersten `'\0'` Zeichen gekürzt.

## Verwenden der Objektzuweisung zum Migrieren von Daten zu einem Kinesis-Datenstrom
<a name="CHAP_Target.Kinesis.ObjectMapping"></a>

AWS DMS verwendet Tabellenzuordnungsregeln, um Daten von der Quelle dem Kinesis-Zieldatenstrom zuzuordnen. Um Daten einem Ziel-Stream zuzuweisen , verwenden Sie eine Art von Tabellenzuweisungsregel, die als Objektzuweisung bezeichnet wird. Durch die Objektzuweisung legen Sie fest, wie Datensätze in der Quelle den im Kinesis-Datenstrom veröffentlichten Datensätzen zugewiesen werden. 

Kinesis-Datenströme verfügen bis auf einen Partitionsschlüssel über keine voreingestellte Struktur. In einer Objektzuweisungsregel sind die möglichen Werte eines `partition-key-type` für Datensätze `schema-table`, `transaction-id`, `primary-key`, `constant` und `attribute-name`.

Um eine Objektzuweisungsregel zu erstellen, legen Sie `rule-type` als `object-mapping` fest. Diese Regel gibt an, welchen Objektzuweisungstyp Sie verwenden möchten. 

Die Struktur für die Regel lautet wie folgt.

```
{
    "rules": [
        {
            "rule-type": "object-mapping",
            "rule-id": "id",
            "rule-name": "name",
            "rule-action": "valid object-mapping rule action",
            "object-locator": {
                "schema-name": "case-sensitive schema name",
                "table-name": ""
            }
        }
    ]
}
```

AWS DMS unterstützt derzeit `map-record-to-record` und `map-record-to-document` als einzig gültige Werte für den Parameter. `rule-action` Diese Einstellungen wirken sich auf Werte aus, die nicht in der `exclude-columns`-Attributliste ausgeschlossen sind. Die `map-record-to-document` Werte `map-record-to-record` und geben an, wie diese Datensätze standardmäßig AWS DMS behandelt werden. Diese Werte wirken sich in keiner Weise auf die Attributzuweisungen aus. 

Verwenden Sie `map-record-to-record` beim Migrieren aus einer relationalen Datenbank zu einem Kinesis-Datenstrom. Dieser Regeltyp verwendet den `taskResourceId.schemaName.tableName`-Wert aus der relationalen Datenbank als Partitionsschlüssel im Kinesis-Datenstrom und erstellt ein Attribut für jede Spalte in der Quelldatenbank. 

Beachten Sie bei Verwendung von `map-record-to-record` Folgendes:
+ Diese Einstellung wirkt sich nur auf Spalten aus, die durch die `exclude-columns`-Liste ausgeschlossen wurden.
+  AWS DMS Erstellt für jede dieser Spalten ein entsprechendes Attribut im Zielthema.
+ AWS DMS erstellt dieses entsprechende Attribut unabhängig davon, ob die Quellspalte in einer Attributzuordnung verwendet wird. 

Verwenden Sie `map-record-to-document`, um Quellspalten in ein einziges, flaches Dokument im entsprechenden Ziel-Stream unter Verwendung des Attributnamens „\$1doc“ einzufügen. AWS DMS platziert die Daten in einer einzigen, flachen Zuweisung in der Quelle mit dem Namen „`_doc`“. Diese Platzierung gilt für jede Spalte der Quelltabelle, die nicht in der `exclude-columns`-Attributliste aufgeführt ist.

Eine Möglichkeit, `map-record-to-record` zu verstehen, besteht darin, sich die praktische Anwendung zu veranschaulichen. In diesem Beispiel wird davon ausgegangen, dass Sie mit einer Tabellenzeile einer relationalen Datenbank beginnen, die die folgende Struktur aufweist und die folgenden Daten enthält.


| FirstName | LastName | StoreId | HomeAddress | HomePhone | WorkAddress | WorkPhone | DateofBirth | 
| --- | --- | --- | --- | --- | --- | --- | --- | 
| Randy | Marsh | 5 | 221B Baker Street | 1234567890 | 31 Spooner Street, Quahog  | 9876543210 | 02/29/1988 | 

Um diese Informationen von einem Schema mit dem Namen `Test` zu einem Kinesis-Datenstrom zu migrieren, erstellen Sie Regeln zur Zuordnung der Daten zu dem Zieldatenstrom. Die folgende Regel veranschaulicht die Zuweisung. 

```
{
    "rules": [
        {
            "rule-type": "selection",
            "rule-id": "1",
            "rule-name": "1",
            "rule-action": "include",
            "object-locator": {
                "schema-name": "Test",
                "table-name": "%"
            }
        },
        {
            "rule-type": "object-mapping",
            "rule-id": "2",
            "rule-name": "DefaultMapToKinesis",
            "rule-action": "map-record-to-record",
            "object-locator": {
                "schema-name": "Test",
                "table-name": "Customers"
            }
        }
    ]
}
```

Im Folgenden ist das resultierende Datensatzformat im Kinesis-Datenstrom dargestellt: 
+ StreamName: XXX
+ PartitionKey: Test.Customers //schmaname.tableName
+ Data: //Die folgende JSON-Meldung

  ```
    {
       "FirstName": "Randy",
       "LastName": "Marsh",
       "StoreId":  "5",
       "HomeAddress": "221B Baker Street",
       "HomePhone": "1234567890",
       "WorkAddress": "31 Spooner Street, Quahog",
       "WorkPhone": "9876543210",
       "DateOfBirth": "02/29/1988"
    }
  ```

Nehmen wir jedoch an, dass Sie dieselben Regeln verwenden, den `rule-action`-Parameter jedoch in `map-record-to-document` ändern und bestimmte Spalten ausschließen. Die folgende Regel veranschaulicht die Zuweisung.

```
{
	"rules": [
	   {
			"rule-type": "selection",
			"rule-id": "1",
			"rule-name": "1",
			"rule-action": "include",
			"object-locator": {
				"schema-name": "Test",
				"table-name": "%"
			}
		},
		{
			"rule-type": "object-mapping",
			"rule-id": "2",
			"rule-name": "DefaultMapToKinesis",
			"rule-action": "map-record-to-document",
			"object-locator": {
				"schema-name": "Test",
				"table-name": "Customers"
			},
			"mapping-parameters": {
				"exclude-columns": [
					"homeaddress",
					"homephone",
					"workaddress",
					"workphone"
				]
			}
		}
	]
}
```

In diesem Fall werden die nicht im `exclude-columns`-Parameter aufgeführten Spalten `FirstName`, `LastName`, `StoreId` und `DateOfBirth` zu `_doc` zugeordnet. Im Folgenden ist das resultierende Datensatzformat dargestellt. 

```
       {
            "data":{
                "_doc":{
                    "FirstName": "Randy",
                    "LastName": "Marsh",
                    "StoreId":  "5",
                    "DateOfBirth": "02/29/1988"
                }
            }
        }
```

### Umstrukturieren von Daten mit Attributzuweisung
<a name="CHAP_Target.Kinesis.AttributeMapping"></a>

Sie können die Daten während der Migration zu einem Kinesis-Datenstrom mithilfe einer Attributzuordnung umstrukturieren. So möchten Sie zum Beispiel vielleicht mehrere Felder in der Quelle in einem einzigen Feld im Ziel vereinen. Die folgenden Attributzuordnung veranschaulicht, wie die Daten umstrukturiert werden.

```
{
    "rules": [
        {
            "rule-type": "selection",
            "rule-id": "1",
            "rule-name": "1",
            "rule-action": "include",
            "object-locator": {
                "schema-name": "Test",
                "table-name": "%"
            }
        },
        {
            "rule-type": "object-mapping",
            "rule-id": "2",
            "rule-name": "TransformToKinesis",
            "rule-action": "map-record-to-record",
            "target-table-name": "CustomerData",
            "object-locator": {
                "schema-name": "Test",
                "table-name": "Customers"
            },
            "mapping-parameters": {
                "partition-key-type": "attribute-name",
                "partition-key-name": "CustomerName",
                "exclude-columns": [
                    "firstname",
                    "lastname",
                    "homeaddress",
                    "homephone",
                    "workaddress",
                    "workphone"
                ],
                "attribute-mappings": [
                    {
                        "target-attribute-name": "CustomerName",
                        "attribute-type": "scalar",
                        "attribute-sub-type": "string",
                        "value": "${lastname}, ${firstname}"
                    },
                    {
                        "target-attribute-name": "ContactDetails",
                        "attribute-type": "document",
                        "attribute-sub-type": "json",
                        "value": {
                            "Home": {
                                "Address": "${homeaddress}",
                                "Phone": "${homephone}"
                            },
                            "Work": {
                                "Address": "${workaddress}",
                                "Phone": "${workphone}"
                            }
                        }
                    }
                ]
            }
        }
    ]
}
```

Um einen konstanten Wert für festzulegen, geben `"partition-key-type: "constant"` Sie an`partition-key`, dass dadurch der Partitionswert auf gesetzt wird. `constant` So könnten Sie auf diese Weise beispielsweise erzwingen, dass alle Daten in einem einzigen Shard gespeichert werden. Die folgende Darstellung veranschaulicht dieses Konzept. 

```
{
    "rules": [
        {
            "rule-type": "selection",
            "rule-id": "1",
            "rule-name": "1",
            "object-locator": {
                "schema-name": "Test",
                "table-name": "%"
            },
            "rule-action": "include"
        },
        {
            "rule-type": "object-mapping",
            "rule-id": "2",
            "rule-name": "TransformToKinesis",
            "rule-action": "map-record-to-document",
            "object-locator": {
                "schema-name": "Test",
                "table-name": "Customer"
            },
            "mapping-parameters": {
                "partition-key-type": "constant",
                "exclude-columns": [
                    "FirstName",
                    "LastName",
                    "HomeAddress",
                    "HomePhone",
                    "WorkAddress",
                    "WorkPhone"
                ],
                "attribute-mappings": [
                    {
                        "target-attribute-name": "CustomerName",
                        "attribute-type": "scalar",
                        "attribute-sub-type": "string",
                        "value": "${FirstName},${LastName}"

                    },
                    {
                        "target-attribute-name": "ContactDetails",
                        "attribute-type": "scalar",
                        "attribute-sub-type": "string",
                        "value": {
                            "Home": {
                                "Address": "${HomeAddress}",
                                "Phone": "${HomePhone}"
                            },
                            "Work": {
                                "Address": "${WorkAddress}",
                                "Phone": "${WorkPhone}"
                            }
                        }
                    },
                    {
                        "target-attribute-name": "DateOfBirth",
                        "attribute-type": "scalar",
                        "attribute-sub-type": "string",
                        "value": "${DateOfBirth}"
                    }
                ]
            }
        }
    ]
}
```

**Anmerkung**  
Der `partition-key`-Wert für einen Steuerungsdatensatz, der für eine spezifische Tabelle bestimmt ist, lautet `TaskId.SchemaName.TableName`. Der `partition-key`-Wert für einen Steuerungsdatensatz, der für eine spezifische Aufgabe bestimmt ist, ist die `TaskId` des betreffenden Datensatzes. Wenn Sie einen `partition-key`-Wert in der Objektzuweisung angeben, hat dies keine Auswirkungen auf den `partition-key` für einen Steuerungsdatensatz.  
 Wann `attribute-name` in einer Tabellenzuordnungsregel auf festgelegt `partition-key-type` ist, müssen Sie angeben`partition-key-name`, was entweder auf eine Spalte aus der Quelltabelle oder auf eine in der Zuordnung definierte benutzerdefinierte Spalte verweisen muss. Zusätzlich `attribute-mappings` muss definiert werden, wie Quellspalten dem Ziel-Kinesis Stream zugeordnet werden.

### Nachrichtenformat für Kinesis-Datenströme
<a name="CHAP_Target.Kinesis.Messageformat"></a>

Die JSON-Ausgabe ist einfach eine Liste von Schlüssel-Wert-Paaren. Ein JSON\$1UNFORMATTED-Nachrichtenformat ist eine einzeilige JSON-Zeichenfolge mit neuem Zeilenbegrenzer.

AWS DMS stellt die folgenden reservierten Felder bereit, um die Nutzung der Daten aus den Kinesis Data Streams zu vereinfachen: 

**RecordType**  
Der Datensatztyp kann entweder für Daten oder zur Steuerung bestimmt sein. *Datensätze für Daten*repräsentieren die tatsächlichen Zeilen in der Quelle. *Steuerungsdatensätze* sind für wichtige Ereignisse im Stream bestimmt, z. B. einen Neustart der Aufgabe.

**Operation**  
Mögliche Operationen für Datensätze sind `load`, `insert`, `update` oder `delete`.  
Mögliche Operationen für Steuerungsdatensätze sind `create-table`, `rename-table`, `drop-table`, `change-columns`, `add-column`, `drop-column`, `rename-column` oder `column-type-change`.

**SchemaName**  
Das Quellschema für den Datensatz. Dieses Feld kann für einen Steuerungsdatensatz leer sein.

**TableName**  
Die Quelltabelle für den Datensatz. Dieses Feld kann für einen Steuerungsdatensatz leer sein.

**Zeitstempel**  
Der Zeitstempel für den Zeitpunkt, an dem die JSON-Nachricht erstellt wurde. Das Feld ist mit dem ISO-8601-Format formatiert.

# Verwendung von Apache Kafka als Ziel für AWS Database Migration Service
<a name="CHAP_Target.Kafka"></a>

Sie können es verwenden AWS DMS , um Daten zu einem Apache Kafka-Cluster zu migrieren. Apache Kafka ist eine verteilte Streaming-Plattform. Mit Apache Kafka können Sie Streaming-Daten in Echtzeit erfassen und verarbeiten.

AWS bietet auch Amazon Managed Streaming for Apache Kafka (Amazon MSK) zur Verwendung als Ziel an AWS DMS . Amazon MSK ist ein vollständig verwalteter Apache-Kafka-Streaming-Service, der die Implementierung und Verwaltung von Apache-Kafka-Instances vereinfacht. Es funktioniert mit Open-Source-Versionen von Apache Kafka, und Sie greifen genau wie jede Apache Kafka-Instance auf Amazon MSK-Instances als AWS DMS Ziele zu. Weitere Informationen finden Sie unter [Was ist Amazon MSK?](https://docs.aws.amazon.com/msk/latest/developerguide/what-is-msk.html) im *Entwicklerhandbuch für Amazon Managed Streaming für Apache Kafka*.

Ein Kafka-Cluster speichert Streams von Datensätzen in Kategorien, die als Themen bezeichnet und in Partitionen unterteilt werden. *Partitionen* sind eindeutig identifizierte Sequenzen von Datensätzen (Nachrichten) in einem Thema. Partitionen können über mehrere Broker in einem Cluster verteilt werden, um die parallele Verarbeitung der Datensätze eines Themas zu ermöglichen. Weitere Informationen zu Themen und Partitionen und ihrer Verteilung in Apache Kafka finden Sie unter [Themen und Protokolle](https://kafka.apache.org/documentation/#intro_topics) und [Verteilung](https://kafka.apache.org/documentation/#intro_distribution).

Bei Ihrem Kafka-Cluster kann es sich entweder um eine Amazon-MSK-Instance, einen Cluster, der auf einer Amazon-EC2-Instance ausgeführt wird, oder einen On-Premises-Cluster handeln. Eine Amazon-MSK-Instance oder ein Cluster auf einer Amazon-EC2-Instance kann sich in derselben oder einer anderen VPC befinden. Wenn es sich um einen On-Premises-Cluster handelt, können Sie Ihren eigenen On-Premises-Namensserver für Ihre Replikations-Instance verwenden, um den Host-Namen des Clusters aufzulösen. Informationen zum Einrichten eines Namensservers für Ihre Replikations-Instance finden Sie unter [Verwenden Ihres eigenen Vor-Ort-Nameservers](CHAP_BestPractices.md#CHAP_BestPractices.Rte53DNSResolver). Weitere Informationen zum Einrichten eines Netzwerks finden Sie unter [Einrichten eines Netzwerks für eine Replikations-Instance](CHAP_ReplicationInstance.VPC.md).

Wenn Sie einen Amazon-MSK-Cluster verwenden, stellen Sie sicher, dass dessen Sicherheitsgruppe den Zugriff von Ihrer Replikations-Instance aus ermöglicht. Informationen zum Ändern der Sicherheitsgruppe für einen Amazon-MSK-Cluster finden Sie unter [Ändern der Sicherheitsgruppe eines Amazon-MSK-Clusters](https://docs.aws.amazon.com/msk/latest/developerguide/change-security-group.html).

AWS Database Migration Service veröffentlicht mithilfe von JSON Datensätze zu einem Kafka-Thema. Während der Konvertierung serialisiert AWS DMS jeden Datensatz aus der Quelldatenbank in ein Attribut/Wert-Paar im JSON-Format.

Zum Migrieren Ihrer Daten von einer unterstützten Datenquelle zu einem Kafka-Ziel-Cluster verwenden Sie die Objektzuweisung. Mit der Objektzuweisung bestimmen Sie, wie die Datensätze im Zielthema strukturiert werden sollen. Außerdem definieren Sie einen Partitionsschlüssel für jede Tabelle, die Apache Kafka zum Gruppieren der Daten in seine Partitionen verwendet. 

 AWS DMS Unterstützt derzeit ein einzelnes Thema pro Aufgabe. Bei einer einzelnen Aufgabe mit mehreren Tabellen beziehen sich alle Nachrichten auf ein einzelnes Thema. Jede Nachricht enthält einen Metadaten-Abschnitt, der das Zielschema und die Zieltabelle identifiziert. AWS DMS Versionen 3.4.6 und höher unterstützen die themenübergreifende Replikation mithilfe von Objektzuordnung. Weitere Informationen finden Sie unter [Replikation für mehrere Themen mithilfe der Objektzuweisung](#CHAP_Target.Kafka.MultiTopic).

**Apache Kafka-Endpunkteinstellungen**

Sie können Verbindungsdetails über die Endpunkteinstellungen in der AWS DMS Konsole oder über die `--kafka-settings` Option in der CLI angeben. Es folgen die Anforderungen für jede Einstellung:
+ `Broker` – Geben Sie die Speicherorte eines oder mehrerer Broker in Ihrem Kafka-Cluster jeweils in Form einer durch Kommata getrennten Liste mit `broker-hostname:port` an. Ein Beispiel ist `"ec2-12-345-678-901.compute-1.amazonaws.com:2345,ec2-10-987-654-321.compute-1.amazonaws.com:9876"`. Mit dieser Einstellung können Sie die Speicherorte einiger oder aller Broker im Cluster angeben. Die Cluster-Broker kommunizieren miteinander, um die Partitionierung von Datensätzen zu verarbeiten, die zu dem Thema migriert wurden.
+ `Topic` – (Optional) Geben Sie den Themennamen mit einer maximalen Länge von 255 Buchstaben und Symbolen an. Sie können Punkt (.), Unterstrich (\$1) und Minuszeichen (-) verwenden. Themennamen mit einem Punkt (.) oder einem Unterstrich (\$1) können in internen Datenstrukturen kollidieren. Verwenden Sie entweder eines, aber nicht beide dieser Symbole im Namen des Themas. Wenn Sie keinen Themennamen angeben, AWS DMS verwendet `"kafka-default-topic"` als Migrationsthema.
**Anmerkung**  
Wenn Sie entweder ein von Ihnen angegebenes Migrationsthema oder das Standardthema AWS DMS erstellen möchten, das `auto.create.topics.enable = true` als Teil Ihrer Kafka-Cluster-Konfiguration festgelegt wurde. Weitere Informationen finden Sie unter [Einschränkungen bei der Verwendung von Apache Kafka als Ziel für AWS Database Migration Service](#CHAP_Target.Kafka.Limitations).
+ `MessageFormat` – Das Ausgabeformat für die Datensätze, die auf dem Endpunkt erstellt wurden. Das Nachrichtenformat ist `JSON` (Standard) oder `JSON_UNFORMATTED` (eine einzelne Zeile ohne Tabulator).
+ `MessageMaxBytes` – Die maximale Größe in Byte für Datensätze, die auf dem Endpunkt erstellt wurden. Der Standardwert ist 1.000.000.
**Anmerkung**  
Sie können die AWS CLI/das SDK nur verwenden, um zu einem Wert `MessageMaxBytes` zu wechseln, der nicht dem Standard entspricht. Verwenden Sie beispielsweise den folgenden Befehl, um Ihren vorhandenen Kafka-Endpunkt und `MessageMaxBytes` zu ändern.  

  ```
  aws dms modify-endpoint --endpoint-arn your-endpoint 
  --kafka-settings Broker="broker1-server:broker1-port,broker2-server:broker2-port,...",
  Topic=topic-name,MessageMaxBytes=integer-of-max-message-size-in-bytes
  ```
+ `IncludeTransactionDetails` – Stellt detaillierte Transaktionsinformationen aus der Quelldatenbank bereit. Diese Informationen beinhalten einen Durchführungszeitstempel, eine Protokollposition sowie Werte für `transaction_id`, `previous_transaction_id` und `transaction_record_id` (den Datensatzoffset innerhalb einer Transaktion). Der Standardwert ist `false`.
+ `IncludePartitionValue` – Zeigt den Partitionswert innerhalb der Kafka-Nachrichtenausgabe an, es sei denn, der Partitionstyp ist `schema-table-type`. Der Standardwert ist `false`.
+ `PartitionIncludeSchemaTable` – Fügt Schema- und Tabellennamen zu Partitionswerten als Präfix hinzu, wenn der Partitionstyp `primary-key-type` ist. Dadurch wird die Datenverteilung zwischen Kafka-Partitionen erhöht. Angenommen, ein `SysBench`-Schema hat Tausende von Tabellen und jede davon hat nur einen begrenzten Bereich für einen Primärschlüssel. In diesem Fall wird derselbe Primärschlüssel von Tausenden von Tabellen an dieselbe Partition gesendet, was zu einer Drosselung führt. Der Standardwert ist `false`.
+ `IncludeTableAlterOperations` – Enthält alle DDL-Operationen (DDL = Data Definition Language), die die Tabelle in den Steuerungsdaten ändern, wie etwa `rename-table`, `drop-table`, `add-column`, `drop-column` und `rename-column`. Der Standardwert ist `false`. 
+ `IncludeControlDetails` – Zeigt detaillierte Steuerungsinformationen für Tabellendefinition, Spaltendefinition und Tabellen- und Spaltenänderungen in der Kafka-Nachrichtenausgabe an. Der Standardwert ist `false`.
+ `IncludeNullAndEmpty` – Schließt NULL-Spalten und leere Spalten in das Ziel ein. Der Standardwert ist `false`.
+ `SecurityProtocol` – Richtet eine sichere Verbindung mit einem Kafka-Zielendpunkt mit Transport Layer Security (TLS) ein. Optionen: `ssl-authentication`, `ssl-encryption` und `sasl-ssl`. Für die Verwendung von `sasl-ssl` sind `SaslUsername` und `SaslPassword` erforderlich.
+ `SslEndpointIdentificationAlgorithm`— Legt die Überprüfung des Hostnamens für das Zertifikat fest. Diese Einstellung wird in AWS DMS Version 3.5.1 und höher unterstützt. Es gibt die folgenden Optionen: 
  + `NONE`: Deaktiviert die Überprüfung des Hostnamens des Brokers in der Client-Verbindung.
  + `HTTPS`: Aktiviert die Überprüfung des Hostnamens des Brokers in der Client-Verbindung.
+ `useLargeIntegerValue`— Verwenden Sie bis zu 18-stellige Ganzzahlen, anstatt Ganzzahlen als Doppelzahl umzuwandeln. Dies ist ab AWS DMS Version 3.5.4 verfügbar. Der Standardwert lautet „false“.

Sie können Einstellungen verwenden, um die Übertragungsgeschwindigkeit zu erhöhen. Dazu unterstützt AWS DMS Multi-Thread-Volllastvorgänge in einen Ziel-Cluster in Apache Kafka. AWS DMS unterstützt Multi-Threading u. a. mithilfe der folgenden Aufgabeneinstellungen:
+ `MaxFullLoadSubTasks`— Verwenden Sie diese Option, um die maximale Anzahl von Quelltabellen anzugeben, die parallel geladen werden sollen. AWS DMS lädt jede Tabelle mithilfe einer speziellen Unteraufgabe in die entsprechende Kafka-Zieltabelle. Der Standardwert beträgt 8; der Maximalwert beträgt 49.
+ `ParallelLoadThreads`— Verwenden Sie diese Option, um die Anzahl der Threads anzugeben, die AWS DMS verwendet werden, um jede Tabelle in ihre Kafka-Zieltabelle zu laden. Der maximale Wert für ein Apache Kafka-Ziel ist 32. Sie können eine Erhöhung dieses Höchstwerts anfordern.
+ `ParallelLoadBufferSize` – Verwenden Sie diese Option, um die maximale Anzahl der Datensätze anzugeben, die in dem Puffer gespeichert werden sollen, den die parallelen Lade-Threads zum Laden von Daten in das Kafka-Ziel verwenden. Der Standardwert lautet 50. Die maximale Wert ist 1.000. Verwenden Sie diese Einstellung mit `ParallelLoadThreads`; `ParallelLoadBufferSize` ist nur gültig, wenn es mehr als einen Thread gibt.
+ `ParallelLoadQueuesPerThread` – Verwenden Sie diese Option, um die Anzahl der Warteschlangen anzugeben, auf die jeder gleichzeitige Thread zugreift, um Datensätze aus Warteschlangen zu entfernen und eine Stapellast für das Ziel zu generieren. Der Standardwert ist 1. Der Höchstwert ist 512.

Sie können die Leistung der Erfassung von Datenänderungen (Change Data Capture, CDC) für Kafka-Endpunkte verbessern, indem Sie die Aufgabeneinstellungen für parallele Threads und Massenoperationen optimieren. Dazu können Sie die Anzahl der gleichzeitigen Threads, der Warteschlangen pro Thread und die Anzahl der Datensätze angeben, die in einem Puffer unter Verwendung von `ParallelApply*`-Aufgabeneinstellungen gespeichert werden sollen. Beispiel: Sie möchten eine CDC-Last durchführen und 128 Threads parallel anwenden. Außerdem möchten Sie auf 64 Warteschlangen pro Thread zugreifen, wobei 50 Datensätze pro Puffer gespeichert sind. 

 AWS DMS Unterstützt die folgenden Task-Einstellungen, um die CDC-Leistung zu verbessern:
+ `ParallelApplyThreads`— Gibt die Anzahl gleichzeitiger Threads an, die während eines CDC-Ladevorgangs AWS DMS verwendet werden, um Datensätze an einen Kafka-Zielendpunkt zu übertragen. Der Standardwert ist Null (0) und der maximale Wert ist 32.
+ `ParallelApplyBufferSize` – Gibt die maximale Anzahl von Datensätzen an, die in jeder Pufferwarteschlange für gleichzeitige Threads gespeichert werden sollen, um sie während einer CDC-Last an einen Kafka-Zielendpunkt zu übertragen. Der Standardwert ist 100 und der Höchstwert 1 000. Verwenden Sie diese Option, wenn `ParallelApplyThreads` mehrere Threads angibt. 
+ `ParallelApplyQueuesPerThread` – Gibt die Anzahl der Warteschlangen an, auf die jeder Thread zugreift, um Datensätze aus Warteschlangen zu entfernen und während CDC eine Stapellast für einen Kafka-Endpunkt zu generieren. Der Standardwert ist 1. Der Höchstwert ist 512.

Wenn Sie `ParallelApply*`-Aufgabeneinstellungen verwenden, ist der `primary-key` der Tabelle der `partition-key-type`-Standardwert, nicht `schema-name.table-name`.

## Herstellen einer Verbindung zu Kafka mit Transport Layer Security (TLS)
<a name="CHAP_Target.Kafka.TLS"></a>

Ein Kafka-Cluster akzeptiert sichere Verbindungen mit Transport Layer Security (TLS). Mit DMS können Sie eine der folgenden drei Sicherheitsprotokoll-Optionen verwenden, um eine Verbindung mit einem Kafka-Endpunkt zu sichern.

**SSL-Verschlüsselung (`server-encryption`)**  
Clients validieren die Serveridentität anhand des Serverzertifikats. Anschließend wird eine verschlüsselte Verbindung zwischen Server und Client hergestellt.

**SSL-Authentifizierung (`mutual-authentication`)**  
Server und Client validieren die Identität untereinander durch ihre eigenen Zertifikate. Anschließend wird eine verschlüsselte Verbindung zwischen Server und Client hergestellt.

**SASL-SSL (`mutual-authentication`)**  
Bei der Methode Simple Authentication and Security Layer (SASL) wird das Zertifikat des Clients durch einen Benutzernamen und ein Passwort ersetzt, um die Identität eines Clients zu überprüfen. Sie geben einen Benutzernamen und ein Passwort an, die der Server registriert hat, damit der Server die Identität eines Clients überprüfen kann. Anschließend wird eine verschlüsselte Verbindung zwischen Server und Client hergestellt.

**Wichtig**  
Apache Kafka und Amazon MSK akzeptieren aufgelöste Zertifikate. Dies ist eine bekannte Einschränkung von Kafka und Amazon MSK, die behoben werden muss. Weitere Informationen finden Sie unter [Apache Kafka issues, KAFKA-3700](https://issues.apache.org/jira/browse/KAFKA-3700).  
Wenn Sie Amazon MSK verwenden, sollten Sie die Verwendung von Zugriffskontrolllisten (ACLs) als Workaround für diese bekannte Einschränkung in Betracht ziehen. Weitere Informationen zur Verwendung ACLs finden Sie im ACLs Abschnitt [Apache Kafka](https://docs.aws.amazon.com//msk/latest/developerguide/msk-acls.html) im *Amazon Managed Streaming for Apache Kafka Developer Guide*.  
Wenn Sie einen selbstverwalteten Kafka-Cluster verwenden, finden Sie Informationen zur Konfiguration des Clusters im [Kommentar vom 21. Oktober 18](https://issues.apache.org/jira/browse/KAFKA-3700?focusedCommentId=16658376).

### Verwenden von SSL-Verschlüsselung mit Amazon MSK oder einem selbstverwalteten Kafka-Cluster
<a name="CHAP_Target.Kafka.TLS.SSLencryption"></a>

Sie können SSL-Verschlüsselung verwenden, um eine Endpunktverbindung mit Amazon MSK oder einem selbstverwalteten Kafka-Cluster zu sichern. Wenn Sie die SSL-Verschlüsselung als Authentifizierungsmethode verwenden, validieren Clients die Identität eines Servers anhand des Serverzertifikats. Anschließend wird eine verschlüsselte Verbindung zwischen Server und Client hergestellt.

**So verwenden Sie SSL-Verschlüsselung für die Verbindung mit Amazon MSK**
+ Legen Sie die Sicherheitsprotokoll-Endpunkteinstellung (`SecurityProtocol`) mithilfe der Option `ssl-encryption` fest, wenn Sie Ihren Kafka-Zielendpunkt erstellen. 

  Im folgenden JSON-Beispiel wird das Sicherheitsprotokoll als SSL-Verschlüsselung festgelegt.

```
"KafkaSettings": {
    "SecurityProtocol": "ssl-encryption", 
}
```

**So verwenden Sie SSL-Verschlüsselung für einen selbstverwalteten Kafka-Cluster**

1. Wenn Sie eine private Zertifizierungsstelle (Certification Authority, CA) in Ihrem On-Premises-Kafka-Cluster verwenden, laden Sie Ihr privates CA-Zertifikat hoch, um einen Amazon-Ressourcennamen (ARN) abzurufen. 

1. Legen Sie die Sicherheitsprotokoll-Endpunkteinstellung (`SecurityProtocol`) mithilfe der Option `ssl-encryption` fest, wenn Sie Ihren Kafka-Zielendpunkt erstellen. Im folgenden JSON-Beispiel wird das Sicherheitsprotokoll als `ssl-encryption` festgelegt.

   ```
   "KafkaSettings": {
       "SecurityProtocol": "ssl-encryption", 
   }
   ```

1. Wenn Sie eine private CA verwenden, legen Sie `SslCaCertificateArn` im ARN fest, den Sie im ersten Schritt abgerufen haben.

### Verwenden von SSL-Authentifizierung
<a name="CHAP_Target.Kafka.TLS.SSLauthentication"></a>

Sie können SSL-Authentifizierung verwenden, um eine Endpunktverbindung mit Amazon MSK oder einem selbstverwalteten Kafka-Cluster zu sichern.

Gehen Sie wie folgt vor, um die Client-Authentifizierung und -Verschlüsselung mithilfe von SSL-Authentifizierung für die Verbindung mit Amazon MSK zu aktivieren:
+ Bereiten Sie einen privaten Schlüssel und ein öffentliches Zertifikat für Kafka vor.
+ Laden Sie die Zertifikate in den DMS-Zertifikatmanager hoch.
+ Erstellen Sie einen Kafka-Zielendpunkt mit dem entsprechenden Zertifikat, das in den Kafka-Endpunkteinstellungen ARNs angegeben ist.

**So bereiten Sie einen privaten Schlüssel und ein öffentliches Zertifikat für Amazon MSK vor**

1. Erstellen Sie eine EC2-Instance und richten Sie einen Client zur Verwendung der Authentifizierung ein, wie in den Schritten 1 bis 9 im Abschnitt zur [Client-Authentifizierung](https://docs.aws.amazon.com/msk/latest/developerguide/msk-authentication.html) im *Entwicklerhandbuch für Amazon Managed Streaming für Apache Kafka* beschrieben.

   Nachdem Sie diese Schritte abgeschlossen haben, verfügen Sie über einen Zertifikat-ARN (den in ACM gespeicherten öffentlichen Zertifikat-ARN) und einen privaten Schlüssel, der in einer Datei mit dem Namen `kafka.client.keystore.jks` enthalten ist.

1. Rufen Sie das öffentliche Zertifikat ab und kopieren Sie das Zertifikat mit dem folgenden Befehl in die Datei `signed-certificate-from-acm.pem`:

   ```
   aws acm-pca get-certificate --certificate-authority-arn Private_CA_ARN --certificate-arn Certificate_ARN
   ```

   Dieser Befehl gibt ähnliche Informationen wie im folgenden Beispiel zurück:

   ```
   {"Certificate": "123", "CertificateChain": "456"}
   ```

   Anschließend kopieren Sie Ihr Äquivalent von `"123"` in die Datei `signed-certificate-from-acm.pem`.

1. Rufen Sie den privaten Schlüssel ab, indem Sie den Schlüssel `msk-rsa` aus `kafka.client.keystore.jks to keystore.p12` importieren, wie im folgenden Beispiel gezeigt.

   ```
   keytool -importkeystore \
   -srckeystore kafka.client.keystore.jks \
   -destkeystore keystore.p12 \
   -deststoretype PKCS12 \
   -srcalias msk-rsa-client \
   -deststorepass test1234 \
   -destkeypass test1234
   ```

1. Verwenden Sie den folgenden Befehl, um `keystore.p12` in das Format `.pem` zu exportieren. 

   ```
   Openssl pkcs12 -in keystore.p12 -out encrypted-private-client-key.pem –nocerts
   ```

   Die Meldung **PEM-Passphrase eingeben** wird angezeigt und gibt den Schlüssel an, der zur Verschlüsselung des Zertifikats verwendet wird.

1. Entfernen Sie Taschen- und Schlüsselattribute aus der `.pem`-Datei, um sicherzustellen, dass die erste Zeile mit der folgenden Zeichenfolge beginnt.

   ```
                                   ---BEGIN ENCRYPTED PRIVATE KEY---
   ```

**So laden Sie ein öffentliches Zertifikat und einen privaten Schlüssel in den DMS-Zertifikatmanager hoch und testen die Verbindung mit Amazon MSK**

1. Führen Sie den folgenden Befehl aus, um den Upload in den DMS-Zertifikatmanager auszuführen.

   ```
   aws dms import-certificate --certificate-identifier signed-cert --certificate-pem file://path to signed cert
   aws dms import-certificate --certificate-identifier private-key —certificate-pem file://path to private key
   ```

1. Erstellen Sie einen Amazon-MSK-Zielendpunkt und testen Sie die Verbindung, um sicherzustellen, dass die TLS-Authentifizierung funktioniert.

   ```
   aws dms create-endpoint --endpoint-identifier $endpoint-identifier --engine-name kafka --endpoint-type target --kafka-settings 
   '{"Broker": "b-0.kafka260.aaaaa1.a99.kafka.us-east-1.amazonaws.com:0000", "SecurityProtocol":"ssl-authentication", 
   "SslClientCertificateArn": "arn:aws:dms:us-east-1:012346789012:cert:",
   "SslClientKeyArn": "arn:aws:dms:us-east-1:0123456789012:cert:","SslClientKeyPassword":"test1234"}'
   aws dms test-connection -replication-instance-arn=$rep_inst_arn —endpoint-arn=$kafka_tar_arn_msk
   ```

**Wichtig**  
Sie können SSL-Authentifizierung verwenden, um eine Verbindung mit einem selbstverwalteten Kafka-Cluster zu sichern. In Einzelfällen können Sie eine private Zertifizierungsstelle (CA) in Ihrem On-Premises-Kafka-Cluster verwenden. Laden Sie in diesem Fall Ihre CA-Kette, das öffentliche Zertifikat und den privaten Schlüssel in den DMS-Zertifikatmanager hoch. Verwenden Sie dann den entsprechenden Amazon-Ressourcennamen (ARN) in Ihren Endpunkteinstellungen, wenn Sie Ihren On-Premises-Kafka-Zielendpunkt erstellen.

**So bereiten Sie einen privaten Schlüssel und ein signiertes Zertifikat für einen selbstverwalteten Kafka-Cluster vor**

1. Erzeugen Sie ein Schlüsselpaar wie im folgenden Beispiel dargestellt.

   ```
   keytool -genkey -keystore kafka.server.keystore.jks -validity 300 -storepass your-keystore-password 
   -keypass your-key-passphrase -dname "CN=your-cn-name" 
   -alias alias-of-key-pair -storetype pkcs12 -keyalg RSA
   ```

1. Generieren Sie eine Anfrage zum Signieren des Zertifikats (Certificate Sign Request, CSR). 

   ```
   keytool -keystore kafka.server.keystore.jks -certreq -file server-cert-sign-request-rsa -alias on-premise-rsa -storepass your-key-store-password 
   -keypass your-key-password
   ```

1. Verwenden Sie die CA in Ihrem Cluster-Truststore zum Signieren der CSR. Wenn Sie keine CA haben, können Sie Ihre eigene private CA erstellen.

   ```
   openssl req -new -x509 -keyout ca-key -out ca-cert -days validate-days                            
   ```

1. Importieren Sie `ca-cert` in den Truststore und Keystore des Servers. Wenn Sie keinen Truststore haben, führen Sie folgenden Befehl aus, um den Truststore zu erstellen und `ca-cert ` in diesen zu importieren. 

   ```
   keytool -keystore kafka.server.truststore.jks -alias CARoot -import -file ca-cert
   keytool -keystore kafka.server.keystore.jks -alias CARoot -import -file ca-cert
   ```

1. Signieren Sie das Zertifikat.

   ```
   openssl x509 -req -CA ca-cert -CAkey ca-key -in server-cert-sign-request-rsa -out signed-server-certificate.pem 
   -days validate-days -CAcreateserial -passin pass:ca-password
   ```

1. Importieren Sie das signierte Zertifikat in den Keystore.

   ```
   keytool -keystore kafka.server.keystore.jks -import -file signed-certificate.pem -alias on-premise-rsa -storepass your-keystore-password 
   -keypass your-key-password
   ```

1. Verwenden Sie den folgenden Befehl, um den Schlüssel `on-premise-rsa` von `kafka.server.keystore.jks` in `keystore.p12` zu importieren.

   ```
   keytool -importkeystore \
   -srckeystore kafka.server.keystore.jks \
   -destkeystore keystore.p12 \
   -deststoretype PKCS12 \
   -srcalias on-premise-rsa \
   -deststorepass your-truststore-password \
   -destkeypass your-key-password
   ```

1. Verwenden Sie den folgenden Befehl, um `keystore.p12` in das Format `.pem` zu exportieren.

   ```
   Openssl pkcs12 -in keystore.p12 -out encrypted-private-server-key.pem –nocerts
   ```

1. Laden Sie `encrypted-private-server-key.pem`, `signed-certificate.pem` und `ca-cert` in den DMS-Zertifikatmanager hoch.

1. Erstellen Sie einen Endpunkt mithilfe des zurückgegebenen. ARNs

   ```
   aws dms create-endpoint --endpoint-identifier $endpoint-identifier --engine-name kafka --endpoint-type target --kafka-settings 
   '{"Broker": "b-0.kafka260.aaaaa1.a99.kafka.us-east-1.amazonaws.com:9092", "SecurityProtocol":"ssl-authentication", 
   "SslClientCertificateArn": "your-client-cert-arn","SslClientKeyArn": "your-client-key-arn","SslClientKeyPassword":"your-client-key-password", 
   "SslCaCertificateArn": "your-ca-certificate-arn"}'
                               
   aws dms test-connection -replication-instance-arn=$rep_inst_arn —endpoint-arn=$kafka_tar_arn_msk
   ```

### Verwenden von SASL-SSL-Authentifizierung für die Verbindung mit Amazon MSK
<a name="CHAP_Target.Kafka.TLS.SSL-SASL"></a>

Bei der Methode Simple Authentication and Security Layer (SASL) werden ein Benutzername und ein Passwort verwendet, um die Identität eines Clients zu überprüfen, und es wird eine verschlüsselte Verbindung zwischen Server und Client hergestellt.

Um SASL zu verwenden, erstellen Sie zunächst einen sicheren Benutzernamen und ein sicheres Passwort, wenn Sie Ihren Amazon-MSK-Cluster einrichten. Eine Beschreibung, wie Sie einen sicheren Benutzernamen und ein sicheres Passwort für einen Amazon MSK-Cluster einrichten, finden Sie unter [Einrichten der SASL/SCRAM Authentifizierung für einen Amazon MSK-Cluster im Amazon](https://docs.aws.amazon.com/msk/latest/developerguide/msk-password.html#msk-password-tutorial) *Managed Streaming for Apache Kafka* Developer Guide.

Wenn Sie dann Ihren Kafka-Zielendpunkt erstellen, legen Sie die Sicherheitsprotokoll-Endpunkteinstellung (`SecurityProtocol`) mithilfe der Option `sasl-ssl` fest. Legen Sie auch die Optionen `SaslUsername` und `SaslPassword` fest. Stellen Sie sicher, dass diese mit dem sicheren Benutzernamen und Passwort übereinstimmen, die Sie bei der erstmaligen Einrichtung Ihres Amazon-MSK-Clusters erstellt haben, wie im folgenden JSON-Beispiel gezeigt.

```
                   
"KafkaSettings": {
    "SecurityProtocol": "sasl-ssl",
    "SaslUsername":"Amazon MSK cluster secure user name",
    "SaslPassword":"Amazon MSK cluster secure password"                    
}
```

**Anmerkung**  
Unterstützt derzeit nur öffentliches, von CA AWS DMS unterstütztes SASL-SSL. DMS unterstützt SASL-SSL nicht für die Verwendung mit selbstverwaltetem Kafka, das von einer privaten CA unterstützt wird.
Unterstützt für die SASL-SSL-Authentifizierung standardmäßig den SCRAM-SHA-512-Mechanismus AWS DMS . AWS DMS Versionen 3.5.0 und höher unterstützen auch den Plain-Mechanismus. Setzen Sie den Parameter `SaslMechanism` des API-Datentyps `KafkaSettings` auf `PLAIN`, um den Plain-Mechanismus zu unterstützen. Der Datentyp `PLAIN` wird von Kafka unterstützt, aber nicht von Amazon Kafka (MSK).

## Verwenden eines Vorher-Abbilds zum Anzeigen von Originalwerten von CDC-Zeilen für Apache Kafka als Ziel
<a name="CHAP_Target.Kafka.BeforeImage"></a>

Beim Schreiben von CDC-Aktualisierungen auf ein Data-Streaming-Ziel wie Kafka können Sie die ursprünglichen Werte einer Quelldatenbankzeile anzeigen, bevor sie durch eine Aktualisierung geändert werden. Um dies zu ermöglichen, AWS DMS füllt es ein *Vorher-Bild* der Aktualisierungsereignisse auf der Grundlage von Daten aus, die von der Quelldatenbank-Engine bereitgestellt werden. 

Verschiedene Quelldatenbank-Engines liefern unterschiedliche Mengen an Informationen für ein Vorher-Abbild: 
+ Oracle stellt für Spalten nur dann Aktualisierungen bereit, wenn sie sich ändern. 
+ PostgreSQL stellt nur Daten für Spalten bereit, die Teil des Primärschlüssels sind (geändert oder nicht). Wenn eine logische Replikation verwendet wird und REPLICA IDENTITY FULL für die Quelltabelle festgelegt ist, können Sie vollständige Vorher-Nachher-Informationen zu der Zeile abrufen, die in die geschrieben wurde WALs und hier verfügbar ist.
+ MySQL stellt generell Daten für alle Spalten (geändert oder nicht) bereit.

Verwenden Sie entweder die `BeforeImageSettings`-Aufgabeneinstellung oder den `add-before-image-columns`-Parameter, um die Erstellung von Vorher-Abbildern zum Hinzufügen von Originalwerten aus der Quelldatenbank zur AWS DMS -Ausgabe zu aktivieren. Dieser Parameter wendet eine Spalten-Transformationsregel an. 

`BeforeImageSettings` fügt jeder Aktualisierungsoperation ein neues JSON-Attribut mit Werten hinzu, die aus dem Quelldatenbanksystem erfasst werden, wie nachfolgend gezeigt.

```
"BeforeImageSettings": {
    "EnableBeforeImage": boolean,
    "FieldName": string,  
    "ColumnFilter": pk-only (default) / non-lob / all (but only one)
}
```

**Anmerkung**  
Wenden Sie `BeforeImageSettings` auf Volllast plus CDC-Aufgaben (die vorhandene Daten migrieren und laufende Änderungen replizieren) oder nur auf CDC-Aufgaben (die nur Datenänderungen replizieren) an. Wenden Sie `BeforeImageSettings` nicht auf Nur-Volllast-Aufgaben an.

Für `BeforeImageSettings`-Optionen gilt Folgendes:
+ Legen Sie die `EnableBeforeImage`-Option vor dem Imaging auf `true` fest. Der Standardwert ist `false`. 
+ Verwenden Sie die `FieldName`-Option, um dem neuen JSON-Attribut einen Namen zuzuweisen. Wann `EnableBeforeImage` `true` ist, ist `FieldName` erforderlich und darf nicht leer sein.
+ Die `ColumnFilter`-Option gibt eine Spalte an, die vor dem Imaging hinzugefügt werden soll. Wenn Sie nur Spalten hinzufügen möchten, die Teil der Primärschlüssel der Tabelle sind, verwenden Sie den Standardwert `pk-only`. Wenn Sie nur Spalten hinzufügen möchten, die nicht vom LOB-Typ sind, verwenden Sie `non-lob`. Wenn Sie eine Spalte hinzufügen möchten, die einen Vorher-Abbild-Wert hat, verwenden Sie `all`. 

  ```
  "BeforeImageSettings": {
      "EnableBeforeImage": true,
      "FieldName": "before-image",
      "ColumnFilter": "pk-only"
    }
  ```

### Verwenden einer Vorher-Abbild-Transformationsregel
<a name="CHAP_Target.Kafka.BeforeImage.Transform-Rule"></a>

Alternativ zu den Aufgabeneinstellungen können Sie den `add-before-image-columns`-Parameter verwenden, der eine Spalten-Transformationsregel anwendet. Mit diesem Parameter können Sie das Vorher-Imaging während des CDC-Vorgangs auf Data-Streaming-Zielen wie Kafka aktivieren.

Wenn Sie `add-before-image-columns` in einer Transformationsregel verwenden, können Sie eine feinere Steuerung der Ergebnisse für das Vorher-Abbild anwenden. Mit Transformationsregeln können Sie einen Objekt-Locator verwenden, der Ihnen die Kontrolle über die für die Regel ausgewählten Tabellen gibt. Außerdem können Sie Transformationsregeln miteinander verketten, wodurch verschiedene Regeln auf verschiedene Tabellen angewendet werden können. Anschließend können Sie die erzeugten Spalten mithilfe anderer Regeln bearbeiten. 

**Anmerkung**  
Verwenden Sie den `add-before-image-columns`-Parameter nicht zusammen mit der `BeforeImageSettings`-Aufgabeneinstellung innerhalb derselben Aufgabe. Verwenden Sie stattdessen entweder den Parameter oder die Einstellung, aber nicht beide, für eine einzelne Aufgabe.

Ein `transformation`-Regeltyp mit dem `add-before-image-columns`-Parameter für eine Spalte muss einen `before-image-def`-Abschnitt bereitstellen. Es folgt ein Beispiel.

```
    {
      "rule-type": "transformation",
      …
      "rule-target": "column",
      "rule-action": "add-before-image-columns",
      "before-image-def":{
        "column-filter": one-of  (pk-only / non-lob / all),
        "column-prefix": string,
        "column-suffix": string,
      }
    }
```

Der Wert von `column-prefix` wird einem Spaltennamen vorangestellt, und der Standardwert von `column-prefix` ist `BI_`. Der Wert von `column-suffix` wird an den Spaltennamen angehängt, und der Standardwert ist leer. Setzen Sie nicht `column-prefix` und `column-suffix` auf leere Zeichenfolgen.

Wählen Sie einen Wert für `column-filter`. Wenn Sie nur Spalten hinzufügen möchten, die Teil der Primärschlüssel der Tabelle sind, wählen Sie `pk-only` . Wählen Sie `non-lob`, um nur Spalten hinzuzufügen, die nicht vom LOB-Typ sind. Oder lassen`all` Sie eine Spalte hinzufügen, die einen Vorher-Abbild-Wert hat.

### Beispiel für eine Vorher-Abbild-Transformationsregel
<a name="CHAP_Target.Kafka.BeforeImage.Example"></a>

Die Transformationsregel im folgenden Beispiel fügt eine neue Spalte mit dem Namen `BI_emp_no` auf dem Ziel hinzu. Eine Anweisung wie `UPDATE employees SET emp_no = 3 WHERE emp_no = 1;` füllt daher das `BI_emp_no` Feld mit 1. Wenn Sie CDC-Aktualisierungen für Amazon-S3-Ziele schreiben, ermöglicht die `BI_emp_no`-Spalte, zu erkennen, welche ursprüngliche Zeile aktualisiert wurde.

```
{
  "rules": [
    {
      "rule-type": "selection",
      "rule-id": "1",
      "rule-name": "1",
      "object-locator": {
        "schema-name": "%",
        "table-name": "%"
      },
      "rule-action": "include"
    },
    {
      "rule-type": "transformation",
      "rule-id": "2",
      "rule-name": "2",
      "rule-target": "column",
      "object-locator": {
        "schema-name": "%",
        "table-name": "employees"
      },
      "rule-action": "add-before-image-columns",
      "before-image-def": {
        "column-prefix": "BI_",
        "column-suffix": "",
        "column-filter": "pk-only"
      }
    }
  ]
}
```

Weitere Informationen zur Verwendung der `add-before-image-columns`-Regelaktion finden Sie unter [Transformationsregeln und Aktionen](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Transformations.md).

## Einschränkungen bei der Verwendung von Apache Kafka als Ziel für AWS Database Migration Service
<a name="CHAP_Target.Kafka.Limitations"></a>

Bei der Verwendung von Apache Kafka als Ziel gelten die folgenden Einschränkungen:
+ AWS DMS Kafka-Zielendpunkte unterstützen keine IAM-Zugriffskontrolle für Amazon Managed Streaming for Apache Kafka (Amazon MSK).
+ Der vollständige LOB-Modus wird nicht unterstützt.
+ Geben Sie eine Kafka-Konfigurationsdatei für Ihren Cluster mit Eigenschaften an, mit denen Sie automatisch neue Themen erstellen können AWS DMS . Schließen Sie die Einstellung `auto.create.topics.enable = true` ein. Wenn Sie Amazon MSK verwenden, können Sie beim Erstellen Ihres Kafka-Clusters die Standardkonfiguration angeben und dann die Einstellung `auto.create.topics.enable` in `true` ändern. Weitere Informationen zu den Standardkonfigurationseinstellungen finden Sie unter [Die Standardkonfiguration von Amazon MSK](https://docs.aws.amazon.com/msk/latest/developerguide/msk-default-configuration.html) im *Entwicklerhandbuch für Amazon Managed Streaming für Apache Kafka*. Wenn Sie einen vorhandenen Kafka-Cluster ändern müssen, der mit Amazon MSK erstellt wurde, führen Sie den AWS CLI Befehl aus, `aws kafka create-configuration` um Ihre Kafka-Konfiguration zu aktualisieren, wie im folgenden Beispiel gezeigt:

  ```
  14:38:41 $ aws kafka create-configuration --name "kafka-configuration" --kafka-versions "2.2.1" --server-properties file://~/kafka_configuration
  {
      "LatestRevision": {
          "Revision": 1,
          "CreationTime": "2019-09-06T14:39:37.708Z"
      },
      "CreationTime": "2019-09-06T14:39:37.708Z",
      "Name": "kafka-configuration",
      "Arn": "arn:aws:kafka:us-east-1:111122223333:configuration/kafka-configuration/7e008070-6a08-445f-9fe5-36ccf630ecfd-3"
  }
  ```

  Hier ist `//~/kafka_configuration` die Konfigurationsdatei, die Sie mit den erforderlichen Eigenschaftseinstellungen erstellt haben.

  Wenn Sie Ihre eigene Kafka-Instance verwenden, die auf Amazon EC2 installiert ist, ändern Sie die Kafka-Cluster-Konfiguration mit der `auto.create.topics.enable = true` Einstellung, dass mithilfe der in Ihrer Instance bereitgestellten Optionen automatisch neue Themen erstellt werden können AWS DMS .
+ AWS DMS veröffentlicht jedes Update eines einzelnen Datensatzes in der Quelldatenbank als einen Datensatz (Nachricht) in einem bestimmten Kafka-Thema, unabhängig von den Transaktionen.
+ AWS DMS unterstützt die folgenden vier Formen für Partitionsschlüssel:
  + `SchemaName.TableName`: Eine Kombination des Schema- und Tabellennamens.
  + `${AttributeName}`: Der Wert in einem der Felder in der JSON-Datei oder der Primärschlüssel der Tabelle in der Quelldatenbank.
  + `transaction-id`: Die CDC-Transaktions-ID. Alle Datensätze innerhalb derselben Transaktion gehen auf dieselbe Partition.
  + `constant`: Ein fester Literalwert für jeden Datensatz, unabhängig von Tabelle oder Daten. Alle Datensätze werden an denselben Partitionsschlüsselwert „constant“ gesendet, wodurch eine strikte globale Reihenfolge in allen Tabellen gewährleistet ist.

  ```
  {
      "rule-type": "object-mapping",
      "rule-id": "2",
      "rule-name": "TransactionIdPartitionKey",
      "rule-action": "map-record-to-document",
      "object-locator": {
          "schema-name": "onprem",
          "table-name": "it_system"
      },
      "mapping-parameters": {
          "partition-key-type": "transaction-id | constant | attribute-name | schema-table"
      }
  }
  ```
+ Die `IncludeTransactionDetails` Endpunkteinstellung wird nur unterstützt, wenn der Quellendpunkt Oracle, SQL Server, PostgreSQL oder MySQL ist. Bei anderen Quellendpunkttypen sind Transaktionsdetails nicht enthalten.
+ `BatchApply` wird für einen Kafka-Endpunkt nicht unterstützt. Bei Verwendung von Batch Apply (z. B. der Zielmetadaten-Aufgabeneinstellung `BatchApplyEnabled`) für ein Kafka-Ziel kann es zu einem Datenverlust kommen.
+ AWS DMS unterstützt nicht die Migration von Werten eines `BigInt` Datentyps mit mehr als 16 Ziffern. Um diese Einschränkung zu umgehen, können Sie die folgende Transformationsregel verwenden, um die `BigInt`-Spalte in eine Zeichenfolge zu konvertieren. Informationen zu Transformationsregeln finden Sie unter [Transformationsregeln und Aktionen](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Transformations.md).

  ```
  {
      "rule-type": "transformation",
      "rule-id": "id",
      "rule-name": "name",
      "rule-target": "column",
      "object-locator": {
          "schema-name": "valid object-mapping rule action",
          "table-name": "",
          "column-name": ""
      },
      "rule-action": "change-data-type",
      "data-type": {
          "type": "string",
          "length": 20
      }
  }
  ```
+ AWS DMS Kafka-Zielendpunkte unterstützen Amazon MSK Servless nicht.
+ Bei der Definition von Zuordnungsregeln wird es nicht unterstützt, sowohl eine Objektzuordnungsregel als auch eine Transformationsregel zu verwenden. Sie müssen nur eine Regel festlegen. 
+ AWS DMS unterstützt die SASL-Authentifizierung für Apache Kafka-Versionen bis 3.8. Wenn Sie Kafka 4.0 oder höher verwenden, können Sie nur ohne SASL-Authentifizierung eine Verbindung herstellen.
+ AWS DMS unterstützt keine Quelldaten mit eingebetteten `'\0'` Zeichen, wenn Kafka als Zielendpunkt verwendet wird. Daten, die eingebettete `'\0'` Zeichen enthalten, werden beim ersten `'\0'` Zeichen gekürzt.

## Verwenden der Objektzuweisung zum Migrieren von Daten zu einem Kafka-Thema
<a name="CHAP_Target.Kafka.ObjectMapping"></a>

AWS DMS verwendet Regeln für die Tabellenzuweisung, um Daten aus der Quelle dem Kafka-Zielthema zuzuordnen. Um Daten einem Zielthema zuzuweisen, verwenden Sie eine Art von Tabellenzuweisungsregel, die als Objektzuweisung bezeichnet wird. Mit der Objektzuweisung legen Sie fest, wie Datensätze in der Quelle den in einem Kafka-Thema veröffentlichten Datensätzen zugewiesen werden. 

Kafka-Themen verfügen bis auf einen Partitionsschlüssel über keine voreingestellte Struktur.

**Anmerkung**  
Sie müssen die Objektzuweisung nicht verwenden. Sie können die reguläre Tabellenzuweisung für verschiedene Transformationen verwenden. Der Partitionsschlüsseltyp folgt jedoch diesen Standardverhaltensweisen:   
Der Primärschlüssel wird als Partitionsschlüssel für Volllast verwendet.
Wenn keine Aufgabeneinstellungen für die parallele Anwendung verwendet werden, wird `schema.table` als Partitionsschlüssel für CDC verwendet.
Wenn Aufgabeneinstellungen für parallele Anwendung verwendet werden, wird der Primärschlüssel als Partitionsschlüssel für CDC verwendet.

Um eine Objektzuweisungsregel zu erstellen, legen Sie `rule-type` als `object-mapping` fest. Diese Regel gibt an, welchen Objektzuweisungstyp Sie verwenden möchten. 

Die Struktur für die Regel lautet wie folgt.

```
{
    "rules": [
        {
            "rule-type": "object-mapping",
            "rule-id": "id",
            "rule-name": "name",
            "rule-action": "valid object-mapping rule action",
            "object-locator": {
                "schema-name": "case-sensitive schema name",
                "table-name": ""
            }
        }
    ]
}
```

AWS DMS unterstützt derzeit `map-record-to-record` und `map-record-to-document` als einzig gültige Werte für den Parameter. `rule-action` Diese Einstellungen wirken sich auf Werte aus, die nicht in der `exclude-columns`-Attributliste ausgeschlossen sind. Die `map-record-to-document` Werte `map-record-to-record` und geben an, wie diese Datensätze standardmäßig AWS DMS behandelt werden. Diese Werte wirken sich in keiner Weise auf die Attributzuweisungen aus. 

Verwenden Sie `map-record-to-record` beim Migrieren aus einer relationalen Datenbank zu einem Kafka-Thema. Dieser Regeltyp verwendet den `taskResourceId.schemaName.tableName`-Wert aus der relationalen Datenbank als Partitionsschlüssel in dem Kafka-Thema und erstellt ein Attribut für jede Spalte in der Quelldatenbank. 

Beachten Sie bei Verwendung von `map-record-to-record` Folgendes:
+ Diese Einstellung wirkt sich nur auf Spalten aus, die durch die `exclude-columns`-Liste ausgeschlossen wurden.
+  AWS DMS Erstellt für jede dieser Spalten ein entsprechendes Attribut im Zielthema.
+ AWS DMS erstellt dieses entsprechende Attribut unabhängig davon, ob die Quellspalte in einer Attributzuordnung verwendet wird. 

Eine Möglichkeit, `map-record-to-record` zu verstehen, besteht darin, sich die praktische Anwendung zu veranschaulichen. In diesem Beispiel wird davon ausgegangen, dass Sie mit einer Tabellenzeile einer relationalen Datenbank beginnen, die die folgende Struktur aufweist und die folgenden Daten enthält.


| FirstName | LastName | StoreId | HomeAddress | HomePhone | WorkAddress | WorkPhone | DateofBirth | 
| --- | --- | --- | --- | --- | --- | --- | --- | 
| Randy | Marsh | 5 | 221B Baker Street | 1234567890 | 31 Spooner Street, Quahog  | 9876543210 | 02/29/1988 | 

Um diese Informationen von einem Schema mit dem Namen `Test` zu einem Kafka-Thema zu migrieren, erstellen Sie Regeln, um die Daten dem Zielthema zuzuweisen. Die folgende Regel veranschaulicht die Zuweisung. 

```
{
    "rules": [
        {
            "rule-type": "selection",
            "rule-id": "1",
            "rule-name": "1",
            "rule-action": "include",
            "object-locator": {
                "schema-name": "Test",
                "table-name": "%"
            }
        },
        {
            "rule-type": "object-mapping",
            "rule-id": "2",
            "rule-name": "DefaultMapToKafka",
            "rule-action": "map-record-to-record",
            "object-locator": {
                "schema-name": "Test",
                "table-name": "Customers"
            }
        }
    ]
}
```

Nachfolgend wird das resultierende Datensatzformat bei Verwendung unserer Beispieldaten in dem Kafka-Zielthema für ein bestimmtes Kafka-Thema und einen bestimmten Partitionsschlüssel (in diesem Fall `taskResourceId.schemaName.tableName`) illustriert. 

```
  {
     "FirstName": "Randy",
     "LastName": "Marsh",
     "StoreId":  "5",
     "HomeAddress": "221B Baker Street",
     "HomePhone": "1234567890",
     "WorkAddress": "31 Spooner Street, Quahog",
     "WorkPhone": "9876543210",
     "DateOfBirth": "02/29/1988"
  }
```

**Topics**
+ [Umstrukturieren von Daten mit Attributzuweisung](#CHAP_Target.Kafka.AttributeMapping)
+ [Replikation für mehrere Themen mithilfe der Objektzuweisung](#CHAP_Target.Kafka.MultiTopic)
+ [Nachrichtenformat für Apache Kafka](#CHAP_Target.Kafka.Messageformat)

### Umstrukturieren von Daten mit Attributzuweisung
<a name="CHAP_Target.Kafka.AttributeMapping"></a>

Sie können die Daten umstrukturieren, während Sie sie mittels einer Attributzuweisung zu einem Kafka-Thema migrieren. So möchten Sie zum Beispiel vielleicht mehrere Felder in der Quelle in einem einzigen Feld im Ziel vereinen. Die folgenden Attributzuordnung veranschaulicht, wie die Daten umstrukturiert werden.

```
{
    "rules": [
        {
            "rule-type": "selection",
            "rule-id": "1",
            "rule-name": "1",
            "rule-action": "include",
            "object-locator": {
                "schema-name": "Test",
                "table-name": "%"
            }
        },
        {
            "rule-type": "object-mapping",
            "rule-id": "2",
            "rule-name": "TransformToKafka",
            "rule-action": "map-record-to-record",
            "target-table-name": "CustomerData",
            "object-locator": {
                "schema-name": "Test",
                "table-name": "Customers"
            },
            "mapping-parameters": {
                "partition-key-type": "attribute-name",
                "partition-key-name": "CustomerName",
                "exclude-columns": [
                    "firstname",
                    "lastname",
                    "homeaddress",
                    "homephone",
                    "workaddress",
                    "workphone"
                ],
                "attribute-mappings": [
                    {
                        "target-attribute-name": "CustomerName",
                        "attribute-type": "scalar",
                        "attribute-sub-type": "string",
                        "value": "${lastname}, ${firstname}"
                    },
                    {
                        "target-attribute-name": "ContactDetails",
                        "attribute-type": "document",
                        "attribute-sub-type": "json",
                        "value": {
                            "Home": {
                                "Address": "${homeaddress}",
                                "Phone": "${homephone}"
                            },
                            "Work": {
                                "Address": "${workaddress}",
                                "Phone": "${workphone}"
                            }
                        }
                    }
                ]
            }
        }
    ]
}
```

Um einen konstanten Wert für festzulegen`partition-key`, geben Sie an`"partition-key-type: "constant"`, dass dadurch der Partitionswert auf gesetzt wird`constant`. So könnten Sie auf diese Weise beispielsweise erzwingen, dass alle Daten in einer einzigen Partition gespeichert werden. Die folgende Darstellung veranschaulicht dieses Konzept. 

```
{
    "rules": [
        {
            "rule-type": "selection",
            "rule-id": "1",
            "rule-name": "1",
            "object-locator": {
                "schema-name": "Test",
                "table-name": "%"
            },
            "rule-action": "include"
        },
        {
            "rule-type": "object-mapping",
            "rule-id": "1",
            "rule-name": "TransformToKafka",
            "rule-action": "map-record-to-document",
            "object-locator": {
                "schema-name": "Test",
                "table-name": "Customer"
            },
            "mapping-parameters": {
                "partition-key-type": "constant",
                "exclude-columns": [
                    "FirstName",
                    "LastName",
                    "HomeAddress",
                    "HomePhone",
                    "WorkAddress",
                    "WorkPhone"
                ],
                "attribute-mappings": [
                    {
                        "attribute-name": "CustomerName",
                        "value": "${FirstName},${LastName}"
                    },
                    {
                        "attribute-name": "ContactDetails",
                        "value": {
                            "Home": {
                                "Address": "${HomeAddress}",
                                "Phone": "${HomePhone}"
                            },
                            "Work": {
                                "Address": "${WorkAddress}",
                                "Phone": "${WorkPhone}"
                            }
                        }
                    },
                    {
                        "attribute-name": "DateOfBirth",
                        "value": "${DateOfBirth}"
                    }
                ]
            }
        }
    ]
}
```

**Anmerkung**  
Der `partition-key`-Wert für einen Steuerungsdatensatz, der für eine spezifische Tabelle bestimmt ist, lautet `TaskId.SchemaName.TableName`. Der `partition-key`-Wert für einen Steuerungsdatensatz, der für eine spezifische Aufgabe bestimmt ist, ist die `TaskId` des betreffenden Datensatzes. Wenn Sie einen `partition-key`-Wert in der Objektzuweisung angeben, hat dies keine Auswirkungen auf den `partition-key` für einen Steuerungsdatensatz.  
 Wann `attribute-name` in einer Tabellenzuordnungsregel auf festgelegt `partition-key-type` ist, müssen Sie angeben`partition-key-name`, was entweder auf eine Spalte aus der Quelltabelle oder auf eine in der Zuordnung definierte benutzerdefinierte Spalte verweisen muss. Zusätzlich `attribute-mappings` muss definiert werden, wie Quellspalten dem Ziel-Kafka-Thema zugeordnet werden.

### Replikation für mehrere Themen mithilfe der Objektzuweisung
<a name="CHAP_Target.Kafka.MultiTopic"></a>

Standardmäßig migrieren AWS DMS Aufgaben alle Quelldaten zu einem der folgenden Kafka-Themen:
+ Wie im Feld **Thema** des AWS DMS Zielendpunkts angegeben.
+ Wie von `kafka-default-topic` angegeben, wenn das Feld **Thema** des Zielendpunkts nicht gefüllt ist und die Kafka-Einstellung `auto.create.topics.enable` auf `true` gesetzt ist.

Bei AWS DMS Engine-Versionen 3.4.6 und höher können Sie das `kafka-target-topic` Attribut verwenden, um jede migrierte Quelltabelle einem separaten Thema zuzuordnen. Mit den folgenden Objektzuweisungsregeln werden beispielsweise die Quelltabellen `Customer` und `Address` zu den Kafka-Themen `customer_topic` bzw. `address_topic` migriert. AWS DMS Migriert gleichzeitig alle anderen Quelltabellen, einschließlich der `Bills` Tabelle im `Test` Schema, zu dem im Zielendpunkt angegebenen Thema.

```
{
    "rules": [
        {
            "rule-type": "selection",
            "rule-id": "1",
            "rule-name": "1",
            "rule-action": "include",
            "object-locator": {
                "schema-name": "Test",
                "table-name": "%"
            }
        },
        {
            "rule-type": "object-mapping",
            "rule-id": "2",
            "rule-name": "MapToKafka1",
            "rule-action": "map-record-to-record",
            "kafka-target-topic": "customer_topic",
            "object-locator": {
                "schema-name": "Test",
                "table-name": "Customer" 
            },
            "partition-key-type": "constant"
        },
        {
            "rule-type": "object-mapping",
            "rule-id": "3",
            "rule-name": "MapToKafka2",
            "rule-action": "map-record-to-record",
            "kafka-target-topic": "address_topic",
            "object-locator": {
                "schema-name": "Test",
                "table-name": "Address"
            },
            "partition-key-type": "constant"
        },
        {
            "rule-type": "object-mapping",
            "rule-id": "4",
            "rule-name": "DefaultMapToKafka",
            "rule-action": "map-record-to-record",
            "object-locator": {
                "schema-name": "Test",
                "table-name": "Bills"
            }
        }
    ]
}
```

Mithilfe der Kafka-Replikation für mehrere Themen können Sie Quelltabellen mit einer einzigen Replikationsaufgabe gruppieren und zu separaten Kafka-Themen migrieren.

### Nachrichtenformat für Apache Kafka
<a name="CHAP_Target.Kafka.Messageformat"></a>

Die JSON-Ausgabe ist einfach eine Liste von Schlüssel-Wert-Paaren. 

**RecordType**  
Der Datensatztyp kann entweder für Daten oder zur Steuerung bestimmt sein. *Datensätze für Daten*repräsentieren die tatsächlichen Zeilen in der Quelle. *Steuerungsdatensätze* sind für wichtige Ereignisse im Stream bestimmt, z. B. einen Neustart der Aufgabe.

**Operation**  
Mögliche Operationen für Datensätze sind `load`, `insert`, `update` oder `delete`.  
Mögliche Operationen für Steuerungsdatensätze sind `create-table`, `rename-table`, `drop-table`, `change-columns`, `add-column`, `drop-column`, `rename-column` oder `column-type-change`.

**SchemaName**  
Das Quellschema für den Datensatz. Dieses Feld kann für einen Steuerungsdatensatz leer sein.

**TableName**  
Die Quelltabelle für den Datensatz. Dieses Feld kann für einen Steuerungsdatensatz leer sein.

**Zeitstempel**  
Der Zeitstempel für den Zeitpunkt, an dem die JSON-Nachricht erstellt wurde. Das Feld ist mit dem ISO-8601-Format formatiert.

Das folgende Beispiel für eine JSON-Nachricht veranschaulicht eine Datentyp-Nachricht mit allen zusätzlichen Metadaten.

```
{ 
   "data":{ 
      "id":100000161,
      "fname":"val61s",
      "lname":"val61s",
      "REGION":"val61s"
   },
   "metadata":{ 
      "timestamp":"2019-10-31T22:53:59.721201Z",
      "record-type":"data",
      "operation":"insert",
      "partition-key-type":"primary-key",
      "partition-key-value":"sbtest.sbtest_x.100000161",
      "schema-name":"sbtest",
      "table-name":"sbtest_x",
      "transaction-id":9324410911751,
      "transaction-record-id":1,
      "prev-transaction-id":9324410910341,
      "prev-transaction-record-id":10,
      "commit-timestamp":"2019-10-31T22:53:55.000000Z",
      "stream-position":"mysql-bin-changelog.002171:36912271:0:36912333:9324410911751:mysql-bin-changelog.002171:36912209"
   }
}
```

Das folgende Beispiel für eine JSON-Nachricht veranschaulicht eine Steuerungstyp-Nachricht.

```
{ 
   "control":{ 
      "table-def":{ 
         "columns":{ 
            "id":{ 
               "type":"WSTRING",
               "length":512,
               "nullable":false
            },
            "fname":{ 
               "type":"WSTRING",
               "length":255,
               "nullable":true
            },
            "lname":{ 
               "type":"WSTRING",
               "length":255,
               "nullable":true
            },
            "REGION":{ 
               "type":"WSTRING",
               "length":1000,
               "nullable":true
            }
         },
         "primary-key":[ 
            "id"
         ],
         "collation-name":"latin1_swedish_ci"
      }
   },
   "metadata":{ 
      "timestamp":"2019-11-21T19:14:22.223792Z",
      "record-type":"control",
      "operation":"create-table",
      "partition-key-type":"task-id",
      "schema-name":"sbtest",
      "table-name":"sbtest_t1"
   }
}
```

# Verwendung eines Amazon OpenSearch Service-Clusters als Ziel für AWS Database Migration Service
<a name="CHAP_Target.Elasticsearch"></a>

Sie können AWS DMS es verwenden, um Daten zu Amazon OpenSearch Service (OpenSearch Service) zu migrieren. OpenSearch Service ist ein verwalteter Service, der die Bereitstellung, den Betrieb und die Skalierung eines OpenSearch Service-Clusters vereinfacht. 

In OpenSearch Service arbeiten Sie mit Indizes und Dokumenten. Ein *Index* ist eine Sammlung von Dokumenten, und ein *Dokument* ist ein JSON-Objekt, das Skalarwerte, Arrays und andere Objekte enthält. OpenSearch stellt eine JSON-basierte Abfragesprache bereit, sodass Sie Daten in einem Index abfragen und die entsprechenden Dokumente abrufen können.

Wenn AWS DMS Indizes für einen Zielendpunkt für OpenSearch Service erstellt werden, wird für jede Tabelle vom Quellendpunkt aus ein Index erstellt. Die Kosten für die Erstellung eines OpenSearch Serviceindex hängen von mehreren Faktoren ab. Dies sind die Anzahl der erstellten Indizes, die Gesamtmenge der Daten in diesen Indizes und die geringe Menge an Metadaten, die für jedes Dokument OpenSearch gespeichert werden.

Konfigurieren Sie Ihren OpenSearch Service-Cluster mit Rechen- und Speicherressourcen, die für den Umfang Ihrer Migration geeignet sind. Wir empfehlen, dass Sie abhängig von der Replikationsaufgabe, die Sie verwenden möchten, die folgenden Faktoren berücksichtigen:
+ Erwägen Sie für einen vollständigen Datenladevorgang die Gesamtmenge der Daten, die Sie migrieren möchten, sowie auch die Übertragungsgeschwindigkeit.
+ Berücksichtigen Sie bei der Replikation laufender Änderungen die Häufigkeit der Updates und Ihre end-to-end Latenzanforderungen.

Konfigurieren Sie außerdem die Indexeinstellungen in Ihrem OpenSearch Cluster und achten Sie dabei genau auf die Anzahl der Dokumente.

**Aufgabeneinstellungen für vollständige Multithread-Ladevorgänge**

 AWS DMS Unterstützt eine Multithread-Volllast zu einem OpenSearch Service-Zielcluster, um die Übertragungsgeschwindigkeit zu erhöhen. AWS DMS unterstützt dieses Multithreading mit Aufgabeneinstellungen, die Folgendes beinhalten:
+ `MaxFullLoadSubTasks` – Geben Sie diese Option an, um die maximale Anzahl von Quelltabellen festzulegen, die parallel geladen werden sollen. DMS lädt jede Tabelle mithilfe einer speziellen Unteraufgabe in den entsprechenden OpenSearch Service-Zielindex. Der Standardwert beträgt 8; der Maximalwert beträgt 49.
+ `ParallelLoadThreads`— Verwenden Sie diese Option, um die Anzahl der Threads anzugeben, die AWS DMS verwendet werden, um jede Tabelle in ihren OpenSearch Service-Zielindex zu laden. Der Höchstwert für ein OpenSearch Serviceziel ist 32. Sie können eine Erhöhung dieses Höchstwerts anfordern.
**Anmerkung**  
Wenn Sie am Standardwert für `ParallelLoadThreads` (0) keine Änderung vornehmen, überträgt AWS DMS jeweils immer nur einen Datensatz. Dieser Ansatz belastet Ihren OpenSearch Service-Cluster übermäßig. Überprüfen Sie, dass für diese Option ein Wert 1 oder mehr angegeben wurde.
+ `ParallelLoadBufferSize`— Verwenden Sie diese Option, um die maximale Anzahl von Datensätzen anzugeben, die in dem Puffer gespeichert werden sollen, den die parallel Ladethreads verwenden, um Daten in das OpenSearch Serviceziel zu laden. Der Standardwert lautet 50. Die maximale Wert ist 1.000. Verwenden Sie diese Einstellung mit `ParallelLoadThreads`; `ParallelLoadBufferSize` ist nur gültig, wenn es mehr als einen Thread gibt.

Weitere Informationen darüber, wie DMS einen OpenSearch Service-Cluster mithilfe von Multithreading lädt, finden Sie im AWS Blogbeitrag [Scale Amazon OpenSearch Service](https://aws.amazon.com/blogs/database/scale-amazon-elasticsearch-service-for-aws-database-migration-service-migrations/) for Migrations. AWS Database Migration Service 

**Aufgabeneinstellungen für Multithreaded CDC-Ladevorgänge**

Sie können die Leistung der Change Data Capture (CDC) für einen OpenSearch Service-Zielcluster verbessern, indem Sie Aufgabeneinstellungen verwenden, um das Verhalten des API-Aufrufs zu ändern. `PutRecords` Dazu können Sie die Anzahl der gleichzeitigen Threads, der Warteschlangen pro Thread und die Anzahl der Datensätze angeben, die in einem Puffer unter Verwendung von `ParallelApply*`-Aufgabeneinstellungen gespeichert werden sollen. Beispiel: Sie möchten eine CDC-Last ausführen und 32 Threads parallel anwenden. Außerdem möchten Sie auf 64 Warteschlangen pro Thread zugreifen, wobei 50 Datensätze pro Puffer gespeichert sind. 
**Anmerkung**  
Support für die Verwendung von `ParallelApply*` Aufgabeneinstellungen während der Übertragung von CDC zu Amazon OpenSearch Service-Zielendpunkten ist in den AWS DMS Versionen 3.4.0 und höher verfügbar.

 AWS DMS Unterstützt die folgenden Aufgabeneinstellungen, um die Leistung des CDC zu fördern:
+ `ParallelApplyThreads`— Gibt die Anzahl gleichzeitiger Threads an, die während eines CDC-Ladevorgangs AWS DMS verwendet werden, um Datensätze an einen OpenSearch Service-Zielendpunkt weiterzuleiten. Der Standardwert ist Null (0) und der maximale Wert ist 32.
+ `ParallelApplyBufferSize`— Gibt die maximale Anzahl von Datensätzen an, die in jeder Pufferwarteschlange gespeichert werden sollen, damit gleichzeitige Threads während eines CDC-Ladevorgangs an einen OpenSearch Service-Zielendpunkt weitergeleitet werden. Der Standardwert ist 100 und der Höchstwert 1 000. Verwenden Sie diese Option, wenn `ParallelApplyThreads` mehrere Threads angibt. 
+ `ParallelApplyQueuesPerThread`— Gibt die Anzahl der Warteschlangen an, auf die jeder Thread zugreift, um Datensätze aus den Warteschlangen zu entfernen und während des CDC einen Batchload für einen OpenSearch Service-Endpunkt zu generieren.

Wenn Sie `ParallelApply*`-Aufgabeneinstellungen verwenden, ist der `primary-key` der Tabelle der `partition-key-type`-Standardwert, nicht `schema-name.table-name`.

## Migration von einer relationalen Datenbanktabelle zu einem Serviceindex OpenSearch
<a name="CHAP_Target.Elasticsearch.RDBMS2Elasticsearch"></a>

AWS DMS unterstützt die Migration von Daten zu den skalaren Datentypen von OpenSearch Service. Wenn Sie von einer relationalen Datenbank wie Oracle oder MySQL zu OpenSearch Service migrieren, möchten Sie möglicherweise die Art und Weise, wie Sie diese Daten speichern, neu strukturieren.

AWS DMS unterstützt die folgenden skalaren OpenSearch Service-Datentypen: 
+ Boolesch 
+ Date
+ Gleitkommazahl
+ Int
+ Zeichenfolge

AWS DMS konvertiert Daten vom Typ Date in den Typ String. Sie können zum Auslegen dieser Datumsangaben eine benutzerdefinierte Zuweisung angeben.

AWS DMS unterstützt keine Migration von LOB-Datentypen.

## Voraussetzungen für die Verwendung von Amazon OpenSearch Service als Ziel für AWS Database Migration Service
<a name="CHAP_Target.Elasticsearch.Prerequisites"></a>

Bevor Sie mit der Arbeit mit einer OpenSearch Service-Datenbank als Ziel für beginnen AWS DMS, stellen Sie sicher, dass Sie eine AWS Identity and Access Management (IAM-) Rolle erstellen. Diese Rolle sollte den AWS DMS Zugriff auf die OpenSearch Dienstindizes am Zielendpunkt ermöglichen. In der folgenden IAM-Richtlinie sind die Mindestzugriffsberechtigungen dargestellt.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "1",
            "Effect": "Allow",
            "Principal": {
                "Service": "dms.amazonaws.com"
        },
        "Action": "sts:AssumeRole"
        }
    ]
}
```

------

Die Rolle, die Sie für die Migration zu OpenSearch Service verwenden, muss über die folgenden Berechtigungen verfügen.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "es:ESHttpDelete",
        "es:ESHttpGet",
        "es:ESHttpHead",
        "es:ESHttpPost",
        "es:ESHttpPut"
      ],
      "Resource": "*"
    }
  ]
}
```

------

Ersetzen Sie es im vorherigen Beispiel `region` durch die AWS Regionskennung, *`account-id`* durch Ihre AWS Konto-ID und `domain-name` durch den Namen Ihrer Amazon OpenSearch Service-Domain. Ein Beispiel ist `arn:aws:es:us-west-2:123456789012:domain/my-es-domain`.

## Endpunkteinstellungen bei Verwendung von OpenSearch Service als Ziel für AWS DMS
<a name="CHAP_Target.Elasticsearch.Configuration"></a>

Sie können Endpunkteinstellungen verwenden, um Ihre OpenSearch Service-Zieldatenbank ähnlich wie bei der Verwendung zusätzlicher Verbindungsattribute zu konfigurieren. Sie geben die Einstellungen an, wenn Sie den Zielendpunkt mithilfe der AWS DMS Konsole oder mithilfe des `create-endpoint` Befehls in der mit der [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html)`--elasticsearch-settings '{"EndpointSetting": "value", ...}'`JSON-Syntax erstellen.

Die folgende Tabelle zeigt die Endpunkteinstellungen, die Sie mit OpenSearch Service als Ziel verwenden können.


| Attributname | Zulässige Werte | Standardwert und Beschreibung | 
| --- | --- | --- | 
|  `FullLoadErrorPercentage`   |  Eine positive Ganzzahl größer als 0, aber nicht größer als 100.  |  10 – Bei einem vollständigen Ladevorgang bestimmt dieses Attribut den Schwellenwert von Fehlern, die zulässig sind, bevor die Aufgabe fehlschlägt. Nehmen wir beispielsweise an, dass 1.500 Zeilen am Quellendpunkt vorhanden sind und dieser Parameter auf 10 eingestellt ist. Dann schlägt die Aufgabe fehl AWS DMS , wenn beim Schreiben auf den Zielendpunkt mehr als 150 Fehler (10 Prozent der Zeilenanzahl) auftreten.  | 
|   `ErrorRetryDuration`   |  Eine positive Ganzzahl größer als 0.  |  300 — Wenn am Zielendpunkt ein Fehler auftritt, werden die AWS DMS Versuche so viele Sekunden lang wiederholt. Andernfalls schlägt die Aufgabe fehl.  | 
|  `UseNewMappingType`  | true oder false |  `false`, aber um mit opensearch v2.x zu funktionieren, sollte es auf eingestellt sein. `true`  | 

## Einschränkungen bei der Verwendung von Amazon OpenSearch Service als Ziel für AWS Database Migration Service
<a name="CHAP_Target.Elasticsearch.Limitations"></a>

Die folgenden Einschränkungen gelten, wenn Sie Amazon OpenSearch Service als Ziel verwenden:
+ OpenSearch Der Service verwendet dynamisches Mapping (auto Schätzung), um die Datentypen zu bestimmen, die für migrierte Daten verwendet werden sollen.
+ OpenSearch Der Service speichert jedes Dokument mit einer eindeutigen ID. Es folgt ein Beispiel für eine solche ID. 

  ```
  "_id": "D359F8B537F1888BC71FE20B3D79EAE6674BE7ACA9B645B0279C7015F6FF19FD"
  ```

  Jede Dokument-ID ist 64 Bytes lang. Dies kann daher als Speicheranforderung vorausgesetzt werden. Wenn Sie beispielsweise 100.000 Zeilen aus einer AWS DMS Quelle migrieren, benötigt der resultierende OpenSearch Serviceindex Speicherplatz für weitere 6.400.000 Byte.
+ Mit OpenSearch Service können Sie keine Aktualisierungen an den Primärschlüsselattributen vornehmen. Diese Einschränkung ist wichtig, wenn Sie die laufende Replikation mit Change Data Capture (CDC) verwenden, da sie zu unerwünschten Daten im Ziel führen kann. Im CDC-Modus werden Primärschlüssel SHA256 Werten zugeordnet, die 32 Byte lang sind. Diese werden in für Menschen lesbare 64-Byte-Zeichenfolgen konvertiert und als Servicedokument verwendet. OpenSearch IDs
+ Wenn AWS DMS Elemente gefunden werden, die nicht migriert werden können, werden Fehlermeldungen in Amazon CloudWatch Logs geschrieben. Dieses Verhalten unterscheidet sich von dem anderer AWS DMS Zielendpunkte, die Fehler in eine Ausnahmetabelle schreiben.
+ AWS DMS unterstützt keine Verbindung zu einem Amazon ES-Cluster, für den Fine-Grained Access Control mit Masterbenutzer und Passwort aktiviert ist.
+ AWS DMS unterstützt OpenSearch Service Serverless nicht.
+ OpenSearch Der Dienst unterstützt das Schreiben von Daten in bereits bestehende Indizes nicht.
+ Die Einstellung für die Replikationsaufgabe `TargetTablePrepMode:TRUNCATE_BEFORE_LOAD` wird für die Verwendung mit einem OpenSearch Zielendpunkt nicht unterstützt.
+ Bei der Migration von Daten zu Amazon Elasticsearch mithilfe AWS DMS müssen die Quelldaten über einen Primärschlüssel oder eine eindeutige Kennungsspalte verfügen. Wenn die Quelldaten keinen Primärschlüssel oder keine eindeutige Kennung haben, müssen Sie einen mithilfe der define-primary-key Transformationsregel definieren.

## Zieldatentypen für Amazon OpenSearch Service
<a name="CHAP_Target.Elasticsearch.DataTypes"></a>

Bei der AWS DMS Migration von Daten aus heterogenen Datenbanken ordnet der Service Datentypen aus der Quelldatenbank Zwischendatentypen zu, die als Datentypen bezeichnet AWS DMS werden. Der Service ordnet dann die Zwischendatentypen den Zieldatentypen zu. Die folgende Tabelle zeigt jeden AWS DMS Datentyp und den Datentyp, dem er in OpenSearch Service zugeordnet ist.


| AWS DMS Datentyp | OpenSearch Datentyp des Dienstes | 
| --- | --- | 
|  Boolesch  |  boolesch  | 
|  Datum  |  Zeichenfolge  | 
|  Zeit  |  date  | 
|  Zeitstempel  |  date  | 
|  INT4  |  Ganzzahl  | 
|  Real4  |  float  | 
|  UINT4  |  Ganzzahl  | 

Weitere Informationen zu AWS DMS Datentypen finden Sie unter[Datentypen für den AWS Database Migration Service](CHAP_Reference.DataTypes.md).

# Amazon DocumentDB als Ziel für den AWS Database Migration Service verwenden
<a name="CHAP_Target.DocumentDB"></a>

 Informationen darüber, welche Versionen von Amazon DocumentDB (mit MongoDB-Kompatibilität) AWS DMS unterstützt werden, finden Sie unter. [Ziele für AWS DMS](CHAP_Introduction.Targets.md) Sie können mithilfe von AWS DMS Daten zu Amazon DocumentDB (mit MongoDB-Kompatibilität) migrieren – von jeder der Quelldaten-Engines aus, die AWS DMS unterstützt. Die Quell-Engine kann sich in einem AWS verwalteten Service wie Amazon RDS, Aurora oder Amazon S3 befinden. Die Engine kann sich außerdem in einer selbstverwalteten Datenbank befinden, wie beispielsweise MongoDB, das auf Amazon EC2 oder On-Premises ausgeführt wird.

Sie können AWS DMS damit Quelldaten in Amazon DocumentDB DocumentDB-Datenbanken, Sammlungen oder Dokumente replizieren. 

**Anmerkung**  
Wenn der Quellendpunkt MongoDB oder Amazon DocumentDB ist, führen Sie die Migration im **Dokumentmodus** aus.

MongoDB speichert Daten in einem binären JSON-Format (BSON). AWS DMS unterstützt alle BSON-Datentypen, die von Amazon DocumentDB unterstützt werden. Eine Liste dieser Datentypen finden Sie unter [Unterstützte APIs MongoDB-Operationen und Datentypen](https://docs.aws.amazon.com/documentdb/latest/developerguide/mongo-apis.html) im *Amazon DocumentDB Developer Guide*.

Wenn der Quellendpunkt eine relationale Datenbank ist, AWS DMS ordnet er Datenbankobjekte Amazon DocumentDB wie folgt zu:
+ Eine relationale Datenbank oder ein Datenbankschema wird einer *Datenbank* in Amazon DocumentDB zugeordnet. 
+ Tabellen innerhalb einer relationalen Datenbank werden *Sammlungen* in Amazon DocumentDB zugeordnet.
+ Datensätze in einer relationalen Tabelle werden *Dokumenten* in Amazon DocumentDB zugeordnet. Jedes Dokument wird aus den Daten des Quelldatensatzes erstellt.

Wenn der Quellendpunkt Amazon S3 ist, entsprechen die resultierenden Amazon-DocumentDB-Objekte den AWS DMS -Zuordnungsregeln für Amazon S3. Betrachten Sie beispielsweise die folgende URI:

```
s3://amzn-s3-demo-bucket/hr/employee
```

In diesem Fall AWS DMS ordnet die Objekte Amazon DocumentDB wie folgt `amzn-s3-demo-bucket` zu:
+ Der oberste URI-Teil (`hr`) wird einer Datenbank in Amazon DocumentDB zugeordnet. 
+ Der nächste URI-Teil (`employee`) wird einer Sammlung in Amazon DocumentDB zugeordnet.
+ Jedes Objekt in `employee` wird einem Dokument in Amazon DocumentDB zugeordnet.

Weitere Informationen zu den Zuordnungsregeln für Amazon S3 finden Sie unter [Verwendung von Amazon S3 als Quelle für AWS DMS](CHAP_Source.S3.md).

**Amazon-DocumentDB-Endpunkteinstellungen**

In den AWS DMS Versionen 3.5.0 und höher können Sie die Leistung von Change Data Capture (CDC) für Amazon DocumentDB DocumentDB-Endpunkte verbessern, indem Sie die Aufgabeneinstellungen für parallel Threads und Massenoperationen optimieren. Dazu können Sie die Anzahl der gleichzeitigen Threads, der Warteschlangen pro Thread und die Anzahl der Datensätze angeben, die in einem Puffer unter Verwendung von `ParallelApply*`-Aufgabeneinstellungen gespeichert werden sollen. Beispiel: Sie möchten eine CDC-Last durchführen und 128 Threads parallel anwenden. Außerdem möchten Sie auf 64 Warteschlangen pro Thread zugreifen, wobei 50 Datensätze pro Puffer gespeichert sind. 

Unterstützt die folgenden Aufgabeneinstellungen, um die CDC-Leistung zu fördern: AWS DMS 
+ `ParallelApplyThreads`— Gibt die Anzahl der gleichzeitigen Threads an, die während eines CDC-Ladens AWS DMS verwendet werden, um Datensätze an einen Amazon DocumentDB DocumentDB-Zielendpunkt zu übertragen. Der Standardwert ist Null (0) und der maximale Wert ist 32.
+ `ParallelApplyBufferSize` – Gibt die maximale Anzahl von Datensätzen an, die in jeder Pufferwarteschlange für gleichzeitige Threads gespeichert werden sollen, um sie während einer CDC-Last an einen Amazon-DocumentDB-Zielendpunkt zu übertragen. Der Standardwert ist 100 und der Höchstwert 1 000. Verwenden Sie diese Option, wenn `ParallelApplyThreads` mehrere Threads angibt. 
+ `ParallelApplyQueuesPerThread` – Gibt die Anzahl der Warteschlangen an, auf die jeder Thread zugreift, um Datensätze aus Warteschlangen zu entfernen und während CDC eine Stapellast für einen Amazon-DocumentDB-Endpunkt zu generieren. Der Standardwert ist 1. Der Höchstwert ist 512.

**Anmerkung**  
 Bei Amazon DocumentDB DocumentDB-Zielen kann die parallel CDC-Anwendung zu doppelten Schlüsselfehlern führen, oder bei Workloads, die sekundäre eindeutige Indizes verwenden oder eine strikte Reihenfolge der Änderungen erfordern, kann eine blockierte CDC-Anwendung auftreten. Verwenden Sie für diese Workloads die standardmäßige Single-Thread-CDC-Anwendungskonfiguration. 

Weitere Informationen zur Arbeit mit Amazon DocumentDB als Ziel für AWS DMS finden Sie in den folgenden Abschnitten:

**Topics**
+ [Zuordnen von Daten von einer Quelle zu einem Amazon-DocumentDB-Ziel](#CHAP_Target.DocumentDB.data-mapping)
+ [Herstellen einer Verbindung mit elastischen Amazon-DocumentDB-Clustern als Ziel](#CHAP_Target.DocumentDB.data-mapping.elastic-cluster-connect)
+ [Laufende Replikation mit Amazon DocumentDB als Ziel](#CHAP_Target.DocumentDB.data-mapping.ongoing-replication)
+ [Einschränkungen bei Verwendung von Amazon DocumentDB als Ziel](#CHAP_Target.DocumentDB.limitations)
+ [Verwenden von Endpunkteinstellungen mit Amazon DocumentDB als Ziel](#CHAP_Target.DocumentDB.ECAs)
+ [Zieldatentypen für Amazon DocumentDB](#CHAP_Target.DocumentDB.datatypes)

**Anmerkung**  
Eine step-by-step exemplarische Vorgehensweise für den Migrationsprozess finden Sie unter [Migration von MongoDB zu Amazon DocumentDB im Migrationshandbuch](https://docs.aws.amazon.com/dms/latest/sbs/CHAP_MongoDB2DocumentDB.html). AWS Database Migration Service Step-by-Step 

## Zuordnen von Daten von einer Quelle zu einem Amazon-DocumentDB-Ziel
<a name="CHAP_Target.DocumentDB.data-mapping"></a>

AWS DMS liest Datensätze vom Quellendpunkt und erstellt JSON-Dokumente auf der Grundlage der gelesenen Daten. Für jedes JSON-Dokument AWS DMS muss ein `_id` Feld bestimmt werden, das als eindeutiger Bezeichner dient. Anschließend wird das JSON-Dokument in eine Amazon-DocumentDB-Sammlung geschrieben, wobei das Feld `_id` als Primärschlüssel verwendet wird.

### Quelldaten, die eine einzelne Spalte darstellen
<a name="CHAP_Target.DocumentDB.data-mapping.single-column"></a>

Wenn die Quelldaten aus einer einzelnen Spalte bestehen, müssen die Daten vom Typ Zeichenfolge sein. (Je nach Quell-Engine kann der tatsächliche Datentyp VARCHAR, NVARCHAR, TEXT, LOB, CLOB oder ähnlich lauten.) AWS DMS geht davon aus, dass es sich bei den Daten um ein gültiges JSON-Dokument handelt, und repliziert die Daten unverändert in Amazon DocumentDB.

Wenn das resultierende JSON-Dokument ein Feld mit dem Namen `_id` enthält, wird dieses Feld als eindeutige `_id` in Amazon DocumentDB verwendet.

Wenn das JSON-Dokument kein `_id`-Feld enthält, generiert Amazon DocumentDB automatisch einen `_id`-Wert.

### Quelldaten, die mehrere Spalten darstellen
<a name="CHAP_Target.DocumentDB.data-mapping.multiple-columns"></a>

Wenn die Quelldaten aus mehreren Spalten bestehen, wird aus all AWS DMS diesen Spalten ein JSON-Dokument erstellt. Gehen Sie wie folgt vor, um das `_id` Feld für das AWS DMS Dokument zu ermitteln:
+ Wenn der Name einer der Spalten `_id` lautet, dann werden die Daten in dieser Spalte als Ziel-`_id` verwendet.
+ Wenn es keine `_id` Spalte gibt, die Quelldaten jedoch einen Primärschlüssel oder einen eindeutigen Index haben, wird dieser Schlüssel oder Indexwert als `_id` Wert AWS DMS verwendet. Die Daten aus dem Primärschlüssel oder eindeutigen Index erscheinen auch als explizite Felder im JSON-Dokument.
+ Wenn keine `_id`-Spalte vorhanden ist und es keinen Primärschlüssel oder eindeutigen Index gibt, generiert Amazon DocumentDB automatisch einen `_id`-Wert.

### Zwingen eines Datentyps an den Zielendpunkt
<a name="CHAP_Target.DocumentDB.coercing-datatype"></a>

AWS DMS kann Datenstrukturen ändern, wenn es auf einen Amazon DocumentDB DocumentDB-Zielendpunkt schreibt. Sie können diese Änderungen anfordern, indem Sie Spalten und Tabellen am Quellendpunkt umbenennen oder Transformationsregeln bereitstellen, die bei der Ausführung einer Aufgabe angewendet werden.

#### Verwenden eines verschachtelten JSON-Dokuments (json\$1prefix)
<a name="CHAP_Target.DocumentDB.coercing-datatype.json"></a>

Um einen Datentyp zu erzwingen, können Sie dem Namen der Quellspalte das Präfix `json_` (d. h. `json_columnName`) entweder manuell oder mittels einer Transformation voranstellen. In diesem Fall wird die Spalte nicht als Zeichenfolgenfeld, sondern als verschachteltes JSON-Dokument innerhalb des Zieldokuments erstellt.

Angenommen, Sie möchten beispielsweise das folgende Dokument von einem MongoDB-Quellenendpunkt migrieren.

```
{
    "_id": "1", 
    "FirstName": "John", 
    "LastName": "Doe",
    "ContactDetails": "{"Home": {"Address": "Boston","Phone": "1111111"},"Work": { "Address": "Boston", "Phone": "2222222222"}}"
}
```

Wenn Sie keinen der Quelldatentypen erzwingen, wird das eingebettete `ContactDetails`-Dokument als Zeichenfolge migriert.

```
{
    "_id": "1", 
    "FirstName": "John", 
    "LastName": "Doe",
    "ContactDetails": "{\"Home\": {\"Address\": \"Boston\",\"Phone\": \"1111111\"},\"Work\": { \"Address\": \"Boston\", \"Phone\": \"2222222222\"}}"
}
```

Sie können jedoch eine Transformationsregel hinzufügen, um `ContactDetails` zu einem JSON-Objekt umzuwandeln. Angenommen, der ursprüngliche Name der Quellspalte ist `ContactDetails`. Um den Datentyp als verschachteltes JSON zu erzwingen, muss die Spalte am Quellendpunkt in „json\$1ContactDetails“ umbenannt werden, indem entweder der Quelle manuell das Präfix „\$1json\$1\$1“ hinzugefügt wird oder mithilfe von Transformationsregeln. Sie können beispielsweise die folgende Transformationsregel verwenden:

```
{
    "rules": [
    {
    "rule-type": "transformation",
    "rule-id": "1",
    "rule-name": "1",
    "rule-target": "column",
    "object-locator": {
    "schema-name": "%",
    "table-name": "%",
    "column-name": "ContactDetails"
     },
    "rule-action": "rename",
    "value": "json_ContactDetails",
    "old-value": null
    }
    ]
}
```

AWS DMS repliziert das Feld wie folgt als verschachteltes JSON. ContactDetails 

```
{
    "_id": "1",
    "FirstName": "John",
    "LastName": "Doe",
    "ContactDetails": {
        "Home": {
            "Address": "Boston",
            "Phone": "1111111111"
        },
        "Work": {
            "Address": "Boston",
            "Phone": "2222222222"
        }
    }
}
```

#### Verwenden eines JSON-Arrays (array\$1prefix)
<a name="CHAP_Target.DocumentDB.coercing-datatype.array"></a>

Um einen Datentyp zu erzwingen, können Sie einem Spaltennamen das Präfix `array_` (d. h. `array_columnName`) entweder manuell oder mittels einer Transformation voranstellen. In diesem Fall AWS DMS betrachtet die Spalte als JSON-Array und erstellt sie als solches im Zieldokument.

Angenommen, Sie möchten das folgende Dokument von einem MongoDB-Quellenendpunkt migrieren.

```
{
    "_id" : "1",
    "FirstName": "John",
    "LastName": "Doe", 
    "ContactAddresses": ["Boston", "New York"],             
    "ContactPhoneNumbers": ["1111111111", "2222222222"]
}
```

Wenn Sie keinen der Quelldatentypen erzwingen, wird das eingebettete `ContactDetails`-Dokument als Zeichenfolge migriert.

```
{
    "_id": "1",
    "FirstName": "John",
    "LastName": "Doe", 
    "ContactAddresses": "[\"Boston\", \"New York\"]",             
    "ContactPhoneNumbers": "[\"1111111111\", \"2222222222\"]" 
}
```

 Sie können jedoch Transformationsregeln hinzufügen, um `ContactAddress` und `ContactPhoneNumbers` zu JSON-Arrays umzuwandeln, wie in der folgenden Tabelle veranschaulicht.


****  

| Ursprünglicher Name der Quellspalte | Umbenannte Quellspalte | 
| --- | --- | 
| ContactAddress | array\$1ContactAddress | 
| ContactPhoneNumbers | array\$1ContactPhoneNumbers | 

AWS DMS repliziert `ContactAddress` und `ContactPhoneNumbers` wie folgt.

```
{
    "_id": "1",
    "FirstName": "John",
    "LastName": "Doe",
    "ContactAddresses": [
        "Boston",
        "New York"
    ],
    "ContactPhoneNumbers": [
        "1111111111",
        "2222222222"
    ]
}
```

### Herstellen einer Verbindung mit Amazon DocumentDB über TLS
<a name="CHAP_Target.DocumentDB.tls"></a>

Standardmäßig akzeptiert ein neu erstellter Amazon-DocumentDB-Cluster sichere Verbindungen nur mit Transport Layer Security (TLS). Wenn TLS aktiviert ist, erfordert jede Verbindung mit Amazon DocumentDB einen öffentlichen Schlüssel.

Sie können den öffentlichen Schlüssel für Amazon DocumentDB abrufen, indem Sie die Datei,`rds-combined-ca-bundle.pem`, aus einem AWS gehosteten Amazon S3 S3-Bucket herunterladen. Weitere Informationen zum Herunterladen dieser Datei finden Sie unter [Encrypting connections using TLS](https://docs.aws.amazon.com/documentdb/latest/developerguide/security.encryption.ssl.html) im *Entwicklerhandbuch für Amazon DocumentDB*.

Nachdem Sie diese PEM-Datei heruntergeladen haben, können Sie den darin enthaltenen öffentlichen Schlüssel AWS DMS wie unten beschrieben importieren.

#### AWS-Managementkonsole
<a name="CHAP_Target.DocumentDB.tls.con"></a>

**So importieren Sie die Datei mit dem öffentlichen Schlüssel (.pem)**

1. [Öffnen Sie die AWS DMS Konsole unter /dms. https://console.aws.amazon.com](https://console.aws.amazon.com/dms)

1. Wählen Sie im Navigationsbereich **Certificates** aus.

1. Wählen Sie **Import certificate (Zertifikat importieren)** aus und gehen Sie folgendermaßen vor:
   + Geben Sie für **Certificate Identifier (Zertifikat-ID)** einen eindeutigen Namen für das Zertifikat ein, z. B. `docdb-cert`.
   + Für **Import file (Datei importieren)** navigieren Sie zum Speicherort der .pem-Datei.

   Wenn Sie die gewünschten Einstellungen vorgenommen haben, wählen Sie **Add new CA certificate (Neues CA-Zertifikat hinzufügen)** aus.

#### AWS CLI
<a name="CHAP_Target.DocumentDB.tls.cli"></a>

Verwenden Sie den Befehl `aws dms import-certificate`, wie im folgenden Beispiel gezeigt.

```
aws dms import-certificate \
    --certificate-identifier docdb-cert \
    --certificate-pem file://./rds-combined-ca-bundle.pem
```

Wenn Sie einen AWS DMS Zielendpunkt erstellen, geben Sie die Zertifikats-ID an (z. B.`docdb-cert`). Legen Sie außerdem den SSL-Modus-Parameter auf `verify-full` fest.

## Herstellen einer Verbindung mit elastischen Amazon-DocumentDB-Clustern als Ziel
<a name="CHAP_Target.DocumentDB.data-mapping.elastic-cluster-connect"></a>

In den AWS DMS Versionen 3.4.7 und höher können Sie einen Amazon DocumentDB DocumentDB-Zielendpunkt als Elastic Cluster erstellen. Wenn Sie Ihren Zielendpunkt als elastischen Cluster erstellen, müssen Sie ein neues SSL-Zertifikat an Ihren Endpunkt im elastischen Amazon-DocumentDB-Cluster anfügen, da Ihr vorhandenes SSL-Zertifikat nicht funktioniert.

**So fügen Sie ein neues SSL-Zertifikat an Ihren Endpunkt im elastischen Amazon-DocumentDB-Cluster an**

1. Öffnen Sie in einem Browser die Datei [ https://www.amazontrust.com/repository/SFSRootCAG2.pem](https://www.amazontrust.com/repository/SFSRootCAG2.pem) und speichern Sie den Inhalt beispielsweise in einer `.pem` Datei mit einem eindeutigen Dateinamen. `SFSRootCAG2.pem` Dies ist die Zertifikatsdatei, die Sie in den nachfolgenden Schritten importieren müssen.

1. Erstellen Sie den Endpunkt im elastischen Cluster und legen Sie die folgenden Optionen fest:

   1. Wählen Sie unter **Endpunktkonfiguration** die Option **Neues CA-Zertifikat hinzufügen** aus.

   1. Geben Sie für **Zertifikat-ID** **SFSRootCAG2.pem** ein.

   1. Wählen Sie unter **Zertifikatdatei importieren** die Option **Datei auswählen** und navigieren Sie zur Datei `SFSRootCAG2.pem`, die Sie zuvor heruntergeladen haben.

   1. Wählen Sie die heruntergeladene Datei `SFSRootCAG2.pem` aus und öffnen Sie sie.

   1. Wählen Sie **Import certificate (Zertifikat importieren)**.

   1. **Wählen Sie in der Dropdownliste Zertifikat auswählen** **die Datei .pem aus SFSRootCAG2.**

Das neue SSL-Zertifikat aus der heruntergeladenen Datei `SFSRootCAG2.pem` ist jetzt an Ihren Endpunkt im elastischen Amazon-DocumentDB-Cluster angehängt.

## Laufende Replikation mit Amazon DocumentDB als Ziel
<a name="CHAP_Target.DocumentDB.data-mapping.ongoing-replication"></a>

Wenn die laufende Replikation (Erfassung von Datenänderungen, CDC) für Amazon DocumentDB als Ziel aktiviert ist, bieten die AWS DMS -Versionen 3.5.0 und höher eine zwanzigfache Leistungsverbesserung gegenüber früheren Versionen. In früheren Versionen, in denen bis zu 250 Datensätze pro Sekunde AWS DMS verarbeitet wurden, werden AWS DMS jetzt effizient über 5000 Datensätze pro Sekunde verarbeitet. AWS DMS stellt außerdem sicher, dass Dokumente in Amazon DocumentDB mit der Quelle synchron bleiben. Wenn ein Quelldatensatz erstellt oder aktualisiert wird, AWS DMS müssen Sie zunächst ermitteln, welcher Amazon DocumentDB DocumentDB-Datensatz von den folgenden Aktionen betroffen ist:
+ Wenn der Quelldatensatz über eine Spalte mit dem Namen `_id` verfügt, bestimmt der Wert dieser Spalte den entsprechenden `_id`-Wert in der Amazon-DocumentDB-Sammlung.
+ Wenn es keine `_id` Spalte gibt, aber die Quelldaten einen Primärschlüssel oder einen eindeutigen Index haben, wird dieser Schlüssel oder Indexwert als `_id` für die Amazon DocumentDB-Sammlung AWS DMS verwendet.
+ Wenn der Quelldatensatz keine `_id` Spalte, keinen Primärschlüssel oder keinen eindeutigen Index hat, ordnet er alle Quellspalten den entsprechenden Feldern in der Amazon DocumentDB-Sammlung zu. AWS DMS 

Wenn ein neuer Quelldatensatz erstellt wird, AWS DMS schreibt ein entsprechendes Dokument in Amazon DocumentDB. Wenn ein vorhandener Quelldatensatz aktualisiert wird, AWS DMS werden die entsprechenden Felder im Zieldokument in Amazon DocumentDB aktualisiert. Alle Felder, die zwar im Zieldokument, aber nicht im Quelldatensatz vorhanden sind, bleiben unberührt.

Wenn ein Quelldatensatz gelöscht wird, AWS DMS wird das entsprechende Dokument aus Amazon DocumentDB gelöscht.

### Strukturelle Änderungen (DDL) an der Quelle
<a name="CHAP_Target.DocumentDB.data-mapping.ongoing-replication.ddl"></a>

Bei der laufenden Replikation werden alle Änderungen an Quelldatenstrukturen (z. B. Tabellen, Spalten usw.) an ihre Entsprechungen in Amazon DocumentDB weitergegeben. In relationalen Datenbanken werden diese Änderungen durch DDL-Anweisungen (Data Definition Language) eingeleitet. In der folgenden Tabelle können Sie sehen AWS DMS , wie diese Änderungen an Amazon DocumentDB weitergegeben werden.


****  

| DDL an Quelle | Auswirkung auf das Amazon-DocumentDB-Ziel | 
| --- | --- | 
| CREATE TABLE | Erstellt eine leere Sammlung. | 
| Anweisung, die eine Tabelle umbenennt (RENAME TABLE, ALTER TABLE...RENAME und Ähnliches) | Benennt die Sammlung um. | 
| TRUNCATE TABLE | Entfernt alle Dokumente aus der Sammlung, aber nur, wenn HandleSourceTableTruncated true ist. Weitere Informationen finden Sie unter [Aufgabeneinstellungen für den Umgang mit der DDL-Änderungsverarbeitung](CHAP_Tasks.CustomizingTasks.TaskSettings.DDLHandling.md). | 
| DROP TABLE | Löscht die Sammlung, aber nur, wenn HandleSourceTableDropped true ist. Weitere Informationen finden Sie unter [Aufgabeneinstellungen für den Umgang mit der DDL-Änderungsverarbeitung](CHAP_Tasks.CustomizingTasks.TaskSettings.DDLHandling.md). | 
| Anweisung, die einer Tabelle eine Spalte hinzufügt (ALTER TABLE...ADD und Ähnliches) | Die DDL-Anweisung wird ignoriert und eine Warnung ausgegeben. Wenn der erste INSERT an der Quelle ausgeführt wird, wird das neue Feld dem Zieldokument hinzugefügt. | 
| ALTER TABLE...RENAME COLUMN | Die DDL-Anweisung wird ignoriert und eine Warnung ausgegeben. Wenn der erste INSERT an der Quelle ausgeführt wird, wird das neu benannte Feld dem Zieldokument hinzugefügt. | 
| ALTER TABLE...DROP COLUMN | Die DDL-Anweisung wird ignoriert und eine Warnung ausgegeben. | 
| Anweisung, die den Datentyp der Spalte ändert (ALTER COLUMN...MODIFY und Ähnliches) | Die DDL-Anweisung wird ignoriert und eine Warnung ausgegeben. Wenn der erste INSERT an der Quelle mit dem neuen Datentyp ausgeführt wird, wird das Zieldokument mit einem Feld dieses neuen Datentyps erstellt. | 

## Einschränkungen bei Verwendung von Amazon DocumentDB als Ziel
<a name="CHAP_Target.DocumentDB.limitations"></a>

Die folgenden Einschränkungen gelten bei der Verwendung von Amazon DocumentDB als Ziel für AWS DMS:
+ In Amazon DocumentDB dürfen Namen für Sammlungen nicht das Dollarzeichen (\$1) enthalten. Darüber hinaus dürfen Datenbanknamen keine Unicode-Zeichen enthalten.
+ AWS DMS unterstützt nicht das Zusammenführen mehrerer Quelltabellen zu einer einzigen Amazon DocumentDB-Sammlung.
+ Wenn Änderungen aus einer Quelltabelle AWS DMS verarbeitet werden, die keinen Primärschlüssel hat, werden alle LOB-Spalten in dieser Tabelle ignoriert.
+ Wenn die Option **Change table (Änderungstabelle)** aktiviert ist und AWS DMS auf eine Quellspalte mit dem Namen "*\$1id*" trifft, dann erscheint diese Spalte als "*\$1\$1id*" (zwei Unterstriche) in der Änderungstabelle.
+ Wenn Sie Oracle als Quellendpunkt wählen, muss für die Oracle-Quelle die vollständige ergänzende Protokollierung aktiviert sein. Andernfalls werden, wenn es an der Quelle Spalten gibt, die nicht geändert wurden, die Daten als Nullwerte in Amazon DocumentDB geladen.
+ Die Einstellung `TargetTablePrepMode:TRUNCATE_BEFORE_LOAD` für die Replikationsaufgabe wird nicht für die Verwendung mit einem DocumentDB-Zielendpunkt unterstützt. 
+ MongoDB-Sammlungen mit Obergrenzen werden in Amazon DocumentDB nicht unterstützt. Migriert solche Objekte jedoch AWS DMS automatisch als Sammlungen ohne Obergrenzen auf die Ziel-DocumentDB.
+ Die parallele CDC-Anwendung auf Amazon DocumentDB DocumentDB-Ziele kann zu doppelten Schlüsselfehlern führen, oder bei Workloads, die sekundäre eindeutige Indizes verwenden oder eine strikte Reihenfolge der Änderungen erfordern, können blockierte CDC-Anwendungen auftreten. Verwenden Sie für solche Workloads die standardmäßige CDC-Anwendungskonfiguration mit einem Thread.

## Verwenden von Endpunkteinstellungen mit Amazon DocumentDB als Ziel
<a name="CHAP_Target.DocumentDB.ECAs"></a>

Sie können Endpunkteinstellungen, ähnlich wie zusätzliche Verbindungsattribute, zum Konfigurieren Ihrer Amazon-DocumentDB-Zieldatenbank verwenden. Sie geben die Einstellungen an, wenn Sie den Zielendpunkt mithilfe der AWS DMS Konsole oder mithilfe des `create-endpoint` Befehls in [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html), mit der `--doc-db-settings '{"EndpointSetting": "value", ...}'` JSON-Syntax erstellen.

Die folgende Tabelle zeigt die Endpunkteinstellungen, die Sie mit Amazon DocumentDB als Ziel verwenden können.


| Attributname | Zulässige Werte | Standardwert und Beschreibung | 
| --- | --- | --- | 
|   `replicateShardCollections`   |  boolesch `true` `false`  |  Wann `true` festgelegt ist, hat diese Endpunkteinstellung die folgenden Auswirkungen und beinhaltet die folgenden Einschränkungen: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/dms/latest/userguide/CHAP_Target.DocumentDB.html)  | 

## Zieldatentypen für Amazon DocumentDB
<a name="CHAP_Target.DocumentDB.datatypes"></a>

In der folgenden Tabelle finden Sie die Amazon DocumentDB DocumentDB-Zieldatentypen, die bei der Verwendung von AWS DMS unterstützt werden, sowie die Standardzuweisung von AWS DMS-Datentypen. Weitere Informationen zu AWS DMS-Datentypen finden Sie unter. [Datentypen für den AWS Database Migration Service](CHAP_Reference.DataTypes.md)


|  AWS DMS-Datentyp  |  Amazon-DocumentDB-Datentyp  | 
| --- | --- | 
|  BOOLEAN  |  Boolesch  | 
|  BYTES  |  Binäre Daten  | 
|  DATE  | Date | 
|  TIME  | Zeichenfolge () UTF8 | 
|  DATETIME  | Date | 
|  INT1  | 32-Bit-Ganzzahl | 
|  INT2  |  32-Bit-Ganzzahl  | 
|  INT4  | 32-Bit-Ganzzahl | 
|  INT8  |  64-Bit-Ganzzahl  | 
|  NUMERIC  | Zeichenfolge (UTF8) | 
|  REAL4  |  Double  | 
|  REAL8  | Double | 
|  STRING  |  Wenn die Daten als JSON erkannt werden, werden sie als Dokument zu Amazon DocumentDB AWS DMS migriert. Andernfalls werden die Daten String () zugeordnet. UTF8  | 
|  UINT1  | 32-Bit-Ganzzahl | 
|  UINT2  | 32-Bit-Ganzzahl | 
|  UINT4  | 64-Bit-Ganzzahl | 
|  UINT8  |  Zeichenfolge () UTF8  | 
|  WSTRING  | Wenn die Daten als JSON erkannt werden, werden sie als Dokument zu Amazon DocumentDB AWS DMS migriert. Andernfalls werden die Daten String () zugeordnet. UTF8 | 
|  BLOB  | Binär | 
|  CLOB  | Wenn die Daten als JSON erkannt werden, werden sie als Dokument zu Amazon DocumentDB AWS DMS migriert. Andernfalls werden die Daten String () zugeordnet. UTF8 | 
|  NCLOB  | Wenn die Daten als JSON erkannt werden, werden sie als Dokument zu Amazon DocumentDB AWS DMS migriert. Andernfalls werden die Daten String () zugeordnet. UTF8 | 

# Verwendung von Amazon Neptune als Ziel für AWS Database Migration Service
<a name="CHAP_Target.Neptune"></a>

Amazon Neptune ist ein schneller, zuverlässiger, vollständig verwalteter Graph-Datenbankservice, mit dem es ganz einfach ist, Anwendungen zu erstellen und auszuführen, die mit stark verbundenen Datensätzen arbeiten. Den Kern von Neptune bildet eine speziell entwickelte, hochleistungsfähige Graphdatenbank-Engine. Diese Engine ist für die Speicherung von Milliarden von Beziehungen und die Abfrage des Graphen mit einer Latenzzeit von Millisekunden optimiert. Neptune unterstützt die beliebten Graph-Abfragesprachen Apache TinkerPop Gremlin und SPARQL des W3C. Weitere Informationen zu Amazon Neptune finden Sie unter [Was ist Amazon Neptune?](https://docs.aws.amazon.com/neptune/latest/userguide/intro.html) im *Amazon-Neptune-Benutzerhandbuch*. 

Ohne eine Graphdatenbank wie Neptune modellieren Sie wahrscheinlich hoch verbundene Daten in einer relationalen Datenbank. Da die Daten über potenziell dynamische Verbindungen verfügen, müssen Anwendungen, die solche Datenquellen verwenden, verbundene Datenabfragen in SQL modellieren. Dieser Ansatz erfordert, dass Sie einen zusätzlichen Layer schreiben, um Graph-Abfragen in SQL zu konvertieren. Außerdem haben relationale Datenbanken eine Schemastarrheit. Änderungen am Schema an modelländernden Verbindungen erfordern Ausfallzeiten und zusätzliche Wartung der Abfragekonvertierung, um das neue Schema zu unterstützen. Die Abfrageleistung ist auch eine weitere große Einschränkung, die beim Entwerfen Ihrer Anwendungen berücksichtigt werden muss.

Graph-Datenbanken können solche Situationen erheblich vereinfachen. Frei von einem Schema, einem Rich Graph Query Layer (Gremlin oder SPARQL) und Indizes, die für Graph-Abfragen optimiert sind, erhöhen die Flexibilität und Leistung. Die Graphdatenbank von Amazon Neptune verfügt auch über Enterprise-Features wie Verschlüsselung im Ruhezustand, eine sichere Autorisierungsebene, Standardsicherungen, Multi-AZ-Unterstützung, Unterstützung für Lesereplikate und mehr.

Mithilfe können Sie relationale Daten AWS DMS, die einen stark verbundenen Graphen modellieren, von einem DMS-Quellendpunkt für jede unterstützte SQL-Datenbank zu einem Neptune-Zielendpunkt migrieren.

Weitere Informationen finden Sie im Folgenden.

**Topics**
+ [Übersicht über die Migration zu Amazon Neptune als Ziel](#CHAP_Target.Neptune.MigrationOverview)
+ [Angeben von Endpunkteinstellungen für Amazon Neptune als Ziel](#CHAP_Target.Neptune.EndpointSettings)
+ [Erstellen einer IAM-Servicerolle für den Zugriff auf Amazon Neptune als Ziel](#CHAP_Target.Neptune.ServiceRole)
+ [Angeben von Graph-Zuordnungsregeln mit Gremlin und R2RML für Amazon Neptune als Ziel](#CHAP_Target.Neptune.GraphMapping)
+ [Datentypen für die Migration von Gremlin und R2RML zu Amazon Neptune als Ziel](#CHAP_Target.Neptune.DataTypes)
+ [Einschränkungen bei der Verwendung von Amazon Neptune als Ziel](#CHAP_Target.Neptune.Limitations)

## Übersicht über die Migration zu Amazon Neptune als Ziel
<a name="CHAP_Target.Neptune.MigrationOverview"></a>

Bevor Sie eine Migration zu einem Neptune-Ziel starten, erstellen Sie die folgenden Ressourcen in Ihrem AWS Konto:
+ Einen Neptune-Cluster für den Zielendpunkt. 
+ Eine relationale SQL-Datenbank, die von AWS DMS for the Source Endpoint unterstützt wird. 
+ Einen Amazon-S3-Bucket für den Zielendpunkt. Erstellen Sie diesen S3-Bucket in derselben AWS Region wie Ihr Neptun-Cluster. AWS DMS verwendet diesen S3-Bucket als Zwischenspeicher für die Zieldaten, die er massenweise in die Neptune-Datenbank lädt. Weitere Informationen zum Erstellen eines S3-Buckets finden Sie unter [Erstellen von Buckets](https://docs.aws.amazon.com/AmazonS3/latest/gsg/CreatingABucket.html) im *Benutzerhandbuch für Amazon Simple Storage Service*.
+ Einen Virtual Private Cloud (VPC)-Endpunkt für S3 in derselben VPC wie der Neptune-Cluster. 
+ Eine AWS Identity and Access Management (IAM-) Rolle, die eine IAM-Richtlinie beinhaltet. In dieser Richtlinie sollten die Berechtigungen `ListObject`, `GetObject`, `PutObject` und `DeleteObject` für den S3-Bucket für den Zielendpunkt angegeben werden. Diese Rolle wird sowohl von Neptune als auch von Neptune mit IAM-Zugriff AWS DMS sowohl auf den Ziel-S3-Bucket als auch auf die Neptune-Datenbank übernommen. Weitere Informationen finden Sie unter [Erstellen einer IAM-Servicerolle für den Zugriff auf Amazon Neptune als Ziel](#CHAP_Target.Neptune.ServiceRole).

Nachdem Sie über diese Ressourcen verfügen, sind die Einrichtung und das Starten einer Migration zu einem Neptune-Ziel ähnlich wie bei einer Volllastmigration unter Verwendung der Konsole oder der DMS-API. Eine Migration zu einem Neptune-Ziel erfordert jedoch einige spezifische Schritte.

**Um eine AWS DMS relationale Datenbank zu Neptune zu migrieren**

1. Erstellen Sie eine Replikations-Instance wie unter [Erstellen einer Replikations-Instance](CHAP_ReplicationInstance.Creating.md) beschrieben.

1. Erstellen und testen Sie eine relationale SQL-Datenbank, die von AWS DMS für den Quellendpunkt unterstützt wird.

1. Erstellen und testen Sie den Zielendpunkt für Ihre Neptune-Datenbank. 

   Um den Zielendpunkt mit der Neptune-Datenbank zu verbinden, geben Sie den Servernamen für den Neptune-Cluster-Endpunkt oder den Neptune-Writer-Instance-Endpunkt an. Geben Sie außerdem den S3-Bucket-Ordner an, in AWS DMS dem die Zwischendateien für das Massenladen in die Neptune-Datenbank gespeichert werden sollen. 

    AWS DMS Speichert während der Migration alle migrierten Zieldaten in diesem S3-Bucket-Ordner bis zu einer von Ihnen angegebenen maximalen Dateigröße. Wenn dieser Dateispeicher diese maximale Größe erreicht, werden die gespeicherten S3-Daten AWS DMS massenweise in die Zieldatenbank geladen. Der Ordner wird gelöscht, um die Speicherung zusätzlicher Zieldaten für das nachfolgende Laden in die Zieldatenbank zu ermöglichen. Weitere Informationen zum Festlegen dieser Einstellungen finden Sie unter [Angeben von Endpunkteinstellungen für Amazon Neptune als Ziel](#CHAP_Target.Neptune.EndpointSettings).

1. Erstellen Sie eine Volllast-Replikationsaufgabe mit den Ressourcen, die in den Schritten 1 bis 3 erstellt wurden, und gehen Sie wie folgt vor: 

   1. Verwenden Sie die Aufgaben-Tabellenzuordnung wie gewohnt, um bestimmte Quellschemas, Tabellen und Ansichten zu identifizieren, die mit entsprechenden Auswahl- und Transformationsregeln aus Ihrer relationalen Datenbank migriert werden sollen. Weitere Informationen finden Sie unter [Verwenden der Tabellenzuweisung zum Angeben von Aufgabeneinstellungen](CHAP_Tasks.CustomizingTasks.TableMapping.md). 

   1. Geben Sie Zielzuordnungen an, indem Sie eine der folgenden Optionen auswählen, um Zuordnungsregeln aus Quelltabellen und Ansichten für den Neptune-Zieldatenbank-Graphen anzugeben:
      + Gremlin JSON – Informationen zur Verwendung von Gremlin JSON zum Laden einer Neptune-Datenbank finden Sie unter [Gremlin-Format zum Laden von Daten](https://docs.aws.amazon.com/neptune/latest/userguide/bulk-load-tutorial-format-gremlin.html) im *Amazon-Neptune-Benutzerhandbuch*.
      + SPARQL RDB to Resource Description Framework Mapping Language (R2RML) – Weitere Informationen zur Verwendung von SPARQL R2RML finden Sie in der W3C-Spezifikation [R2RML: RDB to RDF Mapping Language](https://www.w3.org/TR/r2rml/).

   1. Führen Sie eine der folgenden Aktionen aus:
      + Geben Sie in der AWS DMS Konsole mithilfe der **Regeln für die Grafikzuweisung auf der **Aufgabenseite Datenbankmigration erstellen** Optionen für die Grafikzuordnung** an. 
      + Geben Sie diese Optionen mithilfe der AWS DMS API mithilfe des `TaskData` Anforderungsparameters des `CreateReplicationTask` API-Aufrufs an. 

      Weitere Informationen und Beispiele für die Verwendung von Gremlin JSON und SPARQL R2RML zum Angeben von Graph-Zuordnungsregeln finden Sie unter [Angeben von Graph-Zuordnungsregeln mit Gremlin und R2RML für Amazon Neptune als Ziel](#CHAP_Target.Neptune.GraphMapping).

1. Starten Sie die Replikation für Ihre Migrationsaufgabe.

## Angeben von Endpunkteinstellungen für Amazon Neptune als Ziel
<a name="CHAP_Target.Neptune.EndpointSettings"></a>

Um einen Zielendpunkt zu erstellen oder zu ändern, können Sie die Konsole oder die `CreateEndpoint`- oder `ModifyEndpoint`-API-Vorgänge verwenden. 

Geben Sie für ein Neptune-Ziel in der AWS DMS Konsole auf der Seite **Endpoint erstellen oder Endpoint **modifizieren** auf der Konsolenseite Endpunktspezifische** **Einstellungen** an. Geben Sie für `CreateEndpoint` und `ModifyEndpoint` Anforderungsparameter für die `NeptuneSettings`-Option an. Das folgende Beispiel zeigt, wie dies über die Befehlszeilenschnittstelle (CLI) möglich ist. 

```
dms create-endpoint --endpoint-identifier my-neptune-target-endpoint
--endpoint-type target --engine-name neptune 
--server-name my-neptune-db.cluster-cspckvklbvgf.us-east-1.neptune.amazonaws.com 
--port 8192
--neptune-settings 
     '{"ServiceAccessRoleArn":"arn:aws:iam::123456789012:role/myNeptuneRole",
       "S3BucketName":"amzn-s3-demo-bucket",
       "S3BucketFolder":"amzn-s3-demo-bucket-folder",
       "ErrorRetryDuration":57,
       "MaxFileSize":100, 
       "MaxRetryCount": 10, 
       "IAMAuthEnabled":false}‘
```

Hier gibt die CLI-Option `--server-name` den Servernamen für den Neptune-Cluster-Writer-Endpunkt an. Sie können auch den Servernamen für einen Neptune-Writer-Instance-Endpunkt angeben. 

Die `--neptune-settings`-Option fordert Parameter wie folgt an:
+ `ServiceAccessRoleArn` – (Erforderlich) Der Amazon-Ressourcenname (ARN) der Servicerolle, die Sie für den Neptune-Zielendpunkt erstellt haben. Weitere Informationen finden Sie unter [Erstellen einer IAM-Servicerolle für den Zugriff auf Amazon Neptune als Ziel](#CHAP_Target.Neptune.ServiceRole).
+ `S3BucketName` – (Erforderlich) Der Name des S3-Buckets, in dem DMS migrierte Diagrammdaten vorübergehend in CSV-Dateien speichern kann, bevor sie in einem Massenladevorgang in die Neptune-Zieldatenbank geladen werden. DMS ordnet die SQL-Quelldaten Diagrammdaten zu, bevor sie in diesen CSV-Dateien gespeichert werden.
+ `S3BucketFolder` – (Erforderlich) Ein Ordnerpfad, in dem DMS migrierte Diagrammdaten in dem S3-Bucket speichern soll, der durch `S3BucketName` angegeben wird.
+ `ErrorRetryDuration` – (Optional) Die Anzahl der Millisekunden, die DMS auf einen erneuten Massenladevorgang migrierter Diagrammdaten in die Neptune-Zieldatenbank warten soll, bevor ein Fehler ausgelöst wird. Der Standardwert ist 250.
+ `MaxFileSize` – (Optional) Die maximale Größe der migrierten Diagrammdaten in KB, die in einer CSV-Datei gespeichert werden, bevor DMS eine Massenladung der Daten in die Neptune-Zieldatenbank vornimmt. Der Standardwert ist 1.048.576 KB (1 GB) Wenn dies erfolgreich ist, löscht DMS den Bucket und ist bereit, den nächsten Stapel der migrierten Diagrammdaten zu speichern.
+ `MaxRetryCount` – (Optional) Gibt an, wie oft DMS eine Massenladung migrierter Diagrammdaten in die Neptune-Zieldatenbank erneut versucht, bevor ein Fehler ausgelöst wird. Der Standardwert ist 5.
+ `IAMAuthEnabled` – (Optional) Wenn Sie die IAM-Autorisierung für diesen Endpunkt aktivieren möchten, legen Sie für diesen Parameter `true` fest und fügen Sie das entsprechende IAM-Richtliniendokument zu Ihrer Servicerolle hinzu, die in `ServiceAccessRoleArn` angegeben ist. Der Standardwert ist `false`.

## Erstellen einer IAM-Servicerolle für den Zugriff auf Amazon Neptune als Ziel
<a name="CHAP_Target.Neptune.ServiceRole"></a>

Um auf Neptune als Ziel zuzugreifen, erstellen Sie mithilfe von IAM eine Dienstrolle. Fügen Sie dieser Rolle abhängig von Ihrer Neptune-Endpunktkonfiguration einige oder alle folgenden IAM-Richtlinien- und Vertrauensdokumente an. Wenn Sie den Neptune-Endpunkt erstellen, geben Sie den ARN dieser Servicerolle an. Dadurch kann AWS DMS Amazon Neptune Berechtigungen für den Zugriff auf Neptune und den zugehörigen Amazon S3 S3-Bucket annehmen.

Wenn Sie in Ihrer Neptune-Endpunktkonfiguration den Parameter `IAMAuthEnabled` in `NeptuneSettings` auf `true`festlegen, fügen Sie Ihrer Servicerolle eine IAM-Richtlinie wie die folgende hinzu. Wenn Sie `IAMAuthEnabled` auf `false` festlegen, können Sie diese Richtlinie ignorieren.

```
// Policy to access Neptune

    {
        "Version": "2012-10-17",		 	 	 
        "Statement": [
            {
                "Sid": "VisualEditor0",
                "Effect": "Allow",
                "Action": "neptune-db:*",
                "Resource": "arn:aws:neptune-db:us-east-1:123456789012:cluster-CLG7H7FHK54AZGHEH6MNS55JKM/*"
            }
        ]
    }
```

Die vorangehende IAM-Richtlinie ermöglicht vollen Zugriff auf den von `Resource` angegebenen Neptune-Ziel-Cluster.

Fügen Sie Ihrer Dienstrolle eine IAM-Richtlinie wie die folgende an. Diese Richtlinie ermöglicht es DMS, migrierte Diagrammdaten vorübergehend im S3-Bucket zu speichern, den Sie für den Massenladevorgang in die Neptune-Zieldatenbank erstellt haben.

```
//Policy to access S3 bucket

{
	"Version": "2012-10-17",		 	 	 
	"Statement": [{
			"Sid": "ListObjectsInBucket0",
			"Effect": "Allow",
			"Action": "s3:ListBucket",
			"Resource": [
				"arn:aws:s3:::amzn-s3-demo-bucket"
			]
		},
		{
			"Sid": "AllObjectActions",
			"Effect": "Allow",
			"Action": ["s3:GetObject",
				"s3:PutObject",
				"s3:DeleteObject"
			],

			"Resource": [
				"arn:aws:s3:::amzn-s3-demo-bucket/"
			]
		},
		{
			"Sid": "ListObjectsInBucket1",
			"Effect": "Allow",
			"Action": "s3:ListBucket",
			"Resource": [
				"arn:aws:s3:::amzn-s3-demo-bucket",
				"arn:aws:s3:::amzn-s3-demo-bucket/"
			]
		}
	]
}
```

Die vorangehende IAM-Richtlinie ermöglicht es Ihrem Konto, den Inhalt des S3-Buckets (`arn:aws:s3:::amzn-s3-demo-bucket`) abzufragen, der für Ihr Neptune-Ziel erstellt wurde. Außerdem kann Ihr Konto vollständig mit dem Inhalt aller Bucket-Dateien und Ordner arbeiten (`arn:aws:s3:::amzn-s3-demo-bucket/`).

Bearbeiten Sie die Vertrauensstellung und fügen Sie Ihrer Servicerolle die folgende IAM-Rolle hinzu, damit AWS DMS sowohl der Amazon Neptune Neptune-Datenbankdienst die Rolle übernehmen können.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "Service": "dms.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    },
    {
      "Sid": "neptune",
      "Effect": "Allow",
      "Principal": {
        "Service": "rds.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
```

------

Weitere Informationen zum Angeben dieser Servicerolle für den Neptune-Zielendpunkt finden Sie unter [Angeben von Endpunkteinstellungen für Amazon Neptune als Ziel](#CHAP_Target.Neptune.EndpointSettings).

## Angeben von Graph-Zuordnungsregeln mit Gremlin und R2RML für Amazon Neptune als Ziel
<a name="CHAP_Target.Neptune.GraphMapping"></a>

Die von Ihnen erstellten Graph-Zuordnungsregeln geben an, wie Daten, die aus einer relationalen SQL-Datenbankquelle extrahiert werden, in ein Neptune-Datenbank-Cluster-Ziel geladen werden. Das Format dieser Zuordnungsregeln unterscheidet sich je nachdem, ob die Regeln für das Laden von Eigenschaftsdiagrammdaten mithilfe von Apache TinkerPop Gremlin oder Resource Description Framework (RDF) -Daten mithilfe von R2RML gelten. Im Folgenden finden Sie Informationen zu diesen Formaten und wo Sie mehr darüber erfahren können.

Sie können diese Zuordnungsregeln angeben, wenn Sie die Migrationsaufgabe mithilfe der Konsole oder der DMS-API erstellen. 

Geben Sie mithilfe der **Graph-Zuordnungsregeln** auf der Seite **Datenbankmigration erstellen** diese Zuordnungsregeln an. In **Graph-Zuordnungsregeln** können Sie die Zuordnungsregeln direkt mit dem bereitgestellten Editor eingeben und bearbeiten. Sie können auch nach einer Datei suchen, die die Zuordnungsregeln im entsprechenden Graph-Zuordnungsformat enthält. 

Geben Sie mithilfe der API diese Optionen über den `TaskData`-Anforderungsparameter des `CreateReplicationTask`-API-Aufrufs an. Legen Sie `TaskData` auf den Pfad einer Datei fest, die die Zuordnungsregeln im entsprechenden Graph-Zuordnungsformat enthält.

### Graph-Zuordnungsregeln zum Generieren von Eigenschafts-Graph-Daten mit Gremlin
<a name="CHAP_Target.Neptune.GraphMapping.Gremlin"></a>

Verwenden Sie Gremlin zum Generieren der Eigenschafts-Graph-Daten an, geben Sie ein JSON-Objekt mit einer Zuordnungsregel für jede Graph-Entität ein, die aus Quelldaten generiert werden soll. Das Format dieses JSON-Objekts ist speziell für einen Masseladevorgang von Amazon Neptune definiert. Die folgende Vorlage zeigt, wie die einzelnen Regeln in diesem Objekt aussehen:

```
{
    "rules": [
        {
            "rule_id": "(an identifier for this rule)",
            "rule_name": "(a name for this rule)",
            "table_name": "(the name of the table or view being loaded)",
            "vertex_definitions": [
                {
                    "vertex_id_template": "{col1}",
                    "vertex_label": "(the vertex to create)",
                    "vertex_definition_id": "(an identifier for this vertex)",
                    "vertex_properties": [
                        {
                            "property_name": "(name of the property)",
                            "property_value_template": "{col2} or text",
                            "property_value_type": "(data type of the property)"
                        }
                    ]
                }
            ]
        },
        {
            "rule_id": "(an identifier for this rule)",
            "rule_name": "(a name for this rule)",
            "table_name": "(the name of the table or view being loaded)",
            "edge_definitions": [
                {
                    "from_vertex": {
                        "vertex_id_template": "{col1}",
                        "vertex_definition_id": "(an identifier for the vertex referenced above)"
                    },
                    "to_vertex": {
                        "vertex_id_template": "{col3}",
                        "vertex_definition_id": "(an identifier for the vertex referenced above)"
                    },
                    "edge_id_template": {
                        "label": "(the edge label to add)",
                        "template": "{col1}_{col3}"
                    },
                    "edge_properties":[
                        {
                            "property_name": "(the property to add)",
                            "property_value_template": "{col4} or text",
                            "property_value_type": "(data type like String, int, double)"
                        }
                    ]
                }
            ]
        }
    ]
}
```

Das Vorhandensein eines Vertex-Labels bedeutet, dass der Knoten hier erstellt wird. Seine Abwesenheit bedeutet, dass der Knoten von einer anderen Quelle erstellt wird, und diese Definition fügt nur Knoteneigenschaften hinzu. Geben Sie so viele Knoten- und Grenzdefinitionen an, wie erforderlich, um die Zuordnungen für die gesamte relationale Datenbankquelle anzugeben.

Es folgt eine Beispielregel für eine `employee`-Tabelle.

```
{
    "rules": [
        {
            "rule_id": "1",
            "rule_name": "vertex_mapping_rule_from_nodes",
            "table_name": "nodes",
            "vertex_definitions": [
                {
                    "vertex_id_template": "{emp_id}",
                    "vertex_label": "employee",
                    "vertex_definition_id": "1",
                    "vertex_properties": [
                        {
                            "property_name": "name",
                            "property_value_template": "{emp_name}",
                            "property_value_type": "String"
                        }
                    ]
                }
            ]
        },
        {
            "rule_id": "2",
            "rule_name": "edge_mapping_rule_from_emp",
            "table_name": "nodes",
            "edge_definitions": [
                {
                    "from_vertex": {
                        "vertex_id_template": "{emp_id}",
                        "vertex_definition_id": "1"
                    },
                    "to_vertex": {
                        "vertex_id_template": "{mgr_id}",
                        "vertex_definition_id": "1"
                    },
                    "edge_id_template": {
                        "label": "reportsTo",
                        "template": "{emp_id}_{mgr_id}"
                    },
                    "edge_properties":[
                        {
                            "property_name": "team",
                            "property_value_template": "{team}",
                            "property_value_type": "String"
                        }
                    ]
                }
            ]
        }
    ]
}
```

Hier ordnen die Knoten- und Grenzdefinitionen eine Meldebeziehung von einem `employee`-Knoten mit Mitarbeiter-ID (`EmpID`) und einem `employee`-Knoten mit einer Manager-ID (`managerId`) zu.

Weitere Informationen zum Erstellen von Graph-Zuordnungsregeln mit Gremlin JSON finden Sie unter [Gremlin-Format zum Laden von Daten](https://docs.aws.amazon.com/neptune/latest/userguide/bulk-load-tutorial-format-gremlin.html) im *Amazon-Neptune-Benutzerhandbuch*.

### RDF/SPARQL Graph-Mapping-Regeln für die Generierung von Daten
<a name="CHAP_Target.Neptune.GraphMapping.R2RML"></a>

Wenn Sie RDF-Daten laden, die mit SPARQL abgefragt werden sollen, schreiben Sie die Graph-Zuordnungsregeln in R2RML. R2RML ist eine Standard-W3C-Sprache für die Zuordnung relationaler Daten zu RDF. In einer R2RML-Datei gibt eine *Dreifach-Zuordnung* (z  B. `<#TriplesMap1>` folgend) eine Regel an, um jede Zeile einer logischen Tabelle in null oder mehr RDF-Triple zu übersetzen. Eine *Betreffzuordnung* (z. B. eine beliebige `rr:subjectMap` folgend) gibt eine Regel zum Generieren der Betreffe der RDF-Triple an, die von einer Tripel-Zuordnung generiert werden. Eine *-Prädikat-Objekt-Zuordnung* (z. B. eine beliebige `rr:predicateObjectMap` folgend) ist eine Funktion, die ein oder mehrere Prädikat-Objekt-Paare für jede logische Tabellenzeile einer logischen Tabelle erstellt.

Ein einfaches Beispiel für eine `nodes`-Tabelle folgt.

```
@prefix rr: <http://www.w3.org/ns/r2rml#>.
@prefix ex: <http://example.com/ns#>.

<#TriplesMap1>
    rr:logicalTable [ rr:tableName "nodes" ];
    rr:subjectMap [
        rr:template "http://data.example.com/employee/{id}";
        rr:class ex:Employee;
    ];
    rr:predicateObjectMap [
        rr:predicate ex:name;
        rr:objectMap [ rr:column "label" ];
    ]
```

Im vorherigen Beispiel definiert die Zuordnung Graph-Knoten, die aus einer Tabelle mit Mitarbeitern zugeordnet sind.

Ein weiteres einfaches Beispiel für eine `Student`-Tabelle folgt.

```
@prefix rr: <http://www.w3.org/ns/r2rml#>.
@prefix ex: <http://example.com/#>.
@prefix foaf: <http://xmlns.com/foaf/0.1/>.
@prefix xsd: <http://www.w3.org/2001/XMLSchema#>.

<#TriplesMap2>
    rr:logicalTable [ rr:tableName "Student" ];
    rr:subjectMap   [ rr:template "http://example.com/{ID}{Name}";
                      rr:class foaf:Person ];
    rr:predicateObjectMap [
        rr:predicate ex:id ;
        rr:objectMap  [ rr:column "ID";
                        rr:datatype xsd:integer ]
    ];
    rr:predicateObjectMap [
        rr:predicate foaf:name ;
        rr:objectMap  [ rr:column "Name" ]
    ].
```

Im vorherigen Beispiel definiert das Mapping Graphknoten, die friend-of-a-friend Beziehungen zwischen Personen in einer `Student` Tabelle abbilden.

Weitere Informationen zum Erstellen von Graph-Zuordnungsregeln mit SPARQL R2RML finden Sie in der W3C-Spezifikation [R2RML: RDB to RDF Mapping Language](https://www.w3.org/TR/r2rml/).

## Datentypen für die Migration von Gremlin und R2RML zu Amazon Neptune als Ziel
<a name="CHAP_Target.Neptune.DataTypes"></a>

AWS DMS führt die Datentypzuordnung von Ihrem SQL-Quellendpunkt zu Ihrem Neptune-Ziel auf eine von zwei Arten durch. Welche Art Sie verwenden, hängt vom Graph-Zuordnungsformat ab, das Sie zum Laden der Neptune-Datenbank verwenden: 
+ Apache TinkerPop Gremlin unter Verwendung einer JSON-Darstellung der Migrationsdaten.
+ SPARQL von W3C, unter Verwendung einer R2RML-Darstellung der Migrationsdaten. 

Weitere Informationen zu diesen beiden Graph-Zuordnungsformaten finden Sie unter [Angeben von Graph-Zuordnungsregeln mit Gremlin und R2RML für Amazon Neptune als Ziel](#CHAP_Target.Neptune.GraphMapping).

Nachfolgend finden Sie Beschreibungen der Datentypzuordnungen für jedes Format.

### Datentypzuordnungen von SQL-Quelle auf Gremlin-Ziel
<a name="CHAP_Target.Neptune.DataTypes.Gremlin"></a>

Die folgende Tabelle zeigt die Datentypzuordnungen von einer SQL-Quelle auf ein Gremlin-formatiertes Ziel. 

AWS DMS ordnet einen beliebigen SQL-Quelldatentyp, der nicht aufgeführt ist, einem Gremlin zu. `String`



[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/dms/latest/userguide/CHAP_Target.Neptune.html)

Weitere Informationen zu den Gremlin-Datentypen zum Laden von Neptune finden Sie unter [Gremlin-Datentypen](https://docs.aws.amazon.com//neptune/latest/userguide/bulk-load-tutorial-format-gremlin.html#bulk-load-tutorial-format-gremlin-datatypes) im *Neptune-Benutzerhandbuch*.

### SQL-Quell-zu-R2RML-Zieldatentyp-Zuordnungen (RDF)
<a name="CHAP_Target.Neptune.DataTypes.R2RML"></a>

Die folgende Tabelle zeigt die Datentypzuordnungen von einer SQL-Quelle zu einem R2RML-formatierten Ziel.

Bei allen aufgelisteten RDF-Datentypen wird zwischen Groß- und Kleinschreibung unterschieden, mit Ausnahme von RDF-Literal. AWS DMS ordnet jeden nicht aufgelisteten SQL-Quelldatentyp einem RDF-Literal zu. 

Ein *RDF-Literal* ist eine von einer Vielzahl von wörtlichen lexikalischen Formen und Datentypen. Weitere Informationen finden Sie unter [RDF-Literale](https://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#section-Graph-Literal) in der W3C-Spezifikation *Resource Description Framework (RDF): Konzepte und abstrakte Syntax*.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/dms/latest/userguide/CHAP_Target.Neptune.html)

Weitere Informationen zu den RDF-Datentypen zum Laden von Neptune und zu ihren Zuordnungen zu SQL-Quelldatentypen finden Sie unter [Datentypkonvertierungen](https://www.w3.org/TR/r2rml/#datatype-conversions) in der W3C-Spezifikation *R2RML: RDB to RDF Mapping Language*.

## Einschränkungen bei der Verwendung von Amazon Neptune als Ziel
<a name="CHAP_Target.Neptune.Limitations"></a>

Bei der Verwendung von Neptune als Ziel gelten die folgenden Einschränkungen:
+ AWS DMS unterstützt derzeit Volllastaufgaben nur für die Migration zu einem Neptune-Ziel. Die CDC-Migration (CDC = Change Data Capture) zu einem Neptune-Ziel wird nicht unterstützt.
+ Stellen Sie sicher, dass in Ihrer Neptune-Zieldatenbank alle Daten manuell gelöscht werden, bevor Sie die Migrationsaufgabe starten, wie in den folgenden Beispielen zu sehen ist.

  Um alle Daten (Eckpunkte und Edges) innerhalb des Graphen zu löschen, führen Sie den folgenden Gremlin-Befehl aus.

  ```
  gremlin> g.V().drop().iterate()
  ```

  Um Eckpunkte mit dem Label `'customer'` zu löschen, führen Sie den folgenden Gremlin-Befehl aus.

  ```
  gremlin> g.V().hasLabel('customer').drop()
  ```
**Anmerkung**  
Es kann einige Zeit dauern, bis ein großes Dataset gelöscht wird. Möglicherweise möchten Sie `drop()` mit einem Limit iterieren, z. B. `limit(1000)`.

  Um Edges mit dem Label `'rated'` zu löschen, führen Sie den folgenden Gremlin-Befehl aus.

  ```
  gremlin> g.E().hasLabel('rated').drop()
  ```
**Anmerkung**  
Es kann einige Zeit dauern, bis ein großes Dataset gelöscht wird. Möglicherweise möchten Sie `drop()` mit einem Limit iterieren, z. B. `limit(1000)`.
+ Der DMS-API-Vorgang `DescribeTableStatistics` kann aufgrund der Art der Neptune-Graph-Datenstrukturen ungenaue Ergebnisse zu einer bestimmten Tabelle zurückgeben.

   AWS DMS Scannt während der Migration jede Quelltabelle und verwendet Graph-Mapping, um die Quelldaten in ein Neptun-Diagramm zu konvertieren. Die konvertierten Daten werden zuerst im S3-Bucket-Ordner gespeichert, der für den Zielendpunkt angegeben ist. Wenn die Quelle gescannt wird und diese zwischengeschalteten S3-Daten erfolgreich generiert werden, geht `DescribeTableStatistics` davon aus, dass die Daten erfolgreich in die Neptune-Zieldatenbank geladen wurden. Aber das ist nicht immer wahr. Um zu überprüfen, ob die Daten für eine bestimmte Tabelle korrekt geladen wurden, vergleichen Sie die `count()`-Rückgabewerte an beiden Enden der Migration für diese Tabelle. 

  Im folgenden Beispiel AWS DMS hat eine `customer` Tabelle aus der Quelldatenbank geladen, der das Label `'customer'` im Neptune-Zieldatenbankdiagramm zugewiesen wurde. Sie können sicherstellen, dass dieses Label in die Zieldatenbank geschrieben wird. Vergleichen Sie dazu die Anzahl der in der Quelldatenbank verfügbaren `customer`-Zeilen mit der Anzahl der mit `'customer'` beschrifteten Zeilen, die nach Abschluss der Aufgabe in die Neptune-Zieldatenbank geladen wurden.

  Führen Sie die folgenden Schritte aus, um die Anzahl der Kundenzeilen aus der Quelldatenbank mithilfe von SQL abzurufen.

  ```
  select count(*) from customer;
  ```

  Um die Anzahl der beschrifteten `'customer'`-Zeilen zu erhalten, die mit Gremlin in den Zieldatenbank-Graph geladen wurden, führen Sie Folgendes aus.

  ```
  gremlin> g.V().hasLabel('customer').count()
  ```
+ Wenn derzeit eine einzelne Tabelle nicht geladen werden kann, schlägt die gesamte Aufgabe fehl. Im Gegensatz zu einem relationalen Datenbankziel sind Daten in Neptune stark verbunden, was es in vielen Fällen unmöglich macht, eine Aufgabe fortzusetzen. Wenn eine Aufgabe aufgrund dieser Art von Datenladefehler nicht erfolgreich fortgesetzt werden kann, erstellen Sie eine neue Aufgabe, um die Tabelle zu laden, die nicht geladen werden konnte. Bevor Sie diese neue Aufgabe ausführen, löschen Sie die teilweise geladene Tabelle manuell aus dem Neptune-Ziel.
**Anmerkung**  
Sie können eine Aufgabe fortsetzen, bei der die Migration zu einem Neptune-Ziel fehlschlägt, wenn der Fehler behoben werden kann (z. B. ein Netzwerk-Transitfehler).
+ AWS DMS unterstützt die meisten Standards für R2RML. Unterstützt jedoch bestimmte R2RML-Standards AWS DMS nicht, einschließlich inverser Ausdrücke, Joins und Views. Eine Problemumgehung für eine R2RML-Ansicht besteht darin, eine entsprechende benutzerdefinierte SQL-Ansicht in der Quelldatenbank zu erstellen. Verwenden Sie in der Migrationsaufgabe die Tabellenzuordnung, um die Ansicht als Eingabe auszuwählen. Ordnen Sie dann die Ansicht einer Tabelle zu, die dann von R2RML verwendet wird, um Diagrammdaten zu generieren.
+ Wenn Sie Quelldaten mit nicht unterstützten SQL-Datentypen migrieren, sind die sich daraus ergebenen Zieldaten möglicherweise nicht ganz genau. Weitere Informationen finden Sie unter [Datentypen für die Migration von Gremlin und R2RML zu Amazon Neptune als Ziel](#CHAP_Target.Neptune.DataTypes).
+ AWS DMS unterstützt nicht die Migration von LOB-Daten in ein Neptun-Ziel.

# Verwenden von Redis OSS als Ziel für AWS Database Migration Service
<a name="CHAP_Target.Redis"></a>

Redis OSS ist ein speicherinterner Open-Source-Datenstrukturspeicher, der als Datenbank, Cache und Nachrichtenbroker verwendet wird. Durch die Verwaltung von Daten im Speicher können Lese- oder Schreibvorgänge unter Umständen in weniger als einer Millisekunde ausgeführt werden und es sind Hunderte Millionen von Vorgängen pro Sekunde möglich. Als In-Memory-Datenspeicher unterstützt Redis OSS die anspruchsvollsten Anwendungen, die Reaktionszeiten unter einer Millisekunde erfordern.

Mit dieser AWS DMS Methode können Sie Daten aus jeder unterstützten Quelldatenbank mit minimaler Ausfallzeit in einen Redis OSS-Zieldatenspeicher migrieren. Weitere Informationen zu Redis OSS finden Sie in der [Redis](https://redis.io/documentation) OSS-Dokumentation.

Zusätzlich zu On-Premises-Redis OSS wird Folgendes unterstützt: AWS Database Migration Service 
+ [Amazon ElastiCache (Redis OSS)](https://aws.amazon.com/elasticache/redis/) als Zieldatenspeicher. ElastiCache (Redis OSS) funktioniert mit Ihren Redis OSS-Clients und verwendet das offene Redis OSS-Datenformat zum Speichern Ihrer Daten.
+ [Amazon MemoryDB](https://aws.amazon.com/memorydb/) als Zieldatenspeicher. MemoryDB ist mit Redis OSS kompatibel und ermöglicht es Ihnen, Anwendungen mit allen heute verwendeten Redis OSS-Datenstrukturen und Befehlen zu erstellen. APIs

Weitere Informationen zur Arbeit mit Redis OSS als Ziel für finden Sie in den folgenden Abschnitten AWS DMS: 

**Topics**
+ [Voraussetzungen für die Verwendung eines Redis OSS-Clusters als Ziel für AWS DMS](#CHAP_Target.Redis.Prerequisites)
+ [Einschränkungen bei der Verwendung von Redis als Ziel für AWS Database Migration Service](#CHAP_Target.Redis.Limitations)
+ [Migrieren von Daten aus einer relationalen oder nicht-relationalen Datenbank zu einem Redis OSS-Ziel](#CHAP_Target.Redis.Migrating)
+ [Angeben der Endpunkteinstellungen für Redis OSS als Ziel](#CHAP_Target.Redis.EndpointSettings)

## Voraussetzungen für die Verwendung eines Redis OSS-Clusters als Ziel für AWS DMS
<a name="CHAP_Target.Redis.Prerequisites"></a>

*DMS unterstützt ein lokales Redis OSS-Ziel in einer eigenständigen Konfiguration oder als Redis OSS-Cluster, bei dem Daten automatisch auf mehrere Knoten verteilt werden.* Sharding ist ein Prozess, bei dem Daten in kleinere Blöcke, sogenannte Shards, aufgeteilt werden, die auf mehrere Server oder Knoten verteilt werden. Ein Shard ist eine Datenpartition, die eine Teilmenge des gesamten Datensatzes enthält und einen Teil der gesamten Workload abdeckt.

**Da es sich bei Redis OSS um einen NoSQL-Datenspeicher mit Schlüsselwerten handelt, lautet die Redis OSS-Schlüsselbenennungskonvention, die Sie verwenden sollten, wenn Ihre Quelle eine relationale Datenbank ist, schema-name.table-name.primary-key.** In Redis OSS dürfen der Schlüssel und der Wert das Sonderzeichen% nicht enthalten. Andernfalls überspringt DMS den Datensatz. 

**Anmerkung**  
Wenn Sie ElastiCache (Redis OSS) als Ziel verwenden, unterstützt DMS nur Konfigurationen, die den *Clustermodus aktivieren.* Weitere Informationen zur Verwendung von ElastiCache (Redis OSS) Version 6.x oder höher zur Erstellung eines Zieldatenspeichers mit aktiviertem Clustermodus finden Sie unter [Erste Schritte](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/GettingStarted.html) im *Amazon ElastiCache (Redis OSS)* -Benutzerhandbuch. 

Bevor Sie mit einer Datenbankmigration beginnen, starten Sie Ihren Redis OSS-Cluster mit den folgenden Kriterien.
+ Ihr Cluster enthält einen oder mehrere Shards.
+ Wenn Sie ein ElastiCache (Redis OSS-) Ziel verwenden, stellen Sie sicher, dass Ihr Cluster keine rollenbasierte IAM-Zugriffskontrolle verwendet. Verwenden Sie stattdessen Redis OSS Auth, um Benutzer zu authentifizieren.
+ Aktivieren Sie Multi-AZ (Availability Zones).
+ Stellen Sie sicher, dass auf dem Cluster genug Speicher für die zu migrierenden Daten aus der Datenbank verfügbar ist. 
+ Stellen Sie sicher, dass Ihr Redis-OSS-Zielcluster keine Daten enthält, bevor Sie mit der ersten Migrationsaufgabe beginnen.

Sie sollten Ihre Sicherheitsanforderungen für die Datenmigration ermitteln, bevor Sie Ihre Cluster-Konfiguration erstellen. DMS unterstützt die Migration zu Zielreplikationsgruppen unabhängig von ihrer Verschlüsselungskonfiguration. Sie können die Verschlüsselung jedoch nur aktivieren oder deaktivieren, wenn Sie Ihre Cluster-Konfiguration erstellen.

## Einschränkungen bei der Verwendung von Redis als Ziel für AWS Database Migration Service
<a name="CHAP_Target.Redis.Limitations"></a>

Bei der Verwendung von Redis OSS als Ziel gelten die folgenden Einschränkungen:
+ Da es sich bei Redis OSS um einen No-SQL-Datenspeicher mit Schlüsselwerten handelt, gilt die Redis OSS-Konvention zur Benennung von Schlüsseln, die Sie verwenden sollten, wenn Ihre Quelle eine relationale Datenbank ist. `schema-name.table-name.primary-key` 
+ In Redis OSS darf der Schlüsselwert das Sonderzeichen nicht enthalten. `%` Andernfalls überspringt DMS den Datensatz.
+ DMS migriert keine Zeilen, die das Zeichen enthalten. `%`
+ DMS migriert keine Felder, die das `%` Zeichen im Feldnamen enthalten.
+ Der vollständige LOB-Modus wird nicht unterstützt.
+  Eine private Zertifizierungsstelle (CA) wird nicht unterstützt, wenn ElastiCache (Redis OSS) als Ziel verwendet wird.
+ AWS DMS unterstützt keine Quelldaten mit eingebetteten `'\0'` Zeichen, wenn Redis als Zielendpunkt verwendet wird. Daten, die eingebettete `'\0'` Zeichen enthalten, werden beim ersten `'\0'` Zeichen gekürzt.

## Migrieren von Daten aus einer relationalen oder nicht-relationalen Datenbank zu einem Redis OSS-Ziel
<a name="CHAP_Target.Redis.Migrating"></a>

Sie können Daten aus jedem SQL- oder NoSQL-Quelldatenspeicher direkt zu einem Redis OSS-Ziel migrieren. Das Einrichten und Starten einer Migration zu einem Redis OSS-Ziel ähnelt jeder Migration von Volllast und Change Data Capture mithilfe der DMS-Konsole oder API. Um eine Datenbankmigration zu einem Redis OSS-Ziel durchzuführen, gehen Sie wie folgt vor.
+ Erstellen Sie eine Replikations-Instance, die alle Migrationsprozesse durchführt. Weitere Informationen finden Sie unter [Erstellen einer Replikations-Instance](CHAP_ReplicationInstance.Creating.md).
+ Geben Sie einen Quellendpunkt an. Weitere Informationen finden Sie unter [Erstellen der Quell- und Zielendpunkte](CHAP_Endpoints.Creating.md).
+ Suchen Sie nach dem DNS-Namen und der Portnummer Ihres Clusters.
+ Laden Sie ein Zertifikatpaket herunter, das Sie zur Überprüfung von SSL-Verbindungen verwenden können.
+ Geben Sie einen Zielendpunkt an, wie unten beschrieben.
+ Erstellen Sie eine oder mehrere Aufgaben, um festzulegen, welche Tabellen und Replikationsprozesse verwendet werden sollen. Weitere Informationen finden Sie unter [Erstellen einer Aufgabe](CHAP_Tasks.Creating.md).
+ Migrieren Sie Daten aus Ihrer Quelldatenbank zu Ihrem Ziel-Cluster.

Sie haben zwei Möglichkeiten, mit einer Datenbankmigration zu beginnen:

1. Sie können die AWS DMS Konsole auswählen und jeden Schritt dort ausführen.

1. Sie können das AWS Command Line Interface (AWS CLI) verwenden. Weitere Informationen zur Verwendung der CLI mit AWS DMS finden Sie unter [AWS CLI for AWS DMS](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html).

**So finden Sie den DNS-Namen und die Portnummer Ihres Clusters**
+ Verwenden Sie den folgenden AWS CLI Befehl, um `replication-group-id` den Namen Ihrer Replikationsgruppe anzugeben.

  ```
  aws elasticache describe-replication-groups --replication-group-id myreplgroup
  ```

  Hier zeigt die Ausgabe den DNS-Namen im Attribut `Address` und die Portnummer im Attribut `Port` des Primärknotens im Cluster. 

  ```
   ...
  "ReadEndpoint": {
  "Port": 6379,
  "Address": "myreplgroup-
  111.1abc1d.1111.uuu1.cache.example.com"
  }
  ...
  ```

  Wenn Sie MemoryDB als Ziel verwenden, verwenden Sie den folgenden AWS CLI Befehl, um eine Endpunktadresse für Ihren Redis OSS-Cluster bereitzustellen. 

  ```
  aws memorydb describe-clusters --clusterid clusterid
  ```

**Laden Sie ein Zertifikatpaket herunter, mit dem SSL-Verbindungen überprüft werden können.**
+ Geben Sie in der Befehlszeile den folgenden `wget`-Befehl ein: Wget ist ein kostenloses GNU-Befehlszeilen-Dienstprogramm, das zum Herunterladen von Dateien aus dem Internet verwendet wird.

  ```
  wget https://s3.aws-api-domain/rds-downloads/rds-combined-ca-bundle.pem
  ```

  Hier `aws-api-domain` wird die Amazon S3 S3-Domain in Ihrer AWS Region vervollständigt, die für den Zugriff auf den angegebenen S3-Bucket und die bereitgestellte rds-combined-ca-bundle .pem-Datei erforderlich ist.

**Um mit der Konsole einen Zielendpunkt zu erstellen AWS DMS**

Dieser Endpunkt ist für Ihr Redis OSS-Ziel bestimmt, das bereits läuft. 
+ Wählen Sie im Navigationsbereich **Endpunkte** und anschließend **Endpunkt erstellen** aus. In der folgenden Tabelle sind die Einstellungen beschrieben.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/dms/latest/userguide/CHAP_Target.Redis.html)

Wenn Sie alle Informationen für Ihren Endpunkt bereitgestellt haben, AWS DMS erstellt es Ihren Redis OSS-Zielendpunkt zur Verwendung bei der Datenbankmigration.

Informationen zum Erstellen einer Migrationsaufgabe und zum Starten Ihrer Datenbankmigration finden Sie unter [Erstellen einer Aufgabe](CHAP_Tasks.Creating.md).

## Angeben der Endpunkteinstellungen für Redis OSS als Ziel
<a name="CHAP_Target.Redis.EndpointSettings"></a>

Um einen Zielendpunkt zu erstellen oder zu ändern, können Sie die Konsole oder die `CreateEndpoint`- oder `ModifyEndpoint`-API-Vorgänge verwenden. 

Geben Sie für ein Redis OSS-Ziel in der AWS DMS Konsole auf der Seite ****Endpoint erstellen oder Endpoint** **modifizieren** die endpunktspezifischen Einstellungen** an.

Wenn Sie die API-Operationen `CreateEndpoint` und `ModifyEndpoint` verwenden, geben Sie Anforderungsparameter für die Option `RedisSettings` an. Das folgende Beispiel zeigt, wie dies über die AWS CLI geschehen kann.

```
aws dms create-endpoint --endpoint-identifier my-redis-target
--endpoint-type target --engine-name redis --redis-settings 
'{"ServerName":"sample-test-sample.zz012zz.cluster.eee1.cache.bbbxxx.com","Port":6379,"AuthType":"auth-token", 
 "SslSecurityProtocol":"ssl-encryption", "AuthPassword":"notanactualpassword"}'

{
    "Endpoint": {
        "EndpointIdentifier": "my-redis-target",
        "EndpointType": "TARGET",
        "EngineName": "redis",
        "EngineDisplayName": "Redis",
        "TransferFiles": false,
        "ReceiveTransferredFiles": false,
        "Status": "active",
        "KmsKeyId": "arn:aws:kms:us-east-1:999999999999:key/x-b188188x",
        "EndpointArn": "arn:aws:dms:us-east-1:555555555555:endpoint:ABCDEFGHIJKLMONOPQRSTUVWXYZ",
        "SslMode": "none",
        "RedisSettings": {
            "ServerName": "sample-test-sample.zz012zz.cluster.eee1.cache.bbbxxx.com",
            "Port": 6379,
            "SslSecurityProtocol": "ssl-encryption",
            "AuthType": "auth-token"
        }
    }
}
```

Die Parameter für `--redis-settings` lauten wie folgt:
+ `ServerName`— (Erforderlich) Typ`string`, gibt den Redis OSS-Cluster an, in den Daten migriert werden, und der sich in derselben VPC befindet.
+ `Port` – (Erforderlich), Typ `number`, der Portwert, der für den Zugriff auf den Endpunkt verwendet wird.
+ `SslSecurityProtocol` – (Optional), gültige Werte sind `plaintext` und `ssl-encryption`. Der Standardwert ist `ssl-encryption`. 

  Die `plaintext`-Option bietet keine Transport Layer Security (TLS)-Verschlüsselung für den Datenverkehr zwischen Endpunkt und Datenbank. 

  Verwenden Sie `ssl-encryption`, um eine verschlüsselte Verbindung herzustellen. `ssl-encryption` benötigt keinen ARN der SSL-Zertifizierungsstelle (CA), um das Zertifikat eines Servers zu verifizieren, über die Einstellung `SslCaCertificateArn` kann jedoch optional einer angegeben werden. Wenn kein ARN für eine Zertifizierungsstelle angegeben wird, verwendet DMS die Amazon-Stammzertifizierungsstelle.

  Wenn Sie ein lokales Redis OSS-Ziel verwenden, können Sie `SslCaCertificateArn` damit eine öffentliche oder private Zertifizierungsstelle (CA) in DMS importieren und diesen ARN für die Serverauthentifizierung bereitstellen. Eine private CA wird nicht unterstützt, wenn Sie ElastiCache (Redis OSS) als Ziel verwenden.
+ `AuthType`— (Erforderlich) Gibt die Art der Authentifizierung an, die bei der Verbindung mit Redis OSS durchgeführt werden soll. Gültige Werte sind: `none`, `auth-token` und `auth-role`.

  Für die `auth-token` Option muss ein *AuthPassword* "angegeben werden, während für die `auth-role` Option die Angabe von" *AuthUserName* "und" *AuthPassword* "erforderlich ist.

# Babelfish als Ziel verwenden für AWS Database Migration Service
<a name="CHAP_Target.Babelfish"></a>

Sie können Daten von einer Microsoft SQL Server-Quelldatenbank zu einem Babelfish-Ziel migrieren, indem Sie. AWS Database Migration Service

Babelfish for Aurora PostgreSQL erweitert Ihre Amazon Aurora PostgreSQL kompatible Edition-Datenbank um die Möglichkeit, Datenbankverbindungen von Microsoft SQL Server-Clients zu akzeptieren. Dadurch können Anwendungen, die ursprünglich für SQL Server entwickelt wurden, direkt mit Aurora PostgreSQL arbeiten – mit nur wenigen Codeänderungen im Vergleich zu einer herkömmlichen Migration und ohne Änderung der Datenbanktreiber. 

Informationen zu Versionen von Babelfish, die als Ziel AWS DMS unterstützt werden, finden Sie unter. [Ziele für AWS DMS](CHAP_Introduction.Targets.md) Frühere Versionen von Babelfish in Aurora PostgreSQL erfordern ein Upgrade, damit der Babelfish-Endpunkt verwendet werden kann.

**Anmerkung**  
Der Aurora-PostgreSQL-Zielendpunkt ist die bevorzugte Methode für die Migration von Daten zu Babelfish. Weitere Informationen finden Sie unter [Verwenden von Babelfish für Aurora PostgreSQL als Ziel](CHAP_Target.PostgreSQL.md#CHAP_Target.PostgreSQL.Babelfish). 

Informationen zur Verwendung von Babelfish als Datenbank-Endpunkt finden Sie unter [Babelfish for Aurora PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraPostgreSQL.html) im *Benutzerhandbuch für Amazon Aurora*. 

## Voraussetzungen für die Verwendung von Babelfish als Ziel für AWS DMS
<a name="CHAP_Target.Babelfish.Prerequisites"></a>

Sie müssen Ihre Tabellen erstellen, bevor Sie Daten migrieren, um sicherzustellen, dass die richtigen Datentypen und Tabellenmetadaten AWS DMS verwendet werden. Wenn Sie Ihre Tabellen nicht auf dem Ziel erstellen, bevor Sie die Migration ausführen, werden die Tabellen AWS DMS möglicherweise mit falschen Datentypen und Berechtigungen erstellt. AWS DMS Erstellt beispielsweise stattdessen eine Zeitstempelspalte als binär (8) und bietet nicht die erwartete timestamp/rowversion Funktionalität.

**So können Sie Ihre Tabellen vor der Migration vorbereiten und erstellen**

1. Führen Sie Create-Table-DDL-Anweisungen aus, die alle eindeutigen Einschränkungen, Primärschlüssel oder Standardeinschränkungen enthalten. 

   Fügen Sie keine Einschränkungen hinsichtlich Fremdschlüsseln und keine DDL-Anweisungen für Objekte wie Ansichten, gespeicherte Prozeduren, Funktionen oder Auslöser hinzu. Sie können sie nach der Migration Ihrer Quelldatenbank anwenden.

1. Identifizieren Sie alle Identitätsspalten, berechneten Spalten oder Spalten mit den Datentypen rowversion oder timestamp für Ihre Tabellen. Erstellen Sie anschließend die erforderlichen Transformationsregeln, um bekannte Probleme bei der Ausführung der Migrationsaufgabe zu beheben. Weitere Informationen finden Sie unter [Transformationsregeln und Aktionen](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Transformations.md).

1. Identifizieren Sie Spalten mit Datentypen, die Babelfish nicht unterstützt. Ändern Sie dann die betroffenen Spalten in der Zieltabelle, sodass sie unterstützte Datentypen verwenden, oder erstellen Sie eine Transformationsregel, durch die sie während der Migrationsaufgabe entfernt werden. Weitere Informationen finden Sie unter [Transformationsregeln und Aktionen](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Transformations.md).

   In der folgenden Tabelle sind Quelldatentypen, die von Babelfish nicht unterstützt werden, und der entsprechende empfohlene Zieldatentyp aufgeführt.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/dms/latest/userguide/CHAP_Target.Babelfish.html)

**So legen Sie die Aurora-Kapazitätseinheiten (ACUs) für Ihre Aurora PostgreSQL Serverless V2-Quelldatenbank fest**

Sie können die Leistung Ihrer AWS DMS Migrationsaufgabe vor der Ausführung verbessern, indem Sie den ACU-Mindestwert festlegen.
+ Stellen Sie im Fenster mit den **Kapazitätseinstellungen von Severless v2** **Minimum ACUs** auf **2** oder eine angemessene Stufe für Ihren Aurora-DB-Cluster ein.

  Weitere Informationen zum Festlegen von Aurora-Kapazitätseinheiten finden Sie unter [Auswählen des Aurora-Serverless-v2-Kapazitätsbereichs für einen Aurora-Cluster](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless-v2.setting-capacity.html) im *Benutzerhandbuch für Amazon Aurora*. 

Nachdem Sie Ihre AWS DMS Migrationsaufgabe ausgeführt haben, können Sie den Mindestwert Ihres ACUs auf ein angemessenes Niveau für Ihre Aurora PostgreSQL Serverless V2-Quelldatenbank zurücksetzen.

## Sicherheitsanforderungen bei der Verwendung von Babelfish als Ziel für AWS Database Migration Service
<a name="CHAP_Target.Babelfish.Security"></a>

Im Folgenden werden die Sicherheitsanforderungen für die Verwendung AWS DMS mit einem Babelfish-Target beschrieben:
+ Der Name des Administrator-Benutzers (Admin-Benutzer), mit dem die Datenbank erstellt wurde.
+ PSQL-Login und -Benutzer mit den ausreichenden SELECT-, INSERT-, UPDATE-, DELETE- und REFERENCES-Berechtigungen.

## Benutzerberechtigungen für die Verwendung von Babelfish als Ziel für AWS DMS
<a name="CHAP_Target.Babelfish.Permissions"></a>

**Wichtig**  
Aus Sicherheitsgründen muss das für die Datenmigration verwendete Benutzerkonto ein registrierter Benutzer in einer Babelfish-Zieldatenbank sein.

Ihr Babelfish-Zielendpunkt erfordert Mindestbenutzerberechtigungen, um eine AWS DMS -Migration ausführen zu können.

**So erstellen Sie einen Login und einen Transact-SQL (T-SQL)-Benutzer mit geringen Berechtigungen**

1. Erstellen Sie einen Login und ein Passwort für die Verbindung mit dem Server.

   ```
   CREATE LOGIN dms_user WITH PASSWORD = 'password';
   GO
   ```

1. Erstellen Sie die virtuelle Datenbank für Ihren Babelfish-Cluster.

   ```
   CREATE DATABASE my_database;
   GO
   ```

1. Erstellen Sie den T-SQL-Benutzer für Ihre Zieldatenbank.

   ```
   USE my_database
   GO
   CREATE USER dms_user FOR LOGIN dms_user;
   GO
   ```

1. Erteilen Sie für jede Tabelle in Ihrer Babelfish-Datenbank GRANT-Berechtigungen für die Tabellen.

   ```
   GRANT SELECT, DELETE, INSERT, REFERENCES, UPDATE ON [dbo].[Categories] TO dms_user;  
   ```

## Einschränkungen bei der Verwendung von Babelfish als Ziel für AWS Database Migration Service
<a name="CHAP_Target.Babelfish.Limitations"></a>

Die folgenden Einschränkungen gelten, wenn Sie eine Babelfish-Datenbank als Ziel für AWS DMS verwenden:
+ Es wird nur der Tabellenvorbereitungsmodus „**Nichts unternehmen**“ unterstützt.
+ Der Datentyp ROWVERSION erfordert eine Tabellenzuordnungsregel, die den Spaltennamen während der Migrationsaufgabe aus der Tabelle entfernt.
+ Der Datentyp sql\$1variant wird nicht unterstützt.
+ Der vollständige LOB-Modus wird unterstützt. Für die Verwendung von SQL Server als Quellendpunkt muss die Einstellung `ForceFullLob=True` für das SQL Server-Endpunkt-Verbindungsattribut festgelegt werden, damit LOBs sie zum Zielendpunkt migriert werden kann.
+ Für Einstellungen von Replikationsaufgaben gelten die folgenden Einschränkungen:

  ```
  {
     "FullLoadSettings": {
        "TargetTablePrepMode": "DO_NOTHING",
        "CreatePkAfterFullLoad": false,
        }.
      
  }
  ```
+ Die Datentypen TIME (7), DATETIME2 (7) und DATETIMEOFFSET (7) in Babelfish begrenzen den Genauigkeitswert für den Sekundenanteil der Zeit auf 6 Ziffern. Ziehen Sie die Verwendung des Genauigkeitswerts 6 für Ihre Zieltabelle in Betracht, wenn Sie diese Datentypen verwenden. Bei Babelfish-Versionen 2.2.0 und höher ist bei Verwendung von TIME (7) und DATETIME2 (7) die siebte Stelle der Genauigkeit immer Null.
+ Im Modus DO\$1NOTHING prüft DMS, ob die Tabelle bereits vorhanden ist. Wenn die Tabelle nicht im Zielschema vorhanden ist, erstellt DMS die Tabelle auf Grundlage der Quelltabellendefinition und ordnet alle benutzerdefinierten Datentypen ihrem Basisdatentyp zu.
+ Eine AWS DMS Migrationsaufgabe zu einem Babelfish-Ziel unterstützt keine Tabellen mit Spalten, die die Datentypen ROWVERSION oder TIMESTAMP verwenden. Sie können eine Tabellenzuordnungsregel verwenden, die den Spaltennamen während der Übertragung aus der Tabelle entfernt. Im folgenden Beispiel für eine Transformationsregel wird die Tabelle mit dem Namen `Actor` in Ihrer Quelle so transformiert, dass alle Spalten, die mit den Zeichen `col` beginnen, aus der Tabelle `Actor` in Ihrem Ziel entfernt werden.

  ```
  {
   	"rules": [{
  		"rule-type": "selection",is 
  		"rule-id": "1",
  		"rule-name": "1",
  		"object-locator": {
  			"schema-name": "test",
  			"table-name": "%"
  		},
  		"rule-action": "include"
  	}, {
  		"rule-type": "transformation",
  		"rule-id": "2",
  		"rule-name": "2",
  		"rule-action": "remove-column",
  		"rule-target": "column",
  		"object-locator": {
  			"schema-name": "test",
  			"table-name": "Actor",
  			"column-name": "col%"
  		}
  	}]
   }
  ```
+ Für Tabellen mit Identitäts- oder berechneten Spalten, bei denen die Zieltabellen Namen mit gemischter Groß- und Kleinschreibung wie Kategorien verwenden, müssen Sie eine Transformationsregelaktion erstellen, die die Tabellennamen für Ihre DMS-Aufgabe in Kleinbuchstaben umwandelt. Das folgende Beispiel zeigt, wie die Transformationsregelaktion „**Kleinbuchstaben erstellen**“ mithilfe der Konsole erstellt wird. AWS DMS Weitere Informationen finden Sie unter [Transformationsregeln und Aktionen](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Transformations.md).  
![\[Babelfish-Transformationsregel\]](http://docs.aws.amazon.com/de_de/dms/latest/userguide/images/datarep-babelfish-transform-1.png)
+ Vor Babelfish Version 2.2.0 beschränkte DMS die Anzahl der Spalten, die Sie auf einen Babelfish-Zielendpunkt replizieren konnten, auf zwanzig (20) Spalten. Mit Babelfish 2.2.0 wurde das Limit auf 100 Spalten erhöht. Mit den Babelfish-Versionen 2.4.0 und höher wird die Anzahl der Spalten, die Sie replizieren können, erneut erhöht. Sie können das folgende Codebeispiel für Ihre SQL-Server-Datenbank ausführen, um zu ermitteln, welche Tabellen zu lang sind.

  ```
  USE myDB;
  GO
  DECLARE @Babelfish_version_string_limit INT = 8000; -- Use 380 for Babelfish versions before 2.2.0
  WITH bfendpoint
  AS (
  SELECT 
  	[TABLE_SCHEMA]
        ,[TABLE_NAME]
  	  , COUNT( [COLUMN_NAME] ) AS NumberColumns
  	  , ( SUM( LEN( [COLUMN_NAME] ) + 3)  
  		+ SUM( LEN( FORMAT(ORDINAL_POSITION, 'N0') ) + 3 )  
  	    + LEN( TABLE_SCHEMA ) + 3
  		+ 12 -- INSERT INTO string
  		+ 12)  AS InsertIntoCommandLength -- values string
        , CASE WHEN ( SUM( LEN( [COLUMN_NAME] ) + 3)  
  		+ SUM( LEN( FORMAT(ORDINAL_POSITION, 'N0') ) + 3 )  
  	    + LEN( TABLE_SCHEMA ) + 3
  		+ 12 -- INSERT INTO string
  		+ 12)  -- values string
  			>= @Babelfish_version_string_limit
  			THEN 1
  			ELSE 0
  		END AS IsTooLong
  FROM [INFORMATION_SCHEMA].[COLUMNS]
  GROUP BY [TABLE_SCHEMA], [TABLE_NAME]
  )
  SELECT * 
  FROM bfendpoint
  WHERE IsTooLong = 1
  ORDER BY TABLE_SCHEMA, InsertIntoCommandLength DESC, TABLE_NAME
  ;
  ```

## Zieldatentypen für Babelfish
<a name="CHAP_Target.Babelfish.DataTypes"></a>

Die folgende Tabelle zeigt die Babelfish-Zieldatentypen, die bei der Verwendung unterstützt werden, AWS DMS und die Standardzuweisung von Datentypen. AWS DMS 

Weitere Informationen zu AWS DMS Datentypen finden Sie unter. [Datentypen für den AWS Database Migration Service](CHAP_Reference.DataTypes.md) 


|  AWS DMS Datentyp  |  Babelfish-Datentyp   | 
| --- | --- | 
|  BOOLEAN  |  TINYINT  | 
|  BYTES  |  VARBINARY (Länge)  | 
|  DATE  |  DATE  | 
|  TIME  |  TIME  | 
|  INT1  |  SMALLINT  | 
|  INT2  |  SMALLINT  | 
|  INT4  |  INT  | 
|  INT8  |  BIGINT  | 
|  NUMERIC   |  NUMERIC (p,s)  | 
|  REAL4  |  REAL  | 
|  REAL8  |  FLOAT  | 
|  STRING  |  Wenn die Spalte eine Datums- oder Zeitspalte ist, gehen Sie wie folgt vor:  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/dms/latest/userguide/CHAP_Target.Babelfish.html) Wenn die Spalte keine Datums- oder Zeitspalte ist, verwenden Sie VARCHAR (Länge).  | 
|  UINT1  |  TINYINT  | 
|  UINT2  |  SMALLINT  | 
|  UINT4  |  INT  | 
|  UINT8  |  BIGINT  | 
|  WSTRING  |  NVARCHAR(Länge)  | 
|  BLOB  |  VARBINARY(max) Um diesen Datentyp mit DMS zu verwenden, müssen Sie die Verwendung von BLOBs für eine bestimmte Aufgabe aktivieren. DMS unterstützt BLOB-Datentypen nur in Tabellen, die einen Primärschlüssel enthalten.  | 
|  CLOB  |  VARCHAR(max) Um diesen Datentyp mit DMS zu verwenden, müssen Sie die Verwendung von CLOBs für eine bestimmte Aufgabe aktivieren.  | 
|  NCLOB  |  NVARCHAR(max) Um diesen Datentyp mit DMS zu verwenden, müssen Sie die Verwendung von NCLOBs für eine bestimmte Aufgabe aktivieren. Bei CDC unterstützt DMS NCLOB-Datentypen nur in Tabellen, die einen Primärschlüssel enthalten.  | 

# Verwendung von Amazon Timestream als Ziel für AWS Database Migration Service
<a name="CHAP_Target.Timestream"></a>

Sie können AWS Database Migration Service es verwenden, um Daten von Ihrer Quelldatenbank zu einem Amazon Timestream Timestream-Zielendpunkt zu migrieren, wobei Full Load- und CDC-Datenmigrationen unterstützt werden.

Amazon Timestream ist ein schneller, skalierbarer Serverless-Zeitreihendatenbank-Service, der für die Erfassung großer Datenmengen entwickelt wurde. Zeitreihendaten sind Folgen von Datenpunkten, die über ein Zeitintervall erfasst wurden. Sie werden zur Messung von Ereignissen verwendet, die sich im Laufe der Zeit ändern. Es wird verwendet, um Metriken aus IoT-Anwendungen, -Anwendungen und -Analyseanwendungen zu sammeln, zu speichern und zu analysieren. DevOps Sobald Sie Ihre Daten in Timestream haben, können Sie Trends und Muster in Ihren Daten nahezu in Echtzeit visualisieren und identifizieren. Informationen zu Amazon Timestream finden Sie unter [Was ist Amazon Timestream?](https://docs.aws.amazon.com/timestream/latest/developerguide/what-is-timestream.html) im *Amazon-Timestream-Entwicklerhandbuch*.

**Topics**
+ [Voraussetzungen für die Verwendung von Amazon Timestream als Ziel für AWS Database Migration Service](#CHAP_Target.Timestream.Prerequisites)
+ [Aufgabeneinstellungen für vollständige Multithread-Ladevorgänge](#CHAP_Target.Timestream.FLTaskSettings)
+ [Aufgabeneinstellungen für Multithreaded CDC-Ladevorgänge](#CHAP_Target.Timestream.CDCTaskSettings)
+ [Endpunkteinstellungen bei Verwendung von Timestream als Ziel für AWS DMS](#CHAP_Target.Timestream.ConnectionAttrib)
+ [Erstellen und Ändern eines Amazon-Timestream-Zielendpunkts](#CHAP_Target.Timestream.CreateModifyEndpoint)
+ [Verwenden der Objektzuweisung zum Migrieren von Daten zu einem Timestream-Thema](#CHAP_Target.Timestream.ObjectMapping)
+ [Einschränkungen bei der Verwendung von Amazon Timestream als Ziel für AWS Database Migration Service](#CHAP_Target.Timestream.Limitations)

## Voraussetzungen für die Verwendung von Amazon Timestream als Ziel für AWS Database Migration Service
<a name="CHAP_Target.Timestream.Prerequisites"></a>

Bevor Sie Amazon Timestream als Ziel für einrichten, stellen Sie sicher AWS DMS, dass Sie eine IAM-Rolle erstellen. Diese Rolle muss AWS DMS den Zugriff auf die Daten ermöglichen, die zu Amazon Timestream migriert werden. Die Mindestanzahl an Zugriffsberechtigungen für die Rolle, die Sie für die Migration zu Timestream verwenden, ist in der folgenden IAM-Richtlinie aufgeführt.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowDescribeEndpoints",
      "Effect": "Allow",
      "Action": [
        "timestream:DescribeEndpoints"
      ],
      "Resource": "*"
    },
    {
      "Sid": "VisualEditor0",
      "Effect": "Allow",
      "Action": [
        "timestream:ListTables",
        "timestream:DescribeDatabase"
      ],
      "Resource": "arn:aws:timestream:us-east-1:123456789012:database/DATABASE_NAME"
    },
    {
      "Sid": "VisualEditor1",
      "Effect": "Allow",
      "Action": [
        "timestream:DeleteTable",
        "timestream:WriteRecords",
        "timestream:UpdateTable",
        "timestream:CreateTable"
      ],
      "Resource": "arn:aws:timestream:us-east-1:123456789012:database/DATABASE_NAME/table/TABLE_NAME"
    }
  ]
}
```

------

Wenn Sie beabsichtigen, alle Tabellen zu migrieren, verwenden Sie `*` for *TABLE\$1NAME* im obigen Beispiel.

Beachten Sie Folgendes zur Verwendung von Timestream als Ziel:
+ Wenn Sie historische Daten mit Zeitstempeln aufnehmen möchten, die älter als ein Jahr sind, empfehlen wir, die Daten mit AWS DMS im .csv-Format in Amazon S3 zu schreiben. Verwenden Sie dann den Stapelladevorgang von Timestream, um die Daten in Timestream aufzunehmen. Weitere Informationen dazu finden Sie unter [Verwenden des Stapelladens in Timestream](https://docs.aws.amazon.com/timestream/latest/developerguide/batch-load.html) im [Amazon-Timestream-Entwicklerhandbuch](https://docs.aws.amazon.com/timestream/latest/developerguide/what-is-timestream.html).
+ Für Volllast-Datenmigrationen von Daten, die weniger als ein Jahr alt sind, empfehlen wir, die Aufbewahrungsdauer der Timestream-Tabelle für den Speicher größer oder gleich dem ältesten Zeitstempel festzulegen. Sobald die Migration abgeschlossen ist, bearbeiten Sie die Speicherdauer der Tabelle zum gewünschten Wert. Gehen Sie beispielsweise wie folgt vor, um Daten zu migrieren, bei denen der älteste Zeitstempel 2 Monate alt ist:
  + Legen Sie die Speicherdauer der Timestream-Zieltabelle auf 2 Monate fest.
  + Starten Sie die Datenmigration mit AWS DMS.
  + Sobald die Datenmigration abgeschlossen ist, ändern Sie den Aufbewahrungszeitraum der Timestream-Zieltabelle auf den gewünschten Wert. 

   Wir empfehlen, die Speicherkosten vor der Migration anhand der Informationen auf den folgenden Seiten abzuschätzen:
  + [Amazon-Timestream-Preise](https://aws.amazon.com/timestream/pricing)
  + [AWS Preisrechner](https://calculator.aws/#/addService) 
+ Für CDC-Datenmigrationen empfehlen wir, den Aufbewahrungszeitraum für den Speicher der Zieltabelle so festzulegen, dass die aufgenommenen Daten innerhalb der Aufbewahrungsgrenzen des Speichers liegen. Weitere Informationen dazu finden Sie unter [Bewährte Verfahren für Schreibvorgänge](https://docs.aws.amazon.com/timestream/latest/developerguide/data-ingest.html) im [Amazon-Timestream-Entwicklerhandbuch](https://docs.aws.amazon.com/timestream/latest/developerguide/what-is-timestream.html).

## Aufgabeneinstellungen für vollständige Multithread-Ladevorgänge
<a name="CHAP_Target.Timestream.FLTaskSettings"></a>

 AWS DMS Unterstützt zur Erhöhung der Geschwindigkeit der Datenübertragung eine Multithread-Migrationsaufgabe mit Volllast zu einem Timestream-Zielendpunkt mit den folgenden Aufgabeneinstellungen:
+ `MaxFullLoadSubTasks` – Geben Sie diese Option an, um die maximale Anzahl von Quelltabellen festzulegen, die parallel geladen werden sollen. DMS lädt jede Tabelle in die entsprechende Amazon-Timestream-Zieltabelle mithilfe einer dedizierten Unteraufgabe. Der Standardwert beträgt 8; der Maximalwert beträgt 49.
+ `ParallelLoadThreads`— Verwenden Sie diese Option, um die Anzahl der Threads anzugeben, die AWS DMS verwendet werden, um jede Tabelle in ihre Amazon Timestream Timestream-Zieltabelle zu laden. Der maximale Wert für ein Timestream-Ziel ist 32. Sie können eine Erhöhung dieses Höchstwerts anfordern.
+ `ParallelLoadBufferSize` – Verwenden Sie diese Option, um die maximale Anzahl der Datensätze anzugeben, die in dem Puffer gespeichert werden sollen, den die Parallellade-Threads zum Laden von Daten in das Amazon-Timestream-Ziel verwenden. Der Standardwert lautet 50. Die maximale Wert ist 1.000. Verwenden Sie diese Einstellung mit `ParallelLoadThreads`; `ParallelLoadBufferSize` ist nur gültig, wenn es mehr als einen Thread gibt.
+ `ParallelLoadQueuesPerThread` – Verwenden Sie diese Option, um die Anzahl der Warteschlangen anzugeben, auf die jeder gleichzeitige Thread zugreift, um Datensätze aus Warteschlangen zu entfernen und eine Stapellast für das Ziel zu generieren. Der Standardwert ist 1. Für Amazon-Timestream-Ziele mit verschiedenen Nutzlastgrößen beträgt der gültige Bereich jedoch 5–512 Warteschlangen pro Thread.

## Aufgabeneinstellungen für Multithreaded CDC-Ladevorgänge
<a name="CHAP_Target.Timestream.CDCTaskSettings"></a>

 AWS DMS Unterstützt die folgenden Aufgabeneinstellungen, um die CDC-Leistung zu fördern:
+ `ParallelApplyThreads`— Gibt die Anzahl gleichzeitiger Threads an, die während eines CDC-Ladevorgangs AWS DMS verwendet werden, um Datensätze an einen Timestream-Zielendpunkt zu übertragen. Der Standardwert ist 0 und der maximale Wert ist 32.
+ `ParallelApplyBufferSize` – Gibt die maximale Anzahl von Datensätzen an, die in jeder Pufferwarteschlange für gleichzeitige Threads gespeichert werden sollen, um sie während eines CDC-Ladevorgangs an einen Timestream-Zielendpunkt zu übertragen. Der Standardwert ist 100 und der Höchstwert 1 000. Verwenden Sie diese Option, wenn `ParallelApplyThreads` mehrere Threads angibt. 
+ `ParallelApplyQueuesPerThread` – Gibt die Anzahl der Warteschlangen an, auf die jeder Thread zugreift, um Datensätze aus Warteschlangen zu entfernen und während des CDC eine Stapellast für einen Timestream-Endpunkt zu generieren. Der Standardwert ist 1 und der maximale Wert 512.

## Endpunkteinstellungen bei Verwendung von Timestream als Ziel für AWS DMS
<a name="CHAP_Target.Timestream.ConnectionAttrib"></a>

Sie können Endpunkteinstellungen zur Konfiguration Ihrer Timestream-Zieldatenbank verwenden, ähnlich wie Sie zusätzliche Verbindungsattribute verwenden. Sie geben die Einstellungen an, wenn Sie den Zielendpunkt mithilfe der AWS DMS Konsole oder mithilfe des `create-endpoint` Befehls in [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html), mit der `--timestream-settings '{"EndpointSetting": "value", ...}'` JSON-Syntax erstellen.

Die folgende Tabelle zeigt die Endpunkteinstellungen, die Sie mit Timestream als Ziel verwenden können.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/dms/latest/userguide/CHAP_Target.Timestream.html)

## Erstellen und Ändern eines Amazon-Timestream-Zielendpunkts
<a name="CHAP_Target.Timestream.CreateModifyEndpoint"></a>

Nachdem Sie eine IAM-Rolle erstellt und die Mindestanzahl an Zugriffsberechtigungen festgelegt haben, können Sie einen Amazon Timestream Timestream-Zielendpunkt mithilfe der AWS DMS Konsole oder mithilfe des `create-endpoint` Befehls in der mit der [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html)`--timestream-settings '{"EndpointSetting": "value", ...}'`JSON-Syntax erstellen.

In den folgenden Beispielen wird erläutert, wie ein Timestream-Zielendpunkt mit der AWS CLI erstellt und geändert wird.

**Befehl „Timestream-Zielendpunkt erstellen“**

```
aws dms create-endpoint —endpoint-identifier timestream-target-demo
--endpoint-type target —engine-name timestream
--service-access-role-arn arn:aws:iam::123456789012:role/my-role
--timestream-settings
{
    "MemoryDuration": 20,
    "DatabaseName":"db_name",
    "MagneticDuration": 3,
    "CdcInsertsAndUpdates": true,
    "EnableMagneticStoreWrites": true,
}
```

**Befehl „Timestream-Zielendpunkt ändern“**

```
aws dms modify-endpoint —endpoint-identifier timestream-target-demo
--endpoint-type target —engine-name timestream
--service-access-role-arn arn:aws:iam::123456789012:role/my-role
--timestream-settings
{
    "MemoryDuration": 20,
    "MagneticDuration": 3,
}
```

## Verwenden der Objektzuweisung zum Migrieren von Daten zu einem Timestream-Thema
<a name="CHAP_Target.Timestream.ObjectMapping"></a>

AWS DMS verwendet Regeln für die Tabellenzuweisung, um Daten aus der Quelle dem Timestream-Zielthema zuzuordnen. Um Daten einem Zielthema zuzuweisen, verwenden Sie eine Art von Tabellenzuweisungsregel, die als Objektzuweisung bezeichnet wird. Mit der Objektzuweisung legen Sie fest, wie Datensätze in der Quelle den in einem Timestream-Thema veröffentlichten Datensätzen zugewiesen werden. 

Timestream-Themen verfügen bis auf einen Partitionsschlüssel über keine voreingestellte Struktur.

**Anmerkung**  
Sie müssen die Objektzuweisung nicht verwenden. Sie können die reguläre Tabellenzuweisung für verschiedene Transformationen verwenden. Der Partitionsschlüsseltyp folgt jedoch diesen Standardverhaltensweisen:   
Der Primärschlüssel wird als Partitionsschlüssel für Volllast verwendet.
Wenn keine Aufgabeneinstellungen für die parallele Anwendung verwendet werden, wird `schema.table` als Partitionsschlüssel für CDC verwendet.
Wenn Aufgabeneinstellungen für parallele Anwendung verwendet werden, wird der Primärschlüssel als Partitionsschlüssel für CDC verwendet.

Um eine Objektzuweisungsregel zu erstellen, legen Sie `rule-type` als `object-mapping` fest. Diese Regel gibt an, welchen Objektzuweisungstyp Sie verwenden möchten. Die Struktur für die Regel lautet wie folgt.

```
{
    "rules": [
        {
            "rule-type": "object-mapping",
            "rule-id": "id",
            "rule-name": "name",
            "rule-action": "valid object-mapping rule action",
            "object-locator": {
                "schema-name": "case-sensitive schema name",
                "table-name": ""
            }
        }
    ]
}
```



```
{
    "rules": [
        {
            "rule-type": "object-mapping",
            "rule-id": "1",
            "rule-name": "timestream-map",
            "rule-action": "map-record-to-record",
            "target-table-name": "tablename",
            "object-locator": {
                "schema-name": "",
                "table-name": ""
            },
            "mapping-parameters": {
                "timestream-dimensions": [
                    "column_name1",
                     "column_name2"
                ],
                "timestream-timestamp-name": "time_column_name",
                "timestream-multi-measure-name": "column_name1or2",
                "timestream-hash-measure-name":  true or false,
                "timestream-memory-duration": x,
                "timestream-magnetic-duration": y
            }
        }
    ]
}
```

AWS DMS unterstützt derzeit `map-record-to-record` und `map-record-to-document` als einzig gültige Werte für den Parameter. `rule-action` Die `map-record-to-document` Werte `map-record-to-record` und geben an, was AWS DMS standardmäßig mit Datensätzen geschieht, die nicht in der `exclude-columns` Attributliste ausgeschlossen sind. Diese Werte wirken sich in keiner Weise auf die Attributzuweisungen aus. 

Verwenden Sie `map-record-to-record` beim Migrieren aus einer relationalen Datenbank zu einem Timestream-Thema. Dieser Regeltyp verwendet den `taskResourceId.schemaName.tableName`-Wert aus der relationalen Datenbank als Partitionsschlüssel in dem Timestream-Thema und erstellt ein Attribut für jede Spalte in der Quelldatenbank. Bei Verwendung wird für jede Spalte in der Quelltabelle`map-record-to-record`, die nicht in der `exclude-columns` Attributliste aufgeführt ist, ein entsprechendes Attribut im Zielthema AWS DMS erstellt. Dieses entsprechende Attribut wird unabhängig davon erstellt, ob diese Quellspalte in einer Attributzuweisung verwendet wird oder nicht. 

Eine Möglichkeit, `map-record-to-record` zu verstehen, besteht darin, sich die praktische Anwendung zu veranschaulichen. In diesem Beispiel wird davon ausgegangen, dass Sie mit einer Tabellenzeile einer relationalen Datenbank beginnen, die die folgende Struktur aufweist und die folgenden Daten enthält.


| FirstName | LastName | StoreId | HomeAddress | HomePhone | WorkAddress | WorkPhone | DateofBirth | 
| --- | --- | --- | --- | --- | --- | --- | --- | 
| Randy | Marsh | 5 | 221B Baker Street | 1234567890 | 31 Spooner Street, Quahog  | 9876543210 | 02/29/1988 | 

Um diese Informationen von einem Schema mit dem Namen `Test` zu einem Timestream-Thema zu migrieren, erstellen Sie Regeln, um die Daten dem Zielthema zuzuweisen. Die folgende Regel veranschaulicht die Zuweisung. 

```
{
    "rules": [
        {
            "rule-type": "selection",
            "rule-id": "1",
            "rule-name": "1",
            "rule-action": "include",
            "object-locator": {
                "schema-name": "Test",
                "table-name": "%"
            }
        },
        {
            "rule-type": "object-mapping",
            "rule-id": "2",
            "rule-name": "DefaultMapToTimestream",
            "rule-action": "map-record-to-record",
            "object-locator": {
                "schema-name": "Test",
                "table-name": "Customers"
            }
        }
    ]
}
```

Nachfolgend wird das resultierende Datensatzformat bei Verwendung unserer Beispieldaten in dem Timestream-Zielthema für ein bestimmtes Timestream-Thema und einen bestimmten Partitionsschlüssel (in diesem Fall `taskResourceId.schemaName.tableName`) illustriert. 

```
  {
     "FirstName": "Randy",
     "LastName": "Marsh",
     "StoreId":  "5",
     "HomeAddress": "221B Baker Street",
     "HomePhone": "1234567890",
     "WorkAddress": "31 Spooner Street, Quahog",
     "WorkPhone": "9876543210",
     "DateOfBirth": "02/29/1988"
  }
```

## Einschränkungen bei der Verwendung von Amazon Timestream als Ziel für AWS Database Migration Service
<a name="CHAP_Target.Timestream.Limitations"></a>

Bei der Verwendung von Amazon Timestream als Ziel gelten die folgenden Einschränkungen:
+ **Dimensionen und Zeitstempel:** Timestream verwendet die Dimensionen und Zeitstempel in den Quelldaten wie einen zusammengesetzten Primärschlüssel und ermöglicht Ihnen auch nicht, diese Werte zu ändern. Dies bedeutet: Wenn Sie den Zeitstempel oder die Dimensionen für einen Datensatz in der Quelldatenbank ändern, versucht die Timestream-Datenbank, einen neuen Datensatz zu erstellen. Es ist also möglich, dass, wenn Sie die Dimension oder den Zeitstempel eines Datensatzes so ändern, dass sie denen eines anderen vorhandenen Datensatzes entsprechen, die Werte des anderen Datensatzes AWS DMS aktualisiert werden, anstatt einen neuen Datensatz zu erstellen oder den vorherigen entsprechenden Datensatz zu aktualisieren.
+ **DDL-Befehle:** Die aktuelle Version von unterstützt AWS DMS `CREATE TABLE` nur `DROP TABLE` DDL-Befehle.
+ **Einschränkungen bei Datensätzen:** Timestream hat Einschränkungen für Datensätze wie Datensatzgröße und Maßgröße. Weitere Informationen dazu finden Sie unter [Kontingente](https://docs.aws.amazon.com/timestream/latest/developerguide/what-is-timestream.html) im [Amazon-Timestream-Entwicklerhandbuch](https://docs.aws.amazon.com/).
+ **Löschen von Datensätzen und Nullwerten:** Timestream unterstützt das Löschen von Datensätzen nicht. AWS DMS Löscht die entsprechenden Felder in den Datensätzen in der Timestream-Zieldatenbank, um die Migration von Datensätzen zu unterstützen, die aus der Quelle gelöscht wurden. AWS DMS ändert die Werte in den Feldern des entsprechenden Zieldatensatzes mit **0** für numerische Felder, **Null** für Textfelder und **falsch** für boolesche Felder.
+ Timestream als Ziel unterstützt keine Quellen, die keine relationalen Datenbanken (RDBMS) sind.
+ AWS DMS unterstützt Timestream nur als Ziel in den folgenden Regionen:
  + USA Ost (Nord-Virginia)
  + USA Ost (Ohio)
  + USA West (Oregon)
  + Europa (Irland)
  + Europa (Frankfurt)
  + Asien-Pazifik (Sydney)
  + Asien-Pazifik (Tokio)
+ Timestream als Ziel unterstützt die Einstellung `TargetTablePrepMode` auf `TRUNCATE_BEFORE_LOAD` nicht. Wir empfehlen, `DROP_AND_CREATE` für diese Einstellung zu verwenden.

# Verwendung von Amazon RDS for Db2 und IBM Db2 LUW als Ziel für AWS DMS
<a name="CHAP_Target.DB2"></a>

Mit () können Sie Daten von einer Db2-LUW-Datenbank auf eine Amazon RDS for Db2- oder eine lokale Db2-Datenbank migrieren. AWS Database Migration Service AWS DMS

Informationen zu Versionen von Db2 LUW, die als Ziel unterstützt werden, AWS DMS finden Sie unter. [Ziele für AWS DMS](CHAP_Introduction.Targets.md)

Sie können Secure Sockets Layer (SSL) verwenden, um Verbindungen zwischen Ihrem Db2 LUW-Endpunkt und der Replikations-Instance zu verschlüsseln. Weitere Informationen zur Verwendung von SSL mit einem Db2-LUW-Endpunkt finden Sie unter [Verwenden von SSL mit AWS Database Migration Service](CHAP_Security.SSL.md).

## Einschränkungen bei der Verwendung von Db2 LUW als Ziel für AWS DMS
<a name="CHAP_Target.DB2.Limitations"></a>

Die folgenden Einschränkungen gelten bei der Verwendung der Db2 LUW-Datenbank als Ziel für. AWS DMS Zu Einschränkungen bei der Verwendung von Db2 LUW als Quelle siehe [Einschränkungen bei der Verwendung von Db2 LUW als Quelle für AWS DMS](CHAP_Source.DB2.md#CHAP_Source.DB2.Limitations).
+ AWS DMS unterstützt nur Db2 LUW als Ziel, wenn die Quelle entweder Db2 LUW oder Db2 for z/OS ist.
+ Die Verwendung von Db2 LUW als Ziel unterstützt keine Replikationen mit vollständigem LOB-Modus.
+ Die Verwendung von Db2 LUW als Ziel unterstützt den XML-Datentyp in der Vollladephase nicht. Dies ist eine Einschränkung des IBM dbload-Dienstprogramms. Weitere Informationen finden Sie unter [Das Hilfsprogramm dbload](https://www.ibm.com/docs/en/informix-servers/14.10?topic=utilities-dbload-utility) in der Dokumentation von *IBM Informix Server*.
+ AWS DMS kürzt BLOB-Felder mit Werten, die dem doppelten Anführungszeichen („) entsprechen. Dies ist eine Einschränkung des IBM dbload-Dienstprogramms. 
+ AWS DMS unterstützt die Option paralleles Vollladen bei der Migration zu einem Db2-LUW-Ziel in DMS-Version 3.5.3 nicht. Diese Option ist ab DMS-Version 3.5.4 oder höher verfügbar.

## Endpunkteinstellungen bei Verwendung von Db2 LUW als Ziel für AWS DMS
<a name="CHAP_Target.DB2.ConnectionAttrib"></a>

Sie können Endpunkteinstellungen zum Konfigurieren Ihrer Db2-LUW-Zieldatenbank verwenden, ähnlich wie Sie zusätzliche Verbindungsattribute verwenden. Sie geben die Einstellungen an, wenn Sie den Zielendpunkt mithilfe der AWS DMS Konsole oder mithilfe des `create-endpoint` Befehls in [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html), mit der `--ibm-db2-settings '{"EndpointSetting": "value", ...}'` JSON-Syntax erstellen.

Die folgende Tabelle zeigt die Endpunkteinstellungen, die Sie mit Db2 LUW als Ziel verwenden können.


| Name | Description | 
| --- | --- | 
|  `KeepCsvFiles`  |  Wenn der Wert true ist, werden alle CSV-Dateien, die zur Datenreplikation verwendet wurden, auf dem Db2-LUW-Ziel AWS DMS gespeichert. DMS verwendet diese Dateien zur Analyse und Problembehandlung..  | 
|  `LoadTimeout`  |  Die Zeitspanne (in Millisekunden), bevor bei Vorgängen, die von DMS auf dem Db2-Ziel ausgeführt werden, ein AWS DMS Timeout eintritt. Der Standardwert ist 1 200 (20 Minuten).  | 
|  `MaxFileSize`  |  Gibt die maximale Größe (in KB) der .csv-Dateien zum Übertragen von Daten zu Db2 LUW an.  | 
|  `WriteBufferSize`  |  Die Größe (in KB) des In-Memory-Datei-Schreibpuffers, der beim Generieren von .csv-Dateien auf der lokalen Festplatte in der DMS-Replikations-Instance verwendet wird. Der Standardwert ist 1 024 (1 MB).  | 

# Konfiguration von VPC-Endpunkten für AWS DMS
<a name="CHAP_VPC_Endpoints"></a>

AWS DMS unterstützt Amazon Virtual Private Cloud (VPC) -Endpunkte als Quellen und Ziele. AWS DMS kann eine Verbindung zu jeder AWS Quell- oder Zieldatenbank mit Amazon VPC-Endpunkten herstellen, sofern explizit definierte Routen zu diesen Quell- und Zieldatenbanken in ihrer AWS DMS VPC definiert sind.

Durch die Unterstützung von Amazon VPC-Endpunkten ist es AWS DMS einfacher, die end-to-end Netzwerksicherheit für alle Replikationsaufgaben aufrechtzuerhalten, ohne dass zusätzliche Netzwerkkonfiguration und -einrichtung erforderlich sind. Durch die Verwendung von VPC-Endpunkten für alle Quell- und Zielendpunkte wird sichergestellt, dass Ihr gesamter Datenverkehr in Ihrer VPC und unter Ihrer Kontrolle bleibt.

Für eine AWS DMS Replikationsinstanz, die in einem privaten Subnetz oder einer AWS DMS serverlosen Replikation erstellt wurde, muss ein Amazon VPC-Endpunkt eingerichtet werden, um eine Verbindung zu AWS verwalteten Datenbanken herzustellen:
+ Amazon S3
+ Amazon DynamoDB
+ Amazon Kinesis
+ Amazon Redshift
+  OpenSearch Amazon-Dienst

Wenn Sie AWS Secrets Manager verwenden, um Verbindungsinformationen für DMS zu speichern, müssen Sie auch einen VPC-Endpunkt einrichten.

Ab AWS DMS Version 3.4.7 müssen VPC-Endpunkte eine Verbindung zwischen der DMS-Replikationsinstanz oder der serverlosen Replikation und den oben genannten Amazon-Services herstellen, wenn ein privates Netzwerk verwendet wird.

## Allgemeine Voraussetzungen AWS DMS
<a name="CHAP_VPC_Endpoints.prereq"></a>

Bevor Sie einen VPC-Endpunkt konfigurieren, müssen Sie die folgenden Voraussetzungen erfüllen:
+ Suchen oder erstellen Sie die VPC, die mit der AWS DMS Replikationsinstanz oder der AWS DMS serverlosen Replikation verwendet werden soll. Wenn Sie diese Informationen nicht angeben, versucht DMS, die Standard-VPC in der Region zu verwenden, in der sie eingerichtet ist.
+ Stellen Sie sicher, dass Sie über IAM-Berechtigungen zum Erstellen eines VPC-Endpoints verfügen. Um eine Verbindung zu Amazon S3 und Amazon DynamoDB herzustellen, können Sie Gateway-VPC-Endpunkte erstellen, die zuverlässige Konnektivität bieten, ohne dass ein Internet-Gateway oder ein NAT-Gerät für Ihre VPC erforderlich ist. Gateway-Endpunkte verwenden AWS PrivateLink im Gegensatz zu anderen Arten von VPC-Endpunkten nicht. *Weitere Informationen finden Sie im Handbuch unter [Gateway-Endpunkte](https://docs.aws.amazon.com/vpc/latest/privatelink/gateway-endpoints.html).AWS PrivateLink*
+ Konfigurieren Sie IAM-Berechtigungen für die Verwendung von DMS:
  + Konfigurieren Sie die Rolle`dms-vpc-role`. Weitere Informationen finden Sie unter [AWS verwaltete Richtlinie: Amazon DMSVPCManagement Role](https://docs.aws.amazon.com/dms/latest/userguide/security-iam-awsmanpol.html#security-iam-awsmanpol-AmazonDMSVPCManagementRole).
  + Konfigurieren Sie die `dms-cloudwatch-logs-role` Rolle. Weitere Informationen finden Sie unter [AWS verwaltete Richtlinie: Amazon DMSCloud WatchLogsRole](https://docs.aws.amazon.com/dms/latest/userguide/security-iam-awsmanpol.html#security-iam-awsmanpol-AmazonDMSCloudWatchLogsRole).
  + AWS DMS Serverless setzt voraus, dass in Ihrem Konto eine Service Linked Role (SLR) vorhanden ist. AWS DMS verwaltet die Erstellung und Verwendung dieser Rolle. Weitere Informationen dazu, wie Sie sicherstellen können, dass Sie über die erforderliche Spiegelreflexkamera verfügen, finden Sie unter [Dienstbezogene Rolle für AWS DMS Serverless](https://docs.aws.amazon.com/dms/latest/userguide/slr-services-sl.html). Wenn Sie eine Replikation erstellen, erstellt AWS DMS Serverless programmgesteuert eine serverlose, dienstverknüpfte Rolle. Sie können diese Rolle in der IAM-Konsole anzeigen.

## Richten Sie einen Amazon VPC-Endpunkt mit AWS Secrets Manager ein
<a name="CHAP_VPC_Endpoints.vpcforsecrets"></a>

Sie können einen Amazon VPC-Endpunkt einrichten, mit AWS DMS dem AWS Secrets Manager arbeiten kann. Durch die Erstellung dieses Endpunkts ermöglichen Sie AWS DMS Replikationsinstanzen oder serverlose Replikationskonfigurationen in privaten Subnetzen, um sicher auf in Secrets Manager gespeicherte Datenbankanmeldeinformationen zuzugreifen, ohne dass ein öffentlicher Internetzugang erforderlich ist.

**Voraussetzungen**

Bevor Sie einen VPC-Endpunkt mit AWS Secrets Manager konfigurieren AWS DMS, müssen Sie die folgenden Voraussetzungen erfüllen:
+ Stellen Sie sicher, dass Sie alle konfigurieren. [Allgemeine Voraussetzungen AWS DMS](#CHAP_VPC_Endpoints.prereq)
+ Erstellen und konfigurieren Sie die [Quell](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Introduction.Sources.html) - oder [Zieldatenbank](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Introduction.Targets.html), mit der Sie eine Verbindung herstellen möchten.
+ Erstellen Sie im AWS Secrets Manager einen geheimen Schlüssel mit Anmeldeinformationen für den Zugriff auf Quell- und Zieldatenbanken. Secret muss sich in derselben Region befinden wie die AWS DMS Replikationsinstanz oder die AWS DMS serverlose Replikation. Je nach Datenbanktyp kann das Schema des Secrets variieren. Weitere Informationen finden Sie unter [Arbeiten mit AWS DMS Endpunkten](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Endpoints.html).
**Wichtig**  
AWS DMS Replikationsinstanz und AWS DMS serverlose Replikation funktionieren nicht mit Geheimnissen, die von Amazon RDS verwaltet werden. Diese Anmeldeinformationen enthalten keine Host- und Port-Informationen, die für den Verbindungsaufbau AWS DMS erforderlich sind.
+ Die Konfiguration von IAM-Berechtigungen zur Verwaltung von DMS-Endpunkten ist für einige Datenbanken erforderlich: Amazon S3, Amazon Kinesis, Amazon DynamoDB, Amazon Redshift, Amazon OpenSearch Service, Amazon Neptune und Amazon Timestream. Weitere Informationen finden Sie unter Arbeiten mit [AWS DMS Endpunkten](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Endpoints.html).

**VPC-Endpunkt für AWS Secrets Manager erstellen**

1. Melden Sie sich bei der an AWS-Managementkonsole und öffnen Sie die Amazon VPC-Konsole unter [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/).

1. Wählen Sie in der Menüleiste der VPC-Konsole dasselbe aus AWS-Region wie Ihre AWS DMS Replizierungsinstanz.

1. Wählen Sie im VPC-Navigationsbereich **Endpunkte** aus.

1. Wählen Sie unter **Endpunkte** die Option **Endpunkt erstellen** aus.

1. Konfigurieren Sie den VPC-Endpunkt wie folgt:

   1. Wählen Sie **Typ** als **AWS Dienste** aus.

   1. Suchen Sie im Textfeld **Dienstname** nach **com.amazonaws **secretsmanager** und wählen Sie es aus. [region] .secretsmanager.** **Stellen Sie sicher, dass der **Typ** für den ausgewählten Dienst Interface ist.**

   1. Wählen Sie unter **Netzwerkeinstellungen** die VPC aus, die in derselben Region wie Ihre DMS-Replikationsinstanz läuft oder in der Sie die serverlose Replikation erstellt haben.

   1. Wählen Sie im Abschnitt **Subnetze** die gewünschten Subnetze aus, in denen DMS betrieben werden soll. Stellen Sie sicher, dass Sie nur private Subnetze auswählen. Sie können ein privates Subnetz anhand der Subnetz-ID identifizieren. Beispiel: `vpc-xxxxxx-subnet-private1-us-west-2a`.

      Wenn Ihre DMS-Replikationsinstanz ohne öffentlichen Zugriff erstellt wurde, müssen Sie die Routing-Tabellen auswählen, die den privaten Subnetzen zugeordnet sind, in denen sich Ihre Replikationsinstanz befindet.
**Anmerkung**  
Achten Sie darauf, dass Sie die privaten Subnetze notieren, da Sie sie bei der Erstellung einer DMS-Replikationssubnetzgruppe angeben müssen. Um DMS über die VPC-Endpunkte mit dem AWS Secrets-Manager zu verbinden, müssen die für den VPC-Endpunkt angegebenen Subnetze mit den Subnetzen in der DMS-Replikationssubnetzgruppe identisch sein.

   1. **Wählen Sie die gewünschten Sicherheitsgruppen aus.** Die Sicherheitsgruppenregeln steuern den Datenverkehr von den Ressourcen in Ihrer VPC zur Endpunkt-Netzwerkschnittstelle. Wenn Sie keine Sicherheitsgruppe angeben, wird die Standardsicherheitsgruppe ausgewählt.

1. Wählen Sie unter **Richtlinie** die Option **Vollzugriff** aus. Wenn Sie eine benutzerdefinierte Richtlinie verwenden möchten, um Ihre eigene Zugriffskontrolle festzulegen, wählen Sie **Benutzerdefiniert** aus. Sie können eine Vertrauensrichtlinie verwenden, die dem JSON-Richtliniendokument entspricht. `dms-vpc-role` Weitere Informationen finden Sie unter [IAM-Rollen für die Verwendung mit erstellen](https://docs.aws.amazon.com/dms/latest/userguide/security-iam.html#CHAP_Security.APIRole). AWS DMS

1. Wählen Sie **Endpunkt erstellen** aus.

   Sie müssen warten, bis der Status lautet`Available`. Ihr VPC-Endpunkt hat jetzt eine ID, die mit `vpce-xxxx` beginnt.

Sie haben jetzt erfolgreich einen VPC-Endpunkt erstellt. Sie müssen AWS DMS Endpunkte und DMS-Subnetzgruppen konfigurieren. Je nachdem, welche Migrationsoption Sie wählen, konfigurieren Sie die DMS-Replikationsinstanz oder die serverlose Replikation.

## Richten Sie einen Amazon VPC-Endpunkt mit Amazon S3 ein
<a name="CHAP_VPC_Endpoints.vpcfors3"></a>

Sie können einen Amazon VPC-Endpunkt einrichten, mit dem AWS DMS Amazon S3 arbeiten kann. Durch die Erstellung dieses Endpunkts ermöglichen Sie AWS DMS Replikationsinstanzen oder serverlose Replikationskonfigurationen in privaten Subnetzen für den sicheren Zugriff auf Datenbankanmeldedaten, die in S3-Buckets gespeichert sind, ohne dass ein öffentlicher Internetzugang erforderlich ist.

**Voraussetzungen**

Bevor Sie einen VPC-Endpunkt mit Amazon S3 konfigurieren AWS DMS, müssen Sie die folgenden Voraussetzungen erfüllen:
+ Stellen Sie sicher, dass Sie alle konfigurieren. [Allgemeine Voraussetzungen AWS DMS](#CHAP_VPC_Endpoints.prereq)
+ Erstellen Sie einen Amazon S3 S3-Bucket, den Sie als [Quell](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Introduction.Sources.html) - oder [Zieldatenbanken](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Introduction.Targets.html) verwenden möchten AWS DMS. Aktivieren Sie die Versionierung für S3 nicht. Wenn Sie die Versionsverwaltung für S3 benötigen, verwenden Sie Lebenszyklusrichtlinien, um alte Versionen aktiv zu löschen. Andernfalls kann es aufgrund eines Timeouts beim Aufrufen von S3-Listenobjekten zu Verbindungsfehlern beim Endpunkttest kommen.
+ Konfigurieren Sie IAM-Berechtigungen zur Verwaltung des DMS Amazon S3 S3-Endpunkts. Wenn Sie die AWS DMS Konsole verwenden, kann die IAM-Rolle mit den erforderlichen Berechtigungen erstellt werden, sofern Sie über die Berechtigungen zum Erstellen von IAM-Rollen verfügen.

**Erstellen eines VPC-Endpunkts für Amazon S3**

1. Melden Sie sich bei der an AWS-Managementkonsole und öffnen Sie die Amazon VPC-Konsole unter [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/).

1. Wählen Sie in der Menüleiste der VPC-Konsole dasselbe aus AWS-Region wie Ihre AWS DMS Replizierungsinstanz.

1. Wählen Sie im VPC-Navigationsbereich **Endpunkte** aus.

1. Wählen Sie unter **Endpunkte** die Option **Endpunkt erstellen** aus.

1. Konfigurieren Sie den VPC-Endpunkt wie folgt:

   1. Wählen Sie **Typ** als **AWS Dienste** aus.

   1. Suchen Sie im Textfeld **Dienstname** nach **com.amazonaws **s3** und wählen Sie es aus. [Region] .s3.** Stellen Sie sicher, dass der **Typ** für den ausgewählten Dienst **Gateway** ist. Sie können einen Gateway-VPC-Endpunkt erstellen, wenn Sie eine Verbindung zu Amazon S3 und DynamoDB herstellen. Gateway-Endpunkte verwenden im Gegensatz zu anderen Arten von VPC-Endpunkten AWS PrivateLink nicht.

   1. Wählen Sie unter **Netzwerkeinstellungen** die VPC aus, die in derselben Region wie Ihre DMS-Replikationsinstanz läuft oder in der Sie die serverlose Replikation erstellt haben.

   1. Wählen Sie im Abschnitt **Subnetze** die gewünschten Subnetze aus, in denen DMS betrieben werden soll. Stellen Sie sicher, dass Sie nur private Subnetze auswählen. Sie können ein privates Subnetz anhand der Subnetz-ID identifizieren. Beispiel: `vpc-xxxxxx-subnet-private1-us-west-2a`.
**Anmerkung**  
Wenn Sie Ihre DMS-Replikationsinstanz ohne öffentlichen Zugriff erstellt haben, müssen Sie die Routing-Tabellen auswählen, die privaten Subnetzen zugeordnet sind, die sich in derselben Region wie Ihre DMS-Instanz befinden. Achten Sie darauf, dass Sie die privaten Subnetze notieren, da Sie sie bei der Erstellung einer DMS-Replikationssubnetzgruppe angeben müssen. Um DMS über die VPC-Endpunkte mit Amazon S3 zu verbinden, müssen die für den VPC-Endpunkt angegebenen Subnetze mit den Subnetzen in der DMS-Replikationssubnetzgruppe identisch sein.

1. **Wählen** **Sie** unter Richtlinie die Option Vollzugriff aus. Wenn Sie eine benutzerdefinierte Richtlinie verwenden möchten, um Ihre eigene Zugriffskontrolle festzulegen, wählen Sie **Benutzerdefiniert** aus. Sie können eine Vertrauensrichtlinie verwenden, die dem JSON-Richtliniendokument entspricht. `dms-vpc-role` Weitere Informationen finden Sie unter [IAM-Rollen für die Verwendung mit erstellen](https://docs.aws.amazon.com/dms/latest/userguide/security-iam.html#CHAP_Security.APIRole). AWS DMS

1. Wählen Sie **Endpunkt erstellen** aus.

   Sie müssen warten, bis der Status lautet`Available`. Ihr VPC-Endpunkt hat jetzt eine ID, die mit `vpce-xxxx` beginnt.

Sie haben jetzt erfolgreich einen VPC-Endpunkt erstellt. Sie müssen AWS DMS Endpunkte und DMS-Subnetzgruppen konfigurieren. Je nachdem, welche Migrationsoption Sie wählen, konfigurieren Sie die DMS-Replikationsinstanz oder die serverlose Replikation.

## Einen Amazon VPC-Endpunkt für Amazon DynamoDB einrichten
<a name="CHAP_VPC_Endpoints.vpcfordynamoDB"></a>

Wenn Sie AWS DMS Replikationsinstanzen in privaten Subnetzen oder AWS DMS serverloser Replikation verwenden, müssen Sie einen VPC-Endpunkt erstellen, um eine sichere Konnektivität mit Amazon DynamoDB herzustellen. Ohne VPC-Endpunktkonfiguration treten AWS DMS Verbindungsfehler auf.

Wenn Sie den VPC-Endpunkt erstellen, müssen Sie in der DMS-Konsole den **Endpunkttyp** als **Gateway** oder **Interface** auswählen. Weitere Informationen finden Sie unter:
+ [Allgemeine Voraussetzungen AWS DMS](#CHAP_VPC_Endpoints.prereq)
+ [Gateway-Endpunkte für Amazon DynamoDB](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-ddb.html)
+ [Wie behebe ich Verbindungsprobleme mit meinen Gateway-Amazon-VPC-Endpunkten?](https://repost.aws/knowledge-center/connect-s3-vpc-endpoint)

## Einen Amazon VPC-Endpunkt für Amazon Kinesis einrichten
<a name="CHAP_VPC_Endpoints.vpcforkinesis"></a>

Wenn Sie AWS DMS Replikationsinstanzen in privaten Subnetzen oder AWS DMS serverloser Replikation verwenden, müssen Sie einen VPC-Endpunkt erstellen, um eine sichere Konnektivität mit Amazon Kinesis herzustellen. Ohne VPC-Endpunktkonfiguration treten AWS DMS Verbindungsfehler auf. Weitere Informationen finden Sie unter:
+ [Allgemeine Voraussetzungen AWS DMS](#CHAP_VPC_Endpoints.prereq)
+ [Verwendung von Amazon Kinesis Data Streams als Ziel für AWS Database Migration Service](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.Kinesis.html)

## Einen Amazon VPC-Endpunkt für Amazon Redshift einrichten
<a name="CHAP_VPC_Endpoints.vpcforredshift"></a>

Wenn Sie AWS DMS Replikationsinstanzen in privaten Subnetzen oder AWS DMS serverloser Replikation verwenden, müssen Sie einen VPC-Endpunkt erstellen, um eine sichere Konnektivität mit Amazon Redshift herzustellen. Ohne VPC-Endpunktkonfiguration treten AWS DMS Verbindungsfehler auf. Weitere Informationen finden Sie unter:
+ [Allgemeine Voraussetzungen AWS DMS](#CHAP_VPC_Endpoints.prereq)
+ [Von Redshift verwaltete VPC-Endpunkte](https://docs.aws.amazon.com/redshift/latest/mgmt/managing-cluster-cross-vpc.html)

## Einen Amazon VPC-Endpunkt für Amazon OpenSearch Service einrichten
<a name="CHAP_VPC_Endpoints.vpcforos"></a>

Wenn Sie AWS DMS Replikationsinstanzen in privaten Subnetzen oder AWS DMS serverloser Replikation verwenden, müssen Sie einen VPC-Endpunkt erstellen, um eine sichere Konnektivität mit Amazon Service herzustellen. OpenSearch Ohne VPC-Endpunktkonfiguration treten AWS DMS Verbindungsfehler auf. Weitere Informationen finden Sie unter:
+ [Allgemeine Voraussetzungen AWS DMS](#CHAP_VPC_Endpoints.prereq)
+ [Konfiguration des VPC-Zugriffs für Amazon OpenSearch Ingestion-Pipelines](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/pipeline-security.html)

## Richten Sie Replikationsinstanzen, DMS-Subnetzgruppen und DMS-Endpunkte ein
<a name="CHAP_VPC_Endpoints.option.123"></a>

Sie müssen AWS DMS Replizierungsressourcen konfigurieren, nachdem Sie VPC-Endpoints erstellt haben. Sie können Replikationssubnetzgruppen für die Netzwerkisolierung, Replikationsinstanzen oder serverlose Replikationen für die Verarbeitung und Endpunkte für die Verbindung mit Quell- und Zieldatenbanken einrichten, um eine sichere Datenbankmigration innerhalb Ihrer VPC zu ermöglichen.

### AWS DMS Richten Sie eine Replikationsinstanz ein
<a name="CHAP_VPC_Endpoints.option.123.provisioned"></a>

Um eine AWS DMS bereitgestellte Replikationsinstanz zu konfigurieren, müssen Sie DMS-Replikationssubnetzgruppen einrichten.

**Erstellen Sie DMS-Replikationssubnetzgruppen**

1. Melden Sie sich bei der an AWS-Managementkonsole und öffnen Sie die DMS-Konsole.

1. Öffnen Sie im linken Navigationsbereich **Subnetzgruppen und wählen Sie Subnetzgruppe** **erstellen** aus.

1. **Geben Sie **Name und Beschreibung** ein.**

1. Wählen Sie im **VPC-Dropdownmenü** die VPC aus, die in derselben Region ausgeführt wird, in der Sie Ihre DMS-Replikationsinstanz erstellen möchten.

1. **Fügen Sie im Dropdownmenü Subnetze** hinzufügen die privaten Subnetze hinzu, die Sie bei der Erstellung Ihres VPC-Endpunkts angegeben haben. Sie können ein privates Subnetz anhand der Subnetz-ID identifizieren. Beispiel: `vpc-xxxxxx-subnet-private1-us-west-2a`.

1. Klicken Sie auf **Subnetzgruppe erstellen**.

**DMS-Replikationsinstanz erstellen (bereitgestellt)**

1. Navigieren Sie zu, um eine Replikationsinstanz AWS-Managementkonsole zu erstellen. Weitere Informationen finden Sie unter [Eine Replikationsinstanz erstellen](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_ReplicationInstance.Creating.html). Weitere Informationen zur Auswahl, Dimensionierung und Konfiguration von Replikationsinstanzen finden Sie unter [Arbeiten mit einer AWS DMS Replikationsinstanz](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_ReplicationInstance.html).

1. Wählen Sie im Abschnitt **Konnektivität und Sicherheit** die VPC aus der **Virtual Private Cloud (VPC) für IPv4** oder den **Dual-Stack-Modus** aus, in der Sie die AWS DMS Replizierungsinstanz erstellen möchten. Weitere Informationen finden Sie unter [Ein Netzwerk für eine Replikationsinstanz einrichten](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_ReplicationInstance.VPC.html).

1. Wählen Sie im Dropdownmenü **Replikationssubnetzgruppe** die Subnetzgruppe aus, die Sie für Ihre Replikationsinstanz erstellt haben.
**Anmerkung**  
Stellen Sie sicher, dass die für den VPC-Endpunkt angegebenen Subnetze mit den Subnetzen in der Subnetzgruppe der DMS-Replikationsinstanz identisch sind. Sie müssen alle Subnetze aus Ihrer Subnetzgruppe entfernen, die nicht mit dem VPC-Endpunkt verknüpft sind.

1. Deaktivieren Sie das Kontrollkästchen **Öffentlich zugänglich, um den öffentlichen Zugriff** zu deaktivieren.

1. Wählen Sie im Abschnitt **Erweiterte Einstellungen** im Dropdownmenü **VPC-Sicherheitsgruppen** alle VPC-Subnetzgruppen aus, die Ihrer Replizierungsinstanz zugeordnet sind. Diese Gruppen müssen die Subnetzgruppe enthalten, die Subnetze enthält, die Sie bei der Erstellung des VPC-Endpunkts angegeben haben.

   Wenn Sie die Subnetzgruppen nicht angeben, wählt DMS die standardmäßige **Replikationssubnetzgruppe** oder erstellt sie, falls sie nicht vorhanden ist. Weitere Informationen finden Sie unter Konfiguration der [Sicherheitsgruppe für](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Advanced.Endpoints.securitygroup.html). AWS DMS

1. Schließen Sie die Konfiguration der Replikationsinstanz ab und wählen Sie **Replikationsinstanz erstellen** aus.

   Sie müssen warten, bis der Status lautet`Available`.

**AWS DMS Quell- und Zielendpunkte erstellen**

1. Melden Sie sich bei der DMS-Konsole an.

1. Navigieren Sie zu den **AWS DMS Endpunkten** und wählen Sie Endpunkt **erstellen** aus.

1. Erstellen und konfigurieren Sie [Quell](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.html) - und [Zielendpunkte](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.html).

1. In der DMS-Konsole können Sie eine bestehende IAM-Rolle auswählen oder eine neue IAM-Rolle erstellen, um auf Ihre gespeicherten Datenbankanmeldeinformationen im Secrets-Manager zuzugreifen. AWS 

1. Klicken Sie auf **Test ausführen**, um die Endpunktverbindung in Ihrer DMS-Replikationsinstanz zu testen. Ihre Replikationsinstanz sollte `Available` den Status haben, den Test damit auszuführen.

1. Wählen Sie **Endpunkt erstellen** aus.

### Richten Sie eine AWS DMS serverlose Replikation ein
<a name="CHAP_VPC_Endpoints.option.123.serverless"></a>

Um eine AWS DMS serverlose Replikation zu konfigurieren, müssen Sie DMS-Replikations-Subnetzgruppen einrichten.

**Quell- und AWS DMS Zielendpunkte erstellen**

1. Melden Sie sich bei der DMS-Konsole an.

1. Navigieren Sie zu den **AWS DMS Endpunkten** und wählen Sie Endpunkt **erstellen** aus.

1. Erstellen und konfigurieren Sie [Quell](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.html) - und [Zielendpunkte](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.html).

1. In der DMS-Konsole können Sie eine bestehende IAM-Rolle auswählen oder eine neue IAM-Rolle erstellen, um auf Ihre gespeicherten Datenbankanmeldeinformationen im Secrets-Manager zuzugreifen. AWS 
**Anmerkung**  
Bei der AWS DMS serverlosen Replikation können Sie weder die Verbindung für den DMS-Endpunkt testen noch die API verwenden. `TestConnection` Der Verbindungstest wird beim Start der serverlosen Replikation zwischen der DMS-Instanz und Ihren Datenbanken durchgeführt. source/target Weitere Informationen finden Sie unter [AWS DMS Serverlose](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Serverless.Components.html) Komponenten.

1. Wählen Sie **Endpunkt erstellen** aus.

**Erstellen Sie Subnetzgruppen für die DMS-Replikation**

1. Melden Sie sich bei der an AWS-Managementkonsole und öffnen Sie die DMS-Konsole.

1. Öffnen Sie im linken Navigationsbereich **Subnetzgruppen und wählen Sie Subnetzgruppe** **erstellen** aus.

1. **Geben Sie **Name und Beschreibung** ein.**

1. Wählen Sie im **VPC-Dropdownmenü** die VPC aus, die in derselben Region wie Ihre serverlose DMS-Instanz ausgeführt wird.

1. **Fügen Sie im Dropdownmenü Subnetze** hinzufügen die privaten Subnetze hinzu, die Sie bei der Erstellung Ihres VPC-Endpunkts angegeben haben. Sie können ein privates Subnetz anhand der Subnetz-ID identifizieren. Beispiel: `vpc-xxxxxx-subnet-private1-us-west-2a`.

1. Klicken Sie auf **Subnetzgruppe erstellen**.

**Erstellen Sie eine serverlose DMS-Replikation**

1. Navigieren Sie zur DMS-Konsole, um eine serverlose Instanz zu erstellen. Weitere Informationen finden Sie unter [Serverlose Replikation erstellen](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Serverless.Components.html#CHAP_Serverless.create). Weitere Informationen zur Auswahl, Dimensionierung und Konfiguration serverloser Instanzen finden Sie unter [Arbeiten mit AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Serverless.html) serverlosen Instanzen.

1. Wählen Sie im Abschnitt **Konnektivität und Sicherheit** die VPC aus dem Dropdownmenü **Virtual Private Cloud (VPC)** aus, in der Sie die AWS DMS serverlose Instanz erstellen möchten. Weitere Informationen finden Sie unter [Ein Netzwerk für eine Replikationsinstanz einrichten](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_ReplicationInstance.VPC.html).

1. Wählen Sie im Dropdownmenü **Subnetzgruppe** die Subnetzgruppe aus, die Sie für Ihre serverlose Instanz erstellt haben.
**Anmerkung**  
Stellen Sie sicher, dass die für den VPC-Endpunkt angegebenen Subnetze mit den Subnetzen in der Subnetzgruppe der serverlosen DMS-Instanz identisch sind. Sie müssen alle Subnetze aus Ihrer Subnetzgruppe entfernen, die nicht mit Ihrer serverlosen Instanz verknüpft sind.

1. **Wählen Sie Availability Zone aus.**

1. Wählen Sie im Dropdownmenü **Maximale DMS-Kapazitätseinheiten (DCU) die gewünschte DCU-Kapazität** aus.

1. **Wählen Sie Aufgabe erstellen aus.** Dadurch wird eine serverlose DMS-Replikationskonfiguration erstellt, die in der Aufgabenliste mit dem Status angezeigt wird. `Start required`

1. **Um die serverlose Replikation zu starten, wählen Sie Ihre Aufgabe aus und klicken Sie im Menü Aktionen auf **Start**.**

## Wer ist von der Migration auf AWS DMS Versionen 3.4.7 und höher betroffen?
<a name="CHAP_VPC_Endpoints.Users_Impacted"></a>

Sie sind betroffen, wenn Sie einen oder mehrere der zuvor aufgeführten AWS DMS Endpunkte verwenden und diese Endpunkte nicht öffentlich routingfähig sind oder ihnen noch keine VPC-Endpunkte zugeordnet sind.

## Wer ist von der Migration auf Versionen 3.4.7 und höher nicht betroffen? AWS DMS
<a name="CHAP_VPC_Endpoints.Users_Not_Impacted"></a>

In den folgenden Fällen sind Sie nicht betroffen:
+ Sie verwenden keinen oder mehrere der zuvor aufgeführten Endpunkte. AWS DMS 
+ Sie verwenden einen der zuvor aufgelisteten Endpunkte und sie sind öffentlich routbar.
+ Sie verwenden einen der zuvor aufgeführten Endpunkte und ihnen wurden VPC-Endpunkte zugeordnet.

## Vorbereitung einer Migration auf AWS DMS-Versionen 3.4.7 und höher
<a name="CHAP_VPC_Endpoints.User_Mitigation"></a>

Um zu verhindern, dass AWS DMS-Aufgaben fehlschlagen, wenn Sie einen der zuvor beschriebenen Endpoints verwenden, führen Sie vor dem Upgrade von AWS DMS auf Version 3.4.7 oder höher einen der folgenden Schritte durch:
+ Machen Sie die betroffenen DMS-Endpunkte öffentlich routbar AWS . Fügen Sie beispielsweise einer beliebigen VPC, die bereits von Ihrer AWS DMS-Replikationsinstanz verwendet wird, eine Internet Gateway (IGW) -Route hinzu, um all ihre Quell- und Zielendpunkte öffentlich routbar zu machen.
+ Erstellen Sie VPC-Endpunkte für den Zugriff auf alle Quell- und Zielendpunkte, die von AWS DMS verwendet werden, wie im Folgenden beschrieben.

Stellen Sie für alle vorhandenen VPC-Endpoints, die Sie für Ihre AWS DMS-Quell- und Zielendpoints verwenden, sicher, dass sie eine Vertrauensrichtlinie verwenden, die dem XML-Richtliniendokument entspricht. `dms-vpc-role` Weitere Informationen zu diesem XML-Richtliniendokument finden Sie unter [Die IAM-Rollen zur Verwendung mit erstellen AWS DMS](security-iam.md#CHAP_Security.APIRole).

Konfigurieren Sie andernfalls Ihre Replikations-Instances als VPC-Endpunkte, indem Sie der VPC, die diese enthält, einen VPC-Endpunkt hinzufügen. Wenn Sie Ihre Replizierungsinstanzen ohne öffentliche Endpoints konfiguriert haben, werden sie durch Hinzufügen eines öffentlich zugänglichen VPC-Endpoints zur VPC, die Ihre Replizierungsinstanzen enthält, öffentlich zugänglich gemacht. Sie müssen nichts weiter tun, um Ihre Replikations-Instances speziell dem VPC-Endpunkt zuzuordnen.

**Anmerkung**  
Verschiedene Services haben möglicherweise spezifische VPC-Endpunktkonfigurationen. Wenn Sie beispielsweise AWS Secrets Manager verwenden, müssen Sie die Routing-Tabelle in der Regel nicht anpassen. Überprüfen Sie immer die spezifischen Anforderungen für jeden Service.

Weitere Informationen zur Konfiguration von VPC-Endpunkten für eine AWS DMS-Replikationsinstanz finden Sie unter. [Netzwerkkonfigurationen für die Datenbankmigration](CHAP_ReplicationInstance.VPC.md#CHAP_ReplicationInstance.VPC.Configurations) *Weitere Informationen zum Erstellen von VPC-Schnittstellen-Endpunkten für den allgemeinen Zugriff auf AWS Dienste finden Sie im Handbuch unter [Zugreifen auf einen AWS Dienst mithilfe eines Schnittstellen-VPC-Endpunkts](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html).AWS PrivateLink * [Informationen zur regionalen Verfügbarkeit von AWS DMS für VPC-Endpunkte finden Sie in der AWS Regionstabelle.](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/)

# DDL-Anweisungen werden unterstützt von AWS DMS
<a name="CHAP_Introduction.SupportedDDL"></a>

Sie können DDL-Anweisungen (Data Definition Language) auf der Quelledatenbank während des Migrationsprozesses ausführen. Diese Anweisungen werden vom Replikationsserver in der Zieldatenbank repliziert. 

Unterstützte DDL-Anweisungen: 
+ Tabelle erstellen
+ Drop table
+ Rename table
+ Verkürzen einer Tabelle
+ Spalte hinzufügen
+ Drop column
+ Rename column
+ Change column data type

DMS erfasst nicht alle unterstützten DDL-Anweisungen für einige Quell-Engine-Typen. Dazu behandelt DMS DDL-Anweisungen unterschiedlich, wenn sie auf bestimmte Ziel-Engines angewendet werden. Informationen darüber, welche DDL-Anweisungen für eine bestimmte Quelle unterstützt werden und wie sie auf ein Ziel angewendet werden, finden Sie im jeweiligen Dokumentationsthema für diesen Quell- und Zielendpunkt.

Mithilfe von Aufgabeneinstellungen können Sie konfigurieren, wie DMS das DDL-Verhalten bei Change Data Capture (CDC) behandelt. Weitere Informationen finden Sie unter [Aufgabeneinstellungen für den Umgang mit der DDL-Änderungsverarbeitung](CHAP_Tasks.CustomizingTasks.TaskSettings.DDLHandling.md).

## Einschränkungen und Überlegungen
<a name="CHAP_Introduction.SupportedDDL.Limitations"></a>

Schnelle Sequenzen von DDL-Vorgängen in der Quelldatenbank (wie DDL>DML>DDL) können dazu führen, dass das Protokoll falsch analysiert wird, was AWS DMS zu Datenverlust oder unerwartetem Verhalten führt. Um die Datenkonsistenz aufrechtzuerhalten, warten Sie, bis jede Änderung auf das Ziel angewendet wurde, AWS DMS bevor Sie weitere Operationen ausführen.

Bei der Erfassung von Änderungsdaten (Change Data Capture, CDC) können beispielsweise mehrere Operationen zur schnellen Umbenennung von Tabellen in einer Quelltabelle Fehler auslösen. Wenn Sie eine Tabelle umbenennen und sie dann schnell wieder in ihren ursprünglichen Namen umbenennen, wird AWS DMS möglicherweise gemeldet, dass die Tabelle bereits in der Zieldatenbank vorhanden ist.

# Erweiterte Endpunktkonfiguration
<a name="CHAP_Advanced.Endpoints"></a>

In AWS Database Migration Service (AWS DMS) können Sie erweiterte Einstellungen für Ihre Endgeräte konfigurieren, um die Kontrolle darüber zu erhalten, wie sich Quell- und Zielendpunkte während des Migrationsprozesses verhalten. Im Rahmen der erweiterten Konfiguration können Sie AWS DMS VPC-Peering konfigurieren, um eine sichere Kommunikation zwischen ihnen zu ermöglichen VPCs, DMS-Sicherheitsgruppen zur Kontrolle des eingehenden und ausgehenden Datenverkehrs, Netzwerkzugriffskontrolllisten (NACLs) als zusätzliche Sicherheitsebene und VPC-Endpunkte für Secrets Manager konfigurieren. AWS 

Sie können diese Konfigurationen während der Endpunkterstellung festlegen oder später über die AWS DMS Konsole oder API ändern, um die Migrationsprozesse auf der Grundlage spezifischer Anforderungen und Leistungsanforderungen der Datenbank-Engine zu optimieren.

Im Folgenden finden Sie weitere Informationen zur erweiterten Endpunktkonfiguration.

**Topics**
+ [VPC-Peering-Konfiguration für. AWS DMS](CHAP_Advanced.Endpoints.vpc.peering.md)
+ [Konfiguration der Sicherheitsgruppe für AWS DMS](CHAP_Advanced.Endpoints.securitygroup.md)
+ [Konfiguration der Network Access Control List (NACL) für AWS DMS](CHAP_Advanced.Ednpoints.NACL.md)
+ [Konfiguration des VPC-Endpunkts für AWS DMS Secrets Manager](CHAP_Advanced.Endpoints.secretsmanager.md)
+ [Weitere Überlegungen](#CHAP_secretsmanager.additionalconsiderations)

# VPC-Peering-Konfiguration für. AWS DMS
<a name="CHAP_Advanced.Endpoints.vpc.peering"></a>

VPC-Peering ermöglicht private Netzwerkkonnektivität zwischen zwei VPCs, sodass AWS DMS Replikationsinstanzen und Datenbank-Endpunkte über verschiedene Netzwerke hinweg kommunizieren können, VPCs als ob sie sich im selben Netzwerk befinden würden. Dies ist von entscheidender Bedeutung, wenn sich Ihre DMS-Replikationsinstanz in einer VPC befindet, während Quell- oder Zieldatenbanken getrennt existieren, was eine direkte VPCs, sichere Datenmigration ermöglicht, ohne das öffentliche Internet zu durchqueren.

Wenn Sie Amazon RDS verwenden, müssen Sie VPC-Peering zwischen DMS und RDS konfigurieren, wenn sich Ihre Instances an unterschiedlichen Standorten befinden. VPCs

Sie müssen die folgenden Schritte ausführen:

**Erstellen einer VPC-Peering-Verbindung**

1. Navigieren Sie zur [Amazon VPC-Konsole](https://console.aws.amazon.com/vpc/).

1. Wählen Sie im Navigationsbereich unter **Virtual Private** Cloud die Option **Peering Connections** aus.

1. Klicken Sie auf **Peering-Verbindung erstellen**.

1. Konfigurieren Sie die Peering-Verbindungen:
   + Namensschild (optional): Geben Sie einen Namen für die Peering-Verbindung ein (Beispiel:`DMS-RDS-Peering`).

     **VPC-Anforderer**: Wählen Sie die VPC aus, die Ihre DMS-Instanz enthält.
   + **VPC-Akzepter**: Wählen Sie die VPC aus, die Ihre RDS-Instance enthält.
**Anmerkung**  
Wenn die akzeptierende VPC mit einem anderen AWS Konto verknüpft ist, benötigen Sie die Konto-ID und die VPC-ID für dieses Konto.

1. **Klicken Sie auf Peering-Verbindung erstellen.**

**Akzeptieren der VPC-Peering-Verbindung**

1. **Suchen Sie in der Liste der **Peering-Verbindungen** nach der neuen Peering-Verbindung mit dem Status „Ausstehende Annahme“.**

1. **Wählen Sie die entsprechende Peering-Verbindung aus, klicken Sie auf **Aktionen** und wählen Sie Anfrage annehmen aus.**

   **Der Status der Peering-Verbindung ändert sich in Aktiv.**

**Routentabellen werden aktualisiert**

Um den Verkehr zwischen den zu ermöglichen VPCs, müssen Sie die Routentabelle in Ihren beiden aktualisieren VPCs. So aktualisieren Sie die Routentabellen in der DMS-VPC:

1. Identifizieren Sie den CIDR-Block der RDS-VPC:

   1. Navigieren Sie zu Ihrer RDS-VPC VPCs und wählen Sie sie aus.

   1. Kopieren Sie den IPv4 CIDR-Wert auf der **CIDRs**Registerkarte.

1. Identifizieren Sie die relevanten DMS-Routing-Tabellen mithilfe der Ressourcenübersicht:

   1. Navigieren Sie zu Ihrer DMS-VPC VPCs und wählen Sie sie aus.

   1. Klicken Sie auf die Registerkarte **Resource Map** und notieren Sie sich die Routentabellen, die den Subnetzen zugeordnet sind, in denen sich Ihre DMS-Instanz befindet.

1. Aktualisieren Sie alle Routentabellen in der DMS-VPC:

   1. Navigieren Sie zu den Routentabellen in der [Amazon VPC-Konsole](https://console.aws.amazon.com/vpc/).

   1. Wählen Sie die Routentabellen-IDs für die DMS-VPC aus. Sie können sie auf der Registerkarte **Ressourcenübersicht** der VPC öffnen.

   1. Klicken Sie auf **Routen bearbeiten**.

   1. Klicken Sie auf Route hinzufügen und geben Sie die folgenden Informationen ein:
      + **Ziel**: Geben Sie den IPv4 CIDR-Block der RDS-VPC ein (Beispiel:`10.1.0.0/16`).
      + **Ziel**: Wählen Sie die Peering-Konfigurations-ID aus (Beispiel:). `pcx-1234567890abcdef`

   1. Klicken Sie auf **Routen speichern**.

      Ihre VPC-Routen werden für die DMS-VPC gespeichert. Führen Sie dieselben Schritte für Ihre RDS-VPC aus.

**Aktualisieren von Sicherheitsgruppen**

1. Überprüfen Sie die Sicherheitsgruppe der DMS-Instanz:

   1. Sie müssen sicherstellen, dass die Regeln für ausgehenden Datenverkehr Datenverkehr zur RDS-Instance zulassen:
     + **Typ**: Benutzerdefiniertes TCP oder der spezifische Datenbankport (Beispiel: 3306 für MySQL).
     + **Ziel**: Der CIDR-Block der RDS-VPC oder die Sicherheitsgruppe der RDS-Instance.

1. Überprüfen Sie die Sicherheitsgruppe der RDS-Instanz:

   1. Sie müssen sicherstellen, dass die Regeln für eingehenden Datenverkehr von der DMS-Instanz aus zulassen:
     + **Typ**: Der spezifische Datenbankport.
     + Quelle: Der CIDR-Block der DMS-VPC oder die Sicherheitsgruppe der RDS-Instanz.

**Anmerkung**  
Sie müssen außerdem Folgendes sicherstellen:  
**Aktive Peering-Verbindung**: Stellen Sie sicher, dass sich die VPC-Peering-Verbindung im Status **Aktiv** befindet, bevor Sie fortfahren.
**Ressourcenübersicht**: Verwenden Sie die Registerkarte **Ressourcenübersicht** in der [Amazon VPC-Konsolenkonsole](https://console.aws.amazon.com/vpc/), um zu ermitteln, welche Routentabellen aktualisiert werden müssen.
**Keine überlappenden CIDR-Blöcke**: Sie VPCs müssen nicht überlappende CIDR-Blöcke haben.
**Bewährte Sicherheitsmethoden: Beschränken** Sie die Regeln für Sicherheitsgruppen auf die erforderlichen Ports und Quellen.  
Weitere Informationen finden Sie unter [VPC-Peering-Verbindungen](https://docs.aws.amazon.com/vpc/latest/peering/working-with-vpc-peering.html) im *Amazon Virtual Private Cloud Cloud-Benutzerhandbuch*.

# Konfiguration der Sicherheitsgruppe für AWS DMS
<a name="CHAP_Advanced.Endpoints.securitygroup"></a>

Die Sicherheitsgruppe in AWS DMS muss eingehende und ausgehende Verbindungen für Ihre Replikationsinstanzen am entsprechenden Datenbankport zulassen. Wenn Sie Amazon RDS verwenden, müssen Sie die Sicherheitsgruppe zwischen DMS und RDS für Ihre Instances konfigurieren.

Sie müssen die folgenden Schritte ausführen:

**Konfigurieren Sie die Sicherheitsgruppe der RDS-Instanz**

1. Navigieren Sie zur [Amazon VPC-Konsole](https://console.aws.amazon.com/vpc/).

1. Wählen Sie im Navigationsbereich auf der linken Seite unter **Sicherheit** die Option **Sicherheitsgruppen** aus.

1. Wählen Sie die RDS-Sicherheitsgruppe aus, die Ihrer RDS-Instance zugeordnet ist.

1. Bearbeiten Sie die Regeln für eingehenden Datenverkehr:

   1. Klicken Sie auf **Aktionen** und wählen Sie Regeln für **eingehenden Datenverkehr bearbeiten** aus.

   1. Klicken Sie auf **Regel hinzufügen**, um eine neue Regel zu erstellen.

   1. Konfigurieren Sie die Regel wie folgt:
      + **Typ**: Wählen Sie Ihren Datenbanktyp aus (Beispiel: MySQL/Aurora für Port 3306, PostgreSQL für Port 5432).
      + **Protokoll**: Dies wird basierend auf Ihrem Datenbanktyp automatisch aufgefüllt.
      + **Portbereich**: Dieser Wert wird basierend auf Ihrem Datenbanktyp automatisch aufgefüllt.
      + **Quelle**: Wählen Sie **Benutzerdefiniert** und fügen Sie die Sicherheitsgruppen-ID ein, die Ihrer DMS-Instanz zugeordnet ist. Dies ermöglicht den Datenverkehr von jeder Ressource innerhalb dieser Sicherheitsgruppe. Sie können auch den IP-Bereich (CIDR-Block) Ihrer DMS-Instanz angeben.

   1. Klicken Sie auf Regeln **speichern**.

**Konfigurieren Sie die Sicherheitsgruppe der DMS-Replikationsinstanz**

1. Navigieren Sie zur [Amazon VPC-Konsole](https://console.aws.amazon.com/vpc/).

1. Wählen Sie im Navigationsbereich auf der linken Seite unter **Sicherheit** die Option **Sicherheitsgruppen** aus.

1. Suchen Sie in der Liste der **Sicherheitsgruppen nach der Sicherheitsgruppe**, die Ihrer DMS-Replikationsinstanz zugeordnet ist, und wählen Sie sie aus.

1. Bearbeiten Sie die Regeln für ausgehenden Datenverkehr:

   1. Klicken Sie auf **Aktionen** und wählen Sie Regeln für **ausgehenden Datenverkehr bearbeiten** aus.

   1. Klicken Sie auf **Regel hinzufügen**, um eine neue Regel zu erstellen.

   1. Konfigurieren Sie die Regel wie folgt:
      + Typ: Wählen Sie Ihren Datenbanktyp aus (Beispiel: MySQL/Aurora, PostgreSQL).
      + Protokoll: Dies wird basierend auf Ihrem Datenbanktyp automatisch aufgefüllt.
      + Portbereich: Dieser Wert wird basierend auf Ihrem Datenbanktyp automatisch aufgefüllt.
      + Quelle: Wählen Sie **Benutzerdefiniert** und fügen Sie die Sicherheitsgruppen-ID ein, die Ihrer RDS-Instance zugeordnet ist. Dies ermöglicht den Datenverkehr von jeder Ressource innerhalb dieser Sicherheitsgruppe. Sie können auch den IP-Bereich (CIDR-Block) Ihrer RDS-Instance angeben.

   1. Klicken Sie auf **Regeln speichern**.

## Weitere Überlegungen
<a name="CHAP_securitygroup_additional_considerations"></a>

Sie müssen die folgenden zusätzlichen Konfigurationsinformationen berücksichtigen:
+ **Verwenden Sie Sicherheitsgruppenreferenzen**: Der Verweis auf Sicherheitsgruppen in der Quell- oder Zielinstanz ermöglicht eine dynamische Verwaltung und ist sicherer als die Verwendung von IP-Adressen, da dadurch automatisch alle Ressourcen innerhalb der Gruppe eingeschlossen werden.
+ **Datenbank-Ports**: Stellen Sie sicher, dass Sie den richtigen Port für Ihre Datenbank verwenden.
+ **Bewährte Sicherheitsmethoden**: Öffnen Sie nur die erforderlichen Ports, um Sicherheitsrisiken zu minimieren. Außerdem müssen Sie Ihre Sicherheitsgruppenregeln regelmäßig überprüfen, um sicherzustellen, dass sie Ihren Sicherheitsstandards und -anforderungen entsprechen.

# Konfiguration der Network Access Control List (NACL) für AWS DMS
<a name="CHAP_Advanced.Ednpoints.NACL"></a>

Wenn Sie Amazon RDS als Replikationsquelle verwenden, sollten Sie die Network Access Control Lists (NACLs) für Ihr DMS und Ihre RDS-Instance aktualisieren. Stellen Sie sicher, dass NACLs sie den Subnetzen zugeordnet sind, in denen sich diese Instances befinden. Dies ermöglicht eingehenden und ausgehenden Verkehr auf dem spezifischen Datenbankport.

Um die Network Access Control Lists zu aktualisieren, müssen Sie die folgenden Schritte ausführen:

**Anmerkung**  
Wenn sich Ihre DMS- und RDS-Instances im selben Subnetz befinden, müssen Sie nur die NACL dieses Subnetzes aktualisieren.

**Identifizieren Sie die relevanten NACLs**

1. Navigieren Sie zur [Amazon VPC-Konsole](https://console.aws.amazon.com/vpc/).

1. Wählen Sie im Navigationsbereich auf der linken Seite unter **Sicherheit** die Option **Netzwerk ACLs** aus.

1. Wählen Sie die NACLs entsprechenden Subnetze aus, in denen sich Ihre DMS- und RDS-Instances befinden.

**Aktualisieren Sie das NACLs für das DMS-Instanz-Subnetz**

1. Identifizieren Sie die NACL, die dem Subnetz Ihrer DMS-Instanz zugeordnet ist. Dazu können Sie die Subnetze in der [Amazon VPC-Konsole](https://console.aws.amazon.com/vpc/) durchsuchen, das DMS-Subnetz suchen und die zugehörige NACL-ID notieren.

1. Bearbeiten Sie die Regeln für eingehende Nachrichten:

   1. Klicken Sie für die ausgewählte NACL auf die Registerkarte **Inbound Rules**.

   1. Wählen Sie **Regeln für ausgehenden Datenverkehr bearbeiten** aus.

   1. Fügen Sie eine neue Regel hinzu:
      + **Regel Nr.**: Wählen Sie eine eindeutige Zahl (Beispiel: 100).
      + **Typ**: Wählen Sie **Benutzerdefinierte TCP-Regel** aus.
      + **Protocol (Protokoll)**: TCP
      + **Portbereich**: Geben Sie Ihren Datenbankport ein (Beispiel: 3306 für MySQL).
      + **Quelle**: Geben Sie den CIDR-Block des RDS-Subnetzes ein (Beispiel: 10.1.0.0/16).
      + ****Zulassen/Verweigern: Wählen Sie Zulassen aus.****

1. Bearbeiten Sie die Regeln für ausgehende Nachrichten:

   1. Klicken Sie auf die Registerkarte **Ausgehende Regeln** für die ausgewählte NACL.

   1. Klicken Sie auf Regeln für **ausgehenden Datenverkehr bearbeiten**.

   1. Fügen Sie eine neue Regel hinzu:
      + **Regel Nr.**: Verwenden Sie dieselbe Nummer wie in den Regeln für eingehende Nachrichten.
      + **Typ**: Gesamter Verkehr.
      + **Ziel**: 0.0.0.0/0
      + **Zulassen/Verweigern****: Wählen Sie Zulassen aus.**

1. Klicken Sie auf **Änderungen speichern**.

1. Führen Sie dieselben Schritte aus, um das mit dem Subnetz der RDS-Instanz NACLs verknüpfte Subnetz zu aktualisieren.

## Überprüfen Sie die NACL-Regeln
<a name="CHAP_NACL.verify.NACL.Rules"></a>

Sie müssen die folgenden Kriterien für die Einhaltung der NACL-Regeln sicherstellen. :
+ **Reihenfolge der Regeln**: NACLs Verarbeitet Regeln in aufsteigender Reihenfolge auf der Grundlage der Regelnummer. Stellen Sie sicher, dass alle auf "**Zulassen**" festgelegten Regeln niedrigere Regelnummern haben als alle auf "**Verweigern**" festgelegten Regeln, da dies den Verkehr blockieren könnte.
+ **Staatenlosigkeit:** NACLs sind staatenlos. Sie müssen sowohl eingehenden als auch ausgehenden Verkehr ausdrücklich zulassen.
+ **CIDR-Blöcke**: Sie müssen sicherstellen, dass die von Ihnen verwendeten CIDR-Blöcke die Subnetze Ihrer DMS- und RDS-Instances genau wiedergeben.

# Konfiguration des VPC-Endpunkts für AWS DMS Secrets Manager
<a name="CHAP_Advanced.Endpoints.secretsmanager"></a>

Sie müssen einen VPC-Endpunkt erstellen, um von einer Replikationsinstanz in einem privaten Subnetz auf den AWS Secrets Manager zuzugreifen. Dadurch kann die Replikationsinstanz direkt über das private Netzwerk auf den Secrets Manager zugreifen, ohne Datenverkehr über das öffentliche Internet zu senden.

Zur Konfiguration müssen Sie die folgenden Schritte ausführen:

**Erstellen Sie eine Sicherheitsgruppe für den VPC-Endpunkt.**

1. Navigieren Sie zur [Amazon VPC-Konsole](https://console.aws.amazon.com/vpc/).

1. Wählen Sie im Navigationsbereich auf der linken Seite **Sicherheitsgruppen** und anschließend **Sicherheitsgruppe erstellen** aus.

1. Konfigurieren Sie die Details der Sicherheitsgruppe:
   + **Name der Sicherheitsgruppe**: Beispiel: `SecretsManagerEndpointSG`
   + **Beschreibung**: Geben Sie eine entsprechende Beschreibung ein. (Beispiel: Sicherheitsgruppe für Secrets Manager VPC-Endpunkt).
   + **VPC**: Wählen Sie die VPC aus, in der sich Ihre Replizierungsinstanz und Ihre Endpoints befinden.

1. Klicken Sie auf **Regel hinzufügen**, um Regeln für eingehenden Datenverkehr festzulegen und Folgendes zu konfigurieren:
   + Typ: HTTPS (da der Secrets Manager HTTPS auf Port 443 verwendet).
   + Quelle: Wählen Sie **Benutzerdefiniert** und geben Sie die Sicherheitsgruppen-ID Ihrer Replikationsinstanz ein. Dadurch wird sichergestellt, dass jede Instance, die dieser Sicherheitsgruppe zugeordnet ist, auf den VPC-Endpunkt zugreifen kann.

1. Überprüfen Sie die Änderungen und klicken Sie auf **Sicherheitsgruppe erstellen**.

**Erstellen Sie einen VPC-Endpunkt für Secrets Manager**
**Anmerkung**  
Erstellen Sie einen VPC-Schnittstellen-Endpunkt, wie im [Dokumentationsthema Creating an Interface Endpoint](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html#create-interface-endpoint-aws) im *Amazon Virtual Private Cloud Cloud-Benutzerhandbuch* beschrieben. Achten Sie bei der Durchführung dieses Verfahrens auf Folgendes:  
Als **Servicekategorie** sollten Sie **AWS Dienste auswählen.**
Suchen Sie nach **dem Dienst** Secretes Manager `seretsmanager` und wählen Sie ihn aus.

1. Wählen Sie **VPC und Subnetze** aus und konfigurieren Sie Folgendes:
   + **VPC**: Stellen Sie sicher, dass es sich um dieselbe VPC wie Ihre Replikationsinstanz handelt.
   + **Subnetze**: Wählen Sie die Subnetze aus, in denen sich Ihre Replikationsinstanz befindet.

1. Stellen Sie unter **Zusätzliche Einstellungen** sicher, dass die Option „**DNS-Namen aktivieren**“ standardmäßig für die Schnittstellenendpunkte aktiviert ist

1. Wählen Sie unter **Sicherheitsgruppe** den entsprechenden Sicherheitsgruppennamen aus. Beispiel: `SecretsManagerEndpointSG` wie zuvor erstellt).

1. Überprüfen Sie alle Einstellungen und klicken Sie auf **Endpunkt erstellen**.

**Rufen Sie den DNS-Namen des VPC-Endpunkts ab**

1. Greifen Sie auf die VPC-Endpunktdetails zu:

   1. Navigieren Sie zur [Amazon VPC-Konsole](https://console.aws.amazon.com/vpc/) und wählen Sie **Endpoints** aus.

   1. Wählen Sie den entsprechenden Endpunkt aus, den Sie erstellt haben.

1. Kopieren Sie den DNS-Namen:

   1. Navigieren Sie auf der Registerkarte **Details** zum Abschnitt **DNS-Namen**.

   1. Kopieren Sie den ersten aufgelisteten DNS-Namen. (Beispiel: `vpce-0abc123def456789g-secretsmanager.us-east-1.vpce.amazonaws.com`). Dies ist der regionale DNS-Name.

**Aktualisieren Sie Ihren DMS-Endpunkt**

1. Navigieren Sie zur [AWS DMS](https://console.aws.amazon.com/dms/v2) Konsole.

1. Ändern Sie den DMS-Endpunkt:

   1. Wählen Sie im Navigationsbereich auf der linken Seite **Endpoints** aus.

   1. Wählen Sie den entsprechenden Endpunkt aus, den Sie konfigurieren möchten.

   1. Klicken Sie auf **Aktionen** und wählen Sie **Ändern** aus.

1. Konfigurieren Sie die Endpunkteinstellungen:

   1. Navigieren Sie zu **Endpunkteinstellungen** und aktivieren Sie das Kontrollkästchen **Verbindungsattribute für Endgeräte verwenden**.

   1. Fügen Sie im Feld **Verbindungsattribute** Folgendes hinzu:`secretsManagerEndpointOverride=<copied DNS name>`.
**Anmerkung**  
Wenn Sie mehrere Verbindungsattribute haben, können Sie sie durch ein Semikolon „;“ trennen. Beispiel: `datePartitionEnabled=false;secretsManagerEndpointOverride=vpce-0abc123def456789g-secretsmanager.us-east-1.vpce.amazonaws.com`

1. Klicken Sie auf **Endpunkt ändern**, um Ihre Änderungen zu speichern.

## Weitere Überlegungen
<a name="CHAP_secretsmanager.additionalconsiderations"></a>

Sie müssen die folgenden zusätzlichen Konfigurationsinformationen berücksichtigen:

**Sicherheitsgruppe für die Replikationsinstanz:**
+ Stellen Sie sicher, dass die Ihrer Replikationsinstanz zugeordnete Sicherheitsgruppe ausgehenden Datenverkehr zum VPC-Endpunkt auf Port 443 (HTTPS) zulässt.

**VPC-DNS-Einstellungen:**
+ Vergewissern Sie sich, dass **DNS-Auflösung** und **DNS-Hotnames** in Ihrer VPC aktiviert sind. Dadurch können Ihre Instances die DNS-Namen der VPC-Endpunkte auflösen. **Sie können dies bestätigen, indem Sie VPCs in der [Amazon VPC-Konsole zu navigieren und Ihre VPC](https://console.aws.amazon.com/vpc/) auswählen, um zu überprüfen, ob die **DNS-Auflösung und die **DNS-Hotnames**** auf „Ja“ gesetzt sind.**

**Konnektivität testen:**
+ Von Ihrer Replikationsinstanz aus können Sie eine DNS-Suche durchführen, um sicherzustellen, dass sie den VPC-Endpunkt auflöst:. `nslookup secretsmanager.<region>amazonaws.com` Es muss die mit Ihrem VPC-Endpunkt verknüpfte IP-Adresse zurückgeben