Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
GoldenGate
Julian Dyke
Independent Consultant
Web Version
2013 Julian Dyke
juliandyke.com
Agenda
Introduction
Configuration
Redo versus Trail
juliandyke.com
Introduction
juliandyke.com
GoldenGate
Introduction
GoldenGate supports:
juliandyke.com
GoldenGate
Supported Topologies
Unidirectional
Reporting Instance
Broadcast
Data Distribution
Bi-directional
Consolidation
Data Warehouse
Peer-to-Peer
Cascading
juliandyke.com
GoldenGate
Supported Databases
juliandyke.com
GoldenGate
Licensing
Processor License
Enterprise Edition
47,500
23,000
10,000
GoldenGate
17,500
3,500
juliandyke.com
GoldenGate
Conventions
Environment:
Name
Abbreviation
Value
Home Directory
$GG_HOME
/home/oracle/goldengate
GoldenGate Schema
GGSCHEMA
GG01
Source
Target
Hostname
vm4
vm5
Database Name
NORTH
SOUTH
Databases:
juliandyke.com
GoldenGate
Streams versus GoldenGate
Oracle Streams
Capture
Propagate
Source Server
Apply
Target Server
Oracle GoldenGate
Extract
Data Pump
Source Server
9
Replicat
Target Server
juliandyke.com
GoldenGate
Basic Architecture
Manager
Extract
Source
Database
Manager
Data Pump
Local
Trail
Source Server
1
Replicat
Remote
Trail
Target
Database
Target Server
juliandyke.com
GoldenGate
Configuration Options
Classic
Capture
Redo Logs +
Archive
Logs
11
Archive
Logs
Only
Integrated
Capture
Upstream
Capture
Downstream
Capture
juliandyke.com
GoldenGate
Classic Capture
Data Pump
Extract
Source
Database
Online
Redo/Archive
Logs
Local
Trail
juliandyke.com
GoldenGate
Integrated Capture
Source
Database
Online
Redo/Archive
Logs
Data Pump
Extract
Local
Trail
juliandyke.com
GoldenGate
Downstream Capture
LCR LCR
Online
Redo Logs
Primary Database
Source Server
Standby
Redo Logs
Logical
Change
Records
Capture
Integrated
Extract
Trail
File
Standby Database
Downstream Server
juliandyke.com
GoldenGate
Downstream Capture
LCR LCR
Online
Redo Logs
Primary Database
Source Server
Archive
Redo Logs
Logical
Change
Records
Capture
Integrated
Extract
Trail
File
Standby Database
Downstream Server
juliandyke.com
GoldenGate
Bi-Directional Replication
Online
Redo Logs
Local
Trail
Data
Pump
Capture
Remote
Trail
Server A
Replicat
Data
Pump
Replicat
Remote
Trail
Capture
Local
Trail
Online
Redo Logs
Server B
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
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
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
juliandyke.com
GoldenGate
Restrictions
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
DMSYS
PERFSTAT
DSSYS
PUBLIC
XDB
juliandyke.com
GoldenGate
RAC Support
juliandyke.com
Configuration
juliandyke.com
GoldenGate
Installation
juliandyke.com
GoldenGate
GGSCI
For example:
GGSCI 1> INFO ALL
juliandyke.com
GoldenGate
Parameter Files
juliandyke.com
GoldenGate
Subdirectories
[oracle@vm4]$ ggsci
GGSCI (vm4) 1> CREATE SUBDIRS
Creating subdirectories under current directory /home/oracle/goldengate
Parameter files
Report files
Checkpoint files
Process status files
SQL script files
Database definitions files
Extract data files
Temporary files
Stdout files
/home/oracle/goldengate/dirprm: created
/home/oracle/goldengate/dirrpt: created
/home/oracle/goldengate/dirchk: created
/home/oracle/goldengate/dirpcs: created
/home/oracle/goldengate/dirsql: created
/home/oracle/goldengate/dirdef: created
/home/oracle/goldengate/dirdat: created
/home/oracle/goldengate/dirtmp: created
/home/oracle/goldengate/dirout: created
juliandyke.com
GoldenGate
Schema Owner
[oracle@vm4]$ ggsci
GGSCI 1> EDIT PARAMS ./GLOBALS
GGSCHEMA gg01
juliandyke.com
GoldenGate
Tablespace
juliandyke.com
GoldenGate
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
[oracle@vm4]$ cd /home/oracle/goldengate
[oracle@vm4]$ sqlplus / as sysdba
SQL> GRANT GGS_GGSUSER_ROLE TO gg01;
juliandyke.com
GoldenGate
Manager Process
Executable is $GG_HOME/mgr
juliandyke.com
GoldenGate
Extract Process
Classic capture
Captures changes from online redo log or archived redo log
Fetches additional data from database
Integrated capture
Captures changes from log miner
juliandyke.com
GoldenGate
Data Pump Process
juliandyke.com
GoldenGate
Replicat Process
juliandyke.com
GoldenGate
Processes and Trails
[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
[oracle@vm5]$ ggsci
GGSCI> ADD REPLICAT rep1, EXTTRAIL /home/oracle/goldengate/dirdat/rt
juliandyke.com
GoldenGate
Checkpoint Table
juliandyke.com
GoldenGate
Starting Processes
[oracle@vm4]$ ggsci
GGSCI> START EXTRACT ex1
GGSCI> START EXTRACT dp1
[oracle@vm4]$ ggsci
GGSCI> START REPLICAT rep1
juliandyke.com
GoldenGate
Checking Process Status
Status
Group
Lag at Chkpt
MANAGER
EXTRACT
EXTRACT
EXTRACT
EXTRACT
RUNNING
RUNNING
ABENDED
RUNNING
STOPPED
DP1
DP2
EX1
EX2
00:00:00
00:00:00
00:00:00
00:00:00
00:00:04
24:23:14
00:00:05
02:34:41
[oracle@vm5]$ ggsci
GGSCI (vm5.juliandyke.com) 1> INFO ALL
Program
Status
Group
Lag at Chkpt
MANAGER
REPLICAT
REPLICAT
RUNNING
RUNNING
RUNNING
REP1
REP2
00:00:00
00:00:00
00:00:05
00:00:04
juliandyke.com
GoldenGate
Viewing Log Files
juliandyke.com
GoldenGate
Trail Files
juliandyke.com
GoldenGate
Trail Files
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
DATE
2-bytes followed by 19 ASCII characters in the format:
YYYY-MM-DD:HH24:MI:SS
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
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
juliandyke.com
GoldenGate
Logdump Utility
# or N
juliandyke.com
GoldenGate
Logdump
Sample output
Hdr-Ind
UndoFlag
RecLength
IOType
TransInd
SyskeyLen
AuditRBA
Continued
:
:
:
:
:
:
:
:
E
.
51
5
.
0
N
(x45)
(x00)
(x0033)
(x05)
(x01)
(x00)
80
(x00)
Partition :
. (x04)
BeforeAfter:
A (x41)
IO Time
: 2013/04/05 06:24:00.000.000
OrigNode
:
255 (xff)
FormatType :
R (x52)
Incomplete :
. (x00)
AuditPos
: 32769040
RecCount
:
1 (x01)
juliandyke.com
GoldenGate
Minimal Supplemental Logging
Extract processes will not start unless minimal supplemental logging has
been configured in database
juliandyke.com
GoldenGate
Supplemental Logging
juliandyke.com
GoldenGate
Sequences
juliandyke.com
GoldenGate
Sequences
Extract Process
EXTRACT ex1
USERID gg01, PASSWORD gg01
EXTTRAIL /home/oracle/goldengate/dirdat/ex
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.*;
2013 Julian Dyke
juliandyke.com
GoldenGate
TRUNCATE Statements
juliandyke.com
GoldenGate
TRUNCATE Statements
Extract process
EXTRACT ex1
USERID gg01, PASSWORD gg01
EXTTRAIL /home/oracle/goldengate/dirdat/ex
GETTRUNCATES
TABLE us03.t*;
Replicat process
REPLICAT rep1
USERID gg01, PASSWORD gg01
ASSUMETARGETDEFS
DISCARDFILE /home/oracle/goldengate/discards, PURGE
GETTRUNCATES
MAP US03.*, TARGET US03.*;
juliandyke.com
GoldenGate
DDL Support
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.*;
juliandyke.com
GoldenGate
Mappings
juliandyke.com
GoldenGate
Mappings
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;
juliandyke.com
GoldenGate
Mappings
juliandyke.com
GoldenGate
Integrated Capture
Requires
Oracle 11.2.0.3 or above
Bundle patch 15987144
To avoid warnings
SQL> ALTER SYSTEM SET compatible = '11.2.0.3.0' SCOPE=SPFILE;
SQL> STARTUP FORCE;
juliandyke.com
GoldenGate
Integrated Capture
BEGIN
dbms_goldengate_auth.grant_admin_privilege
(
grantee => 'GG01',
privilege_type => 'CAPTURE',
grant_select_privileges => TRUE
);
END;
/
[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.
5
juliandyke.com
GoldenGate
Integrated Capture
EXTRACT ex2
USERID gg01, PASSWORD gg01
TRANLOGOPTIONS INTEGRATED PARAMS (MAX_SGA_SIZE 100)
EXTTRAIL /home/oracle/goldengate/dirdat/il
TABLE us01.t101;
EXTRACT dp2
USERID gg01, PASSWORD gg01
RMTHOST vm5, MGRPORT 7809
RMTTRAIL /home/oracle/goldengate/dirdat/ir
TABLE US01.*;
REPLICAT rep2
USERID gg01, PASSWORD gg01
ASSUMETARGETDEFS
DISCARDFILE /home/oracle/goldengate/discards, PURGE
MAP US01.* TARGET US01.*;
5
juliandyke.com
GoldenGate
Integrated Capture
[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
[oracle@vm5]$ ggsci
GGSCI> ADD REPLICAT rep2, EXTTRAIL /home/oracle/goldengate/dirdat/ir
juliandyke.com
Redo
Versus
Trail
6
juliandyke.com
TX Header
DRP Undo
Redo
5.2
5.1
11.2
IRP Redo
Trail
Insert Row 1
Insert Row 2
5.20
5.1
Index Insert
INSERT INTO t2
VALUES (2,Beta);
DRP Undo
10.2
5.1
11.2
IRP Redo
5.20
5.1
10.2
COMMIT;
6
Commit
5.4
24.4
juliandyke.com
Redo
Trail
TX Header
QMD Undo
5.2
Insert Row 1
5.1
11.3
QMI Redo
Insert Row 2
Insert Row 3
Insert Row 4
Index Insert
5.20
Insert Row 5
5.1
Insert Row 6
10.2
Commit
COMMIT;
6
5.4
24.4
juliandyke.com
TX Header
Redo
5.2
5.1
5.20
24.6
19.1
Direct Load
Trail
Insert Row 1
Insert Row 2
Insert Row 3
Insert Row 4
Insert Row 5
5.2
5.1
Index Insert
Insert Row 6
10.2
Commit
COMMIT;
6
5.4
24.4
juliandyke.com
TX Header
URP Undo
5.2
URP Redo
URP Undo
Update Row 1
5.1
11.5
UPDATE t2
SET c2 = Beta
WHERE c1 = 2;
Trail
5.20
Update Row 2
Update Row 3
5.1
11.5
URP Redo
UPDATE t2
SET c2 = Gamma
WHERE c1 = 3;
URP Undo
URP Redo
5.1
11.5
5.1
Commit
COMMIT;
6
5.4
24.4
juliandyke.com
Trail
TX Header
URP Undo
5.2
5.1
11.5
URP Redo
URP Undo
Update Row 1
5.20
Update Row 2
Update Row 3
5.1
11.5
URP Redo
URP Undo
URP Redo
5.1
11.5
5.1
Commit
COMMIT;
6
5.4
24.4
juliandyke.com
Trail
TX Header
DELETE FROM t2
WHERE c1 = 1;
IRP Undo
DRP Redo
Index Undo
DELETE FROM t
WHERE c1 = 2;
Delete Row 1
5.1
11.3
Delete Row 2
5.20
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
COMMIT;
6
5.2
juliandyke.com
Trail
TX Header
DELETE FROM t2;
IRP Undo
DRP Redo
Index Undo
Delete Row 1
5.1
11.3
Delete Row 2
5.20
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
COMMIT;
6
5.2
juliandyke.com
info@juliandyke.com
69