Oracle GoldenGate安装(二)

来源:这里教程网 时间:2026-03-03 18:02:14 作者:

四、源端安装DDL 相关组件

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> add trandata OGGTEST.*

ggsci> info trandata OGGTEST.*

 

注:

对于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> add extract sm_ext tranlog threads 2 begin now (如果是单机,可以不写thread 参数)

ggsci> add exttrail ./dirdat/sm extract sm_ext

注:

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

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

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

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

sm trail 文件的前缀

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

参数配置:

 

情况一:单机数据库

直接配置归档路径

ggsci> edit param sm_ext

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

ASM =

(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

参数配置:

extract sm_ext

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

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

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> add extract sm_dmp EXTTRAILSOURCE ./dirdat/sm

ggsci> ADD RMTTRAIL ./dirdat/sm, EXTRACT sm_dmp

注:

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, format release 11.1

passthru

table OGGTEST.*;

 

ggsci>start sm_dmp  

相关推荐