ORACLE Goldstate Gate 双向同步安装实战演示0基础也能学会

Oracle GoldenGate 在Windows平台实现oracle<-->oracle双向数据同步,两台互为源端和目标端,实现环境:

环境节点1软件节点2软件
操作系统Windows server 2012Windows server 2012
IP地址192.168.38.41192.168.38.42
数据库Oracle 11g  11.2.0.1.0 - 64bitOracle 11g  11.2.0.1.0 - 64bit
数据库账号ggsggs
数据库表t_student,t_teachert_student,t_teacher
GoldenGateGoldenGate on Oracle v12.1.2.1GoldenGate on Oracle v12.1.2.1
dirdat源端目录D:\app\ogg_data\sources\dirdat\etD:\app\ogg_data\sources\dirdat\et
dirdat目标端目录D:\app\ogg_data\target\dirdat\etD:\app\ogg_data\target\dirdat\et

一,检查ORACLE环境配置

此处省略ORACLE的安装过程,如果不会安装的请移步学习安装教程,这里就默认已经安装好了然后配置ORACLE相关信息。

1.cmd下

C:\Users\Administrator>sqlplus / as sysdba

SQL*Plus: Release 11.2.0.1.0 Production on 星期二 6月 1 14:12:29 2021

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


连接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL>

1.将ORACLE设置为归档模式(源端和目标端都要修改)

1.1查询是否为归档模式:

SQL> select log_mode from v$database;

LOG_MODE
------------
NOARCHIVELOG  --非归档模式

1.2以下步骤修改为归档模式

SQL> shutdown immediate;--关闭
SQL> startup mount;--启动到mount模式
SQL> alter database archivelog;--修改数据库到归档模式
SQL> alter database open;--打开数据库

1.3查询数据库是否为归档模式

SQL> select log_mode from v$database;--查询是否为归档模式

LOG_MODE
------------
ARCHIVELOG  --归档模式

2.在源端打开force logging配置,因为本案例是互为源端,所以两端都要打开该配置

SQL> select force_logging from v$database;

FOR
---
NO

SQL> alter database force logging;

数据库已更改。

SQL> select force_logging from v$database;

FOR
---
YES

3.在源端打开supplemental log配置,因为本案例是互为源端,所以两端都要打开该配置

SQL> select supplemental_log_data_min from v$database;

SUPPLEME
--------
NO

SQL> alter database add supplemental log data;

数据库已更改。

SQL> select supplemental_log_data_min from v$database;

SUPPLEME
--------
YES

4.在源端修改 recyclebin=on 为 off 配置,因为本案例是互为源端,所以两端都要修改该配置

SQL> show parameter recyclebin

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------
recyclebin                           string      on
SQL>  alter system set recyclebin=off deferred;

系统已更改。

二.新建表空间和用户ggs,以及对用户授权(两端都要建)

1.创建表空间:TS_GGS

SQL> create tablespace TS_GGS datafile 'd:/app/ts_space/TS_GGS.dbf' size 50M aut
oextend on next 10M;

表空间已创建。

2.创建用户ggs,密码123,及给用户ggs授权


SQL> create user ggs identified by 123 default tablespace TS_GGS temporary table
space temp;

用户已创建。

SQL>  grant connect ,resource,unlimited tablespace to ggs;

授权成功。

SQL>  grant execute on utl_file to ggs;

授权成功。

SQL>  grant select any dictionary,select any table to ggs;

授权成功。

SQL>  grant alter any table to ggs;

授权成功。

SQL>  grant flashback any table to ggs;

授权成功。

SQL>  grant execute on dbms_flashback to ggs;

授权成功。
SQL>  grant dba to ggs;

授权成功。

3.创建表,创建的表一定要设置主键或者唯一建的列,不然会出现麻烦事情


SQL> create table ggs.t_student(
  2    uuid        VARCHAR2(32) default sys_guid() not null,
  3    name        VARCHAR2(32),
  4    age         NUMBER,
  5    gender      VARCHAR2(2),
  6    create_time DATE
  7  );

表已创建。

SQL> create table ggs.t_teacher(
  2    uuid        VARCHAR2(32) default sys_guid() not null,
  3    name        VARCHAR2(32),
  4    grade        VARCHAR2(32),
  5    create_time DATE
  6  );

表已创建。

设置系统环境变量,设置ORACLE_SID,ORACLE_HOME

至此,ORACLE配置完毕,如果是已经安装好在使用的数据库,那么请参考配置,已有的信息就不用再配置。下面开始ogg安装!

三、OGG 安装(源端和目标端都要安装)和配置

1.本人用的是Oracle GoldenGate on Oracle v12.1.2.1版本,下载之后解压安装下面图中的步骤一步一步就可以完成,不再文字叙述。软件我已放在网盘,可自行下载,

链接:https://pan.baidu.com/s/1fU3o3-UC7igYcQ48ROp8rQ 
提取码:9shz

2.安装完成之后,进入cmd,切换到d:\app\ogg_home目录下,执行ggsci程序,开始配置ogg,

Windows server 2012 启动会出现提示缺少 msvcr100.dll msvcp100.dll 这两个文件,在其他电脑上找找,拷贝来放到C:\Windows\System32下面即可,没提示就不用此步骤!

D:\app\ogg_home>ggsci.exe

Oracle GoldenGate Command Interpreter for Oracle
Version 12.1.2.1.0 OGGCORE_12.1.2.1.0_PLATFORMS_140920.0203
Windows x64 (optimized), Oracle 11g on Sep 20 2014 07:17:50
Operating system character set identified as GBK.

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

3.下面开始源端的配置

3.1 把ogg的管理进程添加到服务中去,可以开机启动,输入edit params ./GLOBALS会新建一个文件

GGSCI (dbtestm) 1> edit params ./GLOBALS

输入内容:MGRSERVNAME GGMGR

3.2 保存并关闭文件。从新在d:\app\ogg_home目录下面打开一个cmd窗口输入: install addservice 命令添加服务。

D:\app\ogg_home>install addservice

Service 'GGMGR' created.

Install program terminated normally.

3.3 返回到ogg 配置命令窗口 输入 create subdirs 创建需要用到的文件目录

GGSCI (dbtestm) 2> create subdirs

Creating subdirectories under current directory D:\app\ogg_home

Parameter files                D:\app\ogg_home\dirprm: already exists
Report files                   D:\app\ogg_home\dirrpt: created
Checkpoint files               D:\app\ogg_home\dirchk: created
Process status files           D:\app\ogg_home\dirpcs: created
SQL script files               D:\app\ogg_home\dirsql: created
Database definitions files     D:\app\ogg_home\dirdef: created
Extract data files             D:\app\ogg_home\dirdat: created
Temporary files                D:\app\ogg_home\dirtmp: created
Credential store files         D:\app\ogg_home\dircrd: created
Masterkey wallet files         D:\app\ogg_home\dirwlt: created
Dump files                     D:\app\ogg_home\dirdmp: created

3.4用之前创建的ORACLE用户名和密码在ogg配置窗口登录:dblogin userid ggs,password 123

GGSCI (dbtestm) 3> dblogin userid ggs,password 123
Successfully logged into database.

3.5为数据库中的表添加trandata 配置(*注意,这个操作之前一定要给表添加主键或者是唯一建的列),输入 add trandata ggs.T_STUDENT ,add trandata ggs.T_TEACHER ,表名要大写注意。如果想删除重新添加,如: delete trandata ggs.T_STUDENT,只需把add换成delete即可!

GGSCI (dbtestm as ggs@orcl) 7> add trandata ggs.T_STUDENT
Logging of supplemental redo data enabled for table GGS.T_STUDENT.
TRANDATA for scheduling columns has been added on table 'GGS.T_STUDENT'.

GGSCI (dbtestm as ggs@orcl) 8>  add trandata ggs.T_TEACHER
Logging of supplemental redo data enabled for table GGS.T_TEACHER.
TRANDATA for scheduling columns has been added on table 'GGS.T_TEACHER'.

PS:此步骤中如果表比较多,或者全库都要同步的话,可以使用:add trandata ggs.* ,*表示ggs下面的所有表。

3.6配置mgr管理进程,输入edit params mgr 新建一个文件

GGSCI (dbtestm as ggs@orcl) 9> edit params mgr

文件中添加以下内容

port 7500
dynamicportlist 7501-7505
autorestart extract *,waitminutes 2,retries 5

保存关闭文件。

3.7启动mgr进程,使用 start mgr

GGSCI (dbtestm as ggs@orcl) 10> start mgr
Starting Manager as service ('GGMGR')...
Service started.

3.8配置extract抽取进程,输入edit params eora 新建文件

GGSCI (dbtestm as ggs@orcl) 11> edit params eora

输入以下内容

extract eora
userid ggs,password 123
exttrail D:\app\ogg_data\sources\dirdat\et
table ggs.t_student;
table ggs.t_teacher;

PS:表名也可以使用*号代替;如:table ggs.* 表示抽取ggs下的所有表。

exttrail D:\app\ogg_data\sources\dirdat\et 表示抽取进程抽取的文件保存在这个目录下。保存后配置以下命令:

add extract eora,tranlog,begin now   从现在开始抽取,也可以指定具体时间,比如把now换成:2021-07-02 13:00:00 时间开始
add exttrail D:\app\ogg_data\sources\dirdat\et,extract eora 
start eora 启动抽取进程eora。

GGSCI (dbtestm as ggs@orcl) 12> add extract eora,tranlog,begin now
EXTRACT added.


GGSCI (dbtestm as ggs@orcl) 13> add exttrail D:\app\ogg_data\sources\dirdat\et,e
xtract eora
EXTTRAIL added.


GGSCI (dbtestm as ggs@orcl) 14> start eora

Sending START request to MANAGER ('GGMGR') ...
EXTRACT EORA starting

start eora 启动抽取进程eora之后即可看到D:\app\ogg_data\sources\dirdat\et下面有了日志文件

3.9配置投递进程,前面是eora抽取进程生成日志文件,现在是需要投递进程把文件投递到目标端指定的文件夹下面,配置如下:输入 edit params pump_so 生成投递进程配置文件

GGSCI (dbtestm as ggs@orcl) 19> edit params pump_so

配置文件中添加以下内容

extract Pump_so
Userid ggs,password 123
rmthost 192.168.38.42, mgrport 7500
rmttrail D:\app\ogg_data\target\dirdat\et
table ggs.t_student;
table ggs.t_teacher;

PS:同上一样,表名也可以使用*号代替;如:table ggs.* 表示。这里的rmttrail 配置项表示投递目标端的所在文件夹D:\app\ogg_data\target\dirdat\et。

输入命令配置投递进程:注意下面第一句的目录和第二句的目录对应,别搞错了,分别对应上面的抽取进程的目录和投递进程的目录噢,千万别错了噶!

add extract pump_so,exttrailsource D:\app\ogg_data\sources\dirdat\et
add rmttrail D:\app\ogg_data\target\dirdat\et,extract pump_so

GGSCI (dbtestm as ggs@orcl) 23> add extract pump_so,exttrailsource D:\app\ogg_da
ta\sources\dirdat\et
EXTRACT added.

GGSCI (dbtestm as ggs@orcl) 24> add rmttrail D:\app\ogg_data\target\dirdat\et,ex
tract pump_so
RMTTRAIL added.

投递进程已经配置完毕。暂时不启动投递进程,因为目标端还没有配置。现在输入 info all 可以看到3个进程及运行状态:

GGSCI (dbtestm as ggs@orcl) 25> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING
EXTRACT     RUNNING     EORA        00:00:00      00:00:04
EXTRACT     STOPPED     PUMP_SO     00:00:00      00:02:41

到此,源端配置结束。另外一台也是相同配置,照步骤来即可,下面开始目标端的复制进程配置。

四 、ogg目标端的配置

同样进入安装目录下面打开CMD命令窗口输入 ggsci回车:

D:\app\ogg_home>ggsci.exe

Oracle GoldenGate Command Interpreter for Oracle
Version 12.1.2.1.0 OGGCORE_12.1.2.1.0_PLATFORMS_140920.0203
Windows x64 (optimized), Oracle 11g on Sep 20 2014 07:17:50
Operating system character set identified as GBK.

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

4.1配置参考3.1到3.5一模一样的配置。此处不在重复。把3.1到3.5配置完成一遍,开始下面额配置

4.2打开edit params ./GLOBALS 文件,追加以下内容

         checkpointtable ggs.checkpoint

4.2登录账号:dblogin userid ggs,password 123

GGSCI (dbtestmb as ggs@orcl) 13> dblogin userid ggs,password 123
Successfully logged into database.

4.3登录checkpoint,输入以下add checkpointtable ggs.checkpoint

GGSCI (dbtestmb as ggs@orcl) 14> add checkpointtable ggs.checkpoint
Successfully created checkpoint table ggs.checkpoint.

4.4配置mgr管理进程,输入edit params mgr新建文件写入以下文件:

GGSCI (dbtestmb as ggs@orcl) 16> edit params mgr

添加以下文件内容保存关闭。

port 7500
dynamicportlist 7501-7505
autostart er *
autorestart extract *,waitminutes 2,retries 5
lagreporthours 1
laginfominutes 3
lagcriticalminutes 5
purgeoldextracts D:\app\ogg_data\target\dirdat\et,usecheckpoints,minkeepdays 3

4.5配置复制进程repl,输入edit params repl新建配置文件输入以下内容保存关闭。

replicat repl
userid ggs,password 123
assumetargetdefs
reperror default,discard
discardfile ./dirrpt/repl.dsc,append,megabytes 50
MAP ggs.t_student, target ggs.t_student;
MAP ggs.t_teacher, target ggs.t_teacher;

PS:此处的表名也可以换成*号。即简化为一句配置:MAP ggs.*, target ggs.*; target前面一定要有空格才行。

输入以下命令创建复制进程:

add replicat repl,exttrail D:\app\ogg_data\target\dirdat\et,checkpointtable ggs.checkpoint

GGSCI (dbtestmb as ggs@orcl) 20> add replicat repl,exttrail D:\app\ogg_data\targ
et\dirdat\et,checkpointtable ggs.checkpoint
REPLICAT added.

到此目标端就配置完毕。输入 info all即可看到进程状态:

GGSCI (dbtestmb as ggs@orcl) 22> info all
Program     Status      Group       Lag at Chkpt  Time Since Chkpt
MANAGER     STOPPED
REPLICAT    STOPPED     REPL        00:00:00      00:02:17

启动mgr进程和,repl进程,

start mgr

start repl

GGSCI (dbtestmb as ggs@orcl) 23> start mgr
Starting Manager as service ('GGMGR')...
Service started.
GGSCI (dbtestmb as ggs@orcl) 26> start repl
Sending START request to MANAGER ('GGMGR') ...
REPLICAT REPL starting

GGSCI (dbtestmb as ggs@orcl) 27> info all
Program     Status      Group       Lag at Chkpt  Time Since Chkpt
MANAGER     RUNNING
REPLICAT    RUNNING     REPL        00:00:00      00:00:02

2个进程已启动,到此目标端配置完毕!


4.6 打开源端的pump_so 进程,测试数据是否能从41到42数据库。

GGSCI (dbtestm) 3> start pump_so

Sending START request to MANAGER ('GGMGR') ...
EXTRACT PUMP_SO starting


GGSCI (dbtestm) 4> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING
EXTRACT     RUNNING     EORA        01:03:20      00:00:07
EXTRACT     RUNNING     PUMP_SO     00:00:00      01:26:49

在41数据库的t_student表插入10w条数据,看看42数据库是否能够实现同步,

由上图可知,数据以及过来了!至此实现了单向同步,接下来,需要实现双向同步,很简单,在原来的源端41添加复制进程,在原来的目标端42添加抽取进程eora和投递进程pump_so进程即可实现双向同步,过程请回看源端和目标端的步骤,一步一步来,相信会实现的。

如果遇到进场起不来在ogg的安装目录下面有个日志文件:D:\app\ogg_home\ggserr.log,抱错的信息一般都在这里,然后根据实际异常信息解决问题即可。另外D:\app\ogg_home\dirrpt下面有个repl.dsc文件里面执行错误的记录都在这里,打开查找即可。



不过,过程中可能会遇到各种问题,尤其是第一次做的朋友,我这篇写的很详细,花了近一天的时间写的,如果您觉得可以,请点赞收藏,欢迎一起交流!如果有不懂的问题,可以在下面回复评论。或者加我的QQ:975585039 备注好事由谢谢。关于ogg的使用和维护,以及遇到的一些问题或者中断恢复等问题,下一篇博客再详细写下来!

第1章 GoldenGate概述 5 1.1 GoldenGate技术原理 5 1.2 GoldenGate可靠的复制 8 1.3 GoldenGate支持操作系统和数据库类型 8 第2章 安装GoldenGate 9 2.1 安装GoldenGate环境 9 2.2 分别在源数据库,目标数据库安装GoldenGate 9 2.2.1 下载GoldenGate 9 2.2.2 解压 10 2.2.3 安装GoldenGate 10 2.2.4 同时在目标数据库安装GoldenGate 11 第3章 把源数据库的数据同步到目标数据库中 11 3.1 设置ORACLE_HOME,ORACLE_SID环境变量 11 3.2 在源数据库ora01上打开归档日志及其辅助日志 12 3.3 在源数据库,目标数据库创建GoldenGate GLOBALS参数文件 13 3.3.1 在源数据库创建 13 3.3.2 创建Goldengate manager服务 13 3.3.3 在目标数据库安装上面步骤创建manager 14 3.4 在源数据库,目标数据库配置mgr,启动manager进程 14 3.4.1 配置manager服务的mgr配置文件 14 3.4.2 启动mgr 15 3.4.3 同样在目标数据库配置mgr文件 15 3.5 测试把源数据库数据同步到目标数据库数据库上 16 3.5.1 在源数据库创建test01数据库用户 16 3.5.2 执行GoldenGate的测试脚本,创建表 16 3.5.3 插入数据脚本 17 3.5.4 在goldengate中用oracle用户登陆数据库 17 3.5.5 增加需要传输的用户表 18 3.5.6 在目标数据库创建用户及其表结构 18 3.6 用goldengate中的direct load方式导入数据到目标数据库的test02用户表上 19 3.6.1 在源数据库配置一个extract进程 eini01 19 3.6.2 在目标数据库端配置一个replicat进程 19 3.6.3 在源数据库执行初始化过程 20 3.6.4 验证目标数据库端的test02用户表数据是否和源数据库一样 20 第4章 把源数据库的修改数据同步到目标数据库中 21 4.1 在源数据库配置一个EXTRACT进程及配置其文件 21 4.1.1 配置EXTRACT文件 21 4.1.2 在GGSCI.exe增加一个EXTRACT进程 22 4.2 配置data pump 23 4.2.1 在源数据库端添加一个pump进程 23 4.2.2 在源数据库的ggsci中增加extract进程 24 4.2.3 在源数据库执行RMTTRAIL 24 4.3 启动data pump capture process 24 4.4 在目标数据库端配置change delivery 26 4.5 在目标数据库中创建goldengate专属用户及其表 26 4.6 在目标数据库配置replicat进程 27 4.6.1 在ggsci增加一个replicat进程 27 4.6.2 编辑配置replicat文件 27 4.7 启动replicat进程 28 4.8 测试检查同步结果 28 4.8.1 在源数据库执行插入数据 28 第5章 把源数据库的DDL(表结构)修改同步到目标数据库中 32 5.1 在源数据库端关闭数据库的回收站 32 5.2 编辑源数据库参数文件GLOBALS 32 5.3 在源数据库创建goldengate01用户,并创建goldengate所需要的表 33 5.4 检查源数据库上的表是否安装好 35 5.5 修改源数据库配置extract文件 35 5.6 重新启动extract进程 36 5.7 验证源数据库是否可以同步表结构到目标数据库中 36 第6章 配置源数据库、目标数据库的双向数据传输 36 6.1 关闭目标数据库回收站,打开数据库辅助日志 37 6.2 在源数据库端添加checkpoint表,实现一致性 37 6.3 在源数据库增加一个replicat进程 38 6.4 在源数据库创建一个checkpoint表 38 6.5 编辑配置replicat进程 39 6.6 在目标数据库端配置GLOBALS文件 39 6.7 在目标数据库安装goldengate用户需要的表 39 6.8 在目标数据库配置一个extract进程 40 6.9 在目标数据库端配置一个pump进程 40 6.10 在源数据库端启动replicat进程 42 6.11 在目标数据库中启动extract、replicat的进程 42 6.12 目标数据库可以把数据、表结构的修过同步到源数据库服务器上 42 第7章 备注: 44 7.1 Oracle官网的下载地址 44 7.2 GoldenGate的GLOBALS配置文件内容 44 7.3 GoldenGate的eiex01配置文件内容 44 7.4 GoldenGate的epmp01配置文件内容 44 7.5 GoldenGate的rora01配置文件内容 45 7.6 GoldenGate的eiexbb配置文件内容 45 7.7 GoldenGate的epmpbb配置文件内容 45 7.8 GoldenGate的rorabb配置文件内容 45 7.9 更改GoldenGate的复制时间点 46 7.10 查看GoldenGate命令格式 46 7.11 查看manager,extract,replicat是否运行 47 7.12 查看goldengate进程的错误 48
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值