本文主要介绍OGG中一些过滤或计算函数的用法,以及sqlexec的基本用法

SQLPREDICATE

在使用OGG初始化时,可以添加此参数到extract中,用于选择符合条件的记录,下面是OGG官方文档中的描述 :

“在用OGG初始化数据时,使用SQLPredicate是比where或filter更好的一个选项。使用此语句比其它参数初始化更快,因为它直接作用于SQL语句,告诉OGG不应该取所有数据之后再过滤(这正是其它参数的运行方式),而是应该只取需要的部分。”

如下

TABLE ggs_owner.emp_details, SQLPREDICATE “where ename=’Gavin’”;

针对目标端的数据过滤,仍然可以在replicat上使用where条件进行数据过滤,即只取extract出来的部分数据进行投递,如下:

MAP ggs_owner.emp_details, TARGET ggs_owner.emp_details, WHERE (ename=”Gavin”);

FILTER

Filter的功能远比where强大,你可以在任何有字段转换的地方使用它进行数据过滤,而where只能使用基本的操作符。比如,我们可以在OGG的这些函数(@COMPUTE, @DATE, @STRFIND, @STRNUM等)中使用数值运算符:

‘+’,’-’,’/’,’*’或比较操作符‘>’,’<', '='。

下面的配置示例中我们在extract中使用STRFIND函数,捕获ename字段中只符合相应条件的记录,配置如下:

TABLE ggs_owner.emp_details,FILTER (@STRFIND (ename, “Gavin”) > 0);

COMPUTE

接下来的示例讲解如何使用@COMPUTE函数,本示例中基于某原始字段值,计算同一张表中其它字段的值。

在本示例中的目标表EMP与源表结构不同,目标表上有多出来的一个字段COMM。COMM字段的值由源字段SAL*1.1计算得到。由于两边表结构不同,因此,我们需要先用defgen程序创建一个定义文件。

首先,我们在目标端上基于EMP表创建defgen参数文件:

edit params defgen

DEFSFILE /home/oracle/goldengate/dirsql/emp.sql
USERID ggs_owner, PASSWORD ggs_owner
TABLE ggs_owner.emp;

然后在OGG安装目录下执行:

[oracle@linux02 goldengate]$ ./defgen paramfile ./dirprm/defgen.prm

目标端的replicat参数文件定义如下,里面用到了colmap和compute。colmap中的useDefaults告诉OGG,源和目标表的字段按名称自动匹配,而目标表的comm字段,则由源端的sal字段运算得到。

REPLICAT rep1
USERID ggs_owner, PASSWORD *********
SOURCEDEFS /home/oracle/goldengate/dirsql/emp.sql
MAP ggs_owner.emp_details, TARGET ggs_owner.emp_details,
COLMAP (usedefaults,
comm= @compute(sal +sal *.10));

基于上面的配置进行数据同步测试,可以看到目标表中comm的字段值是sal字段值的1.1倍,如下:

SQL> select * from emp;

EMPNO
ENAME                    DEPTNO        SAL       COMM

---------- -------------------- ---------- ----------
----------

1001
Gavin                        10       1000       1100

1002
Mark                         20       2000       2200

1003
John                         30       3000       3300

SQLEXEC

SQLEXEC可以在extract或replicat中用于执行SQL语句、存储过程或SQL函数。比如,针对大批量的数据加载,我们可以先将表的索引删除,待数据加载完成之后,再重建索引,从而提高数据同步的性能。在下面replicat示例中,可以看到类似的配置示例:

REPLICAT rep1
USERID ggs_owner, PASSWORD ggs_owner
ASSUMETARGETDEFS
sqlexec “drop index loc_ind”;
MAP ggs_owner.emp_details, TARGET ggs_owner.emp_details, WHERE
(location=”Sydney”);
sqlexec “create index loc_ind on emp_details(location)”;

GoldenGate中使用FILTER,COMPUTE 和SQLEXEC命令的更多相关文章

  1. 关于Oracle GoldenGate中Extract的checkpoint的理解 转载

    什么是checkpoint? 在Oracle 数据库中checkpoint的意思是将内存中的脏数据强制写入到磁盘的事件,其作用是保持内存中的数据与磁盘上的数据一致.SCN是用来描述该事件发生的准确的时 ...

  2. 模拟一下goldengate中断后,重新同步操作

    模拟一下goldengata中断后,重新同步操作:     1.关掉源端抽取进程 GGSCI (20081122-2105) 15> info all Program     Status    ...

  3. 详解AngularJS中的filter过滤器用法

    系统的学习了一下angularjs,发现angularjs的有些思想根php的模块smarty很像,例如数据绑定,filter.如果对smarty比较熟悉的话,学习angularjs会比较容易一点.这 ...

  4. Oracle GoldenGate中HANDLECOLLISIONS参数使用详解

    Oracle GoldenGate中HANDLECOLLISIONS参数使用详解   HANDLECOLLISIONS 是一个 replicat 进程参数,主要在 initial load 中使用.在 ...

  5. gitattributes中的filter

    .gitattributes文件就是一个简单的text文本文件,它的作用是gives attributes to pathnames. 该文件中的一些配置可以为某些特定目录或者文件来设置,这样Git就 ...

  6. spss命令数据整理中compute与record命令的区别

    spss命令数据整理中compute与record命令的区别 record修改存在的变量,或者生成新的变量 spss变量定义说明 1.Name:变量名,定义规则与其它软件中的雷同,如第一个字符必须为字 ...

  7. MVVM模式解析和在WPF中的实现(三)命令绑定

    MVVM模式解析和在WPF中的实现(三) 命令绑定 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 MVVM模式解析和在WPF中 ...

  8. Fedora 21 中添加及更新源的命令

    原文: Fedora 21 中添加及更新源的命令 fedora的软件源信息文件(*.repo)都是放在 /etc/yum.repos.d 目录下的.可以通过# ls -l /etc/yum.repos ...

  9. Spring MVC中各个filter的用法

    转载:http://blog.csdn.net/qyp1314/article/details/42023725 Spring MVC中各个filter的用法 2014-12-19 09:08 105 ...

随机推荐

  1. python datetime时区转换

    from pytz import timezone def datetime_as_timezone(date_time, time_zone): tz = timezone(time_zone) u ...

  2. weblogic92 :BEA-101020

    weblogic92 启动时后台出现错误:<BEA-101020> 解决方案: 1.删除临时文件: user_projects/domains/base_domain/servers/Ad ...

  3. C++primer 练习12.27

    // 12_27.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include<iostream> #include< ...

  4. poj 3259 Wormholes spfa算法

    点击打开链接 Wormholes Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 25582   Accepted: 9186 ...

  5. 11g RMAN Restore archivelog用法

    I.备份所有归档日志文件 RMAN> BACKUP FORMAT '/u01/backup/arch_%U_%T' skip inaccessible filesperset 5 ARCHIVE ...

  6. HDU 4597 Play Game 记忆化DP

    Play Game Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others) Proble ...

  7. Cocos2d-x下Lua调用自定义C++类和函数的最佳实践[转]

    Cocos2d-x下Lua调用C++这事之所以看起来这么复杂.网上所有的文档都没讲清楚,是因为存在5个层面的知识点: 1.在纯C环境下,把C函数注册进Lua环境,理解Lua和C之间可以互相调用的本质 ...

  8. DP走方格型

    Hrbust 1812  http://acm.hrbust.edu.cn/index.php?m=ProblemSet&a=showProblem&problem_id=1812 有 ...

  9. 我的Python基础笔记

    Python是从刚开始参加工作,就有听各方面的测试大牛推崇,但是刚开始做测试时还是把基础的测试方法放在第一位来学习的,直到半年多以后才开始接触Python. 我的Python基础主要是以廖雪峰老师的在 ...

  10. 怎样对CODESOFT中的条形码进行黑白转换

      CODESOFT 2015标签设计软件能 够提供无与伦比的灵活性.功能和支持,其面对的用户也是极其的广泛.对于一些需要打印黑白反转条形码的特殊用户,例如使用黑色标签纸的用 户,CODESOFT 2 ...