OGG(Oracle GoldenGate)的安装和单向同步

本文详细介绍了如何在两个Oracle数据库节点间配置OracleGoldenGate进行数据同步,包括环境准备、GoldenGate的安装、数据库配置、OGG用户的创建与权限设置,以及单向同步的配置,涉及MGR、Extract和Replicat进程的启动与管理。
摘要由CSDN通过智能技术生成

一.环境准备

192.168.1.226 源端

192.168.1.217 目标端

二.安装GoldenGate

2.1 上传安装包并解压

两个节点均进行操作

unzip 19100_fbo_ggs_Linux_x64_Oracle_shiphome.zip -d /usr/local/src

给oracle用户解压后目录的权限

cd /usr/local/src
chown -R oracle.oinstall fbo_ggs_Linux_x64_shiphome/

2.2 配置环境变量

vim ~/.bash_profile
添加
export OGG_HOME=/u01/app/ogg
export PATH=$OGG_HOME:$ORACLE_HOME/bin:$PATH:$HOME/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$OGG_HOME

2.3 图形界面安装

cd /usr/local/src/fbo_ggs_Linux_x64_shiphome/Disk1/

运行安装程序

./runInstaller

在这里插入图片描述
这里根据数据库的版本选择 本次选择11g版本
在这里插入图片描述
选择软件安装路径(提前手动创建好) Manager进程可启可不启,就算这里不启动之后也要手工启动,所以这里可以选start Manager。点击next
在这里插入图片描述
安装完成
在这里插入图片描述

三.数据库配置

3.1 配置tnsnames文件

ORCL1 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.226)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )

ORCL2 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.217)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )

3.2 修改数据库参数

启用GoldenGate数据复制功能

SQL> ALTER SYSTEM SET ENABLE_GOLDENGATE_REPLICATION = TRUE SCOPE=BOTH;

启动归档模式

SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.

SQL> startup mount

ORACLE instance started.

Total System Global Area 521936896 bytes
Fixed Size 2254824 bytes
Variable Size 209717272 bytes
Database Buffers 306184192 bytes
Redo Buffers 3780608 bytes
Database mounted.

SQL> alter database archivelog;

Database altered.

SQL> alter database open;

Database altered.

-- 开启附加日志
SQL> alter database add supplemental log data;

Database altered.

-- 开启强日志
SQL> alter database force logging;

Database altered.

SQL> ALTER SYSTEM ARCHIVE LOG CURRENT;

System altered.
全部完成后应有如下结果:

SQL> select log_mode,supplemental_log_data_min,force_logging from v$database;

LOG_MODE		 SUPPLEME 		FOR
------------     -------- 		---
ARCHIVELOG 		   YES 			YES

3.3 配置OGG用户

创建OGG用户,OGG用户需要独立表空间

SQL> create tablespace oggtbs datafile '/oradata/orcl/oggtbs.dbf' size 100M autoextend on;

Tablespace created.

SQL> create user ogg identified by ogg default tablespace oggtbs temporary tablespace temp;

User created.

SQL> grant connect,resource to ogg;

Grant succeeded.

SQL> grant execute on utl_file to ogg;

Grant succeeded.
--因为所需权限较多 这里直接给了dba权限
SQL> grant dba to ogg;

Grant succeeded.

在数据库上执行GoldenGate脚本
注意:一定要cd到ogg的目录下去执行,而且oracle用户的bash_profile里需要有export LD_LIBRARY_PATH=$ORACLE_HOME/lib

$ cd /u01/app/ogg/

$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Sat Mar 5 20:34:34 2016
Copyright (c) 1982, 2013, Oracle. All rights reserved.

Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> @marker_setup.sql;

输入之前创建的ogg用户名

SQL> @ddl_setup.sql;

输入之前创建的ogg用户名

SQL> @role_setup.sql;

输入之前创建的ogg用户名

SQL>grant GGS_GGSUSER_ROLE to ogg;

Grant succeeded.

SQL>@ddl_enable.sql;

Trigger altered.

四.配置单向同步

配置Oracle GoldenGate
注意:一定要cd到ogg的目录下去执行

GoldenGate的日志位于其安装目录下的ggserr.log中,在配置过程中出现错误的时候可以通过日志排查问题。

4.1 启动MGR进程

启动两个节点上GoldenGate的Manager进程
此步骤需要在两台服务器上都执行

$ cd /u01/app/ogg/
 
./ggsci
 
Oracle GoldenGate Command Interpreter for Oracle
Version 19.1.0.0.4 OGGCORE_19.1.0.0.0_PLATFORMS_191017.1054_FBO
Linux, x64, 64bit (optimized), Oracle 11g on Oct 17 2019 23:13:12
Operating system character set identified as UTF-8.

Copyright (C) 1995, 2019, Oracle and/or its affiliates. All rights reserved.

GoldenGate MGR进程
  MGR进程管理启动Oracle GoldenGate进程、启动动态进程、分配端口给GoldenGate进程、管理trail file、创建事件,错误和诊断报告工作,必须在第一时间启动;当某些原因导致GoldenGate崩溃或重启机器时,默认情况MGR是没有启动的
配置GoldenGate MGR进程
  可以通过直接编辑GoldenGate_home/dirprm/mgr.prm文件或进入GGSCI命令行后键入edit param mgr命令回车进入MGR配置文件vi编辑界面;

GGSCI (ogg1) 1> start mgr
 
Manager started.
 
GGSCI (ogg1) 2> info all
 
Program     Status      Group       Lag at Chkpt  Time Since Chkpt
 
MANAGER     RUNNING

下面这个命令可以看到mgr的运行端口,也可以修改它,并对管理进程进行配置,不配置并不影响同步

GGSCI (ogg1) 3>edit params mgr
 
PORT 7809
 
#DYNAMICPORTLIST 7840-7939
#AUTORESTART EXTRACT *,RETRIES5,WAITMINUTES 3
#PURGEOLDEXTRACTS /ogg/app/dirdat/*,usecheckpoints, minkeepdays 3
#LAGREPORTHOURS 1
#LAGINFOMINUTES 30
#LAGCRITICALMINUTES 45

参数说明:
PORT:指定服务监听端口,默认端口为7809
DYNAMICPORTLIST:动态端口:可以制定最大256个可用端口的动态列表,当指定的端口不可用时,管理进程将会从列表中选择一个可用的端口,源端和目标段的Collector、Replicat、GGSCI进程通信也会使用这些端口;
COMMENT:注释行,也可以用–来代替;
AUTOSTART:指定在管理进程启动时自动启动哪些进程;
AUTORESTART:自动重启参数设置:本处设置表示每3分钟尝试重新启动所有EXTRACT进程,共尝试5次;
PURGEOLDEXTRACTS:定期清理trail文件设置:本处设置表示对于超过3天的trail文件进行删除。
LAGREPORT、LAGINFO、LAGCRITICAL:定义数据延迟的预警机制:本处设置表示MGR进程每隔1小时检查EXTRACT的延迟情况,如果超过了30分钟就把延迟作为信息记录到错误日志中,如果延迟超过了45分钟,则把它作为警告写到错误日志中。

4.2 在源端创建和配置Extract进程

创建和配置Extract进程的工作有:
• 创建和配置主抽取进程(Primary Extract)
• 创建和配置Data Pump进程(Secondly Extract)

GGSCI (ogg1) 1> add extract extest,tranlog,begin now

EXTRACT added.

因为主进程的作用是抽取捕获系统变更数据并将这些数据保存到trail文件里,所以必须为其配置trail文件目录和trail文件名的两个字符名,trail文件名共8个字符,其余6个字符由GoldenGate系列填充;

GGSCI (ogg1) 2> add exttrail /u01/app/ogg/dirdat/ex,extract extest
 
EXTTRAIL added.

编辑extract进程的参数

GGSCI (ogg1) 3> edit params extest
 
extract extest
SETENV(ORACLE_SID=orcl)
SETENV(NLS_LANG=AMERICAN_AMERICA.AL32UTF8)
userid ogg, password ogg
DDL INCLUDE ALL
EXTTRAIL /u01/app/ogg/dirdat/ex
table test.*;

userid指定GoldenGate 抽取用户的用户名和密码;
SETENV 设置环境变量,如实例名、数据库字符集;
table 指定抽取的用户和表名,如果指定多个以相同字符开头或结尾的表名,可以使用“前缀* ”的方式代替,这里为同步test用户所有的表为测试案例;

GGSCI (ogg1) 4> dblogin userid ogg@orcl1,password ogg
 
Successfully logged into database.
 
GGSCI (ogg1 as ogg@orcl) 5> ADD TRANDATA test.*

创建Data Pump Extract进程

GGSCI (ogg1) 6> add extract setest,exttrailsource /u01/app/ogg/dirdat/ex

EXTRACT added.

EXTTRAILSOUCE 指定源端的trail路径,必须包含两个字符,这个路径和主抽取进程(Primary Extract)中指定的trail目录和trail文件命名必须相同,因为Data Pump进程要读取主抽取进程生成的trail文件;

配置Data Pump Extract进程

GGSCI (ogg1) 5> edit param setest

extract setest
SETENV(ORACLE_SID=orcl)
SETENV(NLS_LANG=AMERICAN_AMERICA.AL32UTF8)
userid ogg, password ogg
RMTHOST 192.168.1.217,mgrport 7809
RMTTRAIL /u01/app/ogg/dirdat/ex
table test.*;

RMTHOST 指定目标端地址和端口等信息;
RMTTRAIL 指定目标端保存trail文件的目录和两个字符文件名;
TABLE 指定同步的表,配置的方式同在主抽取进程(Primary Extract)的配置一样,但这里多了许多额外的功能,比如实现数据过滤和其它复杂操作;

将目标端trail文件添加到队列中
源端可以配置多个主抽取进程,也可以配置多个Data Pump进程,但必须为每个要同步的目标端配置一个Data Pump进程;

GGSCI (ogg1) 7> add RMTTRAIL /u01/app/ogg/dirdat/ex,extract setest

RMTTRAIL added.

4.3 在目标端配置Checkpoint Table和Replicat进程
创建和配置Checkpoint Table
  目标端Replicat进程监控Checkpoint Table,每一条接收到的checkpoint数据由Collector后台进程写入到Checkpoint Table,因为对于事务来说每一条checkpoint数据要么执行成功要么执行失败,所以Replicat进程确保每一条checkpoint事务数据只应用一次,即使其它进程错误或者数据库错误。
在目标端GSSCI命令行下使用dblogin登录到目标端OGG管理用户

./ggsci
 
Oracle GoldenGate Command Interpreter for Oracle
Version 19.1.0.0.4 OGGCORE_19.1.0.0.0_PLATFORMS_191017.1054_FBO
Linux, x64, 64bit (optimized), Oracle 11g on Oct 17 2019 23:13:12
Operating system character set identified as UTF-8.

Copyright (C) 1995, 2019, Oracle and/or its affiliates. All rights reserved.

GGSCI (oracle) 8> dblogin userid ogg,password ogg
Successfully logged into database.

GGSCI (oracle as ogg@orcl) 9> add checkpointtable ogg.ogg_chk

Successfully created checkpoint table ogg.ogg_chk.

将checkpoint table 定义在GoldenGate配置文件里

exit
./ggsci
GGSCI (oracle) 1> edit param ./GLOBALS

GGSCHEMA OGG
CHECKPOINTTABLE OGG.OGG_CHK

首次编辑GoldenGate配置文件时,GLOBALS文件以大写命名并且没有扩展名创建在GoldenGate_home根目录。

创建和配置Replicat进程
  当GoldenGate运行时会产生一些与同步数据不相关的文件,这些文件记录了GoldenGate进程错误、数据库错误、GoldenGate操作等信息,这个文件叫做Discard file,配置Replicat进程时由DISCARDFILE参数定义,这个参数是可选的,但推荐创建相应的目录并配置,方便诊断GoldenGate错误问题;
创建Discard file目录

mkdir /u01/app/ogg/ogg_trg/discrd -pv

目标端创建Replicat进程

GGSCI (oracle) 2> add replicat retest,exttrail /u01/app/ogg/dirdat/ex,checkpointtable ogg.ogg_chk

REPLICAT added.

编辑Replicat进程配置文件

GGSCI (oracle) 3> edit params retest

REPLICAT retest
SETENV(ORACLE_SID=orcl)
SETENV(NLS_LANG=AMERICAN_AMERICA.AL32UTF8)
USERID ogg,password ogg
DISCARDFILE /u01/app/ogg/ogg_trg/discrd/reptr.desc,append,megabytes 512
DDL INCLUDE ALL
DDLERROR DEFAULT DISCARD RETRYOP MAXRETRIES 5 RETRYDELAY 20
ALLOWNOOPUPDATES
ASSUMETARGETDEFS
MAP test.*,target test.*;

到这里简单的源端和目标端的MGR、Extract、Replicat进程就配置完了,测试配置文件是否错误,进程启动是否正常,如果进程有问题就使用“view report 进程名”查看错误;不要将所有进程启动,因为有些工作还没有完成。

4.4 初始化数据
为什么要初始化数据?
  因为DML操作包括INSERT、UPDATE、DELETE、SELECT操作,而在这些操作中UPDATE、DELETE操作Redo只记录了变更的数据列以及行ID(ROWID),GoldenGate抽取数据后将其转换为自己的格式发送都目标端,假设源端有100条数据,从08:00 AM开始同步到目标端,而在同步开始前目标端没有初始化数据(目标端为空数据),那么08:00 AM后事物产生的UPDATE、DELETE DML操作发送到目标端,目标端GoldenGate Replicat进程会因为找不到数据而报错从而导致Replicat进程崩溃停止(ABENDED),所以这就需要我们在同步前初始化数据,初始化完后再同步,这样大大降低错误率。同步数据的方式可以通过DBLINK、EXP/IMP、SQLLDR或者表空间迁移等方式同步 测试为了方便分别在源端和目标端创建相同的表

TEST@orcl>create table tmp1(id int);
TEST@orcl>create table tmp2(id int);

4.5 启动GoldenGate同步进程
数据初始化后,分别启动源端MGR进程、主抽取进程(Primary Extract)、Data Pump进程(Secondly Extract)以及目标端MGR进程、Replicat进程;
启动源端GoldenGate进程

./ggsci

Oracle GoldenGate Command Interpreter for Oracle
Version 19.1.0.0.4 OGGCORE_19.1.0.0.0_PLATFORMS_191017.1054_FBO
Linux, x64, 64bit (optimized), Oracle 11g on Oct 17 2019 23:13:12
Operating system character set identified as UTF-8.

Copyright (C) 1995, 2019, Oracle and/or its affiliates. All rights reserved.


GGSCI (ogg1) 1> start mgr

GGSCI (ogg1) 2> start extest

GGSCI (ogg1) 3> start setest

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING
EXTRACT     RUNNING     EXTEST      00:00:00      00:00:07
EXTRACT     RUNNING     SETEST      00:00:00      00:00:07

启动目标端GoldenGate进程

./ggsci
Oracle GoldenGate Command Interpreter for Oracle
Version 19.1.0.0.4 OGGCORE_19.1.0.0.0_PLATFORMS_191017.1054_FBO
Linux, x64, 64bit (optimized), Oracle 11g on Oct 17 2019 23:13:12
Operating system character set identified as UTF-8.

Copyright (C) 1995, 2019, Oracle and/or its affiliates. All rights reserved.

GGSCI (ogg2) 1> start mgr
Manager started.

GGSCI (ogg2) 2> start retest


GGSCI (ogg2) 3> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING
REPLICAT    RUNNING     RETEST      00:00:00      00:00:02

五.检查同步情况
源端写入数据

TEST@orcl>insert into tmp1 values(1);
TEST@orcl>insert into tmp2 values(1);
TEST@orcl>commit;

目标端查询

TEST@orcl>select * from tmp1;

        ID
----------
         1
TEST@orcl>select * from tmp2;

        ID
----------
         1

源端创建新表

TEST@orcl>create table tmp3 as select * from dba_objects;

目标端查询
TEST@orcl>select count(*) from tmp3;

  COUNT(*)
----------
    86322

同步正常

  • 2
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值