Вы находитесь на странице: 1из 11

Using Oracle GoldenGate 12c for CDC between Oracle 12c

Multitenant Database and MS SQL Server 2012

This note describes the process of configuring a initial data load job as well as Change Data
Capture from an Oracle 12c pluggable database source and a MS SQL Server 2012 target
database.

It assumes the GoldenGate user has been created in the Oracle 12c source database and
other setup tasks like enabling supplemental logging in the database have been completed
as well.

 Downloaded from OTN and unzipped on the SQL Server 2012 box

121201_ggs_Windows_x64_MSSQL_64bit.zip

 From the unzipped location ran ggsci

 Create the GLOBALS file


Add the following line

MGRSERVNAME MANAGER

Save the file. The file is saved automatically with the name GLOBALS, without a file
extension

 Create the Manager service

D:\software\goldengate12c>install ADDSERVICE USER CORP.DOMAIN\gavin


PASSWORD xxx

Service 'MANAGER' created.

 Check the status of the manager service

D:\software\goldengate12c>ggsci

Oracle GoldenGate Command Interpreter for SQL Server


Version 12.1.2.0.1 17597485 OGGCORE_12.1.2.0.T2_PLATFORMS_131206.0309
Windows x64 (optimized), Microsoft SQL Server on Dec 6 2013 12:06:08
Operating system character set identified as windows-1252.

Copyright (C) 1995, 2013, Oracle and/or its affiliates. All rights reserved.

GGSCI (kensmssql001uat) 1> info all

Program Status Group Lag at Chkpt Time Since Chkpt

MANAGER STOPPED
GGSCI (kensmssql001uat) 3> EDIT PARAMS mgr

GGSCI (kensmssql001uat) 4>

PORT 7809

GGSCI (kensmssql001uat) 8> START MANAGER


Starting Manager as service ('MANAGER')...
Service started.

GGSCI (kensmssql001uat) 9> INFO ALL

Program Status Group Lag at Chkpt Time Since Chkpt

MANAGER RUNNING

 Downloaded and installed Oracle Data Access Components

ODAC1120320_x64

 Create the data source via ODBC Data Source Administrator (launched from the
ODAC Oracle Client Home)

For login authentication, select With Integrated Windows Authentication for Oracle GoldenGate to use
Windows authentication, or select With SQL Server authentication using a login ID and password entered
by the user for Oracle GoldenGate to use database credentials
 Test the data source by logging in via Oracle GoldenGate

GGSCI (kensmssql001uat) 10> DBLOGIN SOURCEDB sqlserver2012

2014-01-30 08:28:05 INFO OGG-03036 Database character set identified as win


dows-1252. Locale: en_US.
2014-01-30 08:28:05 INFO OGG-03037 Session character set identified as wind
ows-1252.
Successfully logged into database.

 Create the definitions file using the defgen utility

[oracle@orasql-001-dev goldengate]$ ./ggsci

Oracle GoldenGate Command Interpreter for Oracle


Version 12.1.2.0.0 17185003 OGGCORE_12.1.2.0.0_PLATFORMS_130924.1316_FBO
Linux, x64, 64bit (optimized), Oracle 12c on Sep 25 2013 02:33:54
Operating system character set identified as UTF-8.

Copyright (C) 1995, 2013, Oracle and/or its affiliates. All rights reserved.

GGSCI (orasql-001-deV) 1> EDIT PARAM defgen

DEFSFILE ./dirdat/source.def,
USERIDALIAS gg_sales
TABLE sales.sh.customers;

[oracle@orasql-001-dev goldengate]$ ./defgen paramfile dirprm/defgen.prm

***********************************************************************
Oracle GoldenGate Table Definition Generator for Oracle
Version 12.1.2.0.0 17185003 OGGCORE_12.1.2.0.0_PLATFORMS_130924.1316
Linux, x64, 64bit (optimized), Oracle 12c on Sep 24 2013 16:23:06

Copyright (C) 1995, 2013, Oracle and/or its affiliates. All rights reserved.

Starting at 2014-01-30 11:36:28


***********************************************************************

Operating System Version:


Linux
Version #1 SMP Wed Aug 28 09:09:20 PDT 2013, Release 2.6.32-400.29.3.el5uek
Node: orasql-001-deV
Machine: x86_64
soft limit hard limit
Address Space Size : unlimited unlimited
Heap Size : unlimited unlimited
File Size : unlimited unlimited
CPU Time : unlimited unlimited

Process id: 32174

***********************************************************************
** Running with the following parameters **
***********************************************************************
DEFSFILE ./dirdat/source.def,
USERIDALIAS gg_sales
TABLE sales.sh.myobjects;
Retrieving definition for SALES.SH.MYOBJECTS.

Definitions generated for 1 table in ./dirdat/source.def.

[oracle@orasql-001-dev goldengate]$
 SCP or FTP the source.def file to the Windows Server hosting SQL Server 2012
instance

Copy it in the dirdef subdirectory in the GoldenGate software installation home directory

 Create the table in SQL server

USE [AdventureWorks]
GO

/****** Object: Table [Person].[myobjects] Script Date: 4/02/2014 9:04:24 AM


******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [SCOTT].[myobjects](


[OBJECT_ID] [int] NOT NULL,
[OBJECT_NAME] [nvarchar](20) NULL,
[OBJECT_TYPE] [nvarchar](40) NULL
) ON [PRIMARY]

GO

 Create the Initial Load Extract

GGSCI (orasql-001-deV) 2> DBLOGIN USERIDALIAS gg_root


Successfully logged into database CDB$ROOT.

GGSCI (orasql-001-deV) 1> ADD EXTRACT eini1 SOURCEISTABLE


EXTRACT added.

GGSCI (orasql-001-deV) 2> EDIT PARAMS eini1

EXTRACT eini1
USERIDALIAS gg_root
RMTHOST kensmssql001uat, MGRPORT 7809
RMTTASK REPLICAT, GROUP rini1
TABLE sales.sh.customers;

 Create the Initial Load Replicat job

GGSCI (kensmssql001uat) 11> ADD REPLICAT rini1 SPECIALRUN


REPLICAT added.

GGSCI (kensmssql001uat) 12> EDIT PARAMS rini1

GGSCI (kensmssql001uat) 13> VIEW PARAMS rini1


REPLICAT rini1
TARGETDB sqlserver2012
SOURCEDEFS ./dirdef/source.def
MAP sales.sh.customers, TARGET person.customers;

 Start the Initial Load Extract

GGSCI (orasql-001-deV) 2> start extract eini1

Sending START request to MANAGER ...


EXTRACT EINI1 starting

GGSCI (orasql-001-deV) 3> info extract eini1

EXTRACT EINI1 Last Started 2014-01-30 11:40 Status RUNNING


Checkpoint Lag Not Available
Process ID 32456
Log Read Checkpoint Table SALES.SH.MYOBJECTS
2014-01-30 11:40:42 Record 1
Task SOURCEISTABLE

GGSCI (orasql-001-deV) 11> info extract eini1

EXTRACT EINI1 Last Started 2014-01-30 11:40 Status STOPPED


Checkpoint Lag Not Available
Log Read Checkpoint Table SALES.SH.MYOBJECTS
2014-01-30 11:41:41 Record 77695
Task SOURCEISTABLE

 On the SQL Server 2012 database confirm the initial load to the MYOBJECTS table has
completed
 Configure Change Data Capture

Add supplemental logging at the table level and create the integrated extract.

Note – for 12c Multitenant Container databases we have to use Integrated Extracts in place of
Classic Extracts

To add trandata we need to be connected to the individual pluggable database and not the root
container. In this case the PDB is SALES.

GGSCI (orasql-001-deV) 4> dblogin useridalias gg_sales


Successfully logged into database SALES.

GGSCI (orasql-001-deV) 5> add trandata sales.sh.myobjects

Logging of supplemental redo data enabled for table SALES.SH.MYOBJECTS.


TRANDATA for scheduling columns has been added on table 'SALES.SH.MYOBJECTS'.

GGSCI (orasql-001-deV) 7> dblogin useridalias gg_root


Successfully logged into database CDB$ROOT.

GGSCI (orasql-001-deV) 8> register extract eora1 database container (sales)


Extract EORA1 successfully registered with database at SCN 4859756.

GGSCI (orasql-001-deV) 9> ADD EXTRACT eora1 INTEGRATED TRANLOG BEGIN NOW
EXTRACT added.

GGSCI (orasql-001-deV) 11> edit params eora1


EXTRACT eora1
USERIDALIAS gg_root
RMTHOST kensmssql001uat, MGRPORT 7809
RMTTRAIL ./dirdat/ab
TABLE sales.sh.myobjects;

GGSCI (orasql-001-deV) 12> ADD RMTTRAIL ./dirdat/ab EXTRACT eora1


RMTTRAIL added.

GGSCI (orasql-001-deV) 13> START EXTRACT eora1

Sending START request to MANAGER ...


EXTRACT EORA1 starting

GGSCI (orasql-001-deV) 14> INFO EXTRACT eora1

EXTRACT EORA1 Initialized 2014-01-31 08:24 Status STARTING


Checkpoint Lag 00:00:00 (updated 00:14:43 ago)
Process ID 5869
Log Read Checkpoint Oracle Integrated Redo Logs
2014-01-31 08:24:07
SCN 0.0 (0)

GGSCI (orasql-001-deV) 15> INFO EXTRACT eora1

EXTRACT EORA1 Last Started 2014-01-31 08:38 Status RUNNING


Checkpoint Lag 00:00:06 (updated 00:00:05 ago)
Process ID 5869
Log Read Checkpoint Oracle Integrated Redo Logs
2014-01-31 08:39:30
SCN 0.4911465 (4911465)

 On the Windows 2008 server create the Replicat process

GGSCI (kensmssql001uat) 18> ADD REPLICAT rora1, EXTTRAIL ./dirdat/ab


ERROR: No checkpoint table specified for ADD REPLICAT.

GGSCI (kensmssql001uat) 19> ADD CHECKPOINTTABLE PERSON.CHKTAB

Successfully created checkpoint table PERSON.CHKTAB.

GGSCI (kensmssql001uat) 20> EDIT PARAMS ./GLOBALS

MGRSERVNAME MANAGER
CHECKPOINTTABLE PERSON.CHKTAB

NOTE:

For the GLOBALS configuration to take effect, you must exit the session in which the changes were
made.

GGSCI (kensmssql001uat) 22> ADD REPLICAT rora1, EXTTRAIL ./dirdat/ab CHECKPOINTT


ABLE PERSON.CHKTAB
REPLICAT added.

GGSCI (kensmssql001uat) 24> EDIT PARAMS rora1

REPLICAT rora1
TARGETDB sqlserver2012
SOURCEDEFS ./dirdef/source.def
MAP sales.sh.myobjects, TARGET person.myobjects;

GGSCI (kensmssql001uat) 26> START REPLICAT rora1

Sending START request to MANAGER ('MANAGER') ...


REPLICAT RORA1 starting

GGSCI (kensmssql001uat) 27> INFO REPLICAT rora1

REPLICAT RORA1 Last Started 2014-01-31 08:50 Status RUNNING


Checkpoint Lag 00:00:00 (updated 00:00:08 ago)
Process ID 5300
Log Read Checkpoint File ./dirdat/ab000000
First Record RBA 1480

 Issue an UPDATE statement on the Oracle 12c Pluggable Database

[oracle@orasql-001-dev goldengate]$ sqlplus sh/sh@localhost:1525/sales

SQL*Plus: Release 12.1.0.1.0 Production on Fri Jan 31 08:52:03 2014


Copyright (c) 1982, 2013, Oracle. All rights reserved.

Last Successful login time: Thu Jan 30 2014 10:04:23 +08:00

Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing
options

SQL> update myobjects


2 set object_type='TABLE';

77695 rows updated.

SQL> commit;

Commit complete.

GGSCI (kensmssql001uat) 39> stats replicat rora1 latest

Sending STATS request to REPLICAT RORA1 ...

Start of Statistics at 2014-01-31 08:58:34.

Replicating from SALES.SH.MYOBJECTS to Person.myobjects:

*** Total statistics since 2014-01-31 08:58:04 ***


Total inserts 0.00
Total updates 37586.00
Total deletes 0.00
Total discards 0.00
Total operations 37586.00

GGSCI (kensmssql001uat) 40> send replicat rora1 getlag

Sending GETLAG request to REPLICAT RORA1 ...


Last record lag 387 seconds.

GGSCI (kensmssql001uat) 41> send replicat rora1 getlag

Sending GETLAG request to REPLICAT RORA1 ...


Last record lag 395 seconds.
At EOF, no more records to process.

GGSCI (kensmssql001uat) 42> stats replicat rora1 latest

Sending STATS request to REPLICAT RORA1 ...

Start of Statistics at 2014-01-31 08:59:20.

Replicating from SALES.SH.MYOBJECTS to Person.myobjects:

*** Total statistics since 2014-01-31 08:58:04 ***


Total inserts 0.00
Total updates 77695.00
Total deletes 0.00
Total discards 0.00
Total operations 77695.00
 On the SQL Server 2012 instance verify the update has been performed as well