概述
本文主要描述如何使用GoldenGate(下面以ogg简称)实现两个oracle数据库进行单向数据同步。操作系统使用windows server 2012 r2,oracle使用11.204,同步内容包括DDL操作以及DML操作。
源库:
计算机名:server2012orcl1
ip:192.168.2.213
操作系统:windows server2012 r2 datacenter
数据库版本:11g(11.204)
数据库sid:orcl
数据库业务库用户名密码:dms/dms
数据库ogg用户名密码:ogg/ogg(dba)
目标库:
计算机名:server2012orcl2
ip:192.168.2.214
操作系统:windows server2012 r2 datacenter
数据库版本:11g(11.204)
数据库sid:orcl
数据库业务库用户名密码:dms/dms
数据库ogg用户名密码:ogg/ogg(dba)
软件版本
ogg:191004
oracle:11.204(11.201测试有问题),两边dms用户下面有测试表demo,数据为空
create table demo(id number primary key,ename varchar2(10))
需配置ORACLE_HOME环境变量,这里为C:\app\orcl\product\11.2.0\dbhome_1
操作系统:windows server2012 r2 datacenter(2707961),需要安装vc++2013,vc++2015。防火墙关闭。vc++2015需要安装系统更新,补丁包安装顺序如下,第二步请用管理员权限运行,为后台无界面程序
数据库设置
数据库归档模式
在服务器上使用sqlplus / as sysdba登录oracle,
使用archive log list查询当前日志归档模式。
像上图,使用的事非归档模式,我们需要修改为归档模式。
修改步骤:
1、shutdown immediate;
2、startup mount;
3、alter database archivelog;
4、alter database open;
再次使用archive log list查询当前日志归档模式
开启补全日志
select supplemental_log_data_min from v$database;
alter database add supplemental log data;
开启ogg复制模式
alter system set enable_goldengate_replication=true scope=both;
关闭回收站
alter system set recyclebin=off scope=spfile;
重启数据库
为确认各项配置生效,请重启数据库
创建ggs表空间和用户
create tablespace ggs datafile 'ggs.dat' size 100m autoextend on;
create user ggs identified by ggs default tablespace ggs;
grant dba to ggs;
下载GoldenGate
下载地址:https://www.oracle.com/middleware/technologies/goldengate-downloads.html
安装源端
在源库安装GoldenGate
1、执行setup
2、选择对应的数据库版本
3、选择ogg(Oracle GoldenGate简称)安装目录,这里安装到c:\app\orcl\ogg目录
4、执行安装(安装时间大概2分钟)
5、测试,进入安装目录,执行ggsci
安装目标端
在目标库安装ogg
安装方法同源端一样,目标端和源端如果在一台机器,需要使用不同的安装目录和端口。
源端安装DDL对象
在ogg安装目录进入sqlplus
执行@marker_setup.sql(输入用户名ggs)
执行@ddl_setup.sql(输入用户名ggs)
执行@role_setup.sql(输入用户名ggs)
执行 grant GGS_GGSUSER_ROLE to ggs;
执行@ddl_enable.sql
执行@marker_status.sql(输入用户名ggs)
源端OGG GLOBAL配置
1、cmd进入app\orcl\ogg目录
2、运行ggsci
3、create subdirs
4、edit params ./GLOBALS
MGRSERVNAME GGMGR
checkpointtable ggs.checkpoint
ALLOWOUTPUTDIR c:\app\orcl\ogg\dirdat
ggschema ggs
源端服务安装
用管理员运行cmd,进入ogg安装目录。
执行install addservice
源端管理进程配置
进入ogg安装目录
1、ggsci
2、edit params mgr
PORT 7809
dynamicportlist 7501-7505
autorestart extract *,waitminutes 2,retries 5
目标端OGG GLOBAL配置
1、cmd进入app\orcl\ogg目录
2、运行ggsci
3、create subdirs
4、edit params ./GLOBALS
MGRSERVNAME GGMGR
checkpointtable ggs.checkpoint
ALLOWOUTPUTDIR c:\app\orcl\ogg\dirdat
目标端服务安装
用管理员运行cmd,进入ogg安装目录。
执行install addservice
目标端管理进程配置
进入ogg安装目录
1、ggsci
2、edit params mgr
PORT 7809
dynamicportlist 7501-7505
autostart er *
autorestart extract *,waitminutes 2,retries 5
lagreporthours 1
laginfominutes 3
lagcriticalminutes 5
purgeoldextracts c:\app\ogg\dirdat\rt*,usecheckpoints,minkeepdays 3
添加源端、目标端checkpoint表
1、ggsci
2、dblogin userid ggs,password ggs
3、add checkpointtable ggs.checkpoint
源端添加表监听
1、ggsci
2、dblogin userid ggs,password ggs
3、add trandata dms.*
配置源端OGG EXTRACT进程
extract eora
dynamicresolution
userid ggs,password ggs
rmthost s2012orcl2,mgrport 7809
rmttrail c:\app\ogg\dirdat\et
ddl include all
ddloptions addtrandata,report
table dms.*;
add extract eora,tranlog,begin now
add exttrail c:\app\orcl\ogg\dirdat\et,extract eora
配置源端OGG PUMP进程
edit params pump_so
extract pump_so
dynamicresolution
userid ggs,password ggs
rmthost server2012orcl2,mgrport 7809
rmttrail c:\app\\orcl\ogg\dirdat\pt
table dms.*;
add extract pump_so,exttrailsource c:\app\orcl\ogg\dirdat\et
add rmttrail c:\app\orcl\ogg\dirdat\pt,extract pump_so
配置目标端OGG接收进程
edit params rep1
replicat rep1
userid ggs,password ggs
assumetargetdefs
reperror default,discard
discardfile c:\app\orcl\ogg\dirrpt\rep1.dsc,append,megabytes 50
dynamicresolution
ddloptions report
ddlerror default ignore retryop maxretries 3 retrydelay 5
ddlerror default discard
ddlerror default ignore retryop
map dms.*,target dms.*;
add replicat rep1,exttrail c:\app\orcl\ogg\dirdat\et,checkpointtable ggs.checkpoint
开启同步
确定程序
源端:
目标端:
启动程序
目标端:
start mgr
源端:
start mgr
start eora
start pump_so
测试
源库demo表插入数据
insert into demo(id, ename) values(1,'abc')
目标库demo表应该同步该条记录,同时时间测试1s左右
源库测试添加demo1表
create table demo1(id number primary key,ename varchar2(10))
目标库会同步建立demo1表