goldengate过滤特性使用
以下操作在源端的远程投递进程上操作
字段值过滤
1.停掉远程投递进程
stop extract dpep
2.编辑参数,加入where语句
GGSCI (ogg as goldengate@slavea) 212> view params dpep
extract dpep
useridalias slnngk
RmtHost 192.168.1.104, MgrPort 7809, Compress
RmtTrail /goldengate19c/dirdat/pump103/ep
gettruncates
Passthru
table hxl.tb_ogg_test, where (name <>'hxl' and name <>'jjf');
满足where条件的都不会同步,比如insert,update,delete,即使主库update的值为where指定的值的记录,ogg也不会同步.
3.启动远程投递进程
start extract dpep
过滤列(源端已经存在)
1.编辑远程投递参数修改如下(该列从库已经存在)
table hxl.tb_ogg_test,colsexcept(name);
然后重启动
stop extract DPEP
start extract DPEP
2.主库像该列写入数据
SQL> insert into tb_ogg_test(id,name) values(36,'yyyyyy');
SQL> commit;
从库发现该记录同步过来了,但是列的值没有通过过来
SQL> select id,name from tb_ogg_test where id=36;
ID NAME
---------- ----------
36
过滤列(源端不存在)
1.编辑远程投递参数修改如下(该列从库不存在)
table hxl.tb_ogg_test,colsexcept(name3);
然后重启动
stop extract DPEP
start extract DPEP
2.主库上添加列
alter table tb_ogg_test add name3 varchar2(32);
发现从库也会同步该字段
SQL> desc tb_ogg_test;
Name Null? Type
------------------------------------------------------------
ID NOT NULL NUMBER
NAME VARCHAR2(32)
CREATE_TIME DATE
MODIFY_TIME DATE
NAME1 VARCHAR2(32)
NAME2 VARCHAR2(32)
NAME3 VARCHAR2(32)
3.主库写入数据
SQL> insert into tb_ogg_test(id,name,name3) values(37,'ggggggg','3333333');
SQL> commit;
发现从库是不会同步该字段的
SQL> select id,name,name3 from tb_ogg_test where id=37;
ID NAME NAME3
---------- ---------- --------------------------------
37 ggggggg
-- The End --