• 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 architecture

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

    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.
  • 相关阅读:
    C# MVC跳转
    从字符串中提取数字
    使用Node.js+Socket.IO搭建WebSocket实时应用
    C# 计算当前时间距离今晚00:00:00还有多少分多少秒
    C#错误异常列表
    HTTP请求报文和HTTP响应报文
    Selenium2(webdirver)入门之环境搭建(Java版)
    mysql grant ,User,revoke
    mysql 用drop和delete方法删除用户的区别
    [MySQL]
  • 原文地址:https://www.cnblogs.com/wangsicongde/p/7577083.html
Copyright © 2020-2023  润新知