array(2) { ["docs"]=> array(10) { [0]=> array(10) { ["id"]=> string(3) "428" ["text"]=> string(77) "Visual Studio 2017 单独启动MSDN帮助(Microsoft Help Viewer)的方法" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(8) "DonetRen" ["tagsname"]=> string(55) "Visual Studio 2017|MSDN帮助|C#程序|.NET|Help Viewer" ["tagsid"]=> string(23) "[401,402,403,"300",404]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400964" ["_id"]=> string(3) "428" } [1]=> array(10) { ["id"]=> string(3) "427" ["text"]=> string(42) "npm -v;报错 cannot find module "wrapp"" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "zzty" ["tagsname"]=> string(50) "node.js|npm|cannot find module "wrapp“|node" ["tagsid"]=> string(19) "[398,"239",399,400]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400760" ["_id"]=> string(3) "427" } [2]=> array(10) { ["id"]=> string(3) "426" ["text"]=> string(54) "说说css中pt、px、em、rem都扮演了什么角色" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(12) "zhengqiaoyin" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400640" ["_id"]=> string(3) "426" } [3]=> array(10) { ["id"]=> string(3) "425" ["text"]=> string(83) "深入学习JS执行--创建执行上下文(变量对象,作用域链,this)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "Ry-yuan" ["tagsname"]=> string(33) "Javascript|Javascript执行过程" ["tagsid"]=> string(13) "["169","191"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511399901" ["_id"]=> string(3) "425" } [4]=> array(10) { ["id"]=> string(3) "424" ["text"]=> string(30) "C# 排序技术研究与对比" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "vveiliang" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(8) ".Net Dev" ["catesid"]=> string(5) "[199]" ["createtime"]=> string(10) "1511399150" ["_id"]=> string(3) "424" } [5]=> array(10) { ["id"]=> string(3) "423" ["text"]=> string(72) "【算法】小白的算法笔记:快速排序算法的编码和优化" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "penghuwan" ["tagsname"]=> string(6) "算法" ["tagsid"]=> string(7) "["344"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511398109" ["_id"]=> string(3) "423" } [6]=> array(10) { ["id"]=> string(3) "422" ["text"]=> string(64) "JavaScript数据可视化编程学习(二)Flotr2,雷达图" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "chengxs" ["tagsname"]=> string(28) "数据可视化|前端学习" ["tagsid"]=> string(9) "[396,397]" ["catesname"]=> string(18) "前端基本知识" ["catesid"]=> string(5) "[198]" ["createtime"]=> string(10) "1511397800" ["_id"]=> string(3) "422" } [7]=> array(10) { ["id"]=> string(3) "421" ["text"]=> string(36) "C#表达式目录树(Expression)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "wwym" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(4) ".NET" ["catesid"]=> string(7) "["119"]" ["createtime"]=> string(10) "1511397474" ["_id"]=> string(3) "421" } [8]=> array(10) { ["id"]=> string(3) "420" ["text"]=> string(47) "数据结构 队列_队列实例:事件处理" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "idreamo" ["tagsname"]=> string(40) "C语言|数据结构|队列|事件处理" ["tagsid"]=> string(23) "["246","247","248",395]" ["catesname"]=> string(12) "数据结构" ["catesid"]=> string(7) "["133"]" ["createtime"]=> string(10) "1511397279" ["_id"]=> string(3) "420" } [9]=> array(10) { ["id"]=> string(3) "419" ["text"]=> string(47) "久等了,博客园官方Android客户端发布" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(3) "cmt" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511396549" ["_id"]=> string(3) "419" } } ["count"]=> int(200) } 222 OGG 19C—— 一、Oracle GoldenGate 介绍 - 爱码网

一、ogg产品介绍

           GoldenGate软件是一种基于日志的结构化数据复制软件。GoldenGate 能够实现大量交易数据的实时捕捉、变换和投递,实现源数据库与目标数据库的数据同步,保持亚秒级的数据延迟。GoldenGate能够支持多种拓扑结构,包括一对一,一对多,多对一,层叠和双向复制等等。并支持高可用性解决方案,实时数据集成,事务性更改数据捕获,数据复制,转换以及运营和分析企业系统之间的验证。

1.1.1、 OGG系统的架构

OGG 19C—— 一、Oracle GoldenGate 介绍

1.2.1、OGG工作的架构

OGG 19C—— 一、Oracle GoldenGate 介绍

1.3.1、OGG各个组件

  1. Manager:是ogg中的管理控制进程,用户管理extract,data dump,replicat等
  2. Extract:是在源数据库上的捕获数据的机制(初始化数据装载:从源中提取改变的数据;同步变化数据:保持与数据源数据同步,并将捕获的数据同步到目标(data dump)。进程的状态包括Stopped(正常停止),Starting(正在启动),Running(正在运行),Abended(Abnomal End的缩写,标示异常结束)
  3. Replicat:是读取Extract提取到的数据应用到目标数据库。
  4. Collector:是运行在目标后台程序,接收TCP/IP网络传来的变化数据,并写到Trail文件。(动态是由管理进程自动启动的,用户不能交互。静态是可以手工运行。我使用的都是动态。)
  5. Trails:是持久化提取和复制数据。源叫local Trail 目标叫Remote Trail。
  6. Data Pumps:是一个在源的Extract机制,可以不配置,那么由主Extract将数据发送到Remote Trail文件中。使用其好处:如果目标端网络失败,源extract进程不会失败;需要在不同阶段实现数据的过滤或者转化;多个数据源复制到数据中心;数据需要复制到多个目标;
  7. Groups:是为了区分系统上面多个Extract和Replicat进程。
  8. CheckPoint:是用于抽取或者复制失败后重新定位起点。

1.4.1、OGG工作原理

          利用抽取进程(Extract Process)在源端数据库中读取Online Redo Log或者Archive Log,然后进行解析,只提取其中数据的变化信息,比如DML操作——增、删、改操作,将抽取的信息转换为GoldenGate自定义的中间格式存放在队列文件(trail file)中。再利用传输进程将队列文件(trail file)通过TCP/IP传送到目标系统。目标端有一个进程叫Server Collector,这个进程接受了从源端传输过来的数据变化信息,把信息缓存到GoldenGate 队列文件(trail file)当中,等待目标端的复制进程读取数据。    GoldenGate 复制进程(replicat process)从队列文件(trail file)中读取数据变化信息,并创建对应的SQL语句,通过数据库的本地接口执行,提交到目标端数据库,提交成功后更新自己的检查点,记录已经完成复制的位置,数据的复制过程最终完成。

 

2、OGG工作模式capture和apply

  • 经典捕获(Oracle或非Oracle源)和非集成复制

  • 经典捕获(Oracle或非Oracle源)和集成复制

  • 集成捕获和非集成复制

  • 集成捕获和集成复制

2.1、Capture 模式

2.1.1集成模式捕获

capture被称为Extract,其对应的名字实例都称为group,包裹过程本身以及支持该过程的文件。

data pump也是一个Extract,可以将捕获的数据持久化到文件trail中,数据泵不会捕获数据,只是读取本地并通过网络传播到目标。

集成模式:中的extract流程与数据库日志挖掘服务器交互,以逻辑更改记录LCR的形式接受数据更改。

OGG 19C—— 一、Oracle GoldenGate 介绍

2.1.2经典模式捕获

OGG 19C—— 一、Oracle GoldenGate 介绍

其中extract进程与源系统重做日志和归档日志或者附带归档日志捕获数据。支持大多数oracle类型,但是对复杂数据类型有限。不支持多租用户容器。

2.1.3集成模式优点

  • 由于集成捕获已与数据库完全集成,因此无需其他设置即可与Oracle RAC,ASM和TDE一起使用。

  • 集成捕获使用数据库日志挖掘服务器来访问Oracle重做流,其优势在于能够在归档日志的不同副本或联机日志的不​​同镜像版本之间自动切换。因此,假设可以使用已归档日志和联机日志的其他副本,则集成捕获可以透明地处理由于磁盘损坏,硬件故障或操作员错误而导致的日志文件缺失。

  • 集成捕获功能可以更快地过滤表。

  • 集成捕获可更高效地处理时间点恢复和RAC集成。

  • 集成捕获功能集成了日志管理。Oracle Recovery Manager(RMAN)自动保留Extract所需的存档日志。

  • 集成捕获是唯一支持从多租户容器数据库捕获的模式。一个摘录可以挖掘多租户容器数据库中的多个可插入数据库。

  • 对于版本11.2.0.4和更高版本的源数据库(源兼容性设置为11.2.0.4或更高版本),DDL的捕获由日志挖掘服务器异步执行,并且不需要安装特殊的触发器,表或其他数据库对象。无需停止用户应用程序即可执行Oracle GoldenGate升级。当Extract与低于11.2.0.4版的Oracle 11 g源数据库处于集成模式时,需要使用DDL触发器和支持对象。

  • 因为集成捕获和集成应用都是数据库对象,所以对象的命名遵循与其他Oracle数据库对象相同的规

2.2、apply 复制

2.2.1并行复制Replicat in parallel

       并行复制是复制的新变体,可并行应用事务以提高性能。与集成复制类似,它考虑了事务之间的依赖性。依赖关系计算,映射和应用程序的并行性在数据库外部执行,因此可以卸载到另一台服务器。在此过程中维护事务完整性。此外,并行复制通过将大型事务拆分为多个块并并行应用来支持大型事务的并行应用。

2.2.2非集成模式non-integrated

  • 读取Oracle GoldenGate跟踪。

  • 执行数据过滤,映射和转换。

  • 构造表示源数据库DML或DDL事务(按提交顺序)的SQL语句。

  • 通过Oracle调用接口(OCI)将SQL应用于目标

OGG 19C—— 一、Oracle GoldenGate 介绍

2.2.3集成模式integrated

  • 读取Oracle GoldenGate跟踪。

  • 执行数据过滤,映射和转换。

  • 构造表示源数据库DML事务(按提交顺序)的逻辑更改记录(LCR)。DDL通过复制直接应用。

  • 通过轻量级流接口连接到目标数据库(称为数据库入站服务器)中的后台进程。

  • 将LCR传输到入站服务器,该服务器将数据应用于目标数据库。

OGG 19C—— 一、Oracle GoldenGate 介绍

2.2.4集成复制的有点和必要条件

  • 集成复制使繁重的工作负载可以在并行应用进程之间自动划分,这些并行应用进程同时应用多个事务,同时保留了源事务的完整性和原子性。可以使用PARALLELISMMAX_PARALLELISM参数配置最小和最大数量的应用程序。当工作负载增加时,Replicat会自动添加其他服务器,然后在工作负载减轻时再次向下调整。

  • Integrated Replicat只需很少的工作即可配置。所有工作都在一个Replicat参数文件中进行配置,而无需配置范围分区。

  • 通过Replicat和入站服务器之间的轻量级应用程序编程接口(API),可以为集成的Replicat启用高性能应用流。

  • 屏障事务通过多个服务器应用过程之间的集成复制来协调。

  • DDL操作被作为直接事务处理,通过在DDL执行之前等待服务器处理完成来强加障碍。

  • 临时复制主键更新由集成复制以无缝方式处理。

  • 集成复制适用于单个或可插入数据库。

  • 目标Oracle数据库必须是Oracle 11.2.0.4或更高版本。

  • 必须在源数据库上启用补充日志记录,以支持对表之间的依赖性进行计算以及对目标上的并发事务进行调度。配置日志记录属性中提供了启用所需日志记录的说明。可以在启动Oracle GoldenGate进程之前(直到之前)随时启用此日志记录。

  • Oracle Database 12.2.0.1及更高版本支持集成并行复制。

 

 

 

 

https://docs.oracle.com/en/middleware/goldengate/core/19.1/books.html

相关文章: