OGG学习笔记01-基础概述

OGG(Oracle Golden Gate),最近几年在数据同步、容灾领域特别火,甚至比Oracle自己的原生产品DataGuard还要风光,主要是因为其跨平台、跨数据库、跨版本的强大特性。

OGG理论概念

我们可以搜索到网上对它的简单介绍:
> Oracle Golden Gate软件是一种基于日志的结构化数据复制备份软件,它通过解析源数据库在线日志或归档日志获得数据的增量变化,再将这些变化应用到目标数据库,从而实现源数据库与目标数据库同步。
> Oracle Golden Gate可以在异构的IT基础结构(包括几乎所有常用操作系统平台和数据库平台)之间实现大量数据亚秒一级的实时复制,从而可以在应急系统、在线报表、实时数据仓库供应、交易跟踪、数据同步、集中/分发、容灾、数据库升级和移植、双业务中心等多个场景下应用。同时,Oracle Golden Gate可以实现一对一、广播(一对多)、聚合(多对一)、双向、点对点、级联等多种灵活的拓扑结构.

目前许多客户环境都已经在广泛使用OGG。由于工作需要,近期我也会系统的学习下OGG,目前学习主要以OGG在Oracle数据库之间的同步来说明一些基本概念,后续看时间情况可能了解OGG对其他主流数据库的同步。

假设已有源数据库和目标数据库,且分别部署好OGG软件。

源数据库部署的OGG,简称源OGG;目标数据库部署的OGG,简称目标OGG。

同步的过程就是源OGG的EXTRACT进程从源数据库的联机redologs中抽取获得变化,把它写到本地trail文件中,然后源OGG的Data pump进程再从本地trail文件中抽取变化传给目标OGG的collector进程,目标的collector进程再把这些变化写入目标trail文件中,最后目标OGG的Replicat进程把目标trail文件中记录的变化应用到目标数据库中。

如果要同步的表数量比较多或是业务有区分,需要分开管理,OGG是支持分开多个extract进程,多个datapump进程,多个replicat进程,这样,可以启动或停止其中任意一类同步,而不影响其他的同步。

由此,我们可以得到一张Oracle Golden Gate的简要体系图:

需要注意的是,每套OGG所有的进程都是由其Manager进程来管理的,也就是说Manager进程负责管理,启动关闭其他进程。OGG用组来表示它的进程,上面简单提到的extract、replicat这些进程,实际上需要各自的参数文件、检查点文件等。这些内容共同组成一个组,且每个组需要有一个组名字。

可以将上面的简要体系图再标注一些内容,便于理解OGG实际的工作方式。



自己画的草图太丑,借用Oracle的一张图:



OGG的检查点信息,对于源OGG只能以文件形式默认存放在GGHOME/dirchk目录下,一个组对应一个文件。

而对于目标OGG检查点信息可以存放在数据库表中,且建议存放到数据库表中。

对于源数据库,如果要使用OGG,需要配置supplemental logging,原因是OGG相当于逻辑同步,除了要记录被修改的记录,还要把能够标识这条记录的信息同时记录在日志中。这样的话,Oracle默认情况是不达标的,需要额外开启supplemental logging才可以。

具体做法是:在数据库级别开启最小附加日志,在需要同步的表级别开启详细附加日志。

#数据库级别开启最小附加日志:
SQL> alter database add supplemental log data;
#表级别开启详细附加日志(这里举例是jy用户下的t_second表):
GGSCI> add trandata jy.t_second

对于目标数据库,配置检查点信息到目标数据库表中,具体做法:

#1.目标GG的全局参数(./globals)配置
checkpointtable ggt.chkpt
#2.命令添加checkpointtable
GGSCI> add checkpointtable ggt.chkpt

复制进程可以指定checkpointtable 从而使用数据库表记录检查点信息。

OGG安装介绍

OGG介质下载,在ORACLE官网就有提供最新版本下载,如果需要下载历史版本的,就需要MOS账号。
下载地址: https://edelivery.oracle.com
OGG的安装也非常简单,在期望的安装目录下,直接解压压缩文件即可。

[ogg@oradb30 ~]$ cd /u01/app
[ogg@oradb30 app]$ ls
oracle
[ogg@oradb30 app]$ mkdir ogg
[ogg@oradb30 app]$ cd ogg/
[ogg@oradb30 ogg]$ pwd
/u01/app/ogg
[ogg@oradb30 ogg]$ tar xvf /u01/media/fbo_ggs_Linux_x64_ora10g_64bit.tar

为了便于管理维护,我们创建新的操作系统用户和数据库用户,专门给OGG使用。

#创建系统用户ogg,隶属于oinstall组
useradd ogg -g oinstall

环境变量,除了设置OGG自己,还需要设置可以访问到库文件,这也是为何将系统用户ogg隶属于oinstall组,保证其有权限访问oracle安装目录的库文件。

export ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
export GG_HOME=/u01/app/ogg
export PATH=$GG_HOME:$PATH

确定ggsci可以正常使用,然后使用create subdirs创建OGG的子目录,最后配置好Manager。

#1.确定ggsci可以正常使用
[ogg@oradb30 ~]$ ggsci
ggsci: error while loading shared libraries: /u01/app/oracle/product/10.2.0/db_1/lib/libclntsh.so.10.1: cannot restore segment prot after reloc: Permission denied 我这里遇到的这个错误关键点是“cannot restore segment prot after reloc: Permission denied”是因为主机系统SELinux开启的原因。关闭SELinux即可解决。
[root@oradb30 ~]# su - ogg
[ogg@oradb30 ~]$ cd /u01/app/ogg/
[ogg@oradb30 ogg]$ ggsci Oracle GoldenGate Command Interpreter for Oracle
Version 11.2.1.0.1 OGGCORE_11.2.1.0.1_PLATFORMS_120423.0230_FBO
Linux, x64, 64bit (optimized), Oracle 10g on Apr 23 2012 07:30:46 Copyright (C) 1995, 2012, Oracle and/or its affiliates. All rights reserved. GGSCI (oradb30) 1> #2.使用create subdirs创建OGG的子目录
GGSCI (oradb30) 1> create subdirs Creating subdirectories under current directory /u01/app/ogg Parameter files /u01/app/ogg/dirprm: already exists
Report files /u01/app/ogg/dirrpt: created
Checkpoint files /u01/app/ogg/dirchk: created
Process status files /u01/app/ogg/dirpcs: created
SQL script files /u01/app/ogg/dirsql: created
Database definitions files /u01/app/ogg/dirdef: created
Extract data files /u01/app/ogg/dirdat: created
Temporary files /u01/app/ogg/dirtmp: created
Stdout files /u01/app/ogg/dirout: created #3.配置好Manager
GGSCI (oradb30) 2> edit param mgr
port 7777
GGSCI (oradb30) 3> info mgr
Manager is DOWN!
GGSCI (oradb30) 4> start mgr
Manager started.
GGSCI (oradb30) 5> info mgr
Manager is running (IP port oradb30.7777).

后续extract、replicate等OGG实际工作的进程(组)配置,将在下篇《OGG学习笔记02-单向复制配置实例》详细说明。

Reference

- 张晓明. 大话Oracle Grid[M]. 人民邮电出版社, 2014.

OGG学习笔记01-基础概述的更多相关文章

  1. OGG学习笔记01

    OGG学习笔记01-基础概述OGG(Oracle Golden Gate),最近几年在数据同步.容灾领域特别火,甚至比Oracle自己的原生产品DataGuard还要风光,主要是因为其跨平台.跨数据库 ...

  2. PHP学习笔记01——基础语法

    <!DOCTYPE html> <html> <?php // 1.使用$加变量名来表示变量,php是弱类型语言,不要求在使用变量前声明,第一次赋值时变量才被创建 $a ...

  3. Elasticserach学习笔记-01基础概念

    本文系本人根据官方文档的翻译,能力有限.水平一般,如果对想学习Elasticsearch的朋友有帮助,将是本人的莫大荣幸. 原文出处:https://www.elastic.co/guide/en/e ...

  4. OGG学习笔记03-单向复制简单故障处理

    OGG学习笔记03-单向复制简单故障处理 环境:参考:OGG学习笔记02-单向复制配置实例 实验目的:了解OGG简单故障的基本处理思路. 1. 故障现象 故障现象:启动OGG源端的extract进程, ...

  5. OGG学习笔记03

    OGG学习笔记03-单向复制简单故障处理 环境:参考:OGG学习笔记02-单向复制配置实例实验目的:了解OGG简单故障的基本处理思路. 1. 故障现象故障现象:启动OGG源端的extract进程,da ...

  6. OGG学习笔记02-单向复制配置实例

    OGG学习笔记02-单向复制配置实例 实验环境: 源端:192.168.1.30,Oracle 10.2.0.5 单实例 目标端:192.168.1.31,Oracle 10.2.0.5 单实例 1. ...

  7. OGG学习笔记04-OGG复制部署快速参考

    OGG学习笔记04-OGG复制部署快速参考 源端:Oracle 10.2.0.5 RAC + ASM 节点1 Public IP地址:192.168.1.27 目标端:Oracle 10.2.0.5 ...

  8. OGG学习笔记05-OGG的版本

    刚接触OGG的时候,很容易被众多的版本搞晕,虽然官方有提供各版本对应认证OS和DB的表格. 个人认为一个比较简单的方式,是直接去edelivery.oracle.com下载OGG,选定一个大版本后,这 ...

  9. OGG学习笔记02

    实验环境:源端:192.168.1.30,Oracle 10.2.0.5 单实例目标端:192.168.1.31,Oracle 10.2.0.5 单实例 1.模拟源数据库业务持续运行 2.配置OGG前 ...

随机推荐

  1. GitHub上整理

    GitHub上整理 技术站点 Hacker News:非常棒的针对编程的链接聚合网站 Programming reddit:同上 MSDN:微软相关的官方技术集中地,主要是文档类 infoq:企业级应 ...

  2. SQL远程恢复

    原文:SQL远程恢复 -- ============================================= -- Author: dcrenl -- Create date: 2013-9 ...

  3. 从Http它被连接到WebSocket

    1.HTTP协议长期-fi支持和各支持的浏览器 http://blog.csdn.net/fenglibing/article/details/7100222 2.WEBclient与服务端信息交互的 ...

  4. idea中ajax中文乱码

    case:@RequestMapping中添加 produces= "text/plain;charset=UTF-8", @RequestMapping(method = Req ...

  5. HTML的框架,表格

    #2 HTML的框架,表格   [以下是个人笔记,由于水平有限,因此有错误的地方,希望M我.谢谢] 表格|表单|框架---------------表格:布局     ----现在很少用到好处: 适合做 ...

  6. MVC为什么不再需要注册通配符(*.*)了?

    MVC为什么不再需要注册通配符(*.*)了? 文章内容 很多教程里都提到了,在部署MVC程序的时候要配置通配符映射(或者是*.mvc)到aspnet_ISPAI.dll上,在.NET4.0之前确实应该 ...

  7. Ant 随想

    Ant是一种基于Java的build工具 面向任务构建,属性与于shell脚本中命令功能类型. <?xml version="1.0"?> <project na ...

  8. android判断网络的类型

    转自:http://blog.csdn.net/xxxsz/article/details/8199031 判断网络类型是wifi,还是3G,还是2G网络 对不同的网络进行不同的处理,现将判断方法整理 ...

  9. DNN简介以及安装

    开源框架DNN简介以及安装 donetnuke 是一款免费的开源cms框架,目前也有收费版,不过免费版也可以适应大家大部分的需求.我前些阵子是老板让我在20天内,做好一个官网并且发布,并且指定使用dn ...

  10. 在Linux使用GCC编译C语言共享库

    在Linux使用GCC编译C语言共享库 对任何程序员来说库都是必不可少的.所谓的库是指已经编译好的供你使用的代码.它们常常提供一些通用功能,例如链表和二叉树可以用来保存任何数据,或者是一个特定的功能例 ...