Datenkonsistenz mit Datenverifizierungs-Deployments validieren

Hier erfahren Sie, wie Sie die Datenkonsistenz zwischen Quell- und Zieldatenbanken mit OCI GoldenGate validieren.

Bevor Sie beginnen

Um diesen Schnellstart erfolgreich abzuschließen, benötigen Sie:

Aufgabe 1: Umgebung einrichten

  1. Datenreplikations-Deployment erstellen.

  2. Erstellen Sie eine Oracle Autonomous AI Transaction Processing-(ATP-)Quellverbindung.

  3. Erstellen Sie eine Autonomous AI Lakehouse-(ALK-)Zielverbindung.

  4. Verbindung zum Deployment zuweisen.

  5. Mit dem SQL-Tool können Sie zusätzliches Logging aktivieren:

    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA
  6. Führen Sie die folgende Abfrage im SQL-Tool aus, um sicherzustellen, dass support_mode=FULL für alle Tabellen in der Quelldatenbank gilt:

    select * from DBA_GOLDENGATE_SUPPORT_MODE where owner = 'SRC_OCIGGLL';

Aufgabe 2: Integrierten Extract erstellen

Ein integrierter Extract erfasst fortlaufende Änderungen an der Quelldatenbank.

  1. Wählen Sie auf der Seite "Deployment-Details" die Option Konsole starten.

  2. Geben Sie bei Bedarf oggadmin als Benutzernamen und Kennwort ein, das Sie beim Erstellen des Deployments verwendet haben, und wählen Sie Anmelden aus.

  3. Transaktionsdaten und Checkpoint-Tabelle hinzufügen:

    1. Klicken Sie auf das Navigationsmenü, und wählen Sie DB-Verbindungen aus.

    2. Wählen Sie Verbindung zu Datenbank-SourceDB herstellen aus.

    3. Wählen Sie im Navigationsmenü Trandata und dann Trandata hinzufügen (Plussymbol).

    4. Geben Sie unter Schemaname SRC_OCIGGLL ein, und wählen Sie Weiterleiten aus.

    5. Geben Sie zur Prüfung SRC_OCIGGLL in das Suchfeld ein, und wählen Sie Suchen aus.

    6. Rufen Sie das Navigationsmenü auf, und wählen Sie DB-Verbindungen aus.

    7. Wählen Sie Verbindung zur Datenbank-TargetDB herstellen aus.

    8. Wählen Sie im Navigationsmenü Checkpoint, Checkpoint hinzufügen (Plussymbol) aus.

    9. Geben Sie unter Checkpoint-Tabelle "SRCMIRROR_OCIGGLL"."CHECKTABLE" ein, und wählen Sie Weiterleiten aus.

  4. Fügen Sie einen Extract hinzu.

    Hinweis: Weitere Informationen zu Parametern, mit denen Sie Quelltabellen angeben können, finden Sie unter Zusätzliche Exportparameteroptionen.

    Hängen Sie die folgenden Zeilen auf der Seite "Extract-Parameter" unter EXTTRAIL <trail-name> an:

    -- Capture DDL operations for listed schema tables
    ddl include mapped
    
    -- Add step-by-step history of to the report file. Useful when troubleshooting.
    ddloptions report
    
    -- Write capture stats per table to the report file daily.
    report at 00:01
    
    -- Rollover the report file weekly. Useful when IE runs
    -- without being stopped/started for long periods of time to
    -- keep the report files from becoming too large.
    reportrollover at 00:01 on Sunday
    
    -- Report total operations captured, and operations per second
    -- every 10 minutes.
    reportcount every 10 minutes, rate
    
    -- Table list for capture
    table SRC_OCIGGLL.*;
  5. Prüfen Sie, ob Transaktionen mit langer Ausführungszeit vorliegen. Führen Sie das folgende Skript in der Quelldatenbank aus:

    select start_scn, start_time from gv$transaction where start_scn < (select max(start_scn) from dba_capture);

    Wenn die Abfrage Zeilen zurückgibt, müssen Sie die SCN der Transaktion suchen und die Transaktion anschließend festschreiben oder zurücksetzen.

Aufgabe 3: Daten mit Oracle Data Pump (ExpDP) exportieren

Mit Oracle Data Pump (ExpDP) können Sie Daten aus der Quelldatenbank in Oracle Object Storage exportieren.

  1. Erstellen Sie einen Oracle Object Storage-Bucket.

    Notieren Sie sich den Namespace und den Bucket-Namen für die Export- und Importskripte.

  2. Erstellen Sie ein Authentifizierungstoken, kopieren Sie die Tokenzeichenfolge, und fügen Sie sie zur späteren Verwendung in einen Texteditor ein.

  3. Erstellen Sie Zugangsdaten in der Quelldatenbank, und ersetzen Sie <user-name> und <token> durch den Benutzernamen Ihres Oracle Cloud-Accounts und die Tokenzeichenfolge, die Sie im vorherigen Schritt erstellt haben:

    BEGIN
      DBMS_CLOUD.CREATE_CREDENTIAL(
        credential_name => 'ADB_OBJECTSTORE',
        username => '<user-name>',
        password => '<token>'
      );
    END;
  4. Führen Sie das folgende Skript in der Quelldatenbank aus, um den Job "Daten exportieren" zu erstellen. Stellen Sie sicher, dass Sie <region>, <namespace> und <bucket-name> in der Objektspeicher-URI entsprechend ersetzen. SRC_OCIGGLL.dmp ist eine Datei, die bei der Ausführung dieses Skripts erstellt wird.

    DECLARE
    ind NUMBER;              -- Loop index
    h1 NUMBER;               -- Data Pump job handle
    percent_done NUMBER;     -- Percentage of job complete
    job_state VARCHAR2(30);  -- To keep track of job state
    le ku$_LogEntry;         -- For WIP and error messages
    js ku$_JobStatus;        -- The job status from get_status
    jd ku$_JobDesc;          -- The job description from get_status
    sts ku$_Status;          -- The status object returned by get_status
    
    BEGIN
    
    -- Create a (user-named) Data Pump job to do a schema export.
    h1 := DBMS_DATAPUMP.OPEN('EXPORT','SCHEMA',NULL,'SRC_OCIGGLL_EXPORT','LATEST');
    
    -- Specify a single dump file for the job (using the handle just returned)
    -- and a directory object, which must already be defined and accessible
    -- to the user running this procedure.
    DBMS_DATAPUMP.ADD_FILE(h1,'https://objectstorage.<region>.oraclecloud.com/n/<namespace>/b/<bucket-name>/o/SRC_OCIGGLL.dmp','ADB_OBJECTSTORE','100MB',DBMS_DATAPUMP.KU$_FILE_TYPE_URIDUMP_FILE,1);
    
    -- A metadata filter is used to specify the schema that will be exported.
    DBMS_DATAPUMP.METADATA_FILTER(h1,'SCHEMA_EXPR','IN (''SRC_OCIGGLL'')');
    
    -- Start the job. An exception will be generated if something is not set up properly.
    DBMS_DATAPUMP.START_JOB(h1);
    
    -- The export job should now be running. In the following loop, the job
    -- is monitored until it completes. In the meantime, progress information is displayed.
    percent_done := 0;
    job_state := 'UNDEFINED';
    while (job_state != 'COMPLETED') and (job_state != 'STOPPED') loop
      dbms_datapump.get_status(h1,dbms_datapump.ku$_status_job_error + dbms_datapump.ku$_status_job_status + dbms_datapump.ku$_status_wip,-1,job_state,sts);
      js := sts.job_status;
    
    -- If the percentage done changed, display the new value.
    if js.percent_done != percent_done
    then
      dbms_output.put_line('*** Job percent done = ' \|\| to_char(js.percent_done));
      percent_done := js.percent_done;
    end if;
    
    -- If any work-in-progress (WIP) or error messages were received for the job, display them.
    if (bitand(sts.mask,dbms_datapump.ku$_status_wip) != 0)
    then
      le := sts.wip;
    else
      if (bitand(sts.mask,dbms_datapump.ku$_status_job_error) != 0)
      then
        le := sts.error;
      else
        le := null;
      end if;
    end if;
    if le is not null
    then
      ind := le.FIRST;
      while ind is not null loop
        dbms_output.put_line(le(ind).LogText);
        ind := le.NEXT(ind);
      end loop;
    end if;
      end loop;
    
      -- Indicate that the job finished and detach from it.
      dbms_output.put_line('Job has completed');
      dbms_output.put_line('Final job state = ' \|\| job_state);
      dbms_datapump.detach(h1);
    END;

Aufgabe 4: Zieldatenbank mit Oracle Data Pump (ImpDP) instanziieren

Mit Oracle Data Pump (ImpDP) können Sie Daten aus der Datei SRC_OCIGGLL.dmp, die aus der Quelldatenbank exportiert wurde, in die Zieldatenbank importieren.

  1. Erstellen Sie Zugangsdaten in der Zieldatenbank für den Zugriff auf Oracle Object Storage (mit denselben Informationen wie im vorherigen Abschnitt).

    BEGIN
      DBMS_CLOUD.CREATE_CREDENTIAL(
        credential_name => 'ADB_OBJECTSTORE',
        username => '<user-name>',
        password => '<token>'
      );
    END;
  2. Führen Sie das folgende Skript in der Zieldatenbank aus, um Daten aus SRC_OCIGGLL.dmp zu importieren. Stellen Sie sicher, dass Sie <region>, <namespace> und <bucket-name> in der Objektspeicher-URI entsprechend ersetzen:

    DECLARE
    ind NUMBER;  -- Loop index
    h1 NUMBER;  -- Data Pump job handle
    percent_done NUMBER;  -- Percentage of job complete
    job_state VARCHAR2(30);  -- To keep track of job state
    le ku$_LogEntry;  -- For WIP and error messages
    js ku$_JobStatus;  -- The job status from get_status
    jd ku$_JobDesc;  -- The job description from get_status
    sts ku$_Status;  -- The status object returned by get_status
    BEGIN
    
    -- Create a (user-named) Data Pump job to do a "full" import (everything
    
    -- in the dump file without filtering).
    h1 := DBMS_DATAPUMP.OPEN('IMPORT','FULL',NULL,'SRCMIRROR_OCIGGLL_IMPORT');
    
    -- Specify the single dump file for the job (using the handle just returned)
    -- and directory object, which must already be defined and accessible
    -- to the user running this procedure. This is the dump file created by
    -- the export operation in the first example.
    
    DBMS_DATAPUMP.ADD_FILE(h1,'https://objectstorage.<region>.oraclecloud.com/n/<namespace>/b/<bucket-name>/o/SRC_OCIGGLL.dmp','ADB_OBJECTSTORE',null,DBMS_DATAPUMP.KU$_FILE_TYPE_URIDUMP_FILE);
    
    -- A metadata remap will map all schema objects from SRC_OCIGGLL to SRCMIRROR_OCIGGLL.
    DBMS_DATAPUMP.METADATA_REMAP(h1,'REMAP_SCHEMA','SRC_OCIGGLL','SRCMIRROR_OCIGGLL');
    
    -- If a table already exists in the destination schema, skip it (leave
    -- the preexisting table alone). This is the default, but it does not hurt
    -- to specify it explicitly.
    DBMS_DATAPUMP.SET_PARAMETER(h1,'TABLE_EXISTS_ACTION','SKIP');
    
    -- Start the job. An exception is returned if something is not set up properly.
    DBMS_DATAPUMP.START_JOB(h1);
    
    -- The import job should now be running. In the following loop, the job is
    
    -- monitored until it completes. In the meantime, progress information is
    
    -- displayed. Note: this is identical to the export example.
    percent_done := 0;
    job_state := 'UNDEFINED';
    while (job_state != 'COMPLETED') and (job_state != 'STOPPED') loop
      dbms_datapump.get_status(h1,
        dbms_datapump.ku$_status_job_error +
        dbms_datapump.ku$_status_job_status +
        dbms_datapump.ku$_status_wip,-1,job_state,sts);
        js := sts.job_status;
    
      -- If the percentage done changed, display the new value.
      if js.percent_done != percent_done
      then
        dbms_output.put_line('*** Job percent done = ' \|\|
        to_char(js.percent_done));
        percent_done := js.percent_done;
      end if;
    
      -- If any work-in-progress (WIP) or Error messages were received for the job, display them.
      if (bitand(sts.mask,dbms_datapump.ku$_status_wip) != 0)
      then
        le := sts.wip;
      else
        if (bitand(sts.mask,dbms_datapump.ku$_status_job_error) != 0)
        then
          le := sts.error;
        else
          le := null;
        end if;
      end if;
      if le is not null
      then
        ind := le.FIRST;
        while ind is not null loop
          dbms_output.put_line(le(ind).LogText);
          ind := le.NEXT(ind);
        end loop;
      end if;
    end loop;
    
    -- Indicate that the job finished and gracefully detach from it.
    dbms_output.put_line('Job has completed');
    dbms_output.put_line('Final job state = ' \|\| job_state);
    dbms_datapump.detach(h1);
    END;

Aufgabe 5: Nicht integriertes Replicat hinzufügen und ausführen

  1. Fügen Sie ein Replicat hinzu, und führen Sie es aus.

    Ersetzen Sie auf der Seite Parameterdatei MAP *.*, TARGET *.*; durch das folgende Skript:

    -- Capture DDL operations for listed schema tables
    ddl include mapped
    
    -- Add step-by-step history of ddl operations captured
    -- to the report file. Very useful when troubleshooting.
    ddloptions report
    
    -- Write capture stats per table to the report file daily.
    report at 00:01
    
    -- Rollover the report file weekly. Useful when PR runs
    -- without being stopped/started for long periods of time to
    -- keep the report files from becoming too large.
    reportrollover at 00:01 on Sunday
    
    -- Report total operations captured, and operations per second
    -- every 10 minutes.
    reportcount every 10 minutes, rate
    
    -- Table map list for apply
    DBOPTIONS ENABLE_INSTANTIATION_FILTERING;
    MAP SRC_OCIGGLL.*, TARGET SRCMIRROR_OCIGGLL.*;

    Hinweis: DBOPTIONS ENABLE_INSTATIATION_FILTERING ermöglicht die CSN-Filterung in Tabellen, die mit Oracle Data Pump importiert wurden. Weitere Informationen finden Sie in der Referenz zu DBOPTIONS.

  2. Inserts in die Quelldatenbank ausführen:

    1. Kehren Sie zur Oracle Cloud-Konsole zurück, und navigieren Sie über das Navigationsmenü zurück zu Oracle AI Database, Autonomous AI Transaction Processing und dann zu SourceDB.

    2. Wählen Sie auf der Seite "SourceDB Details" die Option Database actions aus, und wählen Sie SQL aus.

    3. Geben Sie die folgenden Einfügevorgänge ein, und wählen Sie Skript ausführen aus:

      Insert into SRC_OCIGGLL.SRC_CITY (CITY_ID,CITY,REGION_ID,POPULATION) values (1000,'Houston',20,743113);
      Insert into SRC_OCIGGLL.SRC_CITY (CITY_ID,CITY,REGION_ID,POPULATION) values (1001,'Dallas',20,822416);
      Insert into SRC_OCIGGLL.SRC_CITY (CITY_ID,CITY,REGION_ID,POPULATION) values (1002,'San Francisco',21,157574);
      Insert into SRC_OCIGGLL.SRC_CITY (CITY_ID,CITY,REGION_ID,POPULATION) values (1003,'Los Angeles',21,743878);
      Insert into SRC_OCIGGLL.SRC_CITY (CITY_ID,CITY,REGION_ID,POPULATION) values (1004,'San Diego',21,840689);
      Insert into SRC_OCIGGLL.SRC_CITY (CITY_ID,CITY,REGION_ID,POPULATION) values (1005,'Chicago',23,616472);
      Insert into SRC_OCIGGLL.SRC_CITY (CITY_ID,CITY,REGION_ID,POPULATION) values (1006,'Memphis',23,580075);
      Insert into SRC_OCIGGLL.SRC_CITY (CITY_ID,CITY,REGION_ID,POPULATION) values (1007,'New York City',22,124434);
      Insert into SRC_OCIGGLL.SRC_CITY (CITY_ID,CITY,REGION_ID,POPULATION) values (1008,'Boston',22,275581);
      Insert into SRC_OCIGGLL.SRC_CITY (CITY_ID,CITY,REGION_ID,POPULATION) values (1009,'Washington D.C.',22,688002);
    4. Wählen Sie in der OCI GoldenGate-Deployment-Konsole den Extraktnamen (UAEXT) aus, und wählen Sie Statistiken aus. Prüfen Sie, ob SRC_OCIGGLL.SRC_CITY mit 10 Einfügungen aufgeführt ist.

    5. Kehren Sie zum Bildschirm "Überblick" zurück, wählen Sie Replikatname (REP) und dann Statistiken aus. Prüfen Sie, ob SRCMIRROR_OCIGGLL.SRC_CITY mit 10 Einfügungen aufgeführt ist

Aufgabe 6: Datenverifizierungsressourcen erstellen

  1. Erstellen Sie ein Datenverifizierungsserver-Deployment.

  2. Erstellen Sie 2 Datenverifizierungs-Agent-Deployments.

  3. Erstellen Sie eine GoldenGate-Verbindung.

  4. Zuweisen der in Aufgabe 1 erstellten ATP-Verbindung zu einem Agent-Deployment.

  5. Weisen Sie die in Aufgabe 1 erstellte ALK-Verbindung dem anderen Agent-Deployment zu.

  6. Weisen Sie die GoldenGate-Verbindung dem Server-Deployment zu.

  7. Nachdem die Deployments aktiviert wurden, prüfen Sie die Datenverifizierungsumgebungen:

    1. Wählen Sie auf der Detailseite des Server-Deployments Konsole starten aus.

    2. Wählen Sie im Navigationsmenü Verbindungen aus.

    3. Bestätigen Sie auf der Seite "Verbindungen", dass Ihre Agents in der Liste angezeigt werden und deren Status "Aktiv" lautet.

Aufgabe 7: Gruppe erstellen und Paar vergleichen

Erstellen Sie im Server-Deployment eine Vergleichskonfiguration:

  1. Wählen Sie im Navigationsmenü die Option Gruppen und Vergleichspaare.

  2. Wählen Sie auf der Seite "Gruppen und Vergleichspaare" die Option Erstellen.

  3. Füllen Sie auf der Seite Konfiguration "Gruppe erstellen" und "Paar vergleichen" die Felder wie folgt aus, und wählen Sie Weiter aus:

    1. Geben Sie einen Namen ein.

    2. Wählen Sie die Quelle und Zielverbindungen in den entsprechenden Dropdown-Listen aus.

    3. Wählen Sie die Quelle und Zielkataloge in den entsprechenden Dropdown-Listen aus.

    4. Vergleichspaar hinzufügen

  4. Prüfen Sie die Zuordnungsregeln, und wählen Sie Weiter aus.

  5. Prüfen Sie die Seite Zuordnung, und wählen Sie Vergleichspaare generieren aus.

  6. Speichern Sie die Gruppe.

Aufgabe 8: Vergleichsjob erstellen und ausführen

  1. Wählen Sie im Navigationsmenü Jobs aus.

  2. Wählen Sie auf der Seite "Jobs" die Option Erstellen.

  3. Füllen Sie auf der Seite "Job erstellen" die Felder wie folgt aus, und wählen Sie Weiterleiten aus:

    1. Geben Sie einen Namen für den Job an.

    2. Wählen Sie Gruppe hinzufügen, wählen Sie die in Aufgabe 7 erstellte Gruppe aus, und wählen Sie Hinzufügen und speichern aus.

  4. Wählen Sie im Navigationsmenü die Option Job ausführen.

  5. Wählen Sie auf der Seite "Job ausführen" den in Schritt 3 erstellten Job und das Standardprofil aus, und wählen Sie Job ausführen aus.

Aufgabe 9: Ergebnisse analysieren

  1. Wählen Sie im Navigationsmenü die Option Jobs überwachen.

  2. Wählen Sie Abgeschlossene Jobs aus.

  3. Wählen Sie den Job aus, um die zugehörigen Details anzuzeigen, und prüfen Sie Folgendes:

    • Keine Zeilen sind als Nicht synchron markiert.
    • Es wurden keine fehlenden oder zusätzlichen Zeilen gemeldet

In dieser Phase werden die Quell- und Zieldatenbank synchronisiert.

Aufgabe 10: Dateninkonsistenzen einführen

In dieser Aufgabe führen Sie mit der Tabelle SRCMIRROR_OCIGGLL.SRC_CITY kontrollierte Inkonsistenzen in die Zieldatenbank ein.

  1. Prüfen Sie vorhandene Daten auf dem Ziel. Geben Sie im ALK-SQL-Zielarbeitsblatt Folgendes ein:

    SELECT CITY_ID, CITY, REGION_ID, POPULATION
    FROM SRCMIRROR_OCIGGLL.SRC_CITY
    WHERE CITY_ID BETWEEN 1000 AND 1009
    ORDER BY CITY_ID;
  2. Löschen Sie das Arbeitsblatt, und geben Sie dann Folgendes ein, um eine Datenunstimmigkeit einzuführen:

    UPDATE SRCMIRROR_OCIGGLL.SRC_CITY
    SET POPULATION = 999999
    WHERE CITY_ID = 1003;
    
    COMMIT;
  3. Löschen Sie das Arbeitsblatt, und geben Sie Folgendes ein, um eine fehlende Zeile einzuführen:

    DELETE FROM SRCMIRROR_OCIGGLL.SRC_CITY
    WHERE CITY_ID = 1005;
    
    COMMIT;
  4. Löschen Sie das Arbeitsblatt, und geben Sie Folgendes ein, um eine zusätzliche Zeile einzuführen:

    INSERT INTO SRCMIRROR_OCIGGLL.SRC_CITY (CITY_ID, CITY, REGION_ID, POPULATION)
    VALUES (1010, 'Test City', 99, 123456);
    
    COMMIT;
  5. Löschen Sie das Arbeitsblatt, und geben Sie Folgendes ein, um eingeführte Probleme zu validieren:

    SELECT CITY_ID, CITY, REGION_ID, POPULATION
    FROM SRCMIRROR_OCIGGLL.SRC_CITY
    WHERE CITY_ID BETWEEN 1000 AND 1010
    ORDER BY CITY_ID;

    Beachten Sie Folgendes:

    • CITY_ID 1003 hat falsche Population
    • CITY_ID 1005 fehlt
    • CITY_ID 1010 ist nur im Ziel enthalten

Aufgabe 11: Datenabweichungen mit Veridata beheben

Nachdem Sie nun einige Datenabweichungen zwischen Quelle und Ziel haben, können Sie den Vergleich erneut ausführen und reparieren.

  1. Wählen Sie im Navigationsmenü der Server-Deployment-Konsole die Option Jobs ausführen aus.

  2. Wählen Sie den Vergleichsjob aus, und wählen Sie Job ausführen aus.

  3. Wählen Sie im Navigationsmenü die Option Jobs überwachen.

  4. Wählen Sie Ihren Vergleichsjob aus, um die zugehörigen Details anzuzeigen. Bestätigen Sie Folgendes:

    • Zeilen sind als nicht synchron markiert
    • Unterschiede sind:
      • Fehlende Zeilen
      • Zusätzliche Zeilen
      • Spaltenunstimmigkeiten
  5. Suchen Sie auf der Seite "Jobdetails" nach SRC_CITY=SRC_CITY, und wählen Sie dann den Namen des Vergleichspaares aus, um die zugehörigen Details anzuzeigen.

  6. Wählen Sie in den Details zum Vergleichspaar die Option Nicht synchronisierte Zeilen aus, und prüfen Sie die Abweichungen.

  7. Wählen Sie Reparieren.

  8. Wählen Sie im Dialogfeld Reparaturjob die Option Alle nicht synchronisierten Zeilen reparieren und dann Weiterleiten aus.

    Dadurch wird ein Reparaturauftrag erstellt, der das Ziel mit der Quelle synchronisiert.

  9. Wählen Sie im Navigationsmenü die Option Reparaturauftrag überwachen. Suchen Sie den Reparaturauftrag, und überwachen Sie ihn, bis er abgeschlossen ist.

  10. Nachdem der Reparaturauftrag abgeschlossen ist, wählen Sie ihn aus, um die zugehörigen Details anzuzeigen. Bestätigen Sie Folgendes:

    • Zeilen wurden nach Bedarf aktualisiert, eingefügt oder gelöscht.
    • Es sind keine Fehler aufgetreten.
  11. Führen Sie den Vergleich erneut aus.

    1. Wählen Sie im Navigationsmenü Jobs aus.

    2. Wählen Sie den Vergleichsjob aus, und wählen Sie Job ausführen aus.

    3. Navigieren Sie zurück zu Jobs überwachen, und warten Sie, bis der Job abgeschlossen ist.

    4. Zeigen Sie nach Abschluss des Jobs die zugehörigen Details an, um Folgendes zu bestätigen:

      • Keine Zeilen als "Nicht synchron" markiert
      • Keine fehlenden Zeilen
      • Keine zusätzlichen Zeilen
      • Keine Spaltenunstimmigkeiten

Die Quell- und Zieldatensets sind jetzt vollständig synchronisiert.