一般使用场景是源表结构和目标端表结构不一样,源端可以使用一些变量来填充目标表的字段, 过程如下:
源端表结构
SQL> desc ogg.ggs_command
Name Null? Type
-------------------------------------------------
CMD VARCHAR2(10)
OPER_TIME DATE
SQL>
目标端表结构
SQL> desc ogg.ggs_command
Name Null? Type
----------------------------------------- -------- ----------------------------
CMD VARCHAR2(10)
OPER_TIME DATE
EXT_HOSTNAME VARCHAR2(10)
EXT_PRONAME VARCHAR2(10)
EXT_TIMESTAMP VARCHAR2(16)
EXT_SCN NUMBER
REP_PRONAME VARCHAR2(10)
REP_SCN NUMBER
SQL>
源端配置参数(配置表ogg.command)
[oracle@rac1]$ cat gg_cmd_sou.obey
TABLE OGG.GGS_COMMAND, TOKENS ( &
TKN-EXT_HOSTNAME = @GETENV ('GGENVIRONMENT','HOSTNAME'), &
TKN-EXT_PRONAME = @GETENV ('GGENVIRONMENT','GROUPNAME'), &
TKN-EXT_TIMESTAMP = @GETENV ('TRANSACTION','TIMESTAMP'), &
TKN-EXT_SCN = @GETENV ('TRANSACTION','CSN') &
);
[oracle@rac1]$
源端抽取进程配置
GGSCI (rac1.localdomain) 2> view params extes
extes
obey ./dirprm/env_set.obey
obey ./dirprm/ext_set.obey
userid ogg, password ogg
DISCARDFILE ./dirrpt/extes.dsc, APPEND, MEGABYTES 1000
EXTTRAIL ./dirdat/es2/w1, MEGABYTES 1000
obey ./dirprm/extes_list.obey
obey ./dirprm/gg_cmd_sou.obey 《=====源端配置读取配置参数
TABLE ogg.*;
GGSCI (rac1.localdomain) 3>
目标端的配置参数
[oracle@qxy dirprm]$ cat gg_cmd_tar.obey
ALLOWDUPTARGETMAP
IGNORETRUNCATES
MAP OGG.GGS_COMMAND, TARGET OGG.GGS_COMMAND, &
FILTER (@STRCMP(CMD,'HIS_CHECK')=0), EVENTACTIONS(CHECKPOINT BOTH), &
SQLEXEC(ID GET_TAR_SCN_A, QUERY 'SELECT CURRENT_SCN FROM V$DATABASE', NOPARAMS, AFTERFILTER), &
COLMAP(USEDEFAULTS, &
EXT_HOSTNAME = @TOKEN('TKN-EXT_HOSTNAME'), &
EXT_PRONAME = @TOKEN('TKN-EXT_PRONAME'), &
EXT_TIMESTAMP = @TOKEN('TKN-EXT_TIMESTAMP'), &
EXT_SCN = @TOKEN('TKN-EXT_SCN'), &
REP_PRONAME = @GETENV('GGENVIRONMENT','GROUPNAME'), &
REP_SCN = GET_TAR_SCN_A.CURRENT_SCN );
MAP OGG.GGS_COMMAND, TARGET OGG.GGS_COMMAND, &
FILTER (@STRCMP(CMD,'HIS_STOP')=0), EVENTACTIONS(STOP CHECKPOINT BOTH), &
SQLEXEC(ID GET_TAR_SCN_B, QUERY 'SELECT CURRENT_SCN FROM V$DATABASE', NOPARAMS, AFTERFILTER), &
COLMAP(USEDEFAULTS, &
EXT_HOSTNAME = @TOKEN('TKN-EXT_HOSTNAME'), &
EXT_PRONAME = @TOKEN('TKN-EXT_PRONAME'), &
EXT_TIMESTAMP = @TOKEN('TKN-EXT_TIMESTAMP'), &
EXT_SCN = @TOKEN('TKN-EXT_SCN'), &
REP_PRONAME = @GETENV('GGENVIRONMENT','GROUPNAME'), &
REP_SCN = GET_TAR_SCN_B.CURRENT_SCN );
[oracle@qxy dirprm]$
注:12的版本是要使用单引号.
目标端的replicat
GGSCI (qxy.localdomain) 3> view params rep_fr
replicat rep_fr
obey ./dirprm/env_set.obey
obey ./dirprm/rep_set.obey
discardfile ./dirrpt/rep_fr.dsc,append,megabytes 1000
obey ./dirprm/fsrpt_map.obey
obey ./dirprm/gg_cmd_tar.obey
GGSCI (qxy.localdomain) 4>
源端对表ogg.ggs_command插入一条数据
SQL> into OGG.GGS_COMMAND values('HIS_STOP',sysdate);
1 row created.
SQL>commit;
目标端的ogg.ggs_command对应数据
SQL> select * from ogg.ggs_command;
CMD OPER_TIME EXT_HOSTNA EXT_PRONAM EXT_TIMESTAMP EXT_SCN REP_PRONAM REP_SCN
---------- ------------------- ---------- ---------- ---------------- ---------- ---------- ----------
HIS_STOP 2018-06-06 06:31:14 rac1.local EXTES 2018-06-06 06:31 23493769 REP_FR 23463065
SQL>