1. 程式人生 > 實用技巧 >【Oracle Database】Oracle GoldenGate (single-single)

【Oracle Database】Oracle GoldenGate (single-single)

源端資料庫配置
[root@wallet01 ~]# su - oracle [oracle@wallet01 ~]$ sqlplus / as sysdba SQL> create tablespace goldengate datafile '/home/oracle/oradata/wallet/ogg01.dbf' size 1024M; Tablespace created. SQL> create user ggs identified by ggs default tablespace goldengate; User created. SQL> grant dba to ggs; Grant succeeded. SQL> select log_mode from v$database; LOG_MODE ------------------------------------ ARCHIVELOG SQL> alter database force logging; Database altered. SQL> select force_logging from v$database; FORCE_LOGGING ------------------------------ YES SQL> alter database add supplemental log data; Database altered. SQL> col supplemental_log_data_min for a30 SQL> select supplemental_log_data_min from v$database; SUPPLEMENTAL_LOG_DATA_MIN ------------------------------ YES SQL> alter system set enable_goldengate_replication=true; SQL> alter system archive log current; 源端安裝OGG [oracle@wallet01 ~]$ vi .bash_profile export OGG_HOME=/home/ogg export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib export PATH=$OGG_HOME:$PATH [oracle@wallet01 ~]$ source .bash_profile [oracle@wallet01 ~]$ mkdir -p /home/ogg [oracle@wallet01 ~]$ unzip fbo_ggs_Linux_x64_shiphome.zip [oracle@wallet01 ~]$ cd fbo_ggs_Linux_x64_shiphome/Disk1 [oracle@wallet01 Disk1]$ ./runInstaller [oracle@wallet01 ~]$ cd /home/ogg [oracle@wallet01 ogg]$ ./ggsci Oracle GoldenGate Command Interpreter for Oracle Version 12.2.0.1.1 OGGCORE_12.2.0.1.0_PLATFORMS_151211.1401_FBO Linux, x64, 64bit (optimized), Oracle 11g on Dec 12 2015 00:54:38 Operating system character set identified as UTF-8. Copyright (C) 1995, 2015, Oracle and/or its affiliates. All rights reserved. GGSCI (wallet01) 1> create subdirs Creating subdirectories under current directory /home/ogg Parameter files /home/ogg/dirprm: created Report files /home/ogg/dirrpt: created Checkpoint files /home/ogg/dirchk: created Process status files /home/ogg/dirpcs: created SQL script files /home/ogg/dirsql: created Database definitions files /home/ogg/dirdef: created Extract data files /home/ogg/dirdat: created Temporary files /home/ogg/dirtmp: created Credential store files /home/ogg/dircrd: created Masterkey wallet files /home/ogg/dirwlt: created Dump files /home/ogg/dirdmp: created 源端MANAGER程序組 GGSCI (wallet01) 2> edit params mgr PORT 7839 DYNAMICPORTLIST 7840-7939 AUTORESTART EXTRACT *,RETRIES 5,WAITMINUTES 3 PURGEOLDEXTRACTS ./dirdat/*,USECHECKPOINTS, MINKEEPDAYS 7 LAGREPORTHOURS 1 LAGINFOMINUTES 3 LAGCRITICALMINUTES 10 GGSCI (wallet01) 3> start mgr Manager started. GGSCI (wallet01) 4> info mgr Manager is running (IP port wallet01.7839, Process ID 3243). 源端EXTRACT程序組 GGSCI (wallet01) 5> dblogin userid ggs,password ggs Successfully logged into database. GGSCI (wallet01 as ggs@wallet) 6> add trandata soe.* GGSCI (wallet01 as ggs@wallet) 7> add extract ext_soe, tranlog, begin now EXTRACT added. GGSCI (wallet01 as ggs@wallet) 8> add exttrail ./dirdat/st,extract ext_soe,megabytes 100 EXTTRAIL added. GGSCI (wallet01 as ggs@wallet) 9> edit params ext_soe EXTRACT ext_soe DYNAMICRESOLUTION USERID ggs,PASSWORD ggs EXTTRAIL ./dirdat/st TABLEEXCLUDE SOE.ORDERENTRY_METADATA TABLE SOE.*; GGSCI (wallet01 as ggs@wallet) 10> start ext_soe Sending START request to MANAGER ... EXTRACT EXT_SOE starting GGSCI (wallet01 as ggs@wallet) 11> info ext_soe EXTRACT EXT_SOE Last Started 2017-08-30 13:47 Status RUNNING Checkpoint Lag 00:00:00 (updated 00:00:07 ago) Process ID 4234 Log Read Checkpoint Oracle Redo Logs 2017-08-30 16:58:33 Seqno 59, RBA 211786752 SCN 0.2361582 (2361582) 源端PUMP程序組 GGSCI (wallet01 as ggs@wallet) 12> add extract pmp_soe, exttrailsource ./dirdat/st EXTRACT added. GGSCI (wallet01 as ggs@wallet) 13> add rmttrail ./dirdat/rt,EXTRACT pmp_soe,megabytes 100 RMTTRAIL added. GGSCI (wallet01 as ggs@wallet) 14> edit params pmp_soe EXTRACT pmp_soe PASSTHRU RMTHOST 192.168.1.202, MGRPORT 7839, COMPRESS RMTTRAIL ./dirdat/rt TABLE SOE.*; GGSCI (wallet01 as ggs@wallet) 15> start pmp_soe Sending START request to MANAGER ... EXTRACT PMP_SOE starting GGSCI (wallet01 as ggs@wallet) 16> info pmp_soe EXTRACT PMP_SOE Last Started 2017-08-30 15:22 Status RUNNING Checkpoint Lag 00:00:00 (updated 00:00:08 ago) Process ID 4844 Log Read Checkpoint File ./dirdat/st000000000 2017-08-30 16:20:08.000000 RBA 47753236 GGSCI (wallet01 as ggs@wallet) 17> info all Program Status Group Lag at Chkpt Time Since Chkpt MANAGER RUNNING EXTRACT RUNNING EXT_SOE 00:00:00 00:00:01 EXTRACT RUNNING PMP_SOE 00:00:00 00:00:06 源端備份資料庫 [oracle@wallet01 ~]$ mkdir /home/oracle/backup [oracle@wallet01 ~]$ rman target / RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON; RMAN> CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/home/oracle/backup/%F'; RMAN> RUN { BACKUP INCREMENTAL LEVEL=0 TAG 'FULL_BACKUP' DATABASE FORMAT '/home/oracle/backup//soe_full_incr_%s_%p_%T' PLUS ARCHIVELOG FORMAT '/home/oracle/backup/soe_arch_%s_%p_%T' delete all input; DELETE NOPROMPT OBSOLETE; CROSSCHECK BACKUP; DELETE NOPROMPT EXPIRED BACKUP; } [oracle@wallet01 ~]$ sqlplus / as sysdba SQL> select to_char(current_scn) from v$database; TO_CHAR(CURRENT_SCN) ---------------------------------------- 1032191 SQL> alter system archive log current ; System altered. SQL> alter system archive log current ; System altered. SQL> alter system archive log current ; System altered. [oracle@wallet01 ~]$ rman target / RMAN> backup archivelog all FORMAT '/home/oracle/backup/soe_arch_%s_%p_%T'; [oracle@wallet01 ~]$ cd backup [oracle@wallet01 backup]$ scp * 192.168.1.202:/home/oracle/backup/ [oracle@wallet01 ~]$ cd $ORACLE_HOME/dbs [oracle@wallet01 dbs]$ scp orapwwallet 192.168.1.202:/home/database/11.2.0.4/product/dbs

目標端恢復資料庫
[oracle@wallet02 ~]$ mkdir -p /home/oracle/admin/wallet/adump
[oracle@wallet02 ~]$ mkdir -p /home/oracle/oradata/wallet
[oracle@wallet02 ~]$ mkdir -p /home/oracle/fast_recovery_area/wallet
[oracle@wallet02 ~]$ mkdir -p /home/oracle/archive
[oracle@wallet02 ~]$ rman target /
RMAN> startup nomount
startup failed: ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file '/home/oracle/product/11.2.0/db_1/dbs/initwallet.ora'
starting Oracle instance without parameter file for retrieval of spfile
Oracle instance started
Total System Global Area    1068937216 bytes
Fixed Size                     2260088 bytes
Variable Size                281019272 bytes
Database Buffers             780140544 bytes
Redo Buffers                   5517312 bytes

RMAN> set DBID=1085678857
RMAN> run{
 set CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/home/oracle/backup/%F';
 restore spfile from autobackup;
 }
 
RMAN> shutdown immediate
RMAN> startup nomount
Total System Global Area    1068937216 bytes
Fixed Size                     2260088 bytes
Variable Size                322962312 bytes
Database Buffers             687865856 bytes
Redo Buffers                  55848960 bytes

RMAN> set DBID=1085678857
executing command: SET DBID
RMAN> run{
2> set CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/home/oracle/backup/%F';
3> restore controlfile from autobackup;
4> }

RMAN> alter database mount;

RMAN> run{
 set until scn 1032191;
 restore database;
 recover database;
 }
 
RMAN> alter database open resetlogs;

目標端資料庫設定
SQL> select 'alter table '||owner||'.'||table_name||' disable constraint '||constraint_name||';'
 from dba_constraints
 where constraint_type in ('R') and
 owner in('SOE')
 order by status,owner;
'ALTERTABLE'||OWNER||'.'||TABLE_NAME||'DISABLECONSTRAINT'||CONSTRAINT_NAME||';'
--------------------------------------------------------------------------------
alter table SOE.ADDRESSES disable constraint ADD_CUST_FK;
alter table SOE.ORDERS disable constraint ORDERS_CUSTOMER_ID_FK;
alter table SOE.ORDER_ITEMS disable constraint ORDER_ITEMS_PRODUCT_ID_FK;
alter table SOE.INVENTORIES disable constraint INVENTORIES_PRODUCT_ID_FK;
alter table SOE.ORDER_ITEMS disable constraint ORDER_ITEMS_ORDER_ID_FK;
alter table SOE.INVENTORIES disable constraint INVENTORIES_WAREHOUSES_FK;
6 rows selected.

SQL> select 'alter trigger '||owner||'.'||trigger_name||' disable;' from dba_triggers where owner in('SOE') order by status,owner;
no rows selected

SQL>  alter system set job_queue_processes=0 scope=both;
System altered.

SQL> drop user ggs cascade;
User dropped.

SQL> create user ggt identified by ggt default tablespace goldengate;
User created.

SQL> grant dba to ggt;
Grant succeeded.

目標端安裝OGG
[oracle@wallet02 ~]$ vi .bash_profile
export OGG_HOME=/home/ogg
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export PATH=$OGG_HOME:$PATH
[oracle@wallet02 ~]$ source .bash_profile

[oracle@wallet02 ~]$ mkdir -p /home/ogg
[oracle@wallet02 ~]$ unzip fbo_ggs_Linux_x64_shiphome.zip
[oracle@wallet02 ~]$ cd fbo_ggs_Linux_x64_shiphome/Disk1
[oracle@wallet02 Disk1]$ ./runInstaller 

[oracle@wallet02 Disk1]$ cd /home/ogg
[oracle@wallet02 ogg]$ ./ggsci
GGSCI (wallet02) 1> create subdirs

Creating subdirectories under current directory /home/ogg

Parameter files                /home/ogg/dirprm: created
Report files                   /home/ogg/dirrpt: created
Checkpoint files               /home/ogg/dirchk: created
Process status files           /home/ogg/dirpcs: created
SQL script files               /home/ogg/dirsql: created
Database definitions files     /home/ogg/dirdef: created
Extract data files             /home/ogg/dirdat: created
Temporary files                /home/ogg/dirtmp: created
Credential store files         /home/ogg/dircrd: created
Masterkey wallet files         /home/ogg/dirwlt: created
Dump files                     /home/ogg/dirdmp: created

目標端MANAGER程序組
GGSCI (wallet02) 2> edit params mgr
PORT 7839   
DYNAMICPORTLIST 7840-7939
AUTORESTART EXTRACT *,RETRIES 5,WAITMINUTES 3
PURGEOLDEXTRACTS ./dirdat/*,USECHECKPOINTS, MINKEEPDAYS 7
LAGREPORTHOURS 1
LAGINFOMINUTES 3
LAGCRITICALMINUTES 10

GGSCI (wallet02) 3> start mgr
Manager started.

GGSCI (wallet02) 4> info mgr
Manager is running (IP port wallet02.7839, Process ID 13650).

目標端REPLICAT程序組
GGSCI (wallet02) 5> edit params ./GLOBALS
checkpointtable ggt.chkpt

GGSCI (wallet02) 6> dblogin userid ggt,password ggt
Successfully logged into database.

GGSCI (wallet02 as ggt@wallet) 7> add checkpointtable

No checkpoint table specified. Using GLOBALS specification (ggt.chkpt)...

Successfully created checkpoint table ggt.chkpt.

GGSCI (wallet02 as ggt@wallet) 8> add replicat rep_soe,exttrail ./dirdat/rt
REPLICAT added.

GGSCI (wallet02 as ggt@wallet) 9> edit param rep_soe 
REPLICAT rep_soe
USERID ggt, PASSWORD ggt
REPERROR DEFAULT, ABEND
DISCARDFILE ./dirrpt/rep_soe.dsc,APPEND,MEGABYTES 1024
ASSUMETARGETDEFS
ALLOWNOOPUPDATES
MAP SOE.*, TARGET SOE.*;

GGSCI (wallet02 as ggt@wallet) 10> start replicat rep_soe, aftercsn 1032191

Sending START request to MANAGER ...
REPLICAT REP_SOE starting

GGSCI (wallet02 as ggt@wallet) 11> info rep_soe

REPLICAT   REP_SOE   Last Started 2018-08-04 14:40   Status RUNNING
Checkpoint Lag       00:00:00 (updated 00:00:00 ago)
Process ID           13902
Log Read Checkpoint  File ./dirdat/rt000000000
                     2018-08-04 14:43:08.676383  RBA 42207

GGSCI (wallet02 as ggt@wallet) 12> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING                                           
REPLICAT    RUNNING     REP_SOE     00:00:00      00:00:04

源端OGG監控
GGSCI (wallet01) 1> info ext_soe

EXTRACT    EXT_SOE   Last Started 2018-08-11 14:16   Status RUNNING
Checkpoint Lag       00:00:00 (updated 00:00:09 ago)
Process ID           8491
Log Read Checkpoint  Oracle Redo Logs
                     2018-08-11 14:50:10  Seqno 38, RBA 25028608
                     SCN 0.1085945 (1085945)

GGSCI (wallet01) 2> info pmp_soe

EXTRACT    PMP_SOE   Last Started 2018-08-11 14:16   Status RUNNING
Checkpoint Lag       00:00:00 (updated 00:00:01 ago)
Process ID           8504
Log Read Checkpoint  File ./dirdat/st000000002
                     2018-08-11 14:23:46.000000  RBA 2188582

GGSCI (wallet01) 3> dblogin userid ggs,password ggs
Successfully logged into database.

GGSCI (wallet01 as ggs@wallet) 4> lag ext_soe

Sending GETLAG request to EXTRACT EXT_SOE ...
Last record lag 2 seconds.
At EOF, no more records to process.

GGSCI (wallet01 as ggs@wallet) 5> stats ext_soe,daily,table soe.orders

Sending STATS request to EXTRACT EXT_SOE ...

Start of Statistics at 2018-08-11 14:49:34.

DDL replication statistics (for all trails):

*** Total statistics since extract started     ***
        Operations                                        11.00
        Mapped operations                                  2.00
        Unmapped operations                                7.00
        Other operations                                   2.00
        Excluded operations                                0.00

Output to ./dirdat/st:

Extracting from SOE.ORDERS to SOE.ORDERS:

*** Daily statistics since 2018-08-11 14:16:36 ***
        Total inserts                                    851.00
        Total updates                                    971.00
        Total deletes                                      0.00
        Total discards                                     0.00
        Total operations                                1822.00

End of Statistics.

目標端OGG監控
GGSCI (wallet02) 1> info rep_soe

REPLICAT   REP_SOE   Last Started 2018-08-11 14:21   Status RUNNING
Checkpoint Lag       00:00:00 (updated 00:00:06 ago)
Process ID           1890
Log Read Checkpoint  File ./dirdat/rt000000004
                     2018-08-11 14:23:46.590809  RBA 2188623

GGSCI (wallet02) 2> dblogin userid ggt,password ggt
Successfully logged into database.

GGSCI (wallet02 as ggt@wallet) 3> lag rep_soe

Sending GETLAG request to REPLICAT REP_SOE ...
Last record lag 6 seconds.

GGSCI (wallet02 as ggt@wallet) 4> stats rep_soe,daily,table soe.orders                                                            

Sending STATS request to REPLICAT REP_SOE ...

Start of Statistics at 2018-08-11 14:50:49.

DDL replication statistics:

*** Total statistics since replicat started     ***
        Operations                                        11.00
        Mapped operations                                  1.00
        Unmapped operations                                8.00
        Other operations                                   2.00
        Excluded operations                               10.00
        Errors                                             0.00
        Retried errors                                     0.00
        Discarded errors                                   0.00
        Ignored errors                                     0.00

Replicating from SOE.ORDERS to SOE.ORDERS:

*** Daily statistics since 2018-08-11 14:21:50 ***
        Total inserts                                    851.00
        Total updates                                    971.00
        Total deletes                                      0.00
        Total discards                                     0.00
        Total operations                                1822.00

End of Statistics.