Dieses Kapitel enthält allgemeine Informationen zum Betrieb der Programme Capture und Apply. Näheres zum Betrieb dieser Programme (z. B. zum Starten, Stoppen oder Terminieren) in den einzelnen Betriebssystemumgebungen können Sie in Teil 3, Betrieb, nachlesen. Dieses Kapitel enthält außerdem Informationen zur regelmäßigen Datenbankpflege, zum Überwachen des Replikationsprozesses, zum Vorgehen bei Abstimmungsverlusten und zum Modifizieren der Replikationskonfiguration.
Dieser Abschnitt enthält Hinweise zur Vorbereitung des Starts des Capture-Programms, zur Ausführung von Warm- und Kaltstarts des Capture-Programms und zum Beenden des Capture-Programms durch ein Ereignis.
Vor dem Starten des Capture-Programms müssen folgende Aufgaben nach der Installation ausgeführt werden:
Beim Definieren von Replikationsquellen und Subskriptionen werden außerdem die folgenden Steuertabellen auf dem Steuerungs-Server erstellt:
Sie können diese Steuertabellen auch manuell durch Ausführen der Datei DPCNTL.* vom Fenster "SQL-Dateien ausführen" erstellen.
Beim (erneuten) Starten des Capture-Programms können Sie eines der folgenden Schlüsselwörter verwenden: COLD, WARM oder WARMNS. Wenn Sie das Capture-Programm zum ersten Mal starten, geben Sie COLD oder WARM an, um einen Kaltstart des Capture-Programms auszuführen. Um das Capture-Programm nach einem Programmabschluss oder nach einer Störung erneut zu starten, geben Sie WARM oder WARMNS an, um einen Warmstart des Capture-Programms auszuführen. In den folgenden Abschnitten werden Kalt- und Warmstarts beschrieben. Im Einzelnen wird erläutert, wie sich das Capture-Programm bei Warmstarts verhält, wann es zu einem automatischen Kaltstart umschaltet und wie ein automatischer Kaltstart verhindert werden kann, indem ein Warmstart erzwungen wird.
Bei einem Kaltstart des Capture-Programms werden alle Zeilen in den CD-Tabellen und in der UOW-Tabelle gelöscht, und das Programm beginnt mit dem Lesen des Endes des Datenbankprotokolls. Um einen Kaltstart auszuführen, geben Sie das Schlüsselwort COLD beim Starten des Capture-Programms an. Unter bestimmten Umständen wird von einem Warmstart auf einen Kaltstart umgeschaltet. Näheres dazu kann im Abschnitt Automatischer Kaltstart nachgelesen werden.
Nach einem Kaltstart führt das Apply-Programm eine vollständige Aktualisierung der Zieltabellen aus. Wenn Sie das Schlüsselwort LOADX beim Starten des Apply-Programms angeben, können Sie damit die Leistung beim Ausführen der vollständigen Aktualisierung verbessern. Sie haben aber auch die Möglichkeit, das im Abschnitt Laden von Zieltabellen im Offline-Betrieb mit DJRA beschriebene Verfahren zu verwenden.
Wenn das Capture-Programm durch Ihren Eingriff oder auf Grund eines Fehlers beendet wird, schreibt es bestimmte Informationen in die Tabelle zur Steuerung von Warmstarts, um später einen Warmstart zu ermöglichen. In bestimmten Fällen kann das Capture-Programm solche Warmstartinformationen aber nicht sichern; zum Beispiel dann, wenn ein Bediener das Capture-Programm abbricht oder DB2 stoppt. In diesem Fall greift das Capture-Programm auf entsprechende Informationen in den CD-, UOW- oder Registriertabellen zurück, um den Zustand zum Zeitpunkt des Abbruchs wiederherzustellen und einen Warmstart zu ermöglichen.
Wenn Sie das Capture-Programm mit den Schlüsselwort WARM oder WARMNS erneut starten, ermittelt das Programm anhand der Warmstarttabelle (bzw. anhand der CD-, UOW- oder Registriertabellen), ob ein Warmstart möglich ist oder ob ein Kaltstart ausgeführt werden muss. Sind die vorhandenen Warmstartinformationen ausreichend, wird ein Warmstart des Capture-Programms ausgeführt. Andernfalls erfolgt - wenn möglich - ein Kaltstart (vgl. Abschnitt Automatischer Kaltstart).
Nach einem erfolgreichen Warmstart löscht das Capture-Programm die alten Zeilen in der Warmstarttabelle.
Wenn das Capture-Programm keinen Warmstart ausführen kann, erfolgt - wenn möglich - ein Kaltstart. Wurde allerdings das Schlüsselwort WARMNS angegeben, führt das Capture-Programm keinen Kaltstart aus. Das Capture-Programm schaltet in den folgenden Fällen automatisch auf einen Kaltstart um:
Wenn Sie das Capture-Programm zum ersten Mal starten, wird die Nachricht ASN0102W angezeigt. Sie gibt an, dass der Warmstart fehlgeschlagen ist. Das Capture-Programm schaltet dann auf einen Kaltstart um. Sie können diese Nachricht ignorieren, wenn Sie das Capture-Programm zum ersten Mal starten.
In jedem dieser Fälle gibt das Capture-Programm eine Informationsnachricht aus und führt einen Kaltstart durch. Dieser Kaltstart verursacht einen Abstimmungsverlust in der Abfolge der Erfassung der geänderten Daten, weil das Capture-Programm an eine neue Position im Datenbankprotokoll springt.
Um einen Kaltstartversuch des Capture-Programms zu verhindern, geben Sie das Schlüsselwort WARMNS beim Starten des Capture-Programms an. Wenn kein Warmstart anstelle des Kaltstarts möglich ist, wird das Capture-Programm beendet. Wird das Capture-Programm auf diese Weise beendet, bleiben die Steuertabellen intakt. Sie müssen den Fehler beheben, der zum Abbruch des Capture-Programms geführt hat, bevor Sie erneut versuchen, das Programm zu starten. Wenn Sie den Fehler nicht beheben, wird das Capture-Programm weiterhin bei jedem erneuten Startversuch beendet oder führt einen Kaltstart durch.
Wenn Sie das Capture-Programm zum ersten Mal starten - oder nachdem Sie das Capture- und das Apply-Programm gestoppt haben - führen Sie folgende Schritte aus:
Weitere Informationen enthalten die Abschnitte Definieren von Replikationsquellen und Definieren von Replikationssubskriptionsgruppen.
Warten Sie auf die Initialisierungsnachricht, die Sie darüber informiert, dass das Capture-Programm ausgeführt wird. Das Capture-Programm beginnt erst mit der Änderungserfassung, wenn das Apply-Programm gestartet wurde und eine vollständige Aktualisierung ausgeführt hat.
Das Apply-Programm führt eine vollständige Aktualisierung für alle Subskriptionsgruppeneinträge aus. Wenn die vollständige Aktualisierung abgeschlossen ist, beginnt das Capture-Programm, Änderungen an den Quellentabellen zu erfassen.
Dieser Abschnitt enthält Hinweise zur Vorbereitung des Starts des Apply-Programms und zur Verwendung des Apply-Programms für die aktualisierende Wiederherstellung (Forward Recovery). Näheres zum Betrieb des Apply-Programms (z. B. zum Starten, Stoppen oder Terminieren) in den einzelnen Betriebssystemumgebungen können Sie in Teil 3, Betrieb, nachlesen.
Bevor Sie das Apply-Programm starten, prüfen Sie, ob
Im Programmverzeichnis von Apply für OS/390 finden Sie Informationen über BIND-Programme zum Erstellen der Apply-Pakete. Das Apply-Programm muss an die Quellen- und Zieldatenbanken gebunden werden.
Im Abschnitt Wahlfrei: Manuelles Konfigurieren des Apply-Programms für Windows und OS/2 finden Sie Informationen über Bindeprogramme zum Erstellen der Apply-Pakete für Windows und OS/2.
Im Abschnitt Wahlfrei: Manuelles Konfigurieren des Apply-Programms für UNIX-Plattformen finden Sie Informationen über Bindeprogramme zum Erstellen des Apply-Pakets für UNIX-Plattformen.
Im Abschnitt Erstellen von Paketen zum Einsatz bei fernen Systemen wird der Befehl CRTDPRPKG beschrieben, der die Pakete erstellt, die benötigt werden, damit DataPropagator Relational für AS/400 mit fernen Systemen arbeiten kann.
Wenn Sie das Apply-Programm mit einer DBLIB-Verbindung für Sybase oder Microsoft SQL Server in einem Netzwerk mit geringer Verarbeitungsgeschwindigkeit ausführen, können Sie die Replikationsleistung insgesamt erheblich verbessern. DB2 DataPropagator kann Puffer verwenden, in denen replizierte Daten gespeichert werden und anstelle der einzelnen Aktualisierungen über das Netzwerk übertragen werden. Die Größe der Puffer kann mit der Anweisung create server option definiert werden. Gehen Sie dazu wie folgt vor:
SELECT PKGNAME FROM SYSCAT.PACKAGES WHERE PKGNAME LIKE 'ASN%'
Die Paketnamen ändern sich bei jedem Release und jeder Funktionsaktualisierung. Mit dieser Abfrage rufen Sie die spezifischen Namen für Ihre Servicestufe ab.
ASN6A001+ ASN6B001+ ASN6C001+ ASN6F001+ ASN6I001+ ASN6M001+ ASN6P001
create server option apply_packet_size for server type sybase setting 16384; create server option apply_buffer_size for server type sybase setting 16384;
Beispiele für Server-Optionen für Microsoft SQL Server sind:
create server option apply_packet_size for server type mssqlserver setting 16384; create server option apply_buffer_size for server type mssqlserver setting 16384;
Sie können die Paket- und Puffergröße auf jeden geeigneten Wert setzen, der kleiner-gleich der maximalen Einstellung bei Sybase oder Microsoft SQL Server ist, und den Wert nach Bedarf anpassen.
DJX_ASYNC_APPLY=TRUE
Neben den regelmäßigen Arbeiten zur Pflege Ihrer Datenbanken müssen Sie für Ihre Replikationsumgebung folgende Aktivitäten ausführen:
Die CD-Tabellen und die UOW-Tabelle sollten bei hohem Zugriffsaufkommen einmal pro Woche reorganisiert werden. Bei DB2 für OS/390 ab Version 5 geben Sie das Schlüsselwort PREFORMAT an. Wenn der Tabellenbereich im Voraus formatiert wird, ermöglicht dies eine bessere Verarbeitungsleistung bei Einfügungen durch das Capture-Programm. Wenn der Tabellenbereich komprimiert ist, müssen Sie auch das Schlüsselwort KEEPDICTIONARY angeben.
Weil Subskriptionsprädikate selektiv arbeiten und so die Mehrzahl der Transaktionsaktualisierungen herausfiltern können, gibt es keine allgemein gültige Richtlinie darüber, wie häufig Zieltabellen zu reorganisieren sind. Die Zieltabellen sollten jedoch mindestens so häufig reorganisiert werden wie die Quellentabellen.
Am Ende jedes Subskriptionszyklus fügt das Apply-Programm eine Zeile in die Apply-Prüfprotokolltabelle ein. Da die Tabelle unbegrenzt anwachsen kann, sollten Sie diese Zeilen regelmäßig löschen. Dies kann jederzeit geschehen, da das Apply-Programm zwar in diese Tabelle schreibt, aber nicht aus ihr liest. Die Daten zur Subskriptionsstatistik und zur Fehlerdiagnose, die in diese Tabelle geschrieben werden, dienen zu Ihrer Information und werden von dem Programm Replication Monitor verwendet. Ein einfaches Verfahren zur Begrenzung der Größe dieser Tabelle ist das Hinzufügen einer SQL-Anweisung zur Subskriptionsgruppe. Beispiel:
DELETE FROM ASN.IBMSNAP_APPLYTRAIL WHERE LASTRUN < (CURRENT TIMESTAMP - 7 DAYS);
Weder das Capture-Programm noch das Apply-Programm bereinigen die CCD-Tabellen automatisch, und es steht auch kein bestimmter Befehl zum Bereinigen dieser Tabellen zur Verfügung. Komprimierte CCD-Tabellen werden beim Aktualisieren überschrieben, d. h., sie wachsen nicht unbegrenzt an. Die nicht komprimierten CCD-Tabellen enthalten ein Protokoll, das Sie in der Regel aufbewahren möchten.
Eine komprimierte, unvollständige interne CCD-Tabelle wächst an und kann - bei entsprechender Aktualisierungsaktivität - nahezu die Größe einer vollständigen CCD-Tabelle erreichen. Da immer nur die neuesten Änderungen aus dieser Tabelle abgerufen werden, ist es unnötig, diese Tabelle derart anwachsen zu lassen. Um Transaktionen zu löschen, die bereits aus der Tabelle repliziert wurden, fügen Sie eine SQL-Anweisung in die Subskription der internen CCD-Tabelle ein. Beispiel:
DELETE FROM my.internal_ccd WHERE IBMSNAP_COMMITSEQ <= (SELECT MIN(SYNCHPOINT) FROM ASN.IBMSNAP_PRUNCNTL);
Diese Anweisung nimmt eine moderate Bereinigung der Tabelle durch das Löschen der am wenigsten aktiven Subskriptionen vor und ist nicht auf die Subskriptionen begrenzt, die sich auf die Quellentabelle beziehen, die der internen CCD-Tabelle zugeordnet ist. Die Anweisung kann für eine weitergehende Bereinigung modifiziert werden.
Die folgenden Prozeduren erfordern normalerweise die ausschließliche Verwendung von DB2-Tabellenbereichen oder des DB2-Katalogs:
REORG
BIND PACKAGE
BIND PLAN
GRANT
REVOKE
Da die Kombination dieser Prozeduren mit den Programmen Capture und Apply nicht unproblematisch ist (wegen des dynamischen SQL der Programme, bei dem die Katalogtabellen gesperrt werden, und wegen des Zugriffs auf Tabellenbereiche), sollten Sie die Programme Capture und Apply stoppen, wenn Sie Dienstprogramme (oder ähnliche Prozeduren) ausführen, um das Entstehen möglicher Konkurrenzsituationen zu vermeiden.
Sie können das DJRA-Programm Replication Monitor verwenden, um in regelmäßigen Abständen einen Bericht zu erstellen, der zeigt, wie Ihre Replikationsumgebung arbeitet:
Zum Starten des Programms Replication Monitor klicken Sie Monitor Replication im DJRA-Hauptfenster an. Über das Fenster "Replication Administration Scheduler" können Sie das Überwachungsprogramm in regelmäßigen Abständen oder auch nur einmal ausführen lassen.
Gelegentlich können Abstimmungsverluste beim Erfassen geänderter Daten für eine Quellentabelle auftreten. Wenn Sie beispielsweise das Capture-Programm beenden und anschließend mit einem Kaltstart erneut starten, werden alle Zeilen aus der CD-Tabelle gelöscht. In diesem Fall werden eventuell Aktualisierungen vorgenommen, die das Capture-Programm nicht erfasst. Oder möglicherweise wurden alle Aktualisierungen in der CD-Tabelle (durch einen Kaltstart) gelöscht, bevor das Apply-Programm diese Aktualisierungen replizieren konnte.
Wenn ein Abstimmungsverlust vorliegt, versucht das Apply-Programm, eine vollständige Aktualisierung auszuführen, es sei denn, die Zieltabelle ist eine unvollständige CCD-Tabelle. Wenn das Apply-Programm keine vollständige Aktualisierung durchführen kann, ist die Datenintegrität unter Umständen nicht gewährleistet. Bei unvollständigen CCD-Tabellen können Sie mögliche Verletzungen der Datenintegrität vermeiden, die möglicherweise durch einen Kaltstart des Capture-Programms verursacht werden. Führen Sie dazu folgende Schritte durch:
Auch nachdem der Replikationsprozess begonnen hat, kann die Konfiguration geändert werden. Dies schließt das Ändern von Replikationsquellen oder Subskriptionen, das Entfernen von Quellen oder Subskriptionen, das Inaktivieren und das Kopieren (Klonen) von Subskriptionen ein.
Eine vorhandene Replikationsquelle kann unter Verwendung der DB2-Steuerzentrale oder mit DJRA angezeigt werden. Wenn Sie - bei Verwendung der Steuerzentrale - das Markierungsfeld Tabelle für beliebige Aktualisierung verwenden ausgewählt haben, können Sie die für die Replikationsquelle definierte Konflikterkennungsebene ändern. Alle anderen Felder und Steuerelemente sind für Änderungen nicht verfügbar, nachdem Sie die Replikationsquelle erfolgreich definiert haben. Mit DJRA können Sie die Gruppe der Spalten, die für die Replikation zur Verfügung stehen, ändern. 30
Wenn Sie beabsichtigen, die Definition der Replikationsquelle zu ändern, verwenden Sie den Capture-Befehl REINIT. Sie können das Capture-Programm auch stoppen oder unterbrechen und anschließend einen Warmstart ausführen oder das Capture-Programm neu initialisieren, um mit dem Erfassen der Änderungen für die geänderte Replikationsquelle zu beginnen. Weitere Informationen zu dem Capture-Programm für Ihre Betriebssystemumgebung finden Sie in Teil 3, Betrieb.
Wenn eine Replikationsquelle nicht mehr benötigt wird, können Sie das Objekt aus der DB2-Steuerzentrale bzw. aus DJRA und die zugehörigen Steuerinformationen aus den Steuertabellen entfernen.
Achtung:
Die Steuerzentrale und DJRA löschen den Tabellenbereich für eine DB2-Replikationsquelle, wenn er leer ist. DJRA kann Datenbankbehälter anderer Hersteller (Tabellenbereiche, DBSPACEs oder Segmente) nicht löschen. Bei Verwendung der Steuerzentrale können Sie sicherstellen, dass der Tabellenbereich nicht gelöscht werden kann, indem Sie die Einstellungen über die Seite "Replikation" im Notizbuch "Tools - Einstellungen" ändern.
Von der DB2-Steuerzentrale oder von DJRA kann der Status (aktiv/inaktiv) einer Subskriptionsgruppe gesteuert werden. Sie können diese Funktion verwenden, wenn Sie eine Subskriptionsgruppe vorübergehend inaktivieren möchten, ohne sie zu entfernen. Wenn Sie eine Subskriptionsgruppe inaktivieren, führt das Apply-Programm den aktuellen Verarbeitungszyklus vollständig durch und setzt dann den Betrieb für die Subskriptionsgruppe aus. Wenn Sie eine Subskriptionsgruppe in der Steuerzentrale inaktivieren, wird das Symbol für die Subskriptionsgruppe abgeblendet.
Unter Verwendung der DB2-Steuerzentrale können Sie eine Replikationssubskription auf einen anderen Server kopieren. Dabei wird eine exakte Kopie einer bestehenden Subskriptionsgruppe auf einem anderen Ziel-Server erstellt, wobei aber ein anderes Apply-Qualifikationsmerkmal verwendet wird. Diese Kopie enthält nur Informationen zu Subskriptionen, sie umfasst keine Informationen zur Benutzerkopietabelle, zum Tabellenbereich oder Indexdefinitionen. Sie können eine oder mehrere Subskriptionsgruppen gleichzeitig kopieren. Die Steuerzentrale aktualisiert die Steuertabellen auf dem Steuerungs-Server.
Informationen darüber, wie Sie Ihre gesamte Replikationsumgebung auf ein anderes System kopieren können, finden Sie im Abschnitt Kopieren der Replikationskonfiguration auf ein anderes System.
Über die DB2-Steuerzentrale können Sie einen Teil der Subskriptionsgruppenwerte ändern. Dies betrifft primär diejenigen, die nicht die Struktur der Zieltabellen betreffen. Die folgenden Werte können im Fenster "Replikationssubskription ändern" und den untergeordneten Fenstern geändert werden.
Um bestehende Subskriptionsgruppeneinträge mit DJRA anzuzeigen oder zu ändern, klicken Sie den Knopf List Members or Add a Column to Target Tables an. Füllen Sie zunächst die erforderlichen Felder im Fenster aus (z. B. Angabe des Namens des Quellen-Servers und der Quellentabellen). Nehmen Sie anschließend wahlfreie Eingaben vor (z. B. den Namen der Quellenspalte oder einen SQL-Ausdruck und den Namen der Zielspalte, um neue oder berechnete Spalten zur Zieltabelle hinzuzufügen). 31
Beim Entfernen der Definition einer Subskriptionsgruppe werden die zugehörigen Informationen aus den Steuertabellen gelöscht und - wahlfrei - die Zieltabellen vom Ziel-Server entfernt. Bei Zieltabellen in Datenbanken anderer Hersteller können Sie wählen, ob der Kurzname und die zugehörige Zieltabelle beim Entfernen der Subskriptionsgruppe mit DJRA gelöscht werden sollen.
Wenn Sie mit der DB2-Steuerzentrale arbeiten, wählen Sie ein oder mehrere Replikationssubskriptionsobjekte aus dem Inhaltsteilfenster aus, und wählen Sie anschließend Entfernen im Kontextmenü aus. Bei Verwendung von DJRA müssen Sie zunächst alle Einträge aus der Subskriptionsgruppe löschen, bevor Sie dann die leere Subskriptionsgruppe entfernen können.