Oracle GoldenGate安装(二)

相关组件

1.  确定  DDL SCHEMA

需要配置在  GLOBALS  中:  GGSCHEMA odc

 

2.  退出所有  ORACLE  会话,不允许新会话产生

 

3.sqlplus "/as sysdba"            ----  必须  sysdba  连入

注:对于是10g  的源端,需要关闭回收站:

alter session set recyclebin=off;

 

4.@marker_setup

该脚本安装  marker  系统,这部分为启用  DLL  支持所必备,执行该脚本时会提示输入  GoldenGate  管理帐户  schema  名。

 

5. @ddl_setup

执行该脚本要确认关闭掉所有  ORACLE  会话,未被关闭的会话会以列表形式显示,执行过程中会要求希望对象属主,并选择安装模式。如果是初次安装就选择“  INITIALSETUP  ”,该模式假设当前没有任何  GoldenGate DDL  对象存在,如果存在则会删除并重建。如果是重新安装,则应该选择“  NORMAL    .

提示输入  DDL SCHEMA  ,择安装类型:  INITIALSETUP

 

6. @role_setup

该操作会重建  DDL  同步所需的权限,授予  GoldenGate  中的  DDL  对象以  DML  权限。

提示你执行一条  GRANT  语句,执行即可!

 

7. @ddl_enable.sql

启用  DDL  触发器,以捕获  DDL  操作。

 

8. @ddl_pin.sql odc

要提高  DDL  触发器的性能,可以通过  ddl_pin  脚本,该脚本会将触发器使用的包加载到内存,以此提高效率。该脚本执行时需要引用  dbms_shared_pool  系统包,因此在使用  ddl_pin  脚本前需要确保  dbms_shared_pool  可用。执行  ddl_pin  脚本需要指定  GoldenGate  管理员  schema  名称  .

 

添加表级别附加日志

 

ggsci>  dblogin userid odc password odc  

ggsci>

ggsci>

 

注:

对于9i  的数据库,因为列太多会报错,要求不能超过33  列,所以列太多的表格要分开添加,例如:

查出该表的列

SQL> select COLUMN_NAME from DBA_TAB_COLUMNS where table_name='ACMRTB_20121129' order by COLUMN_ID;

分组添加补充日志

SQL> alter table OGGTEST.ACMRTB_20121129 ADD SUPPLEMENTAL LOG GROUP loggroup1 (SETTDATE,ACCTYPE)

SQL> alter table OGGTEST.ACMRTB_20121129 ADD SUPPLEMENTAL LOG GROUP loggroup2 (SETTDATE,ACCTYPE,ACCBAL,TODAYSVCNT,TODAYSVAMT,TODAYFHCNT,TODAYFHAMT,TODAYQCCNT,TODAYQCAMT,TODAYRTNCNT,TODAYRTNAMT,TODAYMVCNT,TODAYMVAMT,TODAYHDFEECNT,TODAYHDFEEAMT,TODAYSRVFEECNT,TODAYSRVFEEAMT,TODAYOVERFEECNT,TODAYOVERFEEAMT,TOTALSVCNT,TOTALSVAMT,TOTALFHCNT,TOTALFHAMT,TOTALQCCNT,TOTALQCAMT,TOTALRTNCNT,TOTALRTNAMT,TOTALMVCNT,TOTALMVAMT,TOTALHDFEECNT,TOTALHDFEEAMT,TOTALSRVFEECNT,TOTALSRVFEEAMT) ALWAYS;

SQL> alter table OGGTEST.ACMRTB_20121129 ADD SUPPLEMENTAL LOG GROUP loggroup3 (TOTALOVERFEECNT,TOTALOVERFEEAMT,RSVD)

 

SQL>select COLUMN_NAME from DBA_TAB_COLUMNS where table_name='ACMRTB_20121129' order by COLUMN_ID;

SQL>alter table OGGTEST.BATGOODSINOUTTXNTB ADD SUPPLEMENTAL LOG GROUP loggroup4 (INOUTSEQ,ORDERID,ORDERSTATE,ORDERTYPE,CARDNUMBER,TOSTOREID,TOSTORENAME,FROMSTOREID,FROMSTORENAME,INOUTFLAG,ERRCODE,CTDEALTIME,EDTTIME,EDTOPRID,GOODSCOUNT,GOODSID,GOODSATTR,SINGLEPRICE,SUMPRICE,OPRID,TXNDATE,TXNTIME,PECULIARDATA1,PECULIARDATA2,PECULIARDATA3,PECULIARDATA4,PAYTYPE,PAYTYPEID,RSVD1,RSVD2,RSVD3,RSVD4,RSVD5)

SQL>alter table OGGTEST.BATGOODSINOUTTXNTB ADD SUPPLEMENTAL LOG GROUP loggroup5 (TODPTID,FROMDPTID,SENDSTOREID)

 

 

 

抽取进程要配置的参数:

参数

阀值

定义

extract

sm_ext

指定进程名和类型 

setenv

(NLS_LANG="SIMPLIFIED   CHINESE_CHINA.ZHS16GBK")

配置系统环境变量

userid/ password

odc

指定OGG  连接数据库的用户名和密码

exttrail

./dirdat/sm

指定写入到本地的哪个队列

tranlogoptions

偏移量设置需要查找偏移量

$ORACLE_HOME/bin/offset

  TRANLOGOPTIONS RAWDEVICEOFFSET 0 

指定在解析数据库日志时所需要的特殊参数如果是AIX  RAC  redolog  在裸设备上,需设置偏移量

 

altarchivelogdest

instance ora11g1+MCDATA/archlog,altarchivelogdest   instance ora11g2 +MCDATA/archlog

指定归档路径,不同的操作系统、数据库版本有不通的配置方法

FETCHOPTIONS


指定ogg  获取数据的方式

FETCHPKUPDATECOLS


复制进程出现丢失update  记录(missing update  )并且更新的是主键,update  将转换成insert  当使用了HANDLECOLLISIONS  时,请使用该参数。)

ddl

include objname OGGTEST.* exclude objtype   'TRIGGER'

使用DDL  参数,指定DDL  的支持和过滤DDL  操作。

table

OGGTEST.*

定义需要复制的表,后面需以结尾 

 

添加进程:

ggsci>  (如果是单机,可以不写thread  参数)

ggsci>

注:

tranlog  :表示数据抓取的来源是数据库的  redo  数据。

threads 2  :表示数据库有多少个  threads  ,单实例基本上是  1  或者不设。

begin now  :表示在启动这个抓取进程的就去抓取数据。

./dirdat  :表示  trail  文件的目录

sm    trail  文件的前缀

extract sm_ext  :值指定给那个进程用的(  sm_ext  )。

参数配置:

 

情况一:单机数据库

直接配置归档路径

ggsci>

extract sm_ext

setenv (NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK")

userid odc,password odc

exttrail ./dirdat/sm

tranlogoptions altarchivelogdest  /archive

FETCHOPTIONS FETCHPKUPDATECOLS

ddl include objname OGGTEST.* exclude objtype 'TRIGGER' &

include objname OGGTEST.* exclude objtype 'TRIGGER'

table OGGTEST.*;

 

情况二:  rac  数据库

参数配置方法一:

配置  ASM  连接串,需要将各节点的归档信息都配置在参数文件中,且需要配置  asm  动态注册,并将  asm    sys  用户名和密码配置在进程参数文件中,适用所有数据库版本。

 

具体方法如下:

  tnsnames.ora  中添加连接串(只要在要安装  ogg  服务的那个节点配置即可):

 [  oracle@rac1 admin]$ cat tnsnames.ora

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.10.16)(PORT = 1521))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = +ASM)

(INSTANCE_NAME = +ASM1)

)

)

 

注:  11g  只要配置连接串即可(因为  asm  实例注册进监听状态为  ready  ),  10g  需要配置监听,如果源端生产库可以重启监听,只要加入  OGG  监听静态注册即可,如果源端生产库不让重启监听,则要加入一个新的  OGG  监听动态注册,配置如下:

##########  添加一个监听(避免重启原有监听)###########

[oracle@rac1 rac1]$ vi listener.ora 

SID_LIST_LISTENER_OGG =

  (SID_LIST =

    (SID_DESC =

      (GLOBAL_DBNAME = +ASM)

      (ORACLE_HOME = /oracle/app/product/10.2.0)

      (SID_NAME = +ASM1)

    )

  )

 

LISTENER_OGG =

  (DESCRIPTION_LIST =

    (DESCRIPTION =

      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.11)(PORT = 1522))

    )

  )

启动新监听listener_ogg

参数配置:

setenv (NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK")

userid odc,password odc

exttrail ./dirdat/sm

tranlogoptions altarchivelogdest instance  ora11g1+MCDATA/archlog,altarchivelogdest instance ora11g2 +MCDATA/archlog 

tranlogoptions  asmuser sys@asm, asmpassword oracle      

FETCHOPTIONS FETCHPKUPDATECOLS

include objname OGGTEST.* exclude objtype 'TRIGGER'

table OGGTEST.*;

 

 

参数配置方法二:

 

数据库版本  10.2.0.5  及以上的版本,或  11.2.0.2  以上版本(但  11gR1  不支持),  Oracle  提供了一个新的  ASM API  接口  ,可以让  extract  进程直接利用数据库服务器来访问  redo    archive log  ,无需配置归档路径,直接配置参数  tranlogoptions dblogreader  参数即可,自动会找到归档路径。

 

具体参数如下

extract sm_ext

setenv (NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK")

userid odc,password odc

exttrail ./dirdat/sm

tranlogoptions dblogreader

FETCHOPTIONS FETCHPKUPDATECOLS

ddl include objname OGGTEST.* exclude objtype 'TRIGGER' &

include objname OGGTEST.* exclude objtype 'TRIGGER'

table OGGTEST.*;

 

  1  :关于参数  DBLOGREADER  的说明,  mos  文档中写到:

(Oracle)Valid for Extract in classic capture mode. Causes Extract to use a newer ASM API that is available as of Oracle 10.2.0.5 and later10gR2 versions and Oracle 11.2.0.2 and later 11gR2 versions(but not in Oracle 11gR1 versions). This API uses the database server to access the redo log and archive logs, instead of connecting directly to the Oracle ASM instance.The database must contain the libraries that contain the API modules and must be running

To use this feature,the Extract database user must have  SELECT ANY TRANSACTION privilege.

另外,对于版本高于  11.2.0.4  的源端数据库,需要开启数据库级别的参数  ENABLE_GOLDENGATE_REPLICATION  ,方法如下:

   ALTER SYSTEM SET ENABLE_GOLDENGATE_REPLICATION = TRUE SCOPE=BOTH;

 

 

  2  :如果源端是  AIX  redo  是裸设备上且设置了偏移量,则需要在以上参数里加上:

   TRANLOGOPTIONS RAWDEVICEOFFSET 0

 

检查  AIX  裸设备是否有偏移量:

$ORACLE_HOME/bin/offset

$[/oracle]$ORACLE_HOME/bin/offset  /dev/lv_redo2_1g_22   4096

$[/oracle]$ORACLE_HOME/bin/offset  /dev/lv_redo1_1g_01   4096

 

 

情况三:只挖归档模式(  ALO mode 

OGG  在捕获数据变更的时候优先从在线日志中抽取数据,如果该  redo  已经切换,则会去归档日志中抽取数据变更。

如果需要强制设置  ogg  从归档日志读取数据,则需要使用参数  TRANLOGOPTIONS ARCHIVEDLOGONLY

只读归档:

在备库环境上部署抽取进程,则需要配置  TRANLOGOPTIONS ARCHIVEDLOGONLY  参数,且需要在  tnsnames.ora  文件中配置连接串能够连到源端生产库(具体部署节点的  ip  ,不要配置  scan-ip  ),参数如下:

 

userid odc@orcl,password odc          --orcl  连接串为刚才配置在tnsnames.ora  文件中的

TRANLOGOPTIONS ARCHIVEDLOGONLY           --  只挖归档的参数

tranlogoptions altarchivelogdest /data/orcl/archlog       --  具体归档路径

 

 

 

情况四:表结构不同的配置

当源端的表结构和目标端的表结构(包括字段名、数据类型)不一致时(或源端和目标端数据库不一致时),需要多配置一个定义文件,使  ogg  目标端可正常应用。

源端编辑

GGSCI (rac2) 3> edit params defgen

defsfile /odc/dirdef/sm.def purge

userid odc, password odc

table  oggtest.t2;

table oggtest.test;

 

desfile  def  文件输出路径

table:  可以指定table  ,也可以使用username.*  到相应用户下所有表结构信息。

 

生成目标端需要的定义文件

[oracle@rac2 ~]$ cd /odc

[oracle@rac2 odc]$ ./defgen paramfile /odc/dirprm/defgen.prm

 

会在/odc/dirdef  路径下生成sm.def  文件。

手工将产生的定义文件传输到目标端的dirdef  目录下

 

目标端应用进程中添加参数SOURCEDEFS  以及colmap  参数:

SOURCEDEFS /odc/dirdef/sm.def

map oggtest.t2,target oggtest.t2,colmap(USEDEFAULTS col1=col,col2=col2,col3=col3);

具体见创建replicat  进程章节

其他配置一样。

 

 

 

启动进程观察,能够挖掘再继续下面的操作:

start sm_ext

 

 

 

传输进程要配置的参数:

参数

阀值

定义

extract

sm_dmp

指定进程名和类型 

userid/ password

odc

指定OGG  连接数据库的用户名和密码

rmthost

172.10.10.154

指定目标端主机IP

mgrport

7809

指定管理进程端口号

rmttrail

./dirdat/sm

指定目标端保存队列文件的目录

passthru

/oradata/oradata/smkdb/archive

采用pass-through  模式处理表

table

OGGTEST.*

定义需要复制的表,后面需以结尾 

 

 

ggsci>

注:

EXTTRAILSOURCE  :指定提取文件作为数据源

ADD RMTTRAIL  :在目标数据库上创建一个  trail

 

ggsci>edit param sm_dmp

 

参数:

extract sm_dmp

userid odc,password odc

rmthost 172.16.10.154, mgrport 7809

rmttrail ./dirdat/sm

--rmttrail ./dirdat/tj, 11.1

passthru

table OGGTEST.*;

 

ggsci>start sm_dmp


请使用浏览器的分享功能分享到微信等