OGG_Oracle GoldenGate简介(概念)
2014-03-01 Created By BaoXinjian
GoldenGate软件是一种基于日志的结构化数据复制软件,它通过解析源数据库在线日志或归档日志获得数据的增量变化,再将这些变化应用到目标 数据库,从而实现源数据库与目标数据库同步。
GoldenGate 可以在异构的IT基础结构(包括几乎所有常用操作系统平台和数据库平台)之间实现大量数据亚秒一级的实时复制,从而在可以在应急系统、在线报表、实时数据 仓库供应、交易跟踪、数据同步、集中/分发、容灾等多个场景下应用。
同时,GoldenGate可以实现一对一、广播(一对多)、聚合(多对一)、双向、点对点、级联等多种灵活的拓扑结构。
1. 优点:
(1). 安装、配置简单
(2). 管理维护相对直观,通过其自带的Oracle Management Pack for Oracle GoldenGate管理工具,能够对其进行图形化界面的管理
(3). 支持异构复制,如不同用户,不同数据库平台的复制,这也是其亮点所在
(4). 未来发展潜力还是很看好
2. 缺点:
(1). 官方的软件目前都只支持64位系统
(2). 由于是第三方工具,对环境要求比较高,特别是在LINUX环境下,对操作系统的字符集有所要求,主要是我们系统中的表名都是中文,必须要其对中文的支持
(3). 在进行应用进程的参数配置时候发现,对于特别多的表复制,暂时不清楚GoldenGate是否有限制,因为启动的时候,我配置参数对ZLHIS所有表进行复制的时候,会提示“”错误,但是如果只对少数表或者单个表复制的时候,又不出现该提示,这个问题正在核实
(4). 目前网上能查询到的资料相当有限,普及率不是很高
3. 综上所述,GoldenGate同流复制比较起来的亮点还是在异构上,不过Oracle官方的说法是以后一流的Streams技术将被集成到GoldenGate中,这也是其发展的趋势,其价值对于我们用户的应用来说,还是很值得继续深入研究
1. OGG是数据同步软件,或者说是逻辑复制软件,其竞争对手有IBM CDC,DELL shareplex,DSG,DDS等等。
2. OGG软件是需要安装在操作系统上的,Oracle DB软件没有自带OGG软件(至少目前是这样的)
3. OGG软件有三大进程(说四大进程也行):
- 三大进程:源头抽取进程、源头传输进程、目的端应用进程(即:复制进程)
- 四大进程:源头抽取进程、源头传输进程、目的端server进程(负责在目的端写入trail文件)、目的端应用进程(即:复制进程)
4. OGG软件有两种trail file
- 源头的trail file:由源头抽取进程写入。
- 目的端的trail file: 源头传输进程传输到目的端,由目的端的server 进程写入目的端操作系统的指定路径下。
5.OGG软件中三大进程都有自己的checkpoint(即:检查点,用来记录每种进程读取到什么位置了,写入到什么位置了)
- 源头抽取进程:有读取检查点 和写入检查点
- 源头传输进程:有读取检查点 和写入检查点
- 目的端应用进程:有读取检查点
6.OGG软件三大进程处理trail file的过程:
- 源头抽取进程:读取oracle redo log(假设源头数据库是oracle),结合抽取进程的参数文件,将redo log中的内容变为OGG自有格式的文件(即:trail file),并写入到源头操作系统的指定路径下
- 源头传输进程:读取“源头抽取进程写入的trail file”,结合传输进程的参数文件,发送需要同步的数据到目的端,在目的端是由server 进程负责写入。
- 目的端应用进程:读取目的端操作系统的指定路径下的trail file,结合应用进程的参数文件,形成sql语句,在目的端db上执行这些sql语句。
7. OGG系统结构图
8. OGG可应对数据维护情况
Manager进程:
运行在源端和目标端上。每个源端或者目标端有且只能存在一个Manager进程。
它是GoldenGate的控制进程,用于启动、监控、重启GoldenGate的其他进程,报告错误及事件,分配数据存储空间,发布阈值报告等。
其运行状态有两种即RUNNING(正在运行)和STOPPED(已经停止)。
2. Extract进程:运行在数据库源端。
负责从源端数据表或者日志中捕获数据。Extract进程利用其内在的checkpoint机制,周期性地检查并记录其读写的位置,通常是写入到一个本地的trail文件。
在初始数据装载阶段,Extract进程直接从源端的数据表中抽取所有数据。
初始数据同步完成以后,Extract进程负责捕获源端数据的变化(DML和DDL)。
extract进程会优选online log。
其运行状态包括STOPPED(正常停止)、STARTING(正在启动)、RUNNING(正在运行)、ABENDED(Abnomal End的缩写,表示异常结束)。
3. Pump进程:运行在数据库源端。
如果源端使用了本地的trail文件,那么Pump进程就会把trail以数据块的形式通过TCP/IP协议发送到目标端。
Pump进程本质是Extract进程的一种特殊形式,如果不使用trail文件,那么就是Extract进程在抽取完数据以后,直接投递到目标端。
与Pump进程相对应的叫做Server Collector进程,对人们来说它是透明的。它运行在目标端,其任务就是把Extract/Pump投递过来的数据块重新组装成trail文件,人们称之为远程trail文件。
4. Trail文件:将抽取的事务信息转化成的一种GoldenGate专有格式的文件源、目标两端都会存在这种文件,源端存放的trail文件叫本地trail文件,目标端存放的trail文件叫远程trail文件。
trail文件存在的目的旨在防止单点故障,将事务信息持久化,并且使用checkpoint机制来记录其读写位置,如果故障发生,则数据可以根据checkpoint记录的位置来重传。
5. Replicat进程:运行在目标端负责读取目标端trail文件中的内容,并将其解析为DML或DDL语句,然后应用到目标数据库中。
和Extract进程一样,Replicat也有其内部的checkpoint机制,保证进程重新启动后可以从上次记录的位置开始恢复,而无数据损失的风险。
它的运行状态和Extract进程一致,包括STOPPED、STARTING、RUNNING、ABENDED。
1. dirchk:检查点文件
(1).用于存放由extract抽取进程和replicat复制进程创建的checkpoint文件,checkpoint文件保存者当前读和写的时间戳信息,通过这些信息保证了数据的准确性和数据容错功能。
文件格式如下:<group name><sequence number>.<ext>
(2).group name就是我们配置的进程名称,序列号,加上后缀名成,后缀名称分为cpe(checkpoint extract)和cpr(checkpoint replicat)。
2. dirdat:跟踪文件和抽取文件
(1).用于存放GG跟踪文件和由extract进程创建的抽取文件,这些文件将被复制进程(或者其他需要的)进一步处理和使用。
(2).文件格式如下:用户自定义的2个前缀字符+6为序列号(跟踪文件)
或者 用户自定义的格式(抽取文件
3. dirdef:数据定义文件
(1).用于存放由DEFGEN组件创建的定义文件,包含在异构环境同步中的源或者目标端的数据定义。
(2).是一个可编辑的文本文件,比如你要添加一个新进创建表的相关的同步定义就可以在此直接编辑。
文件格式如下:用户通过DEFGEN参数文件自定义
4. dirprm:参数文件
(1).用于存放GG的参数文件,这些参数文件可以通过系统文本编辑器直接编辑,也可以通过在ggsci命令行下edit params来编辑,达到的效果是一样的。
(2).文件格式如下:<group name/user-defined name>.prm
5. dirpcs:状态文件
(1).用于存放各个进程的状态信息,当相关进程运行的时候,这些进程的相关信息,比如程序名称,进程名称,进程监听端口,进程ID等等都将被写入各自状态信息文件。
文件格式如下:<group>.<extension>
(2).其中extension有3个:pce(extract) pcr(replicat) pcm(manager)
6. dirrpt:报告文件
(1).用于存放各个进程的报告文件,内容为extract、replicat和manager进程运行相关的统计报告信息。
(2).文件格式如下:<group name><sequence number>.rpt
7. dirsql:SQL脚本文件
(1).用于存放由TRIGGEN组件创建的SQL脚本文件,这些SQL脚本用于创建GG相关的记录触发器和日志表。
(2).文件格式如下:用户自定义名称.sql
或者 表名称.sql
8. dirtmp:临时文件
The default location for storing large transactions when the size exceeds the allocated memory size.
Do not edit these files.
Thanks and Regards
OGG_Oracle GoldenGate简介(概念)的更多相关文章
- redis从入门到放弃 -> 简介&概念
一.redis简介 Redis是一款开源的.高性能的键-值存储.它常被称作是一款数据结构服务器. 当值支持的主要数据类型为:字符串(strings)类型,括哈希(hashes).列表(lists).集 ...
- Google C++单元测试框架GoogleTest---Google Mock简介--概念及基础语法
就在昨天终于做了gtest的分享,我的预研工作终于结束了,感觉离我辞职的日子不远了,毕竟是专注java二百年啊,要告别实习啦.. 这篇是GoogleMock的简介文档,会在后边附带一个自己的例子. 一 ...
- ElasticSearch 简介概念及核心
1.ES是什么 ES是面向文档的Nosql,这意味着它可以存储整个对象或文档.然而它不仅仅是存储,还会索引(index)每个文档的内容使之可以被搜索.在es中,你可以对文档(而非成行成列的数据)进行索 ...
- oracle goldengate技术架构-简单试验(全)
一 GoldenGate简介 Oracle Golden Gate软件是一种基于日志的结构化数据复制备份软件,它通过解析源 数据库在线日志或归档日志获得数据的增量变化,再将这些变化应用到目标数据库, ...
- ORM查询语言(OQL)简介--高级篇(续):庐山真貌
相关文章内容索引: ORM查询语言(OQL)简介--概念篇 ORM查询语言(OQL)简介--实例篇 ORM查询语言(OQL)简介--高级篇:脱胎换骨 ORM查询语言(OQL)简介--高级篇(续):庐山 ...
- ORM查询语言(OQL)简介--高级篇:脱胎换骨
相关文章内容索引: ORM查询语言(OQL)简介--概念篇 ORM查询语言(OQL)简介--实例篇 ORM查询语言(OQL)简介--高级篇:脱胎换骨 ORM查询语言(OQL)简介--高级篇(续):庐山 ...
- ORM查询语言(OQL)简介高级篇
ORM查询语言(OQL)简介--高级篇:脱胎换骨 在写本文之前,一直在想文章的标题应怎么取.在写了<ORM查询语言(OQL)简介--概念篇>.<ORM查询语言(OQL)简介--实例篇 ...
- 【嵌入式开发】 Linux Kernel 下载 配置 编译 安装 及 驱动简介
作者 : 韩曙亮 转载请出名出处 : http://blog.csdn.net/shulianghan/article/details/38636827 一. Linux 内核简介 1. 内核功能简介 ...
- Django中ORM简介与单表数据操作
一. ORM简介 概念:.ORM框架是用于实现面向对象编程语言种不同类型系统的数据之间的转换 构建模型的步骤:重点 (1).配置目标数据库信息,在seting.py中设置数据库信息 DATABASE ...
随机推荐
- Javascript执行效率总结
Javascript是一门非常灵活的语言,我们可以随心所欲的书写各种风格的代码,不同风格的代码也必然也会导致执行效率的差异,开发过程中零零散散地接触到许多提高代码性能的方法,整理一下平时比较常见并且容 ...
- HDU1161 Eddy's mistakes
Eddy's mistakes Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- Android直播实现 Android端推流、播放
最近想实现一个Android直播,但是对于这方面的资料都比较零碎,一开始是打算用ffmpeg来实现编码推流,在搜集资料期间,找到了几个强大的开源库,直接避免了jni的代码,集成后只用少量的java代码 ...
- [Backbone]8. Level 7: Router and history
1. Ceate a route Class var AppRouter = Backbone.Router.extend({ }); 2. Add a route name it "sho ...
- MFC 小知识总结二
1 UpdateData 不能及时更新控件内容 原因: UpdateData是通过数据交换实现改变控件显示的.改变了之后必需要调用一次OnPaint才干实现刷新. 因此,若是在一个函数里重复多次调用有 ...
- [android错误] requires API level *
Call requires API level (current min ): android.content.res.Resources#getBoolean 参考文档: http://stacko ...
- 上传的文件放在SVN服务器的哪个目录下
SVN服务器版本库有两种格式,一种为FSFS,一种为BDB 把文件上传到SVN版本库后,上传的文件不再以文件原来的格式存储,而是被svn以它自定义的格式压缩成版本库数据,存放在版本库中. 如果是FSF ...
- PHP表单- PHP $_GET 变量
PHP $_GET 变量 在 PHP 中,预定义的 $_GET 变量用于收集来自 method="get" 的表单中的值. $_GET 变量 预定义的 $_GET 变量用于收集来自 ...
- Tomcat环境的搭建(web基础学习笔记一)
一.下载和安装Tomcat服务器 下载Tomcat安装程序包:http://tomcat.apache.org/ 点击[Download]跳转到如下图所示的下载页面 二.点击左侧要下载的版本,选择To ...
- java程序员认证考试题库
第一部分 基础知识练习 目标 本章对应于<学生指南>各章的内容分别提供了练习题集,包括: ● 第一章Java入门 ● 第二章数据类型和运算符 ● 第三章流程控制与数组 ● 第四章封 ...