OGG学习笔记01

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的安装也非常简单,在期望的安装目录下,直接解压压缩文件即可。

[[email protected] ~]$ cd /u01/app
[[email protected] app]$ ls
oracle
[[email protected] app]$ mkdir ogg
[[email protected] app]$ cd ogg/
[[email protected] ogg]$ pwd
/u01/app/ogg
[[email protected] 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可以正常使用
[[email protected] ~]$ 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即可解决。
[[email protected] ~]# su - ogg
[[email protected] ~]$ cd /u01/app/ogg/
[[email protected] 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.
时间: 2024-08-29 00:21:26

OGG学习笔记01的相关文章

OGG学习笔记02

实验环境:源端:192.168.1.30,Oracle 10.2.0.5 单实例目标端:192.168.1.31,Oracle 10.2.0.5 单实例 1.模拟源数据库业务持续运行 2.配置OGG前期准备 3.配置OGG单向复制 1.模拟源数据库业务持续运行 OGG的单向配置比较简单,但实际生产过程很多业务要求不间断运行,所以我创建了2张模拟业务表,简单模拟在业务不间断运行场景下OGG的配置. 1.1 创建模拟的业务用户 首先我创建业务用户jy,并指定密码,赋予基本业务用户的角色权限. --u

OGG学习笔记03

OGG学习笔记03-单向复制简单故障处理 环境:参考:OGG学习笔记02-单向复制配置实例实验目的:了解OGG简单故障的基本处理思路. 1. 故障现象故障现象:启动OGG源端的extract进程,data pump进程,一段时间后发现进程均被终止. GGSCI (oradb30) 1> info all Program Status Group Lag at Chkpt Time Since Chkpt MANAGER RUNNING EXTRACT ABENDED LPJY1 00:00:00

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

实验环境:源端:192.168.1.30,Oracle 10.2.0.5 单实例目标端:192.168.1.31,Oracle 10.2.0.5 单实例 1.模拟源数据库业务持续运行 2.配置OGG前期准备 3.配置OGG单向复制 1.模拟源数据库业务持续运行 OGG的单向配置比较简单,但实际生产过程很多业务要求不间断运行,所以我创建了2张模拟业务表,简单模拟在业务不间断运行场景下OGG的配置. 1.1 创建模拟的业务用户 首先我创建业务用户jy,并指定密码,赋予基本业务用户的角色权限. --u

【opengl 学习笔记01】HelloWorld示例

<<OpenGL Programming Guide>>这本书是看了忘,忘了又看,赶脚还是把笔记做一做心里比较踏实,哈哈. 我的主题是,好记性不如烂笔头. ================================================================ 1. 下载glut库 glut库地址为:www.opengl.org/resources/libraries/glut/glutdlls37beta.zip glut全称为:OpenGL Utilit

HTTP 学习笔记01

HTTP   hypertext transfer protocol (超文本传输协议) TCP/IP 协议集中的一个应用层协议 用于定义WEB浏览器与WEB服务器之间交换数据的过程以及数据本身的格式 HTTP 1.0  会话方式 HTTP 1.1 方式 HTTP 请求消息结构 一个请求行,若干消息头,以及实体内容 其中的一些消息头和实体内容都是可选的,消息头和实体内容之间要用空行隔开. GET   方式下是没有实体内容的 POST .PUT.DELETE 方式下请求消息才可以包含实体内容 HT

SWIFT学习笔记01

1.Swift,用来判断option是不是nil,相当于OC的 if(option) if let name = option{ greeting = "if=====" }else{ greeting = "else===" } 2.运行switch中匹配到的子句之后,程序会退出switch语句,并不会继续向下运行,所以不需要在每个子句结尾写break. 3.//使用..创建的范围不包含上界,如果想包含的话需要使用...,集合上,就是[)与[]的关系 for i

C++ GUI Qt4学习笔记01

C++ GUI Qt4学习笔记01 qtc++signalmakefile文档平台 这一章介绍了如何把基本的C++只是与Qt所提供的功能组合起来创建一些简单的图形用户界面应用程序. 引入两个重要概念:一个是“信号和槽”,另一个是“布局”. 窗口部件(widget)是用户界面的一个可视化元素,相当于windows系统中的“控件”和“容器”.任意窗口部件都可以用作窗口. 1.1Hello Qt 正确安装Qt4开发环境,创建工程目录hello,源代码文件名为hello.cpp,进入hello目录 (1

HTML学习笔记01

HTML学习笔记 HTML学习笔记01 一.HTML的定义 1 HTML就是"HyperText Markup Language","超文本标记语言".2 HTML不是<color="red">编程语言,而是一种标记语言.3 标记语言是一套标记标签.4 HTML使用标记标签来描述网页. 二.HTML标签 1 HTML标签是由尖括号包围的关键词.2 HTML标签通常是成对出现的.3 标签对中的第一个标签是开始标签,第二个标签是结束标签.

MVC4 学习笔记01

1 . ASP.NET MVC 中 ActionResult 和 ViewResult 在使用上的区别是什么?要注意什么吗? ActionResult 是一个抽象(abstract)类,ViewResult 只是ActionResult 的一个实现(implementation).如果你确认你返回的是一个视图(view),你可以直接返回类型为ViewResult.ActionResult 有很多的派生类,如果你很确定你要返回的类型,你可以明确的返回该类型.如果你并不是很清楚,或者你根本不想去理解