一、环境
操作系统 Microsoft Windows Server 2003 R2 Enterprise Edition Service Pack 2
数据库版本: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0
GoldenGate: Oracle GoldenGate Capture for Oracle Version 11.1.1.1.2

注:在安装goldgate之前,需要先安装好Oracle数据库,并且需要安装Microsoft Visual C++ 2005 SP1 Redistributable ,这是Windows环境下Visual C++库的运行组件。Goldgate运行的时候会用到一些库,所以不安装,可能导致“系统无法执行指定的程序”的错误。

Microsoft Visual C++ 2005 SP1 Redistributable下载地址:
链接:https://pan.baidu.com/s/13lPN6HbFM_YCo8Pbfccrgw
提取码:t8l0

GoldenGate软件下载地址:
链接:https://pan.baidu.com/s/12m_CNuxZEdoKEemr4OY67g
提取码:b7zb

二、安装Goldgate软件
1、设置Oracle数据库的环境变量
ORACLE_HOME=E:\app\Administrator\product\11.2.0\dbhome_1
ORACLE_SID=orcl
2、将下载好的GoldenGate软件放到E盘(软件的位置可自行定义),然后解压缩,然后进行E:\goldgate目录,运行ggsci,进入ogg管理控制台。输入命令:create subdirs,让ogg创建其需要用到的目录。
3、把manager进程添加到windows服务。
手动指定服务名:在命令行模式下切换到Ogg目录,用ggsci命令进入GGSCI交互界面。然后输入edit param ./GLOBALS,(注意:./GLOBALS最好使用大写)在弹出的记事本编辑器中,输入以下代码:
MGRSERVNAME GGMGR
保存后退出,回到windows命令提示符,在Ogg根目录用install命令添加服务:install addservice,然后手动命名的服务,这样就添加成功了。当然也可以直接使用默认的服务名GGSMGR----直接在Ogg目录输入install addservice.

注:源端和目标端操作一样。

三、配置Oracle数据库
注:10g要检查回收站功能是否关闭;11g则不必检查。这里咱们用11g,所以不必检查。
在源端库中关闭回收站

SQL>show parameter recyclebin
SQL>alter system set recyclebin=off deferred;   ---非立即生效

注意:如果是oracle10.1版本需要使用一下命令。

alter system set "_recyclebin=off";

默认情况归档模式、附加日志、强制日志参数是关闭的。

SQL> select supplemental_log_data_min from v$database;

启动归档模式、附加日志、强制日志。其中开启归档模式需要重启数据库,开启附加日志、强制日志不需要重启数据库。

SQL> shutdown immediate;
SQL> startup mount;
SQL> alter database archivelog;
SQL> alter database force logging;
SQL> alter database add supplemental log data;
SQL> alter database open;

查看数据库级别的补充日志是否开启:

select supplemental_log_data_min from v$database;

四、创建Goldgate管理用户,并授权
源端和目标端:

--创建表空间
create tablespace OGG_D datafile 'F:\app\Administrator\oradata\dleam75\OGG_D_01.dbf' size 500m autoextend on;
---创建临时表空间
create temporary tablespace OGG_T tempfile 'F:\app\Administrator\oradata\dleam75\OGG_T_01.dbf' size 500m autoextend on;
---创建用户并指定默认表空间
create user ogg identified by oracle default tablespace OGG_D temporary tablespace OGG_T;

源端和目标端授权:

grant connect,resource,unlimited tablespace to ogg;
grant execute on utl_file to ogg;

源端授权:

grant select any dictionary,select any table to ogg;
grant alter any table to ogg;
grant flashback any table to ogg;
grant execute on DBMS_FLASHBACK to ogg;

目标端授权:

grant select any dictionary,select any table to ogg;
grant CREATE SESSION, ALTER SESSION to ogg;
grant alter any table to ogg;
grant flashback any table to ogg;
grant execute on DBMS_FLASHBACK to ogg;
grant insert any table to ogg;
grant delete any table to ogg;
grant update any table to ogg;

源端添加表级trandata

---先通过goldgate用户登录数据库
dblogin userid ogg,password oracle
---给表添加trandata
add trandata ddling.*

五、配置源端的进程组
1、MGR管理进程组
进入E:\goldgate目录下,运行ggsci.exe

GGSCI (DB7) 2> edit param mgr
PORT 7809
DYNAMICPORTLIST  7809-7849
AUTOSTART EXTRACT *
AUTORESTART EXTRACT *, RETRIES 5, WAITMINUTES 2
PURGEOLDEXTRACTS E:\goldgate\dirdat\em*,USECHECKPOINTS, MINKEEPDAYS 5
PORT 7839 ## 通信端口7839, 源端和目标端需要保持一致。
DYNAMICPORTLIST 7840-7939 ##动态端口列表的范围从7840到7939。当制定端口被占用或者出现通信故障,管理进程将会从列表中选择下一个端口尝试连接,避免通信端口的单点故障。
AUTOSTART EXTRACT * ##当MGR进程启动后启动EXTRACT进程
AUTORESTART EXTRACT *, RETRIES 5, WAITMINUTES 2 ##当EXTRACT进程中断后尝试自动重启,每隔2分钟尝试启动一次,尝试5次。
PURGEOLDEXTRACTS /home/oracle/product/ogg_src/dirdat/*, USECHECKPOINTS, MINKEEPDAYS 5 ##定期清理dirdat路径下的本地队列(local trail)。保留期限10天,过期后自动删除。从而控制队列文件的目录不会增长过大。
LAGREPORTHOURS 1 ##每隔一小时检查各进程延时情况,并记录到goldengate report文件。
LAGINFOMINUTES 30 ##进程复制延时超过30分钟,向日志文件记录一条错误日志
LAGCRITICALMINUTES 45 ## 传输延时超过45分钟将写入警告日志

通过start mgr命令启动mgr进程,info all查看进程状态。
2、配置源端的extract进程
extract进程:
在源端用add extract命令创建一个extract进程:

GGSCI (DB7) 5>add extract exteam,tranlog begin now

用add exttrail命令创建本地trail文件,extract组负责写这部分文件,pump进程服务读它

GGSCI (DB7) 6>add exttrail ./dirdat/em,extract exteam
GGSCI (DB7) 7>edit param exteam
EXTRACT exteam
SETENV (ORACLE_SID = orcl)
USERID ogg, PASSWORD oracle
DYNAMICRESOLUTION
EXTTRAIL E:\goldgate\dirdat\em
TABLE ddling.*;

参数解释如下:

dblogin userid ogg, password ogg ##使用ogg用户登录GoldenGate
add extract ext1,tranlog,begin now ##创建主抽取进程
add exttrail /home/oracle/product/ogg_src/dirdat/sr, extract ext1 ##创建源端trail文件并指定路径
edit param ext1
##-----------------
extract ext1
SETENV(ORACLE_SID="orcl") ##设置Oracle数据库实例sid
SETENV(NLS_LANG=SIMPLIFIED CHINESE_CHINA.AL32UTF8) ##设置goldengate的字符集变量信息,此处值会覆盖操作系统级别的变量。该值需要和数据库字符集匹配一致。
userid ogg, password ogg
REPORTCOUNT EVERY 30 MINUTES, RATE ##每隔30分钟报告一次从程序开始到现在的抽取进程或者复制进程的事物记录数,并汇报进程的统计信息
DISCARDFILE /home/oracle/product/ogg_src/dirrpt/extsr.dsc, APPEND, MEGABYTES 1024 ##将执行失败的记录保存在discard file中,discard file文件记录了GoldenGate进程错误、数据库错误、GoldenGate操作等信息。该文件位于/home/oracle/product/ogg_src/dirrpt/extsr.dsc,大小为1024MB。 文件中已经包含记录的话,再后面继续追加,不删除之前的记录。
DISCARDROLLOVER AT 3:00 ## 为了防止discard file被写满,每天3:00做一次文件过期设定
EXTTRAIL /home/oracle/product/ogg_src/dirdat/sr ##队列文件路径, trail文件存放路径。
DYNAMICRESOLUTION ## 有时候开启OGG进程的时候较慢,可能是因为需要同步的表太多,OGG在开启进程之前会将需要同步的表建立一个记录并且存入到磁盘中,这样就需要耗费大量的时间。使用该参数来解决此问题。
ddl include all ##配置DDL语句也会同步
DBOPTIONS ALLOWUNUSEDCOLUMN ## 用于阻止抽取进程抽取数据时由于表含有unused列而导致进程异常终止(abend)。使用该参数,抽取进程抽取到unused列时也会向日志文件记录一条警告信息。
FETCHOPTIONS NOUSESNAPSHOT ## 默认值为 usesnapshot,表示利用数据库闪回读取数据。Nousesnapshot表示直接从原表读取相关数据。
FETCHOPTIONS FETCHPKUPDATECOLS ##当使用了HANDLECOLLISIONS时,请使用该参数。复制进程出现丢失update记录(missing update)并且更新的是主键,update将转换成insert。由于插入的记录可能不是完整的行,若要保证完整需要加入此参数
table ogg.*; ##需要复制的对象列表

3、配置源端的pump进程

GGSCI (DB7) 8>add extract pump_em,exttrailsource ./dirdat/em
GGSCI (DB7) 9>add rmttrail ./dirdat/em,extract pump_em
GGSCI (DB7) 10>edit param pump_em
EXTRACT pump_em
USERID ogg, PASSWORD oracle
RMTHOST 172.12.9.33, MGRPORT 7809
PASSTHRU
NUMFILES 5000
RMTTRAIL ./dirdat/em
--DYNAMICRESOLUTION
TABLE ddling.*;
edit param dpump1extract dpump1
userid ogg, password ogg
SETENV(ORACLE_SID="orcl")
SETENV(NLS_LANG=SIMPLIFIED CHINESE_CHINA.AL32UTF8)
RMTHOST 192.168.66.3, mgrport 7839, COMPRESS ## 目标端主机IP,管理进程端口号,投递前压缩队列文件
PASSTHRU ##表示传输进程直接跟抽取进程交互,而不再和数据库进行交互,减少数据库资源的利用。
ddl include all
RMTTRAIL /home/oracle/product/ogg_trg/dirdat/tr ##目标端保存队列文件的目录
DYNAMICRESOLUTION ##动态解析表名
table ogg.*;
##指定Data Pump进程发送trail文件到目标端的位置(目标端trail文件添加到队列中)
add rmttrail /home/oracle/product/ogg_trg/dirdat/tr, extract dpump1

六、配置目标端的进程组
1、MGR管理进程组
进入E:\goldgate目录下,运行ggsci.exe

GGSCI (easdb) 3> edit param mgr
PORT 7809
DYNAMICPORTLIST  7809-7849
AUTOSTART REPLICAT *
AUTORESTART REPLICAT *, RETRIES 5, WAITMINUTES 2
LAGREPORTHOURS 1
LAGINFOMINUTES 30
LAGCRITICALMINUTES 45
PURGEOLDEXTRACTS E:\goldgate\dirdat\em*,usecheckpoints,minkeepdays 3
PORT 7839 ## 通信端口7839, 源端和目标端需要保持一致。
USERID ogg, PASSWORD ogg ## GoldenGate用户登录数据库的用户名和密码,密码未做加密处理。如果密码需要加密使用:GGSCI (dbtrg) 1> encrypt password pwd ,ENCRYPTKEY default 可以得到加密后的密码字符串,之后配置进程若使用加密过的密码,需要带参数(ENCRYPTKEY default)。例如:USERID ogg, PASSWORD xxx(加密过的密码) ,ENCRYPTKEY default
DYNAMICPORTLIST 7840-7939 ## ##动态端口列表的范围从7840到7939。当制定端口被占用或者出现通信故障,管理进程将会从列表中选择下一个端口尝试连接,避免通信端口的单点故障。
AUTOSTART REPLICAT * ##当MGR进程启动后启动REPLICAT进程
AUTORESTART REPLICAT *, RETRIES 5, WAITMINUTES 2 ## 当REPLICAT进程中断后尝试自动重启,每隔2分钟尝试启动一次,尝试5次。
PURGEOLDEXTRACTS /home/oracle/product/ogg_trg/dirdat/*, USECHECKPOINTS, MINKEEPDAYS 10 ##定期清理dirdat路径下的本地队列(local trail)。保留期限10天,过期后自动删除。从而控制队列文件的目录不会增长过大。
PURGEDDLHISTORY MINKEEPDAYS 7, MAXKEEPDAYS 10 ##删除DDL历史表,最小保存7天,最大保存10天。
PURGEMARKERHISTORY MINKEEPDAYS 7, MAXKEEPDAYS 10 ## 删除MARKER历史表,最小保存7天,最大保存10天。
LAGREPORTHOURS 1 ##每隔一小时检查各进程延时情况,并记录到goldengate report文件。
LAGINFOMINUTES 30 ##进程复制延时超过30分钟,向日志文件记录一条错误日志
LAGCRITICALMINUTES 45 ##传输延时超过45分钟将写入警告日志
GGSCI (easdb)  4> start mgr
Managerstarted.

查看进程状态可发现 MANAGER状态为 RUNNING:

GGSCI (easdb) 5> info all
Program     Status     Group       Lag at Chkpt  Time Since Chkpt
MANAGER     RUNNING

2、配置目标端的replicat进程
先设置GLOBALS参数文件

GGSCI (easdb as ogg@orcl) 4> dblogin userid ogg,password oracle
Successfully logged into database.
GGSCI (easdb as ogg@orcl) 5> add checkpointtable ogg.oggckptSuccessfully created checkpoint table ogg.oggckpt.
GGSCI (easdb as ogg@orcl) 6> edit params ./GLOBALS

配置如下:
CHECKPOINTTABLE ogg.oggckpt

exit //退出,以使全局参数生效

创建完毕后,会在OGG_D表空间创建以下两张表,可用ogg用户登陆查看:

SQL> conn ogg/oracle
Connected.
SQL> select * from tab;
TNAME                TABTYPE                CLUSTERID
-------------------- --------------------- ----------
OGGCKPT              TABLE
OGGCKPT_LOX          TABLE

配置replicat进程

GGSCI (easdb as ogg@orcl) 7>add replicat repem,exttrail ./dirdat/em
GGSCI (easdb as ogg@orcl) 8>edit params repem
REPLICAT repem
SETENV (ORACLE_SID=orcl)
USERID ogg, PASSWORD oracle
REPERROR DEFAULT, Discard
ASSUMETARGETDEFS
DISCARDFILE ./dirrpt/repeam.dsc, APPEND, MEGABYTES 2000
dynamicresolution
MAP ddling.*, TARGET ddling.*;
##创建replicat进程
add replicat rep1, exttrail /home/oracle/product/ogg_trg/dirdat/tr, checkpointtable ogg.checkpoints
edit param rep1
#------------------
REPLICAT rep1
SETENV(ORACLE_SID="orcl")
SETENV(NLS_LANG=SIMPLIFIED CHINESE_CHINA.AL32UTF8)
USERID ogg, PASSWORD ogg
REPORT AT 06:00 ##每天06:00定期生成一个report文件
REPORTCOUNT EVERY 30 MINUTES, RATE ##每隔30分钟报告一次从程序开始到现在的抽取进程或者复制进程的事物记录数,并汇报进程的统计信息
REPORTROLLOVER AT 02:00 ##为了防止report file被写满,每天2:00做一次文件过期设定
REPERROR DEFAULT, ABEND ## 除了特殊指定的REPERROR语句,报告所有复制期间出现的错误,回滚非正常中断的事物和进程。遇到不能处理的错误就自动abend,启动需要人工干预处理
ALLOWNOOPUPDATES ##当源表有排除列情况或者有目标表不存在的列时,当更新这列goldengate默认报错。应用该参数后,即可让goldengate生成一条警告信息而不是报错。
ASSUMETARGETDEFS ##使用ASSUMETARGETDEFS参数时,用MAP语句中指定的生产库源表和灾备端目标表具有相同的列结构。它指示的Oracle GoldenGate不在生产端查找源表的结构定义。
HANDLECOLLISIONS ##用于goldengate自动过滤不能出来的冲突记录,为了严格保证数据一致性
DISCARDFILE /home/oracle/product/ogg_trg/dirrpt/repsa.dsc, APPEND, MEGABYTES 1024 ##将执行失败的记录保存在discard file中,discard file文件记录了GoldenGate进程错误、数据库错误、GoldenGate操作等信息。该文件位于./dirrpt/repsa.dsc,大小为1024MB。 文件中已经包含记录的话,再后面继续追加,不删除之前的记录。
DISCARDROLLOVER AT 02:00 ##为了防止discard file被写满,每天2:00做一次文件过期设定
ddl include all ##设置DDL语句也会同步
ddlerror default ignore retryop ##开启DDL复制后,目标端Replicat进程参数文件中必须配置忽略或者过滤DDLERROR的参数
MAP ogg.*, target ogg.*; ##对应需要复制的对象,默认一一对应传输进程

至此,源端和目标端的所有进程配置完毕,接下来就是启动进程和初始化数据库。

备份数据库准备:
先查看当前数据库的scn,并记录下来

SYS@SIT> select current_scn from v$database;
 CURRENT_SCNacle-----------22482934597   ---千万记住,在后面启动replicat进程需要用到;

在E盘创建目录dir,并授权

SYS@SIT> create directory MY_DIR as 'E:\dir';
Directory created.
SYS@SIT> grant read,write on directory MY_DIR to system;

创建完毕后,开始备份数据库(以schemsa备份数据库)

expdp system/oracle schemas=ddling  directory=MY_DIR dumpfile=ddling.dmp logfile=ddling.log flashback_scn=723538

备份完毕后,文件存放在E:\dir目录下。

目标端同样在E盘创建目录dir,并授权,操作和源端一样。

接下来就可以通过impdp命令还原数据库

impdp system/oracle directory=MY_DIR dumpfile=ddling.dmp logfile=ddling.log

最后进行验证。

windows平台goldgate同步oracle数据库相关推荐

  1. Windows 平台sqlalchemy 连接oracle数据库

    1.安装 sqlalchemy Microsoft Windows [版本 6.1.7601] 版权所有 (c) 2009 Microsoft Corporation.保留所有权利. C:\Users ...

  2. postgresql主从备份_基于windows平台的postgresql主从数据库流备份配置

    基于windows平台的postgresql主从数据库流备份配置 因工作需要,需要搞pg数据库的主从备份,领导给了个方向使用流备份,于是开始朝着这个方向进发. 鸣谢大佬A_ccelerator的博客 ...

  3. 导出Windows服务器下的Oracle数据库并导入到Linux服务器下的Oracle数据库中

    2019独角兽企业重金招聘Python工程师标准>>> 说明: 1.Windows Oracle数据库 操作系统:Windows Server 2008 R2 IP地址:192.16 ...

  4. Windows下自动备份Oracle数据库

    Windows下自动备份Oracle数据库 先说说为啥要搞这么个玩意 那是上线前几天[这不是讲故事],测试环境用的数据库崩了[为啥崩了不知道].之前造的一堆测试数据全都没得了[].然后急急忙忙的恢复环 ...

  5. 细数 Windows 平台上的 NoSQL 数据库

    从可查询的分布式解决方案,如MongoDB,到简单的分布式Key/Value存储解决方案,如Cassandra.此外,还有Riak,Tokyo Cabinet,Voldemort,CouchDB和Re ...

  6. 【转】windows平台多线程同步之Mutex的应用

    线程组成: 线程的内核对象,操作系统用来管理该线程的数据结构. 线程堆栈,它用于维护线程在执行代码时需要的所有参数和局部变量.   操作系统为每一个运行线程安排一定的CPU时间 -- 时间片.系统通过 ...

  7. Windows平台手动卸载Oracle Server【完整+干净】

    使用Oracle自带的Universal Installer卸载存在问题: 不干净,不完全,还有一些注册表残留,会影响到后来的安装. 所以,推荐使用手工卸载Oracle. 1.[win+R]-> ...

  8. Apache NIFI 安装 ● 操作 ● 文件同步 ● oracle 数据库增量同步实例讲解

    nifi简介 nifi背景 NiFi之前是在美国国家安全局(NSA)开发和使用了8年的一个可视化.可定制的数据集成产品.2014年NSA将其贡献给了Apache开源社区,2015年7月成功成为Apac ...

  9. oracle 存储同步,Oracle数据库知识——存储过程篇

    在线QQ客服:1922638 专业的SQL Server.MySQL数据库同步软件 存储过程是一组用于完成特定功能的SQL语句,该语句已编译并存储在数据库中.用户通过指定存储过程的名称并提供参数(如果 ...

最新文章

  1. OO学习之二——面向对象分析(OOD)的介绍
  2. redis linux 运行依赖,在Ubuntu系统下安装Redis Desktop Manager的方法
  3. NOIp2018集训test-9-17(pm)
  4. js中JSON转对象、对象转JSON
  5. Android蓝牙音量调节,安卓 蓝牙音量控制 Bluetooth Volume Control v2.40 付费高级特别版...
  6. 你问我DataX是谁?对不起,我活在Apache SeaTunnel的时代!
  7. 2021年电工(初级)考试题及电工(初级)找解析
  8. 阿里云的“飞天“是什么?
  9. 基于Python排课选课系统设计与实现 开题报告
  10. 主码流和辅码流的区别
  11. android 图片过长,【05-25求助】怎样无损加载一张过长的图片
  12. 企业微信开发(自建应用h5)
  13. 《计算机组成原理》第二章数据信息的表示 部分课后习题答案 清华大学出版_秦磊华_谭志虎
  14. 电子振荡器(Electronic Oscillator)簡介
  15. CRF as RNN
  16. python的应用领域有哪些、选择题_Python测试题(题)
  17. SD卡 (SD miniSD microSD SDIO)知识详解
  18. 超详细教程,一文入门Istio架构原理及实战应用
  19. ZUCC_Linux系统管理_实验四 用户和分组管理
  20. 可口可乐造型设计_一组可口可乐创意海报设计和标识视觉形象设计

热门文章

  1. 不能说的秘密-Tribon未公开的COM接…
  2. 计算机环境下会计模式的新发展相关论文,新形势下会计核算方法创新性研究论文...
  3. 2023 号卡推广管理系统PHP源码 有后台版v1.0
  4. C语言 —— continue语句和break关键字的用法
  5. linux tc命令进行网络限速、丢包、延迟设置(简单使用)
  6. tar 解压缩命令(zhuan)
  7. 网页文件管理php源码,KODExplorer 开源的Web在线文件管理、代码编辑器 v4.40
  8. 搭建三维城市建模之开发视角,10万场景资源+用户样例 3D 地图 可视化 ThingJS
  9. RISC-V开发与应用学习系列——Tang Nano 9K FPGA开发板介绍
  10. pytorch: grad can be implicitly created only for scalar outputs 的解决办法