Oracle GoldenGate学习笔记

Oracle GoldenGate学习笔记


1.Oracle GoldenGate的体系结构
    Oracle GoldenGate(OGG)是一种基于日志的结构化数据复制方式,它通过解析源数据库在线日志或归档日志获得数据的增删改变化,再将这些变化应用到目标数据库,实现源数据库与目标数据库同步,双活。
    OGG体系结构如下:
      *Manager*                                               *Manager*
                     *Extract*                *Data Pump*                 *Replicat*
    Source Database -----------> Loacl Trail -------------> Remote Trail ------------> Target Database
    ------------------------------------------------------  ------------------------------------------
                        Source Server                                      Target Server


    物理结构可分为源端(Source Server),目标端(Target Server).
    逻辑结构可分为数据抽取进程(Extract),传输进程(Data Pump),复制进程(Replicat).


    OGG各个进程的作用:
    进程统一由管理进程(Manager)管理。
    抽取进程(Extract)将Redo日志或归档日志作为数据源,当其发生变化时抽取进程会将主键字段和变化字段(如果是既无主键又无唯一索引的表就会抽取全部字段)形成本地的Trail文件(Local Trail)。
    传输进程(Data Pump)根据目标端的IP和端口配置将本地Trail文件发送至目标端,生成远程Trail文件(Temote Trail)。
    复制进程(Replicat)根据远程Trail文件反向生成SQL语句在目标数据库中执行。


    OGG要求源端数据库必须开启归档模式,以保证正常获取归档数据。
    针对既无主键又无唯一索引的表,OGG的处理方式为:
    一是打开数据最小附加日志开关: alter database add supplemental log data.
    二是增加单表级别的表结构字段信息的获取: add trandata.
    这两项操作可以保证所用的表都能正确抽取及复制。


2.Oracle GoldenGate 12c下载地址
    进入Oracle官方网址www.oracle.com,选择Downloads/Middleware/GoldenGate
    http://www.oracle.com/technetwork/middleware/goldengate/downloads/index.html


    选择下面的下载选项:
    Oracle GoldenGate 12.2.0.1.1 for Oracle on Linux x86-64 (454 MB) 
    下载文件: fbo_ggs_Linux_x64_shiphome.zip


    安装和配置可以参考Oracle官方在线文档:
    http://docs.oracle.com/goldengate/c1221/gg-winux/index.html
    http://docs.oracle.com/goldengate/c1221/gg-winux/GIORA/GUID-3108B63B-F2A2-446E-8006-D685C8E9B3A3.htm#GIORA110


3.Oracle GoldenGate安装
    Oracle GoldenGate安装很简单,但首先需要安装Oracle数据库,安装方法参考Oracle数据库安装文档。
    本例安装OGG的环境:
    操作系统: Redhat Enterprise Linux 7.3
    数据库:   Oracle 12c 12.1.0.2
    OGG版本:  Oracle GoldenGate 12c 12.2.0.1.1


    需要设置Oracle数据库的全局变量:
    export ORACLE_BASE=/u01/app/oracle;
    export ORACLE_HOME=$ORACLE_BASE/product/12.1.0/db_1;
    export ORACLE_SID=sales;


    建立OGG的安装目录:
    # mkdir /u01/app/ogg
    # chown -R oracle /u01/app/ogg
    # chmod -R 775 /u01/app/ogg
    
    设置OGG的全局变量:
    export PATH=$ORACLE_HOME/bin:/u01/app/ogg/12.2.0:$PATH;
    export LD_LIBBARY_PATH=$ORACLE_HOME/lib;/u01/app/ogg/12.2.0:/lib:/usr/lib;


    然后将Oracle GoldenGate安装包解压,在oracle用户下运行安装程序即可.
    # unzip fbo_ggs_Linux_x64_shiphome.zip
    # su - oracle
    $ export LANG=""
    $ cd /fbo_ggs_Linux_x64_shiphome/Disk1
    $ ./runInstaller
    Software Location: 775 /u01/app/ogg/12.2.0                -- OGG软件的安装位置
    Database Location: /u01/app/oracle/product/12.1.0/db_1    -- 需要同步的数据库的位置
    在源端与目标端均需要安装.


    安装好后在安装目录执行ggsci即可运行Oracle GoldenGate工具:
    $ cd /u01/app/ogg/12.2.0
    $ ggsci
    GGSCI> info all
    GGSCI> start manager


    在Oracle中创建OGG访问的账号,在源端与目标端均需要创建.
    $ sqlplus / as sysdba;
    SQL> create user ogg identified by ogg;
    SQL> grant connect,resource,unlimited tablespace to ogg;
    SQL> grant unlimited tablespace to ogg;
    SQL> grant execute on utl_file to ogg;
    SQL> grant dba to ogg;


    进入OGG命令界面,确认能访问Oracle数据库.
    $ cd /u01/app/ogg/12.2.0
    $ ggsci
    GGSCI (rhel7a) 1> dblogin userid ogg
    Password:
    Successfully logged into database.


4.Oracle GoldenGate源端系统配置
    (1).数据库开启归档模式
    $ sqlplus / as sysdba;
    SQL> shutdown immediate;
    SQL> startup mount;
    SQL> alter database archivelog;
    SQL> alter database add supplemental log data;          -- 添加附加日志
    SQL> alter database force logging;                      -- 强制记录日志
    SQL> alter datebase open;


    (2).添加需要同步的表
    语法结构:
    ADD SCHEMATRANDATA schema [ALLCOLS | NOSCHEDULINGCOLS]
    ADD TRANDATA [container.]schema.table [, COLS (columns)] [, NOKEY] [, ALLCOLS | NOSCHEDULINGCOLS]
    例子:
    $ cd /u01/app/ogg/12.2.0
    $ ggsci
    GGSCI> dblogin userid ogg
    GGSCI> add trandata astt.*


    (3).编辑源端系统配置参数.
    管理器配置参数:
    GGSCI (rhel7a) 1> edit param mgr
    PORT 7809


    日志提取配置参数:
    GGSCI (rhel7a) 1> edit params extastt
    EXTRACT extastt
    USERID ogg, PASSWORD ogg
    EXTTRAIL /u01/app/ogg/12.2.0/dirdat/lt
    TABLE astt.*;


    数据传输配置参数:
    GGSCI (rhel7a) 1> edit params pumpastt
    EXTRACT pumpastt
    USERID ogg, PASSWORD ogg
    RMTHOST 192.168.1.72, MGRPORT 7809
    RMTTRAIL /u01/app/ogg/12.2.0/dirdat/rt
    TABLE astt.*;


    (4).添加源端系统进程.
    (4.1).添加提取主进程(Adding the Primary Extract):
    DBLOGIN USERIDALIAS alias
    ADD EXTRACT group name 
    {, TRANLOG | , INTEGRATED TRANLOG}
    {, BEGIN {NOW | yyyy-mm-dd[ hh:mi:[ss[.cccccc]]]} | SCN value} 
    [, THREADS n]


    (4.2).添加Trail文件(Add the Local Trail):
    ADD EXTTRAIL pathname, EXTRACT group name


    (4.3).添加传输进程(Add the Data Pump Extract Group):
    ADD EXTRACT group name, EXTTRAILSOURCE trail name 


    (4.4).添加远程Trail文件(Add the Remote Trail):
    ADD RMTTRAIL pathname, EXTRACT group name


    例子:
    $ ggsci
    add extract extastt, tranlog, begin now
    add exttrail /u01/app/ogg/12.2.0/dirdat/lt, extract extastt
    add extract pumpastt, exttrailsource /u01/app/ogg/12.2.0/dirdat/lt
    add rmttrail /u01/app/ogg/12.2.0/dirdat/rt, extract pumpastt
    start extract extastt
    start extract pumpastt


    源端系统打开防火墙端口:1521,7809.


5.Oracle GoldenGate目标端系统配置
    (1).修改Oracle系统参数,允许执行OGG复制.
    $ sqlplus / as sysdba;
    SQL> alter system set enable_goldengate_replication=true scope=both;


    (2).编辑目标端系统配置参数.
    管理器配置参数:
    GGSCI (rhel7b) 1> edit param mgr
    PORT 7809
    DYNAMICPORTLIST 7810-7820  --远程队列端口


    GLOBALS配置参数:
    GGSCI (rhel7b) 1> edit params ./GLOBALS
    CHECKPOINTTABLE ogg.checkpoint


    数据复制配置参数:
    GGSCI (rhel7b) 1> edit params repastt
    REPLICAT repastt
    USERID ogg, PASSWORD ogg
    ASSUMETARGETDEFS
    MAP astt.*, TARGET astt.*;


    (3).添加目标端系统进程.
    $ ggsci
    dblogin userid ogg
    add checkpointtable ogg.checkpoint                    -- 如果已存在需删除 delete checkpointtable ogg.checkpoint
    add replicat repastt, exttrail /u01/app/ogg/12.2.0/dirdat/rt, checkpointtable ogg.checkpoint
    start replicat repastt


    目标端系统打开防火墙端口:1521,7809,7810-7820.


6.测试同步
    在源端数据库的表中插入数据.
    检查源端ogg的dirdat目录中是否有生成提取文件.
    检查目标端ogg的dirdat目录中是否有接收到文件.
    检查目标端数据库中是否已同步数据.


7.重新安装OGG.
    先停止OGG的进程
    $ ggsci
    stop extastt
    stop pumpastt
    stop mgr


    删除ogg目录所有文件,修改下inventory.xml,去掉OGG的HOME配置即可.
    $ cd /u01/app
    $ rm -r ogg
    $ cd /u01/app/oraInventory/ContentsXML
    $ vi inventory.xml


8.查看错误方法及常见错误信息    
    如OGG的进程有中断,可以通过命令查看错误信息:
    $ ggsci
    view report repastt


    常见错误信息:
    (1).参数配置错误
    OGG-00041  Data source not specified
    检查参数是否拼写错误.


    (2).远程主机防火墙未打开,或动态队列端口配置有问题
    OGG-01224  TCP/IP error 113 (No route to host), endpoint: 192.168.1.72:7820
    一般OGG的DUMP进程会从管理端口7809后面寻找远程主机动态端口,须保证远程主机动态队列端口设置正确,防火墙有开放端口.

你可能感兴趣的:(Oracle,GoldenGate)