OGG中TOKENS的使用

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

源端表结构

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> 



猜你喜欢

转载自blog.csdn.net/m15217321304/article/details/80590751
ogg