Replikation mit ORACLE Streams 11g

Werbung
Replikation mit ORACLE Streams 11g
DOAG - SIG Database - München – 07.10.2009
Joachim Jaensch
Principal Sales Consultant
BU ST & PCM
Agenda
Oracle Streams - Allgemeines
Replication mit Oracle Streams
Elemente und Prozesse von Streams
Capture (Erfassen)
Staging (Ablegen)
Propagation (Weiterleiten)
Apply (Anwenden)
Rules, Rule-based Transformationen und Konflikte
Einrichten von Oracle Streams Umgebungen
Oracle Streams Konfigurationen
“First SCN” – Problematik
Monitoring und Analyse
Zusammenfassung
<Insert Picture Here>
[email protected]
Agenda
Oracle Streams - Allgemeines
Replication mit Oracle Streams
Elemente und Prozesse von Streams
Capture (Erfassen)
Staging (Ablegen)
Propagation (Weiterleiten)
Apply (Anwenden)
Rules, Rule-based Transformationen und Konflikte
Einrichten von Oracle Streams Umgebungen
Oracle Streams Konfigurationen
“First SCN” – Problematik
Monitoring und Analyse
Zusammenfassung
<Insert Picture Here>
[email protected]
Oracle Streams - Allgemeines
 Stream = Strom, Fluß
 Stream von Informationen innerhalb einer oder verschiedener Datenbanken
 Informationen können sein: DML- oder DDL Operationen, Nachrichten, ...
 Informationseinheit im Stream wird als „EVENT“ bezeichnet
 Implizite Events: DDL und DML Æ LCR‘s (Logical Change Records)
 Explizite Events: User-created Information
 Realisiert durch Datenbankstruktur und Hintergrundprozesse
 Genutzt für Replikation (Replication) und Informationsverteilung (Advanced Queuing)
 Oracle und Nicht-Oracle Datenbanken
 Es wird Oracle LogMiner Technologie genutzt
 Realisiert durch Basis-Elemente: Capture, Staging, Propagation und Apply
 Capture nicht für Schemas: SYS, SYSTEM, CTXSYS
[email protected]
Einsatz von Oracle Streams
 Laden von Data Warehouses
 Messaging und Benachrichtigungen
 Logical Standby Datenbanken
 Replication
 Minimierung der Downtime bei Upgrades
[email protected]
Agenda
Oracle Streams - Allgemeines
Replication mit Oracle Streams
Elemente und Prozesse von Streams
Capture (Erfassen)
Staging (Ablegen)
Propagation (Weiterleiten)
Apply (Anwenden)
Rules, Rule-based Transformationen und Konflikte
Einrichten von Oracle Streams Umgebungen
Oracle Streams Konfigurationen
“First SCN” – Problematik
Monitoring und Analyse
Zusammenfassung
<Insert Picture Here>
[email protected]
Replication mit Oracle Streams
 Automatisches Erfassen (Capture), Ablegen (Staging),
Weiterleiten (Propagation) und Anwenden (Apply)
von DML- und DDL-Operationen
 Asynchron
 Identische Objekte
 Objekte, die durch eine Transformation oder Funktion
miteinander verbunden sind
 Unterstützt flexibles Verschieben von Daten oder Teilmengen
von Daten
 Gateways und APIs zur Unterstützung heterogener Umgebungen
 Niedrige Belastung für das Produktionssystem
[email protected]
Oracle Replication - Entwicklung
 Oracle 7.1 – Advanced Replication (Snapshots, Multimaster Replication)
 Oracle 8.1 – Materialized Views ersetzen Snapshots
 Oracle 9.2 – Oracle Streams (Replication, Message Queuing)
 Oracle 10.2 – Autotuning Streams Pool, Buffered Messaging, EM Support
Simplified APIs, Deklarative Transformation
 Oracle 11.1 – Combined Capture & Apply, Streams Advisor & Topology
Sychronous Capture, Transparent Data Encryption Support,
Split and Merge of a Streams Destination, LCR Tracking
 Oracle 11.2 – Compressed Tables, Capture & Apply SecureFile LOBs,
Statement DML Handlers, Keep Column Declarative RuleBased Transformation, Automatic Split and Merge of a
Streams Destination
[email protected]
Advanced Replication vs. Oracle Streams
Advanced Replication
Implementierung
Log-Tables based
Oracle Streams
Queue based
Streams Processes
Streams Pool
DML Änderungen
yes
yes
DDL Änderungen
no
yes
Schema Änderungen
no
Non-Oracle DBs
yes
yes (DML only)
yes
no
yes
Parallelisierung
no
yes
Flexibilität
low
high
Permanente Verbindungen
[email protected]
Oracle Streams – Begriffe
Source DB, Primary DB, Origine DB, Master DB
Quell-Datenbank, deren Daten teilweise oder vollständig propagiert (weiterverteilt) werden
Destination DB, Secondary DB, Target DB, Slave DB
Ziel-Datenbank, die Daten von einer Source DB empfängt
Intermediate DB
Verteiler-Datenbank, die Daten erhält und dann weiter propagiert.
Single Source Replication (Hub & Spoke)
Eine Source DB – ein oder mehrere Destination DB‘s
Multiple Source Replication (Hub & Spoke)
Mehrere Source DB‘s – ein oder mehrere Destination DB‘s
Multimaster Replication, N-Way Replication
Mehrere DB‘s sind gleichzeitig Source DB und Destination DB
Homogeneous Replication
Replication zwischen Oracle DB‘s
Heterogeneous Replication
Replication zwischen Oracle DB‘s und Fremddatenbanken (z.B.: IBM DB2)
[email protected]
Oracle Streams – Umgebungen
!
Primary
Database
Primary
Secondary
Database
Database
Primary 1
Database
!
Single Source Replication
!
Secondary
Secondary
Database
Database
Hub & Spoke
Primary
Intermediate
Secondary
Database
Database
Database
Single Source with Forwarding or Downstream Capture
! !
Primary 2
Primary 3
Database
Database
!
Multiple Source Replication
Multimaster Replication
! = Konflikte
[email protected]
Agenda
Oracle Streams - Allgemeines
Replication mit Oracle Streams
Elemente und Prozesse von Streams
Capture (Erfassen)
Staging (Ablegen)
Propagation (Weiterleiten)
Apply (Anwenden)
Rules, Rule-based Transformationen und Konflikte
Einrichten von Oracle Streams Umgebungen
Oracle Streams Konfigurationen
“First SCN” – Problematik
Monitoring und Analyse
Zusammenfassung
<Insert Picture Here>
[email protected]
Oracle Streams – Basis-Elemente
Log-based
Capture
Staging
Default
Apply
Propagation
Log-based
Capture
Staging
Default
Apply
[email protected]
Oracle Streams – Server Prozesse
Capture
CP01, CP02, ...
Capture Preparer
LogMiner
MS00
LogMiner Reader
MS01
LogMiner Builder
MS02
LogMiner Preparer
CJQ0
Job Queue Coordinator
J000, J001, ...
Job Queue Slaves
AP01, AP02, ...
Apply Preparer
AS01
Apply Reader
AS02
Apply Server
Propagation
Apply
[email protected]
Oracle Streams – Prozesse
Quell-DB
Ziel-DB
(Source)
(Destination)
P
Queue
------
Propagation
LCRs
Redolog
C
Queue
----LCRs
Staging
Capture
A
Apply
 Verbindung der Datenbanken über Database Link(s)
 In der Regel ein Link (Multiple Links möglich)
Oracle Streams Prozess
[email protected]
Multiple Links to same Destination
 With GLOBAL_NAMES = TRUE, a database link must be named
the same as the global name of the database it connects to.
Æ Limits you to one database link per remote server
 Connect qualifiers provide a way to create multiple database
links to a remote server even with GLOBAL_NAMES = TRUE.
CREATE DATABASE LINK sales.acme.com@sales_1 USING ‘pgh_sales’;
CREATE DATABASE LINK sales.acme.com@sales_2 USING ‘pgh_sales’;
SELECT * FROM [email protected]@sales_1;
[email protected]
16
Agenda
Oracle Streams - Allgemeines
Replication mit Oracle Streams
Elemente und Prozesse von Streams
Capture (Erfassen)
Staging (Ablegen)
Propagation (Weiterleiten)
Apply (Anwenden)
Rules, Rule-based Transformationen und Konflikte
Einrichten von Oracle Streams Umgebungen
Oracle Streams Konfigurationen
“First SCN” – Problematik
Monitoring und Analyse
Zusammenfassung
<Insert Picture Here>
[email protected]
Capture Process & Synchronous Capture
Oracle Streams
Capture Process
SE1
SE
EE1
NO
NO
YES
YES
YES
YES
Propagation Process
YES
YES
YES
Apply Process
YES
YES
YES
(Asynchronous, Redolog based)
Synchronous Capture *
ab: O11gR1
* nur DML
[email protected]
Capture Process vs. Synchronous Capture (1)
 Capture Processes
Capture Prozesse erhalten Änderungen über die RedoLog Files
(online Redologs, archived Redologs) und erstellen daraus LCRs,
die für die Weiterverarbeitung in eine Capture Queue gestellt werden.
 Synchronous Captures
ab: O11gR1
Synchronous Capture nutzt einen internen Mechanismus zum Erkennen
und verarbeiten von DML Änderungen. Es werden auch LCRs aufgebaut,
die für die Weiterverarbeitung aber immer in eine Persistent Queue (Platte!)
gestellt werden. Es werden keine DDL Änderungen verarbeitet!
[email protected]
Capture Process vs. Synchronous Capture (2)
 Capture Processes werden genutzt:
 wenn relativ viele Tabellen-Änderungen verarbeitet werden müssen
 bei Replikation ganzer Schematas oder der gesamten Datenbank
 wenn DDL-Änderungen verarbeitet werden müssen.
 bei Downstream Capture
 Synchronous Captures
ab: O11gR1
 bei nur wenigen Tabellen
 wenn nur DML-Änderungen verarbeitet werden müssen.
[email protected]
Capture Prozess
read DML + DDL
Capture
Reader Server
Onlinelog/Archivelog
Prefiltering of Changes
Capture
Preparer Server
Capture
Preparer Server
Capture
Preparer Server
Merge Redo Records
Capture
Builder Server
Buffered /
Persistent
Capture Queue
[email protected]
Implizites und explizites Capture
Capture
 Oracle Streams erfaßt Events:
 Implizit: Log-basierende Erfassung der DML und DDL Statements
Replication
 Explizit: direktes Schreiben von Nachrichten in eine Queue
[email protected]
Implizit: Log-basiertes Change Capture
 Niedriger Overhead, geringe Wartezeiten der Änderungserfassung
 Änderungen in der Datenbank werden ins Online Redolog geschrieben
 Oracle Streams verwendet LogMiner zum Auslesen der Änderungen aus
dem aktiven Online Redolog oder aus den archivierten Redologs
 Supplemental Logging beachten
Automatisch für PK, FK und Unique Constraints Spalten bei Prepare ab Version 10.2.
 Einschränkungen
 nicht erfasste Datentypen:
 BFILE, ROWID, UROWID und user-defined types (Object Types, REFs,
Varrays, Nested Tables, Oracle Spatial)
 nicht erfasste DML-Statements:
 CALL, EXPLAIN PLAN, LOCK TABLE
 Veränderungen an index-organized tables und object tables
[email protected]
Downstream Capture
Quell-DB (Source)
Ziel- (Target) oder
Verteiler (Intermediate) DB
P
Queue
----LCRs
Redolog Files
Â
Â
Â
Â
Â
Remote Archiving
C
A
Capture läuft nicht auf der Source Database
Standby Redologs auf Ziel-DB Æ Real-Time-Capture (siehe oben!)
Archivelog Transport zur Ziel-DB Æ Archivelog-Based Capture
Entlastung der Source Database vom Capture Overhead
Abhängigkeiten zwischen Source DB und Capture DB wie bei DataGuard
(Plattform, Version usw.)
[email protected]
Downstream Capture – Archived-Log Capture
Source DB
Target DB
C
Redolog
Archived-Log File
Shipping
A
Queue
----LCRs
Archived
Redolog
Archived-Log Capture
[email protected]
Downstream Capture – Real-Time Capture
Source DB
Target DB
Standby
Redolog
C
Remote
Redolog
A
Archiving
Queue
----LCRs
Archived
Redolog
Archived
Standby
Redolog
Real-Time Capture
Zusätzliche LOG_ARCHIVE_DEST_x notwendig!
[email protected]
Agenda
Oracle Streams - Allgemeines
Replication mit Oracle Streams
Elemente und Prozesse von Streams
Capture (Erfassen)
Staging (Ablegen)
Propagation (Weiterleiten)
Apply (Anwenden)
Rules, Rule-based Transformationen und Konflikte
Einrichten von Oracle Streams Umgebungen
Oracle Streams Konfigurationen
“First SCN” – Problematik
Monitoring und Analyse
Zusammenfassung
<Insert Picture Here>
[email protected]
Staging Area (Queue)
Staging
Â
Staging Area ist als Queue in der DB implementiert
Â
Queue kann gefüllt werden
 vom Capture-Prozeß
 direkt von Anwendungen
Â
Queue hat den Datentyp SYS.AnyData
 Informationen bleiben in der Queue, bis alle Adressaten sie erhalten haben
 Views erlauben das Lesen der Queue mittels SQL
Â
vom Capture-Prozeß erfaßte Änderungen werden als Logical Change Record (LCR)
formatiert und in die Staging Area geschrieben
 Capture-Prozeß ist immer einer und nur einer Staging Area zugeordnet
 LCR hat ein spezifisches Format
 LCR enthält immer nur die Informationen zu 1 Row
[email protected]
Logical Change Record (LCR)
 Database Change = LCR
 DML
 Row change = LCR
 Object name, Owner, Type of DML, SCN
 OLD, NEW values
 Optional attributes: Username, Session, Thread,…
 DDL
 Object name, owner, Type of DDL, SCN
 DDL text
 Optional attributes: username, session, thread,…
 LOB and LONG
 Multiple LCRs per LOB or LONG column
 Piecewise chunks
[email protected]
Agenda
Oracle Streams - Allgemeines
Replication mit Oracle Streams
Elemente und Prozesse von Streams
Capture (Erfassen)
Staging (Ablegen)
Propagation (Weiterleiten)
Apply (Anwenden)
Rules, Rule-based Transformationen und Konflikte
Einrichten von Oracle Streams Umgebungen
Oracle Streams Konfigurationen
“First SCN” – Problematik
Monitoring und Analyse
Zusammenfassung
<Insert Picture Here>
[email protected]
Propagation: Src Queue Æ Dest Queue
Queue
-----LCRs
Staging
Propagation
Queue
----LCRs
Staging
.
.
.
Queue
-----LCRs
 Nutzt Infrastruktur von AQ
 Events können über mehrere Staging Areas “geroutet” werden
 Andere Staging Areas können Events anfordern
Â
Â
aus gleicher DB
aus anderer DB
[email protected]
Queue_to_Queue Propagation
ab Version 10.2.
 Fine-grained control of propagation
 Service based in RAC environments
 CONNECT_DATA Service_name=GLOBAL_NAME
 Connects to specific queue:
 SYS$SCHEMA.QNAME.GLOBAL_NAME
 GV$ACTIVE_SERVICES
 Buffered_queues only
[email protected]
Agenda
Oracle Streams - Allgemeines
Replication mit Oracle Streams
Elemente und Prozesse von Streams
Capture (Erfassen)
Staging (Ablegen)
Propagation (Weiterleiten)
Apply (Anwenden)
Rules, Rule-based Transformationen und Konflikte
Einrichten von Oracle Streams Umgebungen
Oracle Streams Konfigurationen
“First SCN” – Problematik
Monitoring und Analyse
Zusammenfassung
<Insert Picture Here>
[email protected]
Apply Prozess
Dequeue
Apply
Reader Server
computes dependencies
between LCR‘s and
Assembling into transaction
Apply
Preparer Server
Check Rules Apply Handler
Table A
Read
Buffered /
Persistent
Apply Queue
Apply
Reader Server
Apply
Reader Server
Apply
Coordinator
Apply
Preparer Server
Apply Handler
Table B
Apply
Preparer Server
Apply Handler
Table C
Apply Handler
Table D
[email protected]
Apply (Consumption)
Apply
Replication
Â
Implizit:
 Default Apply
 Benutzer-definiertes Apply
Â
Explizit: Aus der Queue lesen und verarbeiten
 JMS, C, C++, PLSQL, SOAP (XML/HTTP), SMTP
Â
Separate Prozesse für implizites und explizites Apply
[email protected]
Implizit: Default Apply
 Apply Prozeß führt das DML- oder DDL- Statement aus dem gelieferten
LCR direkt aus
 Prozeß ist einer Source-Datenbank, einer Queue und einem
Capture-Prozeß dediziert zugeordnet
 Ausführen in/an der lokalen Oracle-Tabelle
 Ausführen via DB-Link in/an einer Nicht-Oracle-Tabelle
 Einschränkungen bei Datentypen (analog Capture)
 Weitergehende Einschränkungen bei DDL
 Starten eines angelegten Apply-Prozesses
 im Alert – File: AP01 started with pid=15
Owner ist derjenige, der den Prozeß startet
 In der Datenbank ist festzulegen, was zu erfassen ist
Â
Beispiel : Apply für Schema HR von DB mas01.world
[email protected]
Implizit: Benutzer-definiertes Apply
 selbst geschriebene Apply-Prozeduren
 In PL/SQL, Java, C, C++
 Anwendungsmöglichkeiten
 Normalisieren oder Denormalisieren von Daten
 zusätzliche Felder oder Tabellen mit Daten füllen
 Transformationen
[email protected]
Apply Handlers für LCRs
 Ein DDL Handler pro Apply Prozeß
 Mehrere DML Handler
Â
Â
pro Tabelle (DELETE, UPDATE, INSERT, LOB_UPDATE)
pro Apply Prozeß
 PreCommit Handler (User-Defined PL/SQL Prozedur)
Â
Â
In Verbindung mit DML Handler
In Verbindung mit Message Handler
DML Handler
Execute LCR
Queue
----LCRs
Apply
LCR
DML Handler
PreCommit H.
Target Table
DDL Handler
...
[email protected]
Agenda
Oracle Streams - Allgemeines
Replication mit Oracle Streams
Elemente und Prozesse von Streams
Capture (Erfassen)
Staging (Ablegen)
Propagation (Weiterleiten)
Apply (Anwenden)
Rules, Rule-based Transformationen und Konflikte
Einrichten von Oracle Streams Umgebungen
Oracle Streams Konfigurationen
“First SCN” – Problematik
Monitoring und Analyse
Zusammenfassung
<Insert Picture Here>
[email protected]
Rule-based Transformations
Capture
Staging
Apply
 Eine regel-basierende Transformation
Â
Â
ist jede Modifikation eines LCRs auf Grundlage einer definierten Regel
wird ausgeführt, wenn die Regel mit TRUE evaluiert wurde
 Es gibt zwei Typen regel-basierender Transformationen
Â
Â
Declarative rule-based (for LCRs)
Custom rule-based: one-to-one, one-to-many (Capture only)
 Beispiele für Regeln:
Â
Â
Aktionen abhängig von Änderungsoperation (z.B. Delete)
Auswahl von Zeilen auf Basis von Spaltenwerten (Subset Rules)
[email protected]
Rule Sets
(inclusion_rule => FALSE)
--
Negative
-
Rule Set
++
Positive
+
Rule Set
Rules werden zuerst geprüft,
Nicht wirksam, wenn eine
wenn vorhanden
Negative Rule TRUE ist
HR.JOB_HISTORY
LCR
(inclusion_rule => TRUE)
-
FALSE
HR Schema (alle HR Tabellen)
LCR
+
Discard
TRUE
Rule Engine
[email protected]
Subset Rules (Column Subsetting)
 Regeln können auf Capture, Propagation und Apply angewendet werden
 Subset Rules sind Prüfbedingungen, bei denen ein bestimmter Inhalt des
LCRs (table columns values) mit einem festen Wert verglichen wird.
Publish
Rules
Engine
UPDATE EMP...
Subscribe WHERE
OBJECT = ‘EMP’
UPDATE EMP...
Staging Area
[email protected]
Declarative LCR Transformations
ab Version 10.2.
Â
Â
Â
Â
Schneller als Custom rule-based, weil intern ausgeführt (kein PL/SQL)
Nur für LCRs möglich
ab Version 11.2.
Keep Columns rule-based Transformationen
Ausführung vor Custom rule-based Transformationen
ADD_COLUMN
DELETE COLUMN
Source LCR
RENAME_COLUMN
RENAME_TABLE
Modified LCR
Target Table
RENAME_SCHEMA
[email protected]
Declarative Transformation - Beispiel
BEGIN
DBMS_STREAMS_ADM.RENAME_SCHEMA(
rule_name => 'CH_SCH_HR_JJ',
from_schema_name => 'HR',
to_schema_name => 'JJ',
step_number => 0);
END;
/
 Schema Wechsel von ‘HR‘ -> ‘JJ‘
 step_number legt Ausführungsreihenfolge fest
 Nur für DML
[email protected]
Konflikte und Konfliktlösung
 Automatische Konflikterkennung beim Update
 Vorgehensweise:
Vergleich des aktuellen Wertes am Bestimmungsort mit dem alten
Wert der ver-änderten Zeile am Quellort (befindet sich im LCR)
1. Identisch Æ Übernahme der „neuen Werte“
2. Nicht identisch Æ Konfliktlösungsroutine
3. Konflikt nicht lösbar Æ Transaktion in Exception Queue stellen
 Konfliktlösung
Routinen zur Konfliktlösung (mitgeliefert):
1. Maximum
2. Minimum
3. Discard
4. Overwrite
Benutzerdefinierte Konfliktlösungsroutinen:
PL/SQL-Routinen (sind selbst zu erstellen)
[email protected]
Default Apply mit Error Handler
Target Table
Queue
----LCRs
LCR
Apply
LCR
Apply Changes
Conflict
Handler
resolved
resolved
LCR
Error Queue
Error
Handler
Unresolved Errors
 Apply Prozess stellt Fehler fest
 Conflict und/oder Error Handlers versuchen den Konflikt zu lösen
 Konflikt gelöst
Æ Apply
 Nichtlösbare Fehler Æ Rollback und Eintrag in die Error Queue
[email protected]
Konfliktlösung – OSC, Heartbeat-Table
DECLARE
cols
DBMS_UTILITY.NAME_ARRAY;
BEGIN
cols(1) := 'TNSALIAS';
cols(2) := 'TIMES';
cols(3) := 'GREENWICH_TIME';
DBMS_APPLY_ADM.SET_UPDATE_CONFLICT_HANDLER(
object_name
=> '&&sample_user..OSC_HEARTBEAT',
method_name
=> 'OVERWRITE',
resolution_column => 'TNSALIAS',
column_list
=> cols);
END;
/
[email protected]
Agenda
Oracle Streams - Allgemeines
Replication mit Oracle Streams
Elemente und Prozesse von Streams
Capture (Erfassen)
Staging (Ablegen)
Propagation (Weiterleiten)
Apply (Anwenden)
Rules, Rule-based Transformationen und Konflikte
Einrichten von Oracle Streams Umgebungen
Oracle Streams Konfigurationen
“First SCN” – Problematik
Monitoring und Analyse
Zusammenfassung
<Insert Picture Here>
[email protected]
Oracle Streams - INITORA Parameter
GLOBAL_NAMES = TRUE
COMPATIBLE = 11.1.0.0
Mandatory!
Sollte so hoch wie möglich sein (Enable Features!)
LOG_ARCHIVE_DEST_n =
Bis zu 10 Archivierungsziele
(Log Transport Service bei Downstream Capture)
LOG_ARCHIVE_DEST_STATE_n = Status des Archivierungszieles (z.B.: ENABLE)
REMOTE_ARCHIVE_ENABLE = Senden von Redologs (Downstream Capture: RECEIVE oder SEND)
OPEN_LINKS =
Maximale Zahl gleichzeit geöffneter Datenbank-Links (>= 4)
JOB_QUEUE_PROCESSES =
Maximale Anzahl gleichzeitig laufender Jobs (>= 2, OSC!))
PARALLEL_MAX_SERVERS = Maximale Anzahl gleichzeitiger Serverprozesse
UNDO_RETENTION = seconds
Zeitraum bis zum Löschen der UNDO Informationen
(Korrelation zur Größe des UNDO Tabelspace beachten!, Default: 900 Sec)
STREAMS_POOL_SIZE = kB|MB|GB
Größe des Streams Pool (>= 200 MB)
(Angabe auch bei SGA_TARGET = ... MB|GB empfohlen!)
(Auch PROCESSES und SESSIONS beachten!)
[email protected]
Konfigurieren von Oracle Streams
1. Benutzung von DBMS-Packages (Oracle Streams API)
DBMS_STREAMS_ADM
DBMS_xxx_ADM
oder
(xxx = Capture, Propagation, Apply, Rule)
2. Benutzung des Oracle Enterprise Managers (Einschränkungen)
Database Control oder Grid Control GUI
Two-sites, One-way
3. Über Oracle Streams Commander (einfach & schnell)
00_define.sql
Æ
00_install.sql
[email protected]
Streams DBMS Packages – High-Level
DBMS_STREAMS_ADM Configuring Oracle Streams replication environment
MAINTAIN_GLOBAL
„Simplified
MAINTAIN_SCHEMAS
MAINTAIN_SIMPLE-TTS
Configuration
MAINTAIN_TABLES
MAINTAIN_CHANGE_TABLE
ab Version 11.2.
Procedures“
MAINTAIN_TTS
ab Version 10.2.
Configuration Parameters:
source_directory_object
destination_directory_object
source_database
destination_database
schema_name
tablespace_name
table_names
source_table_name
tablespace_names
All Procedures
Æ
Æ
Æ
Æ
Æ
MAINTAIN_SCHEMAS
MAINTAIN_SIMPLE_TTS
MAINTAIN_TABLES
MAINTAIN_CHANGE_TABLE
MAINTAIN_TABLESPACES
[email protected]
DBMS Packages für Streams – Low-Level
DBMS_APPLY_ADM
Configure, start or stop Apply processes
DBMS_CAPTURE_ADM
Configure, start or stop Capture processes
DBMS_PROPAGATION_ADM
Configure propagation from source to destination queue
DBMS_RULE_ADM
Creating / Managing rules, rule sets and rule evaluation contents
DBMS_STREAMS_ADVISOR_ADM
Interface to gather information about streams environment
DBMS_STREAMS_TABLESPACE_ADM Interface for copying / moving TS from one DB to another
DBMS_RULE
Enable the evaluation of a rule set for a specified event
DBMS_STREAMS
Interface to the LCR, Convert ANYDATA objects in LCR objects
DBMS_STREAMS_AUTH
Grant and Revoke Privileges to / from Streams Admin
[email protected]
DBMS_STREAMS_ADM - Beispiel
define bidirectional
= TRUE
/* SET TRUE if the replication = bi-directional, otherwise set FALSE */
define perform_act
= TRUE
/* SET TRUE if you want restart after failure occurs
define incl_ddl
= TRUE
/* SET TRUE if you replicate also DDL changes, otherwise set FALSE */
define owner1
= JJAENSC
/* owner1 of table(s)
define tab1
= JJ_CD
/* table_name 1 */
define tab2
= JJ_SO
/* table_name 2 */
define conf_script
= 02_Config_Two-DB-Bidirectional_Tables.sql
define conf_script_dir_object
= ADM_STREAMS /* Local directory object for Oracle Streams */
define src_dir_object
= NULL
define dest_dir_object
= NULL
define srcdb
= ORACLEJ
define capt_name1
= C_CN1_ORAJ
define capt_queue_tab1
= C_QT1_ORAJ
define capt_queue_name1
= C_QN1_ORAJ
define capt_queue_user1
= STREAMS
define prop_name1
= P_PN1_ORAJ
define destdb
= ORACLEK
define appl_name1
= A_AN1_ORAK
define appl_queue_tab1
= A_QT1_ORAK
define appl_queue_name1
= A_QN1_ORAK
define appl_queue_user1
= STREAMS
/* global_name of Source Database */
Parameter
Source DB
/* global_name of Destination Database */
Parameter
Destination DB
[email protected]
DBMS_STREAMS_ADM - Beispiel
DECLARE
tables DBMS_UTILITY.UNCL_ARRAY;
BEGIN
tables(1) := '&&owner1..&&tab1';
tables(2) := '&&owner1..&&tab2';
DBMS_STREAMS_ADM.MAINTAIN_TABLES(
table_names
=>
tables,
script_name
=>
'&&conf_script',
script_directory_object
=>
'&&conf_script_dir_object',
source_directory_object
=>
&&src_dir_object,
destination_directory_object =>
&&dest_dir_object,
perform_actions
=>
&&perform_act,
capture_name
=>
'&&capt_name1',
capture_queue_name
=>
'&&capt_queue_name1',
capture_queue_table
=>
'&&capt_queue_tab1',
capture_queue_user
=>
'&&capt_queue_user1',
propagation_name
=>
'&&prop_name1',
source_database
=>
'&&srcdb',
apply_name
=>
'&&appl_name1',
apply_queue_name
=>
'&&appl_queue_name1',
apply_queue_table
=>
'&&appl_queue_tab1',
apply_queue_user
=>
'&&appl_queue_user1',
destination_database
=>
'&&destdb',
bi_directional
=>
&&bidirectional,
include_ddl
=>
&&incl_ddl,
instantiation
=>
&&instant);
Parameter
Source DB
Parameter
Destination DB
END;
/
[email protected]
Oracle Enterprise Manager (DB-C) – Streams – Setup
ab Version 10.2.
 Setup ist beschränkt auf Replikation von Quell- in Ziel-Datenbank
[email protected]
Oracle Enterprise Manager (Grid-C) – Streams – Setup
Enterprise Manager 10.2.0.5
[email protected]
Oracle Streams Commander
... kommt heute auch noch!
[email protected]
Agenda
Oracle Streams - Allgemeines
Replication mit Oracle Streams
Elemente und Prozesse von Streams
Capture (Erfassen)
Staging (Ablegen)
Propagation (Weiterleiten)
Apply (Anwenden)
Rules, Rule-based Transformationen und Konflikte
Einrichten von Oracle Streams Umgebungen
Oracle Streams Konfigurationen
“First SCN” – Problematik
Monitoring und Analyse
Zusammenfassung
<Insert Picture Here>
[email protected]
Oracle Streams – Quell DB Æ Ziel DB
Update EMP
set Land=‘NL’
where
empid=100;
EMP
Redo Log
empid|Land|..
100 | NL |…
105 | DE | ...
Queue
----LCRs
Propagation
Capture
Quell DB (Source)
Queue
-----LCRs
EMP
Apply
Ziel DB (Target)
Master – Slave Replication, Single-Source Replication
[email protected]
Oracle Streams – Automatic Flow Control
Capture
Process
read DML + DDL
DB-A
HR1
Onlinelog/Archivelog
STRMADMIN
Buffered
Capture Queue
SYS
Propagation
Process
DB-Job
Automatic
Flow Control
ab Oracle 10.1.
APPLY
Process
Buffered
Apply Queue
DB-B
HR2
Onlinelog/Archivelog
STRMADMIN
SYS
[email protected]
Oracle Streams – Quell-DB ÅÆ Ziel-DB
Apply
Queue
----LCRs
Queue
----LCRs
Redolog
Propagation
Queue
-----LCRs
Propagation
Queue
-----LCRs
Capture
Quell- & Ziel-DB
Redolog
Capture
Apply
Ziel- & Quell-DB
Multimaster Replication, Multiple-Source Replication
[email protected]
Oracle Streams – Default Tags
Writes Tag: 00
Apply
Tag: NULL only
Redolog
Capture
Tag: NULL
Queue
----LCRs
Queue
----LCRs
Redolog
Propagation
Queue
-----LCRs
Propagation
Queue
-----LCRs
Capture
Tag: NULL only
Quell- & Ziel-DB
Tag: NULL
Apply
Writes Tag: 00
Ziel- & Quell-DB
Multimaster Replication, Multiple-Source Replication
[email protected]
Oracle Streams Tags
(Default)
Include_tagget_lcr => false
Capture Default Rule Codition(s):
:dml.is_null_tag() = 'Y'
:ddl.is_null_tag() = 'Y'
CAPTURE – schreibt TAG = NULL
Nur lokale Änderungen werden captured.
APPLY
– ändert TAG auf X’00‘
Include_tagged_lcr => true
Keine Default Rule Conditions
CAPTURE – TAG wird gezielt gesetzt
Rule Conditions für TAG
APPLY
selbst definieren
– nur bestimmte TAGs werden applied
 Setzen z.B.: DBMS_STREAMS.SET_TAG
 TAG kann maximal 2000 Bytes lang sein
 TAGs verhindern Change Cycling in N-Way Replikationsumgebungen
[email protected]
Oracle Streams – Hub & Spoke Tags
Writes Tag: 1
A
Tag: 1 only
Hub DB
Queue
----LCRs
C
Tag: 2 only
C
Queue
----LCRs
Queue
----LCRs
Queue
----LCRs
Propagations
A
Writes Tag: 2
Propagations
Redo Log
C
Queue
-----LCRs
Queue
-----LCRs
A
C
Queue
-----LCRs
A
Spoke DB 2
Spoke DB 1
Redo Log
Queue
-----LCRs
Redo Log
[email protected]
Streams Prozesse n-way Replication and RAC
DB-A
Capture
Process
Onlinelog/Archivelog
SYS
ASM
STRMADMIN
Onlinelog/Archivelog
SYS
HR1
STRMADMIN
HR1
DB-B
Onlinelog/Archivelog
SYS
STRMADMIN
HR1
DB-C
Capture
Process
Capture
Process
[email protected]
RAC Specifics
ReStart
Capture
Process
Onlinelog/Archivelog
SYS
STRMADMIN
HR1
ASM
Onlinelog/Archivelog
SYS
STRMADMIN
HR1
Onlinelog/Arcivelog
SYS
STRMADMIN
HR1
Takeover Capture Buffered Queue
[email protected]
Agenda
Oracle Streams - Allgemeines
Replication mit Oracle Streams
Elemente und Prozesse von Streams
Capture (Erfassen)
Staging (Ablegen)
Propagation (Weiterleiten)
Apply (Anwenden)
Rules, Rule-based Transformationen und Konflikte
Einrichten von Oracle Streams Umgebungen
Oracle Streams Konfigurationen
“First SCN” – Problematik
Monitoring und Analyse
Zusammenfassung
<Insert Picture Here>
[email protected]
Capture Process und SCNs
New Capture
scans from
here
720
784
First SCN
815
Capture
enqueued
changes
840
Start SCN
Capture
Capture
Process
Process
was
begins
created
to capture
and a
LogMiner
872
Depends
from
Retention Time
901
937
961
993
Required
Applied SCN
Checkpoint
SCN
Last applied
Lowest SCN
SCN at
which the
Destination
Capture
DB
Process
needs the
RedoLogs
Data
Dictionary
was
built
[email protected]
Aussagen zu den SCNs
 Information über die SCNs
SELECT capture_name, status, first_scn, start_scn,
required_checkpoint_scn, captured_scn
from DBA_CAPTURE;
 First SCN
 Ab dieser SCN kann Capture Prozeß Änderungen erfassen
 Verweist auf ein RedoLog File mit LogMiner Data Dictionary
 Name dieses RedoLog Files in V$ARCHIVED_LOG
 Sollte so aktuell wie möglich sein Æ automatisches Move forward!
 Automatisches Move forward über Checkpoint_Retention_Time (Default: 60 Tage)
 Required Checkpoint SCN
 alle Checkpoints ab dieser SCN realisieren die Checkpoint Retention Time
 Checkpoints vor dieser SCN werden automatisch gelöscht
 Retention Time: DBMS_CAPTURE_ADM.alter_capture ab Version 10.2.
[email protected]
Capture Process und SCNs optimal
New Capture
scans from
here
Für diesen Capture Prozeß werden diese
Capture
enqueued
changes
RedoLog Files nicht mehr benötigt.
Depends
from
Retention Time
720
784
815
840
872
901
937
961
993
Applied SCN
DBMS_CAPTURE_ADM.alter_capture(
capture_name => 'C_CN1_ORAJ',
first_scn => newfscn);
First SCN
=
Start SCN
=
Required
Checkpoint
SCN
Last applied
SCN at
Destination
DB
[email protected]
Agenda
Oracle Streams - Allgemeines
Replication mit Oracle Streams
Elemente und Prozesse von Streams
Capture (Erfassen)
Staging (Ablegen)
Propagation (Weiterleiten)
Apply (Anwenden)
Rules, Rule-based Transformationen und Konflikte
Einrichten von Oracle Streams Umgebungen
Oracle Streams Konfigurationen
“First SCN” – Problematik
Monitoring und Analyse
Zusammenfassung
<Insert Picture Here>
[email protected]
Oracle Streams Monitoring / Analyse
 Healtcheck SQL-Scripts (MetaLink Note: 273674.1)
 STRMMON (MetaLink Note: 290605.1)
 Oracle Streams Commander
GUI
 Oracle Enterprise Mangager (DB-C, Grid_C)
 Streams Performance Advisor (DBMS_STREAMS_ADVISOR_ADM) 11.1.
 Datenbankinhaltsvergleich (DBMS_COMPARISON)
11.1.
 LCR Tracking (DBMS_STREAMS_ADM.SET_MESSAGE_TRACKING)
11.1.
 Monitoring Jobs (UTL_SPADV)
11.2.
[email protected]
Agenda
Oracle Streams - Allgemeines
Replication mit Oracle Streams
Elemente und Prozesse von Streams
Capture (Erfassen)
Staging (Ablegen)
Propagation (Weiterleiten)
Apply (Anwenden)
Rules, Rule-based Transformationen und Konflikte
Einrichten von Oracle Streams Umgebungen
Oracle Streams Konfigurationen
“First SCN” – Problematik
Monitoring und Analyse
Zusammenfassung
<Insert Picture Here>
[email protected]
Zusammenfassung
 Oracle Streams ist Bestandteil der SE1*, SE* und EE
 Oracle Streams verursacht nur geringen System-Overhead
 Der Netzwerk-Overhead kann optimiert werden
 Oracle Streams bietet höchste Verfügbarkeit
 Entlastung einer Produktions DB durch Downstream Capture
 Replizieren zwischen Oracle DBs oder heterogen (mit Fremd DBs)
 Replizierte Objekte müssen auf Source und Destination DB nicht
identisch sein
 Replizieren kann man die gesamte Datenbank, Schemas, Objekte
oder Teile davon (z.B.: Tabellenspalten)
* Synchronous Capture, kein redolog-based Capture
ab Version 11.1.
[email protected]
Questions &
Answers
[email protected]
Replication Oracle Æ Non-Oracle
nur DML
[email protected]
Replication Non-Oracle Æ Oracle
[email protected]
Heterogeneous Replication
Oracle bietet in Richtung Fremddatenbanken zahlreiche Gateways
LCR
(or user message)
Oracle
Gateway
Message
Gateway
WebSphere
MQ
Sybase
DB2
Replizieren aus einer Non-Oracle Datenbankumgebung ist abhängig von
den dort vorhandenen Funktionalitäten. Programmieraufwand gefordert
[email protected]
Replication Oracle Æ DB2 z/OS
Oracle - Unix
tniewel.emp
DB2 z/OS
tniewel.emp3
Redo
Transparent Gateway
for DB2
Capture
Queue
Apply
DBLINK
Oracle Net
[email protected]
IBM Dprop Relational mit Oracle Streams
IBM DB2
Oracle DB
TG4DB2/
TG4DRDA
Streams
Apply
Create/
Enqueue
LCRs
Programmieraufwand
beim Erzeugen der LCRs
[email protected]
Herunterladen