You are on page 1of 69

Understanding

GoldenGate

Julian Dyke
Independent Consultant

Web Version
1 2013 Julian Dyke juliandyke.com
Agenda

Introduction
Configuration
Redo versus Trail

2 2013 Julian Dyke juliandyke.com


Introduction

3 2013 Julian Dyke juliandyke.com


GoldenGate
Introduction
Oracle GoldenGate is a heterogeneous replication solution

GoldenGate (the company and the product) was acquired by Oracle


Corporation in 2009.

GoldenGate supports:

Zero Downtime Upgrade and Migration


System Integration / Data Synchronization
Query and Report offloading
Real-time Data distribution
Real-time Data Warehousing
Live standby database
Active-active high availability

Controversial replacement for Oracle Streams

4 2013 Julian Dyke juliandyke.com


GoldenGate
Supported Topologies
Unidirectional Bi-directional Peer-to-Peer

Reporting Instance Instant Failover, Active-Active Load Balancing, High Availability

Broadcast Consolidation Cascading

Data Distribution Data Warehouse Scalability, Database Tiering

5 2013 Julian Dyke juliandyke.com


GoldenGate
Supported Databases
Oracle GoldenGate for Non Oracle Databases

Supported non-oracle databases include:

IBM DB2 on Windows, UNIX and Linux


Microsoft SQL Server 2000, 2005, 2008
Sybase on Windows, UNIX and Linux
Teradata on Windows, UNIX and Linux
MySQL on Windows, UNIX and Linux
TimesTen on Windows and Linux (delivery only)

6 2013 Julian Dyke juliandyke.com


GoldenGate
Licensing
Both capture and apply databases must be fully licensed

Product Processor License


Enterprise Edition 47,500
Real Application Clusters 23,000
Active Data Guard 10,000
GoldenGate 17,500
Management Pack for GoldenGate 3,500

Source Oracle Technology Global Price List 15 March 2013

GoldenGate licenses (Oracle to Oracle) include:


XStream
Active Data Guard

Source Oracle Fusion Middleware Licensing Information 11gR1

7 2013 Julian Dyke juliandyke.com


GoldenGate
Conventions
This presentation was developed in Oracle GoldenGate 11.2.1.0.1
Virtual Box 4.2.0
Oracle Enterprise Linux 5 Update 6
Oracle Database 11.2.0.3.0

Environment:
Name Abbreviation Value
Home Directory $GG_HOME /home/oracle/goldengate
GoldenGate Schema GGSCHEMA GG01

Databases:

Source Target
Hostname vm4 vm5
Database Name NORTH SOUTH

8 2013 Julian Dyke juliandyke.com


GoldenGate
Streams versus GoldenGate
Oracle Streams

Capture Propagate Apply

Source Server Target Server

Oracle GoldenGate

Extract Data Pump Replicat

Source Server Target Server

9 2013 Julian Dyke juliandyke.com


GoldenGate
Basic Architecture

Manager Manager

Extract Data Pump Replicat

Source Local Remote Target


Database Trail Trail Database

Source Server Target Server

10 2013 Julian Dyke juliandyke.com


GoldenGate
Configuration Options

Classic Integrated
Capture Capture

Redo Logs + Archive


Upstream Downstream
Archive Logs
Capture Capture
Logs Only

11 2013 Julian Dyke juliandyke.com


GoldenGate
Classic Capture

Extract Data Pump

Source Online Local


Database Redo/Archive Trail
Logs

12 2013 Julian Dyke juliandyke.com


GoldenGate
Integrated Capture

LCR LCR LCR


Log Miner Extract Data Pump

Source Online Local


Database Redo/Archive Trail
Logs

13 2013 Julian Dyke juliandyke.com


GoldenGate
Downstream Capture
Real Time Downstream Mode

LCR LCR Capture

Logical
Online Standby Change Integrated Trail
Redo Logs Redo Logs Records Extract File

Primary Database Standby Database

Source Server Downstream Server

14 2013 Julian Dyke juliandyke.com


GoldenGate
Downstream Capture
Downstream Archive Log Mode

LCR LCR Capture

Logical
Online Archive Change Integrated Trail
Redo Logs Redo Logs Records Extract File

Primary Database Standby Database

Source Server Downstream Server

15 2013 Julian Dyke juliandyke.com


GoldenGate
Bi-Directional Replication
Also known as Active-Active Replication

Online Local Remote


Redo Logs Trail Trail

Data
Capture Replicat
Pump

Data
Replicat Capture
Pump

Remote Local Online


Trail Trail Redo Logs

Server A Server B

16 2013 Julian Dyke juliandyke.com


GoldenGate
Supported Data Types
The following data types are supported for both classic and integrated
capture
NUMBER
BINARY FLOAT
BINARY DOUBLE
CHAR
VARCHAR2
LONG
NCHAR
NVARCHAR2
RAW
LONG RAW
DATE
TIMESTAMP

17 2013 Julian Dyke juliandyke.com


GoldenGate
Supported Data Types
There is limited support in classic capture for the following data types:
INTERVAL DAY
INTERVAL YEAR
TIMESTAMP WITH TIME ZONE
TIMESTAMP WITH LOCAL TIME ZONE

The following data types are not supported


Abstract data types with scalar, LOBs, VARRAYs, nested tables , REFS
ANYDATA
ANYDATASET
ANYTYPE
BFILE
MLSLABEL
ORDDICOM
TIMEZONE_ABBR
URITYPE
UROWID

18 2013 Julian Dyke juliandyke.com


GoldenGate
Supported Data Types
The following data types are supported for both classic and integrated
capture
NUMBER
BINARY FLOAT
BINARY DOUBLE
CHAR
VARCHAR2
LONG
NCHAR
NVARCHAR2
RAW
LONG RAW
DATE
TIMESTAMP

19 2013 Julian Dyke juliandyke.com


GoldenGate
Restrictions
Neither capture method supports
Database replay
EXTERNAL tables
Materialized views with ROWID

Classic capture does not support


IOT mapping tables
Key compressed IOTs
XMLType tables stored as XML Object Relational
Distributed Transactions
XA and PDML distributed transactions
Capture from OLTP table compressed tables
Capture from compressed tablespaces
Exadata Hybrid Columnar Compression (EHCC)

20 2013 Julian Dyke juliandyke.com


GoldenGate
Oracle-Reserved Schemas
The following schema names are reserved by Oracle and should not be
configured for GoldenGate replication:

$AURORA EXFSYS REPADMIN


$JIS MDSYS SYS
$ORB ODM SYSMAN
$UNAUTHENTICATED ODM_MTR SYSTEM
$UTILITY OLAPSYS TRACESVR
ANONYMOUS ORDPLUGINS WKPROXY
AURORA ORDSYS WKSYS
CTXSYS OSE$HTTP$ADMIN WMSYS
DBSNMP OUTLN XDB
DMSYS PERFSTAT
DSSYS PUBLIC

21 2013 Julian Dyke juliandyke.com


GoldenGate
RAC Support
RAC support has some limitations in classic capture mode
Extract can only run against one instance
If instance fails,
Manager must be stopped on failed node:
Manager and extract must be started on a surviving node
Failover can be configured in Oracle Grid Infrastructure
Additional archive log switching may be required in archive log mode
Before shutting down extract process
Insert dummy record into a source table
Switch log files on all nodes
Additional configuration required to access ASM instance

Shared storage for trails can be:


OCFS
ACFS
DBFS
No mention of NFS in the documentation

22 2013 Julian Dyke juliandyke.com


Configuration

23 2013 Julian Dyke juliandyke.com


GoldenGate
Installation
Download the following from www.oracle.com

ogg112101_fbo_ggs_Linux_x64_ora11g_64bit.zip

Zip file is approximately 90MB

On each server create GG_HOME

mkdir /home/oracle/goldengate

Copy zip file to GG_HOME

$ cd /home/oracle/goldengate
$ unzip ogg112101_fbo_ggs_Linux_x64_ora11g_64bit.zip

Add GG_HOME to profile

export PATH=/home/oracle/goldengate:$PATH
export LD_LIBRARY_PATH=/home/oracle/goldengate:$LD_LIBRARY_PATH

Install bundle patch in Oracle 11.2.0.3 home for integrated capture


24 2013 Julian Dyke juliandyke.com
GoldenGate
GGSCI
Most GoldenGate configuration can be performed within GGSCI
Command-line utility

For a list of available commands:

$ ggsci
GGSCI 1> HELP

For help on with an individual command:

GGSCI 2> HELP <command> <object>

For example:

GGSCI 1> INFO ALL

The best source of information is:


Oracle GoldenGate Windows and UNIX Reference Guide

25 2013 Julian Dyke juliandyke.com


GoldenGate
Parameter Files
Each process has a text-based parameter file

Parameter files can be edited using GGSCI or with a text editor

[oracle@vm5]$ ggsci
GGSCI (vm5) 1> EDIT PARAMS rep1

Stored in $GG_HOME/dirprm directory e.g.

$GG_HOME/dirprm/rep1.prm

Comments are prefixed by -- and terminated by end of line

-- This is a comment

Continuation character is ampersand


MAP US03.T54 TARGET US01.T55, &
COLMAP (col1=c1, col3=c2, col4=c3, col2=c4);

26 2013 Julian Dyke juliandyke.com


GoldenGate
Subdirectories
By convention, configuration and trail files are stored in subdirectories within
$GG_HOME

Subdirectories are created within GGSCI:

[oracle@vm4]$ ggsci
GGSCI (vm4) 1> CREATE SUBDIRS
Creating subdirectories under current directory /home/oracle/goldengate
Parameter files /home/oracle/goldengate/dirprm: created
Report files /home/oracle/goldengate/dirrpt: created
Checkpoint files /home/oracle/goldengate/dirchk: created
Process status files /home/oracle/goldengate/dirpcs: created
SQL script files /home/oracle/goldengate/dirsql: created
Database definitions files /home/oracle/goldengate/dirdef: created
Extract data files /home/oracle/goldengate/dirdat: created
Temporary files /home/oracle/goldengate/dirtmp: created
Stdout files /home/oracle/goldengate/dirout: created

27 2013 Julian Dyke juliandyke.com


GoldenGate
Schema Owner
A schema owner is required to own GoldenGate objects
Can grant specific privileges to owner or just use DBA

For example GG01

[oracle@vm4]$ sqlplus / as sysdba


SQL> CREATE USER gg01 IDENTIFIED BY gg01;
SQL> GRANT CONNECT, RESOURCE, DBA TO gg01;

Schema owner must be specified in GoldenGate parameters file:

[oracle@vm4]$ ggsci
GGSCI 1> EDIT PARAMS ./GLOBALS

GGSCHEMA gg01

In this example parameter file is /home/oracle/goldengate/GLOBALS

28 2013 Julian Dyke juliandyke.com


GoldenGate
Tablespace
Recommended for both source and target servers

[oracle@vm4]$ sqlplus / as sysdba


SQL> CREATE TABLESPACE goldengate
DATAFILE '/u01/app/oradata/NORTH/goldengate01.dbf
SIZE 100M
AUTOEXTEND ON;
Tablespace created.
SQL> ALTER USER gg01 DEFAULT TABLESPACE goldengate;
User altered.

Ensure AUTOEXTEND is enabled

29 2013 Julian Dyke juliandyke.com


GoldenGate
Role
On source server create GGS_GGSUSER_ROLE

[oracle@vm4]$ cd /home/oracle/goldengate
[oracle@vm4]$ sqlplus / as sysdba
SQL> @role_setup
GGS Role setup script
This script will drop and recreate the role GGS_GGSUSER_ROLE
Enter GoldenGate schema name:GG01

Grant role to GGSCHEMA user:

[oracle@vm4]$ cd /home/oracle/goldengate
[oracle@vm4]$ sqlplus / as sysdba
SQL> GRANT GGS_GGSUSER_ROLE TO gg01;

30 2013 Julian Dyke juliandyke.com


GoldenGate
Manager Process
Manager process controls all GoldenGate processes on a server
Including extract and replicat processes

Configured in parameter file

[oracle@vm4]$ ggsci
GGSCI 1> EDIT PARAMS MGR

PORT 7809
DYNAMICPORTLIST 7810-7820

Manager process is started from GGSCI

oracle@vm4]$ ggsci
GGSCI 2> START MANAGER

Executable is $GG_HOME/mgr

31 2013 Julian Dyke juliandyke.com


GoldenGate
Extract Process
Captures and stores changes in local trail file

Classic capture
Captures changes from online redo log or archived redo log
Fetches additional data from database

Integrated capture
Captures changes from log miner

Uses extract executable

Sample parameter file:

EXTRACT ex1
USERID gg01, PASSWORD gg01
EXTTRAIL /home/oracle/goldengate/dirdat/ex
TABLE US03.*;

32 2013 Julian Dyke juliandyke.com


GoldenGate
Data Pump Process
Propagates contents of local trail file to remote trail file

Uses extract executable


In basic configurations same functionality can be achieved using extract
process

Sample parameter file:

EXTRACT dp1
USERID gg01, PASSWORD gg01
RMTHOST vm5, MGRPORT 7809
RMTTRAIL /home/oracle/goldengate/dirdat/rt
TABLE US03.*;

33 2013 Julian Dyke juliandyke.com


GoldenGate
Replicat Process
Reads changes from remote trail and applies them to database

Uses replicat executable

Sample parameter file:

REPLICAT rep1
USERID gg01, PASSWORD gg01
ASSUMETARGETDEFS
DISCARDFILE /home/oracle/goldengate/discards, PURGE
MAP US03.* TARGET US03.*;

34 2013 Julian Dyke juliandyke.com


GoldenGate
Processes and Trails
New processes and trails must be added using GGSCI.

For example on the source server:

[oracle@vm4]$ ggsci
GGSCI> ADD EXTRACT ex1, TRANLOG, BEGIN NOW
GGSCI> ADD EXTTRAIL /home/oracle/goldengate/dirdat/ex, EXTRACT ex1
GGSCI> ADD EXTRACT dp1 EXTTRAILSOURCE /home/oracle/goldengate/dirdat/ex
GGSCI> ADD RMTTRAIL /home/oracle/goldengate/dirdat/rt, EXTRACT dp1

On the target server:

[oracle@vm5]$ ggsci
GGSCI> ADD REPLICAT rep1, EXTTRAIL /home/oracle/goldengate/dirdat/rt

35 2013 Julian Dyke juliandyke.com


GoldenGate
Checkpoint Table
Must exist in target database
Records location in trail of last change applied to database

Added using GGSCI

[oracle@vm4]$ ggsci
GGSCI> DBLOGIN USERID gg01, PASSWORD gg01
GGSCI> ADD CHECKPOINTTABLE gg01.checkpointtable

Location must be added to GLOBALS parameters on target server

[oracle@vm4]$ ggsci
GGSCI> EDIT PARAMS ./GLOBALS

GGSCHEMA gg01
CHECKPOINTTABLE gg01.checkpointtable

36 2013 Julian Dyke juliandyke.com


GoldenGate
Starting Processes
Processes are started from GGSCI

On the source server

[oracle@vm4]$ ggsci
GGSCI> START EXTRACT ex1
GGSCI> START EXTRACT dp1

On the target server


[oracle@vm4]$ ggsci
GGSCI> START REPLICAT rep1

The EXTRACT and REPLICAT keywords can be omitted

Use equivalent STOP command to stop processes

37 2013 Julian Dyke juliandyke.com


GoldenGate
Checking Process Status
Check process status using GGSCI INFO ALL:

[oracle@vm4]$ ggsci
GGSCI (vm4.juliandyke.com) 1> INFO ALL
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
EXTRACT RUNNING DP1 00:00:00 00:00:04
EXTRACT ABENDED DP2 00:00:00 24:23:14
EXTRACT RUNNING EX1 00:00:00 00:00:05
EXTRACT STOPPED EX2 00:00:00 02:34:41

[oracle@vm5]$ ggsci
GGSCI (vm5.juliandyke.com) 1> INFO ALL
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
REPLICAT RUNNING REP1 00:00:00 00:00:05
REPLICAT RUNNING REP2 00:00:00 00:00:04

38 2013 Julian Dyke juliandyke.com


GoldenGate
Viewing Log Files
Processes are logged in report files stored in $GG_HOME/dirrpt
e.g. ex1 process will be logged in $GG_HOME/dirrpt/EX1.rpt

Up to 10 copies are retained


EX1.rpt (latest), EX11.rpt, EX12.rpt, EX19.rpt (oldest)

If a process abends then check the report file for details

Report files can also be viewed using GGSCI

[oracle@vm4]$ ggsci
GGSCI> VIEW REPORT ex1

Output is filtered through more utility

39 2013 Julian Dyke juliandyke.com


GoldenGate
Trail Files
Stored in $GG_HOME/dirdat directory by convention

User must specify a two-character prefix e.g. ex

File names are generated automatically by extract process e.g.


ex000000
ex000001
ex000002
etc

Naming conventions require some thought

40 2013 Julian Dyke juliandyke.com


GoldenGate
Trail Files
Changes are only stored in trail file when a transaction commits
If a transaction rolls back then no changes are stored
Archive logs must be available for long running transactions

Index changes are generally not stored


IOT changes are stored

Undo changes are not stored


Only redo

Changes to data dictionary are not stored including


Objects, tables, columns, statistics
Segments / extents

41 2013 Julian Dyke juliandyke.com


GoldenGate
Trail Files Data Representation
NUMBER
4-byte length followed by ASCII characters e.g. 2013

00 00 00 04 32 30 31 33

NULL values are stored as

FF FF 00 00

DATE
2-bytes followed by 19 ASCII characters in the format:

YYYY-MM-DD:HH24:MI:SS

For example 2013-03-14:22:39:56 is

00 00 32 30 31 33 2D 30 33 2D 31 34 3A 32 32 3A 33 39 3A 35 36

NULL values are stored as

FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

42 2013 Julian Dyke juliandyke.com


GoldenGate
Trail Files Data Representation
VARCHAR2
4-byte length followed by ASCII characters
e.g. GoldenGate in VARCHAR2(20)

00 00 00 0A 47 6F 6C 64 65 6E 47 61 74 65

NULL values stored as:


FF FF 00 00

CHAR
2-byte length followed by ASCII characters space-padded
e.g. GoldenGate in CHAR(20)

00 00 47 6F 6C 64 65 6E 47 61 74 65 20 20 20 20 20 20 20 20 20 20
NULL values stored as:

FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

43 2013 Julian Dyke juliandyke.com


GoldenGate
Logdump Utility
Dumps contents of GoldenGate trails from
Local trail
Remote trail

To view data set the following parameters:


[oracle@vm4]$ logdump
Logdump> GHDR ON
Logdump> FILEHEADER DETAIL
Logdump> DETAIL DATA
Logdump> USERTOKEN DETAIL
Logdump> RECLEN 128
Logdump> OPEN <trailFileName>
To show next record use NEXT or N

Logdump> NEXT # or N

To return to start of file


Logdump> POS 0
44 2013 Julian Dyke juliandyke.com
GoldenGate
Logdump
Sample output

Hdr-Ind : E (x45) Partition : . (x04)


UndoFlag : . (x00) BeforeAfter: A (x41)
RecLength : 51 (x0033) IO Time : 2013/04/05 06:24:00.000.000
IOType : 5 (x05) OrigNode : 255 (xff)
TransInd : . (x01) FormatType : R (x52)
SyskeyLen : 0 (x00) Incomplete : . (x00)
AuditRBA : 80 AuditPos : 32769040
Continued : N (x00) RecCount : 1 (x01)
2013/04/05 06:24:00.000.000 Insert Len 51 RBA 9060
Name: US03.T1
After Image: Partition 4 G m
0000 0006 0000 0002 3630 0001 0007 0000 0003 5359 | ........60........SY
5300 0200 0d00 0000 094f 424a 4552 524f 5224 0003 | S........OBJERROR$..
0009 0000 0005 5441 424c 45 | ......TABLE
Column 0 (x0000), Len 6 (x0006)
0000 0002 3630 | ....60
Column 1 (x0001), Len 7 (x0007)
0000 0003 5359 53 | ....SYS
Column 2 (x0002), Len 13 (x000d) 0000 0009 4f42 4a45 5252 4f52 24
| ....OBJERROR$
Column 3 (x0003), Len 9 (x0009)
0000 0005 5441 424c 45 | ....TABLE

45 2013 Julian Dyke juliandyke.com


GoldenGate
Minimal Supplemental Logging
Extract processes will not start unless minimal supplemental logging has
been configured in database

Minimal supplemental logging is used for:


chained blocks
blocks in index clusters

Minimal supplemental logging is enabled using:

SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;

46 2013 Julian Dyke juliandyke.com


GoldenGate
Supplemental Logging
Supplemental logging should be configured for all tables being replicated

Enabled using GGSCI. For example:

[oracle@vm4]$ ggsci
GGSCI 1> DBLOGIN USERID us01 PASSWORD us01
GGSCI 2> ADD TRANDATA t1
Logging of supplemental redo data enabled for table US01.T1.

Internally this executes the following DDL:

ALTER TABLE "US01"."T1"


ADD SUPPLEMENTAL LOG GROUP "GGS_76111" ("C1") ALWAYS
/* GOLDENGATE_DDL_REPLICATION */
where 76111 is the OBJ# of the table

47 2013 Julian Dyke juliandyke.com


GoldenGate
Sequences
Sequences are not supported by default. Additional configuration is required:

Sequences will not be identical across the databases


Sequence in target database will never be lower than the same sequence
on the source database

To install sequence support on each server run:

[oracle@vm4]$ cd /home/oracle/goldengate
[oracle@vm4]$ sqlplus / as sysdba
SQL> @sequence.sql

The sequence.sql script creates the following procedures in the GGSCHEMA :


SEQTRACE
GETSEQFLUSH
REPLICATESEQUENCE
UPDATESEQUENCE

48 2013 Julian Dyke juliandyke.com


GoldenGate
Sequences
Extract Process
EXTRACT ex1
USERID gg01, PASSWORD gg01
EXTTRAIL /home/oracle/goldengate/dirdat/ex
SEQUENCE us03.*;
TABLE us03.*;

Data Pump process:


EXTRACT dp1
USERID gg01, PASSWORD gg01
RMTHOST vm5, MGRPORT 7809
RMTTRAIL /home/oracle/goldengate/dirdat/rt
SEQUENCE us03.*;
TABLE us03.*;

Replicat process:
REPLICAT rep1
USERID gg01, PASSWORD gg01
ASSUMETARGETDEFS
DISCARDFILE /home/oracle/goldengate/discards, PURGE
MAP US03.SEQ1, TARGET US03.SEQ1;
MAP US03.T*, TARGET US03.*;
49 2013 Julian Dyke juliandyke.com
GoldenGate
TRUNCATE Statements
TRUNCATE statements are not supported by default

TRUNCATE support can be configured


Standalone
As part of full DDL support
These options are mutually exclusive

Standalone TRUNCATE support


Does not support partitioned tables
Configure full DDL support for partitions/subpartitions
Enabled using GETTRUNCATES parameter
Must be specified BEFORE tables/mappings in parameter file

50 2013 Julian Dyke juliandyke.com


GoldenGate
TRUNCATE Statements
Extract process
EXTRACT ex1
USERID gg01, PASSWORD gg01
EXTTRAIL /home/oracle/goldengate/dirdat/ex
GETTRUNCATES
TABLE us03.t*;
Data pump process
EXTRACT dp1
USERID gg01, PASSWORD gg01
RMTHOST vm5, MGRPORT 7809
RMTTRAIL /home/oracle/goldengate/dirdat/rt
GETTRUNCATES
TABLE us03.t*;
Replicat process
REPLICAT rep1
USERID gg01, PASSWORD gg01
ASSUMETARGETDEFS
DISCARDFILE /home/oracle/goldengate/discards, PURGE
GETTRUNCATES
MAP US03.*, TARGET US03.*;
51 2013 Julian Dyke juliandyke.com
GoldenGate
DDL Support
DDL is not supported by default
To install DDL support on the source server:

[oracle@vm4]$ cd /home/oracle/goldengate
[oracle@vm4]$ sqlplus / as sysdba
SQL> @marker_setup
SQL> @ddl_setup
SQL> @role_setup
SQL> @ddl_enable
No configuration necessary on target server for DDL support

DDL support is implemented using


System DDL trigger GGS_DDL_TRIGGER_BEFORE
DDL Replication Package
GGS_MARKER table
GGS_DDL_HIST table

52 2013 Julian Dyke juliandyke.com


GoldenGate
DDL Support
Extract process:
EXTRACT ex1
USERID gg01, PASSWORD gg01
EXTTRAIL /home/oracle/goldengate/dirdat/ex
DDL INCLUDE ALL
TABLE US03.t*;
Data Pump process:
EXTRACT dp1
USERID gg01, PASSWORD gg01
RMTHOST vm5, MGRPORT 7809
RMTTRAIL /home/oracle/goldengate/dirdat/rt
DDL INCLUDE ALL
TABLE US03.t*;
Replicat process
REPLICAT rep1
USERID gg01, PASSWORD gg01
ASSUMETARGETDEFS
DISCARDFILE /home/oracle/goldengate/discards, PURGE
DDL INCLUDE ALL
DDLERROR DEFAULT IGNORE
MAP US03.*, TARGET US03.*;
53 2013 Julian Dyke juliandyke.com
GoldenGate
Mappings
Mappings between source and target can be specified
At schema level
At table level
At column level
All mappings are performed by the replicat process
Mappings are specified in replicat parameter file

Schema level mapping


REPLICAT rep1
USERID gg01, PASSWORD gg01
ASSUMETARGETDEFS
DISCARDFILE /home/oracle/goldengate/discards, PURGE
MAP US03.* TARGET US01.*;
Table level mapping
REPLICAT rep1
USERID gg01, PASSWORD gg01
ASSUMETARGETDEFS
DISCARDFILE /home/oracle/goldengate/discards, PURGE
MAP US03.T52 TARGET US01.T53;

54 2013 Julian Dyke juliandyke.com


GoldenGate
Mappings
Column Level Mappings require a definition generated on source and copied
to target

On the source

[oracle@vm4]$ cd /home/oracle/goldengate
[oracle@vm4]$ ggsci
GGSCI 1> EDIT PARAMS defgen1

DEFSFILE ./dirdef/defgen1.def
USERID us03 PASSWORD us03
TABLE us03.t54;
Generate the definitions using
[oracle@vm4]$ cd /home/oracle/goldengate
[oracle@vm4]$ ./defgen paramfile /home/oracle/goldengate/dirprm/defgen1.prm

Copy $GG_HOME/dirdef/defgen1.def to same location on target

55 2013 Julian Dyke juliandyke.com


GoldenGate
Mappings
Configure replicat parameters

REPLICAT rep1
USERID gg01, PASSWORD gg01
SOURCEDEFS ./dirdef/defgen1.def
DISCARDFILE /home/oracle/goldengate/discards, PURGE
MAP US03.T54 TARGET US01.T55, &
COLMAP (col1=c1, col3=c2, col4=c3, col2=c4);

Note COLMAP syntax is <TargetColumnName>=<SourceColumnName>

Mapping is written to the report file e.g.:

MAP resolved (entry US03.T54):


MAP "US03"."T54" TARGET US01.T55, COLMAP (col1=c1, col3=c2, col4=c3,
col2=c4);
Using the following key columns for target table US01.T55: COL1.

56 2013 Julian Dyke juliandyke.com


GoldenGate
Integrated Capture
Requires
Oracle 11.2.0.3 or above
Bundle patch 15987144

Uses additional memory in streams pool


May need to increase
MEMORY_TARGET parameter
STREAMS_POOL parameter
Size of /dev/shm (specified in /etc/fstab)

To avoid warnings

SQL> ALTER SYSTEM SET compatible = '11.2.0.3.0' SCOPE=SPFILE;


SQL> STARTUP FORCE;

57 2013 Julian Dyke juliandyke.com


GoldenGate
Integrated Capture
Grant administrative privileges to GGSCHEMA

BEGIN
dbms_goldengate_auth.grant_admin_privilege
(
grantee => 'GG01',
privilege_type => 'CAPTURE',
grant_select_privileges => TRUE
);
END;
/
On source server register extract group with database

[oracle@vm4]$ ggsci
GGSCI (vm4) 1> DBLOGIN USERID gg01 PASSWORD gg01
Successfully logged into database.
GGSCI (vm4) 2> REGISTER EXTRACT ex2 DATABASE
2013-04-19 14:04:01 INFO OGG-02003 Extract EX2 successfully registered
with database at SCN 2109330.

58 2013 Julian Dyke juliandyke.com


GoldenGate
Integrated Capture
Extract process parameters

EXTRACT ex2
USERID gg01, PASSWORD gg01
TRANLOGOPTIONS INTEGRATED PARAMS (MAX_SGA_SIZE 100)
EXTTRAIL /home/oracle/goldengate/dirdat/il
TABLE us01.t101;
Data pump process parameters

EXTRACT dp2
USERID gg01, PASSWORD gg01
RMTHOST vm5, MGRPORT 7809
RMTTRAIL /home/oracle/goldengate/dirdat/ir
TABLE US01.*;

Replicat process parameters


REPLICAT rep2
USERID gg01, PASSWORD gg01
ASSUMETARGETDEFS
DISCARDFILE /home/oracle/goldengate/discards, PURGE
MAP US01.* TARGET US01.*;

59 2013 Julian Dyke juliandyke.com


GoldenGate
Integrated Capture
New processes and trails must be added using GGSCI.

For example on the source server:

[oracle@vm4]$ ggsci
GGSCI> ADD EXTRACT ex2 INTEGRATED TRANLOG, BEGIN NOW
GGSCI> ADD EXTTRAIL /home/oracle/goldengate/dirdat/il, EXTRACT ex2
GGSCI> ADD EXTRACT dp2 EXTTRAILSOURCE /home/oracle/goldengate/dirdat/il
GGSCI> ADD RMTTRAIL /home/oracle/goldengate/dirdat/ir, EXTRACT dp2

On the target server:

[oracle@vm5]$ ggsci
GGSCI> ADD REPLICAT rep2, EXTTRAIL /home/oracle/goldengate/dirdat/ir

Start processes in GGSCI

60 2013 Julian Dyke juliandyke.com


Redo
Versus
Trail

61 2013 Julian Dyke juliandyke.com


Redo versus Trail
Single-Row Inserts
TX Header Redo Trail
INSERT INTO t2
VALUES (1,Alpha); 5.2
DRP Undo Insert Row 1
5.1
11.2
Insert Row 2
IRP Redo 5.20
5.1
10.2
Index Insert
INSERT INTO t2 DRP Undo 5.1
VALUES (2,Beta);
11.2
IRP Redo
5.20
5.1
10.2

COMMIT; 5.4
Commit 24.4
62 2013 Julian Dyke juliandyke.com
Redo versus Trail
Multi-Row Inserts
Redo Trail
INSERT INTO t2
SELECT * FROM t1; TX Header
5.2 Insert Row 1
QMD Undo
5.1
11.3 Insert Row 2

QMI Redo Insert Row 3

Insert Row 4

5.20 Insert Row 5

5.1 Insert Row 6


Index Insert 10.2

Commit
COMMIT; 5.4
24.4
63 2013 Julian Dyke juliandyke.com
Redo versus Trail
Direct Inserts Redo Trail

INSERT /*+ APPEND */ 5.2


Insert Row 1
INTO t2 5.1
TX Header
SELECT * FROM t1; 5.20
Insert Row 2
24.6
19.1
Insert Row 3

Direct Load
Insert Row 4

Insert Row 5

Insert Row 6
5.2
5.1
Index Insert 10.2

Commit
COMMIT; 5.4
24.4
64 2013 Julian Dyke juliandyke.com
Redo versus Trail
Single-Row Updates
Redo Trail
UPDATE t2 TX Header
SET c2 = Alpha 5.2 Update Row 1
WHERE c1 = 1; URP Undo
5.1
11.5 Update Row 2
URP Redo
UPDATE t2 5.20
SET c2 = Beta URP Undo Update Row 3
WHERE c1 = 2; 5.1
11.5
URP Redo
UPDATE t2 URP Undo 5.1
SET c2 = Gamma
WHERE c1 = 3; 11.5
5.1
URP Redo

Commit
COMMIT; 5.4
24.4
65 2013 Julian Dyke juliandyke.com
Redo versus Trail
Multi-Row Updates
Redo Trail
UPDATE t2 TX Header
SET c3 = c3 * 1.1; 5.2 Update Row 1
URP Undo
5.1
11.5 Update Row 2
URP Redo
5.20
URP Undo Update Row 3
5.1
11.5
URP Redo

URP Undo 5.1


11.5
5.1
URP Redo

Commit
COMMIT; 5.4
24.4
66 2013 Julian Dyke juliandyke.com
Redo versus Trail
Single-Row Deletes
Redo Trail
TX Header

DELETE FROM t2 5.2 Delete Row 1


WHERE c1 = 1; IRP Undo
5.1
Delete Row 2
11.3
DRP Redo
5.20
Index Undo
5.1
Index Redo 10.2

DELETE FROM t IRP Undo 5.1


WHERE c1 = 2;
DRP Redo 5.1
11.3

Index Undo 5.1


Index Redo 10.2

COMMIT; 5.4
24.4
67 2013 Julian Dyke
Commit
juliandyke.com
Redo versus Trail
Multi-Row Deletes
Redo Trail
TX Header

DELETE FROM t2; 5.2 Delete Row 1


IRP Undo
5.1
Delete Row 2
11.3
DRP Redo
5.20
Index Undo
5.1
Index Redo 10.2

IRP Undo 5.1

DRP Redo 5.1


11.3

Index Undo 5.1


Index Redo 10.2

COMMIT; 5.4
24.4
68 2013 Julian Dyke
Commit
juliandyke.com
Thank You For Your Interest

info@juliandyke.com

69 2013 - Julian Dyke juliandyke.com

You might also like