分享

OGG12c Integrated Native DDL

 xfxyxh 2018-05-19
1、背景介绍
   从Oracle Goldengate 11g版本开始,oracle引入了一种新的capture mode,称为Integrated Capture Mode。在原来的classic capture mode中,goldengate extract进程直接读取oracle redo log,捕获数据变化,存为Goldengate的trail file格式,然后利用pump进程将这些trail file传输到目标数据库,目标数据库上的replicat进程读取这些trail file,再利用sql将这些变化apply到目标数据库里。
   而在新的integrated capture mode中,goldengate extract进程不再直接读取oracle redo log,而是通过与数据库log mining server整合来捕获数据变化:log mining server负责以LCR的格式从数据库日志中捕获数据变化,然后extract进程再将这些抓取的数据存成trail file的格式。

1.1、Extract两种抽取模式 
1)Classic:基于在线日志或归档日志进行抽取。对数据库版本无特殊要求
OGG12c <wbr>Integrated <wbr>Native <wbr>DDL


2)IntegratedOGG 11.2.1及以上版本提供,其中Logmining server负责以LCR格式从数据库日志中捕获数据变化,extract进程再将这些数据存入trail文件。
OGG12c <wbr>Integrated <wbr>Native <wbr>DDL


--Integrated部署方式
本地部署:源库和log mining server数据库是同一个数据库(源库和集成抽取进程在同一台主机)

Downstream部署:源库和log mining server数据库是不同的数据库(源库将归档日志传送downstream数据库)(源库和集成抽取进程不在同一台主机)

 

--Integrated模式的好处

*兼容性上支持更多的数据类型(IOTcompressionXMLLOB

*无需为RACASMTDERMAN做额外的配置

*多线程抽取(producer thread capture redoconsumer threadprocess redo),并发处理过程的性能提升

*OGG12coracle 12c 多租户的捕获(必须集成抽取模式才能支持)

*DDL无需triggerOGG12cDB11204

OGG12新特性在Integrated模式DDL无需trigger


1.2、基于triggerDDL的复制

--需要考虑的问题:性能下降

   捕获DDL语句的Trigger是全库级别的Trigger,即该数据库上的任何一个DDL操作无论其是否在复制范围内均会触发该Trigger并被记录到中间表供Extract进程删选。因此启用DDL复制会导致源库的DDL操作全部触发Trigger,如果数据库日常业务量较多并且DDL操作较多,会导致数据库性能下降很多。


1.3、replicat的三种复制模式

   从Goldengate 12c版本开始,oracle引入了两种新的replicat mode,分别叫做Integrated Replicat Mode和Coordinated Replicat Mode.其中,与integrated Capture Mode类似,Integrated Replicat Mode是针对oracle平台的,实际上就是将以前oracle stream中的功能整合进了新的Goldengate版本中.使用Intergrated Replicat Mode要求oracle数据库版本最低为11.2.0.4.0

   Coordinated Replicat Mode特性适用于各个数据库平台,与Classic Replicat Mode中的单线程Replicat进程不同,该模式中通过将replicat进程创建为多线程来提高数据复制时的可扩展性.Oracle文档中没有提到为了支持该特性,数据库版本方面有什么特殊需求,此外,该特性实际上是在操作系统进程层面所作的改进,所以该特性的使用应该是与数据库版本无关的.

--集成replicat模式replicat mode可以支持的复制模式:

*Classic capture (oracle和非oracle)-> Classic Replicat

*Classic capture (oracle和非oracle)-> integrated Replicat

*Integrated capture -> Classic Replicat

*Integrated capture -> integrated Replicat



2、实验环境:源端与目标端都基于Integrated模式的OGG12搭建

源端:

database version:12.1.2.0.0

goldengate version: 12.1.2.0.0

OS version:redhat 6.4

ip:192.168.3.7

目标端:

database version:12.1.2.0

goldengate version: 12.1.2.0.0

OS version:redhat 6.4

ip:192.168.3.6


2.1、数据库相关设置

>sqlplus / nolog

SQL>conn / as sysdba;

--针对全库添加附加日志

SQL> alter database force logging;

SQL>alter database add supplemental log data;

SQL> alter system switch logfile;

--创建 goldengate 管理用户和对应的表空间 datafile

SQL>create tablespace ogg datafile '/u01/app/oracle/oradata/orcl/ogg01.dbf' size 4G autoextend on next 100M;

SQL>create user ogg identified by ogg123 default tablespace ogg;

SQL>create user test identified by oracle;

--赋予相关权限给goldengate 管理用户

SQL>grant connect,resource,dba to ogg;

SQL>GRANT EXECUTE ON UTL_FILE TO ogg;

SQL> grant create table,create sequence to ogg;

SQL>EXEC DBMS_GOLDENGATE_AUTH.GRANT_ADMIN_PRIVILEGE(grantee => 'ogg', privilege_type => 'capture');

SQL> alter system set streams_pool_size=512M scope=both;


2.2、OGG12c的安装

1)创建 ogg 安装目录:

#cd /u01

#mkdir ogg

#chmod 777 ogg

#chown -R oracle:oinstall /u01/ogg

2)以oracle 账号登录, 将ogg 介质通过ftp 传送到/u01/ogg 目录下并解压:

#su –oracle

$cd /u01/ogg

$unzip *.zip

3)环境变量的配置:

[oracle@oracle ~]$ vim .bash_profile

".bash_profile" 16L, 356C# .bash_profile

# Get the aliases and functions

if [ -f ~/.bashrc ]; then

 . ~/.bashrc

fi

# User specific environment and startup programs

PATH=/u01/ogg:$ORACLE_HOME/bin:$PATH:$HOME/bin

export PATH

export ORACLE_BASE=/u01/app/oracle

export ORACLE_HOME=$ORACLE_BASE/product/12.1.0/dbhome_1

export ORACLE_SID=orcl

export LD_LIBRARY_PATH=/u01/ogg:$ORACLE_HOME/lib:/usr/lib


4)goldengate软件的安装

将下载的软件zip安装包拷贝到数据库服务器上,使用unzip命令解压。

--使用Oracle Universal Installer(OUI)安装goldengate:

  从12c版本开始,goldengate支持用OUI工具安装软件。在此之前的版本,我们只需要解压安装文件后在GGSCI命令行接口中运行CREATE SUBDIRS即可实现goldengate的安装。有了OUI,由于其支持图像化交互操作,所以我们直接按照提示输入需要的参数即可完成安装。

--在UNIX环境下,由于一般系统没有默认配置对图形化工具的支持,所以我们可以象安装oracle数据库一样,使用slient方式安装,这里唯一要做的就是事先准备好response文件。

   goldengate安装文件的response目录下提供了response文件的模板oggcore.rsp,我们可以根据文件里的提示来为相应参数提供需要的值:

INSTALL_OPTION=ORA11c

SOFTWARE_LOCATION=/u01/ogg/goldengate

START_MANAGER=false

MANAGER_PORT=7809

DATABASE_LOCATION=/u01/app/oracle/product/12.1.0/dbhome_1

INVENTORY_LOCATION=/u01/app//oracle/oraInventory

UNIX_GROUP_NAME=oinstall

[oracle@oracle response]$ vim oggcore.rsp 

################################################################################

## Oracle GoldenGate installation option and details                         ##################################################################################

#-------------------------------------------------------------------------------

# Specify the installation option.

# Specify ORA12c for installing Oracle GoldenGate for Oracle Database 12c and

# ORA11g for installing Oracle GoldenGate for Oracle Database 11g

#-------------------------------------------------------------------------------INSTALL_OPTION=ORA12c

#-------------------------------------------------------------------------------

# Specify a location to install Oracle GoldenGate

#-------------------------------------------------------------------------------SOFTWARE_LOCATION=/u01/ogg/goldengate

#-------------------------------------------------------------------------------

# Specify true to start the manager after installation.

#-------------------------------------------------------------------------------START_MANAGER=false

#-------------------------------------------------------------------------------

# Specify a free port within the valid range for the manager process.

# Required only if START_MANAGER is true.

#-------------------------------------------------------------------------------

MANAGER_PORT=7809

#-------------------------------------------------------------------------------

# Specify the location of the Oracle Database.

# Required only if START_MANAGER is true.

#-------------------------------------------------------------------------------DATABASE_LOCATION=/u01/app/oracle/product/12.1.0/dbhome_1

################################################################################

## Specify details to Create inventory for Oracle installs                    ##

## Required only for the first Oracle product install on a system.            ##

################################################################################

#-------------------------------------------------------------------------------

# Specify the location which holds the install inventory files.

# This is an optional parameter if installing on

# Windows based Operating System.

#-------------------------------------------------------------------------------

INVENTORY_LOCATION=/u01/app/oracle/oraInventory

#-------------------------------------------------------------------------------

# Unix group to be set for the inventory directory.

# This parameter is not applicable if installing on

# Windows based Operating System.

#-------------------------------------------------------------------------------UNIX_GROUP_NAME=oinstall

[oracle@oracle Disk1]$ ./runInstaller -silent -responseFile /u01/ogg/fbo_ggs_Linux_x64_shiphome/Disk1/response/oggcore.rsp

OGG12c <wbr>Integrated <wbr>Native <wbr>DDL


2.2 OGG相关参数的配置(源端)

#cd /u01/ogg

>./ggsci

--创建子目录:

GGSCI>create subdirs

--编辑 MGR 进程参数

GGSCI> edit params mgr

port 7809

DYNAMICPORTLIST 7840-7850

AUTORESTART EXTRACT *, RETRIES 3, WAITMINUTES 5, RESETMINUTES 60

PURGEOLDEXTRACTS /u01/ogg/dirdat/aa*,usecheckpoints, minkeepdays 7

LAGREPORTHOURS 1

LAGINFOMINUTES 30

LAGCRITICALMINUTES 45

--启动 MGR 进程

GGSCI> start mgr

--查看 MGR 进程

--GGSCI> info all

--对需要同步的表进行表级附加日志的添加,即add trandata 操作。

GGSCI > dblogin userid ogg,password ogg123

GGSCI >ADD EXTRACT intext, INTEGRATED TRANLOG, BEGIN NOW      ---help add extract  就可以查看

GGSCI >ADD EXTTRAIL /u01/ogg/dirdat/aa, EXTRACT intext

GGSCI>edit params intext

EXTRACT intext

EXTTRAIL /u01/ogg/dirdat/aa     

SETENV (ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1)

SETENV (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)

USERID ogg, PASSWORD ogg123

WILDCARDRESOLVE DYNAMIC

LOGALLSUPCOLS

UPDATERECORDFORMAT compact 

DYNAMICRESOLUTION

DDL include all

TABLE test.*;

GGSCI>ADD EXTRACT intdp EXTTRAILSOURCE /u01/ogg/dirdat/aa

GGSCI>ADD RMTTRAIL /u01/ogg/dirdat/aa, EXTRACT intdp, MEGABYTES 100  

GGSCI>>edit params intdp

EXTRACT intdp

USERID ogg, PASSWORD ogg123

RMTHOST 192.168.3.6, MGRPORT 7809

RMTTRAIL /u01/ogg/dirdat/aa

Dynamicresolution

TABLE test.*;

 

 

2.3 OGG相关参数的配置(目标端)

#cd /u01/ogg

>./ggsci

--创建子目录:

GGSCI>create subdirs

--编辑 MGR 进程参数

GGSCI> edit params mgr

port 7809

DYNAMICPORTLIST 7840-7850

AUTORESTART EXTRACT *, RETRIES 3, WAITMINUTES 5, RESETMINUTES 60

PURGEOLDEXTRACTS /u01/ogg/dirdat/aa*,usecheckpoints, minkeepdays 7

LAGREPORTHOURS 1

LAGINFOMINUTES 30

LAGCRITICALMINUTES 45

--启动 MGR 进程

GGSCI> start mgr

--查看 MGR 进程

 

GGSCI> info all


--集成模式:

GGSCI>add replicat intrep integrated exttrail /u01/ogg/dirdat/aa

GGSCI>edit params intrep

REPLICAT intrep

setenv (NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK)

USERID ogg, PASSWORD ogg123

REPERROR DEFAULT, ABEND

ASSUMETARGETDEFS

DISCARDFILE /u01/ogg/dirrpt/intrep.dsc, APPEND, MEGABYTES 100

WILDCARDRESOLVE DYNAMIC

Dynamicresolution

DDL include mapped                               

 

MAP test.*, TARGET test.*;

2.4、启动各个进程

源:

GGSCI>start intext

GGSCI>start intdp

目标:

GGSCI>start intrep

2.5 验证:

源端:在test用户下创建 一个表t

$sqlplus / as sysdba

>create table t(id number);

OGG12c <wbr>Integrated <wbr>Native <wbr>DDL

--看有没有捕获到

 

 

OGG12c <wbr>Integrated <wbr>Native <wbr>DDL

OGG12c <wbr>Integrated <wbr>Native <wbr>DDL

目标端:

OGG12c <wbr>Integrated <wbr>Native <wbr>DDL

新建的表t,从源端传输过来了,验证成功!!



 

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多