Mit Hilfe des Szenarios in diesem Kapitel können Sie sich mit der DB2-Steuerzentrale und den Programmen Capture und Apply vertraut machen. Führen Sie die Schritte in diesem einfachen Szenario durch, um Änderungen von einer DB2-Replikationsquelle in eine Zieltabelle in einer Datenbank unter DB2 für Windows NT Enterprise Edition (EE) oder Workgroup Edition (WE) zu kopieren.
Das Szenario besteht aus den folgenden Teilen:
Wenn Sie das hier beschriebene Szenario auf Ihrem Computer durcharbeiten möchten, richten Sie Ihr System anhand der folgenden Schritte ein:
Für die Schritte in diesem Kapitel werden die Daten in der Tabelle
DEPARTMENT in der Datenbank SAMPLE verwendet. Der vollständig
qualifizierte Name ist benutzerid.Department. Dabei
gibt benutzerid die Benutzer-ID an, von der die Tabelle erstellt
wurde. Tabelle 1 zeigt die Tabelle DEPARTMENT.
DEPTNO | DEPTNAME | MGRNO | ADMRDEPT | LOCATION |
---|---|---|---|---|
A00 | SPIFFY COMPUTER SERVICE | 000010 | A00 | - |
B01 | PLANNING | 000020 | A00 | - |
C01 | INFORMATION CENTER | 000030 | A00 | - |
D01 | DEVELOPMENT CENTER | - | A00 | - |
D11 | MANUFACTURING SYSTEMS | 000060 | D01 | - |
D21 | ADMINISTRATION SYSTEMS | 000070 | D01 | - |
E01 | SUPPORT SERVICES | 000050 | A00 | - |
E11 | OPERATIONS | 000090 | E01 | - |
E21 | SOFTWARE SUPPORT | 000100 | E01 | - |
Verwenden Sie für die übrigen Schritte dieser Übung die Benutzer-ID, mit der Sie die Datenbanken SAMPLE und COPYDB erstellt haben. Da Sie die Datenbanken erstellt haben, verfügen Sie auch über die Berechtigung zum Ausführen von Replikationsfunktionen (DBADM oder SYSADM).
Angenommen, eine Anwendung greift zum Generieren von Berichten auf Informationen zurück, die in der Tabelle DEPARTMENT in der Datenbank SAMPLE gespeichert sind. Anstatt die Daten direkt aus der Quellentabelle zu verwenden, möchten Sie die Änderungen in eine Zieltabelle kopieren, die nur von dieser Anwendung gelesen werden kann. Um den Verwaltungsaufwand möglichst gering zu halten, möchten Sie die Zieltabelle auf der Maschine erstellen, die auch als Quellen-Server dient.
Sie benötigen eine einfache Konfiguration zur Datenverteilung, die eine einzelne Replikationsquelle enthält, deren Änderungen in eine Tabelle mit Lesezugriff repliziert werden. In diesem Abschnitt werden verschiedene Aspekte des Entwurfs und der Planung beschrieben, die vor der Ausführung der Replikationsaufgaben zu beachten sind.
Wie bereits erwähnt, soll die Tabelle benutzerid.DEPARTMENT in der Datenbank SAMPLE als Replikationsquelle verwendet werden. Bevor Sie Ihre Umgebung einrichten, müssen Sie nun entscheiden, welche Informationen aus dieser Tabelle repliziert werden sollen. In diesem Szenario legen Sie fest, dass alle Spalten für die Replikation zur Verfügung stehen und dass Vorabbildwerte für jede Spalte gesichert werden sollen, damit Sie die Änderungen sehen können.
Tipp: | Es empfiehlt sich, beim Definieren von Replikationsquellen immer Vorabbildwerte mit einzuschließen. Denn falls Sie später eine Konfiguration für beliebige Replikation ändern, brauchen Sie Ihre Replikationsquelle nicht neu zu definieren. |
Entscheiden Sie nun, dass das Replikationsziel die Datenbank COPYDB sein soll, die Sie bereits unter DB2 für Windows NT erstellt haben. Zurzeit gibt es noch keine Zieltabelle in dieser Datenbank. Sie möchten nun, dass die Steuerzentrale die Tabelle gemäß Ihren Angaben erstellt.
Verwendung von bestehenden Zieltabellen: Wenn Sie die Steuerzentrale verwenden, wird die Zieltabelle erstellt, wenn sie noch nicht vorhanden ist. Diese Methode wird zum Generieren von Zieltabellen empfohlen, weil damit die korrekte Zuordnung zur Replikationsquelle sichergestellt ist. Sie können aber auch bestehende Zieltabellen verwenden, wenn sie mit einem DB2-Produkt erstellt wurden.
Angenommen, die Zieltabelle in COPYDB soll die folgenden Spalten enthalten:
Da im vorliegenden Fall die Spalten in der Zieltabelle mit den Daten in der Quellentabelle identisch sind, und es so für jeden Datensatz in der Zieltabelle auch genau einen Datensatz in der Quellentabelle gibt, können Sie die Zieltabellenart Benutzerkopie verwenden.
Im Rahmen dieser Übung speichern Sie die Zieltabelle und die
Replikationssteuertabellen im Standardtabellenbereich USERSPACE1.
Logischer Server | Tabellenbereich | Inhalt |
Quellen-Server: SAMPLE | USERSPACE1 | Quellen-Replikationssteuertabellen (einschließlich CD-Tabelle) |
Steuerungs-Server und Ziel-Server: COPYDB | USERSPACE1 | Replikationssteuertabellen und die Zieltabelle |
In der Regel werden die UOW-Tabelle und die CD-Tabellen (und gegebenenfalls die CCD-Tabellen, falls sie verwendet werden) in jeweils eigene Tabellenbereiche gestellt, und die Tabellen bzw. Tabellenbereiche werden gesperrt. Alle übrigen Replikationssteuertabellen können zusammen in einen Tabellenbereich gestellt und auf Zeilenebene gesperrt werden.
Im vorliegenden Szenario soll das Intervall für die Prüfung der Quellentabelle auf Änderungen und die Replikation dieser Änderungen in der Zieltabelle eine Minute betragen. Dieses kurze Intervall ist zwar für eine Anwendung zum Generieren von Berichten nicht erforderlich, jedoch soll die eingerichtete Replikationsumgebung getestet werden.
Außerdem sollen nach jedem Replikationszyklus alle Datensätze aus dem Apply-Prüfprotokoll gelöscht werden, die älter als eine Woche (7 Tage) sind. Durch diesen Bereinigungsvorgang wird verhindert, dass die Tabelle zu groß wird.
Sie brauchen keine Integritätsbedingungen zu definieren, da die Zieltabelle nur Lesezugriff gestattet. Integritätsbedingungen sind nur erforderlich, wenn Anwendungen die Zieltabelle aktualisieren. In diesem Szenario werden die Aktualisierungen in der Replikationsquelle festgeschrieben, und es müssen nur die auf diesem System definierten Integritätsbedingungen erfüllt werden. Es ist also nicht erforderlich, die gleichen Integritätsbedingungen auf dem Zielsystem erneut zu überprüfen.
Nachdem die Planung des Replikationsmodells abgeschlossen ist, können Sie die Replikationsumgebung einrichten.
Die Steuerzentrale erstellt automatisch Steuertabellen auf dem Quellen- und dem Ziel-Server. Standardmäßig werden die Steuertabellen mit Standardeinstellungen (Sperren, Tabellenbereich) erstellt, die sich zwar für Testzwecke, jedoch nicht für Produktionsumgebungen eignen. Um die Steuertabellen an Ihre Produktionsumgebung anzupassen, müssen Sie die Datei dpcntl.udb editieren und ausführen, bevor Sie weitere Replikationsaufgaben ausführen.
Um die Steuertabellen anzupassen, gehen Sie folgendermaßen vor:
Nach dem Anpassen der Steuertabellen verwenden Sie die Steuerzentrale zum Definieren der Tabelle DEPARTMENT als Replikationsquelle.
Um eine Replikationsquelle zu definieren, gehen Sie folgendermaßen vor:
Tipp: | Es empfiehlt sich in den meisten Fällen, den Standardwert zu verwenden. Wenn Sie die SQL-Anweisungen in einer Datei speichern, können Sie die Anweisungen prüfen, bei Bedarf an Ihre Anforderungen anpassen, die Datei sichern und erst dann ausführen, wenn Sie sicher sind, dass die gewünschten Ergebnisse erzielt werden. |
Tipp: | Standardmäßig wird die SQL-Datei im Verzeichnis sqllib gesichert. In Ihrer eigenen Replikationsumgebung wollen Sie diese Dateien aber wahrscheinlich in einem separaten Verzeichnis und nicht im Verzeichnis sqllib speichern. |
Tipp: | Wenn Sie Ihre eigene Replikationsumgebung einrichten, müssen Sie beim Editieren dieser Datei vorsichtig vorgehen. Wenn Sie den Namen der CD-Tabelle oder des Tabellenbereichs für die CD-Tabelle ändern, müssen Sie auch die Anweisung CREATE INDEX für die CD-Tabelle ändern und den CD-Tabelleneintrag in der betreffenden Zeile in Tabelle ASN.IBMSNAP_REGISTER aktualisieren. |
Die Tabelle DEPARTMENT ist nun als Replikationsquelle definiert. Während der Ausführung der SQL-Datei hat die Steuerzentrale die CD-Tabelle für diese Replikationsquelle und außerdem die Replikationssteuertabellen im Standardtabellenbereich (USERSPACE1) für die Datenbank SAMPLE erstellt.
Nach der Replikationsquelle muss nun auch eine Subskriptionsgruppe definiert werden. Eine Subskriptionsgruppe definiert die Beziehung zwischen der Replikationsquelle (in diesem Szenario DEPARTMENT) und einer Zieltabelle (erhält in diesem Szenario den Namen DEPTCOPY). Außerdem legt die Subskriptionsgruppe einige Replikationsparameter fest.
Um eine Subskriptionsgruppe und einen Subskriptionsgruppeneintrag zu definieren, gehen Sie folgendermaßen vor:
Tipp: | Bei dem Apply-Qualifikationsmerkmal muss die Groß-/Kleinschreibung beachtet werden. Möchten Sie für das Apply-Qualifikationsmerkmal Kleinbuchstaben verwenden, müssen Sie Begrenzungszeichen bei der Eingabe benutzen, z. B. "deptqual". Wenn Sie nur deptqual eingeben, wird der Wert von der Steuerzentrale standardmäßig in Großbuchstaben umgesetzt. |
Tipp: | Es empfiehlt sich, das Fenster zu vergrößern, damit alle Spalten sichtbar sind. Ferner ist zu beachten, dass die Namen einiger Zeilen mit dem Buchstaben X (z. B. XDEPTNO) beginnen. In diesen Zeilen werden die Vorabbildspaltenwerte gespeichert, die Sie angefordert haben. |
DEPTNO >='A00'
DELETE FROM ASN.IBMSNAP_APPLYTRAIL WHERE LASTRUN < (CURRENT TIMESTAMP - 7 DAYS)
Tipp: | Sie können bis zu zehn SQLSTATE-Werte definieren, die bei dieser Subskription ignoriert werden sollen. |
Tipp: | Der Wert für die Datenblockung hängt davon ab, wie viel freier Speicherbereich auf der Workstation vorhanden ist, auf der das Apply-Programm ausgeführt wird. In der Regel wird eine Zahl zwischen 5 und 20 verwendet. Ein sehr vorsichtiger Wert ist 1 Minute. |
Tipp: | Wenn sich der Quellen-Server auf einer anderen Maschine befände, müssten Sie sich über das Netzwerk beim Quellen-Server anmelden. Sie brauchten dann eine Benutzer-ID, die über die DBADM- oder SYSADM-Berechtigung für den Quellen-Server verfügt. Da sich der Quellen-Server jedoch in diesem Beispielszenario auf Ihrer lokalen Maschine befindet, brauchen Sie sich nicht erneut anzumelden. |
Um das Capture-Programm zu konfigurieren, gehen Sie folgendermaßen vor:
Tipp: | Sie müssen eine Sicherung ausführen, damit der Zugriff auf die Datenbank möglich wird. Die Datenbank wurde automatisch in einen Modus mit anstehender Sicherung versetzt, als Sie die Option "Protokollspeicherung für Wiederherstellung" ausgewählt haben. |
Tipp: | Im Rahmen dieser Übung erstellen und binden Sie die Programmpakete Capture und Apply manuell. Es ist jedoch möglich, die Pakete über DB2 DataPropagator für alle unterstützten UNIX-, Windows- und OS/2-Betriebssysteme automatisch erstellen und binden zu lassen. |
Um das Capture-Programm manuell zu binden, gehen Sie folgendermaßen vor:
DB2 CONNECT TO SAMPLE
DB2 BIND @CAPTURE.LST ISOLATION UR BLOCKING ALL
Die Datei capture.lst enthält eine Liste der erstellten Pakete.
Setzen Sie den Vorgang mit den unten angegebenen Schritten fort.
Um das Apply-Programm manuell zu binden, gehen Sie folgendermaßen vor:
DB2 BIND @APPLYUR.LST ISOLATION UR BLOCKING ALL
DB2 BIND @APPLYCS.LST ISOLATION CS BLOCKING ALL
Die Dateien applyur.lst und applycs.lst enthalten eine Liste der erstellten Pakete.
DB2 CONNECT TO COPYDB
DB2 BIND @APPLYUR.LST ISOLATION UR BLOCKING ALL
DB2 BIND @APPLYCS.LST ISOLATION CS BLOCKING ALL
Die Dateien applyur.lst und applycs.lst enthalten eine Liste der erstellten Pakete.
Damit die Authentifizierung der Endbenutzer beim Quellen-Server erfolgen kann, müssen Sie eine Kennwortdatei mit dem Schema AUTH=SERVER erstellen. Das Apply-Programm verwendet diese Datei, wenn eine Verbindung zum Quellen-Server hergestellt wird. Stellen Sie sicher, dass die Benutzer-ID, unter der Sie das Apply-Programm ausführen, über die Berechtigung zum Lesen der Kennwortdatei verfügt.
Um eine Kennwortdatei zu erstellen, gehen Sie folgendermaßen vor:
SERVER=SAMPLE USER=benutzerid PWD=kennwort SERVER=COPYDB USER=benutzerid PWD=kennwortDabei gilt Folgendes:
Format der Kennwortdatei: Die Datei darf keine Leerzeilen und keine Kommentarzeilen enthalten. Geben Sie nur den Server-Namen, die Benutzer-ID und das Kennwort ein. Diese Informationen ermöglichen es, verschiedene Kennwörter (oder dasselbe) bei den einzelnen Servern zu verwenden.
Namenskonvention für die Kennwortdatei:
Der Name der Kennwortdatei lautet <applyqual.pwd. Bei der Zeichenfolge applyqual muss zwischen Groß- und Kleinschreibung unterschieden und genau die Schreibweise und der Wert des Apply-Qualifikationsmerkmals (APPLY_QUAL) in der Tabelle für Subskriptionsgruppen verwendet werden. Die Dateinamenskonvention DB2 DataPropagator Version 5 wird ebenfalls unterstützt: apply-qualexemplarnamesteuerungs-server.pwd; dies sind das Apply-Qualifikationsmerkmal (Groß-/Kleinschreibung beachten), der Exemplarname für das Apply-Programm (der Standardname ist DB2 in Großbuchstaben) und der Name des Steuerungs-Servers in Großbuchstaben (z. B. COPYDB).
Weitere Informationen zu Authentifizierung und Sicherheit enthält die Veröffentlichung IBM DB2 Systemverwaltung.
Nach dem Definieren der Replikationsquelle und der Subskriptionsgruppe können Sie die Kopieranforderung übergeben, indem Sie die Programme Capture und Apply starten.
Um das Capture-Programm zu starten, gehen Sie folgendermaßen vor:
ASNCCP SAMPLE COLD NOPRUNE
Tipp: | Normalerweise sollten Sie nicht die Kaltstartoption angeben, sondern das Capture-Programm selbst ermitteln lassen, ob ein Kalt- oder Warmstart ausgeführt wird. Im Rahmen dieser Übung erzwingen Sie einen Kaltstart für das Capture-Programm, um die Datensätze in den CD- und UOW-Tabellen zu bereinigen. |
Das Capture-Programm wird gestartet, es erscheint aber keine neue Eingabeaufforderung. Mit dieser Aktion wird eine *.CCP-Datei erstellt. Das Capture-Programm ist zwar initialisiert, es beginnt aber erst mit der Erfassung von Änderungen für die definierte Replikationsquelle, wenn Sie das Apply-Programm gestartet haben und dieses seine erste vollständige Aktualisierung durchgeführt hat.
Um das Apply-Programm zu starten, gehen Sie folgendermaßen vor:
Tipp: | Sie müssen das Apply-Programm in demselben Verzeichnis starten, in dem die Kennwortdatei gespeichert ist. Wenn Sie versuchen, das Apply-Programm aus einem anderen Verzeichnis zu starten, wird eine Fehlernachricht ausgegeben. |
ASNAPPLY DEPTQUAL COPYDB
Tipp: | Bei dem Apply-Qualifikationsmerkmal DEPTQUAL muss die Groß-/Kleinschreibung beachtet werden. In diesem Übungsbeispiel ist DEPTQUAL ganz in Großbuchstaben einzugeben. |
Tipp: | Sie können das Programm ASNLOAD über den Aufrufparameter LOADX starten. Geben Sie den Parameter LOADX in der oben angegebenen Befehlsanweisung hinter dem Datenbanknamen (COPYDB) an. In seiner Standardkonfiguration verwendet das Programm ASNLOAD das Dienstprogramm EXPORT für den Export der Daten aus der Quellentabelle und das Dienstprogramm LOAD für die vollständige Aktualisierung der Zieltabelle. Sie können das Programm ASNLOAD ändern, so dass es jedes beliebige andere Programm von IBM oder einem anderen Hersteller aufruft. |
Das Apply-Programm wird gestartet, es erscheint aber keine neue Eingabeaufforderung. Die Apply-Prüfprotokolltabelle (ASN.IBMSNAP_APPLYTRAIL) in COPYDB enthält Informationen zum jeweils aktuellen Status.
Wenn Sie die Zieltabelle DEPTCOPY nach einem Replikationszyklus anzeigen,
müssten Sie die in Tabelle 2 dargestellten Ergebnisse sehen.
DEPTNO | DEPTNAME | MGRNO | ADMRDEPT | LOCATION |
---|---|---|---|---|
A00 | SPIFFY COMPUTER SERVICE | 000010 | A00 | - |
B01 | PLANNING | 000020 | A00 | - |
C01 | INFORMATION CENTER | 000030 | A00 | - |
D01 | DEVELOPMENT CENTER | - | A00 | - |
D11 | MANUFACTURING SYSTEMS | 000060 | D01 | - |
D21 | ADMINISTRATION SYSTEMS | 000070 | D01 | - |
E01 | SUPPORT SERVICES | 000050 | A00 | - |
E11 | OPERATIONS | 000090 | E01 | - |
E21 | SOFTWARE SUPPORT | 000100 | E01 | - |
Sobald die Replikationsumgebung eingerichtet ist, werden alle in der Replikationsquelle vorgenommenen Änderungen in die Zieltabelle repliziert. Die Steuertabellen müssen in regelmäßigen Abständen bereinigt werden, damit sie nicht zu groß werden. Obwohl die Programme Capture und Apply permanent aktiv sein können, ist es hin und wieder erforderlich, sie zu stoppen - z. B. um Dienstprogramme ausführen zu können, die auf die Tabellenbereiche zugreifen, in denen die Steuertabellen gespeichert sind.
Angenommen, bei Spiffy Computer Service wurden zwei neue Abteilungen gegründet: eine für Technical Writing und eine für Public Relations.
Um die Quellentabellen zu aktualisieren, gehen Sie folgendermaßen vor:
DB2 CONNECT TO SAMPLE
DB2 INSERT INTO DEPARTMENT VALUES ('F01','TECHNICAL WRITING','000110','F01',NULL) DB2 INSERT INTO DEPARTMENT VALUES ('G01','PUBLIC RELATIONS','000120','G01',NULL)
DB2 CONNECT TO COPYDB
DB2 SELECT * FROM DEPTCOPY
Tipp: | Der Replikationsprozess wird nicht sofort gestartet. Sie sollten etwa fünf Minuten warten, bevor Sie die Tabelle prüfen. |
Tabelle 3 zeigt das Ergebnis der Replikation (beachten Sie die beiden
hinzugefügten Zeilen).
Tabelle 3. Tabelle DEPTCOPY nach dem Replizieren der Änderungen
DEPTNO | DEPTNAME | MGRNO | ADMRDEPT | LOCATION |
---|---|---|---|---|
F01 | TECHNICAL WRITING | 000110 | F01 | - |
G01 | PUBLIC RELATIONS | 000120 | G01 | - |
A00 | SPIFFY COMPUTER SERVICE | 000010 | A00 | - |
B01 | PLANNING | 000020 | A00 | - |
C01 | INFORMATION CENTER | 000030 | A00 | - |
D01 | DEVELOPMENT CENTER | - | A00 | - |
D11 | MANUFACTURING SYSTEMS | 000060 | D01 | - |
D21 | ADMINISTRATION SYSTEMS | 000070 | D01 | - |
E01 | SUPPORT SERVICES | 000050 | A00 | - |
E11 | OPERATIONS | 000090 | E01 | - |
E21 | SOFTWARE SUPPORT | 000100 | E01 | - |
Bei den folgenden Schritten wird vorausgesetzt, dass das Capture-Programm aktiv ist. Ist das Capture-Programm nicht aktiv, kann der Befehl prune nicht ausgeführt werden.
Tipp: | Bei Windows NT können Sie anhand des Task Manager ermitteln, ob das Capture-Programm (ASNCCP) aktiv ist. |
Um festzustellen, ob eine Bereinigung erforderlich ist, gehen Sie folgendermaßen vor:
DB2 CONNECT TO SAMPLE
DB2 SELECT COUNT(*) FROM ASN.IBMSNAP_UOW
Die UOW-Tabelle müsste auf Grund der zuvor ausgeführten Replikation zwei Zeilen enthalten.
Um den Bereinigungsbefehl auszuführen, gehen Sie folgendermaßen vor:
ASNCMD SAMPLE PRUNE
Tipp: | Der Bereinigungsprozess sollte in der Regel zu Zeiten geringerer Systemauslastung ausgeführt werden. |
DB2 SELECT COUNT(*) FROM ASN.IBMSNAP_UOW
Die Tabelle sollte jetzt keine Zeilen mehr enthalten.
Ein wichtiger Aspekt bei der Verwaltung Ihrer Replikationsumgebung ist die regelmäßige Datenbankpflege. Im Rahmen mancher der hierfür erforderlichen Tätigkeiten müssen die Programme Capture und Apply gestoppt werden. Sie müssen die Programme Capture und Apply beispielsweise stoppen, bevor Sie Dienstprogramme ausführen, die direkt auf die von diesen Programmen verwendeten Tabellenbereiche zugreifen.
Führen Sie folgenden Schritte in dem DB2-Befehlsfenster aus, das Sie im vorherigen Schritt geöffnet haben.
Um das Capture-Programm zu stoppen, gehen Sie folgendermaßen vor:
Geben Sie den folgenden Befehl ein: ASNCMD SAMPLE STOP
Um das Apply-Programm zu stoppen, gehen Sie folgendermaßen vor:
Geben Sie folgenden Befehl ein: ASNASTOP DEPTQUAL (dabei ist DEPTQUAL das Apply-Qualifikationsmerkmal, bei dem Groß-/Kleinschreibung zu beachten ist).
Nachdem Sie die Programme Capture und Apply gestoppt haben, können Sie DB2-Dienstprogramme für Ihre Datenbank ausführen. (Die Ausführung dieser Dienstprogramme geht über den Rahmen dieser Übung hinaus.)