Oracle Clustered File System (OCFS)

advertisement
Understanding
GoldenGate
Julian Dyke
Independent Consultant
Web Version
1
© 2013 Julian Dyke
juliandyke.com
Agenda



2
© 2013 Julian Dyke
Introduction
Configuration
Redo versus Trail
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:








4
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
© 2013 Julian Dyke
juliandyke.com
GoldenGate
Supported Topologies
Unidirectional
Reporting Instance
5
Bi-directional
Instant Failover, Active-Active
Peer-to-Peer
Load Balancing, High Availability
Broadcast
Consolidation
Cascading
Data Distribution
Data Warehouse
Scalability, Database Tiering
© 2013 Julian Dyke
juliandyke.com
GoldenGate
Supported Databases

Oracle GoldenGate for Non Oracle Databases

Supported non-oracle databases include:






6
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)
© 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
7
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
© 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:

8
Name
Abbreviation
Value
Home Directory
$GG_HOME
/home/oracle/goldengate
GoldenGate Schema
GGSCHEMA
GG01
Source
Target
Hostname
vm4
vm5
Database Name
NORTH
SOUTH
Databases:
© 2013 Julian Dyke
juliandyke.com
GoldenGate
Streams versus GoldenGate
Oracle Streams
Capture
Propagate
Source Server
Apply
Target Server
Oracle GoldenGate
Extract
Data Pump
Source Server
9
© 2013 Julian Dyke
Replicat
Target Server
juliandyke.com
GoldenGate
Basic Architecture
Manager
Extract
Source
Database
Data Pump
Local
Trail
Source Server
10
© 2013 Julian Dyke
Manager
Replicat
Remote
Trail
Target
Database
Target Server
juliandyke.com
GoldenGate
Configuration Options
Classic
Capture
Redo Logs +
Archive
Logs
11
© 2013 Julian Dyke
Archive
Logs
Only
Integrated
Capture
Upstream
Capture
Downstream
Capture
juliandyke.com
GoldenGate
Classic Capture
Extract
Source
Database
12
© 2013 Julian Dyke
Online
Redo/Archive
Logs
Data Pump
Local
Trail
juliandyke.com
GoldenGate
Integrated Capture
LCR LCR LCR
Log Miner
Source
Database
13
Online
Redo/Archive
Logs
© 2013 Julian Dyke
Extract
Data Pump
Local
Trail
juliandyke.com
GoldenGate
Downstream Capture

Real Time Downstream Mode
LCR LCR
Online
Redo Logs
Primary Database
Source Server
14
© 2013 Julian Dyke
Standby
Redo Logs
Logical
Change
Records
Capture
Integrated
Extract
Trail
File
Standby Database
Downstream Server
juliandyke.com
GoldenGate
Downstream Capture

Downstream Archive Log Mode
LCR LCR
Online
Redo Logs
Primary Database
Source Server
15
© 2013 Julian Dyke
Archive
Redo Logs
Logical
Change
Records
Capture
Integrated
Extract
Trail
File
Standby Database
Downstream Server
juliandyke.com
GoldenGate
Bi-Directional Replication

Also known as Active-Active Replication
Online
Redo Logs
Local
Trail
Data
Pump
Capture
Remote
Trail
Server A
© 2013 Julian Dyke
Replicat
Data
Pump
Replicat
16
Remote
Trail
Capture
Local
Trail
Online
Redo Logs
Server B
juliandyke.com
GoldenGate
Supported Data Types

17
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
© 2013 Julian Dyke
juliandyke.com
GoldenGate
Supported Data Types
18

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
© 2013 Julian Dyke
juliandyke.com
GoldenGate
Supported Data Types

19
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
© 2013 Julian Dyke
juliandyke.com
GoldenGate
Restrictions


20
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)
© 2013 Julian Dyke
juliandyke.com
GoldenGate
Oracle-Reserved Schemas

21
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
© 2013 Julian Dyke
XDB
juliandyke.com
GoldenGate
RAC Support
22

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
© 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

24
Install bundle patch in Oracle 11.2.0.3 home for integrated capture
© 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

25
The best source of information is:
 Oracle GoldenGate Windows and UNIX Reference Guide
© 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
Report files
Checkpoint files
Process status files
SQL script files
Database definitions files
Extract data files
Temporary files
Stdout files
27
© 2013 Julian Dyke
/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

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

28
In this example parameter file is /home/oracle/goldengate/GLOBALS
© 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.

29
Ensure AUTOEXTEND is enabled
© 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

31
Executable is $GG_HOME/mgr
© 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
37

The EXTRACT and REPLICAT keywords can be omitted

Use equivalent STOP command to stop processes
© 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
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
38
Program
Status
Group
Lag at Chkpt
Time Since Chkpt
MANAGER
REPLICAT
REPLICAT
RUNNING
RUNNING
RUNNING
REP1
REP2
00:00:00
00:00:00
00:00:05
00:00:04
© 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

39
Output is filtered through more utility
© 2013 Julian Dyke
juliandyke.com
GoldenGate
Trail Files
40

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
© 2013 Julian Dyke
juliandyke.com
GoldenGate
Trail Files
41

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
© 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>
Logdump>
Logdump>
Logdump>
Logdump>
GHDR ON
FILEHEADER DETAIL
DETAIL DATA
USERTOKEN DETAIL
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
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)
2013/04/05 06:24:00.000.000 Insert
Len
51 RBA 9060
Name: US03.T1
After Image:
Partition 4
G
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
m
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 */

47
where 76111 is the OBJ# of the table
© 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

48
The sequence.sql script creates the following procedures in the GGSCHEMA :
 SEQTRACE
 GETSEQFLUSH
 REPLICATESEQUENCE
 UPDATESEQUENCE
© 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


50
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
© 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
52

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
© 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

55
Copy $GG_HOME/dirdef/defgen1.def to same location on target
© 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

60
Start processes in GGSCI
© 2013 Julian Dyke
juliandyke.com
Redo
Versus
Trail
61
© 2013 Julian Dyke
juliandyke.com
Redo versus Trail
Single-Row Inserts
INSERT INTO t2
VALUES (1,’Alpha’);
TX Header
Redo
Trail
5.2
DRP Undo
5.1
Insert Row 1
11.2
Insert Row 2
IRP Redo
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;
Commit
62
© 2013 Julian Dyke
5.4
24.4
juliandyke.com
Redo versus Trail
Multi-Row Inserts
INSERT INTO t2
SELECT * FROM t1;
Redo
Trail
5.2
Insert Row 1
TX Header
QMD Undo
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;
63
© 2013 Julian Dyke
5.4
24.4
juliandyke.com
Redo versus Trail
Direct Inserts
INSERT /*+ APPEND */
INTO t2
SELECT * FROM t1;
TX Header
Redo
Trail
5.2
5.1
Insert Row 1
5.20
Insert Row 2
24.6
19.1
Direct Load
Insert Row 3
Insert Row 4
Insert Row 5
5.2
5.1
Index Insert
Insert Row 6
10.2
Commit
COMMIT;
64
© 2013 Julian Dyke
5.4
24.4
juliandyke.com
Redo versus Trail
Single-Row Updates
Redo
UPDATE t2
SET c2 = ‘Alpha’
WHERE c1 = 1;
TX Header
5.2
URP Undo
Update Row 1
5.1
11.5
UPDATE t2
SET c2 = ‘Beta’
WHERE c1 = 2;
Trail
Update Row 2
URP Redo
5.20
URP Undo
Update Row 3
5.1
11.5
URP Redo
UPDATE t2
SET c2 = ‘Gamma’
WHERE c1 = 3;
URP Undo
5.1
11.5
5.1
URP Redo
Commit
COMMIT;
65
© 2013 Julian Dyke
5.4
24.4
juliandyke.com
Redo versus Trail
Multi-Row Updates
Redo
UPDATE t2
SET c3 = c3 * 1.1;
Trail
TX Header
5.2
URP Undo
Update Row 1
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;
66
© 2013 Julian Dyke
5.4
24.4
juliandyke.com
Redo versus Trail
Single-Row Deletes
Redo
Trail
TX Header
DELETE FROM t2
WHERE c1 = 1;
5.2
IRP Undo
DRP Redo
Delete Row 1
5.1
11.3
Delete Row 2
5.20
Index Undo
5.1
DELETE FROM t
WHERE c1 = 2;
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;
67
© 2013 Julian Dyke
juliandyke.com
Redo versus Trail
Multi-Row Deletes
Redo
Trail
TX Header
DELETE FROM t2;
5.2
IRP Undo
DRP Redo
Delete Row 1
5.1
11.3
Delete Row 2
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
COMMIT;
68
© 2013 Julian Dyke
juliandyke.com
Thank You For Your Interest
info@juliandyke.com
69
© 2013 - Julian Dyke
juliandyke.com
Download