使用GoldenGate EVENTACTIONS执行数据的实时触发和定制化
Oracle
GoldenGate不仅可以在线实时同步数据(包括增量和存量),也内置有一套事件触发流程,允许用户根据某张表某条记录的某个特殊字段值,触发相应的自定义执行流程,比如接收到某个银行账号的大笔转账金额之后,触发一条报警信息,或者根据某条记录,自动停止目标端的投递进程。
基于变更记录触发事件的设置,如果是源端抽取进程,则在Table语句的Filter或Where中定义,如果是目标端投递进程,则可以在Replicat进程的MAP语句中定义。当然,也可以在一个SQLEXEC执行一条SQL语句或存储过程中定义。
在Extract或参数文件中,通过使用 EVENTACTIONS
来定义自定义处理过程。EVENTACTIONS
可以带上多个关键字,比如
: IGNORE, DISCARD, ABORT, STOP, SHELL, TRACE, LOG
,每个关键字代表不同的处理功能,可参考官方文档查看。一旦有符合条件的记录,则触发对应的功能。
本示例中,通过执行shell演示如下功能:当目标端接收完源端的所有数据之后,触发一个导出操作,即将目标库的数据导出为一个DMP文件。
首先需要在源端创建一张作业状态表,当数据处理完成之后,插入一条标志源端执行完成的操作记录,当目标端replicat接收到此记录之后,则触发数据泵的导出操作。
下面是源端的抽取进程参数
EXTRACT ext1
USERID idit_prd, PASSWORD idit_prd
RMTHOST insodb02, MGRPORT 7809
RMTTRAIL ./dirdat/cc
TABLE idit_prd.myobjects ;
TABLE idit_prd.ops_job_status ;
目标端投递进程参数
REPLICAT rep1
SETENV
(NLS_LANG="AMERICAN_AMERICA.WE8ISO8859P1")
SETENV (ORACLE_SID=GGDB2)
ASSUMETARGETDEFS
USERID idit_prd,PASSWORD idit_prd
MAP idit_prd.myobjects, TARGET
idit_prd.myobjects;
MAP idit_prd.ops_job_status, TARGET
idit_prd.ops_job_status , FILTER (@STREQ (STATUS, "PROCESSING COMPLETE" )),
EVENTACTIONS ( IGNORE TRANS , STOP, SHELL "/home/oracle/exp.sh"
);
本示例中的状态表为OPS_JOB_STATUS.
目标端进程中在Filter中进行记录判断,比较在status字段中是否收到了“PROCESSING
COMPLETE”的值,如果是,则触发后面EVENTACTIONS中指定的操作:
· Ignore:忽略后续的操作事务,不再往OPS_JOB_STATUS表写入记录。
· Stop:停止目标端投递进程
· Shell: 执行指定的exp.sh脚本。
以下是exp.sh的内容
#!/bin/ksh
/opt/oracle/product/server/10.2.0.4.5/bin/expdp
idit_prd/idit_prd parfile=/home/oracle/exp.par
parfile
exp.par中定义的导出内容如下:
tables=MYOBJECTS
directory=dumpdir
logfile=dumpdir:exp.log
dumpfile=myobjects.dmp
运行起来之后,可以看到目标端rep1进程还是运行状态:
GGSCI (insodb02) 12> !
info replicat rep1
REPLICAT REP1 Last Started 2011-04-01 13:28 Status RUNNING
Checkpoint Lag 00:00:00
(updated 00:00:08 ago)
Log Read Checkpoint File ./dirdat/cc000019
2011-04-01 13:06:05.059982 RBA 931
当确认源端处理完了某部分数据,比如某个月或某年的记录之后,我们在源端的状态表中插入一条停止状态的记录:
SQL> insert into ops_job_status values
(sysdate,'PROCESSING COMPLETE');
1 row created.
SQL> commit;
Commit complete.
现在查看目标端进程的状态,可以看到投递进程rep1已经stopped,预期的data
pump任务也已触发。可以在文件系统上查看导出的DMP文件(对应的data
pump 导出目录)。
投递进程状态:
GGSCI (insodb02) 13> !
info replicat rep1
REPLICAT REP1 Last Started 2011-04-01 13:28 Status STOPPED
Checkpoint Lag 00:00:08
(updated 00:00:04 ago)
Log Read Checkpoint File ./dirdat/cc000019
2011-04-01 13:38:15.017514 RBA 1107
导出的dmp文件
oracle@insodb02:/u01/oracle> ls -lrt
-rw-r--r-- 1 oracle dba 1051 Apr 1 13:38
exp.log
-rw-r----- 1 oracle dba 5009408 Apr 1 13:38
myobjects.dmp
由此,我们可以看到,通过OGG,不仅可以在异构平台之后复制数据,也可以基于表里的变化数据,触发相应的脚本,从而实现我们期望的预警或监控运维。
使用GoldenGate EVENTACTIONS执行数据的实时触发和定制化的更多相关文章
- 通过rsync+inotify实现数据的实时备份
我讲到过利用rsync实现数据的镜像和备份,但是要实现数据的实时备份,单独靠rsync还不能实现,本文就讲述下如何实现数据的实时备份. 一.rsync的优点与不足 与传统的cp.tar备份方式相比,r ...
- rsync+inotify实现数据的实时备份
一.rsync概述 1.1.rsync的优点与不足 rsync与传统的cp.tar备份方式相比,rsync具有安全性高.备份迅速.支持增量备份等优点,通过rsync可以解决对实时性要求不高的数据备份需 ...
- 通过rsync+inotify实现数据的实时备份(多台备份机)
在前面的博文中,我讲到过利用rsync实现数据的镜像和备份,但是要实现数据的实时备份,单独靠rsync还不能实现,本文就讲述下如何实现数据的实时备份. 一.rsync的优点与不足 与传统的cp.ta ...
- rsync+inotify实现数据的实时同步更新
rsync可以实现触发式的文件同步,但是通过crontab守护进程方式进行触发,同步的数据和实际数据会有差异,而inotify可以监控文件系统的各种变化,当文件有任何变动时,就触发rsync同步,这样 ...
- 通过rsync+inotify实现数据的实时备份 【转载】
在前面的博文中,我讲到过利用rsync实现数据的镜像和备份,但是要实现数据的实时备份,单独靠rsync还不能实现,本文就讲述下如何实现数据的实时备份. 一.rsync的优点与不足 与传统的cp ...
- rsync+sersync实现数据文件实时同步
一.简介 sersync是基于Inotify开发的,类似于Inotify-tools的工具: sersync可以记录下被监听目录中发生变化的(包括增加.删除.修改)具体某一个文件或某一个目录的名字: ...
- ODI利用goldengate实现增量数据捕获
ODI利用goldengate实现增量数据捕获 上个月,Oracle发布了ODI的最新版本10.1.3.6_02,其中增加了针对采用goldengate获取源数据库增量变化的知识模块,这样当系统需要实 ...
- kityminder-editor + MongoDB 思维导图数据自动实时保存方案
最近开始做自己的第一个开源项目:一个基于思维导图的测试用例管理系统MinderCase,在做了一周的技术调研后,决定采用kityminder-editor作为思维导图编辑器,为了支持实时存储,当思维导 ...
- 利用Flume将MySQL表数据准实时抽取到HDFS
转自:http://blog.csdn.net/wzy0623/article/details/73650053 一.为什么要用到Flume 在以前搭建HAWQ数据仓库实验环境时,我使用Sqoop抽取 ...
随机推荐
- textarea 中的换行符
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- leetcode 单链表相关题目汇总
leetcode-19-Remove Nth From End of List—移除链表中倒数第n个元素 leetcode-21-Merge Two Sorted Lists—两个已排序链表归并 ...
- Java根据链接生成二维码
Java根据链接生成二维码 相关 jar 包: core-3.1.0.jar 源码及 jar 包下载:http://files.cnblogs.com/files/liaolongjun/qrcode ...
- css页面字体替换源代码和页面显示不一样问题解决
2018年8月27日19:58:12 css指定字体的时候,可以自制的字体,比如字符替换,比如 0没有被替换,其他在源代码被替换对应的字母,但是现实的时候在替换成正确的数字 很简单,防爬虫,但是... ...
- ASP.NET Core 问题排查:Request.EnableRewind 后第一次读取不到 Request.Body
实际应用场景是将用户上传的文件依次保存到阿里云 OSS 与腾讯云 COS ,实现方式是在启用 Request.EnableRewind() 的情况下通过 Request.Body 读取流,并依次通过 ...
- NTSC PAL 介绍
NTSC-J是日本地区的模拟 电视系统和视频显示标准,于2011年7月24日在全国47个县中的44个地区停止运营.模拟广播于2012年3月31日在2011年Tōhoku摧毁的三个县停止地震和海啸(岩手 ...
- 2018-2019-2 网络对抗技术 20165311 Exp6 信息搜集与漏洞扫描
20165311 Exp6 信息搜集与漏洞扫描 1.实验内容 2.实验过程 任务一:各种搜索技巧的应用 通过搜索引擎进行信息搜集 使用FOFA.SO 搜索特定类型的文件 任务二:DNS IP注册信息的 ...
- 深入理解iostat
前言 iostat算是比较重要的查看块设备运行状态的工具,相信大多数使用Linux的同学都用过这个工具,或者听说过这个工具.但是对于这个工具,引起的误解也是最多的,大多数人对这个工具处于朦朦胧胧的状态 ...
- c#重命名文件,报错“System.NotSupportedException”类型的未经处理的异常在 mscorlib.dll 中发生”
修改远程服务器的文件名,报错“System.NotSupportedException”类型的未经处理的异常在 mscorlib.dll 中发生”,“System.NotSupportedExcept ...
- CF1033G Chip Game
题意 给你一个长度为\(n\)的序列和一个数\(m\). 小A和小B分别在\([1,m]\)选出一个数\(a\)和\(b\),然后开始游戏. 轮到小A时,他选择一个元素减\(a\):小B则选择一个元素 ...