Home > Oracle GoldenGate 12c: Conflict Detection and Resolution What is it and how to use it

Oracle GoldenGate 12c: Conflict Detection and Resolution What is it and how to use it

Page 1
Oracle GoldenGate 12c:
Conflict Detection and Resolution
What is it and how to use it Bobby Curtis, EMBA Senior Technical Consultant

Page 2
E4 2015
May 31 – June 2, 2015 Hilton Hotel – Southlake Town Square Dallas, TX
Submit an Abstract: http://www.enkitec.com/e4/submit-an-abstract

Page 3
Accenture Enkitec Group
Enkitec joined Accenture’s Infrastructure Services as Accenture Enkitec Group (May 2014)
➢ 17,000 Infrastructure Services professionals ➢ 52,000 Oracle professionals
Focus on Oracle Engineered Systems Solutions
➢ Database Migrations & Transformations ➢ Database-as-a-Service ➢ Oracle Applications on Engineered Systems ➢ Cloud-based solutions leveraging Engineered Systems

Page 4
Speaker
Douglasville, Georgia Senior Technical Consultant IOUG, RMOUG, GAOUG, RACSIG
@dbasolved http://dbasolved.com
bcurtis@enkitec.com curtisbl@gmail.com

Page 5
Agenda
• Oracle GoldenGate 12c Architecture • Conflict Management • Examples • Statistics • Summary

Page 6
Oracle GoldenGate 12c
Architecture
Capture Trail Files Pump Delivery Trail Files
Capture: committed transactions are captured (and can be filtered) as they occur by reading the transaction logs. As of V.11.2.1, GoldenGate offers two options for capture for Oracle; Classic & Integrated Capture Trail: stages and queues data for routing. Pump: distributes data for routing to target(s). Route: data is compressed, encrypted for routing to target(s). Delivery: applies data with transaction integrity. New with GoldenGate 12c, Integrated Delivery.

Page 7
Oracle GoldenGate 12c
Architecture
Capture Trail Files Pump Delivery Trail Files
Capture: committed transactions are captured (and can be filtered) as they occur by reading the transaction logs. As of V.11.2.1, GoldenGate offers two options for capture for Oracle; Classic & Integrated Capture Trail: stages and queues data for routing. Pump: distributes data for routing to target(s). Route: data is compressed, encrypted for routing to target(s). Delivery: applies data with transaction integrity. New with GoldenGate 12c, Integrated Delivery.
Delivery Trail Files Trail Files
Pump
Capture
bi - directional

Page 8
Oracle GoldenGate 12c
Conflict Management
Capture Trail Files Pump Delivery Trail Files Delivery Trail Files Trail Files
Pump
Capture
bi - directional
• All most all Active/Active systems will have a form of conflict • Conflicts happen due to at least one row is modified on more than one system with difference data • Common Situations:
1. Row already exists (Inserts) 2. Row does not exist (deletes) 3. Values in row already changed (updates)

Page 9
Conflict Management
Example - Financial Institution: Active/Active
Capture Trail Files Pump Delivery Trail Files Delivery Trail Files Trail Files
Pump
Capture
bi - directional
ACCTINFO ID (PK) NAME ADDRESS CITY BALANCE CHANGE_TS ACCTINFO ID (PK) NAME ADDRESS CITY BALANCE CHANGE_TS
AcctInfo Table: General details related to bank accounts between San Francisco and Atlanta

Page 10
Capture Trail Files Pump Delivery Trail Files Delivery Trail Files Trail Files
Pump
Capture
bi - directional
Conflict Management
Example - Financial Institution: Active/Active
ACCTINFO ID (PK) NAME ADDRESS CITY BALANCE CHANGE_TS ACCTINFO ID (PK) NAME ADDRESS CITY BALANCE CHANGE_TS
Note: Tables should be able to identify when a record has been
changes.
CHANGE_TS CHANGE_TS

Page 11
Conflict Management
Conflicts Supported
Basic Resolution for conflicts within GoldenGate environment: • INSERT Uniqueness conflict for INSERT • UPDATE conflict for “No Data Found” when row exists (before image diffs) conflict for “No Data Found” when row does not exists • DELETE conflict for “No Data Found” when row exists (before image diffs) conflict for “No Data Found” when row does not exists

Page 12
Conflict Management
Supported Data Types
Data Types that can be compared are supported: • NUMERIC • DATE • TIMESTAMP • CHAR/NCHAR • VARCHAR/NVARCHAR Typically these data types are used with parameters like COMPARECOLS,
GETBEFORECOLS, and in resolution parameters using RESOLVECONFLICT ([USEMIN] | [USEMAX])

Page 13
Conflict Management
Before and After Images
ACCTINFO BEFORE AFTER ID (PK) 10 10 NAME 32 32 ADDRESS 96 Smith Rd 96 Smith Rd CITY Atlanta Atlanta BALANCE 1500 1550 CHANGE_TS 2014-10-29 00.00.00.000000 AM 2014-10-30
01.32.05.000000 PM
• Transaction logs are needed for recovery • Before Images • Deletes and Updates • After Images • Inserts and Updates
Note: LogDump utility is useful for
reading trail files to identify before/after images

Page 14
Conflict Management
Requirements - Environment
Full before image of each record Transactional Data
GGSCI> dblogin user <gg user> password <password> GGSCI> add trandata SFAA.ACCTINFO, allcols
Behind the scene:
SQL> ALTER TABLE SFAA.ACCTINFO ADD SUPPLEMENTAL LOG GROUP GGS_94879(id, name, address, city, balance, change_ts) ALWAYS;
Note: System generated log group names can be located in DBA_LOG_GROUPS

Page 15
Conflict Management
Requirements - Environment
• Sequences need to be unique on each system • Use starting value and increment by number of systems • Applies to existing sequences and identity columns
1+3 3+3 2+3

Page 16
Conflict Management
Requirements - Extract
• LOGALLSUPCOLS Extract captures before images for UPDATE operations Extract captures before images of supplemental logged columns for both UPDATE and DELETE operations • GETBEFORECOLS Ensures certain columns are logged
GETBEFOREUPDATES (DB2 only) TABLE option in extract GETBEFORECOLS (ON UPDATE ALL, ON DELETE ALL)

Page 17
Conflict Management
Requirements - Extract
• TRANSLOGOPTION EXCLUDETAG • Tag supplied to transaction as it is extracted to prevent receiving replicat from trying to send it back to source • Classic/Integrated Extract (primary or pump) • Tag can be any number/letter [0-9 A-Z] Example:
TRANSLOGOPTION EXCLUDETAG 0294

Page 18
Conflict Management
Requirements - Replicat
• REPERROR Used to control how Replicat responds to errors Default:
REPERROR(default, abend)
For CDR:
REPERROR(default, exception) REPERROR(default2, [ abend | discard ]) REPERROR(-1, exception)

Page 19
Conflict Management
Requirements - Replicat
• COMPARECOLS Used by Replicat to detect and resolve update/delete conflicts • RESOLVECONFLICT Used by Replicat in bi-directional/multi-master to handle conflicts for DML operations Example:
MAP SFAA.ACCTINFO, TARGET ATLAA.ACCTINFO, COMPARECOLS (ON UPDATE ALL, ON DELETE ALL), RESOLVECONFLICT (INSERTROWEXISTS, (DEFAULT,USEMAX(CHANGE_TS)));

Page 20
ResolveConflict Insert Delete Update InsertRowExists UpdateRowMissing UpdateRowExists DeleteRowMissing DeleteRowExists
Overwrite Ignore Discard Min/Max Overwrite Ignore Discard Overwrite Ignore Discard Ignore Discard Ignore Discard Min/Max Delta Overwrite
Oracle GoldenGate 12c
Resolve Conflict Parameter

Page 21
Conflict Management
Requirements - Exceptions
• Exception Table[s] • User defined • Used for troubleshooting or handling errors • Referenced in REPERROR and
MAP parameters
• Best if defined through macros

Page 22
Conflict Management
Beware
BATCHSQL
• Increases apply performance of Replicat by organizing similar SQL statements and apply them at an accelerated rate. • CDR is not performed in this mode • Replicat reverts, as needed, to help resolve conflict 1. GROUPTRANSOPS 2. Single-transaction mode

Page 23
Conflict Management
Example 1 – Insert Row Exists
MAP SFAA.ACCTINFO, TARGET ATLAA.ACCTINFO, COMPARECOLS (ON UPDATE ALL, ON DELETE ALL), RESOLVECONFLICT (INSERTROWEXISTS, (DEFAULT, USEMAX(CHANGE_TS)));
ACCTINFO SF ATL ID 944
944
NAME 32 32 ADDRESS 55 5th Street 55 5th Street CITY Symrna Symrna BALANCE 1100
1200
CHANGE_TS 31-OCT-14 10.40.36.000000000 PM 31-OCT-14 10.40.40.000000000 PM
INSERTROWEXISTS
• Violates the unique constraint on the target

Page 24
Conflict Management
Example 2 – Update Row Exists
MAP SFAA.ACCTINFO, TARGET ATLAA.ACCTINFO, COMPARECOLS (ON UPDATE ALL, ON DELETE ALL), RESOLVECONFLICT (UPDATEROWEXISTS, (DEFAULT, USEMIN(CHANGE_TS)));
ACCTINFO BEFORE AFTER ID
944
944 NAME 32 32 ADDRESS 55 5th Street 55 5th Street CITY Symrna Symrna BALANCE
1150
1100 CHANGE_TS 31-OCT-14 10.40.36.000000000 PM 31-OCT-14 10.40.40.000000000 PM
UPDATEROWEXISTS
• Updated row exists on target side • One or more columns have a before image different from current value

Page 25
Conflict Management
Example 3 – Delete Row
MAP SFAA.ACCTINFO, TARGET ATLAA.ACCTINFO, COMPARECOLS (ON UPDATE ALL, ON DELETE ALL), RESOLVECONFLICT (DELETEROWMISSING, (DEFAULT, [ DISCARD | IGNORE ]));
DELETEROWMISSING
• Deleted row does not exist on target
ACCTINFO SF ATL ID
944
null NAME 32 null ADDRESS 55 5th Street null CITY Symrna null BALANCE 1100 null CHANGE_TS 31-OCT-14 10.40.36.000000000 PM null

Page 26
Conflict Management
Statistics
Replicating from ATLAA.ACCTINFO to SFAA.ACCTINFO: *** Total statistics since 2014-11-02 00:30:43 *** Total inserts 719.00 Total updates 93.00 Total deletes 524.00 Total discards 0.00 Total operations 1336.00 Total CDR conflicts 377.00 CDR resolutions succeeded 377.00 CDR INSERTROWEXISTS conflicts 257.00 CDR UPDATEROWEXISTS conflicts 93.00 CDR DELETEROWMISSING conflicts 27.00
GGSCI> stats replicat <group name>, reportcdr

Page 27
Example Extract Parameter File
-- CHECKPARAMS EXTRACT EXTAA USERID <gg user>, PASSWORD <pwd> TRANLOGOPTIONS DBLOGREADER
TRANLOGOPTIONS EXCLUDETAG 0294
SETENV (ORACLE_HOME="/u01/app/oracle/product/12.1.0/db12cr1") SETENV (ORACLE_SID="oragg") WARNLONGTRANS 10m, CHECKINTERVAL 5m
LOGALLSUPCOLS
EXTTRAIL ./dirdat/la WILDCARDRESOLVE IMMEDIATE TABLE SFAA.ACCTINFO, GETBEFORECOLS(ON UPDATE ALL, ON DELETE ALL);

Page 28
Example Replicat Parameter File
-- CHECKPARAMS REPLICAT REPAB SETENV (ORACLE_HOME="/u01/app/oracle/product/12.1.0/db12cr1") SETENV (ORACLE_SID="oragg") USERID ggate, PASSWORD <pwd> DISCARDFILE ./dirrpt/REPAB.discard APPEND MEGABYTES 100
REPERROR (default, exception) REPERROR (default2, abend)
ASSUMETARGETDEFS WILDCARDRESOLVE IMMEDIATE
INCLUDE ./dirmac/exceptions.mac
MAP ATLAA.ACCTINFO, target SFAA.ACCTINFO,
COMPARECOLS (ON UPDATE ALL, ON DELETE ALL), RESOLVECONFLICT (insertrowexists, (default, usemax(change_ts))), RESOLVECONFLICT (updaterowexists, (default, usemin(change_ts))), RESOLVECONFLICT (deleterowmissing, (default, discard));
map ATLAA.ACCTINFO, #exception_handler(ggate);

Page 29
• Architecture • Conflict Management
• Parameters Required
• Examples
• INSERTROWEXISTING • UPDATEROWEXISTING • DELETEROWMISSING
• Statistics
Conflict Management
Summary

Page 30

Page 31
Contact Info
@dbasolved http://dbasolved.com
bcurtis@enkitec.com curtisbl@gmail.com

Set Home | Add to Favorites

All Rights Reserved Powered by Free Document Search and Download

Copyright © 2011
This site does not host pdf,doc,ppt,xls,rtf,txt files all document are the property of their respective owners. complaint#nuokui.com
TOP