一般使用场景是源表结构和目标端表结构不一样,源端可以使用一些变量来填充目标表的字段, 过程如下:
源端表结构
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>