Oracle Goldengate实现插入记录的当前时间
2014-07-28 18:30
453 查看
需求
实现在目标端插入某行时,记录下当前时间,其他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 RP5setenv (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 RP5setenv (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)));
相对于上一个简单多了
相关文章推荐
- java实现oracle插入当前时间的方法
- oracle 插入记录,字段自动获取当前系统时间(YYYY-MM-DD HH24:MI:SS)
- 查询oracle下没有时间戳的表中的记录插入时间
- Oracle、Db2、SqlServer、MySQL 数据库插入当前系统时间
- mybatis实现oracle批量插入,带序列(记录一下)
- oracle 实现 存在记录就更新,不存在就插入 merge into
- Oracle、Db2、SqlServer、MySQL 数据库插入当前系统时间
- 项目中应用到的几个Oracle语句(从一个表插入另一个表,赋随机值,添加当前时间)
- sql 中实现往表中插入一条记录并返回当前记录的ID
- 查询oracle下没有时间戳的表中的记录插入时间
- mysql/oracle 小技巧自动插入当前时间
- Oracle、Db2、SqlServer、MySQL 数据库插入当前系统时间
- 利用ADO方式向Oracle 数据库中插入当前日期时间
- 在mysql中实现字段记录修改时间而不是插入时间
- Oracle插入自增和当前时间
- Oracle 表中order by rowid是不是按照记录插入时间排序?
- 【转】Oracle、Db2、SqlServer、MySQL 数据库插入当前系统时间
- Oracle、Db2、SqlServer、MySQL数据库插入当前系统时间
- 通过sql语句向oracle数据库中插入一条记录(含有主键),系统当前时间插入表中 ,空值插入表中
- mybatis实现oracle批量插入,带序列(记录一下)