Oracle DML/DDL
同步数据
(OGG_12.2_for_Windows)
Oracle DML/DDL
同步数据
(OGG_12.2_for_Windows) 1
一、环境准备并安装
GoldenGate 3
1、基本环境 3
2、配置日志模式 3
3、创建
GoldenGate
用户帐号 4
4、安装
GoldenGate
软件 5
5、模拟生产库,初始化数据 5
二、
GoldenGate DML
同步配置 6
1
、GoldenGate DML
同步源端配置 6
1、源
MGR
进程 6
2
、配置
Extract
进程组 7
3
、配置
Pump
进程组 8
4
、目标端初始化 9
2
、GoldenGate DML
同步目标端配置 9
1
、 目标端
MGR
进程 10
2
、添加检查表 10
3
、添加
checkpoint
表 11
4、配置目标端
Peplicat
进程组 11
5、可以查看
checkpoint
状态 12
6、验证同步 12
三:
GoldenGate DDL
同步配置 12
1
、支持
DDL
复制运行脚本 12
2、修改
extract
进程的
params
文件 14
3、修改目标端
replicat
进程的
params
文件 15
4、测试 16
5、验证 16
四、常见问题 16
一、环境准备并安装
GoldenGate
1、基本环境
1)
源端
IP
地址:
10.6.252.44
数据库:
Oracle 11.2.0.4
SID: cjc
操作系统版本:
Windows 7
ogg
版本:
Version 12.2.0.1.1 OGGCORE_12.2.0.1.0_PLATFORMS_151211.1401
ggs_Windows_x64_shiphome.zip
2)
目标端
IP
地址:
10.11.82.56
数据库:
Oracle 11.2.0.4
SID: chenjch
操作系统版本:
Windows 7
ogg
版本:
Version 12.2.0.1.1 OGGCORE_12.2.0.1.0_PLATFORMS_151211.1401
ggs_Windows_x64_shiphome.zip
2、配置日志模式
#
源服务器端
(1)
配置归档模式
sqlplus / as sysdba
shutdown immediate;
startup mount;
alter database archivelog;
alter database open;
(2)
配置日志模式
(
打开强制规档与补充日志模式
)
alter database add supplemental log data;
alter database force logging;
ALTER SYSTEM SET ENABLE_GOLDENGATE_REPLICATION = TRUE SCOPE=BOTH;
alter system set recyclebin=off scope=spfile;
(3)
查看配置结果:
SQL> select log_mode,supplemental_log_data_min,force_logging from v$database;
LOG_MODE SUPPLEME FOR
———— ——– —
ARCHIVELOG YES YES
3、创建
GoldenGate
用户帐号
su – oracle
sqlplus / as sysdba;
create tablespace ogguser datafile 'D:\APP\ADMINISTRATOR\ORADATA\CJC\ogguser.dbf' size 10m autoextend on next 1m maxsize unlimited;
create tablespace ogguser datafile 'D:\APP\ADMINISTRATOR\ORADATA\CHENJCH\ogguser.dbf' size 10m autoextend on next 1m maxsize unlimited;
create user ogguser identified by ogguser
default tablespace ogguser
temporary tablespace temp;
grant connect,resource,dba to ogguser;
4、安装
GoldenGate
软件
ogg12
版本安装是图形界面,选择安装版本
(11);
D:\ogg\ggs_Windows_x64_shiphome\Disk1\setup.exe
启动图形界面后,选择
OGG
目录
:D:\app\Administrator\product\11.2.0\oggcore_1 —
需要提前创建
Oracle
目录
:D:\app\Administrator\product\11.2.0\dbhome_1
直接安装即可;
安装后,
D:\app\Administrator\product\11.2.0\oggcore_1
下会包含所有目录,无需执行
create subdirs
命令;
5、模拟生产库,初始化数据
建立测试用户及初始化数据
create user test identified by test;
grant connect ,resource ,dba to test;
conn test/test
create table test (id number ,name varchar2(20));
创建包含
CLOB
字段的表并初始化
create table t_clob(tid number,c_clob clob);
二、
GoldenGate DML
同步配置
1
、GoldenGate DML
同步源端配置
1)
先配置
DML
同步
cd D:\app\Administrator\product\11.2.0\dbhome_1
ggsci.exe
dblogin userid ogguser password ogguser
1、源
MGR
进程
1)
编辑主进程组
edit params mgr
PORT 7809
dynamicportlist 7800-8000
autorestart extract *,retries 5,waitminutes 2,resetminutes 5
PURGEOLDEXTRACTS ./dirdat/*,usecheckpoints, minkeepdays 7
LAGREPORTHOURS 1
LAGINFOMINUTES 30
LAGCRITICALMINUTES 45
说明
:
port
指定
mgr
进程通信端口
dynamicportlist
表示
mgr
进程可以为源与目的端动态通信指定端口
,ogg12
已经废弃;
autorestart extract*
表示自动重启
extract
进程组,每
2
分钟尝试重启所有进程,重试
5
次,每
5
分钟清零。
minkeepdays 7
队列传递结束后
,
依然保留本地队列
7
天
LAGREPORTHOURS 1 /*
每隔
1
小时检查延迟报告
LAGINFOMINUTES 30 /*
每隔
30
分钟检查延迟
,
如果超过延迟阈值
,
将写入错误日志
LAGCRITICALMINUTES 45 /*
延迟阈值
45
分钟
2)
启动主管理进程
start mgr
2
、配置
Extract
进程组
1)
编辑配置文件
edit param ext1
extract ext1
setenv (NLS_LANG=AMERICAN_AMERICA.AL32UTF8)
userid ogguser,password ogguser
exttrail D:\app\Administrator\product\11.2.0\oggcore_1\dirdat\yd
table test.*;
说明
:
extract ext1
定义
extract
进
??
名字
dynamicresolution
setenv
设置环境变量
userid
登录数据库
exttrail
指定本地
trail
文件地址
table
定义同步的表
AMERICAN_AMERICA.AL32UTF8
实验环境的字符集,可用
SELECT userenv('language') from dual;
查出
TRANLOGOPTIONS CONVERTUCS2CLOBS clob
大字段的转换
GETTRUNCATES
获取
Truncate
操作
tranlogoptions rawdeviceoffset 0 /*
裸设备文件偏移量
(AIX
系统专有参数
)
,此实验不用
2)
添加抽取进程
add extract ext1,tranlog,begin now
3)
添加本地
trail
文件
add exttrail D:\app\Administrator\product\11.2.0\oggcore_1\dirdat\yd,extract ext1
说明
:
创建本地
trail
文件,主
extract
进程负责写这部分文件,
pump
负责把这部分文件传到目标服务器端。
4)
启动服务
start extract ext1
3
、配置
Pump
进程组
1)
编辑配置文件
edit param extpump
extract extpump
dynamicresolution
passthru
rmthost 10.11.82.56,mgrport 7809,compress
rmttrail D:\app\Administrator\product\11.2.0\oggcore_1\dirdat\mb
table test.*;
2)
添加
pump
进程
add extract extpump,exttrailsource D:\app\Administrator\product\11.2.0\oggcore_1\dirdat\yd
3)
添加远程
trail
文件
add rmttrail /ogg/app/oracle/dirdat/mb,extract extpump
说明
:
指定远程
trail
文件
4)
启动
pump
进程
start extract extpump
至此:源端配置完成,查看相关进程是剖正常启动
命令:
info all
查看所有进程的状态
view report ext1
可查看失败进程的报错
4
、目标端初始化
建立测试用户及初始化数据
create user test identified by test;
grant connect ,resource ,dba to test;
conn test/test
create table test (id number ,name varchar2(20));
创建包含
CLOB
字段的表并初始化
create table t_clob(tid number,c_clob clob);
2
、GoldenGate DML
同步目标端配置
安装
ogg
软件,安装目录和原服务器一样,安装过程忽略
数据库上进行配置,创建用户,授权
create user ogguser identified by ogguser
default tablespace ogguser
temporary tablespace temp;
grant connect,resource,dba to ogguser;
1
、目标端
MGR
进程
cd D:\app\Administrator\product\11.2.0\dbhome_1
ggsci.exe
dblogin userid ogguser password ogguser
1)
编辑配置文件
edit param mgr
port 7809
dynamicportlist 7800-8000
autostart er *
autorestart extract *, waitminutes 2, resetminutes 5
lagreporthours 1
laginfominutes 3
lagcriticalminutes 5
purgeoldextracts D:\app\Administrator\product\11.2.0\oggcore_1\dirdat\rt*, usecheckpoints, minkeepdays 3
2)
启动
start mgr
2
、添加检查表
说明
:
当我们在
GLOBALS
文件里指定了默认的
checkpoint
之后,新的
Replicat groups
在创建时会自动使用这个参数,不需要其他指令
1)
编辑全局配置文件
GGSCI (dg2) 4> edit param ./GLOBALS
CHECKPOINTTABLE ogguser.checkpoint
2
)
exit #
这里需要退出
ggsci
终端
3
、添加
checkpoint
表
./ggsci
GGSCI (dg2) 1> dblogin userid ogguser password ogguser
GGSCI (dg2 as ogguser@mbdb) 2> add checkpointtable ogguser.checkpoint
4、配置目标端
Peplicat
进程组
1)
编辑配置文件
edit params repl
replicat repl
userid ogguser,password ogguser
reperror default,discard
discardfile D:\app\Administrator\product\11.2.0\oggcore_1\dirrpt\repl.dsc,append,megabytes 4096 —-megabytes
只过小可能会导致
repl
无法启动
map test.*, target test.*;
2)
添加复制进程
add replicat repl,exttrail D:\app\Administrator\product\11.2.0\oggcore_1\dirdat\mb, CHECKPOINTTABLE ogguser.checkpoint
3)
启动进程
start repl —–aftercsn
5、可以查看
checkpoint
状态
su – oracle
sqlplus ogguser/ogguser
SQL> select tname from tab;
TNAME
————————————-
CHECKPOINT TABLE
CHECKPOINT_LOX TABLE
select * from checkpoint;
注
1
:
ogg_11.1.1.1.2
只有
CHECKPOINT
一张表。
注
2
:
ogg_11.2.x.x.1
之后的版本有
CHECKPOINT,CHECKPOINT_LOX
两张表。
查看相关进程是否正常启动
info all
6、验证同步
源端对
test
用户下所有表进行
insert,update,delete
操作,确保目标端可以正常同步所有
DML
操作产生的数据;
三:
GoldenGate DDL
同步配置
1
、支持
DDL
复制运行脚本
#
服务器源端配置
1)
指定数据库模式
D:\app\Administrator\product\11.2.0\oggcore_1\ggsci.exe
GGSCI (dg1) 1> edit param ./GLOBALS
ggschema ogguser
GGSCI (dg1) 3> stop mgr
2)
安装
DDL
对象
进入到
ogg
的安装目录,此实验为
D:\app\Administrator\product\11.2.0\oggcore_1
sqlplus / as sysdba
SQL> grant dba to ogguser;
SQL> @marker_setup
说明
:
均指定用户
ogguser
SQL> @ddl_setup
说明
: 11.1.1.2
需要手动输入
ogguser,INITIALSETUP,yes
SQL> @role_setup
SQL> grant GGS_GGSUSER_ROLE to ogguser;
SQL> @ddl_enable
SQL> @marker_status.sql
注
1:
执行
dbmspool
包将在数据库中创建
DBMS_SHARED_POOL
包,之后
ddl_pin
包需要用到
SQL> @?/rdbms/admin/dbmspool.sql
注
2:
执行
ddl_pin.sql
通过
dbms_shared_pool.keep
存储过程将
DDLReplication
相关对象
keep
在共享池中,以保证这些对象不
RELOAD
,提升性能。
SQL> @ddl_pin.sql ogguser
2、修改
extract
进程的
params
文件
#
服务器源端配置
# source
端修改
extract
进程的
params
文件,添加
"ddl include all"
参数,重启
extract
进程
1)
停止
ext1
进程
GGSCI (test) 2> stop extract ext1
2)
编辑配置文件
GGSCI (test) 3> edit params ext1
extract ext1
dynamicresolution
setenv (NLS_LANG=AMERICAN_AMERICA.AL32UTF8)
userid ogguser,password ogguser
exttrail /ogg/app/oracle/dirdat/yd
report at 1:00
reportrollover at 1:00
ddl include all
ddloptions addtrandata,report
GETTRUNCATES
TRANLOGOPTIONS CONVERTUCS2CLOBS
table test.*;
#
说明:加了两行
tranlogoption
与
ddl
3)
启动
mgr,eora
进程
GGSCI (test) 4> start mgr
GGSCI (test) 5> start extract ext1
4)
查看进程启动情况
GGSCI (test) 6> info extract ext1
3、修改目标端
replicat
进程的
params
文件
#
目标服务器配置
# target
端修改
replicat
进程的
params
文件,
添加
"ddlerror default ignore retryop maxretries 3 retrydelay 5"
等参数,重启
replicat
进程,操作如下
1)
停止
mgr
进程
GGSCI (slave) 1> stop mgr
2)
停止
repl
进程
GGSCI (slave) 1> stop replicat repl
3)
编辑
repl
配置文件
GGSCI (slave) 1> edit params repl
GGSCI (slave) 2> view params repl
replicat repl
userid ogguser,password ogguser
reperror default,discard
discardfile D:\app\Administrator\product\11.2.0\oggcore_1\dirrpt\repl.dsc,append,megabytes 4096
ddloptions report
ddlerror default ignore retryop maxretries 3 retrydelay 5
ddlerror default discard
ddlerror default ignore retryop
map test.*, target test.*;
4)
启动
rora_t1
进程
GGSCI (slave) 4> start mgr #
会自动启动
repl
进程
GGSCI (slave) 5> info replicat repl
4、测试
在源端
test
用户创建一个表,查看目标端是否成功创建。
create table t1(id number);
5、验证
在目标端查看
t1
表及数据是否同步过来
四、常见问题
问题一:
insert
和
delete
可以同步,
update
不能同步;
解决方案:
ggsci > dblogin userid gg, password gg
ggsci > add trandata test.*
问题二:
repl
进程无法启动
查看日志
D:\app\Administrator\product\11.2.0\oggcore_1\ggserr.log
D:\app\Administrator\product\11.2.0\oggcore_1\dirrpt\repl.dsc
megabytes
值过小,可能会引起
rep1
进程
ABENDED
;
欢迎关注我的微信公众号"IT小Chen",共同学习,共同成长!!!