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的使用和维护,以及遇到的一些问题或者中断恢复等问题,下一篇博客再详细写下来!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值