当前位置:  数据库>oracle

Oracle GoldenGate在异种OS上同种DB之间的数据同步

    来源: 互联网  发布时间:2017-06-07

    本文导语: Oracle GoldenGate (以下简称OGG)在异种OS上同种DB之间的数据同步。 ogg能实现的功能: 可以细化到单表同步,符合特定where条件的rows同步,指定column的同步。 ogg 的竞争对手:ibm cdc;dell shareplex;dsg;dds等等 环境描述: 源头:windo...

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下。

--------------------------------------------------------------------------------

Linux-6-64下安装Oracle 12C笔记

在CentOS 6.4下安装Oracle 11gR2(x64)

Oracle 11gR2 在VMWare虚拟机中安装步骤

Debian 下 安装 Oracle 11g XE R2

--------------------------------------------------------------------------------
 
实施过程:
 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:ggsdirdatst*, 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:ggsdirdatst
 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:ggsdirdatst,是由extfull抽取进程来写这个trail文件,每个trail文件的最大大小为50M
 ggsci> add exttrail  d:ggsdirdatst, 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文件号是 add extract dpfull exttrailsource d:ggsdirdatst
 
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


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • oracle SCN跟TIMESTAMP之间转换
  • Oracle与Access表之间的导入和导出
  • Oracle 12c发布简单介绍及官方下载地址
  • 在linux下安装oracle,如何设置让oracle自动启动!也就是让oracle那个服务自动启动,不是手动的
  • oracle 11g最新版官方下载地址
  • 请问su oracle 和su - oracle有什么不同?
  • Oracle 数据库(oracle Database)Select 多表关联查询方式
  • 虚拟机装Oracle R12与Oracle10g
  • Oracle数据库(Oracle Database)体系结构及基本组成介绍
  • Oracle 数据库开发工具 Oracle SQL Developer
  • 如何设置让Oracle SQL Developer显示的时间包含时分秒
  • Oracle EBS R12 支持 Oracle Database 11g
  • Oracle 10g和Oracle 11g网格技术介绍
  • SCO unix下安装oracle,但没有光盘,请大家推荐一个oracle下载站点(unix版本的)。谢谢!!!!
  • oracle中如何把表中具有相同值列的多行数据合并成一行
  • 请问大家用oracle数据库, 用import oracle.*;下的东西么? 还是用标准库?
  • Oracle 数据库(oracle Database)性能调优技术详解
  • Linux /$ORACLE_HOME $ORACLE_HOME
  • ORACLE日期相关操作
  • Linux系统下Oracle的启动与Oracle监听的启动
  • ORACLE数据库常用字段数据类型介绍
  • 请问在solaris下安装ORACLE,用root用户和用oracle用户安装有什么区别么?
  • Oracle 12c的九大最新技术特性介绍
  • 网间Oracle的连接,远程连接Oracle服务器??


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,