小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

OGG之COLMAP實(shí)驗(yàn)講解系列

 xfxyxh 2019-05-09

實(shí)驗(yàn)一. 表結(jié)構(gòu)不一致情況下的使用COLMAP進(jìn)行結(jié)構(gòu)映射
環(huán)境準(zhǔn)備:
實(shí)驗(yàn)環(huán)境簡(jiǎn)單化一些,本機(jī)模擬源-目標(biāo)端,無(wú)需DATA PUMP進(jìn)程

GGSCI (tianbaobao.ht8888.ht3 as ogg@dbsource) 30> view param ext2

extract ext2
SETENV (ORACLE_SID="dbsource")
SETENV (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)
USERID ogg, PASSWORD ogg
EXTTRAIL ./dirdat/le
WILDCARDRESOLVE DYNAMIC
DYNAMICRESOLUTION
TRANLOGOPTIONS DBLOGREADER
TABLE scott.*;


GGSCI (tianbaobao.ht8888.ht3 as ogg@dbsource) 31> view param rep2

REPLICAT rep2
SETENV (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)
USERID ogg, PASSWORD ogg
REPERROR DEFAULT, ABEND
ASSUMETARGETDEFS
DISCARDFILE ./dirrpt/rep2.dsc, APPEND, MEGABYTES 100
WILDCARDRESOLVE DYNAMIC
DYNAMICRESOLUTION
MAP scott.*, TARGET tianbaobao.*;


GGSCI (tianbaobao.ht8888.ht3 as ogg@dbsource) 32> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING                                          
EXTRACT     RUNNING     EXT2        00:00:00      00:00:04     
REPLICAT    RUNNING     REP2        00:00:00      00:00:02   

DEMO(一):
Step1. 首先源和目標(biāo)創(chuàng)建測(cè)試表:
SYS@SQL> create table scott.tb02(col1 int, col2 int, col3 int);

Table created.

SYS@SQL> create table tianbaobao.tb02(col1 int, col3 int, col2 int);

Table created.

SQL>
Step2. 參數(shù)不做任何調(diào)整后,源插入記錄,并測(cè)試。
SCOTT@SQL> insert into scott.tb02 values(1,2,3);

1 row created.

SCOTT@SQL> commit;

Commit complete.

SCOTT@SQL>

TIANBAOBAO@SQL> select * from tb02;

      COL1  COL3     COL2
---------- ---------- ----------
           3

TIANBAOBAO@SQL>
這里發(fā)現(xiàn)已經(jīng)MAP錯(cuò)誤了,說明是按照列的順序來(lái)的,而不是按照列名來(lái)對(duì)應(yīng)的。

Step3. 嘗試生成定義文件處理。

GGSCI (tianbaobao.ht8888.ht3 as ogg@dbsource) 33> edit param defgen

GGSCI (tianbaobao.ht8888.ht3) 34> view param defgen

DEFSFILE ./dirdef/test.def
USERID ogg, PASSWORD ogg
TABLE SCOTT.tb02;

GGSCI (tianbaobao.ht8888.ht3 as ogg@dbsource) 35> quit
[oracle@tianbaobao ogg]$ ./defgen paramfile dirprm/defgen.prm

***********************************************************************
        Oracle GoldenGate Table Definition Generator for Oracle
     Version 12.1.2.1.0 OGGCORE_12.1.2.1.0_PLATFORMS_140727.2135.1
   Linux, x64, 64bit (optimized), Oracle 11g on Aug  7 2014 05:45:39
 
Copyright (C) 1995, 2014, Oracle and/or its affiliates. All rights reserved.


                    Starting at 2015-02-23 14:41:07
***********************************************************************

Operating System Version:
Linux
Version #1 SMP Tue Jan 29 11:47:41 EST 2013, Release 2.6.32-358.el6.x86_64
Node: tianbaobao.ht8888.ht3
Machine: x86_64
                         soft limit   hard limit
Address Space Size     unlimited    unlimited
Heap Size              unlimited    unlimited
File Size              unlimited    unlimited
CPU Time               unlimited    unlimited

Process id: 6440

***********************************************************************
**            Running with the following parameters                  **
***********************************************************************
DEFSFILE ./dirdef/test.def
USERID ogg, PASSWORD ***
TABLE SCOTT.tb02;
Retrieving definition for SCOTT.TB02.

2015-02-23 14:41:10  WARNING OGG-06439  No unique key is defined for table TB02. All viable columns will be used to represent the key, but may not guarantee

uniqueness. KEYCOLS may be used to define the key.


Definitions generated for 1 table in ./dirdef/test.def.

生成test.def文件,ftp傳輸?shù)侥繕?biāo)的dirdef文件目錄下。

編輯REP2參數(shù)文件后,重啟REP2進(jìn)程。
GGSCI (tianbaobao.ht8888.ht3) 6> edit param rep2

GGSCI (tianbaobao.ht8888.ht3) 7> view param rep2

REPLICAT rep2
SETENV (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)
USERID ogg, PASSWORD ogg
REPERROR DEFAULT, ABEND
--ASSUMETARGETDEFS
SOURCEDEFS ./dirdef/test.def
DISCARDFILE ./dirrpt/rep2.dsc, APPEND, MEGABYTES 100
WILDCARDRESOLVE DYNAMIC
DYNAMICRESOLUTION
MAP scott.*, TARGET tianbaobao.*;


GGSCI (tianbaobao.ht8888.ht3) 8> stop rep2

Sending STOP request to REPLICAT REP2 ...
Request processed.


GGSCI (tianbaobao.ht8888.ht3) 9> start rep2

Sending START request to MANAGER ...
REPLICAT REP2 starting

再次插入記錄,并驗(yàn)證,結(jié)果一切OK。方法可行。
SCOTT@SQL> insert into scott.tb02 values(2,3,4);

1 row created.

SCOTT@SQL> commit;

Commit complete.

SCOTT@SQL>

TIANBAOBAO@SQL select * from tb02;

      COL1  COL3     COL2
---------- ---------- ----------
           3
           3

TIANBAOBAO@SQL>

DEMO(二):
當(dāng)然也可以使用COLMAP字句關(guān)聯(lián)。
Step1. 編輯rep2參數(shù)文件,不適用定義文件。
GGSCI (tianbaobao.ht8888.ht3) 153> view param rep2

REPLICAT rep2
SETENV (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)
USERID ogg, PASSWORD ogg
REPERROR DEFAULT, ABEND
ASSUMETARGETDEFS
DISCARDFILE ./dirrpt/rep2.dsc, APPEND, MEGABYTES 100
WILDCARDRESOLVE DYNAMIC
DYNAMICRESOLUTION
MAP SCOTT.TB02, TARGET TIANBAOBAO.TB02, colmap(usedefaults, col2=col3, col3=col2);


GGSCI (tianbaobao.ht8888.ht3) 154> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING                                           
EXTRACT     RUNNING     EXT2        00:00:00      00:00:06     
REPLICAT    RUNNING     REP2        00:00:00      00:00:04   

Step2. 測(cè)試1:
SCOTT@SQL> insert into scott.tb02 values(3,4,5);

1 row created.

SCOTT@SQL> commit;

Commit complete.

SCOTT@SQL>

TIANBAOBAO@SQL> select * from tb02;

      COL1  COL3     COL2
---------- ---------- ----------
           3
           3
           4

TIANBAOBAO@SQL>
 
Step3. 測(cè)試2:
SCOTT@SQL> insert into tb02(col1,col2,col3) values(5,6,7);

1 row created.

SCOTT@SQL> commit;

Commit complete.

SCOTT@SQL>

TIANBAOBAO@SQL> select * from tb02;

      COL1  COL3     COL2
---------- ---------- ----------
           3
           4
           4
           6

TIANBAOBAO@SQL>


結(jié)論:colmap正確的映射或者配置定義文件(此時(shí)不需要colmap都可以實(shí)現(xiàn),但是很多時(shí)候如果結(jié)構(gòu)不一致時(shí),還是需要的定義文件的)。
實(shí)際生產(chǎn)上,如果要配置colmap,一定要注意進(jìn)行測(cè)試,確保正確的結(jié)果再上線。


實(shí)驗(yàn)二.  模擬SQLExec測(cè)試,數(shù)據(jù)轉(zhuǎn)換
數(shù)據(jù)轉(zhuǎn)換 – 使用SQLEXEC
 SQLEXEC:在OGG中調(diào)用SQL查詢語(yǔ)句或者存儲(chǔ)過程

需求:需要實(shí)現(xiàn)源端數(shù)據(jù)庫(kù)中主從兩張表到目標(biāo)庫(kù)的篩選復(fù)制
具體描述:源庫(kù)中有主從關(guān)系的兩張表,其中主表中有一個(gè)篩選字段,而子表中沒有篩選字段,主表和子表都需要滿足主表的篩選條件才能向目標(biāo)數(shù)據(jù)庫(kù)中復(fù)制。
表結(jié)構(gòu)(源庫(kù)和目標(biāo)庫(kù)中主從表定義一致):
主表:create table scott.province(PROVINCE_ID number primary key,PROVINCE_NAME varchar(10));
主表字段說明:PROVINCE_ID  省份編號(hào);PROVINCE_NAME 省份名稱  
子表:create table scott.city(CITY_ID number primary key,CITY_NAME varchar2(10),PROVINCE_ID number references scott.province(PROVINCE_ID));
子表字段說明:CITY_ID  城市編號(hào);CITY_NAME 城市名稱
-- PROVINCE_ID 城市所在省的編號(hào),引用自主表對(duì)應(yīng)列
復(fù)制篩選說明:主表中PROVINCE_NAME是篩選字段,比如:只有省份名稱是“江蘇”的才復(fù)制到目標(biāo)表中;子表沒有篩選字段,但是同樣要符合主表的篩選要求,比如:只有在“江蘇”省內(nèi)

的城市才可以復(fù)制到目標(biāo)表。這樣的復(fù)制要求可能會(huì)用在基于篩選條件的一對(duì)多的數(shù)據(jù)分發(fā) 的復(fù)制環(huán)境中。

分析:
(1)主表是有篩選字段的,所以直接調(diào)用Goldengate內(nèi)置的STREQ函數(shù)配合FILTER就可以實(shí)現(xiàn)篩選了;
(2)子表沒有PROVINCE_NAME這個(gè)字段,所以只有通過PROVINCE_ID來(lái)回查出該條記錄在主表中對(duì)應(yīng)的PROVINCE_NAME值,然后使用STREQ函數(shù)配合FILTER子句來(lái)進(jìn)行過濾。這里就需要在

goldengate中調(diào)用自己寫的SQL語(yǔ)句或存儲(chǔ)過程來(lái)實(shí)現(xiàn),即SQLEXEC來(lái)實(shí)現(xiàn)。
(3)SQLEXEC可以在extract進(jìn)程(包括pump進(jìn)程)和replicat進(jìn)程都可以使用,在本例中因?yàn)樵谠炊司鸵M(jìn)行篩選,需要配置extract進(jìn)程參數(shù),同時(shí)不影響源端日志抽取的效率,所以決定

配置源端的pump進(jìn)程來(lái)實(shí)現(xiàn)。

DEMO--SQLExec數(shù)據(jù)轉(zhuǎn)換
Step1. 源-目標(biāo)創(chuàng)建測(cè)試表
SCOTT@SQL> create table province(PROVINCE_ID number primary key,PROVINCE_NAME varchar(10));

Table created.

SCOTT@SQL> create table city(CITY_ID number primary key,CITY_NAME varchar2(10),PROVINCE_ID number references province(PROVINCE_ID));

Table created.

TIANBAOBAO@SQL> create table province(PROVINCE_ID number primary key,PROVINCE_NAME varchar(10));

Table created.

TIANBAOBAO@SQL> create table city(CITY_ID number primary key,CITY_NAME varchar2(10),PROVINCE_ID number references province(PROVINCE_ID));

Table created.

TIANBAOBAO@SQL>

Step2. 配置進(jìn)程參數(shù),并啟動(dòng)
GGSCI (tianbaobao.ht8888.ht3) 68> view param ext2

extract ext2
SETENV (ORACLE_SID="dbsource")
SETENV (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)
USERID ogg, PASSWORD ogg
EXTTRAIL ./dirdat/le
WILDCARDRESOLVE DYNAMIC
DYNAMICRESOLUTION
TRANLOGOPTIONS DBLOGREADER
TABLE scott.province;
TABLE scott.city;


GGSCI (tianbaobao.ht8888.ht3) 69> view param pmp2

extract pmp2
SETENV (ORACLE_SID="dbsource")
SETENV (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)
USERID ogg, PASSWORD ogg
--PASSTHRU
RMTHOST 192.168.0.77, MGRPORT 7809
EXTTRAIL ./dirdat/el
WILDCARDRESOLVE DYNAMIC
DYNAMICRESOLUTION
TRANLOGOPTIONS DBLOGREADER
TABLE scott.province, FILTER (@STREQ (PROVINCE_NAME, "LIAONING"));
TABLE scott.city, &
SQLEXEC ( ID lookup1 , &
QUERY "select a.PROVINCE_NAME from scott.province a,scott.city b where a.PROVINCE_ID=b.PROVINCE_ID and b.CITY_ID =:param1", &
PARAMS ( param1 = CITY_ID ), BEFOREFILTER), &
filter (@STREQ (@GETVAL (lookup1.PROVINCE_NAME), "LIAONING") );


GGSCI (tianbaobao.ht8888.ht3) 2> view param rep2

REPLICAT rep2
SETENV (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)
USERID ogg, PASSWORD ogg
REPERROR DEFAULT, ABEND
ASSUMETARGETDEFS
DISCARDFILE ./dirrpt/rep2.dsc, APPEND, MEGABYTES 100
WILDCARDRESOLVE DYNAMIC
DYNAMICRESOLUTION
MAP SCOTT.PROVINCE, TARGET tianbaobao.PROVINCE;
MAP SCOTT.CITY, TARGET tianbaobao.CITY;

GGSCI (tianbaobao.ht8888.ht3) 10> start ext2

Sending START request to MANAGER ...
EXTRACT EXT2 starting


GGSCI (tianbaobao.ht8888.ht3) 10> start pmp2

Sending START request to MANAGER ...
EXTRACT PMP2 starting


GGSCI (tianbaobao.ht8888.ht3) 11> start rep2

Sending START request to MANAGER ...
REPLICAT REP2 starting


GGSCI (tianbaobao.ht8888.ht3) 12> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING                                           
EXTRACT     RUNNING     EXT2        00:00:00      00:00:01     
REPLICAT    RUNNING     REP2        00:00:00      00:00:08   
REPLICAT    RUNNING     PMP2        00:00:00      00:00:01   


說明:
(1)因?yàn)樵趐ump進(jìn)程調(diào)用了FILTER字句,所以注釋掉PASSTHRU;
(2)因?yàn)樵趐ump進(jìn)程中使用了SQLEXEC來(lái)回庫(kù)查詢了,所以在pump進(jìn)程中需要配置數(shù)據(jù)庫(kù)的用戶名和密碼;
(3)SQLEXEC中調(diào)用了sql語(yǔ)句來(lái)進(jìn)行回庫(kù)查詢,在SQLEXEC有四個(gè)部分的參數(shù):
?ID : 為后續(xù)的查詢定義一個(gè)邏輯名稱,使用這個(gè)邏輯名稱來(lái)獲取sql查詢語(yǔ)句返回的列值,比如:后續(xù)sql查詢的是PROVINCE_NAME,我們就在FILTER語(yǔ)句中調(diào)用

lookup1.PROVINCE_NAME來(lái)獲取返回的值;
?QUERY 部分: 就是需要調(diào)用的sql查詢語(yǔ)句,這里根據(jù)具體要求來(lái)寫;
?PARAMS部分: 前面sql查詢部分的輸入?yún)?shù),如果沒有傳入?yún)?shù),必須寫成NOPARAMS;
?BEFOREFILTER部分:是本例中用到的值,在第四部分的參數(shù)是可選參數(shù),可以配置的值有很多,比如:BEFOREFILTER、AFTERFILTER、ALLPARAMS、DBOP、EXEC…等等,我們這里配置

BEFOREFILTER是為了在確保在FILTER之前執(zhí)行sql查詢語(yǔ)句,這樣查詢的結(jié)果才可以在FILTER中使用。

在goldengate官方手冊(cè)中,SQLEXEC調(diào)用sql查詢語(yǔ)句的語(yǔ)法:
SQLEXEC (
ID
, QUERY “”
{, PARAMS | NOPARAMS}
[,

] [, ...]
)
正好對(duì)應(yīng)于我們這個(gè)例子中的四個(gè)部分,其中option部分是可選項(xiàng)。

Step3. 測(cè)試數(shù)據(jù)轉(zhuǎn)換
源端執(zhí)行了以下sql:
SCOTT@SQL> insert into scott.province values(1,'LIAONING');
SCOTT@SQL> insert into scott.province values(2,'ZHEJIANG');
SCOTT@SQL> commit;
SCOTT@SQL> insert into scott.city values(1,'HANGZHOU',2);
SCOTT@SQL> insert into scott.city values(2,'DALIAN',1);
SCOTT@SQL> insert into scott.city values(3,'SHENYANG',1);
SCOTT@SQL> insert into scott.city values(4,'BENXI',1);
SCOTT@SQL> commit; 

源端表檢查:
SCOTT@SQL> select * from province;

PROVINCE_ID PROVINCE_N
----------- ----------
   1 LIAONING
   2 ZHEJIANG

SCOTT@SQL> select * from city;

   CITY_ID CITY_NAME  PROVINCE_ID
---------- ---------- -----------
  2 DALIAN  1
  3 SHENYANG  1
  1 HANGZHOU  2
  4 BENXI  1

SCOTT@SQL>

目標(biāo)表檢查:
TIANBAOBAO@SQL> select * from province;

PROVINCE_ID PROVINCE_N
----------- ----------
   1 LIAONING

TIANBAOBAO@SQL> select * from city;

   CITY_ID CITY_NAME  PROVINCE_ID
---------- ---------- -----------
  2 DALIAN  1
  3 SHENYANG  1
  4 BENXI  1

這樣目標(biāo)DB上就只有和遼寧省相關(guān)的記錄了。


3、模擬審計(jì)測(cè)試
數(shù)據(jù)轉(zhuǎn)換 – 使用@GETENV和@TOKEN
需求:在目標(biāo)數(shù)據(jù)庫(kù)記錄源端的數(shù)據(jù)操作記錄,實(shí)現(xiàn)審計(jì)功能
具體描述:在數(shù)據(jù)復(fù)制過程中,目標(biāo)端上需要實(shí)現(xiàn)兩個(gè)需求
(1)目標(biāo)表和源表相比多一個(gè)列,這個(gè)列用來(lái)表示源表記錄更新的時(shí)間戳;
(2)目標(biāo)上單獨(dú)有一張審計(jì)表,用于表上的操作信息的審計(jì),比如:源端提交時(shí)間、目標(biāo)端提交時(shí)間、操作類型、操作用戶等

DEMO---審計(jì)測(cè)試
Step1. 前期準(zhǔn)備:
源表:
SYS@SQL> create table scott.TB11(id number primary key,name varchar(10));

Table created.

SYS@SQL>

目標(biāo)表:
SYS@SQL> create table tianbaobao.TB11(id number primary key,name varchar(10), src_time date);

Table created.

SYS@SQL> create table tianbaobao.TB11_audit(id number,name varchar(10),src_time date, trg_time date,op_type varchar2(20),src_user varchar2(10));

Table created.

SYS@SQL>

GGSCI (tianbaobao.ht8888.ht3) 1> view param ext2

extract ext2
SETENV (ORACLE_SID="dbsource")
SETENV (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)
USERID ogg, PASSWORD ogg
EXTTRAIL ./dirdat/le
WILDCARDRESOLVE DYNAMIC
DYNAMICRESOLUTION
TRANLOGOPTIONS DBLOGREADER
TABLE SCOTT.TB11, TOKENS (TKN-USERNAME = @GETENV("TRANSACTION", "USERNAME"));

說明:在源端extract進(jìn)程中使用TOKEN在trail文件頭部用戶TOKEN部分定義了一個(gè)變量:TKN-USERNAME,這個(gè)變量的值是通過@GETENV來(lái)獲得當(dāng)前Goldengate運(yùn)行環(huán)境中和數(shù)據(jù)庫(kù)事務(wù)相關(guān)源端數(shù)據(jù)庫(kù)提交事務(wù)的用戶信息


GGSCI (tianbaobao.ht8888.ht3) 2> view param rep2

REPLICAT rep2
SETENV (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)
USERID ogg, PASSWORD ogg
REPERROR DEFAULT, ABEND
ASSUMETARGETDEFS
DISCARDFILE ./dirrpt/rep2.dsc, APPEND, MEGABYTES 100
WILDCARDRESOLVE DYNAMIC
DYNAMICRESOLUTION
MAP SCOTT.TB11, TARGET tianbaobao.TB11, &
COLMAP (USEDEFAULTS, &
SRC_TIME = @GETENV("GGHEADER","COMMITTIMESTAMP"));


說明:此時(shí)目標(biāo)有2個(gè)replicat進(jìn)程,這兩個(gè)進(jìn)程讀的trail文件是同一份,這里是第一個(gè)進(jìn)程:ggs_rep1,這個(gè)進(jìn)程負(fù)責(zé)正常的數(shù)據(jù)復(fù)制,即從源端的TB11表復(fù)制到目標(biāo)的TB11表,只不過在

目標(biāo)的TB11表上多了一個(gè)字段SRC_TIME(記錄源端事務(wù)提交的時(shí)間),因?yàn)槎嗔艘粋€(gè)字段,這里就要調(diào)用COLMAP來(lái)做映射了,在COLMAP字句中使用@GETENV函數(shù),該函數(shù)配置的參數(shù)是GGHEADER

類別下的COMMITTIMESTAMP這個(gè)屬性,而這個(gè)屬性就是用來(lái)獲取時(shí)間戳,即記錄事務(wù)提交的時(shí)間,格式為YYY-MM-DD HH:MI:SS.FFFFFF。

GGSCI (tianbaobao.ht8888.ht3) 3> view param rep3

REPLICAT rep3
SETENV (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)
USERID ogg, PASSWORD ogg
REPERROR DEFAULT, ABEND
ASSUMETARGETDEFS
INSERTALLRECORDS
DISCARDFILE ./dirrpt/rep3.dsc, APPEND, MEGABYTES 100
WILDCARDRESOLVE DYNAMIC
DYNAMICRESOLUTION
MAP SCOTT.TB11, TARGET tianbaobao.TB11_AUDIT,
COLMAP (USEDEFAULTS,
SRC_TIME = @GETENV("GGHEADER","COMMITTIMESTAMP"),
TRG_TIME = @DATENOW (),
OP_TYPE = @GETENV("GGHEADER", "OPTYPE"),
SRC_USER = @TOKEN ("TKN-USERNAME"));

說明:這是目標(biāo)第二個(gè)replicat進(jìn)程,這個(gè)進(jìn)程負(fù)責(zé)審計(jì)表的復(fù)制,即從源端的TB11表復(fù)制到目標(biāo)審計(jì)表TB11_AUDIT,前面也看到需求中的內(nèi)容了,審計(jì)表多了4個(gè)字段,分別用于記錄源端每

個(gè)事務(wù)操作的時(shí)間、目標(biāo)端提交的時(shí)間、源端的操作類型、源端數(shù)據(jù)庫(kù)用戶名。該進(jìn)程參數(shù)文件中使用了一個(gè)非常重要的參數(shù):INSERTALLRECORDS ,這個(gè)參數(shù)會(huì)讓復(fù)制進(jìn)程插入對(duì)于目標(biāo)端一

條記錄所有的變化修改,即能起到審計(jì)的作用。同時(shí)在這個(gè)進(jìn)程中,使用@GETENV函數(shù)來(lái)獲取goldengate運(yùn)行環(huán)境中的GGHEADER下的COMMITTIMESTAMP(源端時(shí)間)和OPTYPE(操作類型);使

用@DATENOW ()來(lái)獲取目標(biāo)端提交時(shí)間;使用@TOKEN函數(shù)來(lái)獲取源端定義在trail文件頭部定義的用戶令牌部分的變量TKN-USERNAME的值,即源端的數(shù)據(jù)庫(kù)用戶信息。

GGSCI (tianbaobao.ht8888.ht3) 4> start ext2

Sending START request to MANAGER ...
EXTRACT EXT2 starting


GGSCI (tianbaobao.ht8888.ht3) 5> start rep2

Sending START request to MANAGER ...
REPLICAT REP2 starting


GGSCI (tianbaobao.ht8888.ht3) 6> start rep3

Sending START request to MANAGER ...
REPLICAT REP3 starting


GGSCI (tianbaobao.ht8888.ht3) 7> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING                                          
EXTRACT     RUNNING     EXT2        00:01:55      00:00:07     
REPLICAT    RUNNING     REP2        00:00:00      00:00:05   
REPLICAT    RUNNING     REP3        00:00:00      00:00:02   


說明:這是目標(biāo)第二個(gè)replicat進(jìn)程,這個(gè)進(jìn)程負(fù)責(zé)審計(jì)表的復(fù)制,即從源端的TB11表復(fù)制到目標(biāo)審計(jì)表TB11_AUDIT,前面也看到需求中的內(nèi)容了,審計(jì)表多了4個(gè)字段,分別用于記錄源端每

個(gè)事務(wù)操作的時(shí)間、目標(biāo)端提交的時(shí)間、源端的操作類型、源端數(shù)據(jù)庫(kù)用戶名。該進(jìn)程參數(shù)文件中使用了一個(gè)非常重要的參數(shù):INSERTALLRECORDS ,這個(gè)參數(shù)會(huì)讓復(fù)制進(jìn)程插入對(duì)于目標(biāo)端一

條記錄所有的變化修改,即能起到審計(jì)的作用。同時(shí)在這個(gè)進(jìn)程中,使用@GETENV函數(shù)來(lái)獲取goldengate運(yùn)行環(huán)境中的GGHEADER下的COMMITTIMESTAMP(源端時(shí)間)和OPTYPE(操作類型);使

用@DATENOW ()來(lái)獲取目標(biāo)端提交時(shí)間;使用@TOKEN函數(shù)來(lái)獲取源端定義在trail文件頭部定義的用戶令牌部分的變量TKN-USERNAME的值,即源端的數(shù)據(jù)庫(kù)用戶信息。

Step2. 測(cè)試審計(jì):
源端使用SCOTT用戶執(zhí)行了以下sql:
SCOTT@SQL> insert into scott.TB11 values(1,'a');
SCOTT@SQL> commit;
SCOTT@SQL> insert into scott.TB11 values(2,'a');
SCOTT@SQL> commit;
SCOTT@SQL> update scott.TB11 set name='c' where id=2;
SCOTT@SQL> commit;
SCOTT@SQL> delete from scott.TB11 where id=2;
SCOTT@SQL> commit;
SCOTT@SQL> update scott.TB11 set id=2 where id=1;
SCOTT@SQL> commit;
源端使用SYS用戶執(zhí)行了以下sql:
SYS@SQL> insert into scott.TB11 values(3,'c');
SYS@SQL> commit;


目標(biāo)端檢查
TIANBAOBAO@SQL> select * from tb11;

 ID NAME       SRC_TIME
---------- ---------- -------------------
  2 a       2015-02-23 18:50:26
  3 c       2015-02-23 18:57:26

TIANBAOBAO@SQL> select * from tb11_audit;

 ID NAME       SRC_TIME    TRG_TIME       OP_TYPE     SRC_USER
---------- ---------- ------------------- ------------------- -------------------- ----------
  1 a       2015-02-23 18:33:50 2015-02-23 18:34:45 INSERT     SCOTT
  2 a       2015-02-23 18:42:06 2015-02-23 18:42:10 INSERT     SCOTT
  2 c       2015-02-23 18:47:11 2015-02-23 18:49:41 SQL COMPUPDATE    SCOTT
       2015-02-23 18:50:21 2015-02-23 18:50:25 DELETE     SCOTT
       2015-02-23 18:50:26 2015-02-23 18:50:29 PK UPDATE     SCOTT
  3 c       2015-02-23 18:57:26 2015-02-23 18:57:28 INSERT     SYS

說明:目標(biāo)端TB11表中的數(shù)據(jù)和源端保持一致,只是多了一列表示最后事務(wù)提交的時(shí)間;目標(biāo)表TB11_AUDIT負(fù)責(zé)將源表所有的操作審計(jì)下來(lái),其中最后兩行name字段沒有填充值進(jìn)來(lái),是因?yàn)?/P>

TB11表上有主鍵,對(duì)于刪除操作和鍵值更新的操作時(shí),在日志中只有鍵值列相關(guān)的信息,如果需要顯示其他字段信息,就需要把這些字段都加入附加日志中去。同時(shí)OP_TYPE這列中和update操

作相關(guān)的有兩個(gè)值“SQL COMPUPDATE”和“PK UPDATE”,分別表示了非鍵值列的更新和鍵值列的更新。


總結(jié):更多的參數(shù)配置,和更多的功能體現(xiàn),詳見手冊(cè)。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多