oracle goldengate 參數學習 GETUPDATEBEFORES

文章來源:http://blog.itpub.net/7199859/viewspace-704546

實驗目的
       主要目的有兩個:
  1: 加強goldengate的參數學習 如COMPRESSDELETES | NOCOMPRESSDELETES
    

                             GETUPDATEBEFORES 等等

  2: 用ogg實現交易事務跟蹤,比如業務系統需要實時記錄某些數據的各種變化,很多人可能會用到分析歸檔日誌或trigger,或寫程序等去實現,oracle goldengate同樣也可以實現這個需求。

   以下是實驗過程:

2  
實驗環境

Oracle 10.2.0.1+windows 2003 32 bit 上面建立兩個庫
源端 orcl 實例 用戶paul.
emp_sal表
表結構爲
create table paul.emp_sal
        ( empno  number,
          sal    number(8,2),
          constraint pk_emp_sal primary key(empno) using index
        );

目標端 target 實例 用戶paul.
emp_sal_his 歷史交易跟蹤表
        create table paul.emp_sal_his
        ( empno  number,
          sal    number(8,2),
          before_after varchar2(32),
          deal_date timestamp,
          op_flag   varchar2(32)
         );

3   Oracle GlodenGate for windows安裝

進入以下網站下載oracle glodendate安裝軟件

<
http://www.oracle.com/technology/software/products/goldengate/index.html>
這裏爲32bit for windows平臺下的安裝軟件
GGV18162-01ForOracle10g.zip
直接用unzip解壓到c:\GG目錄下


3.1   創建文件夾

點擊運行cmd,進入到c:\gg目錄
C:\Documents and Settings\Oracle.XP_ONE>cd ..
C:\Documents and Settings>cd ..
C:\>cd gg
C:\gg>ggsci
Oracle GoldenGate Command Interpreter for Oracle
Version
10.4.0.19 Build 002
Windows (optimized), Oracle 10 on Sep 18 2009 15:54:55
Copyright (C) 1995, 2009, Oracle and/or its affiliates.  All rights reserved.
GGSCI (source) 1> create subdirs
Creating subdirectories under current directory C:\gg
Parameter files                C:\gg\dirprm: created
Report files                   C:\gg\dirrpt: created
Checkpoint files               C:\gg\dirchk: created
Process status files           C:\gg\dirpcs: created
SQL script files               C:\gg\dirsql: created
Database definitions files     C:\gg\dirdef: created
Extract data files             C:\gg\dirdat: created
Temporary files                C:\gg\dirtmp: created
Veridata files                 C:\gg\dirver: created
Veridata Lock files            C:\gg\dirver\lock: created
Veridata Out-Of-Sync files     C:\gg\dirver\oos: created
Veridata Out-Of-Sync XML files C:\gg\dirver\oosxml: created
Veridata Parameter files       C:\gg\dirver\params: created
Veridata Report files          C:\gg\dirver\report: created
Veridata Status files          C:\gg\dirver\status: created
Veridata Trace files           C:\gg\dirver\trace: created
Stdout files                   C:\gg\dirout: created


Exit;


3.2   源庫和目標庫都創建goldengate用戶並賦予dba權限,並打開附加日誌

C:\Documents and Settings\Oracle.XP_ONE>s
藍幽水月:22n (00:36:17):
qlplus "/as sysdba"
SQL*Plus: Release 10.2.0.1.0 - Production on Sun Jan 24 00:20:38 2010
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
SQL> create user goldengate identified by goldengate;
User created.
SQL> grant dba,connect,resource to goldengate
Grant succeeded.
SQL> alter database add supplemental log data;
Database altered.
SQL> alter system switch logfile;
System altered.


SQL> exit;
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options


3.3   安裝GlodenGate 管理進程

Install the glodendate manager process
C:\gg>ggsci
Oracle GoldenGate Command Interpreter for Oracle
Version
10.4.0.19 Build 002
Windows (optimized), Oracle 10 on Sep 18 2009 15:54:55
Copyright (C) 1995, 2009, Oracle and/or its affiliates.  All rights reserved.
GGSCI (source) 1> edit params ./GLOBAlS
新建個文本文件輸入以下內容

MGRSERVNAME PAUL,
然後保存
添加管理進程到
windows 服務中,以便隨windows操作系統自動啓動
C:\gg>install addservice addevents
Oracle GoldenGate messages installed successfully.
Service 'PAUL' created.
Install program terminated normally.

         然後檢查windows服務,已經存在paul這個服務了
         PAUL             Automatic              LOCAL SYSTEM

4   源庫配置抽取進程

4.1   啓動mgr進程

cd c:\gg
c:\gg\ggsci
GGSCI (source) 2> edit param mgr
輸入以下文件,然後按保存
--GoldenGate Manager parameter file
port 7809
輸入7809的端口


GGSCI (source) 4> start mgr

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


GGSCI (source) 5> info mgr

Manager is running (IP port source.7809).

可以看到啓動mgr進程成功

4.2  
在源端創建基表

C:\gg>sqlplus goldengate/goldengate

 
create table paul.emp_sal
        ( empno  number,
          sal    number(8,2),
          constraint pk_emp_sal primary key(empno) using index
        );


4.3   在源端打開表級附加日誌屬性

GGSCI (source) 2> dblogin userid goldengate@orcl,password source
Successfully logged into database.
GGSCI (source) 3> add trandata paul.emp_sal
Logging of supplemental redo data enabled for table paul.emp_sal


4.4   啓動mgr進程


GGSCI (source) 4> start mgr

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


GGSCI (source) 5> info mgr

Manager is running (IP port source.7809).

可以看到啓動mgr進程成功

      

4.5  
添加抽取進程
ADD EXTRACT eora01,TRANLOG, BEGIN NOW, THREADS 1
edit param eora01
             EXTRACT Eora01
             USERID goldengate@orcl, PASSWORD goldengate
             RMTHOST yibin-PC, MGRPORT 7809
             RMTTRAIL ./dirdat/sq
             GETUPDATEBEFORES
             NOCOMPRESSDELETES
             TABLE PAUL.EMP_SAL;


   
ADD RMTTRAIL ./dirdat/sq,extract eora01  MEGABYTES 5


4.6   生成emp_sal表的定義結構

Cd  ./dirprm
Vi 0803.prm
Defsfile ./dirdef/mydefs.def, purge
Userid goldengate@orcl,  password goldengate

table paul.EMP_SAL;


cd c:\gg
defgen paramfile ./dirprm/0803.prm


4.7  
啓動抽取進程

Start extract Eora01

5   目標端配置複製進程

5.1  
目標端創建交易跟蹤表

       create table paul.emp_sal_his
        ( empno  number,
          sal    number(8,2),
          before_after varchar2(32),
          deal_date timestamp,
          op_flag   varchar2(32)
         );


5.2   在目標端增加checkpoint table

GGSCI (target) 1> dblogin userid goldengate@goldengate,password goldengate
Successfully logged into database.

GGSCI (target) 2> add checkpointtable goldengate.GGSCHKPT


5.3   在目標端增加複製進程

GGSCI (target) 3> ADD REPLICAT RORA01,EXTTRAIL ./dirdat/sq ,checkpointtable GOLDENGATE.GGSCHKPT
REPLICAT added.


GGSCI (target) 4> edit param rora01
   REPLICAT rora01
   SOURCEDEFS ./dirdef/MYDEFS.DEF
             USERID goldengate@oragg2, PASSWORD goldengate
             ASSUMETARGETDEFS
             INSERTALLRECORDS
             DISCARDFILE ./dirrpt/rora01.DSC, APPEND, MEGABYTES 10M
             MAP paul.EMP_SAL, TARGET paul.EMP_SAL_HIS,
           COLMAP (empno=empno,
                     sal=sal,
            BEFORE_AFTER=@getenv("GGHEADER", "BEFOREAFTERINDICATOR"),
            DEAL_DATE=@getenv ("GGHEADER", "COMMITTIMESTAMP"),
            OP_FLAG=@getenv ("GGHEADER", "OPTYPE")
             );


5.4  
在目標端啓動複製進程

GGSCI (target) 6> start rora01



6  
測試驗證結果


6.1  
驗證插入

驗證insert操作
            Source system
            Conn paul/paul@orcl
            插入幾條記錄
            SQL> select * from emp_sal;
            no rows selected
            SQL> insert into emp_sal values(1,100);
            1 row created.
            SQL> insert into emp_sal values(2,200);
            1 row created.
            SQL> insert into emp_sal values(3,300);
            1 row created.
            SQL> commit;
藍幽水月:22n (00:36:23):

            Commit complete.
            SQL> insert into emp_sal values(4,400);
            1 row created.
            SQL> commit;
            Commit complete.


Target system
SQL> select * from emp_sal_his;
EMPNO SAL       BEFORE_AFTER   DEAL_DATE                     OP_FLAG
            ----- --------- -------------- ----------------------------- -------
  1     100.00    AFTER         03-8 -11 03.09.50.000000 下午  INSERT
   2     200.00    AFTER        
03-8 -11 03.09.50.000000 下午  INSERT
   3     300.00    AFTER        
03-8 -11 03.09.50.000000 下午  INSERT
   4     400.00    AFTER        
03-8 -11 03.09.51.000000 下午  INSERT
         可以看到插入操作全部捕獲。


6.2  
驗證更新

Source system
            修改記錄
,讓每個empno的sal增加100.
            SQL> update emp_sal set sal=sal+100;
            4 rows updated.
            SQL> select * from emp_sal;
            EMPNO      SAL
            ---------- ----------
            1          200
            2          300
            3          400
            4          500
            SQL> commit;
            Commit complete.
 
Target system
   目標系統上看看是不是捕獲了修改操作信息,
  SQL> select * from emp_sal_his;
EMPNO SAL     BEFORE_AFTER     DEAL_DATE                      OP_FLAG
        

1    100.00     BEFORE 
03-8 -11 03.09.55.000000 下午   SQL COMPUPDATE
1    200.00     AFTER  
03-8 -11 03.09.55.000000 下午   SQL COMPUPDATE

2    200.00     BEFORE 
03-8 -11 03.09.55.000000 下午   SQL COMPUPDATE
2    300.00     AFTER  
03-8 -11 03.09.55.000000 下午   SQL COMPUPDATE

3    300.00     BEFORE 
03-8 -11 03.09.55.000000 下午   SQL COMPUPDATE
3    400.00     AFTER  
03-8 -11 03.09.55.000000 下午   SQL COMPUPDATE

4    400.00     BEFORE 
03-8 -11 03.09.55.000000 下午   SQL COMPUPDATE
4    500.00     AFTER  
03-8 -11 03.09.55.000000 下午
藍幽水月:22n (00:36:28):
   SQL COMPUPDATE

          可以看到修改前後的值都有。



6.3  
驗證刪除

           Source system
         
           SQL> delete from emp_sal;
           4 rows deleted.

           SQL> commit;
           Commit complete.
           SQL>
       
           Target system
           再到target系統上看看是不是捕獲了刪除操作信息
           SQL> select * from emp_sal_his;
EMPNO SAL     BEFORE_AFTER     DEAL_DATE         OP_FLAG


1   200.00   BEFORE   03-8月 -11 03.10.14.000000 下午
   DELETE
2   300.00   BEFORE   03-8月 -11 03.10.14.000000 下午
   DELETE
3   400.00   BEFORE   03-8月 -11 03.10.14.000000 下午
   DELETE
4   500.00   BEFORE   03-8月 -11 03.10.14.000000 下午
   DELETE
 
   可以看到刪除操作全部記錄下來。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章