Oracle GoldenGate (以下简称ogg)在异种移植os同一种db之间的数据同步。

ogg要实现的功能:

同步可以细化到单个表,满足特定的where条件rows同步,称号column同步。

ogg 竞争对手:ibm cdc。dell shareplex;dsg。dds等等

环境描写叙述:

源头:windows 2003x64bit。 oracle db 11.2.0.3 x64bit

目的端:suse linux 。oracle db 11.2.0.3

预先准备:

1.Microsoft Visual C ++ 2005 SP1 Redistributable Package

  注意点:第一:该c++的package 区分bit数,而且一定要下载sp1版本号的package。

第二:仅仅要是在windows上使用ogg,这个c++的package就一定得装,

           无论db是不是oracle ,sqlserver,无论ogg用于源头数据库还是用于目的端数据库。

2.ogg for windows x64bit 下的 oracle db 11.2.0.3 x64bit介质。--p18794252_1121023_MSWIN-x86-64.zip

3.ogg for linux  x64bit 下的 oracle db 11.2.0.3 x64bit介质。--p18794252_1121023_Linux-x86-64.zip

注意点:

  第一:ogg介质,除了基础版(比方说11.2.1.0.1。最后的这个.1就是基础版本号)能够从www.oracle.com下载。

 ogg的兴许补丁仅仅能从mos上下载。

  第二:ogg的介质区分os类型。db类型,db 版本号,db bit数。

可是对于例如以下的情况是同一个ogg介质:oracle db 11.2.0.3 x64bit 安装在suse11下和安装在suse 10下。

实施过程:

1.上传介质到源头和目的端。

2.在源头的实施过程:

2.1 创建goldengate系统用户并授权

  Sql> create tablespace GGTBS datafile 'd:\相关路径\ggtbs01.dbf'size 1024M auextend on;

  Sql> Create user Goldengate default tablespace ggtbs identified by oracle;(目标数据库也创建这一个goldengate用户)


  Sql> grant dba to goldengate;

2.2 将数据库设置为归档模式--一般的生产库都处于归档模式。

2.3 打开源端数据库的附加日志

   Sql>alter databse add supplemental log data;

    切换日志使附加日志生效:

   Sql>alter system archive log current;

2.4 检查源端数据库的附加日志

   Sql>select supplemental_log_data_min from v$database;

   --返回yes表示附加日志已经打开。

2.5 打开源头数据库的force logging:

   sql> alter database force logging;

2.6 对 主库 运行检查脚本,确认例如以下情况是否存在:找出唯一索引的索引列的列定义同意为null的

select dic.table_owner, dic.table_name, dic.index_name, di.uniqueness,dic.column_name

from dba_ind_columns  dic , dba_indexes di,dba_tab_columns dtc

where dic.table_owner=’自行加入用户’and dtc.OWNER='自行加入用户’

AND dic.table_owner=di.table_owner and dic.TABLE_NAME=di.table_name

and dic.index_name=di.index_name

and di.uniqueness='UNIQUE'     and dtc.owner=di.table_owner 

and dtc.TABLE_NAME=di.table_name and dic.column_name=dtc.COLUMN_NAME  and dtc.nullable='Y'

and dic.TABLE_NAME=dtc.TABLE_NAME

--->自行加入用户请用须要同步的user来取代。

对于查询出来的表和唯一索引名,请改动:要么变为非唯一索引,要么在保留唯一索引的情况下,将列的定义置为not null。

2.7 如果将ogg软件放在d:\ggs文件夹下,cmd界面下进入d:\ggs

    ggsci>create subdirs   -->该命令的作用是在d:\ggs下建立dirprm、dirdat、dirrpt等下级文件夹。

2.8 ggsci>edit params ./GLOBALS

    加入例如以下的字符,之后保存退出

    MGRSERVNAME GGSSERVICE

2.9 建立ogg的 windows service

   D:\ggs>install addservice autostart

2.10 为表加入补充日志

    ggsci>dblogin userid goldengate password oracle

    ggsci> add trandata USER1.*    --->注意:*后别加分号。

    ggsci> add trandata USER2.*    --->注意:*后别加分号。

    ggsci> add trandata USER3.*    --->注意:*后别加分号。

确认表的补充日志是否已经加入:

    select table_name from all_tables

    where owner='USER1' and table_name not in (select distinct table_name from dba_log_groups where owner='USER1');

2.11 配置DDL复制

SQL> GRANT EXECUTE ON UTL_FILE TO goldengate;

ggsci>edit params ./GLOBALS  加入例如以下的字符,之后保存退出

GGSCHEMA goldengate

cmd下 cd 到d:\ggs文件夹

退出全部的oracle session

sqlplus / as sysdba

SQL> @marker_setup.sql

SQL> @ddl_setup.sql

SQL> @role_setup.sql

SQL> grant ggs_ggsuser_role to goldengate;

SQL> @ddl_enable.sql

2.12 配置sequence的同步(若是备库是报表查询需求。请忽略此步)

cmd下 cd 到d:\ggs文件夹

sqlplus / as sysdba

SQL> @sequence.sql

--->源头运行:SQL> GRANT EXECUTE on goldengate.updateSequence TO goldengate;

--->目的端运行:SQL> GRANT EXECUTE on goldengate.replicateSequence TO goldengate;

2.13 源端配置參数文件

ggsci > edit params mgr

加入例如以下參数,之后保存退出。

port 7809

autostart extract *

autorestart extract *, waitminutes 1, retries 60, RESETMINUTES 60

PURGEOLDEXTRACTS d:\ggs\dirdat\st*, USECHECKPOINTS, MINKEEPHOURS 2

ggsci> add  extract  extfull, tranlog, Threads 2, begin now

--->以上命令是针对主库是rac2个节点的情况,若是单机,请忽略Threads 2

ggsci >edit  params  extfull

加入例如以下參数,之后保存退出

extract extfull

setenv ( NLS_LANG = " AMERICAN_AMERICA.ZHS16GBK " )

--TRANLOGOPTIONS ASMUSER SYS@ASM1, ASMPASSWORD oracle

--THREADOPTIONS MAXCOMMITPROPAGATIONDELAY 80000 IOLATENCY 160000

DBOPTIONS ALLOWUNUSEDCOLUMN

userid goldengate, password oracle

ddl include mapped

ddloptions addtrandata RETRYOP MAXRETRIES 1000 RETRYDELAY 10, REPORT

WARNLONGTRANS 1h, CHECKINTERVAL 5m

exttrail d:\ggs\dirdat\st

gettruncates

dynamicresolution

tableexclude 'USER.cncdata';

tableexclude 'USER.sb_czm_pyDD';

table USER1.*;

table USER2.*;

table USER3.*;

sequence USER1.*;

sequence USER2.*;

sequence USER3.*;

2.14 加入trail文件,文件名称为d:\ggs\dirdat\st,是由extfull抽取进程来写这个trail文件,每一个trail文件的最大大小为50M

ggsci> add exttrail  d:\ggs\dirdat\st, extract extfull, MEGABYTES 50

--->注意:

注意:源头的trail文件名称一定要与目的端的trail文件名称用不同的名称,比方:

源头的trail文件名称/u02/ggs/dirdat/sd

目的端的trail文件名称/u02/ggs/dirdat/td

原因是:ogg trail文件的删除机制(检查点机制)是以一整套复制环境(源头和目的端)为标准推断的:

这样就有可能造成这么一个后果:源头的trail文件号到了1000,目的端trail文件号到了100。而且源头和目的端trail文件名称同名,因为存在

100,所以,源头能删除的trail文件号是<100的。

这样会导致源头trail 不能及时删除,进而造成源头$GG_HOME的文件系统使用率100%。进而造

成ext进程抽取形成的trail文件无处存放而导致ext进程 abend。

2.15 在源端加入传输进程dpfull,此传输进程传输的是源端形成的d:\ggs\dirdat\st这个trail文件

ggsci> add extract dpfull exttrailsource d:\ggs\dirdat\st

2.16 创建远程队列文件(文件名称为/u02/ggs/dirdat/tt)并将其指定给传输进程。相同能够指定大小为50M

ggsci> add rmttrail /u02/ggs/dirdat/tt, extract dpfull, MEGABYTES 50

2.17 编辑dpfull进程的參数:

ggsci> edit params dpfull

加入例如以下參数,之后保存退出

extract dpfull

passthru

rmthost 目的端IP, mgrport 7809

rmttrail /u02/ggs/dirdat/tt

gettruncates

table USER1.*;

table USER2.*;

table USER3.*;

sequence USER1.*;

sequence USER2.*;

sequence USER3.*;

2.18 源端数据库查询出一个scn号:

select current_scn from v$database;

--12754579013479

请牢记这个scn号,在目的端第一次启动rep进程时。会用到这个scn号

源端開始依照此scn号開始导出数据

expdp  sys/****** directory=exp dumpfile=trff_app%U.dmp logfile=trff_app_exp.log schemas=trff_app  parallel=4

flashback_scn=12754579013479

3.在目的端的实施过程:

3.1 配置环境变量信息:

备库是Linux os时:

vi .bash_profile

export PATH=$PATH:$ORACLE_HOME/bin:/u02/ggs

export LD_LIBRARY_PATH=/u02/ggs:$ORACLE_HOME/lib

3.2 创建goldengate系统用户并授权

  Sql> create tablespace GGTBS datafile '/u02/相关路径/ggtbs01.dbf'size 1024M auextend on;

  Sql> Create user Goldengate default tablespace ggtbs identified by oracle;(目标数据库也创建这一个goldengate用户)


  Sql> grant dba to goldengate;

3.3配置mgr參数文件:

ggsci > edit params mgr

port 7809

--autostart replicat *

--autorestart replicat *, waitminutes 1, retries 60, RESETMINUTES 60

--PURGEOLDEXTRACTS /u02/ggs/dirdat/tt*, USECHECKPOINTS, MINKEEPHOURS 2

3.4 在目的端加入checkpointtable

ggsci> dblogin  userid goldengate, password oracleoracle

ggsci> ADD CHECKPOINTTABLE goldengate.ckptfull

ggsci> add replicat repfull, exttrail /u02/ggs/dirdat/tt, CHECKPOINTTABLE goldengate.ckptfull

ggsci> edit params repfull

replicat repfull

setenv ( NLS_LANG =  " AMERICAN_AMERICA.ZHS16GBK " )

assumetargetdefs

userid goldengate, password oracle

DBOPTIONS DEFERREFCONST, SUPPRESSTRIGGERS

gettruncates

ALLOWNOOPUPDATES

ddl include mapped

discardfile ./dirrpt/repfull.dsc, append, megabytes 5000

map USER1.*, target USER1.*;

map USER2.*, target USER2.*;

map USER3.*, target USER3.*;

配置完成:

注意:以上repfull进程请不要启动。repfull进程在impdp导入完数据之后再启动。

在目的库运行impdp运行数据导入,完毕导入后,再运行以下的步骤。

启动目的端rep进程之前, 请务必确认例如以下的事项已经完毕:

第一, 在rep參数文件里有參数DEFERREFCONST禁用级联删除

第二, 在rep參数文件里有參数SUPPRESSTRIGGERS 在rep进程执行时抑制目的端数据库的触发器生效。

注意:SUPPRESSTRIGGERS此參数只对10.2.0.5 及以后。11.2.0.2及以后的oracle 数据库版本号才有效。所以,若是目的端数据库是10.2.0.4,还须要在目的端数据库中手工禁用触发器(用plsql dev就能够禁用)

第三。 Impdp已经导入完毕,这是必须的,这一点我不用再多解释了。

第一次启动repfull进程时。请使用例如以下的命令来启动:

start repfull, aftercsn 12754579013479

參考资料:

docs.oracle.com

support.oracle.com

版权声明:本文博主原创文章,博客,未经同意不得转载。

Oracle GoldenGate (以下简称ogg)在异种移植os同一种db之间的数据同步。的更多相关文章

  1. Oracle GoldenGate从oracle db 到非oracle db的初始化数据同步的方法

    非oracle db以 sqlserver为样例说明: 我的思路 A :oracle db 生产  B: oracle db 中间机 C: sqlserver db 目的端 A-> B-> ...

  2. Oracle数据表之间的数据同步

    保证两个数据表结构相同,如不相同只能同步相同字段; 只是思路,具体请根据需求修改. declare cursor csrn_mon is select * from table2; row_mon c ...

  3. Oracle GoldenGate配置异构数据库数据传输(oracle到sqlserer)的dml操作(带pump进程)

    实验环境:os01:Red Hat Enterprise Linux Server release 5.1 (32位)db01:oracle 10.2.0.1.0 os02:Windows 7 (32 ...

  4. oracle goldengate的两种用法

    此文已由作者赵欣授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 自从oracle收购来了goldengate这款产品并以后对它做了一系列改进后,有非常多的用户使用它做数据迁移 ...

  5. 为Oracle GoldenGate准备数据库

    了解如何为Oracle GoldenGate准备数据库,包括如何配置连接和日志记录,如何在数据库中启用Oracle GoldenGate,如何设置闪回查询以及如何管理服务器资源. 为集成进程配置连接 ...

  6. Oracle GoldenGate理论

    1Oracle GoldenGate处理方法和支持的数据库Oracle GoldenGate在多样和异构的基础IT平台中,可以在事务级别上进行数据交换和数据操作.在保证交易完整性和最小的开销的条件下, ...

  7. 六种 主流ETL 工具的比较(DataPipeline,Kettle,Talend,Informatica,Datax ,Oracle Goldengate)

    六种 主流ETL 工具的比较(DataPipeline,Kettle,Talend,Informatica,Datax ,Oracle Goldengate) 比较维度\产品 DataPipeline ...

  8. Oracle GoldenGate 12c 新特性

    针对Oracle 12c的专门优化: 针对Oracle数据库的集成交付模式:提升在oracle DB中目标端的交付速度: 针对非Oracle数据库的协调交付模式:降低非oracle DB中多线程配置的 ...

  9. OGG &quot;Loading data from file to Replicat&quot;table静态数据同步配置过程

    OGG "Loading data from file to Replicat"table静态数据同步配置过程 一个.mgr过程 GGSCI (lei1) 3> view p ...

随机推荐

  1. android端向服务器提交请求的几种方式

    1.GET方式 其实GET方式说白了,就是拼接字符串..最后拼成的字符串的格式是: path ?  username= ....& password= ...... public boolea ...

  2. spring中bean的设计模式

    默认的是单例的. 如果不想单例需要如下配置: <bean id="user" class="..." singleton="false" ...

  3. WM_PARENTNOTIFY的作用(不完全)

    VCL里源码如下: procedure TWinControl.WMParentNotify(var Message: TWMParentNotify); begin with Message do ...

  4. [C++]const修饰符

    Date: 2014-1-1 Summary: const 修饰符笔记 Contents: 1.const 修饰符 声明一个常量数据类型 , 在编译时就确定数据类型 2.const 与 指针 一般情况 ...

  5. TestComplete实测Flex

    1.TestComplete提供了已经编译好的Flex界面,可以直接使用: http://support.smartbear.com/samples/testcomplete9/flex/orders ...

  6. servlet其工作原理和例子证明

    servlet简单介绍 当我们在地址栏里面输入www.baidu.com,终于呈如今我们面前的是百度搜索的页面.在这些訪问过程中,都会有一个webserver来处理这些请求以及訪问处理后的结果. 而s ...

  7. 使用ROW_NUMBER()查询:列名 'RowNumber' 无效。

    原文:使用ROW_NUMBER()查询:列名 'RowNumber' 无效. 使用ROW_NUMBER()方法查询结果集:语句如下:   select ROW_NUMBER() OVER(ORDER ...

  8. sql连接错误(Microsoft SQL Server,错误:2)

    昨天用SQL语句建表的时候写了一段代码,对于代码的逻辑和内容我不太肯定对不正确.反正是毫不犹豫的让它运行了,过程中出现好几个错误,当时没有太在意,想着大不了出错了再重写一个.结果--玩坏了,从昨天到如 ...

  9. UVA 10828 - Back to Kernighan-Ritchie(概率+高斯消元)

    UVA 10828 - Back to Kernighan-Ritchie 题目链接 题意:给图一个流程图,有结点的流程,每次进入下一个流程概率是均等的,有q次询问,求出每次询问结点的运行期望 思路: ...

  10. hdu1151+poj2594(最小路径覆盖)

    传送门:hdu1151 Air Raid 题意:在一个城镇,有m个路口,和n条路,这些路都是单向的,而且路不会形成环,现在要弄一些伞兵去巡查这个城镇,伞兵只能沿着路的方向走,问最少需要多少伞兵才能把所 ...