1.
Introduction
In this document, we have provided the step
by step instructions to implement DDL replication for replicating a single
procedure/package without disturbing the existing DML replication using Oracle
Golden Gate.
2. Single Procedure/Package
Replication
Consider the facts that we already have an
OGG replication enabled between source and destination databases. Now, we need to enable replication for a
single procedure so that any changes made on the procedure on Source database
will be replicated on target db via OGG.
2.1.
Pre-requisites
This section provides the pre-requisites
for enabling a single procedure replication.
·
Oracle Golden Gate is already
installed and DML replication is configured
·
All dependent objects (tables
or views) are already replicated and data are in sync for both source and
target.
·
Necessary privileges are
provided to Golden Gate Administrator
2.2.
Steps
2.2.1.
Step 1
Login as SYS user and execute the below
scripts for enabling DDL replication if not executed already.
@marker_setup.sql
@ddl_setup.sql
@role_setup.sql
@ddl_enable.sql
@ddl_pin <gg_owner_schema>
2.2.2.
Step 2
Create table GGUSER.GGSRC on both source
and destination database using the below structure.
CREATE TABLE GGUSER.GGSRC
(
OBJECT_ID NUMBER,
OWNER VARCHAR2(30 BYTE),
OBJECT_NAME VARCHAR2(128 BYTE),
OBJECT_TYPE VARCHAR2(19 BYTE)
)LOGGING
NOCOMPRESS
NOCACHE
NOPARALLEL
MONITORING;
2.2.3.
Step 3
Login as GGUSER on source database, insert
the rows into table GGSRC
Insert into ggsrc select
object_id,owner,object_name,object_type from dba_objects where object_id<=1000;
2.2.4.
Step 4
INITIAL LOAD - Create Extract Group LOAD1
for Initial load (used intial load as the data is less, not recommended for
bigger tables on production)
GGSCI (TEST1) 12> dblogin userid
gg_admin,password gg_admin
Successfully logged into database.
GGSCI (TEST1) 13> add extract
load1,SOURCEISTABLE
Extract Added.
2.2.5.
Step 5
Edit the extract parameter for Initial Load
GGSCI (TEST1) 14> edit params load1
GGSCI (TEST1) 15> edit params load1
EXTRACT load1
userid gg_admin,password gg_admin
RMTHOST 10.10.10.20,mgrport 7809
rmttask replicat, group load2
table gguser.ggsrc;
2.2.6.
Step 6
On Target database, create a replicat group LOAD2 and edit the parameters.
GGSCI (TEST2) 18> add replicat
load2,SPECIALRUN
REPLICAT added.
GGSCI (TEST2) 19> edit params load2
REPLICAT load2
USERID gg_admin, PASSWORD gg_admin
ASSUMETARGETDEFS
MAP gguser.ggsrc,TARGET
2.2.7.
Step 7
On source database ,start the Extract load
LOAD1. The data from source table GGSRC will be loaded into GGSRC on target database.
GGSCI (TEST1) 33> start extract
load1
Sending START request to MANAGER ...
EXTRACT LOAD1 starting
GGSCI (TEST1) 34> info extract load1
EXTRACT
LOAD1 Last Started 2015-04-06
19:05 Status STOPPED
Checkpoint Lag Not Available
Log Read Checkpoint Table GGUSER.GGSRC
2015-04-06 19:05:30 Record 998
Task SOURCEISTABLE
GGSCI (TEST2) 25> info replicat load2
REPLICAT
LOAD2 Initialized 2015-04-06 18:49 Status RUNNING
Checkpoint Lag 00:00:00 (updated 00:16:28 ago)
Log Read Checkpoint Not Available
Task SPECIALRUN
2.2.8.
Step 8
Now, we will create a new Extract Group for
replicating a single procedure that we are going to create with name “INSERTNEWROW”
On source database,Create an extract group
DDLEX and edit the parameters for the extract group
GGSCI (TEST1) 29> add extract
ddlex,tranlog,begin now
EXTRACT added.
GGSCI (TEST1) 30> add rmttrail
/home/oracle/gg/dirdat/dt, EXTRACT DDLEX
RMTTRAIL added.
GGSCI (TEST1) 31> edit params ddlex
extract ddlex
userid gg_admin,password gg_admin
rmthost 10.10.10.20,mgrport 7809
rmttrail /home/oracle/gg/dirdat/dt
ddl include, OBJTYPE 'PROCEDURE', OBJNAME
gguser.INSERTNEWROW;
2.2.9.
Step 9
Create a Replicat Group on target database,
edit the parameters are shown below.
GGSCI (TEST2) 33> add replicat
ddrep,exttrail /home/oracle/gg/dirdat/dt,checkpointtable gg_admin.chkptab
REPLICAT added.
GGSCI (TEST2) 34> edit params ddrep
replicat ddrep
userid gg_admin,password gg_admin
discardfile
/home/oracle/gg/dirrpt/ddrep.dsc,purge
DDL INCLUDE MAPPED OBJNAME gguser.ggsrc,target gguser.ggsrc
DDLOPTIONS MAPSESSIONSCHEMA ggsuser, TARGET
ggtuser, MAPSCHEMAS;
2.2.10.
Step 10
Start the Extract group on source database.
GGSCI (TEST1) 35> start extract ddlex
2.2.11.
Step 11
Start the replicat group on target database
GGSCI (TEST2) 36> start replicat ddrep
Sending START request to MANAGER ...
REPLICAT DDREP starting
2.2.12.
Step 12
Now, on Source database, create a procedure
under gguser schema.
CREATE OR REPLACE PROCEDURE insertnewrow(
p_objid IN ggsrc.OBJECT_ID%TYPE,
p_owner IN ggsrc.OWNER%TYPE,
p_objname IN ggsrc.OBJECT_NAME%TYPE,
p_objtype IN ggsrc.OBJECT_TYPE%TYPE)
IS
BEGIN
INSERT
INTO ggsrc ("OBJECT_ID", "OWNER", "OBJECT_NAME",
"OBJECT_TYPE")
VALUES
(p_objid, p_owner,p_objname, p_objtype);
COMMIT;
END;
/
2.2.13.
Step 13
On Target database, login as GGUSER and
check whether the procedure is replicated.
The same can be confirmed via the report
file under “dirrpt” directory
Really very happy to say,your post is very interesting to read.I never stop myself to say something about it.You’re doing a great job.Keep it up
ReplyDeleteAuthorized iphone service center in Chennai | iphone service center in chennai | Mobile service center in chennai | Authorized iphone service center in Chennai | iphone service center in chennai