暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

利用GoldenGate实现公有云上的实时数据同步

凛冬未至 2018-03-21
495

Windows服务器简单而又好管理,是很多用户的首选,这次就给大家讲解一下在Oracle的云上怎么搭建一个包括Oracle数据库的运行环境,为了实现保证业务系统数据的安全和可用,利用GoldenGate搭建一个实时数据复制链路,从而实现在线数据的实时灾备需求。

 

以下是具体的实现步骤:

  • 安装Oracle数据库

1、  下载Oracle软件

2、  安装数据库

 

 

 

 

 

 

 

 

 

 

 

  • 安装GoldenGate,实现数据实时复制

1、  打补丁

Microsoft Visual C ++ 2005 SP1 Redistributable Package.

2、  开始安装GoldenGate for oracle database

 

 

 

 

 

 

 

3、  配置GoldenGatefor Oracle

1)、在数据库里建立复制用户使用的表空间

create tablespace goldengatedatafile '' size 100M autoextend on; 

2)、建立复制用的数据库用户

create user goldengate

  identified by "goldengate"

  default tablespace goldengate

  temporary tablespace TEMP

  profile DEFAULT;

--赋必要的权限

grant connect to GOLDENGATE;

grant dba to GOLDENGATE;

grant resource toGOLDENGATE;

3)、数据库增加附件日志,用于复制

SQL>alter database addsupplemental log data;

SQL> Select 

    SUPPLEMENTAL_LOG_DATA_MIN

    ,SUPPLEMENTAL_LOG_DATA_PK

   ,SUPPLEMENTAL_LOG_DATA_UI

    ,SUPPLEMENTAL_LOG_DATA_FK

    ,SUPPLEMENTAL_LOG_DATA_ALL from v$database; 

SUPPLEME SUP SUP SUP SUP

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

YES      YES YES YES NO    

4)、开启数据库强制日志模式

SQL> select  FORCE_LOGGING from v$database;

FOR

---

YES

SQL>alter database forcelogging;              

5)、确定数据库字符集

SQL> SHOW PARAMETER NLS_LANGUAGE

SQL> SHOW PARAMETERNLS_TERRITORY

SQL>SELECT name,value$ from SYS.PROPS$ WHERE name = 'NLS_CHARACTERSET';

NAME

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

VALUE$

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

NLS_CHARACTERSET

ZHS16GBK

6)、ogg的安装目录执行ggsci命令,启动GoldenGate的命令行工具,然后执行create subdirs,建立相关的目录

7)、在GGSCI的命令行窗口里,执行edit param mgr命令,创建mgr.prmPORT 7809DYNAMICPORTLIST  7840-7914STARTUPVALIDATIONDELAY 5PURGEOLDEXTRACTS  .\dirdat\*, USECHECKPOINTS, MINKEEPDAYS 7LAGREPORTHOURS 1LAGINFOMINUTES 30LAGCRITICALMINUTES 45

保存,退出。

执行start mgr,命令启动GoldenGate的管理进程。

 

8)、给复制表增加附加日志

GGSCI>dblogin userid goldengate,password goldengate

GGSCI>add schema.*

9)、全局设置增加检查点表

GGSCI (hydcdb1) 1> dblogin userid goldengate,passwordgoldengate

Successfully logged into database.

GGSCI (hydcdb1) 2> add checkpointtablegoldengate.checkpoint

Successfully created checkpoint tablegoldengate.checkpoint.

GGSCI (hydcdb1) 3> edit params ./globals

GGSCHEMA goldengate

CHECKPOINTTABLE goldengate.checkpoint

10)、增加GoldenGate的抽取进程

GGSCI>add extract extoa,tranlog,begin now,threads 2

GGSCI>add exttrail  ./dirdat/la,extract extoa,megabytes 100

GGSCI>edit params extoa                                                                              

EXTRACT extoa                                                                                                 setenv (NLS_LANG= SIMPLIFIED CHINESE_CHINA.ZHS16GBK)                   userid goldengate,password goldengate                                                            

GETTRUNCATES                                                                                                

REPORTCOUNT EVERY 1 MINUTES,RATE                                                      DBOPTIONS ALLOWUNUSEDCOLUMN                                                            DISCARDFILE ogg/dirrpt/extoa.dsc,APPEND,MEGABYTES5000                    

WARNLONGTRANS 2h,CHECKINTERVAL 10m                                                

EXTTRAIL ./dirdat/la                                                                                            

FETCHOPTIONS NOUSESNAPSHOT                                                               DYNAMICRESOLUTION                                                                                     table  test.*;

11)、增加网络传输进程

GGSCI>add extract dpeoa,exttrailsource ./dirdat/la

GGSCI>add rmttrail ./dirdat/ra, EXTRACT dpeoa

GGSCI>edit params dpeoa

EXTRACT dpeoa

setenv (NLS_LANG= SIMPLIFIED CHINESE_CHINA.ZHS16GBK)

userid goldengate,password goldengate

PASSTHRU

RMTHOST xxx.xxx.xxx.xxx, MGRPORT 7810, compress

RMTTRAIL ./dirdat/ra

Table test.*;

12)、在目标端数据库服务器上增加数据投递进程

GGSCI>add replicat repoa exttrail ./dirdat/ra,checkpointtable goldengate.checkpoint

GGSCI>edit param repoa

REPLICAT repoa                                     

USERID goldengate,PASSWORD goldengate                     

setenv (NLS_LANG= SIMPLIFIED CHINESE_CHINA.ZHS16GBK)   

REPORT AT 01:59                                 

REPORTCOUNT EVERY 30 MINUTES, RATE                     

REPERROR DEFAULT, ABEND

numfiles 50000                     

HANDLECOLLISIONS            

assumetargetdefs                     

DISCARDFILE ./dirrpt/repsa.dsc, APPEND, MEGABYTES 50  

GETTRUNCATES                      

ALLOWNOOPUPDATES

Map test.* , target test.*;

13)、数据初始化

在源端服务器启动mgr extoa进程   pump进程  

SQL> select current_scn from v$database;

CURRENT_SCN

-----------

 1.5461E+13

SQL> col CURRENT_SCN for 99999999999999

SQL> /

    CURRENT_SCN

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

 15461434443577

SQL> create directory expdp as '/backup';

目录已创建。

SQL>  grantread,write on directory expdp to system;

授权成功。

 expdp system/xxxdirectory=expdp dumpfile=ahsimis_%U.dmp logfile=expdp.log  PARALLEL=2 tables= AHSIMIS.AB02,AHSIMIS.AB09, AHSIMIS.AB14, AHSIMIS.AB15, AHSIMIS.AC01, AHSIMIS.AC02,AHSIMIS.AC04, AHSIMIS.AC20, AHSIMIS.IC10, AHSIMIS.IC15, AHSIMIS.IC20,AHSIMIS.IC40, AHSIMIS.IC02, AHSIMIS.JC10, AHSIMIS.JC14, AHSIMIS.KA02,AHSIMIS.KA03, AHSIMIS.KA04, AHSIMIS.KA06, AHSIMIS.KA17, AHSIMIS.KB01,AHSIMIS.KB03, AHSIMIS.KB10, AHSIMIS.KC04, AHSIMIS.KC08, AHSIMIS.KC20,AHSIMIS.KC21, AHSIMIS.KC24, AHSIMIS.LC01, AHSIMIS.LC07, AHSIMIS.MC01,AHSIMIS.MC03, AHSIMIS.MC08, AHSIMIS.QZ_HDSJ_JS, AHSIMIS.QZ_LHJYRYCBXX_JS,AHSIMIS.DZ_DWCBXX_JS flashback_scn=15461434451617

在目标端数据库上导入数据

impdpsystem/oracle directory=impdp dumpfile=ahsimis_%U.dmp logfile=expdp.logREMAP_SCHEMA=ahsimis:ahsimis

在目标端Goldengate中启动投递进程

GGSCI>start replicat repob, aftercsn 15461434451617

14)、启动进程,检查复制情况

通过GoldenGate的命令行工具检查,看到实时变化的数据已经被同步过来

我们看到在Oracle的云环境上搭建一个Windows+oracle数据库高可用环境是多么的简单,大家还不赶快去体验和尝试一下。


文章转载自凛冬未至,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论