oracle 11g golden gate(ogg)配置

环境介绍

项目源环境目标环境
        操作系统        OEL6.3 X86_64        OEL 6.3 X86_64
        主机名        qht115        qht131
        IP地址        172.17.61.115       172.17.61.131
        数据库及版本        ORACLE 11.2.0.3.0        ORACLE 11.2.0.3.0
        数据库字符集        WE8MSWIN1252        WE8MSWIN1252
        ORACLE SID          orcl         orcl
        Goldengate用户        ogg        ogg
        Goldengate 版本        112101        112101

1.创建ogg用户(此步骤非必须,也可以使用ORACLE用户安装),源和目标库都需要

useradd -g oinstall -G dba ogg
passwd ogg

2.修改oog用户的环境变量,将oracle用户的.bash_profile复制过去就可以了,源和目标库都需要

cat .bash_profile

PATH=$PATH:$HOME/bin
export PATH
ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=$ORACLE_BASE/product/11203
ORACLE_SID=orcl
LD_LIBRARY_PATH=$ORACLE_HOME/lib
PATH=$PATH:$ORACLE_HOME/bin:$HOME/bin
export ORACLE_BASE ORACLE_HOME ORACLE_SID LD_LIBRARY_PATH PATH

3.建立ogg所在的目录 ,源和目标库都需要

mkdir /u01/ogg
chown -R ogg:oinstall /u01/ogg

4.上传ogg安装文件到两台机器,源和目标库都需要

[ogg@qht131 ~]$ unzip ogg112101_fbo_ggs_Linux_x64_ora11g_64bit.zip
[ogg@qht131 ~]$ tar -xvf fbo_ggs_Linux_x64_ora11g_64bit.tar -C /u01/ogg

5.测试ogg登入,源和目标库都需要

[ogg@qht115 ~]$ cd /u01/ogg
[ogg@qht115 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 11g on Apr 23 2012 08:32:14

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



GGSCI (qht115) 1>

6.建立ogg的单独表空间,这样便于以后管理,源和目标库都需要

SQL> create tablespace ogg datafile '/u01/oradata/orcl/ogg01.dbf' size 50M autoextend on;

Tablespace created.

7.建立oracle的ogg用户,并赋予所需要的权限,源和目标库都需要

SQL> create user ogg identified by ogg default tablespace ogg;

User created.

SQL> grant CONNECT, RESOURCE to ogg;

Grant succeeded.

SQL> grant SELECT ANY DICTIONARY, SELECT ANY TABLE to ogg;

Grant succeeded.

SQL> grant ALTER ANY TABLE to ogg;

Grant succeeded.

SQL> grant FLASHBACK ANY TABLE to ogg;

Grant succeeded.

SQL> grant EXECUTE on DBMS_FLASHBACK to ogg;

Grant succeeded.

SQL>  grant insert any table to ogg;

Grant succeeded.

SQL>  grant update any table to ogg;

Grant succeeded.

SQL>  grant delete any table to ogg;

Grant succeeded.

SQL>

不同的需求,OGG用户需要的权限也不一样,上面的权限基本可以支持大多数情况的数据复制,如上面的权限不足,需根据实际需求授权。

8.打开数据库的force log以及附加日志,源和目标库都需要

SQL>  select NAME,OPEN_MODE,FORCE_LOGGING,SUPPLEMENTAL_LOG_DATA_MIN from v$database;

NAME      OPEN_MODE            FOR SUPPLEME
--------- -------------------- --- --------
ORCL      READ WRITE           NO  NO

SQL> alter database force logging;

Database altered.

SQL> alter database add SUPPLEMENTAL log data;

Database altered.

SQL> select NAME,OPEN_MODE,FORCE_LOGGING,SUPPLEMENTAL_LOG_DATA_MIN from v$database;

NAME      OPEN_MODE            FOR SUPPLEME
--------- -------------------- --- --------
ORCL      READ WRITE           YES YES

9.运行ogg所需要的脚本,源和目标库都需要

cd /u01/ogg

sqlplus / as sysdba

@marker_setup.sql

@ddl_setup.sql

@role_setup.sql

@ddl_enable.sql

SQL> grant ggs_ggsuser_role to ogg;  

10.创立ogg的管理目录 ,源和目标库都需要

在正式配置OGG之前,首先需要创建OGG的管理目录,源端和目标端都需要创建,登录OGG,只需要执行create subdirs命令就可以了。

[ogg@qht115 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 11g on Apr 23 2012 08:32:14

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



GGSCI (qht115) 1> create subdirs

Creating subdirectories under current directory /u01/ogg

Parameter files                /u01/ogg/dirprm: already exists
Report files                   /u01/ogg/dirrpt: created
Checkpoint files               /u01/ogg/dirchk: created
Process status files           /u01/ogg/dirpcs: created
SQL script files               /u01/ogg/dirsql: created
Database definitions files     /u01/ogg/dirdef: created
Extract data files             /u01/ogg/dirdat: created
Temporary files                /u01/ogg/dirtmp: created
Stdout files                   /u01/ogg/dirout: created

各目录用途如下表:

名字用途
         dirprm        存放OGG参数各的配置信息
         dirrpt        存放进程报告文件
         dirchk        存放检查点文件
         dirpcs        存放进程状态文件
         dirsql        存放SQL脚本文件
         dirdef        存放DEFGEN工具生成的数据定义文件
         dirdat        存放Trail文件,也就是Capture进程捕获的日志文件
         dirtmp

        当事物需要的内存超过已分配内存时,默认存储在这个目录 

11.建立测试表,源和目标库都需要

源表基于all_tables建立表,建立owner+table_name的主键

SQL> create table l5m.ogg_test as select * from all_tables;

Table created.

SQL> alter table l5m.ogg_test add constraint pk_ogg_test primary key(owner,table_name);

Table altered.

SQL> select count(*) from l5m.ogg_test;

  COUNT(*)
----------
      4267

目标端同样也建立表,不过不需要数据

SQL> create table l5m.ogg_test as select * from all_tables where 1<>2;

Table created.

SQL>  alter table l5m.ogg_test add constraint pk_ogg_test primary key(owner,table_name);

Table altered.

12.源端添加表级TRANDATA

GGSCI (qht115) 2> DBLOGIN USERID ogg, PASSWORD ogg  --登入

Successfully logged into database.

GGSCI (qht115) 3> add trandata l5m.ogg_test  --添加

Logging of supplemental redo data enabled for table L5M.OGG_TEST.

GGSCI (qht115) 4> info trandata l5m.ogg_test   --查看

Logging of supplemental redo log data is enabled for table L5M.OGG_TEST.

Columns supplementally logged for table L5M.OGG_TEST: OWNER, TABLE_NAME.

13.配置mgr管理进程,源和目标库都需要

GGSCI (qht115) 1> edit params mgr
-- 添加以下内容
PORT 7809
PURGEOLDEXTRACTS /u01/ogg/dirdat, USECHECKPOINTS

参数说明:

PORT 7809:OGG管理进程监控端口。

PURGEOLDEXTRACTS:清除不需要的trail文件。

/ogg/dirdat:trail文件存放位置。

USECHECKPOINTS:使用检查点队列。

配置完MGR管理进程后,就可以启动MGR管理进程(源端和目标端都需要启动)。

GGSCI (qht115) 2> start mgr

Manager started.

可以通过INFO命令查看进程的状态(最好每次启动时在两端都查看下)。

GGSCI (qht115) 3> info mgr

Manager is running (IP port qht115.7809).

14.初始化两端的数据,让目标端的数据和源端的数据一致

由于在创建测试表的时候,源端的测试表有数据,而目标端的测试表只有结构,没有数据,所以需要初始化目标端的数据,所谓初始化,就是让目标端的数据和源端的数据在这个时间点是一模一样的,所以初始化工作并不需要一定使用OGG,也可以使用EXP、EXPDP、SQLLOAD等其他工具,本文主要介绍如何使用OGG进行数据初始化,下面在源端配置捕获进程EINI_1。

  • 14.1源配置捕获extract进程EINI_1
GGSCI (qht115) 4> add extract eini_1,sourceistable
EXTRACT added.


GGSCI (qht115) 5> info extract *, tasks

EXTRACT    EINI_1    Initialized   2018-09-17 11:30   Status STOPPED
Checkpoint Lag       Not Available
Log Read Checkpoint  Not Available
                     First Record         Record 0
Task                 SOURCEISTABLE

由于只是添加了捕获进程EINI_1,还没有进行配置和启动这个进程,所以现在的状态是STOPPED状态。

源端编辑捕获进程EINI_1 

GGSCI (qht115) 6> edit params eini_1

--加入以后内容

EXTRACT EINI_1

SETENV (NLS_LANG=AMERICAN_AMERICA.WE8MSWIN1252)

USERID ogg, PASSWORD ogg

RMTHOST 172.17.61.131, MGRPORT 7809

RMTTASK REPLICAT, GROUP RINI_1

TABLE l5m.ogg_test;

参数介绍:

EXTRACT EINI_1:说明这是EXTRACT进程,名字是EINI_1

SETENV:环境变量,一定要设置和数据库字符集一样,否则可能会乱码

USERID:数据库OGG用户

PASSWORD:数据库用户OGG的密码

RMTHOST:目标端地址,如果在/etc/hosts文件里已经设置解析,可以写主机名

MGRPORT:目标端MGR管理进程监听的端口

RMTTASK REPLICAT:目标端REPLICAT应用进程的组和名字

TABLE:源端要初始化数据的表的名字

编辑好捕获进程EINI_1后,还需要在目标端配置REPLICAT应用进程,名字要和源端的捕获进程EINI_1里面RMTTASK REPLICAT参数配置的一样,也就是还需要在目标端配置RMTTASK REPLICAT RINI_1。14.2目标端配置复制replicate进程

GGSCI (qht131) 4> EDIT PARAMS RINI_1

--加入以内内容

REPLICAT RINI_1

SETENV (NLS_LANG=AMERICAN_AMERICA.WE8MSWIN1252)

ASSUMETARGETDEFS

USERID ogg, PASSWORD ogg

DISCARDFILE /u01/ogg/dirrpt/RINIaa.dsc, PURGE

MAP l5m.*, TARGET l5m.*;

参数介绍:

REPLICAT RINI_1:说明这是REPLICAT应用进程,名字叫RINI_1

SETENV:语言变量,同捕获进程EINI_1

ASSUMETARGETDEFS:告诉OGG目标端和源端需要同步的表的结构完全一致,不需要OGG去检查表的结构,包括表名、字段名、字段类型、字段长度等,如果目标端和源端同步的表的结构不一样,需要使用SOURCEDEFS参数,详见OGG官方文档。

USERID、PASSWORD:同捕获进程EINI_1参数介绍

DISCARDFILE:错误信息存放位置及命名规则

MAP:源端捕获的表的名字

TARGET:目标端同步的表的名字,可以不在同一SCHEMA。

 

目标端执行一下add replicate

GGSCI (qht131) 7> add replicat RINI_1,specialrun
REPLICAT added.


GGSCI (qht131) 8> info rini_1 detail

REPLICAT   RINI_1    Initialized   2018-09-17 11:02   Status STOPPED
Checkpoint Lag       00:00:00 (updated 00:00:06 ago)
Log Read Checkpoint  Not Available
Task                 SPECIALRUN

  Extract Source                          Begin             End

  Not Available                           * Initialized *   First Record


Current directory    /u01/ogg

Report file          /u01/ogg/dirrpt/RINI_1.rpt
Parameter file       /u01/ogg/dirprm/rini_1.prm
Checkpoint file      /u01/ogg/dirchk/RINI_1.cpr
Process file         /u01/ogg/dirpcs/RINI_1.pcr
Stdout file          /u01/ogg/dirout/RINI_1.out
Error log            /u01/ogg/ggserr.log

  • 14.3开始初始化数据,源端执行
GGSCI (qht115) 15> START EXTRACT EINI_1

Sending START request to MANAGER ...
EXTRACT EINI_1 starting

启动源端的捕获进程EINI_1后,正常情况下(如果配置没问题),源端的数据已经传送到目标端了,可以通过VIEW命令查看源端捕获进程EINI_1的工作状态。如果有问题可以查看ggserr.log寻找原因。

–在最后部分会看到

GGSCI (qht115) 16> view report eini_1

。。。

Processing table L5M.OGG_TEST

***********************************************************************
*                   ** Run Time Statistics **                         *
***********************************************************************


Report at 2018-09-17 12:03:00 (activity since 2018-09-17 12:02:53)

Output to RINI_1:

From Table L5M.OGG_TEST:
       #                   inserts:      4267
       #                   updates:         0
       #                   deletes:         0
       #                  discards:         0


REDO Log Statistics
  Bytes parsed                    0
  Bytes output              3031082

成功插入了4267条数据,这时目标端和源端已同步了。

目标端进行验证:

SQL> select count(*) from l5m.ogg_test;

  COUNT(*)
----------
      4267

15.配置ogg检查点,源和目标库都需要

此步骤不是必须的,但是为了让OGG网络中断、服务器宕机、掉电等在突发情况也能正确断点续传,ORACLE建议配置OGG的检查点队列。

注意:GLOBALS不是放在/u01/ogg/dirprm中的,所以必须是edit params ./GLOBALS,而不是edit params GLOBALS。

GGSCI (qht115) 1> EDIT PARAMS ./GLOBALS
--加入以下信息
CHECKPOINTTABLE ogg.ggschkpt

这就告诉OGG检查点存放到OGG用户下的GGSCHKPT表中,但是还需要使用OGG用户登录数据库,创建检查点表,此时需要退出OGG,重新登录,否则可能会遇到下面的错误。

GGSCI (stream) 4> ADD CHECKPOINTTABLE

ERROR: Missing checkpoint table specification.

退出OGG,重新登录,并使用OGG用户登录数据库,源端和目标端都需要执行。

GGSCI (qht115) 2> exit
[ogg@qht115 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 11g on Apr 23 2012 08:32:14

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



GGSCI (qht115) 1> dblogin userid ogg,password ogg
Successfully logged into database.

只需要执行ADD CHECKPOINTTABLE命令,OGG会自动在ORACLE的OGG用户下创建检查点,源端和目标端都需要执行。

GGSCI (qht115) 2> ADD CHECKPOINTTABLE

No checkpoint table specified, using GLOBALS specification (ogg.ggschkpt)...

Successfully created checkpoint table ogg.ggschkpt.

此时用OGG登录数据库,就可以看到OGG创建的检查点表。

SQL> select * from tab where tname like 'GGSCHKPT%';

TNAME                          TABTYPE  CLUSTERID
------------------------------ ------- ----------
GGSCHKPT                       TABLE
GGSCHKPT_LOX                   TABLE

16.准备了这么多步骤,最后终于要进行目标端 和源端的同步了

  • 16.1 源端配置捕获进程
GGSCI (qht115) 1> edit params eora_1

--加入以下内容
EXTRACT EORA_1

SETENV (NLS_LANG=AMERICAN_AMERICA.WE8MSWIN1252)

USERID ogg, PASSWORD ogg

EXTTRAIL /u01/ogg/dirdat/aa

TABLE l5m.ogg_test;

EXTTRAIL参数是TRAIL队列文件存放的路径和命名格式,TRAIL文件可以理解为存放捕获进程捕获的日志文件。此时还需要将捕获进程EORA_1添加到OGG。

GGSCI (qht115) 2> ADD EXTRACT EORA_1, TRANLOG, BEGIN NOW
EXTRACT added.


GGSCI (qht115) 3> ADD EXTTRAIL /u01/ogg/dirdat/aa, EXTRACT EORA_1, MEGABYTES 5
EXTTRAIL added.

上面的两个命名告诉OGG,捕获进程从启动起开始捕获,捕获数据保存到TRAIL文件,及TRAIL文件的路径、命名格式,单个TRAIL文件最大大小。

现在就可以启动源端捕获进程EORA_1了。

GGSCI (qht115) 8> START EXTRACT EORA_1

Sending START request to MANAGER ...
EXTRACT EORA_1 starting

使用INFO命令查看EORA_1进程是否是RUNNING状态。

GGSCI (qht115) 9>  INFO EXTRACT EORA_1

EXTRACT    EORA_1    Last Started 2018-09-17 15:16   Status RUNNING
Checkpoint Lag       00:00:00 (updated 00:00:02 ago)
Log Read Checkpoint  Oracle Redo Logs
                     2018-09-17 15:16:44  Seqno 27, RBA 147215360
                     SCN 3.1882136165 (14767038053)
  • 16.2源端配置pump传输进程 
GGSCI (qht115) 10>  EDIT PARAMS PORA_1

--添加以下内容
EXTRACT PORA_1

SETENV (NLS_LANG=AMERICAN_AMERICA.WE8MSWIN1252)

PASSTHRU

RMTHOST 172.17.61.131, MGRPORT 7809

RMTTRAIL /u01/ogg/dirdat/pa

TABLE l5m.ogg_test;

 添加PUMP进程PORA_1到OGG,并指定本地的TRAIL文件。

GGSCI (qht115) 11>  ADD EXTRACT PORA_1, EXTTRAILSOURCE /u01/ogg/dirdat/aa
EXTRACT added.

为PUMP进程PORA_1指定将本地TRAIL文件传输到目标端后保存成目标端TRAIL文件的名字。

GGSCI (qht115) 12>  ADD RMTTRAIL /u01/ogg/dirdat/pa,EXTRACT PORA_1, MEGABYTES 5
RMTTRAIL added.


GGSCI (qht115) 13> INFO EXTRACT PORA_1

EXTRACT    PORA_1    Initialized   2018-09-17 15:29   Status STOPPED
Checkpoint Lag       00:00:00 (updated 00:01:14 ago)
Log Read Checkpoint  File /u01/ogg/dirdat/aa000000
                     First Record  RBA 0

下面就可以启动PUMP进程PORA_1了,启动后看下PORA_1的状态。

GGSCI (qht115) 14> START EXTRACT PORA_1

Sending START request to MANAGER ...
EXTRACT PORA_1 starting


GGSCI (qht115) 15>  INFO EXTRACT PORA_1

EXTRACT    PORA_1    Last Started 2018-09-17 15:30   Status RUNNING
Checkpoint Lag       00:00:00 (updated 00:01:34 ago)
Log Read Checkpoint  File /u01/ogg/dirdat/aa000000
                     First Record  RBA 0

此时就可以在源端和目标端看到各自的trail文件

源端:

[ogg@qht115 ogg]$ cd dirdat/
[ogg@qht115 dirdat]$ ls
aa000000

目标端:

[ogg@qht131 ogg]$ cd dirdat/
[ogg@qht131 dirdat]$ ls
pa000000
  • 16.3目标端配置同步进程RORA_1

此步骤告诉复制进程目标文件以及checkpoint所指定的文件,此步骤不可缺少

GGSCI (qht131) 1> ADD REPLICAT RORA_1 exttrail /u01/ogg/dirdat/pa checkpointtable ogg.GGSCHKPT
REPLICAT added.

 接着编辑目标端的同步参数文件

GGSCI (qht131) 1> EDIT PARAMS RORA_1

--添加以下内容:
REPLICAT RORA_1

SETENV (NLS_LANG=AMERICAN_AMERICA.WE8MSWIN1252)

USERID ogg, PASSWORD ogg

HANDLECOLLISIONS

ASSUMETARGETDEFS

DISCARDFILE /u01/ogg/dirrpt/RORA_aa.DSC, PURGE

MAP l5m.ogg_test, TARGET l5m.ogg_test;

 目标端编辑同步进程RORA_1后,就可以启动RORA_1进程。

GGSCI (qht131) 3> START REPLICAT RORA_1

Sending START request to MANAGER ...
REPLICAT RORA_1 starting


--查看进程状态:

GGSCI (qht131) 4>  INFO REPLICAT RORA_1

REPLICAT   RORA_1    Last Started 2018-09-17 16:05   Status RUNNING
Checkpoint Lag       00:00:00 (updated 00:00:07 ago)
Log Read Checkpoint  File /u01/ogg/dirdat/pa000000
                     First Record  RBA 0

17.验证同步复制

配置完后的源端和目标端的各进程如下:

--源端
GGSCI (qht115) 18> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING
EXTRACT     RUNNING     EORA_1      00:00:00      00:00:01
EXTRACT     RUNNING     PORA_1      00:00:00      00:00:02


--目标端
GGSCI (qht131) 5> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING
REPLICAT    RUNNING     RORA_1      00:00:00      00:00:10

源库做些操作:

SQL> select count(*) from ogg_test;

  COUNT(*)
----------
      4267

SQL> delete from l5m.ogg_test where owner='MAG';

25 rows deleted.

SQL> commit;

Commit complete.

SQL>  select count(*) from ogg_test;

  COUNT(*)
----------
      4242

检验目标库是否同步:

GGSCI (qht131) 6> exit
[ogg@qht131 ogg]$ sqlplus l5m/l5m

SQL*Plus: Release 11.2.0.3.0 Production on Mon Sep 17 16:11:33 2018

Copyright (c) 1982, 2011, Oracle.  All rights reserved.


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

SQL>  select count(*) from ogg_test;

  COUNT(*)
----------
      4242

没有问题,目标库也做了相应的删除操作,至此配置完成!

  • 1
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值