Oracle GoldenGate Windows平台oracle->oracle单向数据同步,试验环境:
试验环境 | 源端软件版本 | 目标端软件版本 |
---|---|---|
操作系统 | Windows 10 64位 | Windows 10 64位 |
IP地址 | 192.168.2.100 | 192.168.2.200 |
数据库 | Oracle 11.2.0.3.0 64bit | Oracle 11.2.0.3.0 64bit |
数据库账号 | ggs | ggs |
数据库表 | demo | demo |
GoldenGate | Oracle GoldenGate 12.2.0.2.3 for Oracle on Windows (64 bit) (327 MB) | Oracle GoldenGate 12.2.0.2.3 for Oracle on Windows (64 bit) (327 MB) |
dirdat目录 | D:\app\win10\OGG122\install\dirdat\et | E:\app\win10\OGG122\install\dirdat\et |
一、Oracle环境安装
参考: https://www.cnblogs.com/sunseine/p/5630213.html
注意:因开启归档日志每天产生的日志会很大,所有需要做一个定时任务,定期进行清理归档日志。否则将空间占满,引起数据库报错:ORA-00257。相关资料:
windows:https://blog.csdn.net/anzhen0429/article/details/78637603
linux:https://www.jianshu.com/p/d098e48b02e2
(1)、设置Oracle的日志模式为:归档模式
(源端
和目标端
都要修改):
image.png
-
cmd
中以sysdba
身份连接数据库
> sqlplus "/as sysdba"
- 查看数据库当前归档模式
SQL> select log_mode from v$database;
image.png
-
archive log list;
查看自动归档状态和归档进程,shutdown immediate;
关闭数据库,startup mount;
启动到mount状态,alter database archivelog;
修改数据库为归档模式,alter database open;
打开数据库
SQL> archive log list;
SQL> shutdown immediate;
SQL> startup mount;
SQL> alter database archivelog;
SQL> alter database open;
设置完成结果查询:
image.png
(2)、在源端
库中打开force logging
SQL> select force_logging from v$database;
FOR
---
NO
SQL> alter database force logging;
Database altered.
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;
Database altered.
(4)、在源端
库切换日志,使更改生效
SQL> alter system switch logfile;
System altered.
SQL> select supplemental_log_data_min from v$database;
SUPPLEME
--------
YES
(5)、在源端
库中关闭回收站
SQL> show parameter recyclebin
NAME TYPE VALUE
------------- ----------- ------------------------------
recyclebin string on
SQL> alter system set recyclebin=off;
System altered.
# ----------- 如果不成功,执行以下命令 -------------
SQL> alter system set recyclebin=off deferred;
(6)、创建goldengate管理用户
- 在
源端
创建ggs用户
SQL> create user ggs identified by 123456 default tablespace users temporary tablespace 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;
- 在
源端
和目标端
创建测试表:demo
SQL> create table ggs.demo(id number primary key,ename varchar2(10));
- 在
目标端
创建ggs用户
SQL> create user ggs identified by ggs default tablespace users temporary tablespace temp;
SQL> grant dba to ggs;
二、Oracle GoldenGate介绍
参考: https://www.cnblogs.com/qiumingcheng/p/5435907.html
文档: https://docs.oracle.com/goldengate/c1230/gg-winux/index.html
三、Oracle GoldenGate安装(源端和目标端)
安装条件:
1、以administrator身份登录系统进行安装,只要安装者属于系统的administrator组就行。
2、安装Microsoft Visual C ++ 2005 SP1 Redistributable Package,这个是必须的。
安装方法很简单,只需要把压缩包解压后,把文件放到指定文件夹即可,如c:/gg目录。
(1)、点击下载 Oracle GoldenGate
在使用12.3.0.1版本遇到WARNING OGG-01988 Could not find schematrandata function in source database: failed to find function.
错误,需要安装修复补丁。
image.png建议下载版本:12.2.0.2
(2)、解压122023_ggs_Windows_x64_shiphome.zip
点击setup.exe开始安装
选择数据库版本
选择安装位置及数据库位置
选择安装目录为刚才创建的安装目录其他都默认,接下来都步骤都默认直至安装完成。
(3)、安装好了之后,设置环境变量,先查看services.msc的Oracle服务如图:
image然后设置系统的环境变量:
ORACLE_HOME=D:\oracle\product\11.2.0\dbhome_1
ORACLE_SID=ORCL
-
ORACLE_HOME
oracle安装路径地址 -
ORACLE_SID
上图oracle服务名
如图:
image注意:源端与目标端都需要进行安装Oracle GoldenGate
四、Oracle GoldenGate配置
====== 以下为Source(同步的数据源)Oracle GoldenGate配置 ======
1、Oracle GoldenGate(源端)
(1)、在源端服务器
安装的OGG根目录
按住SHift+右键
或cmd
进入OGG根目录
的命令面板
(2)、执行ggsci.exe
c:\gg>ggsci.exe
Oracle GoldenGate Command Interpreter for Oracle
Version 12.2.0.2.3 OGGCORE_12.2.0.2.0_PLATFORMS_170727.1430
Windows x64 (optimized), Oracle 11g on Jul 27 2017 16:38:50
Operating system character set identified as GBK.
Copyright (C) 1995, 2017, Oracle and/or its affiliates. All rights reserved.
GGSCI (Win10) 1>
- 添加manager进行到windows服务,使之可以随windows开机自行启动
手动指定服务名GGMGR(默认就是GGMGR)。用edit params ./GLOBALS
命令(注意./GLOBALS
为大写),进入编辑文件,输入下面内容:
MGRSERVNAME GGMGR
保存退出后,用install addservice命令添加服务
c:\gg>install addservice
Service 'GGMGR' created.
Install program terminated normally.
(3)、输入create subdirs
自动创建需要用到的文件夹
GGSCI (Win10) 1> create subdirs
主要目录介绍:
dirchk:存放检查点(Checkpoint)文件
dirdat:存放Trail与Extract文件,以后详述
dirdef:通过DEFGEN工具生成的源或目标的数据定义文件
dirpcs:存放进程状态文件
dirprm:存放参数文件
dirrpt:存放进程报告文件
dirsql:存放SQL脚本文件
dirtmp:当事务所需要的内存超过已分配内存时,缺省存储于此。
(4)、登录ggs账号,输入dblogin userid ggs,password 123456
:
GGSCI (Win10) 1> dblogin userid ggs,password 123456
Successfully logged into database.
(5)、添加表级的trandata,输入add trandata ggs.demo
:
GGSCI (Win10) 1> add trandata ggs.demo
Logging of supplemental redo data enabled for table GGS.DEMO.
TRANDATA for scheduling columns has been added on table 'GGS.DEMO'.
TRANDATA for instantiation CSN has been added on table 'GGS.DEMO'.
注:表名可以使用通配符,如add trandata ggs.*
(5)、配置mgr管理进程,输入edit params mgr
将会弹出文本编辑器并写入:
GGSCI (Win10) 1> edit params mgr
以下是添加内容:
port 7500
dynamicportlist 7501-7505
autorestart extract *,waitminutes 2,retries 5
(6)、启动mgr进程,输入start mgr
:
GGSCI (Win10) 1> start mgr
(7)、配置extract抽取进程,输入edit params eora
将会弹出文本编辑器并写入:
GGSCI (Win10) 1> edit params eora
以下是添加内容:
extract eora
userid ggs,password 123456
exttrail D:\app\win10\OGG122\install\dirdat\et
table ggs.demo;
注:表名可以使用通配符,如table ggs.*
exttrail
的D:\app\win10\OGG122\install\dirdat\et
为源端服务器的目录(自定义)地址。
保存后,添加并启动eora进程,输入add extract eora,tranlog,begin now
、add exttrail D:\app\win10\OGG122\install\dirdat\et,extract eora
、start eora
:
GGSCI (Win10) 1> add extract eora,tranlog,begin now
GGSCI (Win10) 1> add exttrail D:\app\win10\OGG122\install\dirdat\et,extract eora
GGSCI (Win10) 1> start eora
add extract eora,tranlog,begin now //从当前时间开始同步
add extract eora, tranlog,begin 2019-02-11 13:00:00 //指定时间点开始同步
(8)、配置pump_so进程,输入edit params pump_so
将会弹出文本编辑器并写入:
GGSCI (Win10) 1> edit params pump_so
以下是添加内容:
extract Pump_so
Userid ggs,password 123456
rmthost 192.168.88.58, mgrport 7500
rmttrail E:\app\win10\ogg\install\dirdat\et
Table ggs.demo;
注:表名可以使用通配符,如Table ggs.*
特别注意
:rmttrail
的E:\app\win10\ogg\install\dirdat\et
为目标端的缓存目录地址。
保存成功后,添加pump_so进程,输入(先不启动pump_so)add extract pump_so,exttrailsource D:\app\win10\OGG122\install\dirdat\et
,add rmttrail E:\app\win10\ogg\install\dirdat\et,extract pump_so
:
GGSCI (Win10) 1> add extract pump_so,exttrailsource D:\app\win10\OGG122\install\dirdat\et -- 注意`exttrailsource`的地址为`源端`服务器的目录
GGSCI (Win10) 1> add rmttrail E:\app\win10\ogg\install\dirdat\et,extract pump_so -- 注意`rmttrail`的地址为`目标端`服务器的目录
(8)、注意等待目标端安装完成后,启动start pump_so
- 源端所需要启动的服务有
3
个
> start mgr
> start eora
> start pump_so
> stop .. //停止服务
<< 到此源端的配置就结束了 >>
====== End Source(同步的数据源)Oracle GoldenGate配置 ======
====== 以下为Target(同步的目标数据库)Oracle GoldenGate配置 ======
2、Oracle GoldenGate(目标端)
(1)、在目标端服务器
安装的OGG根目录
按住SHift+右键
或cmd
进入OGG根目录
的命令面板
(2)、执行ggsci.exe
c:\gg>ggsci.exe
Oracle GoldenGate Command Interpreter for Oracle
Version 12.2.0.2.3 OGGCORE_12.2.0.2.0_PLATFORMS_170727.1430
Windows x64 (optimized), Oracle 11g on Jul 27 2017 16:38:50
Operating system character set identified as GBK.
Copyright (C) 1995, 2017, Oracle and/or its affiliates. All rights reserved.
GGSCI (Win10) 1>
- 添加manager进行到windows服务,使之可以随windows开机自行启动
手动指定服务名GGMGR(默认就是GGMGR)。用edit params ./GLOBALS
命令(注意./GLOBALS
为大写),进入编辑文件,输入下面内容:
MGRSERVNAME GGMGR
保存退出后,用install addservice命令添加服务
c:\gg>install addservice
Service 'GGMGR' created.
Install program terminated normally.
(3)、输入create subdirs
自动创建需要用到的文件夹
GGSCI (Win10) 1> create subdirs
(4)、登录ggs账号,输入dblogin userid ggs,password 123456
:
GGSCI (Win10) 1> dblogin userid ggs,password 123456
Successfully logged into database.
(5)、添加表级的trandata,输入add trandata ggs.demo
:
GGSCI (Win10) 1> add trandata ggs.demo
Logging of supplemental redo data enabled for table GGS.DEMO.
TRANDATA for scheduling columns has been added on table 'GGS.DEMO'.
TRANDATA for instantiation CSN has been added on table 'GGS.DEMO'.
注:表名可以使用通配符,如add trandata ggs.*
(6)、编辑GLOBAL文件,输入edit params ./GLOBALS
将会弹出文本编辑器并写入:
GGSCI (Win10) 1> edit params ./GLOBALS
以下是添加内容:
checkpointtable ggs.checkpoint
ALLOWOUTPUTDIR E:\app\win10\ogg\install\dirdat
(7)、登陆,输入dblogin userid ggs,password 123456
:
GGSCI (Win10) 1> dblogin userid ggs,password 123456
(8)、添加checkpoint,输入add checkpointtable ggs.checkpoint
:
GGSCI (Win10) 1> add checkpointtable ggs.checkpoint
(9)、配置mgr管理进程,输入edit params mgr
将会弹出文本编辑器并写入:
GGSCI (Win10) 1> edit params mgr
以下是添加内容:
port 7500
dynamicportlist 7501-7505
autostart er *
autorestart extract *,waitminutes 2,retries 5
lagreporthours 1
laginfominutes 3
lagcriticalminutes 5
purgeoldextracts E:\app\win10\ogg\install\dirdat\et,usecheckpoints,minkeepdays 3
保存成功后,启动mgr管理进程start mgr
:
GGSCI (Win10) 1> start mgr
(10)、配置的复制进程,输入edit params repl
将会弹出文本编辑器并写入:
GGSCI (Win10) 1> edit params repl
以下是添加内容:
replicat repl
userid ggs,password 123456
assumetargetdefs
reperror default,discard
discardfile ./dirrpt/repl.dsc,append,megabytes 50
MAP ggs.demo, target ggs.demo;
注:表名可以使用通配符,如MAP ggs.*, target ggs.*
保存成功后,添加并且启动复制进程,输入add replicat repl,exttrail E:\app\win10\OGG122\install\dirdat\et,checkpointtable ggs.checkpoint
,start repl
:
GGSCI (Win10) 1> add replicat repl,exttrail E:\app\win10\ogg\install\dirdat\et,checkpointtable ggs.checkpoint
GGSCI (Win10) 1> start repl
(11)、打开目标端的7500-7505的端口,如图:
image.png
- 目标端所需要启动的服务有2个
> start mgr
> start repl
<< 到此目标端的配置就结束了 >>
====== End target(同步的目标数据库)Oracle GoldenGate配置 ======
四、GoldenGate 测试
(1)、启动源端
的start pump_so
:
GGSCI (Win10) 1> start pump_so
目标端
显示了这个info,如图:
源端
的sqlplus.exe输入:
SQL> INSERT INTO "GGS"."DEMO"("ID", "ENAME") VALUES ('1', '测试1');
已创建 1 行。
SQL> INSERT INTO "GGS"."DEMO"("ID", "ENAME") VALUES ('2', '测试2');
已创建 1 行。
SQL> commit;
然后再去目标端看看效果如何,如图(我插入了2条):
image.png
注:可以到安装ogg的根目录中找到ggserr.log文件,查看错误日志。
五、GoldenGate 错误解决方案
1、 问题:ERROR OGG-01031 Oracle GoldenGate Capture for Oracle, PUMP_SO.prm: There is a problem in network communication, a remote file problem, encryption keys for target and source do not match (if using ENCRYPT) or an unknown error. (Reply received is Failed resolving output file D:\app\win10\OGG122\dirdat\et000000 (error: 3, 系统找不到指定的路径。)).
原因:配置抽取进程的rmttrail路径错误(配成了源端的地址,应该是目标端的地址),执行:
GGSCI (Win10 as ggs@orcl) 30> edit params pump_so
在弹出的文本编辑器中添加以下配置:
extract Pump_so
Userid ggs,password 123456
rmthost 目标端IP, mgrport 目标端端口
rmttrail 目标端存放文件地址
Table ggs.demo;
2、问题:ERROR OGG-01044 Oracle GoldenGate Capture for Oracle, PUMP_SO.prm: The trail 'D:\app\win10\ogg\install\dirdat\et' is not assigned to extract 'PUMP_SO'. Assign the trail to the extract with the command "ADD EXTTRAIL/RMTTRAIL D:\app\win10\ogg\install\dirdat\et, EXTRACT PUMP_SO".
原因:修改了rmttrail 目标端存放文件地址未更新,在GGSCI命令控制器中执行:
GGSCI (Win10 as ggs@orcl) 30> ADD EXTTRAIL/RMTTRAIL D:\app\win10\ogg\install\dirdat\et, EXTRACT PUMP_SO
3、ERROR OGG-01031 Oracle GoldenGate Capture for Oracle, PUMP_SO.prm: There is a problem in network communication, a remote file problem, encryption keys for target and source do not match (if using ENCRYPT) or an unknown error. (Reply received is Output file D:\app\win10\ogg\install\dirdat\et000000 is not in any allowed output directories.).
原因:从ogg12.2之后,如果远端队列文件默认不是在dirdat目录下,则需要在远端(目标服务器)OGG的 GLOBALS 文件中添加如下参数:
allowOutputDir D:\app\win10\ogg\install\dirdat
重启远端mgr进程之后,再启动本地传输进程,此时,可以正常进行数据投递,问题解决。
4、ERROR OGG-01224 Oracle GoldenGate Capture for Oracle, PUMP_SO.prm: TCP/IP error 10061 (由于目标计算机积极拒绝,无法连接。), endpoint:192.168.2.85:7500.
重启目标端mgr服务或问题3引发的
5、ggsci执行错误
[oracle@doudou-NAS ~]$ ggsci
ggsci: error while loading shared libraries: libnnz11.so: cannot open shared object file: No such file or directory
解决方法:export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/opt/ogg
网友评论