AIM: Zero Downtime Migration with one-way replication between an Oracle 10gR2 database and an Oracle 11gR2 database on same server.
1. Environment
2. GoldenGate Installation on Source Oracle 10gR2
3. GoldenGate Installation on Target Oracle 11gR2
4. Create CDS User (Application user) for testing
5. OGG Configuration on Source Oracle 10gR2
a) Set the environment
b) Login to Database
c) Configure Manager
d) Create Extract Group
e) Create Pump Group
f) Add supplemental logging
6. OGG Configuration on Target Oracle 11gR2
a) Set the environment
b) Login to Database
c) Configure Manager
d) Set up the Checkpoint table
i) Create a GLOBALS file
ii) Activate the GLOBALS parameters
iii) Add a Replicat checkpoint table
7) Create the Replicat Group on Target 11gR2
8. On Source Start Manager, Extract and Pump
9. On Target start the Manager only
10. Export data from source Oracle 10gR2
11. Transfer the dumpfile to 11g DATA_PUMP_DIR
12. Generate data on source Oracle 10gR2 (After Export)
13. Import Data and Start Replicat on Target 11gR2
14. Test and Verify the Results
INSERT OPERATION
a1) Execute INSERT again on the Source Oracle Database 10gR2
a2) Verify Insert Changes on Target Oracle Database 11gR2
UPDATE OPERATION
b1) Execute update on the Source Oracle Database 10gR2
b2) Verify Update Changes on Target Oracle Database 11gR2
DELETE OPERATION
c1) Execute Delete on the Source Oracle Database 10gR2
c2) Verify Delete Changes on Target Oracle Database 11gR2
15. Verify using GGSCI
1. Environment
Source Oracle 10gR2
Server Name : RAC1.RAJASEKHAR.COMOS Version : Red Hat Enterprise Linux 5.7 Database Version : 10.2.0.5GoldenGate Version : Version 11.2.1.0.1 for 10g database Database Name : DB10 File System : ASM Golden Gate User : GATE Golden Gate Extract : E10G Golden Gate Pump : P10G Application User : CDS (Migrating this user to target)Oracle Home : /u01/app/oracle/product/10g GoldenGate Home : /u01/app/oracle/product/10gogg
Target Oracle 11gR2
Server Name : RAC1.RAJASEKHAR.COMOS Version : Red Hat Enterprise Linux 5.7 Database Version : 11.2.0.4GoldenGate Version : Version 11.2.1.0.5 for 11g database Database Name : DB11 File System : Non-ASMGolden Gate User : GATE Golden Gate Replicate : R11G Application User : CDS Oracle Home : /u01/app/oracle/product/11.2.0/dbhome_1 GoldenGate Home : /u01/app/oracle/product/11gogg
2. GoldenGate Installation on Source Oracle 10gR2
http://www.br8dba.com/installation/
3. GoldenGate Installation on Target Oracle 11gR2
http://www.br8dba.com/installation/
4. Create CDS User (Application user) for testing
On Source (10gR2)
SQL> create user cds identified by cds default tablespace users temporary tablespace temp;User created. SQL> grant connect,resource to cds; Grant succeeded. SQL> create table CDS.A as select * from dba_objects;Table created. SQL> create table CDS.TEST(Name varchar2(10) PRIMARY KEY, Role varchar2(10));Table created. SQL>
On Target (11gR2)
SQL> create user cds identified by cds default tablespace users temporary tablespace temp;User created. SQL>
5. OGG Configuration on Source Oracle 10gR2
a) Set the environment
. oraenv ORACLE_SID = [DB10] ? [oracle@rac1 ~]$ cat 10g.envGG10=/u01/app/oracle/product/10gogg; export GG10 ORACLE_HOME=/u01/app/oracle/product/10g; export ORACLE_HOME ORACLE_SID=DB10 ; export ORACLE_SID PATH=$PATH:/u01/app/oracle/product/10gogg; export PATH LD_LIBRARY_PATH=$ORACLE_HOME/lib:/u01/app/oracle/product/10gogg; export LD_LIBRARY_PATH alias ggsci='cd $GG10; ./ggsci'[oracle@rac1 ~]$ [oracle@rac1 ~]$ . 10g.env
b) Login to Database
[oracle@rac1 ~]$ ggsciOracle GoldenGate Command Interpreter for Oracle Version 11.2.1.0.1 OGGCORE_11.2.1.0.1_PLATFORMS_120423.0230_FBO Linux, x64, 64bit (optimized), Oracle 10g on Apr 23 2012 07:30:46 Copyright (C) 1995, 2012, Oracle and/or its affiliates. All rights reserved. GGSCI (rac1.rajasekhar.com) 1> dblogin userid gate, password gateSuccessfully logged into database. GGSCI (rac1.rajasekhar.com) 2>
c) Configure Manager
GGSCI (rac1.rajasekhar.com) 3> edit param mgr-- Add below entries PORT 15500 DYNAMICPORTLIST 15510-15520 PURGEOLDEXTRACTS /u01/app/oracle/product/10gogg/dirdat/*, USECHECKPOINTSGGSCI (rac1.rajasekhar.com) 4> view param mgrPORT 15500 DYNAMICPORTLIST 15510-15520 PURGEOLDEXTRACTS /u01/app/oracle/product/10gogg/dirdat/*, USECHECKPOINTS GGSCI (rac1.rajasekhar.com) 5>
d) Create Extract Group
GGSCI (rac1.rajasekhar.com) 5> ADD EXTRACT E10G, TRANLOG, BEGIN NOWEXTRACT added. GGSCI (rac1.rajasekhar.com) 6> ADD EXTTRAIL ./dirdat/ea, EXTRACT E10G, MEGABYTES 50EXTTRAIL added. GGSCI (rac1.rajasekhar.com) 7> edit param E10G-- Add below entriesEXTRACT E10G EXTTRAIL ./dirdat/ea USERID gate, PASSWORD gate TABLE CDS.*;GGSCI (rac1.rajasekhar.com) 8> view param e10gEXTRACT E10G EXTTRAIL ./dirdat/ea USERID gate, PASSWORD gate TABLE CDS.*; GGSCI (rac1.rajasekhar.com) 9>
e) Create Pump Group
GGSCI (rac1.rajasekhar.com) 9> ADD EXTRACT P10G, EXTTRAILSOURCE ./dirdat/ea EXTRACT added. GGSCI (rac1.rajasekhar.com) 10> ADD RMTTRAIL ./dirdat/pa, EXTRACT P10G, MEGABYTES 50RMTTRAIL added. GGSCI (rac1.rajasekhar.com) 11> edit param p10g-- Add below entriesEXTRACT P10G RMTHOST 192.168.2.101, MGRPORT 15000 USERID gate, password gate RMTTRAIL ./dirdat/pa PASSTHRU TABLE CDS.*;GGSCI (rac1.rajasekhar.com) 12> view param p10gEXTRACT P10G RMTHOST 192.168.2.101, MGRPORT 15000 USERID gate, password gate RMTTRAIL ./dirdat/pa PASSTHRU TABLE CDS.*; GGSCI (rac1.rajasekhar.com) 13>
f) Add supplemental logging
GGSCI (rac1.rajasekhar.com) 13> ADD TRANDATA CDS.*2016-11-26 21:32:37 WARNING OGG-00869 No unique key is defined for table 'A'. All viable columns will be used to represent the key, but may not guarantee uniqueness. KEYCOLS may be used to define the key.Logging of supplemental redo data enabled for table CDS.A.Logging of supplemental redo data enabled for table CDS.TEST.GGSCI (rac1.rajasekhar.com) 14>
6. OGG Configuration on Target Oracle 11gR2
a) Set the environment
[oracle@rac1 ~]$ . oraenv ORACLE_SID = [oracle] ? DB11 [oracle@rac1 ~]$ [oracle@rac1 ~]$ cat 11g.envGG11=/u01/app/oracle/product/11gogg; export GG11 ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1; export ORACLE_HOME ORACLE_SID=DB11 ; export ORACLE_SID PATH=$PATH:/u01/app/oracle/product/11gogg; export PATH LD_LIBRARY_PATH=$ORACLE_HOME/lib:/u01/app/oracle/product/11gogg; export LD_LIBRARY_PATH alias ggsci='cd $GG11; ./ggsci'[oracle@rac1 ~]$ [oracle@rac1 ~]$ . 11g.env
b) Login to Database
[oracle@rac1 ~]$ ggsciOracle GoldenGate Command Interpreter for Oracle Version 11.2.1.0.5_01 16224002 OGGCORE_11.2.1.0.6_PLATFORMS_130205.0600 Linux, x64, 64bit (optimized), Oracle 11g on Feb 5 2013 08:11:55 Copyright (C) 1995, 2013, Oracle and/or its affiliates. All rights reserved. GGSCI (rac1.rajasekhar.com) 1> dblogin userid gate, password gate Successfully logged into database. GGSCI (rac1.rajasekhar.com) 2>
c) Configure Manager
GGSCI (rac1.rajasekhar.com) 2> info allProgram Status Group Lag at Chkpt Time Since Chkpt MANAGER STOPPED GGSCI (rac1.rajasekhar.com) 3> edit param mgr-- Add below entry PORT 15000 DYNAMICPORTLIST 15010-15020 PURGEOLDEXTRACTS ./dirdat/*, USECHECKPOINTSGGSCI (rac1.rajasekhar.com) 4> view param mgrPORT 15000 DYNAMICPORTLIST 15010-15020 PURGEOLDEXTRACTS ./dirdat/*, USECHECKPOINTS GGSCI (rac1.rajasekhar.com) 5>
d) Set up the Checkpoint table
i) Create a GLOBALS file
GGSCI (rac1.rajasekhar.com) 6> EDIT PARAMS ./GLOBALS-- Add below entriesGGSCHEMA GATE ENABLEMONITORING CHECKPOINTTABLE GATE.CHECKPOINTGGSCI (rac1.rajasekhar.com) 7> sh cat ./GLOBALSGGSCHEMA GATE ENABLEMONITORING CHECKPOINTTABLE GATE.CHECKPOINT GGSCI (rac1.rajasekhar.com) 8>
ii) Activate the GLOBALS parameters
For the GLOBALS configuration to take effect, you must exit the session in which the changes were made. Execute the following command to exit GGSCI.GGSCI (rac1.rajasekhar.com) 8> exit[oracle@rac1 11gogg]$
iii) Add a Replicat checkpoint table
[oracle@rac1 11gogg]$ ggsciOracle GoldenGate Command Interpreter for Oracle Version 11.2.1.0.5_01 16224002 OGGCORE_11.2.1.0.6_PLATFORMS_130205.0600 Linux, x64, 64bit (optimized), Oracle 11g on Feb 5 2013 08:11:55 Copyright (C) 1995, 2013, Oracle and/or its affiliates. All rights reserved. GGSCI (rac1.rajasekhar.com) 1> dblogin userid gate, password gateSuccessfully logged into database. GGSCI (rac1.rajasekhar.com) 2> ADD CHECKPOINTTABLE GATE.CHECKPOINTSuccessfully created checkpoint table GATE.CHECKPOINT. GGSCI (rac1.rajasekhar.com) 3>
7) Create the Replicat Group
GGSCI (rac1.rajasekhar.com) 4> ADD REPLICAT R11G, EXTTRAIL ./dirdat/pa,checkpointtable gate.checkpointREPLICAT added. GGSCI (rac1.rajasekhar.com) 5> edit param r11g-- Add below REPLICAT R11G ASSUMETARGETDEFS userid gate, password gate DISCARDFILE ./dirout/receiver.dsc, purge MAP CDS.*, TARGET CDS.*;GGSCI (rac1.rajasekhar.com) 6> view param r11gREPLICAT R11G ASSUMETARGETDEFS userid gate, password gate DISCARDFILE ./dirout/receiver.dsc, purge MAP CDS.*, TARGET CDS.*;-- The ASSUMETARGETDEFS statement means that we are assuming both source and target table structure is same.
8. On Source Start Manager, Extract and Pump
GGSCI (rac1.rajasekhar.com) 14> info allProgram Status Group Lag at Chkpt Time Since Chkpt MANAGER STOPPED EXTRACT STOPPED E10G 00:00:00 00:38:06 EXTRACT STOPPED P10G 00:00:00 00:32:34 GGSCI (rac1.rajasekhar.com) 15> start mgrManager started. GGSCI (rac1.rajasekhar.com) 16> start extract e10gSending START request to MANAGER ... EXTRACT E10G starting GGSCI (rac1.rajasekhar.com) 17> start extract p10gSending START request to MANAGER ... EXTRACT P10G starting GGSCI (rac1.rajasekhar.com) 18> info allProgram Status Group Lag at Chkpt Time Since ChkptMANAGER RUNNINGEXTRACT RUNNING E10G 00:00:00 00:00:03EXTRACT RUNNING P10G 00:00:00 00:38:49 GGSCI (rac1.rajasekhar.com) 19>
9. On Target start the Manager ONLY
GGSCI (rac1.rajasekhar.com) 8> info allProgram Status Group Lag at Chkpt Time Since Chkpt MANAGER STOPPED JAGENT STOPPED REPLICAT STOPPED R11G 00:00:00 00:14:36 GGSCI (rac1.rajasekhar.com) 9> start mgrManager started. GGSCI (rac1.rajasekhar.com) 10> info mgrManager is running (IP port rac1.rajasekhar.com.15000). GGSCI (rac1.rajasekhar.com) 11> info all Program Status Group Lag at Chkpt Time Since ChkptMANAGER RUNNINGJAGENT STOPPED REPLICAT STOPPED R11G 00:00:00 00:15:11 GGSCI (rac1.rajasekhar.com) 12>
10. Export data from source Oracle 10gR2
Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options SQL> SELECT DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER FROM DUAL;GET_SYSTEM_CHANGE_NUMBER ------------------------ 468487 <--- Please note thisSQL> SQL> grant execute on DBMS_FLASHBACK to CDS;Grant succeeded. SQL> exit Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options [oracle@rac1 ~]$ [oracle@rac1 ~]$ expdp \'/ as sysdba\' DIRECTORY=DATA_PUMP_DIR SCHEMAS=CDS dumpfile=CDS.dmp logfile=cds.log FLASHBACK_SCN=468487Export: Release 10.2.0.5.0 - 64bit Production on Saturday, 26 November, 2016 22:28:56 Copyright (c) 2003, 2007, Oracle. All rights reserved. Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options FLASHBACK automatically enabled to preserve database integrity. Starting "SYS"."SYS_EXPORT_SCHEMA_01": "/******** AS SYSDBA" DIRECTORY=DATA_PUMP_DIR SCHEMAS=CDS dumpfile=CDS.dmp logfile=cds.log FLASHBACK_SCN=468487 Estimate in progress using BLOCKS method... Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA Total estimation using BLOCKS method: 6 MB Processing object type SCHEMA_EXPORT/USER Processing object type SCHEMA_EXPORT/SYSTEM_GRANT Processing object type SCHEMA_EXPORT/ROLE_GRANT Processing object type SCHEMA_EXPORT/DEFAULT_ROLE Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA Processing object type SCHEMA_EXPORT/TABLE/TABLE Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT . . exported "CDS"."A" 4.720 MB 50605 rows <---. . exported "CDS"."TEST" 0 KB 0 rows <---Master table "SYS"."SYS_EXPORT_SCHEMA_01" successfully loaded/unloaded ****************************************************************************** Dump file set for SYS.SYS_EXPORT_SCHEMA_01 is: /u01/app/oracle/product/10g/admin/DB10/dpdump/CDS.dmpJob "SYS"."SYS_EXPORT_SCHEMA_01" successfully completed at 22:29:10 [oracle@rac1 ~]$
11. Transfer the dumpfile to 11g DATA_PUMP_DIR
[oracle@rac1 ~]$ cd /u01/app/oracle/product/10g/admin/DB10/dpdump/[oracle@rac1 dpdump]$ cp CDS.dmp /u01/app/oracle/admin/DB11/dpdump/[oracle@rac1 dpdump]$
12. Generate data on source Oracle 10gR2 (After Export)
SQL> conn cds/cds;Connected. SQL> insert into test values ('&a','&b');Enter value for a: RAJ Enter value for b: DBA old 1: insert into test values ('&a','&b') new 1: insert into test values ('RAJ','DBA') 1 row created. SQL> / Enter value for a: SUGI Enter value for b: DBA old 1: insert into test values ('&a','&b') new 1: insert into test values ('SUGI','DBA') 1 row created. SQL> / Enter value for a: TEJU Enter value for b: DBA old 1: insert into test values ('&a','&b') new 1: insert into test values ('TEJU','DBA') 1 row created. SQL> / Enter value for a: VIJAY Enter value for b: DBA old 1: insert into test values ('&a','&b') new 1: insert into test values ('VIJAY','DBA') 1 row created. SQL> SQL> insert into test values ('&a','&b'); Enter value for a: SATYA Enter value for b: DBA old 1: insert into test values ('&a','&b') new 1: insert into test values ('SATYA','DBA') 1 row created. SQL> / Enter value for a: MOHAN Enter value for b: DBA old 1: insert into test values ('&a','&b') new 1: insert into test values ('MOHAN','DBA') 1 row created. SQL> / Enter value for a: AMITH Enter value for b: DBA old 1: insert into test values ('&a','&b') new 1: insert into test values ('AMITH','DBA') 1 row created. SQL> / Enter value for a: PAVAN Enter value for b: DBA old 1: insert into test values ('&a','&b') new 1: insert into test values ('PAVAN','DBA') 1 row created. SQL> / Enter value for a: SARAVANA Enter value for b: DBA old 1: insert into test values ('&a','&b') new 1: insert into test values ('SARAVANA','DBA') 1 row created. SQL> / Enter value for a: PREM Enter value for b: DBA old 1: insert into test values ('&a','&b') new 1: insert into test values ('PREM','DBA') 1 row created. SQL> COMMIT; Commit complete. SQL> select count(*) from test; COUNT(*) ---------- 10 SQL> select * from test;NAME ROLE ---------- ---------- RAJ DBA SUGI DBA TEJU DBA VIJAY DBA SATYA DBA MOHAN DBA AMITH DBA PAVAN DBA SARAVANA DBA PREM DBA 10 rows selected. SQL> GGSCI (rac1.rajasekhar.com) 19> STATS E10G, TOTALSending STATS request to EXTRACT E10G ... Start of Statistics at 2016-11-26 22:45:02. Output to ./dirdat/ea: Extracting from CDS.TEST to CDS.TEST: *** Total statistics since 2016-11-26 22:38:48 ***Total inserts 10.00Total updates 0.00 Total deletes 0.00 Total discards 0.00 Total operations 10.00 End of Statistics. GGSCI (rac1.rajasekhar.com) 20>
13. Import Data and Start Replicat on Target Database 11gR2
[oracle@rac1 ~]$ . oraenv ORACLE_SID = [DB11] ? [oracle@rac1 ~]$ [oracle@rac1 ~]$ impdp \'/ as sysdba\' DIRECTORY=DATA_PUMP_DIR SCHEMAS=CDS dumpfile=CDS.dmp logfile=imp_cds.logImport: Release 11.2.0.4.0 - Production on Sat Nov 26 22:43:26 2016 Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options Master table "SYS"."SYS_IMPORT_SCHEMA_01" successfully loaded/unloaded Starting "SYS"."SYS_IMPORT_SCHEMA_01": "/******** AS SYSDBA" DIRECTORY=DATA_PUMP_DIR SCHEMAS=CDS dumpfile=CDS.dmp logfile=imp_cds.log Processing object type SCHEMA_EXPORT/USER ORA-31684: Object type USER:"CDS" already exists Processing object type SCHEMA_EXPORT/SYSTEM_GRANT Processing object type SCHEMA_EXPORT/ROLE_GRANT Processing object type SCHEMA_EXPORT/DEFAULT_ROLE Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA Processing object type SCHEMA_EXPORT/TABLE/TABLE Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA . . imported "CDS"."A" 4.720 MB 50605 rows <-----. . imported "CDS"."TEST" 0 KB 0 rows <----Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT Job "SYS"."SYS_IMPORT_SCHEMA_01" completed with 1 error(s) at Sat Nov 26 22:43:36 2016 elapsed 0 00:00:07 [oracle@rac1 ~]$ SQL> conn cds/cds; Connected. SQL> select count(*) from test; COUNT(*) ---------- 0 <-----SQL>*** Note in GGSCI, the Oracle SCN number is AFTERCSN, not AFTERSCN.*** Start the REPLICAT only after successful of import.GGSCI (rac1.rajasekhar.com) 11> info allProgram Status Group Lag at Chkpt Time Since Chkpt MANAGER RUNNING JAGENT STOPPED REPLICAT STOPPED R11G 00:00:00 00:15:11 GGSCI (rac1.rajasekhar.com) 12> start r11g, aftercsn 468487Sending START request to MANAGER ... REPLICAT R11G starting GGSCI (rac1.rajasekhar.com) 13> info allProgram Status Group Lag at Chkpt Time Since Chkpt MANAGER RUNNINGJAGENT STOPPED REPLICAT RUNNING R11G 00:00:00 00:00:05 GGSCI (rac1.rajasekhar.com) 14> GGSCI (rac1.rajasekhar.com) 14> STATS R11G, TOTALSending STATS request to REPLICAT R11G ... No active replication maps. GGSCI (rac1.rajasekhar.com) 15> STATS R11G, TOTAL Sending STATS request to REPLICAT R11G ... Start of Statistics at 2016-11-26 22:52:00. Replicating from CDS.TEST to CDS.TEST: *** Total statistics since 2016-11-26 22:51:49 ***Total inserts 10.00Total updates 0.00 Total deletes 0.00 Total discards 0.00 Total operations 10.00 End of Statistics. GGSCI (rac1.rajasekhar.com) 16> SQL> conn cds/cds; Connected. SQL> select count(*) from test; COUNT(*) ----------10 <----SQL> select * from test;NAME ROLE ---------- ---------- RAJ DBA SUGI DBA TEJU DBA VIJAY DBA SATYA DBA MOHAN DBA AMITH DBA PAVAN DBA SARAVANA DBA PREM DBA 10 rows selected. SQL>
14. Test and Verify the Results
INSERT OPERATION
a1) Execute INSERT again on the Source Oracle Database 10gR2
SQL> select name, open_mode from v$database; NAME OPEN_MODE --------- ----------DB10 READ WRITE SQL> conn cds/cds;Connected. SQL> insert into TEST values ('&a','&b');Enter value for a: RAJKUMAREnter value for b: MANAGER old 1: insert into TEST values ('&a','&b') new 1: insert into TEST values ('RAJKUMAR','MANAGER') 1 row created. SQL> / Enter value for a: SATISHEnter value for b: MANAGER old 1: insert into TEST values ('&a','&b') new 1: insert into TEST values ('SATISH','MANAGER') 1 row created. SQL> insert into TEST values ('&a','&b'); Enter value for a: LOKESHEnter value for b: DBA old 1: insert into TEST values ('&a','&b') new 1: insert into TEST values ('LOKESH','DBA') 1 row created. SQL> COMMIT; Commit complete. SQL> select * from test; NAME ROLE ---------- ---------- RAJ DBA SUGI DBA TEJU DBA VIJAY DBA SATYA DBA MOHAN DBA AMITH DBA PAVAN DBA SARAVANA DBA PREM DBA NAME ROLE ---------- ----------RAJKUMAR MANAGER <--- SATISH MANAGER <--- LOKESH DBA <---13 rows selected. SQL>
a2) Verify Insert Changes on Target Oracle Database 11gR2
SQL> select name, open_mode from v$database; NAME OPEN_MODE --------- --------------------DB11 READ WRITE SQL> conn cds/cds;Connected. SQL> set pages 13 SQL> select * from test; NAME ROLE ---------- ---------- RAJ DBA SUGI DBA TEJU DBA VIJAY DBA SATYA DBA MOHAN DBA AMITH DBA PAVAN DBA SARAVANA DBA PREM DBA NAME ROLE ---------- ----------RAJKUMAR MANAGER SATISH MANAGER LOKESH DBA13 rows selected. SQL>
UPDATE OPERATION
b1) Execute update on the Source Oracle Database 10gR2
SQL> update test set role='PSE' where name='VIJAY';1 row updated. SQL> update test set role='PSE' where name='SATYA';1 row updated. SQL> update test set role='PSE' where name='PAVAN';1 row updated. SQL> commit; Commit complete. SQL> set pages 100 SQL> select * from test; NAME ROLE ---------- ---------- RAJ DBA SUGI DBA TEJU DBAVIJAY PSE SATYA PSEMOHAN DBA AMITH DBAPAVAN PSESARAVANA DBA PREM DBA RAJKUMAR MANAGER SATISH MANAGER LOKESH DBA 13 rows selected. SQL>
b2) Verify Update Changes on Target Oracle Database 11gR2
SQL> select * from test; NAME ROLE ---------- ---------- RAJ DBA SUGI DBA TEJU DBAVIJAY PSE SATYA PSEMOHAN DBA AMITH DBAPAVAN PSESARAVANA DBA PREM DBA RAJKUMAR MANAGER SATISH MANAGER LOKESH DBA13 rows selected. <------SQL>
DELETE OPERATION
c1) Execute Delete on the Source Oracle Database 10gR2
SQL> delete from test where name='SUGI';1 row deleted. SQL> delete from test where name='TEJU';1 row deleted. SQL> delete from test where name='RAJ';1 row deleted. SQL> commit; Commit complete. SQL> select * from test; NAME ROLE ---------- ---------- VIJAY PSE SATYA PSE MOHAN DBA AMITH DBA PAVAN PSE SARAVANA DBA PREM DBA RAJKUMAR MANAGER SATISH MANAGER LOKESH DBA10 rows selected. <--- 3 rows deletedSQL>
c2) Verify Delete Changes on Target Oracle Database 11gR2
SQL> select * from test; NAME ROLE ---------- ---------- VIJAY PSE SATYA PSE MOHAN DBA AMITH DBA PAVAN PSE SARAVANA DBA PREM DBA RAJKUMAR MANAGER SATISH MANAGER LOKESH DBA 10 rows selected. SQL>
15. Verify using GGSCI
on Source Oracle 10gR2
GGSCI (rac1.rajasekhar.com) 26> STATS E10G, TOTALSending STATS request to EXTRACT E10G ... Start of Statistics at 2016-11-26 23:21:30. Output to ./dirdat/ea: Extracting from CDS.TEST to CDS.TEST: *** Total statistics since 2016-11-26 22:38:48 *** Total inserts 13.00 <--- Total updates 3.00 <--- Total deletes 3.00 <---Total discards 0.00 Total operations 19.00 End of Statistics. GGSCI (rac1.rajasekhar.com) 27>
on Target Oracle 11gR2
GGSCI (rac1.rajasekhar.com) 16> STATS R11G, TOTALSending STATS request to REPLICAT R11G ... Start of Statistics at 2016-11-26 23:21:14. Replicating from CDS.TEST to CDS.TEST: *** Total statistics since 2016-11-26 22:51:49 ***Total inserts 13.00 <--- Total updates 3.00 <---Total deletes 3.00 <---Total discards 0.00 Total operations 19.00 End of Statistics. GGSCI (rac1.rajasekhar.com) 17>
It’s working !!!
Caution: Your use of any information or materials on this website is entirely at your own risk. It is provided for educational purposes only. It has been tested internally, however, we do not guarantee that it will work for you. Ensure that you run it in your test environment before using.
Thank you,
Rajasekhar Amudala
4 thoughts on “Zero Downtime Migration”
Mushraff Shaik
December 3, 2016 at 2:36 pm
Excellent !!!
Reply
Rajesh
January 5, 2017 at 10:17 am
Excellent RAJASEKHAR.
Very knowledgeable&informative ..Reply
Krishna Pradeep Addada
March 3, 2019 at 2:15 am
Excellent article. A question. We have a requirement to migrate from Linux to AIX and upgrade and from 12c to 18c in same window with minimum downtime (ofcourse :)). DO you see any reason why this same approach cannot be used for that.Any pointers are greatly appreciated.
Reply
Satya
March 22, 2019 at 12:51 pm
Thank you very much. Great article.
– Satya
Reply
Leave a Reply
Your email address will not be published. Required fields are marked *
Comment
Name *
Email *
Website
Notify me of new posts by email.