GoldenGate中使用FILTER,COMPUTE 和SQLEXEC命令
本文主要介绍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 |
基于上面的配置进行数据同步测试,可以看到目标表中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 |
GoldenGate中使用FILTER,COMPUTE 和SQLEXEC命令的更多相关文章
- 关于Oracle GoldenGate中Extract的checkpoint的理解 转载
什么是checkpoint? 在Oracle 数据库中checkpoint的意思是将内存中的脏数据强制写入到磁盘的事件,其作用是保持内存中的数据与磁盘上的数据一致.SCN是用来描述该事件发生的准确的时 ...
- 模拟一下goldengate中断后,重新同步操作
模拟一下goldengata中断后,重新同步操作: 1.关掉源端抽取进程 GGSCI (20081122-2105) 15> info all Program Status ...
- 详解AngularJS中的filter过滤器用法
系统的学习了一下angularjs,发现angularjs的有些思想根php的模块smarty很像,例如数据绑定,filter.如果对smarty比较熟悉的话,学习angularjs会比较容易一点.这 ...
- Oracle GoldenGate中HANDLECOLLISIONS参数使用详解
Oracle GoldenGate中HANDLECOLLISIONS参数使用详解 HANDLECOLLISIONS 是一个 replicat 进程参数,主要在 initial load 中使用.在 ...
- gitattributes中的filter
.gitattributes文件就是一个简单的text文本文件,它的作用是gives attributes to pathnames. 该文件中的一些配置可以为某些特定目录或者文件来设置,这样Git就 ...
- spss命令数据整理中compute与record命令的区别
spss命令数据整理中compute与record命令的区别 record修改存在的变量,或者生成新的变量 spss变量定义说明 1.Name:变量名,定义规则与其它软件中的雷同,如第一个字符必须为字 ...
- MVVM模式解析和在WPF中的实现(三)命令绑定
MVVM模式解析和在WPF中的实现(三) 命令绑定 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 MVVM模式解析和在WPF中 ...
- Fedora 21 中添加及更新源的命令
原文: Fedora 21 中添加及更新源的命令 fedora的软件源信息文件(*.repo)都是放在 /etc/yum.repos.d 目录下的.可以通过# ls -l /etc/yum.repos ...
- Spring MVC中各个filter的用法
转载:http://blog.csdn.net/qyp1314/article/details/42023725 Spring MVC中各个filter的用法 2014-12-19 09:08 105 ...
随机推荐
- [ActionScript 3.0] AS3 获取函数参数个数
function createFunction(param1:String,param2:String,param3:int=0):void { trace(arguments.length);//a ...
- [HDU 5090] Game with Pearls (贪心)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5090 题目大意:给你n个数,问你给若干个数增加c*k(c>=0)能否组成1,2,3,4,5,.. ...
- 【转】maven POM.xml 标签详解
http://blog.csdn.net/sunzhenhua0608/article/details/32938533 pom作为项目对象模型.通过xml表示maven项目,使用pom.xml来实现 ...
- php不使用copy()函数复制文件的方法
本文实例讲述了php不使用copy()函数复制文件的方法.分享给大家供大家参考.具体如下:下面的代码不使用php内置的copy函数,直接通过文件读取写入的操作方式复制文件 <?php funct ...
- Sqoop2环境搭建
正在准备做Spark SQL external data source与关系型数据库交互的部分,参考下Sqoop2是如何操作关系型数据库的. 下载地址:http://archive.cloudera. ...
- 解决PHP生成校验码时“图像因其本身有错无法显示”的错误
今天使用http://crazymud.iteye.com/blog/452293给出的代码进行PHP生成校验码功能的实现,发现firefox一直提示“图像.......因其本身有错无法显示”的问题, ...
- Appium输入中文的问题,简单的方法
经常有人问,Appium怎么输入中文,下面提供一种相对简单的方式. 以前曾经提到过capabilities关键字,里面有这样2个属性, |`unicodeKeyboard`| 使用 Unicode 输 ...
- Fiddler抓包工具的使用
下载 自行去官网下载 http://www.telerik.com/fiddler 配置Fiddler 1.打开Fiddler, Tools-> Fiddler Options -> HT ...
- POJ1002_487-3279_C++
题目:http://poj.org/problem?id=1002 我知道你们最需要的是这个 [ 手动滑稽 ] STD 给出的方法是丢进一个数组,然后排序,相邻的是重复的 这个方法,时间复杂度很不错, ...
- canvas-star6.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...