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实际的工作方式。

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学习笔记02-单向复制配置实例

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

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

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

  3. OGG学习笔记02

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

  4. OGG学习笔记03

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

  5. 软件测试之loadrunner学习笔记-01事务

    loadrunner学习笔记-01事务<转载至网络> 事务又称为Transaction,事务是一个点为了衡量某个action的性能,需要在开始和结束位置插入一个范围,定义这样一个事务. 作 ...

  6. OGG学习笔记01-基础概述

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

  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. C++ GUI Qt4学习笔记01

    C++ GUI Qt4学习笔记01   qtc++signalmakefile文档平台 这一章介绍了如何把基本的C++只是与Qt所提供的功能组合起来创建一些简单的图形用户界面应用程序. 引入两个重要概 ...

随机推荐

  1. [Java复习] 多线程&并发 知识点补充

    0. wait/notify/notifyAll的理解? wait:让持有该对象锁的线程等待: notify: 唤醒任何一个持有该对象锁的线程: notifyAll: 唤醒所有持有该对象锁的线程: 它 ...

  2. openstack核心组件--neutron网络服务2(4)

    一.虚拟机获取 ip:   用 namspace 隔离 DHCP 服务   Neutron 通过 dnsmasq 提供 DHCP 服务,而 dnsmasq 通过 Linux Network Names ...

  3. 重置node节点

    删除node节点 删除通过csr请求后产生的所有文件和证书 [root@lab1 ~]# rm -rf /etc/kubernetes/kubelet.conf [root@lab1 ~]# rm - ...

  4. 【Hadoop】MapReduce练习:分科目等级并按分区统计学生以及人数

    需求 ​ 背景:学校的学生的是一个非常大的生成数据的集体,比如每次考试的成绩 ​ 现有一个班级的学生一个月的考试成绩数据. ​ 科目 姓名 分数 ​ 需求:求出每门成绩中属于甲级的学生人数和总人数 ​ ...

  5. Postman的安装和升级

    安装postman Postman本地应用程序 Postman可以作为Mac,Windows和Linux操作系统的本地应用程序. 要安装Postman,请转到应用界面,并根据你的平台点击Mac/Win ...

  6. vue的特点 关键字

    1.对mvvm模式的理解 Model-view-viewmodel Model数据模型 View代表ui组件 Viewmodel监听模型数据的改变和控制视图行为.处理用户交互,简单理解就是一个同步vi ...

  7. Cocos2d-x_初探_第一次配置与HelloWorld

    此前多久,忘了,反正就是打通关泡泡龙以后.YY君向我推荐了这个(如题).一查资料,诶.还挺有意思的,那我就去下一个玩玩吧. 资料下载清单: 1.Android-ndk 2.Android-sdk 3. ...

  8. kubernetes的namespaces总是Terminating

    0.尝试强制删除不行 删除时带上–force --grace-period=0参数 ,无法删除:kubectl delete namespace rook-ceph --force --grace-p ...

  9. ZOJ Problem Set - 1004

    1.翻译参考 http://liucw.blog.51cto.com/6751239/1198026 2.代码参考 http://www.cnblogs.com/devymex/archive/201 ...

  10. Linux文件权限基础知识

    一.文件权限概述 Linux中每个文件或目录都有一组一组9个基础权限位,每三位字符被分为一组,他们分别是属主权限位(占三个字符).用户组权限位(占三个字符).其他用户权限位(占三个字符).比如rwxr ...