首页 > 代码库 > Zero Downtime Upgrade of Oracle 10g to Oracle 11g Using GoldenGate — 2

Zero Downtime Upgrade of Oracle 10g to Oracle 11g Using GoldenGate — 2

Prepare 10g Database for OGG

Create GGS and GGS_MON Database Users

SQL> create tablespace ggs_tbs datafile ‘/u01/app/oracle/oradata/zwc/gg_tbs01.dbf‘ size 100M;

Tablespace created.

SQL> create user ggs identified by ggs default tablespace ggs_tbs temporary tablespace temp;

User created.

SQL> grant dba to ggs;

Grant succeeded.

SQL> create user ggs_mon identified by ggs_mon default tablespace ggs_tbs temporary tablespace temp;

User created.

SQL> grant connect,resource to ggs_mon;

Grant succeeded.

 

Enable Database Level Supplemental Logging

SQL> select name,supplemental_log_data_min from v$database;

NAME      SUPPLEME
——— ——–
ZWC       NO

SQL> alter database add supplemental log data;

Database altered.

SQL> alter system switch logfile;

System altered.

SQL> select name,supplemental_log_data_min from v$database;

NAME      SUPPLEME
——— ——–
ZWC       YES

 

Enable Force Logging

SQL> select force_logging from v$database;

FOR

NO

SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.

Total System Global Area  281018368 bytes
Fixed Size                  2083336 bytes
Variable Size             155190776 bytes
Database Buffers          117440512 bytes
Redo Buffers                6303744 bytes
Database mounted.
SQL> alter database force logging;

Database altered.

SQL> alter database open;

Database altered.

SQL> select force_logging from v$database;

FOR

YES

 

Check Table-Level Supplemental Logging

SQL> select t.owner,
  2         t.tbl_cnt,
  3         s.sup_log_grp_cnt,
  4         t.tbl_cnt – s.sup_log_grp_cnt "Diff"
  5    from (select owner, count(*) tbl_cnt from dba_tables group by owner) t,
  6         (select owner, count(*) sup_log_grp_cnt
  7            from dba_log_groups
  8           group by owner) s
  9   where t.owner = s.owner(+)
 10     and t.owner in (‘HR‘, ‘OE‘, ‘PM‘);

OWNER    TBL_CNT SUP_LOG_GRP_CNT       Diff
—– ———- ————— ———-
HR             7
PM             2
OE            12

 

If you are planning to use sqlplus then you can use commands like:

alter database <table_name> add supplemental log data (all) columns;

alter database <table_name> add supplemental log data (primary key) columns;

For this demo,we will use Oracle GoldenGate command interface to add table level supplemental logging.The command from ggsci interface is "add trandata <table_name>".

[oracle@zwc ggs]$ sqlplus ggs

SQL*Plus: Release 10.2.0.4.0 – Production on Thu Jun 5 22:01:53 2014

Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.

Enter password: 

Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 – 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> spool add_trandata.oby
SQL> set linesize 150 pagesize 0 feedback off
SQL> spool add_missing_trandata.oby
SQL> select ‘add trandata ‘ || t.owner || ‘.‘ || t.table_name stmt
  2    from (select owner, table_name from dba_tables) t,
  3         (select owner, table_name from dba_log_groups) s
  4   where t.owner = s.owner(+)
  5     and t.table_name = s.table_name(+)
  6     and s.table_name is null
  7     and t.owner in (‘HR‘, ‘OE‘, ‘PM‘);
add trandata HR.REGIONS
add trandata HR.LOCATIONS
add trandata HR.DEPARTMENTS
add trandata HR.JOBS
add trandata OE.WAREHOUSES
add trandata OE.ORDER_ITEMS
add trandata OE.ORDERS
add trandata OE.PRODUCT_INFORMATION
add trandata OE.PROMOTIONS
add trandata OE.SYS_IOT_OVER_52810
add trandata OE.SYS_IOT_OVER_52815
add trandata OE.PRODUCT_REF_LIST_NESTEDTAB
add trandata OE.SUBCATEGORY_REF_LIST_NESTEDTAB
add trandata HR.COUNTRIES
add trandata PM.ONLINE_MEDIA
add trandata PM.PRINT_MEDIA
add trandata OE.CUSTOMERS
add trandata HR.JOB_HISTORY
add trandata OE.PRODUCT_DESCRIPTIONS
add trandata OE.INVENTORIES
add trandata HR.EMPLOYEES
SQL> spool off

 

[oracle@zwc ggs]$ ggsci 

Oracle GoldenGate Command Interpreter for Oracle
Version 11.2.1.0.6 16211226 OGGCORE_11.2.1.0.6_PLATFORMS_130418.1829_FBO
Linux, x64, 64bit (optimized), Oracle 10g on Apr 18 2013 22:43:23

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

GGSCI (zwc) 1> dblogin userid ggs password ggs
Successfully logged into database.

GGSCI (zwc) 2> obey ./diroby/add_missing_trandata.oby

GGSCI (zwc) 3> add trandata HR.REGIONS                                                                                                                               

Logging of supplemental redo data enabled for table HR.REGIONS.

GGSCI (zwc) 4> add trandata HR.LOCATIONS                                                                                                                             

Logging of supplemental redo data enabled for table HR.LOCATIONS.

GGSCI (zwc) 5> add trandata HR.DEPARTMENTS                                                                                                                           

Logging of supplemental redo data enabled for table HR.DEPARTMENTS.

GGSCI (zwc) 6> add trandata HR.JOBS                                                                                                                                  

Logging of supplemental redo data enabled for table HR.JOBS.

GGSCI (zwc) 7> add trandata OE.WAREHOUSES    

 

SQL> select t.owner,
  2         t.tbl_cnt,
  3         s.sup_log_grp_cnt,
  4         t.tbl_cnt – s.sup_log_grp_cnt "Diff"
  5    from (select owner, count(*) tbl_cnt from dba_tables group by owner) t,
  6         (select owner, count(*) sup_log_grp_cnt
  7            from dba_log_groups
  8           group by owner) s
  9   where t.owner = s.owner(+)
 10     and t.owner in (‘HR‘, ‘OE‘, ‘PM‘);

OWNER                             TBL_CNT SUP_LOG_GRP_CNT       Diff
—————————— ———- ————— ———-
HR                                      7               7          0
OE                                     12               8          4
PM                                      2               2          0

 

Create Tables for Heartbeat

SQL> create table ggs_mon.ggs_heartbeat(id number,ts date);

Table created.

SQL> insert into ggs_mon.ggs_heartbeat values(1,sysdate);

1 row created.

SQL> commit;

Commit complete.

SQL> create table ggs_mon.ggs_lagtime
  2  (id number,
  3  ts date,
  4  committime date,
  5  groupname varchar2(8),
  6  host varchar2(60),
  7  local_insert_time date);

Table created.