GoldenGate 双向复制解决方案
1 双向复制方案简介
在双向复制(Bidirectional)方案中,可以采用以下两种部署方式:
方式一:配置源和目标数据库可以同时保持Active 状态,同时进行应用系统的事务处理,
此时需由应用系统进行控制,避免对同一记录进行处理产生的冲突。
方式二:配置源为Active,目标为Standing-by,在源出现故障时,切换到目标数据库。
在源端和目标端都需要配置Extract 和Replicat 来实现双向复制。在双向复制方案中最重要的避免循环,即在由源数据库向目标端插入数据的时候,不应该再产生Trail(CDC 数据),否则将进入一个死循环。GoldenGate 采用排除同步时用户的方式来实现双向复制。
2 双向复制方案实现过程
在双向复制的过程中,每个数据库既是源数据库又是目标数据库,为便于理解,在下面的描述中,我们将左面的数据库称为“源数据库”,右面的数据库称为“目标数据库”。
2.1 同步表说明
本文以“TCUSTMER”表作为同步的数据库表。建表脚本如下:
CREATE TABLE tcustmer
(
cust_code VARCHAR2(4),
name VARCHAR2(30),
city VARCHAR2(20),
state CHAR(2),
PRIMARY KEY (cust_code)
USING INDEX
);
2.2 用户配置
2.2.1 同步用户
该用户用于在GoldenGate 中将源数据库中的数据同步到目标数据库,该用户必须能够访问源数据库用户和目标数据库用户下面的所有数据。
本文中以“gg_bi”作为同步用户。
2.2.2 源数据库用户
本文中以“gg_src”作为源数据库用户。
2.2.3 目标数据库用户
本文中以“gg_tgt”作为目标数据库用户。
2.3 源数据库端配置
2.3.1 增加Extract
GGSCI > ADD EXTRACT EXTBI, TRANLOG, BEGIN NOW, THREADS 1
EXTRACT added.
GGSCI > EDIT PARAMS EXTBI
EXTRACT EXTBI
USERID gg_bi, PASSWORD gg_bi ――该用户为同步用户
TRANLOGOPTIONS EXCLUDEUSER gg_bi ――将同步用户进行排除,避免循
环
RMTHOST <TARGET HOST>, MGRPORT 10002
RMTTRAIL ./dirdat/bi
TABLE gg_src.TCUSTMER; ――这里为实际要同步的用户及其数据库表
GGSCI > ADD RMTTRAIL ./dirdat/bi, EXTRACT EXTBI,MEGABYTES 5
GGSCI > START EXTRACT EXTBI
2.3.2 增加Replicat
下面是增加Check Point,如果已经配置检查点,则不用再次执行
GGSCI> EDIT PARAMS ./GLOBALS
增加下面一行
CHECKPOINTTABLE gg_src.ggschkpt
GGSCI> EXIT ――重新登录以激活global 参数
Shell> ggsci
GGSCI> DBLOGIN USERID gg_src, PASSWORD gg_src
GGSCI> ADD CHECKPOINTTABLE
GGSCI > ADD REPLICAT REPBI, EXTTRAIL ./dirdat/bi
REPLICAT added.
GGSCI > EDIT PARAM REPBI
REPLICAT REPBI
USERID gg_bi, PASSWORD gg_bi ――该用户为同步用户
HANDLECOLLISIONS
ASSUMETARGETDEFS
DISCARDFILE ./dirrpt/REPBI.DSC, PURGE
MAP gg_tgt.tcustmer, TARGET gg_src.tcustmer;
GGSCI > START REPLICAT REPBI
2.3.3 检查启动状态
查看Extract 和Replicat 状态,确保都正常运行
GGSCI > info all
Program Status Group Lag Time Since Chkpt
MANAGER RUNNING
EXTRACT RUNNING EXTBI 00:00:00 00:00:09
REPLICAT RUNNING REPBI 00:00:00 00:00:04
2.4 目标数据库配置
2.4.1 增加Extract
GGSCI > ADD EXTRACT EXTBI, TRANLOG, BEGIN NOW, THREADS 1
EXTRACT added.
GGSCI > EDIT PARAMS EXTBI
EXTRACT EXTBI
USERID gg_bi, PASSWORD gg_bi ――该用户为同步用户
TRANLOGOPTIONS EXCLUDEUSER gg_bi ――将同步用户进行排除,避免循
环
RMTHOST <SOURCE HOST>, MGRPORT 10001
RMTTRAIL ./dirdat/bi
TABLE gg_tgt.TCUSTMER;
GGSCI > ADD RMTTRAIL ./dirdat/bi, EXTRACT EXTBI,MEGABYTES 5
GGSCI > START EXTRACT EXTBI
2.4.2 增加Replicat
建立Check Point,同上,这里省略。
GGSCI > ADD REPLICAT REPBI, EXTTRAIL ./dirdat/bi
REPLICAT added.
GGSCI > EDIT PARAM REPBI
REPLICAT REPBI
USERID gg_bi, PASSWORD gg_bi ――该用户为同步用户
HANDLECOLLISIONS
ASSUMETARGETDEFS
DISCARDFILE ./dirrpt/REPBI.DSC, PURGE
MAP gg_src.tcustmer, TARGET gg_tgt.tcustmer;
GGSCI > START REPLICAT REPBI
2.4.3 检查启动状态
查看Extract 和Replicat 状态,确保都正常运行
GGSCI > info all
Program Status Group Lag Time Since Chkpt
MANAGER RUNNING
EXTRACT RUNNING EXTBI 00:00:00 00:00:03
REPLICAT RUNNING REPBI 00:00:00 00:00:01
3 测试
以gg_src 登录源数据库,执行insert 操作:
INSERT INTO tcustmer VALUES('WILL','BG SOFTWARE CO.','SEATTLE','WA');
以gg_tgt 登录目标数据库,执行insert 操作:
INSERT INTO tcustmer VALUES('JANE','ROCKY FLYER INC.','DENVER','CO');
在源数据库和目标数据库查看tcustomer 表,都应该包含新插入的两条记录。
在源数据库和目标数据库进行其它操作测试,测试后源数据库和目标数据库数据应保持一致。
GoldenGate 双向复制解决方案的更多相关文章
- 搭建一个Oracle到Oracle的Goldengate双向复制环境
目标:搭建一个Oracle到Oracle的Goldengate双向复制环境(支持DDL+DML). 环境: OS:Red Hat Enterprise Linux Server release 5.5 ...
- Goldengate双向复制配置
一.Goldengate双向复制配置 1.1.在进行如下配置之前,先在源数据库source system(原来的目标数据库)端 添加辅助的redolog配置: SQL>alter databas ...
- 【OGG】OGG基础知识整理
[OGG]OGG基础知识整理 一.GoldenGate介绍 GoldenGate软件是一种基于日志的结构化数据复制软件.GoldenGate 能够实现大量交易数据的实时捕捉.变换和投递,实现源数据库与 ...
- OGG实现两台Oracle数据库的同步
今天通过最简单的一个例子,给大家讲解下 goldengate 实现两台Oracle数据库的同步.内容如下:1.配置数据库信息.2.安装golden gate.3.配置golden gate.4.测试同 ...
- GoldenGate配置(二)之双向复制配置
GoldenGate配置(二)之双向复制配置 环境: Item Source System Target System Platform Red Hat Enterprise Linux Serve ...
- oracle ogg 单实例双向复制搭建(oracle-oracle)--Oracle GoldenGate
oracle ogg 单实例双向复制搭建(oracle-oracle)--Oracle GoldenGate --继昨天的测试,这一篇实施单实例双向复制(完全重新搭建) --环境不变 db1,db2( ...
- 异构GoldenGate 12c 双向复制配置
1.配置window,添加checkpoint表(本文windows和linux互为source和target) GGSCI (WIN-GM5PVS1CILH) 1> view param ./ ...
- goldengate 12c 12.2 新特性(updated)
GoldenGate 12.2已经提供下载,增加了不少新特性 1. 异构配置加强不在需要sourceDefs和AssumeTargetDefs文件,在队列文件中已经包含metadata信息,比如tab ...
- 使用 Oracle GoldenGate 在 Microsoft SQL Server 和 Oracle Database 之间复制事务
使用 Oracle GoldenGate 在 Microsoft SQL Server 和 Oracle Database 之间复制事务 作者:Nikolay Manchev 分步构建一个跨这些平台的 ...
随机推荐
- 【实战经验】64位Win7安装+32位Oracle + PL/SQL 解决方法
软件环境:64位win7.32位Oracle 10g. PL/SQL 9.0.4.1644 前言:以前开发用的都是32位系统,突然换到64位上,安装环境真的有点麻烦了,尤其对于PL/SQL只支持32位 ...
- SpringBoot学习笔记(14)----应用监控-HTTP方式
SpringBoot提供了三种应用监控的方式 通过HTTP(最简单方便) 通过JMX 通过远程shell 这里就是用最简单的方式来使用SpringBoot的应用监控 首先引入依赖,pom文件如下 &l ...
- pandaboy玩pandas
基于python的三方库pandas的excel表二次开发 import numpy as np import pandas as pd import time from pandas import ...
- 微信小程序手势滑动卡片案例
最近工作中有项目要使用微信小程序技术进行开发,其中一项功能困扰了我很久,卡片滑动动效以及手势识别.经过一番研究和参考,现在把成果展示.记录自己踩到的坑,如果大家有需要,也可以帮助到大家. 效果图: 首 ...
- BZOJ 1190 [HNOI2007]梦幻岛宝珠(背包)
1190: [HNOI2007]梦幻岛宝珠 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1385 Solved: 798[Submit][Stat ...
- window安装特定补丁(勒索病毒)
最近出现震惊的蠕虫病毒(勒索病毒),微软也做出相应的安全补丁来修复 MS17-010.这时有些同学不想打开电脑 的自动更新,这样会下载大量补丁,要更新完这些补丁要好几个小时,为了不影响正常工作,我们就 ...
- 死锁的Dump文件
死锁的Dump文件 package com.stono.thread; public class DeadLockDemo { private static String A = "A&qu ...
- JavaScript检查手机格式是否错误
编写自己定义的JavaScript函数checkPhone(),在函数中应用正則表達式推断手机号码的格式是否正确,不对的给出提示 <script type="text/javascri ...
- android获取自己定义控件位置坐标,屏幕尺寸,标题栏,状态栏高度
android获取自己定义控件位置坐标,屏幕尺寸,标题栏,状态栏高度 1.获取自己定义控件height 在本Activity中获取当前Activity中控件的height: Button button ...
- a+=b 等价于 a=a+b ?
a += b和a = a + b全然等价么(java)?可能非常多人以为是一样的,事实上并不是等价的,以下看一下证据吧. public class Test { public static void ...