Oracle Goldengate实现插入记录的当前时间

需求

实现在目标端插入某行时,记录下当前时间,其他DML(update)操作不记录。


配置方法

1,参考的文章

参考文章:http://www.anbob.com/archives/2000.html
还有控制insert ,update,delete时对某列赋值的操作

  • 表结构不同时需要defgen生成定义文件效率相对于ASSUMETARGETDEFS 要慢一些。
  • 本测试修改完配置文件后都有重启进程使修改生效
  • 使用colmap 可以对表结构做映射关系
  • 使用token function可以从源端附加变量值
  • 使用get/IGNORE[DML]可以做基于事务的filter


DYNAMICRESOLUTION为了提高性能在控制表名解析时只读取一次,这样在mapexclude时会存在整个map table没有按顺序而是全部排除.

goldengate的函数很多,可参考 OGG官方联机手册

GGSCI (ggsdb) 1> view params ricme
map icme.test_s, target icme.test_t,
COLMAP(usedefaults,
create_date =@IF(@STREQ(@GETENV("GGHEADER","OPTYPE"),"INSERT"),@DATENOW(),@COLSTAT(MISSING)),
last_update_date=@datenow()

2,配置示例一

REPLICAT RP5
setenv (NLS_LANG=American_america.zhs16gbk)
USERID gg, PASSWORD *******
reperror (12841, ignore)
HANDLECOLLISIONS
ASSUMETARGETDEFS
DISCARDFILE ./dirrpt/RP5.DSC, PURGE
MAP uc.YY, TARGET  XX.YY,keycols(id),
SQLEXEC (ID lookup, QUERY " select sysdate now from dual "),
colmap(USEDEFAULTS,ROWCREATETIME  = @if(@streq(@getenv("GGHEADER","OPTYPE"),"INSERT"),@GETVAL (lookup. now),@colstat(MISSING)));
解释:只有insert的时候,对该列赋值当前时间。

这种配置在ogg11.2.0的版本中有一个bug.

错误描述:OGG-00665  OCI Error executing alter session disable parallel dml
*******************************************************************************************************************
***2014--6-12碰到OGG的bug  
***Bug 13977090 : 11.2.1 REPLICAT ABENDS: OCI ERROR EXECUTING ALTER SESSION DISABLE PARALLEL DML
改用如下配置解决问题。注意观察和上面配置不一样的地方是去掉了sqlexec
*******************************************************************************************************************;

3,配置示例二

REPLICAT RP5
setenv (NLS_LANG=American_america.zhs16gbk)
USERID gg, PASSWORD *******
reperror (12841, ignore)
HANDLECOLLISIONS
ASSUMETARGETDEFS
DISCARDFILE ./dirrpt/RP5.DSC, PURGE
MAP uc.YY, TARGET  XX.YY,keycols(id),
colmap(USEDEFAULTS,ROWCREATETIME  = @if(@streq(@getenv("GGHEADER","OPTYPE"),"INSERT"),@DATENOW(),@colstat(MISSING)));

相对于上一个简单多了

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值