Oracle GoldenGate 11gR 2 - Oracle Data Warehouse Community

Transcription

Oracle GoldenGate 11gR 2 - Oracle Data Warehouse Community
OR ACLE DOJO NR.
6
Oracle GoldenGate 11gR2
–
Aktiv-Aktiv-Replikation
JOACHIM JAENSCH
Oracle
Oracle
Dojo
Dojo
ist eine
ist eine
Serie
Serie
vonvon
Heften,
Heften,
die die
Oracle
Oracle
Deutschland
Deutschland
B.V.B.V.
zu unterschiedlichsten
zu unterschiedlichsten
Themen
Themen
ausaus
derder
Oracle-Welt
Oracle-Welt
herausgibt.
herausgibt.
DerDer
Begriff
Begriff
Dojo
Dojo
[‘do:d
[‘do:d
o] kommt
ausaus
demdem
japanischen
japanischen
KampfKampf3o] 3kommt
sport
sport
undund
bedeutet
bedeutet
Übungshalle
Übungshalle
oder
oder
Trainingsraum.
Trainingsraum.
Als Als
„Trainingseinheiten“,
„Trainingseinheiten“,
die die
unseren
unseren
Anwendern
Anwendern
helfen,
helfen,
ihreihre
Arbeit
Arbeit
mitmit
Oracle
Oracle
zu perfektionieren,
zu perfektionieren,
sollen
sollen
auch
auch
die die
Oracle
Oracle
Dojos
Dojos
verstanden
verstanden
werden.
werden.
ZielZiel
ist es,
ist es,
Oracle-Anwendern
Oracle-Anwendern
mitmit
jedem
jedem
Heft
Heft
einen
einen
schnellen
schnellen
undund
fundierten
fundierten
Überblick
Überblick
zu einem
zu einem
abgeabgeschlossenen
schlossenen
Themengebiet
Themengebiet
zu bieten.
zu bieten.
Im Im
Oracle
Oracle
Dojo
Dojo
Nr. Nr.
6 beschäftigt
6 beschäftigt
sichsich
Joachim
Joachim
Jaensch,
Jaensch,
Leitender
Leitender
System
System
berater
berater
bei bei
Oracle
Oracle
Deutschland
Deutschland
B.V.B.V.
undund
zuständig
zuständig
für für
dasdas
Thema
Thema
Replikation
Replikation
undund
Integration,
Integration,
mitmit
Oracle
Oracle
GoldenGate.
GoldenGate.
Dieses
Dieses
Dojo
Dojo
bietet
bietet
Ihnen
Ihnen
einen
einen
wunderbaren
wunderbaren
Einstieg
Einstieg
undund
eineeine
gute
gute
Hilfe
Hilfe
beim
beim
Aufbau
Aufbau
vonvon
verteilten
verteilten
Umgebungen.
Umgebungen.
Teil I
– Überblick
1
Was versteht man unter Datenreplikation? 6
2
Replikation mit Oracle GoldenGate 8
2.1
Überblick 8
2.2
Einsatzgebiete 11
2.3
Unterstützte Plattformen 14
2.4
Installation und Konfiguration 15
2.5
Prozesse 18
2.5.1
Manager-Prozess 18
2.5.2
Collector-Prozess 19
2.5.3
Extract-Prozess (primär und sekundär) 20
2.5.4
Replicat-Prozess 22
2.6
Trail Files 24
2.7
Instantiierung und INITIAL-LOAD 25
2.8
GoldenGate Software Command Interface (GGSCI) 28
2.8.1
GoldenGate-Kommandos 30
2.8.2
Kommando OBEY 31
3
Konfliktbehandlung 32
3.1
Wann entstehen Konflikte? 32
3.2
Vermeidung von Konflikten 33
3.3
Standardkonfliktlösungen 34
4
Globalisierung 36
5
Sicherheit 39
5.1
Übersicht 39
5.2
Passwort-Verschlüsselung 40
6
Administration und Überwachung 44
6.1
GGSCI-Kommandos und -Reports 44
6.2
Oracle Management Pack for Oracle GoldenGate 45
6.2.1
Oracle Enterprise Manager Plug-in 47
6.2.2
Oracle GoldenGate Monitor 49
6.2.3
Oracle GoldenGate Director 53
6.2.4
Gegenüberstellung 57
6.3
Oracle GoldenGate Veridata 59
TeilTeil
II I– –Replikationsbeispiel
Überblick
7 1GoldenGate-Installation
Was versteht man unter63
Datenreplikation?
8 2Aufbau
einer Aktiv-Aktiv-Replikation
Replikation
mit Oracle GoldenGate
8.12.1Überblick
und8Voraussetzungen
Überblick
8.22.2Voraussetzungen
Einsatzgebiete
6
66
8
67
in11primärer und sekundärer Datenbank 69
8.2.12.3ARCHIVELOG
69
UnterstützteMode
Plattformen
14
8.2.22.4Supplemental
Logging
72
Installation und
Konfiguration
8.2.32.5Das
Replikationsobjekt
Prozesse
18
8.2.4
Admin-User
2.5.1GoldenGate
Manager-Prozess
18
8.2.5
82
2.5.2Instantiierung
Collector-Prozess
15
73
80
19
8.3
der GoldenGate-Parameterdateien
2.5.3Aufbau
Extract-Prozess
(primär und sekundär) 2083
8.3.1
eines Connect-Makros
2.5.4Erstellen
Replicat-Prozess
22
8.3.22.6Datei
TrailGLOBALS
Files 24
84
und Manager-Parameter 85
8.3.32.7Extractund Replicat-Parameter
88
Instantiierung
und INITIAL-LOAD
8.42.8OBEY-Kommando-Files
GoldenGate Software
25
90
Command
Interface (GGSCI) 28
8.4.1
Datenbank 91
2.8.1Primäre
GoldenGate-Kommandos
30
8.4.2
Datenbank
2.8.2Sekundäre
Kommando
OBEY 3193
8.5 3Einrichten
der Replikationsumgebung
Konfliktbehandlung
32
(OBEY Files) 95
8.63.1Starten
Stoppen
der Replikation
Wannund
entstehen
Konflikte?
32
102
8.73.2Kontrolle
der Replikation
108
Vermeidung
von Konflikten
33
8.83.3Einbau
einer UPDATE-Konfliktlösung
Standardkonfliktlösungen
34
111
8.8.1 4Ergänzen
der GoldenGate-Parameterdateien
Globalisierung
36
8.8.2 5Test
der Konfliktbehandlung
Sicherheit
39
8.8.35.1GoldenGate
Übersicht
Reports
125
39
8.95.2Löschen
der Replikationsumgebung
Passwort-Verschlüsselung
40
9 6Schlusswort
147
Administration
138
und Überwachung 44
106.1Weitere
Informationenund
150-Reports
GGSCI-Kommandos
6.2
44
Oracle Management Pack for Oracle GoldenGate 45
6.2.1
Oracle Enterprise Manager Plug-in 47
6.2.2
Oracle GoldenGate Monitor 49
6.2.3
Oracle GoldenGate Director 53
6.2.4
Gegenüberstellung 57
6.3
111
116
Oracle GoldenGate Veridata 59
Or acle Dojo nr.
JOACHIM JAENSCH
Oracle GoldenGate 11gR2
–
Aktiv-Aktiv-Replikation
6

Vorwort des Her ausgebers
Die Golden Gate Bridge sehen und überqueren, per pedes,
mit dem Fahrrad oder einfach mit dem Auto, ist ein MUSS,
wenn man San Francisco besucht. Dieses Bauwerk, das in
den 30er-Jahren des letzten Jahrhunderts unter schwierigsten
Bedingungen gebaut wurde, gilt zu Recht als Meisterleistung
der Ingenieurskunst und als eines der schönsten Bauwerke
der Welt. Egal von welcher Perspektive man diese Brücke
betrachtet, sie ist beeindruckend.
Ich kann es nicht mit Bestimmtheit sagen, aber ich denke mir,
dass die ursprünglichen Entwickler der GoldenGate Software
– Oracle hat die Firma GoldenGate Software, Inc. im Jahr 2009
übernommen – genau dieses Gefühl vermitteln wollten, als sie
einen Namen für ihre 1995 gegründete Firma und ihr Produkt
gesucht haben. Die GoldenGate Software sollte ebenfalls eine
Brücke darstellen und zwar zwischen verteilten Datenbanksystemen. Dieses Produkt sollte, wie seine Namensgeberin, alles
in den Schatten stellen, was es bisher in diesem Bereich gab.
Oracle GoldenGate ist nach Oracle Advanced Replication und
nach Oracle Streams die dritte Generation unserer Replikations- und Integrationstechnologie und setzt Maßstäbe im
Bereich der verteilten Systeme und das nicht nur im homogenen Oracle-Umfeld.
3
4 
Für Oracle GoldenGate bieten sich vielfältige Einsatzmöglichkeiten. Man findet es oft als zentrale Komponente bei hochverfügbaren verteilten Konfigurationen, in Replikationsumgebungen jeglicher Art, als Basis für Zero-Downtime-Upgrades von
Oracle-Datenbanken oder als ETL-Komponente, um unterschiedliche Datenquellen zu konsolidieren – und das sind nur
einige typische Szenarien.
Das Wissen über die Möglichkeiten, die ihnen Oracle GoldenGate bietet, ist die Basis für bessere und stabilere IT-Systeme.
Ich freue mich sehr, dass Joachim Jaensch, einer unserer erfahrensten Systemberater und zuständig für das Thema Replikation
und Integration, sein Wissen über Oracle GoldenGate in diesem
Dojo zusammengefasst hat. Es bietet Ihnen einen wunderbaren
Einstieg und eine gute Hilfe beim Aufbau von verteilten Umgebungen.
Ich wünsche Ihnen viel Spaß beim Lesen und beim Testen.
Ihr Günther Stürner
Vice President Sales Consulting
PS: Wir sind an Ihrer Meinung interessiert. Anregungen, Lob oder
Kritik gerne an [email protected]. Vielen Dank!
5

Teil I
GoldenGate 11gR2
Überblick
6 
Was versteht man unter Datenreplikation?
1 Was versteht man unter
Datenreplikation?
Informationen beziehungsweise Daten bilden eine wichtige
Grundlage für den Erfolg eines Unternehmens. Sie dienen entweder der reibungslosen Produktion oder der Vorbereitung­von
operativen und langfristigen Entscheidungen zum Wohle einer
Firma. Mit zunehmender Größe eines Unternehmens wächst
häufig auch die Anzahl der Firmenstandorte. Die Distanzen
der einzelnen Firmenstandorte zueinander können dabei sehr
unterschiedlich sein und beschränken sich nicht auf Ländergrenzen. Internationale Firmen sind heute weltweit aufgestellt
und besitzen Niederlassungen oder Tochterfirmen in verschiedenen Ländern und auf mehreren Kontinenten. Dem muss die
Informationsverarbeitung Rechnung tragen, das heißt, Unternehmensdaten müssen überall zeitnah verfügbar sein. Während
noch vor zwanzig Jahren Datenträger per Post verschickt wurden,
weil die nötigen Datennetze fehlten, kann man im heutigen Internetzeitalter weltweite TCP/IP-Netzwerke nutzen, um Informationen und Daten zu verteilen. In den letzten Jahren sind Softwarelösungen zur zeitnahen Verteilung von Daten entstanden,
die diese neuen Möglichkeiten nutzen. Diese Verteilung bezeichnet man als Replikation. Man unterscheidet zwischen synchroner
und asynchroner Replika­tion. Bei der synchronen Replikation
wird eine Änderung am Datenobjekt nur wirksam, wenn sie
auf der Quell- und der Zieldatenbank erfolgreich war. Das hat
7

Was versteht man unter Datenreplikation?
einen Nachteil: Nur wenn die Änderung auf beiden Seiten
erfolgreich war, wird weitergearbeitet, bei Netzwerkausfall stehen beide Datenbanken. In der Praxis wird deshalb
hauptsächlich die asynchrone Replikation eingesetzt. Dabei
existiert zwischen der Änderung des Originals und der
Synchronisation des Replikats eine Latenzzeit. Asynchrone
Replikations­verfahren sind: File Transfer, Primary Copy,
Snapshot Replication und Log-based-Replication. In diesem
Dojo wird nur die zuletzt genannte Art der Replika­tion betrachtet, die der von Oracle GoldenGate entspricht.
Uni-Directional
(Single-Source)
Query Off-Loading
Zero-Downtime Migration
Broadcast
Data Broadcast
Bi-Directional
(Multi-Master)
Hot Standby or
Active-Active for HA
Integration/
Consolidation
Data Warehouse
Peer-to-Peer
Load Balancing
Multi Master
Data Distribution
via Messaging
BPM
BAM
CEP
Abb.1: Replikationsszenarien
In der Praxis findet man häufig Kombinationen der abgebildeten­
Replikationstopologien.
8 Überblick
2 Replikation mit Oracle GoldenGate
2.1
Überblick
Oracle GoldenGate ist eine Komponente zur Replikation
von Daten zwischen unterschiedlichen Datenbanken und
Systemen. Die Replikation beginnt mit dem Erfassen der
Änderungen auf dem Quellsystem, dem Extract-Prozess.
Grundlage dafür bilden die Redolog- beziehungsweise
Journal-Informationen des Quellsystems. Im ALO-Modus
(Archived Log Files Only) liest GoldenGate nur archivierte
Redolog Files. Die erfassten Änderungen können in lokalen
Trail Files (Local Trails) oder Trails auf der Zielseite (Remote
Trails) abgelegt werden. Mit einem Datapump-Prozess werden lokale Trail Files zum Zielsystem übertragen. Dort sorgt
der Replicat-Prozess für das Anwenden der Änderungen in
der Zieldatenbank. Die GoldenGate-Prozesse werden häufig
auch nach der von Oracle Streams bekannten Terminologie
benannt. EXTRACT heißt dann CAPTURE, REPLICAT wird
als APPLY oder DELIVERY bezeichnet. An der Replikation­
können zwei und mehr Systeme beteiligt sein, wobei uni­
direktional und bidirektional repliziert werden kann. Neben
DML-Änderungen (Data Manipulation Language) können
auch DDL-Änderungen (Data Definition Language) Teil
der Replikation sein. Replikationsumgebungen sind sehr
Überblick
vielseitig. Es gibt „1-way“-, „n-way“-, „Multimaster“- und
„Hub-and-Spoke“-Replikationen. Häufig sind die einzelnen Arten in Kombination zu finden. Zur Überwachung
der Replikationslandschaft dienen Berichte, deren Erstellung automatisiert oder über Kommando erfolgen kann.
Mit dem Management Pack for Oracle GoldenGate steht
eine grafische Komponente zur Administration und zum
Monitoring unter dem Oracle Enterprise Manager bereit.
Nutzer, die nicht mit dem Oracle Enterprise Manager arbeiten, können den neu entwickelten GoldenGate Monitor
verwenden. Der GoldenGate Director als älteres grafisches
Administrationstool steht gegenwärtig auch noch zur
Verfügung, wird aber langfristig durch die beiden anderen
Tools ersetzt werden. Gegenwärtig müssen alle drei Komponenten zusätzlich lizenziert werden. Die Konfiguration
einer GoldenGate-Replikation erfolgt über Parameter, die in
plattformspezifischen Flat Files abgelegt werden. Die Steuerung der Replikationsprozesse (zum Beispiel Starten­und
Stoppen) erfolgt über das auf allen unterstützten Plattformen vorhandene GoldenGate Software Command Interface
(GGSCI).
Dargestellt wird die unidirektionale Replikation, also die
Replikation von einer Quelle (Source) zu einem Ziel (Target).
Im oberen Teil wird der INITIAL-LOAD dargestellt, die Erstbefüllung der Zielseite mit den zu replizierenden Objekten.
9
10 Source
Tables
Capture
Manager
Change
Logs
LAN/WAN/
Internet
Over TCP/IP
Capture
Optional
Source
Oracle or
Non-Oracle
Database
Trial
Trial
File
File
Capture
Abb.2: GoldenGate-Architektur
Danach kann die eigentliche „Change Replication“ beginnen,
die im unteren Teil dargestellt ist. Das Einrichten einer Replika­
tion muss heute fast immer bei laufendem Betrieb erfolgen.
Dabei gibt es zwei Forderungen zu beachten:
1. Verwendung eines konsistenten Backups der Quellobjekte für
INITIAL-LOAD.
2.Erfassen aller danach erfolgten Änderungen an den Quell­
objekten, um damit die Synchronisation der Ziel­objekte nach
Abschluss der Erstbefüllung durchzuführen.
11
INITIAL-LOAD
Delivery
Manager
Collector
Trial
Trial
File
File
Delivery
1. Change Synchronization
and then
2. Continous Replication
2.2
Einsatzgebiete
Oracle GoldenGate wird zur Replikation in heterogenen
Umgebungen eingesetzt. Für die Replikation in homogenen
Oracle-Umgebungen kann GoldenGate natürlich auch
benutzt werden. Ein Vorteil der Komponente ist die Schnelligkeit, in der repliziert werden kann. Oracle GoldenGate
eignet sich deshalb hervorragend für die Replikation unter
Real-Time-Bedingungen. Der EXTRACT auf der Quelldaten­
bank läuft völlig unabhängig von einem eventuellen
DATAPUMP oder vom REPLICAT auf der Zieldatenbank.
12 Einsatzgebiete
Die Prozesse sind voneinander entkoppelt, das heißt, sie
können zwar in unmittelbarer zeitlicher Folge ablaufen,
müssen es aber nicht. In bestimmten Situationen kann
dieser Spielraum vorteilhaft sein.
GoldenGate ist hervorragend für die Lösung dieser
Aufgabenstellungen geeignet:
–Real-Time Data Replication
uni-/bidirectional
„1-way”/„n-way”
homogeneous/heterogeneous
– Real-Time Data Warehouses
–Real-Time Database Offload Reporting
–Database Upgrades with near-zero Downtime
–Database Migrations with near-zero Downtime
–Database Platform Migrations
homogeneous/heterogeneous
Je nach Einsatzgebiet nutzt man uni- oder bidirektionale Replikation. Für Database Upgrades oder Database Migra­tions
ist eigentlich nur die unidirektionale Replikation not­wendig.
Da man aber Fehler niemals völlig ausschließen kann,
bereitet man für diese Fälle auch eine Replikation für den
Einsatzgebiete
Rückweg von der Ziel- zur Quelldatenbank vor. Sehr gut
haben Sie gearbeitet, wenn Sie diese Replikation niemals
nutzen müssen. Der Ablauf eines Upgrades oder einer
Migration ist ausführlich in mehreren Oracle White Papers
beschrieben. Links dazu finden Sie unter Punkt 10.2. An
dieser Stelle möchte ich Sie aber noch auf eine Besonderheit zu GoldenGate hinweisen: Viele Unternehmen nutzen
SAP-Installationen auf Grundlage einer Oracle-Datenbank.
Oracle bietet in enger Zusammenarbeit mit dem SAP Solution Center in Walldorf sogenannte Oracle-to-Oracle (O2O)
Transition Services an. Einer dieser Services ist Oracle-to-­
Oracle­ Online der auch als Oracle Triple-O bezeichnet
wird. Dabei handelt es sich um eine Lösung, die aus „Initial
Alignment" und „Data Synchronization" besteht. Letztere
Funktion wird dabei durch Oracle GoldenGate realisiert.
Dieses spezielle Verfahren für Upgrade oder Migration einer
SAP-Umgebung ist zum Beispiel nutzbar für R/3, BI, CRM
und XI, sofern diese auf einer Oracle-Datenbank basieren.
Bei diesem Verfahren entstehen unabhängig von der Datenbankgröße nur Stillstandszeiten um die zehn Minuten.
Es ist zertifiziert durch die SAP und in einer SAP Support
Note dokumentiert. Da ich Sie an dieser Stelle aber nicht
aus dem Kontext dieses Dojo herausreißen möchte, rate ich
Ihnen, die in Tabelle 1 aufgeführten Dokumente zu Oracle
Triple-O erst zu einem späteren Zeitpunkt anzuschauen.
13
14 Unterstützte Plattformen
Für den Zugang auf die Support-Portale von SAP und
Oracle ist ein User-Account notwendig.
Name des Dokuments
SAP / Oracle Support Note
Oracle to Oracle Online Migrations
– Triple O
https://service.sap.com
Using Oracle GoldenGate with
Online SAP Migrations
https://support.oracle.com
SAP - 1508271
Oracle - 1169023.1
Tab.1: Support Notes zu Oracle-to-Oracle Online
2.3
Unterstützte Plattformen
Database
Log-Based Capture
Non-Log_Based
Replication
Capture**
c-tree***
X
X
DB2 for i
X
X
DB2 for Linux,
X
X
DB2 for z/OS
X
X
Oracle
X
X
MySQL
X
X
SQL/MX
X
X
SQL Server
X
X
Sybase
X
X
UNIX, Windows
Tab.2: GoldenGate-Replikationsplattformen (Version 11.2.1.0.4)
15
Installation und Konfiguration Database
Log-Based Capture
Non-Log-Based
Replication
Capture**
Teradata
X
X
PostgreSQL*
X
TimesTen*
X
Generic ODBC*
X
* Derzeit nur als Ziel (Target) unterstützt
** Capture-Modul kommuniziert mit einem GoldenGate API zum Erfassen von Änderungen
*** Nur 1:1-Replikation unterstützt, keine Datenmanipulationen (Filtering, Mapping) möglich
2.4
Installation und Konfigur ation
Oracle GoldenGate gibt es für eine Vielzahl unterschiedlicher Datenbanken und Daten-Management-Systeme. GoldenGate wird in verschiedenen „Builds“ für alle unterstützten
Plattformen (Kombination Hardware/Betriebssystem) und
Versionen bereitgestellt. Der Download der Software erfolgt
über http://edelivery.oracle.com. Die Installation umfasst
diese Schritte und wird im Teil 2 durchgeführt:
1. E
ntpacken des Zip-Files in einen Installation-Folder
(Ordner, Verzeichnispfad)
2. Ö
ffnen des Command Prompt und Aufruf des GoldenGate Software Command Interface (GGSCI)
3. Ausführen des Kommandos: CREATE SUBDIRS
16 Installation und Konfiguration
4. Z
usätzliche Unterverzeichnisse anlegen
(zum Beispiel „dirmac“)
5. E
rstellen des Files: GLOBALS
(empfohlen, um Standards zu ändern!)
Abb.3: GoldenGate-Installationsverzeichnisse (Windows 7)
Die beiden Ordner „ogg_new_src“ und „ogg_new_tar“
beinhalten jeweils die Dateien einer Oracle GoldenGate-Instanz. Unter Windows 7 ist pro Datenbank eine GoldenGateInstanz notwendig.
Installation und Konfiguration Abb.4: G
oldenGate-Unterverzeichnisse
(„dirmac“, „dirver“, „dirwlt“ später erstellt)
Verwendung der Unterverzeichnisse:
Name
Inhalt
BR
Bounded Recover Checkpoint Files
cfg
Property- und XML files des GoldenGate Monitor Agents
dirbdb
Daten-Repository für GoldenGate Monitor oder für den
Enterprise Manager (*)
dirchk
Extract / Replicat Checkpoint Files
dirdat
Standard-Verzeichnis für Local Trails / Remote Trails
17
18 Prozesse
Name
Inhalt
dirdef
Verzeichnis für Source Definition Files
dirjar
Java-Programme des GoldenGate Monitor Agents
dirmac
Selbstgeschriebene GoldenGate Makros (**)
dirout
(z.Zt. nicht mehr benutzt)
dirpcs
GoldenGate Status Files (Files existieren nur zur Laufzeit)
dirprm
Parameter Files für alle GoldenGate-Prozesse
dirrpt
Report Files aller GoldenGate-Prozesse
dirsql
Ehemals für TRIGGEN Utility, jetzt für SQL-Skripte genutzt
dirtmp
Standardverzeichnis zum Speichern großer Transaktionen
dirver
Verzeichnis für GoldenGate Veridata (***)
dirwlt
Oracle Wallet für Passwords des GoldenGate Monitors (****)
Tab.3: GoldenGate Unterverzeichnis (Version 11.2.1.0.1)
* Angelegt durch CREATE DATASTORE bei GoldenGate Monitor-Konfiguration
** Muss bei Bedarf selbst angelegt werden
*** Existiert nur, wenn GoldenGate Veridata installiert ist
**** Angelegt durch PW_AGENT_UTIL.BAT -CREATE bei GoldenGate Monitor-Konfiguration
2.5
Prozesse
2.5.1Manager-Prozess
Der Manager-Prozess ist die Voraussetzung für alle Extractund Replicat-Prozesse, die in einer GoldenGate-Instanz laufen.
Er hat folgende Funktionen:
Prozesse
1. Überwachung und Restart der Oracle GoldenGateProzesse
2. Reporterstellung bei Schwellwertüberschreitungen
(zum Beispiel Latenzzeit)
3. Trail- und Log-File-Verwaltung
4. Speicherbereitstellung
5. Fehler- und Ereignisberichte (Reports)
6. Verarbeitung von Eingaben über das GGSCI
2.5.2Collector-Prozess
Der Collector-Prozess läuft als Hintergrundprozess auf
dem Zielsystem, empfängt die durch einen Extract-Prozess
übertragenen Informationen und speichert diese in einem
Trail beziehungsweise Extract File. Er wird automatisch
vom MANAGER gestartet, wenn eine Netzwerkverbindung
benötigt wird. In diesem Fall bezeichnet man ihn als „Dynamic Collector“ mit dem man nicht direkt zu tun hat. Es
besteht die Möglichkeit, einen Collector-Prozess manuell
zu starten, der dann als „Static Collector“ bezeichnet wird.
Ein dynamisch (automatisch) gestarteter Collector kann nur
für einen speziellen Extract-Prozess arbeiten. Ein manuell
gestarteter Collector arbeitet für mehrere Extract-Prozesse.
19
20 Prozesse
Die optimale Arbeitsweise ist die Nutzung von Dynamic Collector, weil dabei eine Eins-zu-eins-Beziehung zwischen EXTRACT
und COLLECTOR existiert. Darüber hinaus hat man mit dieser
Art von Collector keinerlei manuellen Aufwand.
2.5.3Extr act-Prozess (primär und sekundär)
Der Extract-Prozess erfasst die Änderungen an den Objekten der
Quelldatenbank und legt sie in einem sogenannten Local Trail
oder Remote Trail ab. Dazu liest der Extract das Change Log der
Datenbank und extrahiert die benötigten Informationen. Bei
Oracle beinhalten die Redolog Files die Datenbankänderungen.
Es werden dabei nur Transaktionen der Objekte verarbeitet, die
diesem Extract-Prozess zugeordnet und „commited“ sind. Der
Extract kann die Online-Redologs und die Archivelogs lesen.
Dabei erfasst er DML-Änderungen und wenn gewünscht auch
DDL-Änderungen.
Manager
Manager
LAN/WAN/Internet
Over TCP/IP
Change
Logs
Capture
Collector
Primärer
Extract
Abb.5: Extract-Prozess schreibt in ein Remote Trail
Trial
File
Remote
Trail
21
Prozesse
Schreibt ein Extract-Prozess ein lokales Trail File, ist die
spätere Übertragung dieses Files zur Zielplattform nötig.­
Diese Funktionalität realisiert bei GoldenGate der Data­
pump-Prozess. Das ist auch ein Extract-Prozess, der
aber im Unterschied zum primären EXTRACT ein bereits
erstelltes Local Trail File liest und diese Informationen in
ein Remote Trail File schreibt. Der Datapump-Prozess wird
deshalb auch als sekundärer Extract-Prozess bezeichnet.
Manager
Change
Logs
Manager
LAN/WAN/Internet
Over TCP/IP
Capture
Primärer
Extract
Trial
File
Local
Trail
Pump
Collector
Sekundärer
Extract
Trial
File
Remote
Trail
Abb.6: Primärer und sekundärer Extract-Prozess
Mit der aktuellsten Version 11gR2 wurde der Extract-Prozess, der auch häufig als Capture-Prozess bezeichnet wird,
funktionell erweitert. Diese Erweiterung betrifft nur die
Oracle-Datenbank. Mit INTEGRATED CAPTURE existiert
ein zusätzlicher Extract- beziehungsweise Capture-Prozess,
der auf der Grundlage von Oracle Streams arbeitet. Es gibt
also ab sofort zwei verschiedene Extract- beziehungsweise
Capture-Prozesse: CLASSIC CAPTURE und INTEGRATED
22 Prozesse
­ APTURE. Wie bei Oracle Streams, kann INTEGRATED CAPTURE
C
auch als DOWNSTREAM CAPTURE konfiguriert werden und
unterstützt neue Datenformate wie Compression, XML Object Relational, XML Binary, Secure Files, Nested Tables und Object Tables.
Merkmal
Datenbank
CLASSIC CAPTURE
INTEGRATED CAPTURE
Alle unterstützten Plattformen
Oracle Enterprise Edition
Nein
Ja
DOWNSTREAM CAPTURE
Redolog Based
Redolog-Verarbeitung
New Datatypes
Ja
Ja
Direkt
LogMiner
Nein
Ja
Tab.4: Gegenüberstellung von CLASSIC CAPTURE und INTEGRATED CAPTURE
Mit INTEGRATED CAPTURE nutzt Oracle GoldenGate den CaptureProzess von Oracle Streams. Die Erzeugung des Capture-­Prozesses
wird von GoldenGate angestoßen und erfolgt im Hintergrund automatisch. In diesem Dojo gehe ich auf den INTEGRATED CAPTURE
nicht ein, weil zum Verständnis Oracle-Streams-Wissen notwendig
ist. Informationen dazu findet man in der aktuellen Dokumentation
zu Oracle GoldenGate und Oracle Streams.
2.5.4Replicat-Prozess
Der Replicat-Prozess liest das Trail File und führt die übermittelten
Transaktionen (oder auch DDL-Operationen) auf der Zieldatenbank
Prozesse
durch. Damit sorgt er dafür, dass der Inhalt der Zieldatenbank dem Stand in der Quelldatenbank angepasst wird. Im
Normalfall sind die Objekte beider Datenbanken danach
identisch. Das Replizieren von Änderungen soll in der Regel
so schnell wie möglich erfolgen, weil nur so gewährleistet
ist, dass auch auf der Zielseite die aktuellsten Datenbestände verfügbar sind. Stimmen die Objekte auf Quell- und
Zieldatenbank überein, spricht man von einer Eins-zu-einsReplikation, und die Änderungen können ohne jede Modifikation in der Zieldatenbank ausgeführt werden. Ist das nicht
der Fall, muss dem Replikationsprozess die Struktur der
Objekte der Quelldatenbank mitgeteilt werden. Das wird
durch die Bereitstellung eines „Source Definition Files“
dem Replicat-Prozess mitgeteilt. Damit kennt dieser die
ursprünglichen Datentypen und kann die Änderungen einer
Transaktion für die Zielobjekte anpassen und durchführen.
Es ist weiter möglich, durch Filtern und Transformieren Änderungen ganz oder teilweise zu verhindern oder Daten vor
der Ausführung der Transaktion durch den Replicat-Prozess
zu modifizieren beziehungsweise zu verändern. Der Replicat-Prozess muss aber noch eine weitere wichtige Funktion
übernehmen. Das ist die Behandlung von Konflikten. Konflikte entstehen, wenn ein Datenbankobjekt gleichzeitig auf
mehr als einer Seite geändert wird (siehe Punkt 3).
23
24 Trail Files
2.6
Tr ail Files
Die vom Extract-Prozess gelesenen Redolog-Informationen
abgeschlossener Transaktionen werden in sogenannte GoldenGate Trail Files geschrieben. Diese Trail Files können auf der
Quellseite (Local Trail) oder auf der Zielseite (Remote Trail)
erstellt werden. Trail Files werden mittels ADD EXTTRAIL
(Local Trail) und ADD RMTTRAIL (Remote Trail) definiert. Die
Standardgröße beträgt 100 MB und sollte immer auf das Datenvolumen der Replikation angepasst werden. Trail Files sind
versionsabhängig. Die Version ist im File Header des Trail Files
eingetragen. Beim Replizieren in Richtung älterer GoldenGateVersionen muss der Extract-Prozess das Trail File im älteren
Format erstellen, sodass der Replicat-Prozess es lesen kann
(Parameter FORMAT bei ADD EXTTRAIL beziehungsweise
ADD RMTTRAIL). Der Name des Trail Files ist abhängig vom
Parameter TRAIL_NAME in der ADD-Anweisung:
TRAIL_NAME
Trail-File-Namen
d:\ogg_new_src\dirdat\tstact\rt
rt000000 bis rt999999
d:\ogg_new_tar\dirdat\tstact\rt
rt000000 bis rt999999
Tab.5: Bildung der Trail-File-Namen
Der Name eines Trail Files wird durch zwei beliebige Buchstaben (im Beispiel „rt“ für „remote trail“) und einer fortlaufenden sechsstelligen Nummer gebildet. Trail Files werden
Instantiierung und INITIAL-LOAD
standardmäßig im Unterverzeichnis „dirdat“ angelegt. In
Tabelle 5 sehen Sie, wie die Trail Files im Replikationsbeispiel im zweiten Teil des Dojo heißen werden. Sie befinden
sich nicht direkt im Verzeichnis „dirdat“, sondern in einem
weiteren Unterverzeichnis „tstact“. Dieser Verzeichnispfad
muss vor dem Start des Extract-Prozesses manuell angelegt
werden. Die Files haben in beiden GoldenGate-Instanzen
die gleichen Namen. Extract- und Replicat-Prozess erstellen
jeweils Checkpoint-Informationen, mit der augenblicklichen Schreib- beziehungsweise Leseposition im Trail File.
Diese Informationen ermöglichen jederzeit den Neustart
eines GoldenGate-Prozesses nach dem Stoppen oder nach
Abbruch durch einen Fehler (zum Beispiel Netzwerkausfall). Die Checkpoint-Informationen werden im Verzeichnis
„dirchk“ gespeichert. Es wird empfohlen, für den ReplicatProzess eine Checkpoint Table in der Zieldatenbank zu
benutzen. Im zweiten Teil des Dojo benutzen die beiden
Replicat-Prozesse eine spezifische Checkpoint Table, die immer nur von einem Replicat-Prozess genutzt werden kann.
2.7
Instantiierung und INITIAL-LOAD
Unter INITIAL-LOAD versteht man die Bereitstellung der
Replikationsobjekte auf der Zielseite beziehungsweise in
der Zieldatenbank mit oder ohne Inhalt. Die Objekte auf
25
26 Instantiierung und INITIAL-LOAD
der Zielseite (zum Beispiel Tabellen) können dabei auch völlig
anders aussehen als auf der Quellseite. Abhängig von einer
geplanten Replikation umfasst das eine oder mehrere dieser
Aktionen:
1. Anlegen der Objekte in der Zieldatenbank
2. Export auf Quelldatenbank und Import
in Zieldatenbank
3. Create Table As Select (CTAS)
Das Wichtigste bei der Instantiierung ist die Konsistenz der
Daten der Replikationsobjekte. Oracle GoldenGate kennt
den Begriff der „Commit Sequence Number“ (CSN). Da jede
erfolgreiche Transaktion mit einem COMMIT endet, hat jede
Transaktion eine bestimmte CSN. Die Konsistenz der DatenBegriff
Erklärung
Hinweis
Instantiierung
Festlegen des Beginnpunktes
für das Replizieren in die
Zieldatenbank
Betrifft jede Zieldatenbank
Startposition für ReplicatProzess
INITIAL-LOAD
Erstellung und Befüllung der
Replikationsobjekte auf der
sekundären Datenbank
Tab.6: Instantiierung und INITIAL-LOAD
unidirektional: sekundäre
Datenbank
bidirektional: sekundäre und
primäre Datenbank
Betrifft Objekte und deren
Inhalt, ist nicht immer
notwendig und findet nur für
die sekundäre Datenbank statt
27
Instantiierung und INITIAL-LOAD
bank basiert auf abgeschlossenen Transaktionen. Verhindert
man den Beginn neuer Transaktionen, dann ist die Datenbank nach Beendigung der laufenden Transaktionen zu
einer bestimmten CSN konsistent. Jedes Datenbanksystem
generiert eigene, eindeutig fortlaufende Nummern für jede
Transaktion. Bei Oracle ist das die „System Change Number“ (SCN). Wie das Äquivalent für die CSN bei anderen unterstützten GoldenGate-Plattformen aussieht, beschreiben
die einzelnen GoldenGate Administrator’s Guides. Instantiierung und INITIAL-LOAD am Beispiel einer Oracle-OracleReplikation sehen deshalb immer so aus:
Primäre Datenbank
Datensicherung
konsistent zu
SCN x
Sekundäre Datenbank
INITIAL-LOAD
konsistent zu
SCN x
Instantiierung: SCN x+1
Replikation beginnt bei
SCN x+1
Zeit
t1 t2
t3
t4
t5 t6
Abb.7: INITIAL-LOAD und Instantiierung
INITIAL-LOAD findet immer nur in der sekundären Datenbank statt. Entschließt man sich, auch in die entgegengesetzte Richtung zu replizieren, also von der sekundären zur
28 GoldenGate Software Command Interface (GGSCI)
primären Datenbank, findet kein INITIAL-LOAD statt, weil die
Replikationsobjekte schon existieren. Die Instantiierung muss
dagegen auch für diese Replikationsrichtung auf der primären
Datenbank stattfinden. Es sind natürlich Sonder­fälle möglich,
in denen parallel zu einer Replikation eine weitere Replikation
in die Gegenrichtung stattfinden könnte,­zum Beispiel für
Objekte aus einem anderen Schema. Man sollte aber immer
die Übersichtlichkeit wahren, logisch strukturiert vorgehen
und eine sekundäre Datenbank nicht gleichzeitig als primäre
Datenbank betreiben.
2.8
GoldenGate Software Command Interface
(GGSCI)
GoldenGate stellt eine eigene Kommandoumgebung bereit,
den Oracle GoldenGate Command Interpreter. Aktiviert
wird diese Umgebung durch Eingabe des Kommandos
GoldenGate Software Command Interface (GGSCI) in einem
Command-Prompt-Fenster (siehe Abbildungen 8, 9 und 10).
Nach Eingabe des Kommandos GGSCI befindet man sich in
der GoldenGate-Kommandoumgebung.
Hier kann man einzelne GoldenGate-Kommandos eingeben
oder OBEY-Kommando-Files abarbeiten.
GoldenGate Software Command Interface (GGSCI) 1.
GoldenGate
InstallationsVerzeichnis
auswählen
2.
Rechter Mausklick
3.
Öffnen mit Mausklick
Abb.8: Öffnen eines Command-Prompt-Fensters unter Windows 7
Abb.9: Aufruf des GoldenGate Command Interpreter
29
30 GoldenGate Software Command Interface (GGSCI)
Abb.10: GoldenGate Command Interpreter – Beginnmeldungen
2.8.1GoldenGate-Kommandos
Es existieren Kommandogruppen für die einzelnen GoldenGateProzesse und für spezifische GoldenGate-Funktionalitäten.
Gruppe
Kommandos
Manager Commands
INFO, SEND, START,STATUS, STOP
(Manager Process)
(Extract Process)
ADD, ALTER, CLEANUP, DELETE, INFO, KILL, LAG,
SEND, START, STATS, STATUS, STOP
Replicat Commands
(siehe Extract Commands)
Extract Commands
(Replicat Process)
ER Commands
(Multiple E/R Processes)
INFO, KILL, LAG, SEND, START, STATS, STATUS, STOP
GoldenGate Software Command Interface (GGSCI) Gruppe
Kommandos
Trail Commands
ADD, ALTER, DELETE, INFO
(EXTTRAIL/RMTTRAIL)
Database Commands
DBLOGIN, ENCRYPT PASSWORD, LIST TABLES
Trandata Commands
ADD, DELETE, INFO
(Logging)
Checkpoint Table
Commands
ADD, CLEANUP, DELETE, INFO
Oracle Trace Table
Commands
ADD, DELETE, INFO
DDL Commands
DUMPDDL
Miscellaneous
Commands
!, ALLOWNESTED, CREATE SUBDIRS, FC, HELP,
HISTORY,
INFO ALL, INFO MARKER, OBEY, SHELL, SHOW,
VERSIONS, VIEW GGSEVT, VIEW REPORT
Tab.7: Kommandogruppen
2.8.2Kommando OBEY
Zur Erleichterung der Arbeit besteht die Möglichkeit, Kommandos in einem Flat File abzulegen. Mit dem Kommando
OBEY wird dieses File dann aufgerufen und die Kommandos werden der Reihe nach abgearbeitet. Diese KommandoFiles haben unter Windows die Filenamen-Erweiterung
„OBY“. Diese Funktionalität wird im Beispiel genutzt, um
Kommandos für das Aufsetzen und Löschen der Replikationsumgebung auszuführen. Pro Datenbank gibt es dabei
einen Setup- und einen Cleanup-Skript mit GoldenGateKommandos (siehe Teil 2, Punkt 8.4)
31
32 Wann entstehen Konflikte?
3 Konfliktbehandlung
3.1
Wann entstehen Konflikte?
Bei der Replikation werden die Änderungen an Datenbank­­
objekten einer Datenbank (Quelle) zu einer anderen Datenbank (Ziel) übertragen und dort ebenfalls ausgeführt. Damit
hält man beide Datenbanken synchron und verfügt in beiden
Datenbanken über aktuelle Datenbankobjekte. Das funktioniert aber nur, solange die Datenbankobjekte der Zieldatenbank ausschließlich durch die Replikation verändert werden.
Erfolgen noch Änderungen an den Zielobjekten von anderer
Seite, kann es zu folgenden Situationen kommen:
INSERT ein Datensatz, der durch die Replikation eingefügt
werden soll, existiert schon
UPDATE bei der Änderung des Inhalts einer Spalte stimmt
der Spalteninhalt der Quelldatenbank nicht mit dem Spalteninhalt der Zieldatenbank überein (BEFORE-IMAGE falsch!)
DELETE ein Datensatz, der gelöscht werden soll, existiert
nicht mehr
Vermeidung von Konflikten
3.2
Vermeidung von Konflikten
Am einfachsten vermeidet man Konflikte, indem man nur
einer Anwendung erlaubt Datenänderungen vorzunehmen.
Bei einer Aktiv-Aktiv-Replikation ist das aber nicht realisierbar, weil Änderungen von mindestens zwei Seiten gemacht
werden können. In solchen Fällen sollte durch technologische Regelungen bestimmt werden, dass Datenbankobjekte
beziehungsweise auch Spalten von Objekten nur durch eine
Seite verändert werden dürfen. Man könnte zum Beispiel­
die Erlaubnis zum Ändern von Daten auf bestimmte
Länder, Regionen oder Kunden begrenzen, sodass Daten
immer nur durch eine festgelegte Seite geändert werden
dürfen. DELETE-Konflikte verhindert man dadurch, dass
Anwendungen den Datensatz nicht löschen, sondern nur
als gelöscht kennzeichnen. Dazu muss das Datenbankobjekt
(zum Beispiel die Tabelle) eine zusätzliche Spalte für diese
Art der Kennzeichnung beinhalten. Weiterhin muss Anwendungslogik implementiert werden, die im Falle von Widersprüchen einen Lösungsweg definiert. Die Vermeidung von
Konflikten sollte deshalb so früh wie möglich berücksichtigt
werden, am besten schon bei der Planung und Erstellung
des Datenmodells. Ist das nicht möglich, sind in vielen
Fällen logische Änderungen für eine geplante Replikation
notwendig oder zumindest vorteilhaft.
33
34 Standardkonfliktlösungen
3.3
Standardkonfliktlösungen
In der Praxis zeigt sich immer wieder, dass bei jeder Replikation Konflikte auftreten, obwohl vorher nicht damit gerechnet
wurde. Oracle Streams verfügt deshalb schon seit mehreren­
Jahren über Standardkonfliktlösungen, die ab Version
11.2.1.0.1 unter der Bezeichnung „Conflict Detection and
Resolution“ (CDR) auch in Oracle GoldenGate implementiert
wurden:
INSERTROWEXISTS Datensatz existiert schon
UPDATEROWEXISTS Datensatz existiert,
aber BEFORE-IMAGE stimmt nicht überein
UPDATEROWMISSING Datensatz existiert nicht
DELETEROWEXISTS Datensatz existiert,
aber mindestens ein BEFORE-IMAGE stimmt nicht überein
DELETEROWMISSING Datensatz existiert nicht
CDR steht für Datenbanken aller Plattformen außer „NonStop“ bereit und unterstützt die Datentypen NUMERIC,
DATE, TIMESTAMP, CHAR/NCHAR und VARCHAR/NVARCHAR, das heißt Spalten dieser Datentypen können bei
GETBEFORECOLS und COMPARECOLS verwendet werden.
Die verfügbaren Standardkonfliktlösungen sind: USEMIN,
USEMAX, USEDELTA, DISCARD, OVERWRITE und IGNORE.
35
Standardkonfliktlösungen
USEDELTA ist nur für Datentyp NUMERIC möglich. Um
Konflikte zu erkennen und zu behandeln, müssen Extractund Replicat-Prozess entsprechend konfiguriert werden.
Tabelle 8 zeigt die Parameter, die in der TABLE-Anweisung
(EXTRACT) beziehungsweise in der MAP-Anweisung (REPLICAT) anzugeben sind, um sowohl die Konflikterkennung als
auch die Konfliktlösung zu aktivieren:
EXTRACT
REPLICAT
Konflikterkennung
Konfliktlösung
--oder
GETBEFORECOLS
---
Nein
Nein
GETBEFORECOLS
COMPARECOLS
Ja
Nein
GETBEFORECOLS
COMPARECOLS
RESOLVECONFLICT
Ja
Ja
Tab.8: Voraussetzungen für die Konfliktbehandlung
Syntax der Anweisungen
Die Anweisungen zur CONFLICT DETECTION and
RESOLUTION (CDR) der GoldenGate Version 11gR2
sind nicht kompatibel mit Anweisungen früherer
Versionen.
36 Globalisierung
4 Globalisierung
Wie schon erwähnt, unterstützt GoldenGate eine Vielzahl von
Plattformen (siehe Punkt 2.3). Auf diesen Plattformen werden
unterschiedliche Zeichensätze (Character Sets) verwendet. Für
die Replikation zwischen unterschiedlichen Systemen müssen die
Daten zwischen diesen Zeichensätzen konvertiert werden. In der
Oracle-Welt kennen wir den Parameter NLS_LANG zur Spezifi­
kation des korrekten Character Sets der Oracle Client Sessions. Für
die hier gezeigte Aktiv-Aktiv-Replikation einer Tabelle zwischen
zwei Oracle-Datenbanken auf identischer Plattform spielt die
Globalisierungsproblematik keine Rolle. Da aber die GoldenGateProzesse aus Sicht des Datenbankservers auch Client Sessions
sind, werde ich hier noch auf den Parameter SETENV eingehen.
Globalisierung in Oracle GoldenGate 11gR2 beinhaltet alle Themen,
die in Tabelle 9 aufgeführt sind.
In den Parameter Files der Aktiv-Aktiv-Replikation im zweiten Teil
des Dojo ist NLS_LANG nicht explizit gesetzt. Wie in Tabelle 9
dargestellt, leitet sich dieser Parameter für den Extract-Prozess
von der Quelldatenbank und für die GoldenGate-Kommando­
umgebung und den Replicat-Prozess vom Betriebssystem ab. Da
im Beispiel überall das gleiche Character Set zu finden ist, wurde
auf die Angabe des Parameters
SETENV (NLS_LANG = “AMERICAN_AMERICA.WE8MSWIN1252“)
verzichtet.
37
Globalisierung
Thema
Gegenstand
Character Set
(CS)
Conversion
Database, Session/Client,
Operating System and
Terminal CS
Parameter, Trail and
Definition File
Erläuterung
Datenbank CS Konfiguration hängt von
der Datenbank ab, CS wird über Parameter
gesetzt, gilt auch für Redolog-Daten, für GG
gilt Session CS,
Terminal CS = NLS_LANG! (Oracle)
Trail Files können anderes CS haben
→Info im Trail oder Definition File
siehe Parameter: NOEXTATTR
Partial CS
Conversion
Local Trail or Remote Trail
Ab 11gR2 Datenbank CS Info im Local Trail/
Remote Trail File
siehe Parameter: _TRAILCHARSET
Object Name
Enhancements
Case Sensitivity, Wildcard,
Parameter Syntax Change,
Limitations
Unterstützt Umlaute (zum Beispiel: ä, Ä),
„Multi Byte Characters“, Leerzeichen,
Klein- und Großbuchstaben
siehe Parameter: _CASESENSITIVE
Native
Database
Error Message
Support
Capture Native Database
Error Messages and output to
Report File
Erfordert sprachkompatibles Betriebssystem
(zum Beispiel: keine korrekte Darstellung
japanischer Meldungen unter deutschem
Betriebssystem)
Implicit
NLS_LANG
Setup
GG sets NLS_LANG if it is not
set or incorrect
Parameter wird abgeleitet für:
Extract → immer Datenbank-Zeichensatz
GGSCI → Betriebssystem-Zeichensatz
Replicat → Betriebssystem-Zeichensatz
Achtung → selbst richtig setzen!!!
User Token
Name and Value in Trail File
„Multi Byte Characters“ möglich
New
Parameters
in 11gR2
SESSIONCHARSET
NOEXTATTR
CHARSET
UPDATECS
USEANSISQLQUOTES
_NOCHARSETCONVERSION
_TRAILCHARSET
Nicht alle diese Parameter betreffen eine
Oracle-Datenbank. Zur Bedeutung bitte
nachschauen im:
„Windows and Unix Reference Guide“
(siehe Punkt 9.1)
Tab.9: Voraussetzungen für die Konfliktbehandlung
38 Globalisierung
Das führt aber zu einer Meldung vom Typ WARNING beim
Starten der Prozesse (siehe Punkt 8.8.3):
Replicat RE2SECO:
2012-08-13 15:21:18 INFO OGG-03501 WARNING:
N
LS_LANG environment variable is invalid or
not set.
Using operating system character set value of
WE8MSWIN1252.
Extract EX2PRIO:
2012-08-13 15:20:45 INFO OGG-03500
WARNING:
N
LS_LANG environment variable does not match
database character set,
o r not set. Using database character set value
of WE8MSWIN1252.
Den Einträgen in Tabelle 9 entsprechend, werden beide Character Sets abgeleitet. Beim Replicat-Prozess ist das immer korrekt.
Gefahr besteht aber für den Replicat-Prozess. Im Falle einer
plattformübergreifenden Replikation könnte der ReplicatProzess einen falschen Zeichensatz benutzen, wenn Betriebssystem- und Datenbank-Zeichensatz unterschiedlich sind. Es
ist immer zu empfehlen, NLS_LANG entsprechend zu setzen.
Damit vermeidet man mögliche Fehler durch Ableitung des
Parameters und bekommt auch keine Warnungsmeldungen in
den Report Files.
Übersicht
Parameter NLS_LANG: LANGUAGE_TERRITORY.CHARSET
Zu beachten sind neben dem Character Set auch die anderen beiden Bestandteile des Parameters NLS_LANG. Sie
bestimmen die Standardkonventionen für die Datenbanknachrichten, die Tages- und Monatsnamen, die Sortierreihenfolge (LANGUAGE), die Datumsangabe, das Währungszeichen und für die numerischen Formate (TERRITORY).
Das sind weitere Gründe dafür, den Parameter explizit
anzugeben. Im Report File würde das dann so aussehen:
...
-- Set Environment SETENV (NLS_LANG = "AMERICAN_AMERICA.WE8MSWIN1252")
Set environment variable (NLS_LANG=AMERICAN_AMERICA.WE8MSWIN1252)
...
5 Sicherheit
5.1
Übersicht
Im Rahmen dieses Dojo werden die Sicherheitsfunktionen
von GoldenGate nur überblicksweise behandelt. Schwerpunkt für eine sichere Replikation ist die Verschlüsselung der
Daten beginnend beim Extract-Prozess über das Ablegen in
Local Trail oder Remote Trail Files bis hin zur erfolgreichen
39
40 Passwort-Verschlüsselung
Verarbeitung durch den Replicat-Prozess auf der Zieldaten­
bank. Auch die Arbeit mit verschlüsselten Passwörtern
ist unterstützt (siehe nächster Punkt). In der Aktiv-AktivReplikation (Teil 2) wird auf Verschlüsselung verzichtet, weil
beide GoldenGate-Instanzen lokal auf dem gleichen Rechner
laufen und die replizierte Tabelle auch keine schützenswerten
Daten beinhaltet. Erwähnen möchte ich noch drei weitere
Funktionen zur Erhöhung der Sicherheit in der Replikations­
umgebung: Das ist die Kommandoautorisierung, der
Verbindungsaufbau von einem sicheren Zielsystem zu einem
Quellsystem außerhalb der Firewall sowie die Möglichkeit,
Passwörter zu verstecken. In Tabelle 10 sind alle GoldenGateSicherheitsfunktionen aufgeführt. An dieser Stelle möchte ich
darauf hinweisen, dass die in der Tabelle aufgeführte Sicherheitsfunktion „Hide Password“ in der Aktiv-Aktiv-Replikation
im zweiten Teil für den Extract-Prozess EX2PRIO genutzt wird
(siehe Punkt 8.3.1).
5.2
Passwort-Verschlüsselung
Sicherer als das Verstecken eines Passworts ist dessen Verschlüsselung. Oracle GoldenGate bietet dazu verschiedene
Möglichkeiten an. Der BLOWFISH-Algorithmus kann mit
einem selbst erzeugten oder einem Standardschlüssel (DEFAULT KEY) arbeiten. Die AES-Algorithmen benötigen immer
selbst erzeugte Schlüssel. Mit dem GGSCI-Kommando
41
Passwort-Verschlüsselung
Funktion
Was wird gesichert?
Wie wird gesichert?
Trail File Encryption
Verschlüsselung der Datensätze in
Local Trail oder Remote Trail Files
und bei der Übertragung über
Datenverbindungen
256-key Byte Substitution
Advanced Encryption Security:
AES-128, AES-192, AES-256
Password
Encryption
Verschlüsselung der Passwörter für
den Connect zur Datenbank,
Explizit verschlüsseln über GGSCI
AES-128, AES-192, AES-256
Blowfish
TCP/IP Encryption
Verschlüsselung des Datenverkehrs
über TCP/IP, Entschlüsselung durch
GG Instanz auf der Zielseite, wenn
kein Trail File Encryption aktiviert
AES-128, AES-192, AES-256
Blowfish
Command
Authentication
Überwachung aller über GGSCI
ausgeführten Kommandos
Konfiguration eines
„Command Security File” (CMDSEC)
Trusted Connection
Aktivierung der
Replikationsverbindung vom sicheren
Zielsystem (Trusted System)
Konfiguration eines
„Passive Alias Extract“ in der
GG Instanz auf dem Quellsystem
Hide Password
Benutzung von versteckten
Passwörtern
für den Connect zur Datenbank
Erstellung eines Connect-Makros im
Verzeichnis: ./dirmac
Tab.10: GoldenGate Security Features in 11gR2
ENCRYPT und dem Schlüssel generiert man ein kryptisches
Passwort, das dann beim DBLOGIN angegeben wird.
BLOWFISH: Passwort generieren mit Standardschlüssel (DEFAULT KEY):
D:\ogg_new_src>ggsci
Oracle GoldenGate Command Interpreter for Oracle
Version 11.2.1.0.1 OGGCORE_11.2.1.0.1_PLATFORMS_120423.0230
Windows x64 (optimized), Oracle 11g on Apr 23 2012 04:55:02
42 Passwort-Verschlüsselung
Copyright (C) 1995, 2012, Oracle and/or its affiliates. All
rights reserved.
GGSCI (JJT420) 1> encrypt password GGADMIN blowfish
No key specified, using default key...
Encrypted password:
Algorithm used:
AACAAAAAAAAAAAHADJHJYIDCMIYECBQG
BLOWFISH
BLOWFISH: DBLOGIN mittels verschlüsseltem Passwort:
GGSCI (JJT420) 2> dblogin userid ggadmin password AACAAAAAAAAAAAHADJHJYIDCMIYECBQG BLOWFISH encryptkey DEFAULT
Successfully logged into database.
GGSCI (JJT420) 3>
Für die Verwendung der AES-Algorithmen ist es notwendig,
Schlüssel mit dem Programm KEYGEN zu erzeugen und diese
unter eindeutigen Namen im File ENCKEYS zu speichern.
Das File ENCKEYS muss im GoldenGate-Installationsverzeichnis stehen.
AES-128: Schlüssel (KEY) mit Programm KEYGEN erstellen:
D:\ogg_new_src>keygen 128 1
0xAAF1D027E724633C5C4E8C76B4E77D78
Passwort-Verschlüsselung
AES-128: File ENCKEYS im GoldenGate-Installationsverzeichnis aufbauen:
# Key Name
Key Value
mykey1281
0xAAF1D027E724633C5C4E8C76B4E77D78
AES-128: DBLOGIN mittels verschlüsseltem Passwort:
GGSCI (JJT420) 4> encrypt password GGADMIN AES128 encryptkey
mykey1281
Encrypted password:
AADAAAAAAAAAAAHAGHXABGQGGBQCDHCDUJDAWC-
JAOADDAIFHTDRCWBOHWATEEJIFDIXGIEQBTEUBMANH
Algorithm used:
AES128
GGSCI (JJT420) 5> dblogin userid ggadmin password AADAAAAAAAAAAAHAGHXABGQGGBQCDHCDUJDAWCJAOADDAIFHTDRCWBOHWATEEJIFDIXGIEQBTEUBMANH aes128 encryptkey mykey1281
Successfully logged into database.
GGSCI (JJT420) 6>
43
44 GGSCI-Kommandos und -Reports
6 Administration und Überwachung
6.1
GGSCI-Kommandos und -Reports
Oracle GoldenGate bietet zahlreiche Möglichkeiten zur
Überwachung einer Replikationsumgebung. Die Tabelle 11
liefert eine Übersicht dazu:
Kommando
für Prozess
Ausgabe von
INFO
ALL
MANAGER
EXTRACT
REPLICAT
EXTTRAIL
RMTTRAIL
Statusinformationen zu den
GoldenGate-Prozessen:
Checkpoint-, Lag-, Port-,
Environment-Infos
Local-Trail- und Remote-Trail-FileInformationen:
Data Position, File Size
LAG
EXTRACT
REPLICAT
Zeitdifferenz zwischen letztem
verarbeiteten Satz und
der aktuellen Zeit in der Datenbank
STATUS
MANAGER
EXTRACT
REPLICAT
Statusangabe:
Starting, Running, Stopped, Abended
STATS
EXTRACT
REPLICAT
Statistikinformationen zum aktuellen
Verarbeitungsstand
SEND
MANAGER
EXTRACT
REPLICAT
Zusammenstellung von ProzessInformationen und Erstellung eines
vollständigen oder eines CDR Reports
VIEW REPORT
EXTRACT
REPLICAT
Anzeige eines durch SEND erzeugten
Reports
VIEW GGSEVT
---
Anzeige des Inhaltes des GoldenGate
Error Log
Tab.11: GGSCI-Kommandos
Oracle Management Pack for Oracle GoldenGate
Neben den Status- und Statistikinformationen können über
Kommandos auch umfassende Reports erzeugt werden.
Reports entstehen entweder auf Anforderung oder automatisch nach Beendigung der GoldenGate-Prozesse:
1.Erzeugen über Kommando SEND und anschauen über
VIEW REPORT
2.Report File nach Stoppen des Prozesses im Unterver­
zeichnis „dirrpt“ anschauen
Name: „prozess_name.rpt“ → zum Beispiel EX2PRIO.
rpt → letzter erzeugter ReportPro Prozess sind weitere
10 Reports verfügbar → zum Beispiel EX2PRIO0.rpt ...
EX2PRIO9.rpt (ältester!)
6.2
Or acle Management Pack for Or acle
GoldenGate
Die Bezeichnung lässt auf ein zusätzliches Softwarepaket für
den Oracle Enterprise Manager schließen. Das ist nicht falsch
aber auch nicht ganz richtig. Für die Erklärung muss man
in die Vergangenheit blicken. Als Oracle die Firma GoldenGate 2009 kaufte, gab es für die Administration von Oracle
GoldenGate ein grafisches Tool mit dem Namen GoldenGate
Director. Diese Komponente und ihr Name passten ganz und
gar nicht in die Oracle-Produktstrategie, weil bei Oracle das
45
46 Oracle Management Pack for Oracle GoldenGate
gesamte Systemmanagement mit dem Enterprise Manager und
seinen Mana­gement Packs durchgeführt wird. Deshalb wurde
sofort das Oracle Management Pack for Oracle GoldenGate
kreiert und der GoldenGate Director unter diesem Produktnamen eingeordnet. Damit wurde der GoldenGate Director dem
Kunden als Management Pack für GoldenGate verkauft, obwohl
beide Komponenten nichts miteinander zu tun hatten. In der
Zwischen­zeit hat Oracle hier entscheidend nachgebessert und
zwei völlig neue Produkte entwickelt:
1.Oracle GoldenGate Plug-in für den Oracle Enterprise Manager
12c Cloud Control
2.Oracle GoldenGate Monitor
Damit ist man nun endlich in der Lage, GoldenGate über den
Oracle Enterprise Manager (OEM) zu administrieren und zu überwachen. Mit dem GoldenGate Monitor wird zusätzlich noch ein
eigenständiges Monitoring Tool angeboten, das für alle Kunden
interessant sein könnte, die den OEM nicht einsetzen. Beide Produkte nutzen innerhalb der GoldenGate-Instanz den gleichen Java
Agent Client zur Kommunikation mit dem jeweiligen Server, dem
OEM Plug-in oder dem Monitor-Server. Zukünftige Weiterentwicklungen werden nur noch für diese beiden „java-agent-basierenden“ Produkte stattfinden. Damit ist die strategische Richtung
vorgegeben und der GoldenGate Director ein Auslaufprodukt. Auf
jedem System, auf dem GoldenGate-Instanzen überwacht werden
sollen, muss ein Java Runtime Environment (JRE) 1.6 oder höher
Oracle Management Pack for Oracle GoldenGate
installiert sein. Dabei ist zu beachten, dass eine system­
konforme Version installiert ist, das heißt auf einem 64-BitSystem auch eine 64-Bit-JRE beziehungsweise auf einem
32-Bit-Sytem eine 32-Bit-JRE.
6.2.1Or acle Enterprise Manager Plug-in
Das Plug-in für den Oracle Enterprise Manager gibt es erstmals ab OEM Cloud Control 12c Bundle Patch 1 (12.1.1.1.0).
Unterstützt wird GoldenGate ab Version 11.2.1.0.1. Als Verbindung von GoldenGate zum Enterprise Manager fungiert
ein Java Agent Client, der als zusätzlicher GoldenGate-Prozess läuft und über den Parameter ENABLEMONITORING
in der Parameterdatei GLOBALS aktiviert werden muss.
Wenn eine GoldenGate-Instanz das OEM Plug-in verwenden
will, muss in der Datei „config_properties“ im Verzeichnis
„cfg“ der Parameter AGENT_TYPE.ENABLED auf OEM
gesetzt werden (siehe Punkt 8, Tabelle 14). Das Plug-in
unterstützt das Monitoring auf allen Plattformen außer HP
NonStop, IBM iSeries und IBM z/OS. Zum Enterprise Manager 12c Cloud Control existiert das Dojo Nr. 3. Im Punkt 4
„Aktuell bleiben mit Self Update“ sind die Schritte beschrieben, wie man ein zusätzliches Plug-in verfügbar macht
(deployed). In diesem Dojo wird deshalb die Verfügbarkeit
des GoldenGate Plug-in vorausgesetzt.
47
48 Oracle Management Pack for Oracle GoldenGate
Abb.11.1: OEM Oracle GoldenGate-Homepage – keine Targets vorhanden
Abb.11.2: Abb. 11.2: OEM Oracle GoldenGate-Homepage – Target-Auswahl
Abb.11.3: OEM Plug-in – Self Update – Version des GoldenGate Plug-in
Oracle Management Pack for Oracle GoldenGate
In der Abbildung 11.1 sieht man die GoldenGate-Homepage
ohne registrierte Java Agents (Status AGENT UNREACHABLE).
Über „Targets“ → „GoldenGate“ kann man GoldenGate-Instanzen suchen (Abbildung 11.2). Die Java Agents der Instanzen werden dann unter OEM Cloud Control registriert.
In Abbildung 11.3 sehen wir eine Übersicht der verfügbaren
OEM Plug-ins. Darunter befindet sich auch das Golden­Gate
Plug-in in der ersten verfügbaren Version. Über „Self Update“ kann man auf eine aktuellere Version (wenn verfügbar)­
wechseln.
6.2.2Or acle GoldenGate Monitor
Das Datenblatt zum Management Pack for Oracle Golden­
Gate bezeichnet den Einsatz des Monitors als „Next Generation Monitoring“. Der Monitor ist eine Client/ServerJava-Lösung und nutzt einen Apache Tomcat Web Server der
automatisch mitinstalliert wird. Gegenwärtig unterstützt
der Monitor-Server bis zu zwanzig GoldenGate-Instanzen.
Jede dieser Instanzen kann dabei bis zu fünfzig Prozesse
haben. Für die Nutzung des GoldenGate Monitors gelten die
gleichen Voraussetzungen wie bei Nutzung des OEM Plugin. Über die Parameterdatei GLOBALS muss der Java Agent
Client wie unter 6.2.1 beschrieben, aktiviert werden. Der Para­
meter AGENT_TYPE.ENABLED muss aber für die Verbindung
zum Monitor Server auf OGGMON gesetzt werden.
49
50 Oracle Management Pack for Oracle GoldenGate
Oracle GoldenGate Instance
Monitor
Agend
Manager
External
Monitoring
Service
SNMP
Data
base
Trial
JMX
Command
Line
Integration
E-Mail
Extract/
Replicat
Oracle GoldenGate Instance
SMPT
Monitor
Server
JMX
Repository
JMX
Monitor
Agend
Manager
Extract/
Replicat
Data
base
Trial
HTTP/
HTTPS
Web
Browser
UI
Oracle GoldenGate Instance
Monitor
Agend
Manager
Abb.12: Oracle GoldenGate Monitor-Architektur
Auf die Installation des GoldenGate Monitors gehe ich im
Dojo nicht ein. Schauen Sie dazu bitte im Monitor Admin
Guide nach (siehe Punkt 9).
Extract/
Replicat
Data
base
Trial
Oracle Management Pack for Oracle GoldenGate
Konfigurationspunkt
Eingabewert
Bemerkung
Repository Database
Typ: Oracle, SID: ORAP
Speichern von MonitorDaten
Database Connect Info
Localhost:1521:orap
Für Monitor Server
Connect
Repository User ID
ggmon/GGMON
User / PW für Monitor
Server
Windows 7 Service Name
Oracle GoldenGate
Monitor
Im Task Manager:
GGMonitor
GG Monitor Admin User
ID
master/MASTER
User / PW für Tomcat
HTTP Port für Tomcat
5510
Standard: 5500 (DB
Control!)
HTTPS Port für Tomcat
nicht benutzt
Standard: 5505
Shutdown Port
5511
Standard: 5501
JMX Host Name
Localhost
Für den Test ausreichend
JMX Server Port
5512
Standard: 5502
JMX User ID
jmxuser/JMXUSER
User / PW für JMX-Server
SNMP / E-Mail / CLI
Disabled
Für den Test nicht genutzt
Tab.12: Der GoldenGate Monitor-Konfigurationsparameter zeigt
die Konfiguration des hier genutzten GoldenGate Monitors.
51
52 Oracle Management Pack for Oracle GoldenGate
GG Komponenten Liste
Anzeige einstellen
Aktiv-Aktiv Topologie
Alle GG Prozesse
gestoppt! Abb.13: Data and Alerts View – Aktiv-Aktiv-Replikation – Prozesse im Status STOPPED
Aktiv-Aktiv Topologie
Alle GG Prozesse
gestartet! Abb.14: Data and Alerts View – Aktiv-Aktiv-Replikation – Prozesse im Status RUNNING
Oracle Management Pack for Oracle GoldenGate
GoldenGate Monitor – Data and Alerts View
Die Topologie kann auf drei verschiedene Arten angezeigt
werden. Dazu dienen die drei rechten Symbole in der
blau unterlegten Symbolzeile im oberen Teil. Es kann ein
Ausschnitt des gesamten Bildschirmes angezeigt werden,
der dann eine bessere Sichtbarkeit ermöglicht. Im rechten
unteren Fenster werden zur ausgewählten Komponente
Detailinformationen angezeigt (siehe Abbildung 14).
6.2.3Or acle GoldenGate Director
Der GoldenGate Director ist das älteste grafische Administrations- und Monitoring-Tool für eine Oracle GoldenGateReplikationsumgebung. Man muss einen WebLogic Server,
den Director Server und den Director Client installieren, um
mit dem GoldenGate Director arbeiten zu können.
Der Director Client besteht aus drei Komponenten: dem
Client Administrator, dem eigentlichen Client und dem
Director Web, einem Browser-Interface, das automatisch
mitinstalliert wird. Über den Client Administrator wird festgelegt, welche Datenbanken und GoldenGate-Prozesse für
die Clients sichtbar sind. Ein Client sieht also nur das, was
durch den Administrator bereitgestellt wurde. Im Dojo zeige
ich zwei Bildschirminhalte des Director Client, die einen
Eindruck verschaffen, wie die Topologie und die einzelnen
53
54 Oracle Management Pack for Oracle GoldenGate
Oracle WebLogic Server
Oracle GoldenGate
Director Server domain
Oracle GoldenGate
Director Web
GGSCI
Oracle GoldenGate
Director Server
Application
Oracle GoldenGate
Director Client
Oracle GoldenGate
Director
Administrator
GGSCI
Monitor
Agent
GGSCI
Oracle GoldenGate Director Database
Abb.15: Oracle GoldenGate Monitor-Architektur
Prozesse dargestellt werden. Eine Weiterentwicklung wird
es beim Director nicht geben. Strategische Produkte sind,
wie schon erwähnt, das Plug-in für OEM Cloud Control und
der GoldenGate Monitor. Gegenwärtig ist aber ein Verzicht
auf den Einsatz des GoldenGate Directors nicht in allen
Fällen möglich. Wie Tabelle 13 zeigt, unterstützen die beiden
neuentwickelten Produkte nur die aktuellsten GoldenGateVersionen. Ein weiterer Punkt sind die Funktionen, die zur­
zeit nur vom Director unterstützt werden:
Oracle Management Pack for Oracle GoldenGate
1.Editieren, Aktivieren und Deaktivieren von
GoldenGate-Parametern
2.GGSCI-Fenster zum Ausführen von
GoldenGate-Kommandos
3.Starten und Stoppen der GoldenGate-Prozesse
Augenblicklich ist nur der GoldenGate Director als Administrations- beziehungsweise Konfigurationstool einsetzbar.
Monitor und OEM Plug-in sind bis jetzt nur zum Anzeigen
von Informationen in der Lage.
Alle GG Prozesse
gestartet! Aktiv-Aktiv Topologie
Remote-File Details
Abb.16: Topologie der Aktiv-Aktiv-Replikation – Prozesse gestartet
55
56 Oracle Management Pack for Oracle GoldenGate
Extract/Replicat
Prozesse gestoppt!
Aktiv-Aktiv Topologie
RE2SECO Details
Abb.17: Topologie der Aktiv-Aktiv-Replikation – Extract- und Replicat-Prozesse gestoppt (x)
Abb.18: Topologie der Aktiv-Aktiv-Replikation – Ausschnitt oberes Fenster – Topologie
Oracle Management Pack for Oracle GoldenGate
Prozesse können über Mausklick markiert werden. Markierte Prozesse werden über Klick auf das Start- oder Stoppsymbol gestartet beziehungsweise gestoppt. Das passiert durch
Ausführen des entsprechenden Kommandos in der GGSCIUmgebung. Wie bei einem Mediaplayer ist das Startsymbol
das kleine Dreieck und das Stoppsymbol das kleine Viereck
in der Symbolzeile oben.
Sie sehen hier alle GoldenGate-Komponenten der AktivAktiv-Replikation. Die beiden Manager der Instanzen laufen
noch, sonst wären auch die beiden gelben „Data Source“Symbole mit einem roten Kreuz gekennzeichnet. Jede
Komponente kann man mit Mausklick auswählen. Es werden dann alle verfügbaren Informationen dazu im unteren
Fenster des Bildschirms angezeigt (siehe RE2SECO-Details
in Abbildung 17). Die Anordnung der Komponentensymbole
ist frei wählbar und kann jederzeit verändert werden.
6.2.4Gegenüberstellung
Die Funktionsübersicht in Tabelle 13 basiert auf der ersten
Version des GoldenGate Monitors und des OEM Plug-in.
Die fehlenden Funktionalitäten des GoldenGate Directors
sollen so schnell wie möglich in die beiden neuen Tools
übernommen werden. Damit entfällt die Notwendigkeit
der Nutzung des Directors und der Name „Oracle Mana­
57
58 Oracle Management Pack for Oracle GoldenGate
Merkmal
OEM Plug-in
OGG Monitor
OGG Director
Unterstützt GoldenGate V10.4
Nein
Nein
Ja
Unterstützt GoldenGate V11.x
Nein
Nein
Ja
Unterstützt GoldenGate V11.1.1.1.1
Nein
Ja
Ja
Unterstützt GoldenGate V11.2.1.0.1
Ja
Ja
Ja
Parameter Files konfigurieren
Nein
Nein
Ja
Automatische Parameterwahl
Nein
Nein
Ja
Prozesse starten und stoppen
Nein
Nein
Ja
GGSCI-Kommandoumgebung
Nein
Nein
Ja
User Management
Nein
Ja
Ja
View Management
Nein
Ja
Ja
GoldenGate Topologie anzeigen
Ja
Ja
Ja
GoldenGate-Prozesse anzeigen
Ja
Ja
ja
Verzögerungszeit (Lag Time)
anzeigen
Ja
Ja
Ja
Historische Daten anzeigen
Ja
Ja
Ja
ALERT Anzeige
Nein
Ja
Ja
ALERT Definition
Nein
Ja
Ja
ALERT History
Nein
Ja
Ja
SNMP Support
Nein
Ja
Ja
CLI ALERTS
(CLI – Command Line Integration)
Nein
Ja
Ja
E-mail ALERTS
Nein
Ja
Ja
Tab.13: F
unktioneller Vergleich der Produkte des Oracle Management
Pack für Oracle GoldenGate
Oracle GoldenGate Veridata
gement Pack für Oracle GoldenGate“ erlangt vollständige
Berechtigung.
6.3
Or acle GoldenGate Veridata
Oracle Veridata ist ein Tool zum Vergleich zweier Datenbanken während der GoldenGate-Replikation. Das Tool existierte
in seiner jetzigen Form schon bei der Übernahme der Firma
GoldenGate im Jahr 2009. Es ist in der Lage, Unterschiede
zwischen den Datenbankobjekten auf der Quell- und der
Zieldatenbank zu ermitteln und übersichtlich anzuzeigen.
Veridata kann parallel zur Replikation laufen und toleriert
bei der Feststellung von Abweichungen Replikationsverzögerungen. Es ist ein eigenständiges Produkt und muss bei
Nutzung zusätzlich lizenziert werden. Für die hier gezeigte
Aktiv-Aktiv-Replikation ist dieses Tool völlig überflüssig, weil
keinerlei Datenbestände repliziert werden, die auf eventuelle
Inkonsistenzen untersucht werden könnten. Ich beschränke
mich im Dojo deshalb auf eine Architekturübersicht zu
diesem Produkt.
Seit 2009 hat sich an Veridata nichts verändert. Bis auf die
Anpassung der Systemdokumentation an den Oracle-Standard entspricht die Komponente dem Stand bei der Übernahme von GoldenGate durch Oracle. Der Administrator’s
Guide (siehe Link in Punkt 9) weist die Version 3 aus,
59
60 Oracle GoldenGate Veridata
entspricht aber noch der GoldenGate Version 10.4.
GoldenGate
Verdidata
Web
GoldenGate
Verdidata
CLI
GoldenGate
Verdidata
Server
Programm:
VERICOM
Repository
GoldenGate
Verdidata
Agent
Source
Database
GoldenGate
Verdidata
Agent
Target
Database
2 Versionen:
C-Client
Java-Client
Abb.19: Oracle GoldenGate Veridata-Architektur
Oracle GoldenGate Veridata
Teil II
GoldenGate 11gR2
Replikationsbeispiel
61
62 Oracle GoldenGate Veridata
Teil II
GoldenGate 11gR2
Replikationsbeispiel
Im zweiten Teil des Dojo sollen Sie selbst eine Replikation
aufbauen. Dazu müssen Sie die beschriebenen Aktionen
ausführen. Aktionen und Hinweise sind durch diese
Symbole gekennzeichnet:
Aktion
Hinweis
Wenn möglich, verweise ich bei den Aktionen auf die
entsprechenden Punkte des ersten Teils des Dojo.
SQL-Skripte, Parameter Files, OBEY Files sollten Sie mit
Cut & Paste in eigene Dateien kopieren, anpassen und dann
ausführen.
SQL-Skripte führen Sie bitte unter SQLPlus aus. OBEY
Files und OBEY-Kommandos müssen in der GoldenGateKommando­umgebung (GGSCI) ausgeführt werden.
goldengate-installation
7 GoldenGate-Installation
Wie in Punkt 2.4 beschrieben, müssen Sie zuerst Golden­
Gate installieren. Dabei ist zu beachten, dass Sie das für Ihre
Plattform passende „Software Build“ auswählen. Da meine
beiden GoldenGate-Verzeichnisse schon existieren, zeige
ich die In­stallation in einem neuen Verzeichnis. Im Beispiel
benötigen wir GoldenGate 11.2.1.0.1 für Windows 64-Bit für
Oracle 11gR2:
Download
GoldenGate für Oracle 11gR2 auf Windows 7,
Entpacken und Aufbau des Installationsverzeichnisses
Abb.20: GoldenGate – Software-Download
63
64 goldengate-installation
ür den Download von edelivery.oracle.com benötigen
F
Sie einen Login Oracle Account.
An dieser Stelle entpacken Sie das Zip File in einen Ordner
Ihrer Wahl (hier: „GG_Download“) und erzeugen dort die benötigte GoldenGate-Verzeichnisstruktur. Danach müssen Sie
noch zusätzlich den Ordner „dirmac“ für den später benötigten Makro DBCONNECT.MAC anlegen.
Abb.21: GoldenGate – Entpacken der Software
goldengate-installation
Nach dem Entpacken öffnen Sie bitte ein CommandPrompt-Fenster im Ordner „GG_Download“ und rufen den
GoldenGate CommandInterpreter auf (siehe Punkt 2.8).
Dort führen Sie dann den Befehl CREATE SUBDIRS aus:
Abb.22: GoldenGate – Erstellen der Unterverzeichnisse
Jetzt noch das Verzeichnis „dirmac“ erstellen und die
Installation ist beendet.
65
66 Aufbau einer aktiv-aktiv-replikation
8 Aufbau einer Aktiv-AktivReplikation
Tabelle 14 beinhaltet alle im Beispiel der Aktiv-AktivReplikation genutzten GoldenGate-Funktionen.
Bereich
Thema
Beschreibung
A
Databases (EE, 11.2.0.3)
Primary: ORAP | Secondary: ORAS (Same Laptop)
A
GoldenGate (11.2.1.0.1)
ORAP → d:/ogg_new_src | ORAS → d:/ogg_new_tar
A
DB Supplemental Logging
YES | IMPLICIT
A
Replication Object
Table: GG_HEARTBEAT_TABLE
A
Replication Object Logging
Primary Key
A
Replication
Bidirectional aka Multimaster
A
Local Trail or Remote Trail
Remote Trail
A
Checkpoint Table
Specific Table in ORAP | Specific Table in ORAS
P
Replication Processes
Primary Extract (Capture) | Replicat (Apply, Delivery)
P
Extract (Capture)
Classic Capture
P
Collector
Dynamic Collector
P
Replicat (Apply)
1:1 Mapping | Conflict Detection and Resolution (CDR)
P
Java Agent Client
./GLOBALS → ENABLEMONITORING (11gR2)
CI
GGS Command Interface
Commands | OBEY Files
CI
OBEY Files
Setup/Cleanup Scripts for primary and secondary DB
CI
Reporting
SEND p_name, REPORT | STATS p-name, REPORTCDS
Überblick und Voraussetzungen
Bereich
67
Thema
Beschreibung
CDR
TABLE Statement (Extract)
GETBEFORECOLS (ON UPDATE ALL)
CDR
MAP Statement (Replicat)
COMPARECOLS (ON UPDATE ALL) | RESOLVECONFLICT
CDR
RESOLVECONFLICT
UPDATECOLEXISTS
CDR
UPDATECOLEXISTS
USEMAX | default: OVERWRITE | Default: IGNORE
G
Implicit NLS_LANG Setup
If omitted than database or operating system value will be
assumed. (siehe Tabelle 9)
S
Hide Password
USERID / PW information exists only in a connect macro.
Use NOLIST / LIST to suppress parameter info in reports.
(siehe Tabelle 10)
M
Management Pack for OGG
Oracle Enterprise Manager Plug-in | GoldenGate Monitor
Java Agent Client Process must be started! (see above)
M
OEM Plug-in
./cfg/config_properties → agent_type.enabled=OEM
M
GoldenGate Monitor
./cfg/config_properties → agent_type.enabled=OGGMON
Tab.14: A
ktiv-Aktiv-Replikationsbeispiel im Überblick
A – Architecture P – Processes CI – GoldenGate Software Command Interface
CDR – Conflict Detection and Resolution G – Globalization S – Security M – Monitoring
8.1
Überblick und Vor aussetzungen
Werfen wir zuerst einen Blick auf die Topologie der AktivAktiv-Replikation. Die hier abgebildete Replikationsum­
gebung soll bis zur vollständigen Lauffähigkeit konfiguriert
werden. Beteiligt sind zwei Datenbanken, die primäre
Datenbank ORAP und die sekundäre Datenbank ORAS.
Da beide Datenbanken sowohl Quelle als auch Ziel sind,
sollte man im Sinne der Übersichtlichkeit von primärer und
68 Überblick und Voraussetzungen
sekundärer Datenbank sprechen. Beide Datenbanken sind
Oracle Enterprise Editions der Basisversion 11.2.0.3, die auf
demselben Rechner laufen. Sie könnten aber auch Datenbanken der Version 11gR1 benutzen. Oracle GoldenGate
muss zwingend Version 11.2.1.0.1 oder höher sein.
Capture
Änderung der Tabelle:
Delivery
LAN/WAN/Internet
Over TCP/IP
Manager
ORAP
Delivery
Trial
File
GG_HEARTBEAT_TABLE
Manager
ORAS
Änderung der Tabelle:
Trial
File
Capture
GG_HEARTBEAT_TABLE
Tab.23: Topologie der Aktiv-Aktiv-Replikation
Beginnen wir jetzt mit dem Konfigurieren der Aktiv-AktivReplikation:
Festlegen
der Namen und Verzeichnisse der eigenen
Umgebung
Merkmal
Umgebung im Dojo
GLOBAL_NAME
Primäre Datenbank
Sekundäre Datenbank
orap.de.oracle.com
oras.de.oracle.com
TNSNAMES Alias
Primäre Datenbank
Sekundäre Datenbank
orap
oras
Eigene Umgebung
Voraussetzungen in primärer und sekundärer Datenbank
Merkmal
Umgebung im Dojo
GoldenGateInstallationsverzeichnis
Primäre Instanz
Sekundäre Instanz
d:\ogg_new_src
d:\ogg_new_tar
GoldenGate Trail Files
Primäre Instanz
Sekundäre Instanz
d:\ogg_new_tar\dirdat\tstact
d:\ogg_new_src\dirdat\tstact
GoldenGate Admin User ID
ggadmin
Name Replikationsobjekt
(Tabelle)
gg_heartbeat_table
Schema des
Replikationsobjektes
tstact
Name der Änderungsprozedur
Primäre Datenbank
Sekundäre Datenbank
gg_heartbeat_proc_p
gg_heartbeat_proc_s
Name des zyklischen
Datenbank-Jobs
Primäre Datenbank
Sekundäre Datenbank
gg_heartbeat_job_p
gg_heartbeat_job_s
Eigene Umgebung
Tab.15: Angaben zur Replikationsumgebung
8.2
Vor aussetzungen in primärer und
sekundärer Datenbank
8.2.1ARCHIVELOG Mode
ARCHIVELOG
Mode kontrollieren beziehungsweise
einstellen
69
70 Voraussetzungen in primärer und sekundärer Datenbank
Grundlage der Oracle-Replikation sind die Redolog-Infor­
mationen, die bei allen Änderungen innerhalb der Daten­
bank in Online Redolog Files geschrieben werden. Ist ein
Redolog File gefüllt, wird automatisch auf das nächste File
umgeschaltet. Da es nur eine begrenzte Anzahl Redolog Files gibt, werden diese im „Wrap-Around"-Verfahren
wieder­verwendet. Im NOARCHIVELOG-Modus passiert das
unabhängig davon, ob der Inhalt des Online Redolog Files
zwischenzeitlich gesichert wurde oder nicht. Um Datenbankänderungen für Recovery-Situationen oder für Replikationszwecke zu archivieren, gibt es den ARCHIVELOG-Modus.
Dieser Modus prüft vor Wiederverwendung eines Online Redolog Files, ob dieses gesichert (archiviert) wurde. Wenn ja,
dann wird das File wiederverwendet, wenn nein, dann wartet
die Datenbank, bis die notwendige Sicherung durchgeführt
wurde. Im ARCHIVELOG-Modus sichert ein Oracle-Hintergrundprozess (zum Beispiel ARC0) den Inhalt sofort, wenn
das Online Redolog File gefüllt ist, und es kommt nicht zum
Stillstand der Datenbank.
SQLPlus → c onnect / as sysdba
archive log list
Voraussetzungen in primärer und sekundärer Datenbank Die ersten beiden Zeilen (rot) müssen so aussehen:
SQL> archive log list
Datenbank-Log-Modus
Archive-Modus
Automatische Archivierung
Aktiviert
Archivierungsziel
D
:\Oracle\archivelogs\
orap
Älteste Online-Log-Sequenz
175
Nächste zu archivierende Log-Sequenz
177
Aktuelle Log-Sequenz
177
SQL>
Ist das nicht der Fall, muss in der Datenbank der ARCHIVELOG-Modus aktiviert werden:
SQLPlus → s hutdown immediate
startup mount
alter database archivelog;
alter database open;
Kontrollieren Sie danach mit dem obigen Kommando, ob
die Änderung erfolgreich war.
Diese Kommandos bitte für beide Datenbanken ORAP und
ORAS ausführen!
71
72 Voraussetzungen in primärer und sekundärer Datenbank
8.2.2Supplemental Logging
Jede Änderung in der Datenbank wird durch einen Eintrag
in die Redolog-Dateien dokumentiert. Diese Redolog-Infor­
mationen bilden die Grundlage für die Replikation der
Änderung zu einer anderen Datenbank. Der Datenbankadministrator kann den Umfang der Redolog-Informationen
festlegen. Dabei sollte immer der Grundsatz gelten: „So viel
wie nötig, aber so wenig wie möglich“. Je größer der Umfang
der Logging-Informationen, desto höher ist der Aufwand
für die Datenbankinstanz, das heißt, die Leistungs­fähigkeit
der Datenbank nimmt ab und die Größe der RedologDateien nimmt zu.
Datenbank-Logging
kontrollieren beziehungsweise einstellen
SQLPlus → select supplemental_log_dat_min from v$database;
Das Ergebnis sollte YES oder IMPLICIT sein. Wenn nicht,
dann Logging-Level setzen.
SQLPlus → alter database add supplemental log data;
alter system switch logfile;
Diese Kommandos bitte für beide Datenbanken ORAP und
ORAS ausführen!
Voraussetzungen in primärer und sekundärer Datenbank Für das Replikationsobjekt wird entweder der PRIMARY
KEY oder ein UNIQUE KEY geloggt. Besitzt eine Tabelle
beides nicht, sollte man eines von beiden definieren. Ist das
nicht möglich, kann man selbst Spalten festlegen oder alle
möglichen Spalten ins Logging einbeziehen. Die Tabelle im
Beispiel besitzt einen PRIMARY KEY, für den später über das
GGSCI-Kommando TRANDATA das Logging aktiviert wird
(siehe Punkt 8.5). Ein ALTER TABLE-Kommando mit ADD
SUPPLEMENTAL LOG DATA sollte nicht explizit ausgeführt
werden.
8.2.3Das Replik ationsobjekt
In beiden Datenbanken existiert die Tabelle TSTACT.GG_
HEARTBEAT_TABLE mit einer Zeile pro Datenbank. In der
Spalte DB_NAME steht der GLOBAL_NAME der Datenbank, und die Spalte CURRENT_TIME wird ständig mittels
SYSDATE-Funktion mit dem Datum und der Tageszeit
gefüllt. Diese Zeitänderungen in den Tabellen sollen jeweils
zur anderen Datenbank repliziert werden.
Tabelle: TSTACT.GG_HEARTBEAT_TABLE
Spaltenname
Datentyp
DB_NAME
VARCHAR2(30)
CURRENT_TIME
DATE
Bemerkung
Primary Key
73
74 Voraussetzungen in primärer und sekundärer Datenbank
Inhalt der Tabelle TSTACT.GG_HEARTBEAT_TABLE
(Datenbank: ORAP)
DB_Name
CURRENT_TIME
ORAP.DE.ORACLE.COM
08.06.2012,10.45.00
→ Zeitaktualisierung pro Minute in ORAP
ORAS.DE.ORACLE.COM
08.06.2012,08.16.00
→ Zeitaktualisierung durch Replikation
Inhalt der Tabelle TSTACT.GG_HEARTBEAT_TABLE
(Datenbank: ORAS)
DB_NAME
CURRENT_TIME
ORAP.DE.ORACLE.COM
08.06.2012,08.15.00
→ Zeitaktualisierung durch Replikation
ORAS.DE.ORACLE.COM
08.06.2012,10.45.00
→ Zeitaktualisierung pro Minute in ORAS
Wenn keine Replikation läuft, wird in jeder Datenbank nur die CURRENT_TIME aktualisiert, wenn der
DB_NAME dem GLOBAL_NAME der Datenbank entspricht. Da die Aktualisierung zu jeder vollen Minute
erfolgt, ist der Sekundenwert „00“.
er Inhalt von CURRENT_TIME der jeweils anderen
D
Datenbank wird durch die Replikation aktualisiert.
Nur wenn die Replikation in beide Richtungen aktiv
ist, beinhaltet CURRENT_TIME jeder Zeile immer die
aktuelle Zeit unabhängig vom Inhalt von DB_NAME.
Voraussetzungen in primärer und sekundärer Datenbank Läuft
keine Replikation, hat immer nur eine Zeile
jeder Tabelle eine aktuelle CURRENT_TIME. Dieser
Zustand ist oben dargestellt.
Im Beispiel gibt es mit der Tabelle TSTACT.GG_HEARTBEAT_TABLE nur ein Replikationsobjekt. In dieser Tabelle
erfolgen zyklische Änderungen, die repliziert werden sollen.
Dazu werden in beiden Datenbanken eine Änderungsprozedur und ein zyklisch-laufender Job definiert. Der Job
ruft jede Minute die Prozedur auf und diese trägt die
aktuelle Zeit (SYSDATE) in die Spalte CURRENT_TIME der
Zeile ein, deren Inhalt der Spalte DB_NAME gleich dem
GLOBAL_NAME der Datenbank ist. Das Replikationsobjekt, die Tabelle GG_HEARTBEAT_TABLE, heißt in beiden
Datenbanken gleich. Das ist nicht zwingend, verbessert
aber die Übersichtlichkeit. Anders ist das bei der Prozedur
und beim Datenbank-Job. Hier bin ich der Meinung, dass
unterschiedliche Namen besser sind, weil man sofort sieht,
in welcher Datenbank die Prozedur beziehungsweise der
Job läuft.
Anlegen
der Tabellen, Änderungsprozeduren und
Datenbank-Jobs
75
76 Voraussetzungen in primärer und sekundärer Datenbank
SQL-Skript zum Anlegen der Tabelle:
TSTACT.GG_HEARTBEAT_TABLE in beiden Datenbanken
/*
Create Table TSTACT.GG_HEARTBEAT_TABLE on both Databases
C reate Primary Key on Table TSTACT.GG_HEARTBEAT_TABLE on both
Databases
*/
connect tstact/TSTACT@orap
drop table gg_heartbeat_table;
create table gg_heartbeat_table (db_name varchar2(30), current_
time date);
alter table TSTACT.GG_HEARTBEAT_TABLE add constraint
pk_db_name primary key (db_name);
select constraint_name, constraint_type, table_name
from ALL_constraints
where owner = 'TSTACT';
insert into gg_heartbeat_table values ('ORAP.DE.ORACLE.COM',
sysdate);
insert into gg_heartbeat_table values ('ORAS.DE.ORACLE.COM',
sysdate);
commit;
select db_name, to_char(current_time,'dd.mm.yyyy,hh24:mi:ss')
"Current-Time" from gg_heartbeat_table;
connect tstact/TSTACT@oras
Voraussetzungen in primärer und sekundärer Datenbank drop table gg_heartbeat_table;
create table gg_heartbeat_table (db_name varchar2(30), current_
time date);
alter table TSTACT.GG_HEARTBEAT_TABLE add constraint
pk_db_name primary key (db_name);
select constraint_name, constraint_type, table_name
from ALL_constraints
where owner = 'TSTACT';
insert into gg_heartbeat_table values ('ORAP.DE.ORACLE.COM',
sysdate);
insert into gg_heartbeat_table values ('ORAS.DE.ORACLE.COM',
sysdate);
commit;
select db_name, to_char(current_time,'dd.mm.yyyy,hh24:mi:ss')
"Current-Time"
from gg_heartbeat_table;
Der PRIMARY KEY auf die Spalte DB_NAME zeigt an,
dass dieser Inhalt eindeutig ist. Durch gezieltes Logging (GGSCI-Kommando TRANDATA) ist diese Spalte
immer Teil der Redolog-Informationen und dient auf
der Zielseite dem Replicat-Prozess zum Auffinden des
entsprechenden Datensatzes in der Tabelle.
77
78 Voraussetzungen in primärer und sekundärer Datenbank
SQL-Skript zum Anlegen beider Änderungsprozeduren:
TSTACT.GG_HEARTBEAT_PROC_x
connect tstact/TSTACT@orap
create or replace procedure gg_heartbeat_proc_p
as
time_value date;
begin
select sysdate into time_value from dual;
update tstact.gg_heartbeat_table set current_time = time_value
where db_name = 'ORAP.DE.ORACLE.COM';
end gg_heartbeat_proc_p;
/
connect tstact/TSTACT@oras
create or replace procedure gg_heartbeat_proc_s
as
time_value date;
begin
select sysdate into time_value from dual;
u pdate tstact.gg_heartbeat_table set current_time =
time_value
where db_name = 'ORAS.DE.ORACLE.COM';
end gg_heartbeat_proc_s;
/
Voraussetzungen in primärer und sekundärer Datenbank SQL-Skript zum Anlegen beider Änderungsprozeduren:
TSTACT.GG_HEARTBEAT_PROC_x
connect system@orap as sysdba
begin
dbms_scheduler.create_job(
job_name
=> 'GG_HEARTBEAT_JOB_P',
job_type
=> 'STORED_PROCEDURE',
job_action
=> 'TSTACT.GG_HEARTBEAT_PROC_P',
start_date
=> SYSTIMESTAMP,
repeat_interval
=> 'freq=MINUTELY; BYSECOND=0;',
end_date
=> NULL,
enabled
=> TRUE,
comments
=> 'Keep GG Heartbeat Table current');
end;
/
connect system@oras as sysdba
begin
dbms_scheduler.create_job(
job_name
=> 'GG_HEARTBEAT_JOB_S',
job_type
=> 'STORED_PROCEDURE',
job_action
=> 'TSTACT.GG_HEARTBEAT_PROC_S',
start_date
=> SYSTIMESTAMP,
repeat_interval
=> 'freq=MINUTELY; BYSECOND=0;',
end_date
=> NULL,
enabled
=> TRUE,
comments
=> 'Keep GG Heartbeat Table current');
end;
/
79
80 Voraussetzungen in primärer und sekundärer Datenbank
Zu
beachten ist hierbei, dass dieser Job nicht unter
dem Replikations-User GGADMIN laufen darf, weil
dieser User von der Replikation ausgeschlossen ist
(siehe TRANLOGOPTIONS EXCLUDEUSER in den Parameterdateien der Extract-Prozesse, Punkt 8.3.3). Der
Ausschluss ist notwendig, weil sonst die replizierten
Änderungen erneut aus den Redolog-Informationen
extrahiert würden. Ein sogenanntes „Data Looping“
wird dadurch verhindert. In unserem Beispiel läuft der
Job unter User SYS.
8.2.4GoldenGate Admin-User
Die Replikation mit GoldenGate (oder einer anderen
Software) erfordert immer einen Administrator-User. Mit
diesem Administrator-User verbinden sich die Replikationsprozesse zur Datenbank. Der Extract-Prozess benötigt nur
für bestimmte Operationen eine Verbindung zur Datenbank, weil er prinzipiell den Inhalt der Redolog-Dateien für
die Replikation verwendet. Der Administrator-User ist ein
Datenbanknutzer mit zusätzlichen Privilegien. In der AktivAktiv-Replikation benutzen wir in jeder Datenbank einen
Administrator mit der User ID GGADMIN. Das folgende
SQL-Skript ist gültig für Oracle-Datenbankversionen ab
11.2.0.2.
Voraussetzungen in primärer und sekundärer Datenbank GoldenGate-Administrator-User
anlegen und Zuweisen der
notwendigen Replikationsprivilegien
SQL-Skript zum Anlegen des GoldenGate-Administrators:
GGADMIN in beiden Datenbanken
--- ggadmin_create_user.sql
-connect sys/OS2@orap as sysdba
--- Create user GGADMIN in Primary Database ORAP
-drop user GGADMIN cascade;
create user ggadmin identified by GGADMIN
temporary tablespace temp default tablespace users;
grant resource, connect, dba to GGADMIN;
--- This GRANT is only needed if you use DDL replication
-grant execute on utl_file to GGADMIN
--- Oracle 11.2.0.2 and later
-begin
dbms_goldengate_auth.grant_admin_privilege('GGADMIN');
end;
/
81
82 Voraussetzungen in primärer und sekundärer Datenbank
-- Execute the same statements for Database ORAS
connect sys/OS2@oras as sysdba
drop user GGADMIN cascade;
create user GGADMIN identified by GGADMIN
temporary tablespace temp default tablespace users;
grant resource, connect, dba to GGADMIN;
grant execute on utl_file to GGADMIN
begin
dbms_goldengate_auth.grant_admin_privilege('GGADMIN');
end;
/
8.2.5Instantiierung
Die Instantiierung der INITIAL-LOAD wurde schon im Punkt
2.7 erklärt. In unserem Beispiel benötigen wir für unsere Tabelle GG_HEARTBEAT_TABLE kein INITIAL-LOAD. Die Tabelle beinhaltet keine Daten, sondern nur eine Spalte mit Datum
und Zeit, die ständig aktualisiert wird. Es ist deshalb egal, mit
welchem Inhalt der Spalte CURRENT_TIME die Replikation
startet. Anders sieht es mit der Instantiierung aus. Sie legt
den Startpunkt für den Replicat-Prozess fest. Voraussetzung
für die Replikation ist ein durch den Extract-Prozess erstelltes
Local Trail oder Remote Trail File. Im Beispiel beginnen beide Extract-Prozesse die Redolog-Verarbeitung zum Zeitpunkt
der Definition (ADD EXTRACT mit BEGIN NOW) zu starten.
Genauso machen wir es mit den Replicat-Prozessen. Da wir
keinen bestimmten Startpunkt angeben, beginnen auch die
83
Aufbau der GoldenGate-Parameterdateien
Replicat-Prozesse ihre Arbeit beim ersten verfügbaren Trail
File (ADD REPLICAT ohne Angabe eines Startpunktes).
Extract- und Replicat-Prozesse müssen nach Einrichten der
Replikationsumgebung explizit über Kommando gestartet
werden. Sie sehen die entsprechenden ADD-Anweisungen
in den Punkten 8.4.1 und 8.4.2 und das Starten der Prozesse
in Punkt 8.6.
8.3
Aufbau der GoldenGate-Par ameterdateien
Das Einrichten einer Replikation erfordert den Aufbau eines
Flat Files für den Manager-Prozess, jeden Extract- und jeden
Replicat-Prozess. Für die Festlegung von Parametern für die
GoldenGate-Instanz existiert außerdem die Datei GLOBALS.
Abbildung 24 zeigt noch einmal die Replikationstopologie
mit den notwendigen Parameterdateien.
ex2prio.prm
Capture
GLOBALS
Manager
re2seco.prm
Änderung der Tabelle:
mgr.prm
ORAP
Delivery
re2prio.prm
Trial
File
GG_HEARTBEAT_TABLE
Trial
File
LAN/WAN/Internet
Over TCP/IP
mgr.prm
Änderung der Tabelle:
GG_HEARTBEAT_TABLE
Delivery
Manager
GLOBALS
ORAS
Capture
ex2seco.prm
Abb.24: Topologie der Aktiv-Aktiv-Replikation mit Parameterdateien
84 Aufbau der GoldenGate-Parameterdateien
8.3.1Erstellen eines Connect-Makros
Bevor wir mit dem Aufbau der Parameter Files beginnen,
erstellen wir noch einen Makro mit den Connect-Informationen. Der wird vom Extract-Prozess EX2PRIO benutzt, um
die sicherheitsrelevanten Informationen User/Password zu
verstecken.
Aufbau des Makros: DBCONNECT.MAC im
Unterordner „dirmac“ (siehe Punkt 2.4)
Makro: DBCONNECT.MAC
MACRO #oracle_connect_demo1
BEGIN
USERID demo1, PASSWORD DEMO1
END;
MACRO #oracle_connect_demo2
BEGIN
USERID demo2, PASSWORD DEMO2
END;
MACRO #oracle_connect_demo3
BEGIN
USERID demo3, PASSWORD DEMO3
END;
MACRO #oracle_connect_ggadmin
BEGIN
USERID ggadmin, PASSWORD GGADMIN
END;
Aufbau der GoldenGate-Parameterdateien
Wie Sie sehen, kann ein Makro die Datenbank-CONNECTInformationen für weitere Replikations-Administratoren beinhalten. Im Replikationsbeispiel wird nur der rot gekenn­
zeichnete Eintrag für den Administrator GGADMIN benutzt.
I m Punkt 8.3.3 sehen Sie den Aufruf des Makros
innerhalb des Parameter Files EX2PRIO.PRM.
8.3.2Datei GLOBALS und Manager-Par ameter
Aufbau der Datei GLOBALS in jedem Installations­verzeichnis
Parameterdatei: GLOBALS
-- GLOBALS for both databases
-- Default Checkpoint Table
-- GGADMIN.DEFAULT_CHKPT1
-- Schema for DDL Replication
-- GGSCHEMA GGADMIN
-- Use GoldenGate Monitor
-- ENABLEMONITORING
LOBALS (immer in Großbuchstaben!) beinhaltet
G
Parameter für die GoldenGate-Instanz. Diese Datei
sieht für beide GoldenGate-Instanzen gleich aus.
Notwendig ist sie für DDL-Replikation, die Nutzung
einer Default Checkpoint Table und für die Verbindung der GoldenGate-Instanz (Client) mit dem
85
86 Aufbau der GoldenGate-Parameterdateien
GoldenGate Monitor Server oder dem Oracle Enterprise Manager.
LOBALS ist die einzige Parameterdatei, die im In­
G
stallationsverzeichnis stehen muss.
Aufbau der Manager-Parameterdateien im
Unter­ordner „dirprm“ (siehe Punkt 2.4)
Parameterdatei: MGR.PRM (Primäre Datenbank ORAP)
-- Manager config file
-- Port number that manager runs on
PORT 7810
-- Forces manager to restart extract, pump and replicat if they
shut down
-- AUTORESTART ER *, RETRIES 12, WAITMINUTES 5, RESETMINUTES 60
-- Manages trail files to conserve space
PURGEOLDEXTRACTS .\dirdat\tstact\*, USECHECKPOINTS, MINKEEPHOURS
1, FREQUENCYMINUTES 30
-- Specifies to log the lag time as a warning in the event log
LAGCRITICALMINUTES 5
-- Specifies how often to report lag info to the event log
LAGREPORTMINUTES 60
LAGINFOMINUTES 0
Aufbau der GoldenGate-Parameterdateien
Parameterdatei: MGR.PRM (Sekundäre Datenbank ORAS)
-- Manager config file
-- Port number that manager runs on
PORT 7811
-- Forces manager to restart extract, pump and replicat if they
shut down
-- AUTORESTART ER *, RETRIES 12, WAITMINUTES 5, RESETMINUTES 60
-- Manages trail files to conserve space
PURGEOLDEXTRACTS .\dirdat\tstact\*, USECHECKPOINTS, MINKEEPHOURS
1, FREQUENCYMINUTES 30
-- Specifies to log the lag time as a warning in the event log
LAGCRITICALMINUTES 5
-- Specifies how often to report lag info to the event log
LAGREPORTMINUTES 60
LAGINFOMINUTES 0
Wichtigster Parameter für den Manager-Prozess ist
der Parameter PORT. Laufen mehrere GoldenGateInstanzen, dann müssen die Manager beider Instanzen unterschiedliche Ports nutzen. Im Beispiel nutzen
die Manager der beiden Instanzen die Ports 7810 und
7811. Das ist auch der einzige Unterschied zwischen
beiden Parameter Files. Lässt man die anderen Parameter weg, hat das Auswirkungen auf das Reporting
von Lag-Zeiten und das „Housekeeping“ für die Trail
Files, die dann nicht mehr automatisch gelöscht werden.
87
88 Aufbau der GoldenGate-Parameterdateien
8.3.3Extr act- und Replicat-Par ameter
Aufbau
der Extract- und der Replicat-Parameterdateien im
Unterordner „dirprm“ (siehe Punkt 2.4)
Parameterdatei: EX2PRIO.PRM (Primäre Datenbank ORAP)
-- Change Extract EX2PRIO for ORAP
EXTRACT ex2prio
-- Hide Database Connect Information
NOLIST
include .\dirmac\dbconnect.mac
-- Connect to Database
#oracle_connect_ggadmin()
LIST
-- Exclude GGADMIN-User
TRANLOGOPTIONS EXCLUDEUSER ggadmin
-- Send data to remote host
RMTHOST localhost, MGRPORT 7811
-- Send data to remote trail named rt
RMTTRAIL d:\ogg_new_tar\dirdat\tstact\rt
-- Source Table for Replication
TABLE TSTACT.GG_HEARTBEAT_TABLE;
Über
die Anweisungen NOLIST/LIST kann man die
Ausgabe bestimmter Parameteranweisungen im Report-File unterdrücken. In diesem Fall sind die sicher­
heitsrelevanten Anweisungen für den CONNECT zur
Datenbank nicht im Report File zu sehen.
Aufbau der GoldenGate-Parameterdateien
Parameterdatei: RE2PRIO.PRM (Primäre Datenbank ORAP)
-- Change Replicat RE2PRIO for ORAP
REPLICAT re2prio
-- Connect to Database
USERID GGADMIN@orap, PASSWORD GGADMIN
-- Throw error records to discard file
DISCARDFILE .\dirrpt\re2prio.dsc, purge
-- 1:1 mapping - No Source Definition File is needed
ASSUMETARGETDEFS
-- Map the Source Table to the Target Table
MAP TSTACT.GG_HEARTBEAT_TABLE, TARGET TSTACT.GG_HEARTBEAT_TABLE;
Parameterdatei: EX2SECO.PRM (Sekundäre Datenbank ORAS)
-- Change Extract for ORAS
EXTRACT ex2seco
-- Connect to Database
USERID ggadmin@oras, PASSWORD GGADMIN
-- Exclude GGADMIN-User
TRANLOGOPTIONS EXCLUDEUSER ggadmin
-- Send data to remote host
RMTHOST localhost, MGRPORT 7810
-- Send data to remote trail named rt
RMTTRAIL d:\ogg_new_src\dirdat\tstact\rt
-- Source Table for Replication
TABLE TSTACT.GG_HEARTBEAT_TABLE;
89
90 OBEY-Kommando-Files
Parameterdatei: RE2SECO.PRM (Sekundäre Datenbank ORAS)
-- Change Replicat for ORAS
REPLICAT re2seco
-- Connect to Database
USERID ggadmin@oras, PASSWORD GGADMIN
-- Throw error records to discard file
DISCARDFILE .\dirrpt\re2seco.dsc, purge
-- 1:1 mapping - no Source Definition File is needed
ASSUMETARGETDEFS
-- Map the Source Table to the Target Table
MAP TSTACT.GG_HEARTBEAT_TABLE, TARGET TSTACT.GG_HEARTBEAT_TABLE;
8.4
OBEY-Kommando-Files
Zusätzlich zu den Parameter Files erfordert die Konfiguration von GoldenGate weitere Kommandos. Beispiele dafür
sind das Definieren der GoldenGate-Prozesse und notwendige Aktionen in der Datenbank. Wie schon unter Punkt
2.8.2 beschrieben, können durch den Aufruf eines OBEY
Files mehrere Kommandos am Stück ausgeführt werden.
Für das Einrichten der Replikationsumgebung nutze ich
auf beiden Seiten Setup OBEY Files. Auch für das Löschen
der Umgebung wird für jede GoldenGate-Instanz ein
Clean­up OBEY File genutzt (siehe Punkte 8.4.1 und 8.4.2).
OBEY-Kommando-Files
8.4.1 Primäre Datenbank
Aufbau
der OBEY Files für Setup und Cleanup
(diese Files stehen im Installationsverzeichnis „d:\ogg_new_src“)
OBEY File: SETUP_ORAP.OBY
-- *** Statements to Replicat from ORAP to ORAS ***
-- Database login to primary database
DBLOGIN USERID ggadmin@orap PASSWORD GGADMIN
-- Add table level supplemental log group for heartbeat table
ADD TRANDATA TSTACT.GG_HEARTBEAT_TABLE
-- Verify supplemental log group was created
INFO TRANDATA tstact.gg_heartbeat_table
-- Add log-based change extract process
ADD EXTRACT ex2prio, TRANLOG, BEGIN now
-- Add remote trail to extract process
ADD RMTTRAIL d:\ogg_new_tar\dirdat\tstact\rt, EXTRACT ex2prio
-- GG change extract will be started later manually
-- START EXTRACT ex2prio
-- *** Statements to Replicat from ORAS to ORAP ***
-- Database login to primary database
DBLOGIN USERID GGADMIN@orap, PASSWORD GGADMIN
-- Add a specific Checkpoint Table
91
92 OBEY-Kommando-Files
ADD CHECKPOINTTABLE GGADMIN.GG_CHKPT1
-- Add change replicat process
ADD REPLICAT re2prio, EXTTRAIL d:\ogg_new_src\dirdat\tstact\rt,
CHECKPOINTTABLE GGADMIN.GG_CHKPT1
-- GG change replicat will be started later manually
-- START REPLICAT re2prio
-- Info
INFO ALL
OBEY File: CLEANUP_ORAP.OBY
-- *** Stop and delete GG change replicat ***
-- Stop change replicat re2prio
STOP REPLICAT re2prio
-- Database login to primary database
DBLOGIN USERID ggadmin@orap PASSWORD GGADMIN
-- Delete supplemental log group for replication table
DELETE TRANDATA TSTACT.GG_HEARTBEAT_TABLE
-- Delete the specific checkpoint table without prompt (!)
DELETE CHECKPOINTTABLE ggadmin.gg_chkpt1 !
-- Delete change replicate re2prio
DELETE REPLICAT re2prio
-- *** Stop and delete GG change extract ***
OBEY-Kommando-Files
-- Stop change extract ex2prio
STOP EXTRACT ex2prio
-- Delete change extract ex2prio
DELETE EXTRACT ex2prio
8.4.2Sekundäre Datenbank
Aufbau der OBEY Files für Setup und Cleanup
(diese Files stehen im Installationsverzeichnis „d:\ogg_new_tar“)
OBEY File: SETUP_ORAS.OBY
-- *** Statements to Replicat from ORAS to ORAP ***
-- Database login to secondary database
DBLOGIN USERID GGADMIN@oras, PASSWORD GGADMIN
-- Add a specific checkpoint table
ADD CHECKPOINTTABLE GGADMIN.GG_CHKPT1
-- Add change replicat process
ADD REPLICAT re2seco, EXTTRAIL d:\ogg_new_tar\dirdat\tstact\rt,
CHECKPOINTTABLE GGADMIN.GG_CHKPT1
-- GG change replicat will be started later manually
-- START EXTRACT re2seco
-- *** Statements to Replicat from ORAP to ORAS ***
-- Log in to create supplemental log group
93
94 OBEY-Kommando-Files
DBLOGIN USERID GGADMIN@oras PASSWORD GGADMIN
-- Add table level supplemental log group for heartbeat table
ADD TRANDATA TSTACT.GG_HEARTBEAT_TABLE
-- Verify supplemental log group was created
INFO TRANDATA TSTACT.GG_HEARTBEAT_TABLE
-- Add log-based change extract process
ADD EXTRACT ex2seco, TRANLOG, BEGIN now
-- Add remote trail to extract process
ADD RMTTRAIL d:\ogg_new_src\dirdat\tstact\rt, EXTRACT ex2seco
-- GG change extract will be started later manually
-- START EXTRACT ex2seco
-- Info
INFO ALL
OBEY File: CLEANUP_ORAS.OBY
-- *** Stop and delete GG change replicat ***
-- Stop change replicat re2seco
STOP REPLICAT re2seco
-- Database login to secondary database
DBLOGIN USERID ggadmin@oras PASSWORD GGADMIN
-- Delete supplemental log group for replication table
DELETE TRANDATA TSTACT.GG_HEARTBEAT_TABLE
-- Delete the specific checkpoint table without prompt (!)
DELETE CHECKPOINTTABLE ggadmin.gg_chkpt1 !
Einrichten der Replikationsumgebung (OBEY Files)
-- Delete change replicat re2seco
DELETE REPLICAT re2seco
-- *** Stop and delete GG change extract ***
-- Stop change extract ex2seco
STOP EXTRACT ex2seco
-- Delete change extract ex2seco
DELETE EXTRACT ex2seco
8.5
Einrichten der Replik ationsumgebung
(OBEY Files)
Ausführen der beiden OBEY Files für Setup
ORAP → ggsci → obey setup_orap.oby
D:\ogg_new_src>ggsci
Oracle GoldenGate Command Interpreter for Oracle
Version 11.2.1.0.1 OGGCORE_11.2.1.0.1_PLATFORMS_120423.0230
Windows x64 (optimized), Oracle 11g on Apr 23 2012 04:55:02
Copyright (C) 1995, 2012, Oracle and/or its affiliates. All
rights reserved.
GGSCI (JJT420) 1> obey setup_orap.oby
95
96 Einrichten der Replikationsumgebung (OBEY Files)
GGSCI (JJT420) 2> -- *** Statements to Replicat from ORAP to
ORAS ***
GGSCI (JJT420) 3> -- Database login to primary database
GGSCI (JJT420) 4> DBLOGIN USERID ggadmin@orap PASSWORD GGADMIN
Successfully logged into database.
GGSCI (JJT420) 5> -- Add table level supplemental log group for
heartbeat table
GGSCI (JJT420) 7> ADD TRANDATA TSTACT.GG_HEARTBEAT_TABLE
Logging of supplemental redo data enabled for table TSTACT.
GG_HEARTBEAT_TABLE.
GGSCI (JJT420) 8> -- Verify supplemental log group was created
GGSCI (JJT420) 9> INFO TRANDATA TSTACT.GG_HEARTBEAT_TABLE
Logging of supplemental redo log data is enabled for table
TSTACT.GG_HEARTBEAT_TABLE.
Columns supplementally logged for table TSTACT.GG_HEARTBEAT_TABLE: DB_NAME.
GGSCI (JJT420) 10> -- Add log-based change extract process
GGSCI (JJT420) 11> ADD EXTRACT ex2prio, TRANLOG, BEGIN now
Einrichten der Replikationsumgebung (OBEY Files) EXTRACT added.
GGSCI (JJT420) 12> -- Add remote trail to extract process
GGSCI (JJT420) 13> ADD RMTTRAIL d:\ogg_new_tar\dirdat\tstact\rt,
EXTRACT ex2prio
RMTTRAIL added.
GGSCI (JJT420) 14> -- GG change extract will be started later
manually
GGSCI (JJT420) 15> -- START EXTRACT ex2prio
GGSCI (JJT420) 16> -- *** Statements to Replicat from ORAS to
ORAP ***
GGSCI (JJT420) 17> -- Database login to primary database
GGSCI (JJT420) 18> DBLOGIN USERID GGADMIN@orap, PASSWORD GGADMIN
Successfully logged into database.
GGSCI (JJT420) 19> -- Add a specific Checkpoint Table
GGSCI (JJT420) 20> ADD CHECKPOINTTABLE GGADMIN.GG_CHKPT1
Successfully created checkpoint table GGADMIN.GG_CHKPT1.
GGSCI (JJT420) 21> -- Add change replicat process
97
98 Einrichten der Replikationsumgebung (OBEY Files)
GGSCI (JJT420) 22> ADD REPLICAT re2prio, EXTTRAIL d:\ogg_new_src\dirdat\
tstact\rt, CHECKPOINTTABLE GGADMIN.GG_CHKPT1
REPLICAT added.
GGSCI (JJT420) 23> -- GG change replicat will be started later manually
GGSCI (JJT420) 24> -- START REPLICAT re2prio
GGSCI (JJT420) 25> -- Info
GGSCI (JJT420) 26> INFO ALL
Program
StatusGroupLag at Chkpt
Time Since Chkpt
MANAGERSTOPPED
EXTRACT
STOPPED EX2PRIO00:00:00
00:00:05
REPLICAT
STOPPEDRE2PRIO00:00:00
00:00:01
GGSCI (JJT420) 27>
ORAP → ggsci → obey setup_oras.oby
D:\ogg_new_tar>ggsci
Oracle GoldenGate Command Interpreter for Oracle
Version 11.2.1.0.1 OGGCORE_11.2.1.0.1_PLATFORMS_120423.0230
Windows x64 (optimized), Oracle 11g on Apr 23 2012 04:55:02
Einrichten der Replikationsumgebung (OBEY Files) Copyright (C) 1995, 2012, Oracle and/or its affiliates. All
rights reserved.
GGSCI (JJT420) 2> obey setup_oras_oby
GGSCI (JJT420) 3> -- *** Statements to Replicat from ORAS to
ORAP ***
GGSCI (JJT420) 4> -- Database login to secondary database
GGSCI (JJT420) 5> DBLOGIN USERID GGADMIN@oras, PASSWORD GGADMIN
Successfully logged into database.
GGSCI (JJT420) 6> -- Add a specific checkpoint table
GGSCI (JJT420) 7> ADD CHECKPOINTTABLE GGADMIN.GG_CHKPT1
Successfully created checkpoint table GGADMIN.GG_CHKPT1.
GGSCI (JJT420) 8> -- Add change replicat process
GGSCI (JJT420) 9> ADD REPLICAT re2seco, EXTTRAIL d:\ogg_new_tar\
dirdat\tstact\rt, CHECKPOINTTABLE GGADMIN.GG_CHKPT1
REPLICAT added.
GGSCI (JJT420) 10> -- GG change replicat will be started later
manually
99
100 Einrichten der Replikationsumgebung (OBEY Files)
GGSCI (JJT420) 11> -- START EXTRACT re2seco
GGSCI (JJT420) 12> -- *** Statements to Replicat from ORAP to
ORAS ***
GGSCI (JJT420) 13> -- Log in to create supplemental log group
GGSCI (JJT420) 14> DBLOGIN USERID GGADMIN@oras PASSWORD GGADMIN
Successfully logged into database.
GGSCI (JJT420) 15> -- Add table level supplemental log group for
heartbeat table
GGSCI (JJT420) 16> ADD TRANDATA TSTACT.GG_HEARTBEAT_TABLE
Logging of supplemental redo log data is already enabled for
table TSTACT.GG_HEARTBEAT_TABLE.
GGSCI (JJT420) 17> -- Verify supplemental log group was created
GGSCI (JJT420) 18> INFO TRANDATA TSTACT.GG_HEARTBEAT_TABLE
Logging of supplemental redo log data is enabled for table
TSTACT.GG_HEARTBEAT_TABLE
GGSCI (JJT420) 19>
GGSCI (JJT420) 20> -- Add log-based change extract process
Einrichten der Replikationsumgebung (OBEY Files) 101
GGSCI (JJT420) 21> ADD EXTRACT ex2seco, TRANLOG, BEGIN now
EXTRACT added.
GGSCI (JJT420) 22> -- Add remote trail to extract process
GGSCI (JJT420) 23> ADD RMTTRAIL d:\ogg_new_src\dirdat\tstact\rt,
EXTRACT ex2seco
RMTTRAIL added.
GGSCI (JJT420) 24> -- GG change extract will be started later manually
GGSCI (JJT420) 25> -- START EXTRACT ex2seco
GGSCI (JJT420) 26> -- Info
GGSCI (JJT420) 27> INFO ALL
Program
StatusGroupLag at ChkptTime Since Chkpt
MANAGERSTOPPED
EXTRACTSTOPPEDEX2SECO00:00:00
00:00:02
REPLICATSTOPPEDRE2SECO 00:00:00
00:00:07
GGSCI (JJT420) 28>
102 Starten und Stoppen der Replikation
Bitte
achten Sie darauf, dass Sie die Command-Prompt
Fenster für das richtige Installationsverzeichnis öffnen. Die
Manager-, Extract- und Replicat-Prozesse werden in den
Skripten nicht gestartet (Start-Kommandos auskommentiert!). Das Setup-Skript ist nur einmal beim Einrichten der
Replikation abzuarbeiten.
8.6
Starten und Stoppen der Replik ation
Die Replikationsumgebung ist nun eingerichtet und wir sehen
die drei Prozesse auf der primären und der sekundären GoldenGate-Instanz im Zustand STOPPED. Der Manager-Prozess muss
in jeder GoldenGate-Instanz als erster Prozess gestartet werden.
Die Extract- und Replicat-Prozesse können danach in beliebiger
Reihen­folge gestartet werden. Logisch sinnvoll ist es, einen
Extract-Prozess vor dem entsprechenden Replicat-Prozess zu
starten. Da wir in diesem Beispiel kein INITIAL-LOAD durchführen müssen, können wir die beiden Replikationsrichtungen in
beliebiger Reihenfolge starten. Aus Gründen der Übersichtlichkeit beginnen wir aber mit der Replikation von der primären zur
sekundären Datenbank (ORAP → ORAS) und starten danach die
Gegenrichtung (ORAS → ORAP):
Starten der Manager-, der Extract- und der Replicat-Prozesse
ORAS → ggsci → start manager (→ info all)
103
Starten und Stoppen der Replikation
D:\ogg_new_tar>ggsci
Oracle GoldenGate Command Interpreter for Oracle
Version 11.2.1.0.1 OGGCORE_11.2.1.0.1_PLATFORMS_120423.0230
Windows x64 (optimized), Oracle 11g on Apr 23 2012 04:55:02
Copyright (C) 1995, 2012, Oracle and/or its affiliates. All
rights reserved.
GGSCI (JJT420) 1> start manager
Manager started.
GGSCI (JJT420) 2> info all
Program
StatusGroupLag at ChkptTime Since Chkpt
MANAGERRUNNING
EXTRACTSTOPPEDEX2SECO00:00:00
02:02:53
REPLICAT
STOPPEDRE2SECO00:00:00
02:02:45
GGSCI (JJT420) 3>
ORAP → ggsci → start manager → start ex2prio (→ info all)
D:\ogg_new_src>ggsci
Oracle GoldenGate Command Interpreter for Oracle
Version 11.2.1.0.1 OGGCORE_11.2.1.0.1_PLATFORMS_120423.0230
Windows x64 (optimized), Oracle 11g on Apr 23 2012 04:55:02
Copyright (C) 1995, 2012, Oracle and/or its affiliates. All
rights reserved.
GGSCI (JJT420) 1> start manager
104 Starten und Stoppen der Replikation
Manager started.
GGSCI (JJT420) 2> start ex2prio
Sending START request to MANAGER ...
EXTRACT EX2PRIO starting
GGSCI (JJT420) 3> info all
Program
StatusGroupLag at ChkptTime Since Chkpt
MANAGERRUNNING
EXTRACTRUNNINGEX2PRIO00:00:00
00:00:08
REPLICAT
STOPPEDRE2PRIO00:00:00
02:03:21
GGSCI (JJT420) 4>
ORAS → ggsci → start re2seco → start ex2seco (→ info all)
GGSCI (JJT420) 3> start re2seco
Sending START request to MANAGER ...
REPLICAT RE2SECO starting
GGSCI (JJT420) 4> start ex2seco
Sending START request to MANAGER ...
EXTRACT EX2SECO starting
GGSCI (JJT420) 5> info all
Program
StatusGroupLag at ChkptTime Since Chkpt
MANAGERRUNNING
EXTRACTRUNNINGEX2SECO00:00:00
00:00:02
REPLICATRUNNINGRE2SECO00:00:00
00:00:06
GGSCI (JJT420) 6>
105
Starten und Stoppen der Replikation
ORAP → ggsci → start re2prio (→ info all)
GGSCI (JJT420) 4> start re2prio
Sending START request to MANAGER ...
REPLICAT RE2PRIO starting
GGSCI (JJT420) 5> info all
Program
StatusGroupLag at ChkptTime Since Chkpt
MANAGERRUNNING
EXTRACTRUNNINGEX2PRIO00:00:00
00:00:09
REPLICATRUNNINGRE2PRIO00:00:00
00:00:04
GGSCI (JJT420) 6>
enn alle Prozesse im Status RUNNING sind, können
W
Sie über Anzeige des Inhaltes der Tabelle GG_HEARTBEAT_TABLE sehen, dass die Zeitwerte einmal pro
Minute aktualisiert werden und diese UPDATES auch
repliziert werden (siehe Punkt 8.7).
Die Replikation kann jederzeit gestoppt werden. Das heißt, die
Aktualisierung der Tabelleninhalte wird unterbrochen, wenn
entweder der Extract- oder der Replicat-Prozess gestoppt wird.
Startet man einen zuvor gestoppten Prozess wieder, setzt er
seine Arbeit an der Stelle fort, an der er unterbrochen wurde.
Möglich ist das durch Checkpoint-Informationen, die für jeden
106 Starten und Stoppen der Replikation
GoldenGate-Prozess ständig aktuell gehalten werden. Jeder ExtractProzess benötigt auch die Redolog-Informationen der entsprechenden Datenbank vom letzten Checkpoint bis zum aktuellen Zeitpunkt.
Das Stoppen der Prozesse ist wieder wahlfrei möglich. Stoppt man einen Replicat-Prozess wird das Local Trail oder Remote Trail weiterhin
vom Extract-Prozess gefüllt. Deshalb stoppt man in der Regel zuerst
den Extract- und danach den dazugehörigen Replicat-Prozess. Am
Tabelleninhalt unserer replizierten Tabellen erkennt man sofort, wenn
eine Replikationsrichtung nicht mehr arbeitet. Man kann aber nicht
sagen, ob der Extract-, der Replicat- oder beide Prozesse inaktiv sind.
Um das zu ermitteln, muss man in beiden GoldenGate-Instanzen das
Kommando INFO ALL ausführen.
Stoppen
der Manager-, der Extract- und der Replicat-Prozesse
ORAP → ggsci → stop ex2prio → stop re2prio → stop manager !­
(→ info all)
...
GGSCI (JJT420) 9> stop ex2prio
Sending STOP request to EXTRACT EX2PRIO ...
Request processed.
GGSCI (JJT420) 10> stop re2prio
107
Starten und Stoppen der Replikation
Sending STOP request to REPLICAT RE2PRIO ...
Request processed.
GGSCI (JJT420) 11> info all
Program
StatusGroupLag at ChkptTime Since Chkpt
MANAGERRUNNING
EXTRACTSTOPPEDEX2PRIO00:00:00
00:00:30
REPLICAT
STOPPEDRE2PRIO00:00:00
00:00:09
GGSCI (JJT420) 12> stop manager !
Sending STOP request to MANAGER ...
Request processed.
Manager stopped.
GGSCI (JJT420) 13>
ORAS → ggsci → stop ex2seco → stop ex2seco → stop manager !­
(→ info all)
...
GGSCI (JJT420) 8> stop ex2seco
Sending STOP request to EXTRACT EX2SECO ...
Request processed.
GGSCI (JJT420) 9> stop re2seco
Sending STOP request to REPLICAT RE2SECO ...
108 Kontrolle der Replikation
Request processed.
GGSCI (JJT420) 10> info all
Program
StatusGroupLag at ChkptTime Since Chkpt
MANAGERRUNNING
EXTRACTSTOPPEDEX2SECO00:00:00
00:00:52
REPLICAT
STOPPEDRE2SECO00:00:00
00:00:29
GGSCI (JJT420) 11> stop manager !
Sending STOP request to MANAGER ...
Request processed.
Manager stopped.
GGSCI (JJT420) 12>
8.7
Kontrolle der Replik ation
Zur Kontrolle der Replikation muss man sich den Inhalt der Tabelle
TSTACT.GG_HEARTBEAT_TABLE in beiden Datenbanken anschauen. Das kann man durch Eingabe der SELECT-Kommandos
oder durch Aufruf des SQL-Skripts GG_HB_SELECT_TABLE.SQL
machen.
SQL-Skript: GG_HB_SELECT_TABLE.SQL
/*
Select: GG_HB_SELECT_TABLE.SQL
*/
Kontrolle der Replikation
109
connect ggadmin/GGADMIN@orap
select db_name,
to_char(Current_time,'dd.mm.yyyy,hh24.mi.ss') "Current-Time"
from tstact.gg_heartbeat_table;
connect ggadmin/GGADMIN@oras
select db_name,
to_char(Current_time,'dd.mm.yyyy,hh24.mi.ss') "Current-Time"
from tstact.gg_heartbeat_table;
Anzeigen
des Inhaltes der Tabellen GG_HEARTBEAT_TABLE
SQLPlus → (ORAP oder ORAS) → @gg_hb_select_table
SQL> @gg_hb_select_table
Connect durchgeführt.
GLOBAL_NAME
----------ORAP.DE.ORACLE.COM
DB_NAME
Current-Time
------------------------------ ------------------ORAP.DE.ORACLE.COM
30.07.2012,11.17.00
ORAS.DE.ORACLE.COM
30.07.2012,11.17.00
Connect durchgeführt.
110 Kontrolle der Replikation
GLOBAL_NAME
-----------------ORAS.DE.ORACLE.COM
DB_NAME
Current-Time
------------------------------ ------------------ORAP.DE.ORACLE.COM
30.07.2012,11.17.00
ORAS.DE.ORACLE.COM
30.07.2012,11.17.00
SQL>
Sind die Zeiteinträge für beide Datenbanken identisch (wie das
Ergebnis zeigt), dann laufen beide Replikationen fehlerfrei. Sollte
das Ergebnis einmal nicht so gut aussehen wie gerade gezeigt, dann
muss man die GoldenGate Reports der einzelnen Prozesse anschauen. Sie beinhalten entsprechende Fehlermeldungen, wenn Replikationsprozesse nicht ordnungsgemäß laufen. Wenn die Replikation
in beide Richtungen gestoppt wurde, wird nur ein Eintrag in jeder
Tabelle aktualisiert. Der Zeitwert des replizierten Eintrages zeigt die
Zeit an, zu der letztmalig eine Replikation erfolgte. Das Ergebnis der
nächsten Inhaltsabfrage beider Tabellen sagt aus, dass beide Replikationsrichtungen am 30.07.2012 zwischen 12:28 und 12:29 gestoppt
wurden:
SQL> @gg_hb_select_table
Connect durchgeführt.
GLOBAL_NAME
----------ORAP.DE.ORACLE.COM
Einbau einer UPDATE-Konfliktlösung
DB_NAME
Current-Time
------------------------------ ------------------ORAP.DE.ORACLE.COM
30.07.2012,12.39.00
ORAS.DE.ORACLE.COM
30.07.2012,12.28.00
Connect durchgeführt.
GLOBAL_NAME
-----------
ORAS.DE.ORACLE.COM
DB_NAME
Current-Time
------------------------------ ------------------ORAP.DE.ORACLE.COM
30.07.2012,12.28.00
ORAS.DE.ORACLE.COM
30.07.2012,12.39.00
SQL>
8.8
Einbau einer UPDATE-Konfliktlösung
8.8.1Ergänzen der GoldenGate-Par ameterdateien
In der Aktiv-Aktiv-Replikation benutzen wir eine Tabelle, die
nur aus zwei Spalten besteht. DB_NAME ist vom Datentyp
VARCHAR2 und PRIMARY KEY der Tabelle. CURRENT_
TIME ist vom Datentyp DATE. Durch Implementierung
einer UPDATE-Konfliktlösung soll die beschriebene Replikation gegen Konflikte abgesichert werden. Gegenwärtig kann
die eingerichtete Replikation weder Konflikte erkennen
111
112 Einbau einer UPDATE-Konfliktlösung
noch behandeln, weil beim UPDATE von CURRENT_TIME
kein Vergleich des BEFORE-IMAGE mit dem aktuellen Spalteninhalt erfolgt. Das gilt für beide Replikationsprozesse.
Der alte Inhalt von CURRENT_TIME wird auf beiden Seiten
einfach mit dem aktuellen Zeitwert überschrieben. Das erfolgt immer, unabhängig davon, ob in der letzten Minute der
Inhalt von CURRENT_TIME durch unerlaubte beziehungsweise unbeabsichtigte Modifikation durch Dritte verändert
wurde. Die Konfiguration ist sehr einfach, weil pro Prozess
nur eine Anweisung im Parameter File des entsprechenden
Prozesses angepasst werden muss. Die OBEY Files für Setup
beziehungsweise Cleanup bleiben unverändert. Nach Anpassung sehen die Parameter Files (Punkt 8.3) für EXTRACT und
REPLICAT so aus:
rgänzen der Parameter Files der Extract- und
E
Replikat-Prozesse
Parameterdatei: EX2PRIO.PRM (Primäre Datenbank ORAP)
-- Change Extract EX2PRIO for ORAP
EXTRACT ex2prio
-- Hide Database Connect Information
NOLIST
include .\dirmac\dbconnect.mac
-- Connect to Database
Einbau einer UPDATE-Konfliktlösung
#oracle_connect_ggadmin()
LIST
-- Exclude GGADMIN-User
TRANLOGOPTIONS EXCLUDEUSER ggadmin
-- Send data to remote host
RMTHOST localhost, MGRPORT 7811
-- Send data to remote trail named rt
RMTTRAIL d:\ogg_new_tar\dirdat\tstact\rt
-- Source Table for Replication without BEFORE-IMAGES
-- TABLE TSTACT.GG_HEARTBEAT_TABLE;
-- Source Table for Replication with BEFORE-IMAGES in case of
UPDATE operation
-- BEFORE-IMAGES are required by COMPARECOLS parameter at replication site
TABLE TSTACT.GG_HEARTBEAT_TABLE, GETBEFORECOLS (ON UPDATE ALL);
Alle Parameter Files beinhalten alternative TABLEbeziehungsweise MAP-Anweisungen (auskommentiert).
Der
Parameter GETBEFORECOLS ist die Voraus­
setzung für Konfliktlösung auf der Replicat-Seite.
Parameterdatei: RE2PRIO.PRM (Primäre Datenbank ORAP)
-- Change Replicat RE2PRIO for ORAP
REPLICAT re2prio
-- Connect to Database
USERID GGADMIN@orap, PASSWORD GGADMIN
113
114 Einbau einer UPDATE-Konfliktlösung
-- Throw error records to discard file
DISCARDFILE .\dirrpt\re2prio.dsc, purge
-- 1:1 mapping - No Source Definition File is needed
ASSUMETARGETDEFS
-- Map the Source Table to the Target Table without Conflict
Detection and Resolution
-- MAP TSTACT.GG_HEARTBEAT_TABLE, TARGET TSTACT.GG_HEARTBEAT_TABLE;
-- Map the Source Table to the Target Table with Conflict Detection but without Resolution
-- MAP TSTACT.GG_HEARTBEAT_TABLE, TARGET TSTACT.GG_HEARTBEAT_TABLE, COMPARECOLS (ON UPDATE ALL);
-- Map the Source Table to the Target Table without Conflict
Detection and Resolution
MAP TSTACT.GG_HEARTBEAT_TABLE, TARGET TSTACT.GG_HEARTBEAT_TABLE,
COMPARECOLS (ON UPDATE ALL),
RESOLVECONFLICT (UPDATEROWEXISTS, (DEFAULT, OVERWRITE));
Replicat
RE2PRIO nutzt nur Standardkonfliktlösung
OVERWRITE
Benutzt
man COMPARECOLS ohne RESOLVECON
FLICT (siehe zweite MAP-Anweisung), dann führen
Konflikte zum ABEND des betroffenen Replikationsprozesses, also zum Absturz.
Einbau einer UPDATE-Konfliktlösung
Parameterdatei: EX2SECO.PRM (Sekundäre Datenbank ORAS)
-- Change Extract for ORAS
EXTRACT ex2seco
-- Connect to Database
USERID ggadmin@oras, PASSWORD GGADMIN
-- Exclude GGADMIN-User
TRANLOGOPTIONS EXCLUDEUSER ggadmin
-- Send data to remote host
RMTHOST localhost, MGRPORT 7810
-- Send data to remote trail named rt
RMTTRAIL d:\ogg_new_src\dirdat\tstact\rt
-- Source Table for Replication without BEFORE-IMAGES
-- TABLE TSTACT.GG_HEARTBEAT_TABLE;
-- Source Table for Replication with BEFORE-IMAGES in case of
UPDATE operation
-- BEFORE-IMAGES are required by COMPARECOLS parameter at replication site
TABLE TSTACT.GG_HEARTBEAT_TABLE, GETBEFORECOLS (ON UPDATE ALL);
Parameterdatei: RE2SECO.PRM (Sekundäre Datenbank ORAS)
-- Change Replicat for ORAS
REPLICAT re2seco
-- Connect to Database
USERID ggadmin@oras, PASSWORD GGADMIN
-- Throw error records to discard file
DISCARDFILE .\dirrpt\re2seco.dsc, purge
-- 1:1 mapping - no Source Definition File is needed
ASSUMETARGETDEFS
115
116 Einbau einer UPDATE-Konfliktlösung
-- Map the Source Table to the Target Table without Conflict Detection and Resolution
-- MAP TSTACT.GG_HEARTBEAT_TABLE, TARGET TSTACT.GG_HEARTBEAT_TABLE;
-- Map the Source Table to the Target Table with Conflict Detection but without Resolution
-- MAP TSTACT.GG_HEARTBEAT_TABLE, TARGET TSTACT.GG_HEARTBEAT_TABLE, COMPARECOLS (ON UPDATE ALL);
-- Map the Source Table to the Target Table without Conflict Detection and Resolution
MAP TSTACT.GG_HEARTBEAT_TABLE, TARGET TSTACT.GG_HEARTBEAT_TABLE,
COMPARECOLS (ON UPDATE ALL),
RESOLVECONFLICT (UPDATEROWEXISTS, (max_resolution_method,
USEMAX(CURRENT_TIME),
COLS(CURRENT_TIME)), (DEFAULT, IGNORE));
Replicat RE2SECO nutzt Konfliktlösungsmethode USEMAX und Standardkonfliktlösung IGNORE. Die Angabe
einer Standardkonfliktlösung ist immer erforderlich.
8.8.2Test der Konfliktbehandlung
Nach Aktualisierung der Parameter Files und einem Neustart
der Extract- und Replicat-Prozesse, kann man die Konflikterkennung und deren Behandlung auf einfache und übersichtliche Art mit dem SQL-Skript GG_HB_CONFLICT testen:
Einbau einer UPDATE-Konfliktlösung
/*
Produce a Conflict at both Replication sites for Table GG_
HEARTBEAT_TABLE
*/
connect ggadmin/GGADMIN@orap
-update tstact.gg_heartbeat_table set current_time = sysdate
where db_name = 'ORAS.DE.ORACLE.COM';
commit;
-connect ggadmin/GGADMIN@oras
-update tstact.gg_heartbeat_table set current_time = sysdate
where db_name = 'ORAP.DE.ORACLE.COM';
commit;
Das Skript sollte kurze Zeit nach der Synchronisation aller
Zeitwerte in CURRENT_TIME ausgeführt werden. Damit
sind die über SYSDATE eingetragenen Sekundenwerte mit
Sicherheit ungleich „00“ und sofort als „Konfliktwerte“ zu
erkennen, wenn man sich danach den Inhalt beider Tabellen
GG_HEARTBEAT_TABLE mittels SQL-Skript GG_HB_SELECT_TABLE anschaut.
Test der Konfliktlösung mittels Skript
GG_HB_CONFLICT.SQL
1. Starten der GoldenGate-Prozesse wie in Punkt 8.6
beschrieben
117
118 Einbau einer UPDATE-Konfliktlösung
→ alle Prozesse müssen im Status RUNNING sein!
2. S
tarten einer SQLPlus-Session und Ausführen der
Kommandos wie dargestellt:
...
...
...
D ie Replikation läuft, alle CURRENT_TIME Werte sind synchron!
(15.23.00)
SQL> @gg_hb_select_table
Connect durchgeführt.
GLOBAL_NAME
-----------------ORAP.DE.ORACLE.COM
DB_NAME
Current-Time
------------------------------ ------------------ORAP.DE.ORACLE.COM
13.08.2012,15.23.00
ORAS.DE.ORACLE.COM
13.08.2012,15.23.00
Connect durchgeführt.
GLOBAL_NAME
-----------------ORAS.DE.ORACLE.COM
Einbau einer UPDATE-Konfliktlösung
DB_NAME
Current-Time
------------------------------ ------------------ORAP.DE.ORACLE.COM
13.08.2012,15.23.00
ORAS.DE.ORACLE.COM
13.08.2012,15.23.00
Jetzt wird auf beiden Seiten ein Konflikt ausgelöst
SQL> @gg_hb_conflict
Connect durchgeführt.
GLOBAL_NAME
-----------------ORAP.DE.ORACLE.COM
1 Zeile wurde aktualisiert.
Transaktion mit COMMIT abgeschlossen.
Connect durchgeführt.
GLOBAL_NAME
-----------------ORAS.DE.ORACLE.COM
1 Zeile wurde aktualisiert.
Transaktion mit COMMIT abgeschlossen.
B eide Tabellen besitzen jetzt eine Zeile mit CURRENT_TIME =
15.23.24
E s ist jeweils die Zeile, deren Inhalt durch die Replikation
aktualisiert wird
SQL> @gg_hb_select_table
119
120 Einbau einer UPDATE-Konfliktlösung
Connect durchgeführt.
GLOBAL_NAME
-----------------ORAP.DE.ORACLE.COM
DB_NAME
Current-Time
------------------------------ ------------------ORAP.DE.ORACLE.COM
13.08.2012,15.23.00
ORAS.DE.ORACLE.COM
13.08.2012,15.23.24
Connect durchgeführt.
GLOBAL_NAME
-----------------ORAS.DE.ORACLE.COM
DB_NAME
Current-Time
------------------------------ ------------------ORAP.DE.ORACLE.COM
13.08.2012,15.23.24
ORAS.DE.ORACLE.COM
13.08.2012,15.23.00
...
...
...
N ach Beginn der neuen Minute schauen wir wieder auf die Tabellen.
O bwohl das BEFORE-IMAGE auf beiden Seiten nicht mit dem ak
tuellem Inhalt von CURRENT_TIME übereinstimmt (15.23.24 <>
15.23.00), kommt es nicht zum Fehler. Das heißt, der Konflikt
wurde auf beiden Seiten durch den Replicat-Prozess erkannt
und gelöst.
Einbau einer UPDATE-Konfliktlösung
SQL> @gg_hb_select_table
Connect durchgeführt.
GLOBAL_NAME
-----------------ORAP.DE.ORACLE.COM
DB_NAME
Current-Time
------------------------------ ------------------ORAP.DE.ORACLE.COM
13.08.2012,15.24.00
ORAS.DE.ORACLE.COM
13.08.2012,15.24.00
Connect durchgeführt.
GLOBAL_NAME
--------------------------------------------------------------ORAS.DE.ORACLE.COM
DB_NAME
Current-Time
------------------------------ ------------------ORAP.DE.ORACLE.COM
13.08.2012,15.24.00
ORAS.DE.ORACLE.COM
13.08.2012,15.24.00
...
...
...
Jetzt wird auf beiden Seiten ein zweiter Konflikt ausgelöst.
Beide Tabellen besitzen jetzt eine Zeile mit CURRENT_TIME =
15.30.55.
E s ist jeweils die Zeile, deren Inhalt durch die Replikation
aktualisiert wird.
121
122 Einbau einer UPDATE-Konfliktlösung
SQL> @gg_hb_conflict
Connect durchgeführt.
GLOBAL_NAME
-----------------ORAP.DE.ORACLE.COM
1 Zeile wurde aktualisiert.
Transaktion mit COMMIT abgeschlossen.
Connect durchgeführt.
GLOBAL_NAME
-----------------ORAS.DE.ORACLE.COM
1 Zeile wurde aktualisiert.
Transaktion mit COMMIT abgeschlossen.
SQL> @gg_hb_select_table
Connect durchgeführt.
GLOBAL_NAME
-----------------ORAP.DE.ORACLE.COM
DB_NAME
Current-Time
------------------------------ ------------------ORAP.DE.ORACLE.COM
13.08.2012,15.30.00
ORAS.DE.ORACLE.COM
13.08.2012,15.30.55
Connect durchgeführt.
Einbau einer UPDATE-Konfliktlösung
GLOBAL_NAME
-----------------ORAS.DE.ORACLE.COM
DB_NAME
Current-Time
------------------------------ ------------------ORAP.DE.ORACLE.COM
13.08.2012,15.30.55
ORAS.DE.ORACLE.COM
13.08.2012,15.30.00
S ynchronisationsphase – ORAP-Zeitwert wurde noch nicht re­
pliziert
SQL> @gg_hb_select_table
Connect durchgeführt.
GLOBAL_NAME
-----------------ORAP.DE.ORACLE.COM
DB_NAME
Current-Time
------------------------------ ------------------ORAP.DE.ORACLE.COM
13.08.2012,15.31.00
ORAS.DE.ORACLE.COM
13.08.2012,15.31.00
Connect durchgeführt.
GLOBAL_NAME
--------------------------------------------------------------ORAS.DE.ORACLE.COM
DB_NAME
Current-Time
------------------------------ ------------------ORAP.DE.ORACLE.COM
13.08.2012,15.30.55
123
124 Einbau einer UPDATE-Konfliktlösung
ORAS.DE.ORACLE.COM
13.08.2012,15.31.00
Beide Tabelleninhalte sind wieder synchron, Konfliktbehandlung
o.k.!
SQL> @gg_hb_select_table
Connect durchgeführt.
GLOBAL_NAME
--------------------------------------------------------------ORAP.DE.ORACLE.COM
DB_NAME
Current-Time
------------------------------ ------------------ORAP.DE.ORACLE.COM
13.08.2012,15.31.00
ORAS.DE.ORACLE.COM
13.08.2012,15.31.00
Connect durchgeführt.
GLOBAL_NAME
--------------------------------------------------------------ORAS.DE.ORACLE.COM
DB_NAME
Current-Time
------------------------------ ------------------ORAP.DE.ORACLE.COM
13.08.2012,15.31.00
ORAS.DE.ORACLE.COM
13.08.2012,15.31.00
SQL>
Einbau einer UPDATE-Konfliktlösung
Wie sieht das im Report eines GoldenGate-Replicat-Prozesses aus? Im nächsten Punkt schauen wir in die Reports
des Replicat-Prozesses RE2SECO und des Extract-Prozesses
EX2PRIO.
8.8.3GoldenGate Reports
Bis jetzt sehen wir nur, dass der Replikationsprozess
RE2SECO trotz ausgelöster Konflikte noch läuft. Wir
erzeugen deshalb einen Report, der uns alle Aktionen des
Prozesses aufzeigt.
Erzeugen
eines Reports für Replicat RE2SECO
ORAS → ggsci → send replicat re2seco, report
→ view report re2seco
***************************************************************
Oracle GoldenGate Delivery for Oracle
Version 11.2.1.0.1 OGGCORE_11.2.1.0.1_PLATFORMS_120423.0230
W
indows x64 (optimized), Oracle 11g on Apr 23 2012
06:25:54
Copyright (C) 1995, 2012, Oracle and/or its affiliates. All
rights reserved.
125
126 Einbau einer UPDATE-Konfliktlösung
Starting at 2012-08-13 15:21:18
***************************************************************
Operating System Version:
Microsoft Windows 7 , on x64
Version 6.1 (Build 7601: Service Pack 1)
Process id: 5936
Description:
***************************************************************
**
Running with the following parameters
**
***************************************************************
2012-08-13 15:21:18
INFO
OGG-03035
Operating system charac-
ter set identified as windows-1252. Locale: en_US, LC_ALL:.
--- Name change replicat RE2SECO on Secondary Database ORAS
-REPLICAT re2seco
-- Connect to Database
USERID GGADMIN@oras, PASSWORD *******
2012-08-13 15:21:18
INFO
OGG-03501
WARNING: NLS_LANG envi-
ronment variable is invalid or not set. Using operating system
character set value of WE8MSWIN1252.
-- Throw error records to discard file
DISCARDFILE .\dirrpt\re2seco.dsc, purge
-- 1:1 mapping - no Source Definition File is needed ASSUMETARGETDEFS
127
Einbau einer UPDATE-Konfliktlösung
-- Map the Source Table to the Target Table without Conflict
Detection and Resolution
-- MAP TSTACT.GG_HEARTBEAT_TABLE, TARGET TSTACT.GG_HEARTBEAT_TABLE;
-- Map the Source Table to the Target Table with Conflict Detection but without Resolution
-- MAP TSTACT.GG_HEARTBEAT_TABLE, TARGET TSTACT.GG_HEARTBEAT_TABLE COMPARECOLS (ON UPDATE ALL);
-- Map the Source Table to the Target Table with Conflict Detection and USEMAX Resolution
MAP TSTACT.GG_HEARTBEAT_TABLE, TARGET TSTACT.GG_HEARTBEAT_TABLE, COMPARECOLS (ON UPDATE ALL), RESOLVECONFLICT(UPDATEROWEXIS
TS, (max_resolution_method, USEMAX(CURRENT_TIME), COLS(CURRENT_
TIME)), (DEFAULT, IGNORE));
2012-08-13 15:21:19
INFO
OGG-01815
Virtual Memory Facili-
ties for: COM
anon alloc: MapViewOfFile
anon free: UnmapViewOfFile
file alloc: MapViewOfFile
file free: UnmapViewOfFile
target directories:
D:\ogg_new_tar\dirtmp.
CACHEMGR virtual memory values (may have been adjusted)
CACHESIZE:
2G
CACHEPAGEOUTSIZE (normal):
8M
PROCESS VM AVAIL FROM OS (min):
CACHESIZEMAX (strict force to disk):
4G
3.41G
128 Einbau einer UPDATE-Konfliktlösung
Database Version:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 64bit Production
PL/SQL Release 11.2.0.3.0 - Production
CORE
11.2.0.3.0Production
TNS for 64-bit Windows: Version 11.2.0.3.0 - Production
NLSRTL Version 11.2.0.3.0 - Production
Database Language and Character Set:
NLS_LANG
= ".WE8MSWIN1252"
NLS_LANGUAGE
= "AMERICAN"
NLS_TERRITORY
= "AMERICA"
NLS_CHARACTERSET = "WE8MSWIN1252"
***************************************************************
**
Run Time Messages
**
***************************************************************
Opened trail file d:\ogg_new_tar\dirdat\tstact\rt000004 at 201208-13 15:21:19
MAP resolved (entry TSTACT.GG_HEARTBEAT_TABLE):
MAP "TSTACT"."GG_HEARTBEAT_TABLE", TARGET TSTACT.GG_HEARTBEAT_
TABLE, COMPARECOLS (ON UPDATE ALL),
RESOLVECONFLICT(UPDATEROWEXISTS, (max_resolution_method,
USEMAX(CURRENT_TIME), COLS(CURRENT_TIME)),
(DEFAULT, IGNORE));
Using following columns in default map by name:
DB_NAME, CURRENT_TIME
Using the following key columns for target table TSTACT.GG_
HEARTBEAT_TABLE: DB_NAME.
129
Einbau einer UPDATE-Konfliktlösung
Switching to next trail file d:\ogg_new_tar\dirdat\tstact\
rt000005 at 2012-08-13 15:21:22 due to EOF, with current RBA
5420
Opened trail file d:\ogg_new_tar\dirdat\tstact\rt000005 at 201208-13 15:21:22
Processed extract process graceful restart record at seq 5, rba
1017.
2012-08-13 15:32:47
GGSCI: STATS
INFO
OGG-01021
Command received from
OGG-01021
Command received from
reportcdr.
2012-08-13 15:35:36
INFO
GGSCI: STOP.
***************************************************************
*
** Run Time Statistics **
*
***************************************************************
Last record for the last committed transaction is the following:
______________________________________________________________
Trail name :
d:\ogg_new_tar\dirdat\tstact\rt000005
Hdr-Ind
:
E
(x45)
Partition
:
.
(x04)
UndoFlag
:
.
(x00)
BeforeAfter:
A
(x41)
RecLength
:
51 (x0033)
IO Time
: 2012-08-13
15:35:01.000000
IOType
:
15
(x0f)
OrigNode
:
255
(xff)
TransInd
:
.
(x02)
FormatType :
R
(x52)
SyskeyLen
:
0
(x00)
Incomplete :
.
(x00)
AuditRBA
:
Continued
:
N
0
AuditPos
: 6303248
(x00)
RecCount
:
1
(x01)
130 Einbau einer UPDATE-Konfliktlösung
2012-08-13 15:35:01.000000 FieldComp
Len
51 RBA 7934
Name: TSTACT.GG_HEARTBEAT_TABLE
________________________________________________________________
Reading d:\ogg_new_tar\dirdat\tstact\rt000005, current RBA 8089,
22 records
Report at 2012-08-13 15:35:36 (activity since 2012-08-13
15:21:22)
From Table TSTACT.GG_HEARTBEAT_TABLE to TSTACT.GG_HEARTBEAT_
TABLE:
#
inserts:
0
#
updates:
22
#
deletes:
0
#
discards:
0
# CDR conflicts
:
2
# CDR resolutions succeeded
:
2
# CDR UPDATEROWEXISTS conflicts :
2
Last log location read:
FILE:
d:\ogg_new_tar\dirdat\tstact\rt000005
SEQNO:
5
RBA:
8089
TIMESTAMP: Not Available
...
...
...
EOF:
YES
READERR:
400
Einbau einer UPDATE-Konfliktlösung
Die interessanten Informationen des Reports, von dem hier
nur der erste Teil gezeigt wird, sind rot hervorgehoben.
Zuerst sind die Parameterzeilen aufgelistet. Die wirksamen
Parameter sehen wir auch noch unter den „Run Time
Messages“. Dort wird noch das Spalten-Mapping angezeigt
und die PRIMARY KEY-Spalte aufgelistet. Es werden zwei
eingegebene Kommandos protokolliert, die eingegeben
wurden: das Kommando STATS mit REPORTCDR und das
Kommando STOP sowie am Schluss dann die Information
zur Anzahl der erfolgten UPDATE-Replikationen und zu den
durchgeführten Konfliktbehandlungen. RE2SECO lief von
15.21.22 bis 15.35.36. In dieser Zeit wurden 22 UPDATES verarbeitet, sprich repliziert. Es traten zwei Konflikte vom Typ
UPDATEROWEXISTS auf, die erfolgreich behandelt wurden.
Die Ausgabe des Kommandos STATS mit Parameter
REPORT­CDR sieht so aus:
...
GGSCI (JJT420) 7> stats replicat re2seco, reportcdr
Sending STATS request to REPLICAT RE2SECO ...
Start of Statistics at 2012-08-13 15:32:47.
Replicating from TSTACT.GG_HEARTBEAT_TABLE to TSTACT.GG_HEARTBEAT_TABLE:
131
132 Einbau einer UPDATE-Konfliktlösung
*** Total statistics since 2012-08-13 15:21:22 ***
Total inserts
0.00
Total updates
19.00
Total deletes
0.00
Total discards
Total operations
0.00
19.00
Total CDR conflicts
2.00
CDR resolutions succeeded
2.00
CDR UPDATEROWEXISTS conflicts
2.00
...
End of Statistics.
Jetzt schauen wir uns auch noch den Report des dazu­
gehörigen Extract-Prozesses EX2PRIO an:
Erzeugen eines Reports für Extract EX2PRIO
ORAP → ggsci → send extract ex2prio, report →
view report ex2prio
***************************************************************
Oracle GoldenGate Capture for Oracle
Version 11.2.1.0.1 OGGCORE_11.2.1.0.1_PLATFORMS_120423.0230
W indows x64 (optimized), Oracle 11g on Apr 23 2012
06:01:56
Copyright (C) 1995, 2012, Oracle and/or its affiliates. All
rights reserved.
133
Einbau einer UPDATE-Konfliktlösung
Starting at 2012-08-13 15:20:45
***************************************************************
Operating System Version:
Microsoft Windows 7 , on x64
Version 6.1 (Build 7601: Service Pack 1)
Process id: 6724
Description:
***************************************************************
**
Running with the following parameters
**
***************************************************************
2012-08-13 15:20:45
INFO
OGG-03035
Operating system charac-
ter set identified as windows-1252. Locale: en_US, LC_ALL:.
--- Change Extract EX2PRIO for primary Database ORAP
-EXTRACT ex2prio
-- Hide Database Connect Information
NOLIST
2012-08-13 15:20:45
INFO
OGG-03500
WARNING: NLS_LANG envi-
ronment variable does not match database character set, or not
set. Using database character set value of WE8MSWIN1252.
-- Exclude GG-User
TRANLOGOPTIONS EXCLUDEUSER ggadmin
-- Send data to remote host
134 Einbau einer UPDATE-Konfliktlösung
RMTHOST localhost, MGRPORT 7811
-- Send data to remote trail named rt
RMTTRAIL d:\ogg_new_tar\dirdat\tstact\rt
-- Source table for Replication without Before-Images
-- TABLE TSTACT.GG_HEARTBEAT_TABLE;
-- Source table for Replication with Before-Images in case of
UPDATE operation
-- Before-Images are required by COMPARECLOS parameter at replication site
TABLE TSTACT.GG_HEARTBEAT_TABLE, GETBEFORECOLS (ON UPDATE ALL);
2012-08-13 15:20:45
INFO
OGG-01815
Virtual Memory Facili-
ties for: BR
anon alloc: MapViewOfFile
anon free: UnmapViewOfFile
file alloc: MapViewOfFile
file free: UnmapViewOfFile
target directories:
D:\ogg_new_src\BR\EX2PRIO.
Bounded Recovery Parameter:
BRINTERVAL = 4HOURS
BRDIR
= D:\ogg_new_src
2012-08-13 15:20:45
INFO
OGG-01815
Virtual Memory Facili-
ties for: COM
anon alloc: MapViewOfFile
anon free: UnmapViewOfFile
file alloc: MapViewOfFile
file free: UnmapViewOfFile
target directories:
D:\ogg_new_src\dirtmp.
135
Einbau einer UPDATE-Konfliktlösung
CACHEMGR virtual memory values (may have been adjusted)
CACHESIZE:
4.16G
CACHEPAGEOUTSIZE (normal):
8M
PROCESS VM AVAIL FROM OS (min):
8.16G
CACHESIZEMAX (strict force to disk):
6.16G
2012-08-13 15:20:45
WARNING OGG-01842
CACHESIZE PER DYNAMIC
DETERMINATION (4.16G) LESS THAN RECOMMENDED: 64G (64bit system)
vm found: 8.16G
Check swap space. Recommended swap/extract: 128G (64bit system).
Database Version:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 64bit Production
PL/SQL Release 11.2.0.3.0 - Production
CORE
11.2.0.3.0Production
TNS for 64-bit Windows: Version 11.2.0.3.0 - Production
NLSRTL Version 11.2.0.3.0 - Production
Database Language and Character Set:
NLS_LANG
= ".WE8MSWIN1252"
NLS_LANGUAGE
= "AMERICAN"
NLS_TERRITORY
= "AMERICA"
NLS_CHARACTERSET = "WE8MSWIN1252"
2012-08-13 15:20:46
INFO
OGG-01513
Positioning to Sequence
148, RBA 19375632, SCN 0.5733271.
2012-08-13 15:20:46
INFO
OGG-01516
Positioned to Sequence
148, RBA 19375632, SCN 0.5733271, Aug 9, 2012 2:51:05 PM.
2012-08-13 15:20:51
INFO
to 27985 (flush size 27985).
OGG-01226
Socket buffer size set
136 Einbau einer UPDATE-Konfliktlösung
2012-08-13 15:20:51
INFO
OGG-01055
Recovery initialization
completed for target file d:\ogg_new_tar\dirdat\tstact\rt000004,
at RBA 5420.
2012-08-13 15:20:51
INFO
OGG-01478
Output file d:\ogg_new_
tar\dirdat\tstact\rt is using format RELEASE 11.2.
2012-08-13 15:20:51
INFO
OGG-01026
Rolling over remote file
d:\ogg_new_tar\dirdat\tstact\rt000005.
2012-08-13 15:20:51
INFO
OGG-01053
Recovery completed for
target file d:\ogg_new_tar\dirdat\tstact\rt000005, at RBA 1017.
2012-08-13 15:20:51
INFO
OGG-01057
Recovery completed for
all targets.
***************************************************************
**
Run Time Messages
**
***************************************************************
2012-08-13 15:20:51
INFO
OGG-01517
Position of first record
processed Sequence 148, RBA 19375632, SCN 0.5733271, Aug 9, 2012
2:51:05 PM.
TABLE resolved (entry TSTACT.GG_HEARTBEAT_TABLE):
TABLE "TSTACT"."GG_HEARTBEAT_TABLE", GETBEFORECOLS (ON UPDATE
ALL);
Using the following key columns for source table TSTACT.GG_
HEARTBEAT_TABLE: DB_NAME.
2012-08-13 15:20:53
INFO
OGG-00732
Found crash recovery
marker from thread #1 on sequence 148 at RBA 19760144. Aborting
uncommitted transactions.
2012-08-13 15:35:18
GGSCI: STOP.
INFO
OGG-01021
Command received from
137
Einbau einer UPDATE-Konfliktlösung
***************************************************************
*
** Run Time Statistics **
*
***************************************************************
Report at 2012-08-13 15:35:18 (activity since 2012-08-13
15:20:53)
Output to d:\ogg_new_tar\dirdat\tstact\rt:
From Table TSTACT.GG_HEARTBEAT_TABLE:
#
inserts:
0
#
updates:
21
#
befores:
21
#
deletes:
0
#
discards:
0
REDO Log Statistics
Read ahead buffers
3
Read ahead buffer size
1024000
Read ahead for current log
on
Bytes read
908601856
Bytes read ahead
905529856
Bytes unused
64512000
Bytes parsed
844094464
Bytes output
7072
...
...
...
138 Löschen der Replikationsumgebung
EX2PRIO lief von 15.20.45 bis 15.35.18. In dieser Zeit
wurden 21 UPDATES verarbeitet. Zu jedem UPDATE wurde
noch ein Satz mit den BEFORE-IMAGE in das entsprechende Remote Trail File auf der Zielseite geschrieben. Die Report Files der Prozesse EX2PRIO beziehungsweise EX2SECO
sehen den beiden hier gezeigten sehr ähnlich und werden
deshalb aus Platzgründen nicht aufgelistet.
8.9
Löschen der Replik ationsumgebung
Ausführen der beiden OBEY Files für Cleanup
ORAP → ggsci → obey cleanup_orap.oby
D:\ogg_new_src>ggsci
Oracle GoldenGate Command Interpreter for Oracle
Version 11.2.1.0.1 OGGCORE_11.2.1.0.1_PLATFORMS_120423.0230
Windows x64 (optimized), Oracle 11g on Apr 23 2012 04:55:02
Copyright (C) 1995, 2012, Oracle and/or its affiliates. All
rights reserved.
GGSCI (JJT420) 1> obey cleanup_orap.oby
GGSCI (JJT420) 2> -- *** Stop and delete GG change replicat ***
GGSCI (JJT420) 3> -- Stop change replicat re2prio
Löschen der Replikationsumgebung
GGSCI (JJT420) 4> STOP REPLICAT re2prio
REPLICAT RE2PRIO is already stopped.
GGSCI (JJT420) 5> -- Database login to primary database
GGSCI (JJT420) 6> DBLOGIN USERID ggadmin@orap PASSWORD GGADMIN
Successfully logged into database.
GGSCI (JJT420) 7> -- Delete supplemental log group for replication table
GGSCI (JJT420) 8> DELETE TRANDATA TSTACT.GG_HEARTBEAT_TABLE
Logging of supplemental redo log data disabled for table TSTACT.
GG_HEARTBEAT_TABLE.
GGSCI (JJT420) 9> -- Delete the specific checkpoint table without prompt (!)
GGSCI (JJT420) 10> DELETE CHECKPOINTTABLE GGADMIN.GG_CHKPT1 !
Successfully deleted checkpoint table ggadmin.gg_chkpt1.
GGSCI (JJT420) 11> -- Delete change replicate re2prio
GGSCI (JJT420) 12> DELETE REPLICAT re2prio
139
140 Löschen der Replikationsumgebung
Deleted REPLICAT RE2PRIO.
GGSCI (JJT420) 13> -- *** Stop and delete GG change extract ***
GGSCI (JJT420) 14> -- Stop change extract ex2prio
GGSCI (JJT420) 15> STOP EXTRACT ex2prio
EXTRACT EX2PRIO is already stopped.
GGSCI (JJT420) 16> -- Delete change extract ex2prio
GGSCI (JJT420) 17> DELETE EXTRACT ex2prio
Deleted EXTRACT EX2PRIO.
GGSCI (JJT420) 18> -- info
GGSCI (JJT420) 19> INFO ALL
Program
StatusGroupLag at ChkptTime Since Chkpt
MANAGER
STOPPED
GGSCI (JJT420) 20>
141
Löschen der Replikationsumgebung
ORAS → ggsci → obey cleanup_oras.oby
D:\ogg_new_tar>ggsci
Oracle GoldenGate Command Interpreter for Oracle
Version 11.1.1.1.2 OGGCORE_11.1.1.1.2_PLATFORMS_111004.2100
Windows x64 (optimized), Oracle 11g on Oct
5 2011 00:28:13
Copyright (C) 1995, 2011, Oracle and/or its affiliates. All
rights reserved.
GGSCI (JJT420) 1> obey cleanup_oras.oby
GGSCI (JJT420) 2> -- *** Stop and delete GG change replicat ***
GGSCI (JJT420) 3> -- Stop change replicat re2seco
GGSCI (JJT420) 4> STOP REPLICAT re2seco
REPLICAT RE2SECO is already stopped.
GGSCI (JJT420) 5> -- Database login to secondary database
GGSCI (JJT420) 6> DBLOGIN USERID ggadmin@oras PASSWORD GGADMIN
Successfully logged into database.
GGSCI (JJT420) 7> -- Delete supplemental log group for replica-
142 Löschen der Replikationsumgebung
tion table
GGSCI (JJT420) 8> DELETE TRANDATA TSTACT.GG_HEARTBEAT_TABLE
Logging of supplemental redo log data disabled for table TSTACT.GG_
HEARTBEAT_TABLE.
GGSCI (JJT420) 9> -- Delete the specific checkpoint table without prompt
(!)
GGSCI (JJT420) 10> DELETE CHECKPOINTTABLE ggadmin.gg_chkpt1 !
Successfully deleted checkpoint table ggadmin.gg_chkpt1.
GGSCI (JJT420) 11> -- Delete change replicat re2seco
GGSCI (JJT420) 12> DELETE REPLICAT re2seco
Deleted REPLICAT RE2SECO.
GGSCI (JJT420) 13> -- *** Stop and delete GG change extract ***
GGSCI (JJT420) 14> -- Stop change extract ex2seco
GGSCI (JJT420) 15> STOP EXTRACT ex2seco
EXTRACT EX2SECO is already stopped.
GGSCI (JJT420) 16> -- Delete change extract ex2seco
Löschen der Replikationsumgebung
GGSCI (JJT420) 17> DELETE EXTRACT ex2seco
Deleted EXTRACT EX2SECO.
GGSCI (JJT420) 18> -- info
GGSCI (JJT420) 19> INFO ALL
Program
StatusGroupLagTime Since Chkpt
MANAGERSTOPPED
GGSCI (JJT420) 20>
I m Beispiel verwenden wir eine spezifische Checkpoint
Table, die nur von einem Prozess genutzt wird. Wir
können sie deshalb auch bedenkenlos löschen, wenn
der dazugehörige Replicat-Prozess (RE2PRIO beziehungsweise RE2SECO) gelöscht wird. Gibt man beim
DELETE kein Ausrufezeichen (!) an, erhält man die
Nachricht:
This checkpoint table may be required for other installations.
Are you sure you want to delete this checkpoint table?
Zur Bestätigung des Löschens muss man „Y“ eingeben.
143
144 Löschen der Replikationsumgebung
Das
Löschen eines Extract- oder Replicat-Prozesses
benötigt einen Login zur Datenbank:
Extract: UNREGISTER extract_name LOGRETENTION
Replicat: DELETE CHECKPOINTTABLE checkpointtable_name
Nach Abarbeitung der beiden Skripte „cleanup_orap.oby“
und „cleanup_oras.oby“ bitte noch diese Hinweise beachten:
GoldenGate
Remote Trail Files löschen
(Trail File Namen siehe Punkt 2.6):
Primäre GoldenGate-Instanz:
Alle Dateien im Pfad d:\ogg_new_src\dirdat\tstact
Sekundäre GoldenGate-Instanz:
Alle Dateien im Pfad d:\ogg_new_tar\dirdat\tstact
Wenn man das Löschen der Files vergisst, die Replikations­um­gebung wieder aufbaut und das gleiche Verzeichnis erneut
verwendet, kann der Replicat-Prozess nicht starten, weil er das
aktuellste Trail File nicht finden kann.
Löschen der Replikationsumgebung
rimäre GoldenGate-Instanz: Löschen der Report
P
Files im Pfad d:\ogg_new_src\dirrpt
Manager: mgr.rpt, mgr0.rpt, ..., mgr9.rpt
Extract-Prozess EX2PRIO:
ex2prio.rpt, ex2prio0.rpt, ..., ex2prio9.rpt
Replicat-Prozess RE2PRIO:
re2prio.rpt, re2prio0.rpt, …, re2prio9.rpt
(Nicht unbedingt nötig, aus Gründen der Übersichtlichkeit empfohlen!)
Sekundäre GoldenGate-Instanz: Löschen der Report
Files im Pfad d:\ogg_new_tar\dirrpt
Manager: mgr.rpt, mgr0.rpt, ..., mgr9.rpt
Extract-Prozess EX2SECO:
ex2seco.rpt, ex2seco0.rpt, ..., ex2seco9.rpt
Replicat-Prozess RE2SECO:
re2seco.rpt, re2seco0.rpt, …, re2seco9.rpt
(Nicht unbedingt nötig, aus Gründen der Übersichtlichkeit empfohlen!)
145
146 Löschen der Replikationsumgebung
Primäre
GoldenGate-Instanz: Löschen von Checkpoint Files
im Pfad d:/ogg_new_src/dirchk
(Diese Files sollten normalerweise nach dem Löschen der Replikationsumgebung nicht
mehr existieren!)
Extract-Prozess EX2PRIO: ex2prio.cpd, ex2prio.cpe, ex2prio.cps
Replicat-Prozess RE2PRIO: re2prio.cpr, re2prio.cps
Sekundäre
GoldenGate-Instanz: Löschen von Checkpoint Files
im Pfad d:/ogg_new_tar/dirchk
(Diese Files sollten normalerweise nach dem Löschen der Replikationsumgebung nicht
mehr existieren!)
Extract-Prozess EX2SECO: ex2seco.cpd, ex2seco.cpe, ex2seco.cps
Replicat-Prozess RE2SECO: re2seco.cpr, re2seco.cps
Schlusswort
9 Schlusswort
Sie sind nun am Ende des Dojo angekommen. Wenn Sie
alles gelesen haben, sollten „GoldenGate“ und „Replikation“ keine Fremdworte mehr für Sie sein. Vielleicht hat
der eine oder andere auch schon selbst probiert, die hier
vorgestellte Aktiv-Aktiv-Replikation in seiner Umgebung zu
implementieren. Wenn ja, dann hoffentlich erfolgreich. Ich
möchte aber noch ein paar Worte dazu sagen, warum ich
gerade dieses Beispiel zur Grundlage des Dojo gemacht
habe. Leser werden vielleicht Themen vermisst haben, die
für eine Replikation von großer Bedeutung sind. So bin
ich nur kurz auf INITIAL-LOAD beziehungsweise Instantiierung eingegangen. Ich habe auch nur eine Eins-zu-einsReplikation behandelt, bei der das Replikationsobjekt auf
Quell- und Zieldatenbank einen identischen Aufbau hat.
Vielleicht ist auch jemand der Meinung, das Beispiel sei
praxisfremd, weil niemals nur eine Tabelle mit zwei Spalten
repliziert wird? Ja, Sie haben recht! Das Dojo behandelt das
Thema Replikation nicht erschöpfend. Aber das ist auch
nicht das Anliegen dieser kleinen Publikation. Unsere Dojos
sind an Leser gerichtet, die sich erstmals mit einem Thema
beschäftigen und so schnell wie möglich kleine Erfolge erzielen möchten. Damit sind sie motiviert, sich tiefgründiger
mit der Problematik zu befassen. Allein zu GoldenGate gibt
es einen Berg an Dokumentation, den man durchdringen
147
148 SChlusswort
muss, wenn man eine Replikation aufbauen will. Aus folgenden
Gründen wurde diese Aktiv-Aktiv-Replikation zur Basis für das Dojo
gewählt:
1.Einfach und überschaubar durch nur eine kleine Tabelle
2.Schneller Start weil kein INITIAL-LOAD nötig
3.Minimaler Ressourcenbedarf in der Datenbank
4.Replikationszustand am Inhalt der Tabellen schnell erkennbar
5.Bidirektional zum Zeigen einer UPDATE-Konfliktbehandlung
6.Wiederverwendbar und empfohlen für jede Replikationsumgebung
→ HEARTBEAT-Tabelle zur Replikationsüberwachung
Mit dem Beispiel will ich Personen ohne Vorwissen zu GoldenGate
erfolgreich durch die Konfiguration einer Replikation führen. Beginnend mit den Vorbereitungen in der Datenbank, das schrittweise Einrichten der GoldenGate-Umgebung, das Starten und Stoppen der Prozesse, das Lösen von UPDATE-Konflikten, das Erzeugen
und Anschauen von Reports bis zum Löschen der Umgebung,
wurden alle Themen der Replikation behandelt. Wenn Sie das nach
dem Durcharbeiten des Dojo auch so empfinden, wäre das von mir
avisierte Ziel erreicht, und das Dojo hätte seinen Zweck erfüllt.
SChlusswort
Abschließend noch der Hinweis auf Informationen zum hier
nicht behandelten INITIAL-LOAD und zu den Möglichkeiten des Mappings und der Transformation von Replikationsobjekten auf der Zielseite. Auf unserer Community-Seite
(siehe Punkt 10), die speziell für unsere Kunden im deutschsprachigen Raum gedacht ist, finden Sie Präsentationen,
Beschreibungen und entsprechende Demos zu diesen
beiden Themen.
149
150 Weitere Informationen
10 Weitere Informationen
Oracle GoldenGate Documentation
Oracle GoldenGate Oracle Installation and Setup Guide Release 11.2.1
http://docs.oracle.com/cd/E35209_01/doc.1121/e35957.pdf
Oracle GoldenGate Windows and Unix Administrator’s Guide 11g
Release 2, Patch Set 1 (11.2.1.0.1)
http://docs.oracle.com/cd/E35209_01/doc.1121/e29397.pdf
Oracle GoldenGate Windows and Unix Reference Guide 11g Release 2,
Patch Set 1 (11.2.1.0.1)
http://docs.oracle.com/cd/E35209_01/doc.1121/e29399.pdf
Oracle GoldenGate Windows and Unix Troubleshooting and Tuning Guide 11g
Release 2, Patch Set 1 (11.2.1.0.1)
http://docs.oracle.com/cd/E35209_01/doc.1121/e35180.pdf
Oracle GoldenGate System Monitoring Plug-in Installation Guide
Release 12.1.0.1.0
http://docs.oracle.com/cd/E24628_01/install.121/e27804.pdf
Oracle GoldenGate Monitor Administrator’s Guide 11g Release 1 (11.1.1.1)
http://docs.oracle.com/cd/E22355_01/doc.11111/e17815.pdf
Oracle GoldenGate Director Administrator’s Guide 11g Release 2 (11.2.1)
http://docs.oracle.com/cd/E35209_01/doc.1121/e35631.pdf
Oracle GoldenGate Veridata Administrator’s Guide Version 3.0
http://docs.oracle.com/cd/E15881_01/doc.104/gg_veridata_admin.pdf
Weitere Informationen
151
Oracle GoldenGate White Papers
Oracle GoldenGate 11g Release 2 New Features Overview
http://my.oracle.com/site/pd/fmw/products/DI/gg/Datasheets/
cnt1619252.pdf
Oracle GoldenGate 11g: Real-Time Access to Real-Time Information
http://www.oracle.com/us/products/middleware/data-integration/
goldengate11g-realtime-wp-168153.pdf
Zero-Downtime Database Upgrades with Oracle GoldenGate
http://www.oracle.com/technetwork/middleware/goldengate/overview/
ggzerodowntimedatabaseupgrades-174928.pdf
Oracle GoldenGate on Oracle Exadata Database Machine Configuration
http://www.oracle.com/technetwork/database/features/availability/
maa-wp-gg-oracledbm-128760.pdf
Best Practices for Migrating/Upgrading Oracle Database Using
Oracle GoldenGate 11g
http://www.oracle.com/jp/gridcenter/partner/fujitsu/20110627-wpggupgrade-en-423587-ja.pdf
152 Weitere Informationen
Oracle Technology Network
Oracle GoldenGate on Oracle Technology Network (OTN)
http://www.oracle.com/us/products/middleware/data-integration/
goldengate/index.html
Oracle Support Portal
https://support.oracle.com
(Registrierung erforderlich: → Get Started → Register)
Oracle Learning Library
http://www.oracle.com/goto/oll
(Product Familie: Fusion Middleware → Product: GoldenGate)
Deutsche Oracle Data Integration Community
http://apex.oracle.com/pls/otn/f?p=43477:1
(Global Page → Community Data Integration)
Copyright © 2013, Oracle. All rights reserved. Oracle is a registered
trademark of Oracle Corporation and/or its affiliates. Other names may
be trademarks of their respective owners.
Herausgeber: Günther Stürner, Oracle Deutschland B.V.
Design: volkerstegmaier.de // Druck: Stober GmbH, Eggenstein

Similar documents