0% found this document useful (0 votes)
67 views

Oracle: Goldengate 12C: Conflict Detection and Resolution

GoldenGate 12c provides conflict detection and resolution capabilities for bi-directional replication environments. It can detect conflicts that occur due to the same data being modified in multiple locations and has parameters to define how conflicts should be resolved, such as using the most recent timestamp. Statistics on conflict types and resolutions can be viewed to analyze replication performance.

Uploaded by

junk email
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
67 views

Oracle: Goldengate 12C: Conflict Detection and Resolution

GoldenGate 12c provides conflict detection and resolution capabilities for bi-directional replication environments. It can detect conflicts that occur due to the same data being modified in multiple locations and has parameters to define how conflicts should be resolved, such as using the most recent timestamp. Statistics on conflict types and resolutions can be viewed to analyze replication performance.

Uploaded by

junk email
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 31

Oracle GoldenGate 12c:

Conflict Detection and Resolution


What is it and how to use it

Bobby Curtis, EMBA


Senior Technical Consultant

Do you Oracle? Live/Work in the Triangle?


Social
Tech
Networking
Practice your
presentation skills
Contact:
Jeff Smith
Sarah Zumbrum

Accenture Enkitec Group


Enkitec joined Accentures 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

Speaker
Douglasville, Georgia
Senior Technical Consultant
IOUG, RMOUG, GAOUG, RACSIG

@dbasolved

http://dbasolved.com

[email protected]
[email protected]

Agenda
Oracle GoldenGate 12c Architecture
Conflict Management
Examples
Statistics
Summary

Oracle GoldenGate 12c


Architecture
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.

Capture

Trail
Files

Pump

Trail
Files

Delivery

Oracle GoldenGate 12c


Architecture
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.

Capture

Delivery

Trail
Files

Trail
Files

Pump

Trail
Files

Pump

bi - directional

Trail
Files

Delivery

Capture

Oracle GoldenGate 12c


Conflict Management
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)
Capture

Delivery

Trail
Files

Trail
Files

Pump

Trail
Files

Pump

bi - directional

Trail
Files

Delivery

Capture

Conflict Management
Example - Financial Institution: Active/Active
ACCTINFO
ID (PK)

ACCTINFO
Capture

NAME
ADDRESS
CITY
BALANCE
CHANGE_TS

Delivery

Trail
Files

Trail
Files

Pump

Trail
Files

Pump

Delivery

Trail
Files

bi - directional

AcctInfo Table: General details related to bank accounts between


San Francisco and Atlanta

Capture

ID (PK)
NAME
ADDRESS
CITY
BALANCE
CHANGE_TS

Conflict Management
Example - Financial Institution: Active/Active
ACCTINFO
ID (PK)

ACCTINFO
Capture

NAME
ADDRESS
CITY
BALANCE

CHANGE_TS
CHANGE_TS

Delivery

Trail
Files

Trail
Files

Pump

Trail
Files

Pump

Trail
Files

bi - directional

Note: Tables should be able to identify when a record has been


changes.

Delivery

Capture

ID (PK)
NAME
ADDRESS
CITY
BALANCE

CHANGE_TS
CHANGE_TS

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

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])

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
2014-10-30
00.00.00.000000 AM 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

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

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

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)

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

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)

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)));

Oracle GoldenGate 12c


Resolve Conflict Parameter

Overwrite

InsertRowExists

Ignore
Discard
Min/Max

Insert

Overwrite

UpdateRowMissing

Ignore
Discard

ResolveConflict

Update
Overwrite
Ignore

UpdateRowExists

Discard
Min/Max
Delta

Delete
DeleteRowMissing

Ignore
Discard

DeleteRowExists

Overwrite
Ignore
Discard

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

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

Conflict Management
Example 1 Insert Row Exists
ACCTINFO

SF

ATL

ID

944

944

NAME

32

32

ADDRESS

55 5th Street

55 5th Street

CITY

Symrna

Symrna

BALANCE

1100

1200

INSERTROWEXISTS
Violates the unique
constraint on the target

31-OCT-14
31-OCT-14
CHANGE_TS 10.40.36.000000000 PM 10.40.40.000000000 PM

MAP SFAA.ACCTINFO, TARGET ATLAA.ACCTINFO,


COMPARECOLS (ON UPDATE ALL, ON DELETE ALL),
RESOLVECONFLICT (INSERTROWEXISTS, (DEFAULT, USEMAX(CHANGE_TS)));

Conflict Management
Example 2 Update Row Exists
ACCTINFO

BEFORE

AFTER

ID

944

944

NAME

32

32

ADDRESS

55 5th Street

55 5th Street

CITY

Symrna

Symrna

BALANCE

1150

1100

31-OCT-14
31-OCT-14
CHANGE_TS 10.40.36.000000000 PM 10.40.40.000000000 PM

UPDATEROWEXISTS
Updated row exists on
target side
One or more columns
have a before image
different from current
value

MAP SFAA.ACCTINFO, TARGET ATLAA.ACCTINFO,


COMPARECOLS (ON UPDATE ALL, ON DELETE ALL),
RESOLVECONFLICT (UPDATEROWEXISTS, (DEFAULT, USEMIN(CHANGE_TS)));

Conflict Management
Example 3 Delete Row
ACCTINFO

SF

ATL

ID

944

null

NAME

32

null

ADDRESS

55 5th Street

null

CITY

Symrna

null

BALANCE

1100

null

DELETEROWMISSING
Deleted row does not exist
on target

31-OCT-14
CHANGE_TS 10.40.36.000000000 PM null

MAP SFAA.ACCTINFO, TARGET ATLAA.ACCTINFO,


COMPARECOLS (ON UPDATE ALL, ON DELETE ALL),
RESOLVECONFLICT (DELETEROWMISSING, (DEFAULT, [ DISCARD | IGNORE ]));

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

719.00
93.00
524.00
0.00
1336.00
377.00
377.00
257.00
93.00
27.00

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);

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);

Conflict Management
Summary

Architecture
Conflict Management
Parameters Required

Examples
INSERTROWEXISTING
UPDATEROWEXISTING
DELETEROWMISSING

Statistics

Contact Info

@dbasolved

http://dbasolved.com

[email protected]
[email protected]

You might also like