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 [email protected], 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之间的数据同步。

时间: 2024-10-16 22:06:50

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

对一段Oracle GoldenGate (OGG) 传输进程日志(.rpt文件)的解释

本文为原创,转载请注明出处. 说明: /u02/ggs/dirdat/sb为源头抽取进程形成的trail文件名 /u02/ggs/dirdat/tb为源头传输进程往目的端传输,在目的端形成的trail文件名. 2014-08-01 13:51:11 INFO OGG-01026 Rolling over remote file /u02/ggs/dirdat/tb001540.--->这个Rolling over 就是传输进程正在向目的端传输trail文件,在目的端形成的trail文件名为tb0

【翻译自mos文章】Oracle GoldenGate 对IBM大型机 z/OS 2.1 和DB2 v11的支持

GoldenGate 对IBM大型机 z/OS 2.1 和DB2 v11的支持 来源于: GoldenGate Support for z/OS 2.1 and DB2 v11 (文档 ID 1941364.1) 适用于: Oracle GoldenGate - Version 12.1.2.1.2 and later Information in this document applies to any platform. 目标: 需要知道是否有一个GoldenGate版本能支持 IBM大型机

Integrating Oracle Data Integrator 12c (ODI) and Oracle GoldenGate 12c (OGG)

http://www.oracle.com/webfolder/technetwork/tutorials/obe/fmw/odi/odi_12c/ogg_odi_12c_int/index.html#overview

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

非oracle db以 sqlserver为样例说明: 我的思路 A :oracle db 生产 B: oracle db 中间机 C: sqlserver db 目的端 A-> B->C 注意:B上既有rep进程也有ext进程,此时.C上也须要建立针对B的rep进程. A->B能够完毕 在线的完毕初始化同步(基于scn号的expdp) A->B的初始化做完之后,stop 掉 B的rep进程,此时B库为静态数据库,此时进行B->C的同步(使用etl工具 or sqlserve

Oracle数据表之间的数据同步

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

Oracle数据库数据同步方案

一.比较原始的方案:触发器/Job/快照+dblink的方式,可实现同步和定时刷新: 二台不同的数据库服务器,从一台数据库服务器A的一个用户读取另一台数据库服务器B下某个用户的数据,可以通过dblink来完成. 二.通过物化视图定时刷新来实现数据同步.物化视图刷新方式有增量刷新和完全刷新两种模式: 三.高级复制,分为多主复制和物化视图复制两种模式.其中多主复制能进行双向同步复制和异步复制:物化视图用于单向复制,定时刷新,与第二条类似: 四.流复制,可实现实时和非实时同步: 五.GoldenGat

为Oracle GoldenGate准备数据库

了解如何为Oracle GoldenGate准备数据库,包括如何配置连接和日志记录,如何在数据库中启用Oracle GoldenGate,如何设置闪回查询以及如何管理服务器资源. 为集成进程配置连接 配置日志记录属性 在数据库中启用Oracle GoldenGate 设置闪回查询 管理服务器资源 2.1 为集成进程配置连接 如果您将使用集成捕获和集成Replicat,则每个都需要tnsnames.ora文件中的专用服务器连接.当您配置这些进程时,您可以指示进程在Extract and Repli

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

六种 主流ETL 工具的比较(DataPipeline,Kettle,Talend,Informatica,Datax ,Oracle Goldengate) 比较维度\产品 DataPipeline kettle Oracle Goldengate informatica talend DataX 设计及架构 适用场景 主要用于各类数据融合.数据交换场景,专为超大数据量.高度复杂的数据链路设计的灵活.可扩展的数据交换平台 面向数据仓库建模传统ETL工具 主要用于数据备份.容灾 面向数据仓库建模

Oracle 10g通过创建物化视图实现不同数据库间表级别的数据同步

摘自:http://blog.csdn.net/javaee_sunny/article/details/53439980 目录(?)[-] Oracle 10g 物化视图语法如下 实例演示 主要步骤 在A节点创建原表和物化视图日志 在B节点创建连接A节点的远程链接 在B节点处创建目标表和与目标表名称相同的物化视图 在B节点处刷新物化视图 升级采用存储过程定时任务JOB方式定时刷新物化视图 进一步优化 文章更新记录 参考文章 Oracle 10g 物化视图语法如下: create materia