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 ...
随机推荐
- ElasticSearch 概述
简介 Elasticsearch是一个基于Lucene的开源搜索引擎.Elasticsearch也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RES ...
- Mingyang.net:为什么不将Bean定义在Action参数中?
Spring MVC提供了一种方便的Bean填充方式: @Controller public class CmsChannelController extends AbstractController ...
- ZOJ 3042 City Selection II 【序】【离散化】【数学】
题意: 输入数据n,m.n代表工厂的数量,m代表城市的数量. 接下来n+m行为工厂和城市的坐标. 规定如图所示方向刮风,工厂的air会污染风向地区的air. 注意,工厂和城市的坐标表示的是从x到x+1 ...
- router os
http://www.oschina.net/news/47568/router-operation-system
- SQL Server int类型值最大2147483647(2^31 - 1)
突发奇想,一个字增字段,假设每天增加1000条记录,多少年之后写不进int类型的字段了2147483647 / 1000 / 365 = 5883.51684109589041095890410958 ...
- Grunt 之 watch 和 livereload
现在 watch 中已经集成了 livereload ,所以把它们放在一起说明. watch 可以监控特定的文件,在添加文件.修改文件.或者删除文件的时候自动执行自定义的任务,比如 livereloa ...
- VC让对话框显示就最大化
方法一:在OnInitDialog()函数中 ShowWindow(SW_SHOWMAXIMIZED); 初始化的时候 方法二: 当然,你可以获取屏幕大小,然后设置窗口位置/大小 //ShowWind ...
- 函数变量作用域(python)
收集参数:该参数个数不确定 >>> def test(*params): print('参数的长度是:', len(params)); print('第二个参数是:', params ...
- Editplus 注册码
EditPlus 是一款功能强大的文字处理软件.它可以充分的替换记事本,它也提供网页作家及程序设计师许多强悍的功能.支持 HTML.CSS.PHP.ASP.Perl.C/C++.Java.JavaSc ...
- 【转载】linux环境下tcpdump源代码分析
linux环境下tcpdump源代码分析 原文时间 2013-10-11 13:13:02 CSDN博客 原文链接 http://blog.csdn.net/han_dawei/article/d ...