windows10使用Oracle GlodenGate 配置Oracle数据库同步

只谈情不闲聊 提交于 2020-01-08 10:01:31

参考学习博客地址:https://www.cnblogs.com/lanston/p/ogg_instrAndInstall.html#label3
软件下载地址:http://www.oracle.com/technetwork/middleware/goldengate/downloads/index.html

我这里下载的是 Oracle GoldenGate 18.1.0.0.0 for Oracle on Windows (64 bit)
因为下载其他版本在配置的时候报错,有些Orcale的内置包找不到。

GoldenGate由COLLECTOR后台进程、MGR进程、EXTRACT进程、DATA PUMP EXTRACT进程、Replicat等一系列进程组成;COLLECTOR后台进程负责接收和保存源端数据到trail;MGR进程管理启动Oracle GoldenGate进程、分配端口、管理trail file、创建事件,错误和诊断报告工作;EXTRACT进程负责抽取捕获变更数据信息并记录到trail;DATA PUMP EXTRACT是第二种GoldenGate extract 进程配置,它加强了源端和目标端抽取捕获数据的可用性,避免网络错误和目标端失败导致的数据丢失并提供了更复杂的数据过滤和转换功能,以及多源对单目标和单源对多目标的数据同步方式;Replicat进程读取接收到的trail文件,根据trail文件内容重构DML和DDL并应用到目标数据库。

1.3 组件说明
1.3.1 Manager

Manager进程必须在源端和目标端运行,并且在Extract和Replicat进程之前启动,没有该进程OGG无法做其它的操作,它管理启动Oracle GoldenGate进程、启动动态进程、分配端口给GoldenGate进程、管理trail file、创建事件,错误和诊断报告工作;

1.3.2 Extract

Extract 运行在源端或者根据系统和业务的需求可以同时运行在两端,抽取捕获系统变更统数据;它可以配置为初始化数据加载(直接从数据源中加载静态的数据)和在某个时间点后源端与服务端变更数据同步(从在线日志或归档日志抽取捕获变更的数据),它也可以在支持DDL变更的系统中抽取捕获DDL;
  当配置为数据同步时,extract进程抽取捕获extract配置文件里配置的对象的任何DML和DDL(需要额外配置)的操作,extract进程记录这些操作,直到用户提交或回滚事务;当收到回滚(rollback)时,extract撤销这些记录;当收到(commit)操作后,extract进程记录保存这些操作到一个或多个trail文件里并以队列的形式发送到目标端,以确保数据传输速度和数据的一致性。

1.3.3 Data Pumps

Data Pumps是第二种类型的GoldenGate extract配置,如果不使用Data Pump,extract进程必须发送抽取捕获的操作数据到目标端trail;如果配置了Data Pump,extract进程抽取捕获数据写入到trail,Data pump读取trail并且通过网络发送trail到目标端trail,data pump 加强了源端和目标端抽取捕获数据的可用性,主要优点:1.保护网络传输失败和目标端失败;2.可以实现复杂的数据过滤和转换;3.可以结合多个数据源到目标端;4.可以同步一个源数据到多个目标端。
1.3.4 Replicats
  Replicat进程运行在目标端读取tail文件和重构DML、DDL并应用到目标数据库;Replicat编译SQL一次,当变量值不同时重复使用编译过的SQL;Replicat进程可以像extract进程一样配置初始化数据加载(直接从数据源中加载静态的数据)和在某个时间点后源端与服务端变更数据同步(从在线日志或归档日志抽取捕获变更的数据);

1.3.5 Trails

trail文件保存抽取捕获的变更数据信息,trail根据GoldenGate配置可能存在于源系统的磁盘上或者目标系统的磁盘上或者系统内部介质或者相关的系统中;使用trail文件存储抽取捕获的数据可以不依赖于extract或replicat进程,你可以有更多的选择处理数据和何时到达目标端,比如你可能配置抽取和保存在同一时刻,然后稍后发送数据到目标端。
  trail文件可以在进程需要时使用ADD RMTTRAIL or ADD EXTTRAIL命令添加创建,文件名为8个字符,在创建时指定两个字符然后由GoldenGate填充另外六个序列字符,序列字符从000000到999999,比如创建时指定了两个字符为’tr’,那么GoldenGate会自动创建从tr000001开始的文件保存抽取捕获的数据;文件名是唯一的,默认保存在GoldenGate_home\dirdat目录下。

1.3.6 Checkpoints

Checkpoint存储从文件读取和写入的检测点位置,用于还原和恢复数据,Checkpoint确保发生变化并提交(commit)的数据被extract抽取捕获和被replicat进程应用到目标端;保证在系统、网络或者GoldenGate需要重启进程时发生的错误不会导致数据丢失;在复杂的同步配置中checkpoints启用多个extract和replicat进程从同一个trail集中读取数据。

1.3.7 Collector

collector是目标端后台进程,默认情况下,源端extract进程初始化TCP/IP连接到目标端的collector进程,但是因为GoldenGate是可配置的,所以有些时候可能需要在目标端配置和初始化collector,比如目标端同步时区,但是源端的时区小于目标端的情况下。collector的功能:1.根据源端extract进程的请求,扫描和绑定可用的端口给mgr主进程分配给请求的extract进程;2.接收源端extract抽取trail并写入到目标端的trail文件;当源端发出网络请求时mgr自动启动collector后台进程,所以GoldeGate用户是不可以与它交互的。collector只能同时接受一个extract进程信息(一对一)并且随着extract的终止而终止。

GoldenGate目录结构

说明 后缀名 目录路径
Parameter files .prm /u01/app/product/ogg_src/dirprm
Report files .rpt /u01/app/product/ogg_src/dirrpt
Checkpoint files .cpr /u01/app/product/ogg_src/dirchk
Process status files .pcs /u01/app/product/ogg_src/dirpcs
SQL script files .sql /u01/app/product/ogg_src/dirsql
Database definitions files .def /u01/app/product/ogg_src/dirdef
Extract data files /u01/app/product/ogg_src/dirdat
Temporary files /u01/app/product/ogg_src/dirtmp
Credential store files .crd /u01/app/product/ogg_src/dircrd
Masterkey wallet files .wlt /u01/app/product/ogg_src/dirwlt
Dump files .dmp /u01/app/product/ogg_src/dirdmp

二、配置和使用配置和使用GoldenGate

1. 配置数据库支持GoldenGate

GoldenGate需要从在线日志或归档日志抽取捕获系统的变更数据信息,这些信息可能来源于业务用户,可能来源于系统用户,为了使GoldenGate能够抽取这些数据应为GoldenGate创建独立的用户和分配必要的权限以满足系统运行需求,这些权限包括读取业务用户表数据的权限、读取系统表的权限、执行某个系统包的权限等。

1.2 数据库附加日志

附加日志级别分为:
数据库级别的附加日志(必须附加日志)
用户级别的附加日志(当使用GoldenGate DDL抽取功能时要启用该级别)
表级别的附加日志(必须附加日志,除非你启用了用户级别的附加日志)

1.2.1 数据库级别的附加日志

因为GoldenGate需要抽取捕获变更数据信息和元数据信息,这些信息需要记录日志,并且因为日志总是持续增长的,这些日志增长的信息对于GoldenGate是必须记录的,所以必须在GoldenGate进程启动前开启数据库级别的附加日志;

检查数据库是否开启附加日志:
SYS@sydb>SELECT supplemental_log_data_min, force_logging FROM v$database;

SUPPLEME FOR
-------- ---
NO       NO
开启数据库级别的附加日志:
SYS@sydb>alter database add supplemental log data;
SYS@sydb>ALTER DATABASE FORCE LOGGING;

SYS@sydb>SELECT supplemental_log_data_min, force_logging FROM v$database;

SUPPLEME FOR
-------- ---
YES      YES
Elapsed: 00:00:00.00
SYS@sydb>alter system switch logfile;

System altered.
Elapsed: 00:00:00.09
配置Oracle环境变量:
JAVA_HOME    C:\Program Files\Java\jdk1.8.0121
ORACLE_HOME   D:\oracle\product\11.1.0\db1
ORACLE_SID   ORCL
查看Oracle环境变量是否配置成功:

查找 Oracle安装目录,这个目录有个特征:有一个子目录名叫 RDBMS。就是说: %ORACLE_HOME%\RDBMS\ 这个路径要能正常在文件夹地址栏打开即为配置成功

用管理员身份启动 ggsci.exe,否则有可能会导致读取或创建文件权限不够的错误。

<< -------------------------------- 源端的配置开始 ------------------------------------ >>

安装源端OGG详细步骤:

选择与数据库版本对应的选项:
在这里插入图片描述
源OGG安装:
在这里插入图片描述
以管理员身份启动 ggsic.exe
在这里插入图片描述

输入create subdirs自动创建需要用到的文件夹
GGSCI (东阳) 1> create subdirs

主要目录介绍:
dirchk:存放检查点(Checkpoint)文件
dirdat:存放Trail与Extract文件,以后详述
dirdef:通过DEFGEN工具生成的源或目标的数据定义文件
dirpcs:存放进程状态文件
dirprm:存放参数文件
dirrpt:存放进程报告文件
dirsql:存放SQL脚本文件
dirtmp:当事务所需要的内存超过已分配内存时,缺省存储于此。
源端数据库 账号:OGG1 ,目标端数据库账号 OGG2
登录数据库账号,输入:dblogin userid OGG1,password OGG1
GGSCI (东阳) 2> dblogin userid OGG1,password OGG1
Successfully logged into database.
添加表级的trandata,输入add trandata OGG1.*:
GGSCI (东阳 as OGG1@orcl) 3> add trandata OGG1.*

如不执行add trandata,insert同步没有问题,但在同步update或delete操作时,会因为丢失主键报同步错误。不开启表级的最小附加日志,redo信息不记录没有进行更新的字段,如主键不更新的话主键不记录在redo中,导致同步失败。

配置mgr管理进程,输入edit params mgr将会弹出文本编辑器并写入:
GGSCI (东阳 as OGG1@orcl) 4> edit params mgr
以下是添加的内容:
PORT 7809

DYNAMICPORTLIST 7840-7850

autorestart extract *,waitminutes 2,retries 10
配置extract抽取进程,输入edit params ext_so 其中ext_so是自定义的抽取器名称(长度少于8个字符):
GGSCI (东阳 as OGG1@orcl) 3> edit params ext_so
在弹出的文本编辑器中写入:
extract ext_so
userid OGG1,password OGG1
exttrail D:\YJ_Project\Oracle_Golden_Gate\OGG_Source\dirdat\r1
table OGG1.*;

:表名使用的是通配符,指全部表,也可以指定单个表如table OGG1.ogg_test
exttrailD:\YJ_Project\Oracle_Golden_Gate\OGG_Source\dirdat\r1为源端服务器的目录(自定义)地址。
保存后,添加并启动ext_so进程,输入

GGSCI (东阳 as OGG1@orcl) 9> add extract ext_so,tranlog,begin now
GGSCI (东阳 as OGG1@orcl) 10> add exttrail D:\YJ_Project\Oracle_Golden_Gate\OGG_Source\dirdat\r1,extract ext_so
GGSCI (东阳 as OGG1@orcl) 11> start ext_so

配置pump_so进程,输入edit params pump_so 其中pump_so是自定义的抽取器名称:

GGSCI (东阳 as OGG1@orcl) 4> edit params pump_so
在弹出的文本编辑器中写入:
extract pump_so

userid OGG2,password OGG2

rmthost 127.0.0.1, mgrport 7909

rmttrail D:\YJ_Project\Oracle_Golden_Gate\OGG_Target\dirdat\r1

table OGG2.*;

注:表名使用的是通配符,指全部表,也可以指定单个表如table OGG1.ogg_test
特别注意:rmttrailD:\YJ_Project\Oracle_Golden_Gate\OGG_Target\dirdat\r1为目标端的缓存目录地址。
保存成功后,添加pump_so进程,输入(先不启动pump_so)

GGSCI (东阳 as OGG1@orcl) 12> add extract pump_so,exttrailsource D:\YJ_Project\Oracle_Golden_Gate\OGG_Source\dirdat\r1

GGSCI (东阳 as OGG1@orcl) 13> add rmttrail D:\YJ_Project\Oracle_Golden_Gate\OGG_Target\dirdat\r1,extract pump_so

– 注意exttrailsource的地址为源端服务器的目录 –
– 注意rmttrail的地址为目标端服务器的目录 –

源端分别启动3个服务:
> start mgr
> start ext_so
> start pump_so
> stop .. //停止服务

启动成功后源端总共有5个窗口。
在这里插入图片描述

<< ---------------------------- 到此源端的配置就结束了 ---------------------------------- >>

<< ------------------------------- 目标端配置开始 -------------------------------------- >>

安装目标端的OGG,因为我这里源端和目标端都安装在同一台电脑,所以需要修改端口 需要与源端不同:

在这里插入图片描述

以管理员身份启动 ggsci.exe

在这里插入图片描述

输入create subdirs自动创建需要用到的文件夹
GGSCI (东阳 as OGG2@orcl) 2> create subdirs


主要目录介绍:
dirchk:存放检查点(Checkpoint)文件
dirdat:存放Trail与Extract文件,以后详述
dirdef:通过DEFGEN工具生成的源或目标的数据定义文件
dirpcs:存放进程状态文件
dirprm:存放参数文件
dirrpt:存放进程报告文件
dirsql:存放SQL脚本文件
dirtmp:当事务所需要的内存超过已分配内存时,缺省存储于此。
登录目标端数据库,OGG2账号,输入dblogin userid OGG2,password OGG2:
GGSCI (东阳) 1> dblogin userid OGG2,password OGG2
添加表级的trandata,输入add trandata OGG2.*
GGSCI (东阳 as OGG2@orcl) 3> add trandata OGG2.*
编辑GLOBAL文件,输入edit params ./GLOBALS
GGSCI (东阳 as OGG2@orcl) 4>  edit params ./GLOBALS
在弹出的编辑器中输入:
checkpointtable OGG2.checkpoint
ALLOWOUTPUTDIR D:\YJ_Project\Oracle_Golden_Gate\OGG_Target\dirdat
添加checkpoint,输入add checkpointtable ggs.checkpoint:
GGSCI (东阳 as OGG2@orcl) 8> add checkpointtable OGG2.checkpoint
配置mgr管理进程,输入edit params mgr
GGSCI (东阳 as OGG2@orcl) 11> edit params mgr
在弹出的编辑器中输入:
PORT 7909
DYNAMICPORTLIST 7940-7950
autostart er *
autorestart extract *,waitminutes 2,retries 10
lagreporthours 1
laginfominutes 3
lagcriticalminutes 5
purgeoldextracts D:\YJ_Project\Oracle_Golden_Gate\OGG_Target\dirdat\r1,usecheckpoints,minkeepdays 3
配置的复制进程,输入edit params ext_ta
GGSCI (东阳 as OGG2@orcl) 12> edit params ext_ta
以下是在弹出的编辑器中添加的内容:
replicat ext_ta
userid OGG2,password OGG2
assumetargetdefs
reperror default,discard
discardfile D:\YJ_Project\Oracle_Golden_Gate\OGG_Target\dirdat\repsz.dsc,append,megabytes 100
map OGG1.*, target OGG2.*;

注:表名使用的是通配符,指全部表,也可以指定单个表如table OGG1.ogg_test
保存成功后,添加并且启动复制进程,输入

GGSCI (东阳 as OGG2@orcl) 9> add replicat ext_ta ,exttrail D:\YJ_Project\Oracle_Golden_Gate\OGG_Source\dirdat\r1,checkp
ointtable OGG2.checkpoint
启动目标端的mgr进程:
GGSCI (东阳 as OGG2@orcl) 8> start mgr
启动目标端的extral进程:
GGSCI (东阳 as OGG2@orcl) 8> start ext_ta

防火墙开启 目标端 需要端口 7940 - 7950 (在配置extract抽取进程时候设置的)

目标端启动成功后共有3个窗口:
在这里插入图片描述

<< ------------------------------------ 目标端配置结束 --------------------------------- >>

配置完上面步骤可以完成从源端到目标端的复制。

参考:

配置源端和目的端的OGG参考博客:
https://www.cnblogs.com/shuxiaolong/p/Win7_OGG_Fail.html

上面的补充:
https://blog.csdn.net/ztaos/article/details/95316907

这里面有配置开机启动的说明
https://www.jianshu.com/p/276fede48835

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!