goldengate 实现数据同步增量跟踪
???? Oracle GoldenGate有众多解决方案,其中有一个可用来实现数据同步增量跟踪.比如有的业务系统需要实时的记录某些数据的各种变化,通过OGG可以轻松的实现。
?
??? 应用场景:现需要实现对源端库中空间数据表,数据变化进行监控。
?
??? 源端点空间数据表结构:
???
??? create table SDE_POINT
(
? OID????? INTEGER not null,
? GEOMETRY MDSYS.SDO_GEOMETRY not null,
? NAME???? VARCHAR2(50)
)
alter table SDE_POINT add primary key (OID);
?

?
?
//目标增量变化信息表
-- Create table
create table CHJ_DATA_CHANGE_HIS
(
? ID?????????? VARCHAR2(50),
? TABLE_NAME?? VARCHAR2(1000),
? BEFORE_AFTER VARCHAR2(32),
? DEAL_DATE??? TIMESTAMP(6),
? OP_FLAG????? VARCHAR2(32)
)
tablespace TBS_SGS_TEST
? pctfree 10
? initrans 1
? maxtrans 255
? storage
? (
??? initial 64
??? next 8
??? minextents 1
??? maxextents unlimited
? );

?
?
?
Goldengate 配置
在源端上,配置一个Extract : sgs_jtt, 参数如下,其中粗体部分是必须的参数。
EXTRACT SGS_JTT
SETENV (NLS_LANG="AMERICAN_AMERICA.ZHS16GBK")
USERID goldengate, PASSWORD goldengate
RMTHOST 126.33.8.96, MGRPORT 8200
RMTTRAIL ./dirdat/jt
GETUPDATEBEFORES
TABLE sgs_jtt.SDE_LINE;
TABLE sgs_jtt.SDE_POINT;
TABLE sgs_jtt.SDE_SURFACE;
?
?
再在目标端配置一个Replicat his_chj 参数配置如下:
replicat his_chj
SETENV (NLS_LANG="AMERICAN_AMERICA.ZHS16GBK")
USERID goldengate@orcl, PASSWORD goldengate
ASSUMETARGETDEFS
INSERTALLRECORDS
MAP sgs_jtt.*, TARGET SGS_CHJ.CHJ_DATA_CHANGE_HIS,
COLMAP ( id = id ,
? TABLE_NAME=@getenv("GGHEADER", "TABLENAME"),
???????? BEFORE_AFTER=@getenv("GGHEADER", "BEFOREAFTERINDICATOR"),
???????? DEAL_DATE=@getenv ("GGHEADER", "COMMITTIMESTAMP"),
???????? OP_FLAG=@getenv ("GGHEADER", "OPTYPE")
);
?
此处 id = id 是我随机写的,并没有依据,但还是能获取到源端改动的主键OID的值,不知道从哪映射过来的
1 楼 piliskys 2011-02-21 兄弟,你这是个做出来的么,我怎么主键过来UPDATE老是空的 2 楼 muyonglei 2011-12-14 朋友,可否留个QQ,请教您个问题 3 楼 pengjin1988 2012-06-26 您好,请问您有没有尝试过一个表中有多个字段的情况呢?我在实验时,表中有两个字段的交易追踪是没有问题的,但在尝试有多个字段的表时:对于更新,只能捕获到发生更新的列,没有发生更新的列,值全部为null,而且更新前的空间字段值也是null,对于删除的数据,空间字段值也为null,不知道您有没有遇到过这个问题,或者有没有对应的解决方法呢?谢谢,期待您的回复!您能否留个联系方式,期待和您的沟通,我的QQ:715633541.谢谢! 4 楼 pengjin1988 2012-06-26 piliskys 写道兄弟,你这是个做出来的么,我怎么主键过来UPDATE老是空的您好,请问您的问题解决了吗?怎么弄得?我也遇到这样的问题,期待能和您沟通一下,我的QQ:715633541,谢谢!!