goldengate ogg troubleshooting guide

goldengate ogg troubleshooting guide

 

OGG_les_03-Troubleshooting_revised

GoldenGate OGG 1403错误解决方法

1. 错误描述

WARNING OGG-01154 Oracle GoldenGate Delivery for Oracle, repyxb.prm: SQL error 1403 mapping SGPM.P_SMS_SEND to SGPM.P_SMS_SEND.

WARNING OGG-01003 Oracle GoldenGate Delivery for Oracle, repyxb.prm:  Repositioning to rba 2509817 in seqno 1.

ERROR OGG-01296 Oracle GoldenGate Delivery for Oracle, repyxb.prm:  Error mapping from SGPM.P_SMS_SEND to SGPM.P_SMS_SEND.

ERROR OGG-01668 Oracle GoldenGate Delivery for Oracle, repyxb.prm:  PROCESS ABENDING.

2. 错误原因和分析

SQL ERROR 1403属数据错误,指记录无法投递到目标数据库,需通过查看错误信息及discarded文件,到两端库寻找相应记录,并结合logdump工具分析队列中的实际数据,分析出现该错误的原因,进而解决该问题。

造成该错误的可能原因:

  • 两端表结构不一致
  • 附加日志错误
  • 初始化方法错误导致不一致
  • 目标端级联删除、trigger没有被禁止
  • 该表存在不写日志的DML操作

3. 处理方法

3.1 两端表结构不一致

重新初始化该表,初始化方法见《国家电网公司网省数据级容灾GoldenGate运维方案》。

3.2 附加日志错误

在源端确认该表附加日志是否为enable状态,执行命令:

GGSCI>INFO TRANDATA schema.table_name

如果不是,重新添加附加日志,执行命令

GGSCI>ADD TRANDATA schema.table_name

加完附加日志后需要重新对该表执行初始化,具体方法请参照运维方案。

3.3 初始化方法错误导致数据不一致

GG在执行删改操作时,由于初始化方法错误造成的数据不一致,使得GG删除的记录不存在,或修改的数据前影像不一致。此时,可通过logdump观察具体错误,如果记录条数不多,则可手动修复该错误。如果记录数非常多,则需对该表进行重新初始化或在replicat进程中添加handlecollisions参数(加handlecollisions参数的前提为该replicat进程复制的表均有主键或唯一约束)。

3.4 目标端级联删除、trigger没有被禁止

删除目标端trigger及主外键约束即可。

禁止trigger:

禁止主外键约束:

3.5 该表存在不写日志的DML操作

当表处于logging状态且使用了以下数据装载模式+nologging时DML将不会被写入数据库日志,OGG无法捕获到:

❍ /*+ APPEND */ hint

❍ /*+ BUFFER */ hint

❍ /*+ PARALLEL */ hint

❍ SQLLDR with DIRECT=TRUE

请首先检查表是否处于logging mode,然后从应用方面检查是否存在这些限制。如果有需要调整表为logging模式,对表执行重新初始化,具体方法请参照运维方案。

3.6 定时任务

观察数据库是否存在定时任务自动修改数据。

同样,对于操作系统级也进行检查,是否有脚本自动修改数据库中数据。

如有以上现象,请禁止这些任务,对已经受影响的表执行初始化。

3.8 数据初始化带来的不一致

如果数据初始化时候没有使用SCN号做恢复和启动OGG进程,则可能会丢失部分数据,在日后的运行过程中报告1403错误。

3.9 人为修改OGG进程检查点带来的数据不一致

如果使用了alter extract/replicat等操作修改过OGG的检查点,则可能会出现丢失数据或者部分时段数据重复现象,造成运行期间报告1403错误。

3.10 人为修改目标端数据

人为失误修改目标数据也会造成两端数据不一致。

Oracle GoldenGate DDL 详细说明 使用手册




一. 概述
DDL 相关的参数包括:DDL、DDLERROR、DDLOPTIONS、DDLSUBST、DDLTABLE、GGSCHEMA、
PURGEDDLHISTORY、PURGEMARKERHISTORY。
在 extract 里,默认是不支持 DDL 的抽取的,需要通过配置 DDL 参数来开启;
在 replicat 里,默认是支持 DDL 的抽取,并且会处理 trail 里存在的全部 DDL 操作,需要
使用 DDL 参数来忽略或者过滤掉某些 DDL 操作
二. 基本概念
先介绍几个非常重要的概念,然后针对每一个 DDL 参数作详细说明
1. DDL scopes
DDL 操作的数据库对象被分成类别,叫做 scopes,一共三类 MAPPED 、UNMAPPED、
OTHER.
MAPPED scope:
在 TABLE 和 MAP 语句中明确声明的对象,属于 MAPPED scope.
比如:
    Extract (source) Replicat (target)
TABLE fin.expen; MAP fin.expen, TARGET fin2.expen2;
TABLE hr.tab*; MAP hr.tab*, TARGET hrBackup.bak_*;
源端发出一个ddl语句如下
ALTER TABLE fin.expen ADD notes varchar2(100);
那么,由于此类对象属于MAPPED scope,所以按照map的规则,在目标端将转化为
如下语句:
ALTER TABLE fin2.expen2 ADD notes varchar2(100);
源端如下语句     CREATE TABLE hr.tabPayables;
按照上面的map规则,目标端将转化为    CREATE TABLE hrBackup.bak_tabPayables;
如果某一个对象 在TABLE语句里,但是不在MAP语句里,那么这个对象的DDL语句
在源端属于MAPPED scope,在目标端属于UNMAPPED scope,分开按照各自的规则
处理
UNMAPPED scope:
DDL 是 OGG 支持的,但是 DDL 所操作的基础表没有在 TABLE 和 MAP 语句中明确声
明的对象,属于 UNMAPPED scope
属于 UNMAPPED scope 的 DDL 语句,在 Replicat 进程中,按照如下规则处理:
1. alter session set current_schema=源DDL对象的schema
2. 使用那个用户执行 DDL.
3. 重新返回复制用户
   
OTHER scope:
没有办法 map 的 DDL 操作,属于 OTHER scope。
典型的几类:
CREATE USER joe IDENTIFIED by joe;
CREATE ROLE ggs_gguser_role IDENTIFIED GLOBALLY;
ALTER TABLESPACE gg_user TABLESPACE GROUP gg_grp_user;
2. 过滤DDL复制(filter)
我们不想复制全部 ddl 语句,我们想选择其中某些种类的 DDL 进行复制,这个时候
我们就要过滤 DDL 操作,使得只有部分我们需要的 DDL 语句复制到目标端。
注意:DDL filter 不适用于 data‐pump extract
有两种方法,
1. 使用源端数据库的 DDL 触发器来过滤 DDL
实现方法:
在 OGG 安装目录里有一个文件 ddl_filter.sql,打开编辑这个文件,找到一个函
数叫做 filterDDL,按照自己的需求修改,然后在 sqlplus 里执行 @ddl_filter
2. 在 extract 和 replicat 参数文件里使用 DDL 参数(大多数环境足够用了)
通过 DDL 参数实现 DDL filter,主要基于以下几方面:
● scope
● operation type
● object name
● strings in the DDL command syntax or comments, or both
    DDL参数详细说明请参考下一章节<DDL参数说明>
3. derived object
以下面的创建 index 为例
CREATE INDEX hr.indexPayrollDate ON TABLE hr.tabPayroll (payDate);
其中 tabPayroll 是基础 object,而 indexPayrollDate 就是 derived object。
在进行 DDL 复制的时候,我们需要在 replicat 端配置 MAP 映射:
有几种情况:
第一:为基础对象指定 MAPPING 规则,derived 对象不指定 MAPPING
OGG 默认将 derived 的属主设置为与基础表一致,以上面的为例,如果我们指
定 MAP hr.tab*, TARGET hrBackup.*;
那么上述语句在目标端转为为
CREATE INDEX hrBackup.indexPayrollDate ON TABLE hrBackup.tabPayroll
(payDate);
第二:为基础表和 derived 对象同时指定 MAPPING
按照各自的 MAP 规则进行映射
    第三:为 derived 对象指定了 MAP,对基础对象没有指定 MAP
    OGG 不作任何转换,直接将源端的语句在目标端执行。
    RENAME 和 ALTER RENAME 语句涉及到的 derived 对象,MAP 中一律指定新表名
   
三. DDL处理流程
1. Extract 对DDL语句的处理流程:
1. Extract 抓取一个 DDL 操作
2. Extract 将 DDL 语句中的 comments 进行分离
3. Extract 查找 prm 参数文件中的 DDL 参数配置
4. Extract 查找 IGNOREREPLICATES 参数.如果参数存在,而且这个 DDL 是由 Replicat 进程产生
的,那么就忽略掉这个 DDL,继续查找新的 DDL
5. Extract 判断是否是一个 renmae 操作,如果是做标记,将语句转化为 ALTER TABLE RENAME
6. Extract 获取基础对象和 derived 对象信息
8. Extract 查找 DDLOPTIONS REMOVECOMMENTS BEFORE 参数设置了这个参数,那么 extract
将删除 comments,但是还是要首先判断 DDL INCLUDE 中的选项 INSTR,如果符合 INSTR 选
项,那么将保留 comments
9. Extract 判断 DDL 属于哪种类型的 scope: MAPPED, UNMAPPED or OTHER.   
10. Extract 根据详细的 DDL INCLUDE 和 DDL EXCLUDE 来决定 DDL 的去留
11. Extract 根据参数 DDLSUBST 参数对 DDL 语句进行处理,DDLSUBST 可以有多个,按照 prm
文件中的顺序,挨个处理
12. DDLSUBT处理后,extrac查找REMOVECOMMENTS AFTER参数,如果存在,将删除comments
13. Extract 查找 DDLOPTIONS ADDTRANDATA ,如果操作是一个 CREATE TABLE, 那么 Extract
会执行 ALTER TABLE <name> ADD SUPPLEMENTAL LOG GROUP 命令.
14. 最后一步,Extract 将 DDL 语句写入 trail 文件
2. Replicat对DDL语句的处理流程
1. Replicat 从 trail 文件里读取到 DDL 语句
2. Replicat 分离 comments
3. Replicat 查找 DDLOPTIONS REMOVECOMMENTS BEFORE 如果存在,先删除 comments
4. Replicat 判断 DDL 属于哪种类型的 scope: MAPPED, UNMAPPED or OTHER
6. Replicat 根据 MAP 映射,替换表名等等.
7. 如果发现存在 derived 对象, Replicat 查找 DDLOPTIONS MAPDERIVED.如果存在,按照规则
替换
8. Replicat 根据详细的 DDL INCLUDE 和 DDL EXCLUDE 来决定 DDL 的去留.
9. Replicat 根据参数 DDLSUBST 参数对 DDL 语句进行处理,DDLSUBST 可以有多个,按照 prm
文件中的顺序,挨个处理.
10. DDLSUBT处理后,extrac查找REMOVECOMMENTS AFTER参数,如果存在,将删除comments
11. Replicat 在目标数据库上执行 DDL.
12. 没有错误,就继续下一个 DDL 的执行,如果有错误,要判断 DDLERROR 参数的设置
   
四. 支持DDL配置
配置 DDL 环境,需要在数据库里创建如下一系列的表:
GRANT EXECUTE ON utl_file TO oggadm;
ggsci
EDIT PARAMS ./GLOBALS
GGSCHEMA oggadm
Sqlplus “/as sysdba”
@marker_setup.sql 必须到这个脚本所在目录进入 sqlplus
@ddl_setup.sql
@role_setup.sql
Grant GGS_GGSUSER_ROLE to oggadm;
@ddl_enable.sql
@?\rdbms\admin\dbmspool.sql
@ddl_pin oggadm;
   
五. DDL参数说明
1. DDL
语法结构:
DDL [
{INCLUDE | EXCLUDE}
[, MAPPED | UNMAPPED | OTHER | ALL]
[, OPTYPE <type>]
[, OBJTYPE ‘<type>’]
[, OBJNAME “<name>“]
[, INSTR ‘<string>’]
[, INSTRCOMMENTS ‘<comment_string>’
]
不使用任何选项,在参数文件里只声明 DDL,那么 extract 将抽取全部 DDL 写入 trail,replicat
将读取全部 DDL 并应用复制(在 replicat 里,这个动作和默认不写 DDL 语句一样)
参数说明:
INCLUDE | EXCLUDE
Include 包含准备实施 DDL 操作的数据库对象的过滤规则;
Exclude 排除针对某些对象的 DDL 操作。
使用 exclude 子句,必须使用一个相应的 include 子句,比如单独指定下面的语句
DDL EXCLUDE OBJNAME “hr.*”
是不合法的,我们必须配合如下方法使用 include;
DDL INCLUDE ALL, EXCLUDE OBJNAME “hr.*”
DDL INCLUDE OBJNAME “fin.*” EXCLUDE “fin.ss”
Exclude优先权高于include,
但是有一个方式可以不必指定include来配合,那就是DDL EXCLUDE ALL
MAPPED | UNMAPPED | OTHER | ALL
指定MAPPED ,表示只处理属于MAPPED scope类型的对象对应的DDL语句,MAPPED
类型的优先级高于其他级别;
指定 UNMAPPED ,表示只处理属于 UNMAPPED scope 类型的对象对应的 DDL 语句
指定 OTHER,表示只处理属于 OTHER scope 类型的对象对应的 DDL 语句
指定 ALL ,表示处理所有的 DDL 语句
OPTYPE <type>
指定执行某些类型的 DDL 语句,比如
DDL INCLUDE OPTYPE ALTER 
将处理那些 alter 语句
OBJTYPE ‘<type>’
指定执行某些对象的 DDL 语句,比如
DDL INCLUDE OBJTYPE ‘INDEX’
DDL INCLUDE OBJTYPE ‘SNAPSHOT’
DDL INCLUDE OBJTYPE ‘SNAPSHOT LOG’
将处理与index ,snapshot 和snapshot log有关的DDL语句
OBJNAME “<name>“
    根据对象名进行处理,比如
DDL INCLUDE OBJNAME “accounts.*”
注意 1 : OBJNAME 后面的值,对应的应该是 replicat 进程参数文件中的 MAP 语
句中的 target 子句的值,而不是源端的值。
比如:MAP fin.exp_*, TARGET fin2.*;
那么我们要声明 DDL INCLUDE OBJNAME “fin2.*”,这样的话,就可以处理下面的语句了
CREATE TABLE fin.exp_phone;(源端的语句)
CREATE TABLE fin2.exp_phone;(转化到目标端的语句)
注意 2: 创建触发器,索引,同义词等等语句,我们要指定的 OBJNAME 是基表
的名字,而不是触发器或者索引的名字,比如要想处理源端的语句 CREATE TRIGGER
hr.insert_trig ON hr.accounts;
我们需要如下指定:DDL INCLUDE OBJNAME “hr.accounts” , 而不应该指定为
hr.insert_trig
INSTR ‘<string>’
    指定如何处理 DDL 语句中包含特定字符的 DDL 语句,与下面的选项
INSTRCOMMENTS 对应,也即是说,instr 选择的是 DDL 语句本身包含指定的字符,而
INSTRCOMMENTS 指定是 DDL 语句中的注释中包含的字符
 DDL INCLUDE ALL EXCLUDE INSTR ‘CREATE INDEX’
INSTRCOMMENTS ‘<comment_string>’
    解释请参考 INSTR 选项
DDL INCLUDE ALL EXCLUDE INSTRCOMMENTS ‘SOURCE ONLY’
它复制的是如下源端语句
CREATE USER john IDENTIFIED BY john /*source only*/;

INSTRWORDS ‘<word list>’
 ALTER TABLE INCLUDE INSTRWORDS ‘ALTER CONSTRAINT “ xyz” ’
 处理语句中包含 alter 或者 constraint 或者 _xyz 的 DDL 语句
INSTRCOMMENTSWORDS ‘<word list>’
 处理语句注释中包含 alter 或者 constraint 或者 _xyz 的 DDL 语句
多个选项混合配制,可以配置非常复杂的规则,比如:
DDL &
INCLUDE UNMAPPED &
OPTYPE alter &
OBJTYPE ‘table’ &
OBJNAME “users.tab*” &
INCLUDE MAPPED OBJNAME “*” &
EXCLUDE MAPPED OBJNAME "temporary.tab*"
2. DDLERROR
适用于 Extract and Replicat,用来捕获复制过程中遇到 DDL 错误时进行的处理
Extract 进程中 DDLERROR 的选项
默认值: Abend
语法结构: DDLERROR [RESTARTSKIP <num skips>] [SKIPTRIGGERERROR <num errors>]
参数说明:
RESTARTSKIP    在 EXTRACT 启动时,允许出现 n 次的错误,n 的取值范围:1—100000,
超过 n 次错误,进程 abend,错误信息输入到 report file 中。
SKIPTRIGGERERROR    在 EXTRACT 启动时,允许出现 n 次的 DDL trigger 的错误,n 的取值
范围:1—100000,这个值不计算在 RESTARTSKIP 内,互相独立。
Replicat 进程中 DDLERROR 的选项
默认值: Abend
语法结构: DDLERROR
{<error> | DEFAULT} {<response>}
{INCLUDE <inclusion clause> | EXCLUDE <exclusion clause>}
[IGNOREMISSINGOBJECTS | ABENDONMISSINGOBJECTS]
参数说明:
IGNOREMISSINGOBJECTS/ ABENDONMISSINGOBJECTS ,控制当DML的对象在目标端不存在时进
程是否abend,IGNOREMISSINGOBJECTS可以跳过在missing table上的DML操作。
 
3. DDLOPTIONS
适用于 Extract and Replicat,用来捕获复制过程中遇到 DDL 错误时进行的处理
语法结构:
DDLOPTIONS
[, ADDTRANDATA [ABEND | RETRYOP <RETRYDELAY <seconds> MAXRETRIES <retries>]
[, DEFAULTUSERPASSWORD <password>
[ENCRYPTKEY DEFAULT | ENCRYPTKEY <keyname>]]
[, GETAPPLOPS | IGNOREAPPLOPS]
[, GETREPLICATES | IGNOREREPLICATES]
[, IGNOREMAPPING]
[, MAPDERIVED | NOMAPDERIVED]
[, MAPSCHEMAS]
[, MAPSESSIONSCHEMA] <source_schema> TARGET <target_schema>
[, NOCROSSRENAME]
[, PASSWORD ENCRYPTKEY [DEFAULT | ENCRYPTKEY <keyname>]
[, REMOVECOMMENTS {BEFORE | AFTER}]
[, REPLICATEPASSWORD | NOREPLICATEPASSWORD]
[, REPORT | NOREPORT]
[, UPDATEMETADATA]
[, USEOWNERFORSESSION]
参数说明:
ADDTRANDATA
对新建的表自动添加 supplemental logging,而不需要在创建表之后,手工执行 ADD
TRANDATA 命令,如果表有锁,可能导致自动添加 supplemental logging 失败,这个
参数有几个值,对失败后进行处理。
ABEND 失败后使得extract进程abend
RETRYOP <RETRYDELAY <seconds> MAXRETRIES <retries>] 失败后根据重试时间
和重试次数两个选项的值,进行重新执行add trandata动作
IGNOREMAPPING
如果我们可以保证源端和目标端完全一致,不需要进行 DDL 表名或者用户名进行
转换的话,可以设置这个参数,可以加快 replicat 进程的速度,也就是说 replicat 不需
要去解析任何 MAPPING 参数,直接进行 DDL 的执行,所以速度会很快
4. DDLSUBST
可以处理一些与数据结构无关的字符转换,比如转换一个表空间的名字,转换一些
comment 中的文字等等。
注意:
1. 不要使用 ddlsubst 来修改列名或者列的数据类型,也不要修改表名和表的属主,这
些操作一定要使用 MAP 语句来实现
2. ddlsubst 总是在 ddl 语句之后执行,也就是说,先要 ddl include 的对象才可以进行
处理
3. 可以使用多个 ddlsubst 参数,按照顺序执行
4. ddloptions 参数里有一个选项叫做,REMOVECOMMENTS ,有两个值,一个 before,一
个是 after,具体参考 ddloptions 小节,如果我们想使用 ddlsubst 处理 comment,必须使用
REMOVECOMMENTS AFTER,表示当被 ddlsubst 处理过之后的 DDL 语句再删除 comments
语法结构:
DDLSUBST ‘<search_string>’ WITH ‘<replace_string>’
[INCLUDE <inclusion clause> | EXCLUDE <exclusion clause>]
参数说明:望文生义,不多解释
示例:
DDLSUBST ‘cust’ WITH ‘customers’ INCLUDE OBJNAME “sales.*”

【转】Oracle GoldenGate OGG管理员手册

第一章 系统实现简述

  1. 前言

编写本手册的目的是为系统管理员以及相关操作人员提供 Oracle  Goldengat  软

件的日常维护和使用的技术参考;

 

 

3

 

ORACLE

第二章 OGG 日常维护操作指南

  1. 启动 Goldenagate
    1. oracle 用户登录生产数据库主机系统
    2. 进入 OGG 安装目录/ggs,执行./ggsci 进入命令行模式;
    3. 启动源端管理进程

Copyright OGG Software, Inc.   1995-2007

GGSCI > start mgr          //  启动 manager 进程

  1. 启动所有进程

Copyright OGG Software, Inc.   1995-2007

GGSCI > start ext *         //启动所有抽取进程

  1. 查看进程状态是否为 Running(表示已经启动);

Copyright OGG Software, Inc.   1995-2007

 

GGSCI > info ext *//查看所有进程信息
   
SCI > start rep * //启动所有投递进程
   

 

  1. 查看进程状态是否为 Running(表示已经启动);

Copyright OGG Software, Inc.   1995-2007

GGSCI > info er *   //查看所有进程信息

说明:GGSCI > start er *是启动所有进程,如果只启动一个进程命令为 start <

进程名>。例如进程名称为 dpesz,则启动命令为 start dpesz。

  1. 停止 OGG
    1. oracle 用户登陆主机系统;

 

 

4

 

ORACLE

  1. 进入 OGG 安装目录/ggs,执行./ggsci 进入命令行模式
  2. 验证 OGG 的抽取进程重起所需的日志是否存在,对各个 extXX 进程分别执 行命令:

Copyright OGG Software, Inc.   1995-2007

GGSCI>info extXX,showch       //查询 extXX 进程回滚检查点

Read Checkpoint #1

Recovery Checkpoint (position of oldest unprocessed transaction in the data source): Thread #: 1

Sequence #: 9671                           //在节点 1 上回滚需要的检查点日志序列号

RBA: 239077904

Timestamp: 2008-05-20 11:39:07.000000

SCN: 2195.1048654191

Redo File: Not available

Current Checkpoint (position of last record read in the data source): Thread #: 1

Sequence #: 9671 RBA: 239377476

Timestamp: 2008-05-20 11:39:10.000000

SCN: 2195.1048654339

Redo File: Not Available

Read Checkpoint #2

Recovery Checkpoint (position of oldest unprocessed transaction in the data source):

Thread #: 2

Sequence #: 5287                        //在节点 2 上回滚需要的检查点日志序列号

RBA: 131154160

Timestamp: 2008-05-20 11:37:42.000000

SCN: 2195.1048640151

Redo File: /dev/rredo07

Current Checkpoint (position of last record read in the data source):

Thread #: 2

Sequence #: 5287

 

 

5

 

ORACLE

RBA: 138594492

Timestamp: 2008-05-20 11:39:14.000000

SCN: 2195.1048654739

Redo File: /dev/rredo07

查看 Recovery Checkpoint 所需要读取的最古老日志序列号“9671”“5287”标

明的归档日志以及以后的日志文件在当前的归档目录中是否完全存在;如果存在则

可以停止生产数据库主机上的 ext 进程;

  1. 停止生产中心的相关进程;

Copyright OGG Software, Inc.   1995-2007

1)检查 exthy 进程是否将数据全部抓取出来

进入 OGG 控制台,执行:info all 查看 OGG 进程状态。再执行:lag ext exthy 确

认结果为:At EOF, no more records to process.          再执行 send ext exthy,showtrans 如

果没有查到结果,(关键显示信息如下: not transaction founds)则可进行下一步,执

行:info exthy,detail,记录下显示内容的 remote 部分显示的 seqno 和 extrba 的数值;

再执行 info dpehy ,记录下显示的 seqno 和 extrba 的数值,和上一步执行的结果进

行比较,两个结果相同,表示 exthy 进程处理完所有的数据。

2)  info dpehy,detail,记录下显示内容的 remote 部分显示的 seqno 和 extrba 的数

值,提供给 rephy 来使用。

3)检查 dpe 是否将数据全部传输到目标端

登陆 OGG 控制台执行 info rephy 记录下显示的 seqno 和 extrba 的数值,如果两个

结果相同,表示 dpewf 进程处理完所有数据

4)停止 exthy 和 dpehy 进程

GGSCI>stop exthy

GGSCI>stop dpehy

5)多次执行 Info rephy,检查队列的 rba 的数值是否还在变化,如果无变化 ,表

示数据已经都同步完毕 则可进行下一步

 

 

6

 

ORACLE

6)stop rephy

7)执行 info all,所有进程都是 STOPPED,表示正常

4、执行 info all,所有进程都是 STOPPED,表示正常

说明:只有在需要停止 ext 进程时,才需要如此检测,dpe、rep 进程则不需要;

stop er *表示停止所有进程,只停止一个进程命令为 stop <进程名>。例如进程名称

为 dpesz,则启动命令为 start dpehy;

  1. 查看进程信息

OGG 所有进程状态共有 3 种:

  • Running:正常运行
  • Stopped:正常停止或未能启动
  • Abended:异常中断;

正常的情况下,进程为 Running 或则 Stopped 状态;一旦出现 Abended 状态,需

查询相关的报告文件和 dsc 文件以定位错误;

进入 OGG 安装目录并执行./ggsci 进入命令行模式;

 

3.1 查询所有进程状态        
命令:GGSCI > info all        
     
Copyright OGG Software, Inc.   1995-2007    
GGSCI (P595B_ctaisdb) 2> info all //查询所有进程信息  
Program Status Group Lag Time Since Chkpt
MANAGER RUNNING        
EXTRACT RUNNING EXTKJ 00:00:00 00:00:07
EXTRACT RUNNING   DPEKJ 00:00:00 00:00:09
EXTRACT RUNNING EXTSZ 00:00:00 00:00:00
             

 

 

7

 

ORACLE

EXTRACT       RUNNING         DPESZ            00:00:00          00:00:00

3.2 查询相关进程状态

命令:GGSCI > info <进程名>,如 repxx/extxx/dpexx 查看单个进程状态;

输出示例如下:

 

Copyright OGG Software, Inc.   1995-2007  
   
GGSCI (P595B_ctaisdb) 2> info extxx //查询进程 extsz 信息
EXTRACT EXTSZ Last Started 2008-05-11 14:49Status RUNNING
Checkpoint Lag   00:00:00 (updated 00:00:01 ago)
Log Read Checkpoint File Not Available  
2008-05-20 11:39:02   Thread 1, Seqno 9671, RBA 238663364
Log Read Checkpoint File /dev/rredo07  

2008-05-20 11:39:03   Thread 2, Seqno 5287, RBA 138279848

3.3 查看进程检查点信息

命令:GGSCI > info <进程名>showch

示例如下:

Copyright OGG Software, Inc.   1995-2007

GGSCI>info extXX,showch       //查询 extXX 进程回滚检查点

Read Checkpoint #1

Recovery Checkpoint (position of oldest unprocessed transaction in the data source): Thread #: 1

Sequence #: 9671                           //在节点 1 上回滚需要的检查点日志序列号

RBA: 239077904

Timestamp: 2008-05-20 11:39:07.000000

SCN: 2195.1048654191

Redo File: Not available

 

 

8

 

ORACLE

Current Checkpoint (position of last record read in the data source): Thread #: 1

Sequence #: 9671 RBA: 239377476

Timestamp: 2008-05-20 11:39:10.000000

SCN: 2195.1048654339

Redo File: Not Available

Read Checkpoint #2

Recovery Checkpoint (position of oldest unprocessed transaction in the data source): Thread #: 2

Sequence #: 5287                        //在节点 2 上回滚需要的检查点日志序列号

RBA: 131154160

Timestamp: 2008-05-20 11:37:42.000000

SCN: 2195.1048640151

Redo File: /dev/rredo07

Current Checkpoint (position of last record read in the data source):   //当前检查点

Thread #: 2 Sequence #: 5287

RBA: 138594492

Timestamp: 2008-05-20 11:39:14.000000

SCN: 2195.1048654739

Redo File: /dev/rredo07

说明:查看单个进程的检查点详细信息,包括读取到什么位置,写到什么位置。

特别需要注意 Recovery Checkpoint,这个检查点记录的是当前最早没有提交的事务

开始的日志,如果下次需要重起则需要读这个日志,要保证其没有被删除

3.4 查看进程报告

命令:GGSCI > view report <进程名>

例如 repsz 查看复制进程报告。一般在进程出现 abended 后可以在报告里面找到

 

 

9

 

ORACLE

错误信息。

示例如下:

Copyright OGG Software, Inc.   1995-2007

GGSCI > view report repsz

***********************************************************************

OGG Delivery for Oracle Version v9.5.1.1 Build 006

AIX 5L (optimized 64-bit), Oracle 9.2.0 on Nov 30 2007 11:47:10 Copyright OGG Software, Inc. 1995-2007

Starting at 2008-04-24 23:10:17

***********************************************************************

Operating System Version:

AIX

Version 5, Release 3

Node: zjzbnhdb03

Machine: 00CE7A8F4C00

 

      soft limit hard limit
Address Space Size:   unlimited unlimited
Heap Size   : unlimited unlimited
File Size :   unlimited unlimited
CPU Time   : unlimited unlimited

Process id: 1335310

***********************************************************************

**                     Running with the following parameters                               **

***********************************************************************

replicat repsz     //     进程名

userid OGG, password *************

 

 

10

 

ORACLE

REPORT AT 01:59                 //报告时间

reportrollover at 02:00 –handlecollisions –reperror default,discard

discardfile /oradata/OGG/repxm.dsc,append,megabytes 100m –ddlerror default discard

assumetargetdefs allownoopupdates dynamicresolution numfiles 3000

MAP ctais2.* ,TARGET ctais2.*;

Database Version:

Oracle9i Enterprise Edition Release 9.2.0.7.0 – 64bit Production

PL/SQL Release 9.2.0.7.0 – Production

CORE     9.2.0.7.0 Production

TNS for IBM/AIX RISC System/6000: Version 9.2.0.7.0 – Production

NLSRTL Version 9.2.0.7.0 – Production

Database Language and Character Set:

NLS_LANG = “AMERICAN_AMERICA.US7ASCII”

NLS_LANGUAGE         = “AMERICAN”

NLS_TERRITORY       = “AMERICA”

NLS_CHARACTERSET = “US7ASCII”

For further information on character set settings, please refer to user manual.

***********************************************************************

**                                     Run Time Messages                                                   **

***********************************************************************

Opened trail file /oradata /OGG/dirdat/xm000000 at 2008-04-24 23:10:19

 

 

11

 

ORACLE

Wildcard MAP resolved (entry CTAIS2.*):

MAP CTAIS2.DM_CZRY, TARGET ctais2.DM_CZRY; Using following columns in default map by name:

CZRY_DM, SWJG_DM, CZRY_MC, SWRY_DM, QX_SWJG_DM, XM_NSRSBH, XYBZ, YXBZ

  1. 配置自动删除队列文件
  • 以 oracle 用户登录系统,进入安装目录执行./ggsci;
  • 执行 edit param mgr 编辑管理进程参数,加入或修改以下行

Copyright OGG Software, Inc.   1995-2007

GGSCI>edit param mgr     //编辑 Manager 参数

purgeoldextracts /<OGG 安装目录>/dirdat/*, usecheckpoint, minkeepdays 7

其中,第一个参数为队列位置,*可匹配备份中心所有队列文件;第二个参数表

示是首先要保证满足检查点需要,不能删除未处理队列;第三个参数表示最小保留

多少天,后面的数字为天数。例如,如果希望只保留队列/ggs/dirdat/xm 文件 10 天,

可以配置如下:

purgeoldextracts /oraclelog1/OGG/dirdat/xm, usecheckpoint, minkeepdays 10

3)  停止 MGR 进程,修改好参数后重启该进程

Copyright OGG Software, Inc.   1995-2007

GGSCI > stop mgr

Manager process is required by other GGS processes.

Are you sure you want to stop it (y/n)? y   //输入 y 确认停止 mgr 进程

Sending STOP request to MANAGER …

Request processed.

Manager stopped.

Copyright OGG Software, Inc.   1995-2007

GGSCI > start mgr

 

 

12

 

ORACLE

Manager started.

注:临时停止 mgr 进程并不影响数据复制。

  1. 配置启动 mgr 时自动启动 extract replicat 进程
    • 以 OGG 用户登录系统,进入安装目录执行./ggsci;
    • 执行 edit param mgr 编辑管理进程参数,加入以下行

AUTOSTART ER *

Copyright OGG Software, Inc.   1995-2007

GGSCI>edit param mgr     //编辑 Manager 参数

3)  停止 MGR 进程,修改好参数后重启该进程

Copyright OGG Software, Inc.   1995-2007

GGSCI > stop mgr     //关闭进程 Manager

Manager process is required by other GGS processes.

Are you sure you want to stop it (y/n)? y   //输入 y 确认停止 mgr 进程

Sending STOP request to MANAGER …

Request processed.

Manager stopped.

GGSCI > start mgr   //启动 Manager

Manager started.

注意:一般建议不用自动启动,而是手工启动,便于观察状态验证启动是否

成功,同时也便于客户自己修改参数。

  1. 配置 mgr 定时自动重启 extract replicat 进程

OGG 具有自动重起 extract 或者 replicat 进程的功能,能够自动恢复如网络中

断、数据库临时挂起等引起的错误,在系统恢复后自动重起相关进程,无需人工介

入。

1)  以 oracle 用户登录系统,进入安装目录执行 ggsci 进入命令行界面;

 

 

13

 

ORACLE

2)  执行 edit param mgr 编辑管理进程参数,加入以下行

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

Copyright OGG Software, Inc. 1995-2007 GGSCI>edit param mgr //编辑 Manager 参数

以上参数表示每 5 分钟尝试重新启动所有进程,共尝试三次。以后每 60 分钟

清零,再按照每 5 分钟尝试一次共试 3 次。

3)  停止 MGR 进程,修改好参数后重启该进程,使修改后的参数文件生效

GGSCI > stop mgr   //停止进程 Manager

Manager process is required by other GGS processes.

Are you sure you want to stop it (y/n)? y   //输入 y 确认停止 mgr 进程

Sending STOP request to MANAGER …

Request processed.

Manager stopped.

GGSCI > start mgr        //启动进程 Manager

Manager started.

  1. 长交易的管理

在停止抽取进程前需要通过命令检查是否存在长交易,以防止下次启动无法找

到归档日志:

命令格式 gsci> info 进程名, showch

示例如下:

Copyright OGG Software, Inc.   1995-2007

ggsci> info extsz,showch            //查询进程 extsz 未提交长交易检查点位置

Read Checkpoint #1

….

Recovery Checkpoint (position of oldest unprocessed transaction in the data source):

 

 

14

 

ORACLE

Thread #: 1

Sequence #: 9671

RBA: 239077904

Timestamp: 2008-05-20 11:39:07.000000

SCN: 2195.1048654191

Redo File: Not available

Current Checkpoint (position of last record read in the data source):

Thread #: 1

Sequence #: 9671

RBA: 239377476

Timestamp: 2008-05-20 11:39:10.000000

SCN: 2195.1048654339

Redo File: Not Available

Read Checkpoint #2

…..

Recovery Checkpoint (position of oldest unprocessed transaction in the data source): Thread #: 2

Sequence #: 5287 RBA: 131154160

Timestamp: 2008-05-20 11:37:42.000000

SCN: 2195.1048640151

Redo File: /dev/rredo07

Current Checkpoint (position of last record read in the data source):

Thread #: 2

Sequence #: 5287

RBA: 138594492

Timestamp: 2008-05-20 11:39:14.000000

SCN: 2195.1048654739

 

 

15

 

ORACLE

为了方便长交易的管理,OGG 提供了一些命令来帮助客户和应用开发商

查找到对应长交易,并在 OGG 中予以提交或者回滚。

(一)  查看长交易

命令格式:> send extract <进程名> , showtrans [thread n] [count n]

其中,<进程名>为所要察看的进程名,如 extsz/extxm/extjx 等;Thread n 是

可选的,表示只查看其中一个节点上的未提交交易;Count n 也是可选的,表示只显

示 n 条记录。例如下面命令:

Copyright OGG Software, Inc.   1995-2007

Ggsci> send extract extsz , showtrans thread 1   count 10   //查询 extsz 进程中节点 1 上最长

的 10 个交易

Sending showtrans request to EXTRACT EXTSZ

No transactions found

Oldest redo log file necessary to restart Extract is:

Redo Log Sequence Number 2, RBA 7890448.

输出结果是以时间降序排列的所有未提交交易列表,通过 xid 可以查找到对应的

事务,请应用开发商和 DBA 帮助可以查找出未提交原因,通过数据库予以提交或者

回滚后 OGG 的 checkpoint 会自动向前滚动。

()   使用 OGG 命令跳过或接受长交易

在 OGG 中强制提交或者回滚指定事务,可以通过以下命令:

跳过交易命令格式

Ggsci> SEND EXTRACT <进程名>, SKIPTRANS <5.17.27634> THREAD <2>

强制认为该交易已经提交命令格式

Ggsci>SEND EXTRACT <进程名>, FORCETRANS <5.17.27634> THREAD <1>

说明:使用这些命令只会让 OGG 进程跳过或者认为该交易已经提交,但

并不改变数据库中的交易,他们依旧存在于数据库中。因此,强烈建议使用数据库

 

 

16

 

ORACLE

中提交或者回滚交易而不是使用 OGG 处理。

()   配置长交易告警

可以在 extract 进程中配置长交易告警,参数设置如下所示:

Copyright OGG Software, Inc.   1995-2007

ggsci> edit param extsz            //编辑进程 extsz 参数

在参数文件中增加如下:

warnlongtrans 12h, checkintervals 10m

exttrail /backup/OGG/dirdat/sz

….

以上表示 OGG 会每隔 10 分钟检查一下长交易,如果有超过 12 个小时的

长交易,OGG  会在根目录下的 ggserr.log  里面加入一条告警信息。可以通过察看

ggserr.log 或者在 ggsci 中执行 view ggsevt 命令查看这些告警信息。以上配置可以有

助于及时发现长交易并予以处理。

  1. 源端和目标端数据库增减复制表

(一)  增加复制表

在当前进程参数中,通过显式列表的来匹配表,增加表后必须要修改配置文件,

还要为新增的表添加附加日志。步骤如下:

源端:

GGSCI 〉STOP EXT*

GGSCI> INFO ALL

目标端:

GGSCI>STOP REP*

GGSCI>INFO ALL

源端:

GGSCI>dblogin userid OGG, password XXXXXXX

GGSCI > info trandata <schema>.<table name>

 

 

17

 

ORACLE

如果不是 enable 则需要手动加入:

GGSCI > add trandata <schema>.<table name>

GGSCI>START EXT*

目标端:

GGSCI>START REP*

另外,当前 OGG 自动复制新增表的增删改等 DML 操作,但不复制 DDL 操作, 所以对于新增表请首先在目标端建立表结构。如果有外键和 trigger,需要在目标

表临时禁止该外键和 trigger。

()   减少复制表

如果有的表不再需要,可以在源端 drop 掉,然后到目标 drop 掉,在 OGG 的

复制参数中把该表排除掉即可。

如果其中几个表依然存在,只是无需 OGG 复制,则可以通过以下步骤排除:

  • 在源端系统上首先根据节2 描述验证所需归档日志存在后通过 stop extXX 停止对应的 extXX 进程;
  • 在目标端系统上 ggsci 中执行 stop repXX 停止目标端的复制进程;
  • 在源端修改 ext 进程的参数文件排除所不复制的表:

Ggsci> edit param extXX

……

tableexclude hxods.TMP_*; tableexclude hxods.BAK_*; tableexclude hxods.MLOG$_*; tableexclude hxods.RUPD$_*; tableexclude hxods.KJ_*;

tableexclude myschema.mytable;

table hxods.*;

…….

在文件定义 table 的行前面加入一行“tableexclude <schema>.<tablename>;” 注

意写全 schema 和表的名称。

4)   在目标端修改 rep 进程参数,同样排除该表:

 

 

18

 

ORACLE

GGSCI>edit param repXX

在 map 前面加入一行:

–mapexclude HXODS.SHOULIXINXI

mapexclude myschema.mytable

MAP HSODS.* ,TARGET HXODS.*;

5)   在目标端系统上启动复制进程 repXX

GGSCI > start   repXX

6)   在源端系统上启动源端的抓取进程 extXX

GGSCI > start   extXX

即可进入正常复制状态。

  1. 修改表结构

当数据库需要复制的表结构有所改变,如增加列,改变某些列的属性如长度等表

结构改变后,可以按照下列步骤执行:

  • 按照本文前面所述操作顺序停止源和目标端各抽取及投递进程(注意停源端 抽取要验证一下归档日志是否存在防止无法重起),无需停止 manager 进程;
  • 修改目标表结构;
  • 修改源表结构;
  • 如果表有主键,并且本次修改未修改主键,则可以直接启动源和目标所有进 程继续复制,完成本次修改;否则,如果表无主键或者本次修改了主键则需

继续执行下列步骤;

Copyright OGG Software, Inc.   1995-2007

ggsci> dblogin userid go mldengate, password XXXXXX   //登陆数据库

Successfully logged into database.

ggsci> delete trandata schema.mytable     //删除表的附加日志

Logging of supplemental redo log data disabled for table schema.mytable ggsci> add trandata schema.mytable //增加表的附加日志

Logging of supplemental redo log data is disabled for table schema.mytable

  • 如果表超过了 32 列则上述操作可能会报错,此时需要手工进行处理,请参 考附录三中如何手动为表删除和增加附加日志。
  • 重新启动源端和目标端的抓取和复制进程。

 

 

19

 

ORACLE

  1. 使用 imp 导入数据的注意事项

使用 imp 工具导入数据时,由于该操作写日志,OGG 支持复制通过 imp 导入的

数据,但不支持创建表的操作,需要在目标端事先创建表然后再在源端导入。

需要注意的是,每次 imp 都是一个 oracle 事务,如果导入的表过大(如超过 10G),

有可能超过 OGG 所配置的最大内存,请首先咨询 OGG 技术支持。

  1. 表的重新再同步

如果是某些表由于各种原因造成两边数据不一致,需要重新进行同步,但实际业

务始终 24 小时可用,不能提供时间窗口,则可以参照以下步骤。(因较为复杂,使

用需谨慎!)

确认 ext/dpe/rep 进程均无较大延迟,否则等待追平再执行操作;

停止目标端的 rep 进程;

注意:步骤 3-5 为将源端数据通过 exp/imp 导入到目标端,客户也可以选择其它

初始化方式,比如 expdp/impdp。

在源端获得当前的 scn 号。例如:

select dbms_flashback.get_system_change_number from dual;

以下以获得的 scn 号为 1176681 为例

在源端使用 exp 导出所需重新初始化的表或者几张表数据,并且指定到刚才记下

的 scn 号。例如:

exp <username>/<password> tables=ctais2.SB_ZSXX grants=n statistics=none triggers=n compress=n FLASHBACK_SCN=1176681

通过 ftp 传输到目标端;

在目标端,使用 imp 导入数据;

nohup imp OGG/XXXXX file=nanhai.dmp fromuser=ctais2 touser=ctais2 ignore=y

&

如果这些表有外键,在目标端检查这些外键并禁止它们(记得维护 dirsql 下的禁

 

 

20

 

ORACLE

止和启用外键的脚本 SQL);

编辑目标端对应的 rep 参数文件,在其 map 里面加入一个过滤条件,只对这些重

新初始化的表应用指定 scn 号之后的记录(一定要注意不要修改本次初始化之外的其

它表,会造成数据丢失!):

map  source.mytab,  target  target.mytab,  filter  (  @GETENV  (“TRANSACTION”,

“CSN”) >          1176681 ) ;

确认参数无误后,启动目标端的 rep 进程;

使用 info repxx 或者 lag repxx 直到该进程追上,停止该进程去掉 filter 即可进入

正常复制。

  1. OGG 复制软件升级

当源端和目标端要进行 OGG 升级时,请首先咨询 OGG 技术支持人员。如升级

后版本无特殊要求,其操作参考如下:

1)   按正常步骤停止当前版本抓取端的进程。

OGG Command Interpreter for Oracle

Version v9.5.1.0 Build 012

Windows (optimized), Oracle 10.1.0 on Oct 29 2007 20:10:55

Copyright OGG Software, Inc.   1995-2007

GGSCI (FILESRV) 1> stop er *   //停止所有的进程

EXTRACT EXTSZ is already stopped.

Sending STOP request to EXTRACT EXTSZ …

Request processed.

GGSCI > info er *                                                          //查询进程信息

EXTRACT       EXTSZ         Last Started 2008-07-03 02:01    Status STOPPED   //进程已经停

Checkpoint Lag            00:00:00 (updated 11:30:25 ago)

 

 

21

 

ORACLE

Log Read Checkpoint   ………….

记录反馈信息

OGG Command Interpreter for Oracle

Version v9.5.1.0 Build 012

Windows (optimized), Oracle 10.1.0 on Oct 29 2007 20:10:55

Copyright OGG Software, Inc.   1995-2007

 

GGSCI (FILESRV) 4> stop mgr //停止进程 Manager
         
Manager is already stopped.        
GGSCI (FILESRV) 5> info all //查询所有进程状态  
Program Status Group Lag Time Since Chkpt
MANAGER STOPPED      
EXTRACT STOPPED EXTT1 00:00:00 11:33:38
EXTRACT STOPPED EXTT3 00:00:00 00:05:00
           

 

记录反馈信息

  • 按正常步骤停止目标备份端进程。(同第一步类似)

GGSCI > stop er *

GGSCI > info er *

GGSCI > stop mgr

记录反馈信息

  • 将旧的系统下所有文件打包备份;
  • 将最新版本的软件包 MV 到根目录下解包安装覆盖旧的系统。

 

$ gzip -d XXXXXXX.tar.gz //解压缩安装文件
$ tar xvf XXXXXXX.tar //解压缩安装文件
   

 

5)   按同样步骤升级备份数据库主机 OGG 软件。

 

 

22

 

ORACLE

  • 查看设置信息是否与原版本一致,重新启动源数据库主机的抓取和复制进程。查 看运行状态。

GGSCI > info er *

GGSCI > start mgr;启动源端 ggs 软件

GGSCI > start mgr;启动备份端 ggs 软件

按正常步骤启动源端复制进程。

GGSCI > start er *

GGSCI > info er *

按正常步骤启动目标端复制进程。

GGSCI > start rep *

GGSCI > info rep *

7)   版本升级结束。

  1. 数据库升级

在数据库升级之前应提前通报给 OGG,以便于确定复制软件是否支持最新版本。

如果需要升级 OGG 软件参考前面的升级步骤,如果不需要升级 OGG,则只需停止

OGG 进程进行升级,然后升级完毕重新启动即可。

  1. 操作系统升级

在数据库升级之前应提前通报给 OGG,以便于确定复制软件是否支持最新版本。

如果需要升级 OGG 软件参考前面的升级步骤,如果不需要升级 OGG,则只需停止

OGG 进程进行升级,然后升级完毕重新启动即可。

  1. 数据库用户密码加密
    • OGG 的 dirprm 目录下存放着所有参数文件,其中密码可以使用明文或者加 密方式保存,如果需要使用加密密码,请使用下列步骤:

GGSCI > encrypt password   mypassword   //生成密钥

 

 

23

 

ORACLE

No key specified, using default key..

Encrypted password:   AACAAAAAAAAAAAKAPATACEHBIGQGCFZCCDIGAEMCQFFBZHVC

将参数文件中原来的明文行

userid ggs, password mypassword

改为密文

userid ggs, password   AACAAAAAAAAAAAKAPATACEHBIGQGCFZCCDIGAEMCQFFBZHVC,

encryptkey default

然后重新启动进程即可

附录一 OGG 对数据类型和对的限制

1.OGG 对数据类型和对象的限制

1.1OGG 数据类型支持

  • 支持Numeric(数字类型),包括NUMBER、BINARY FLOAT、BINARY DOUBLE。 暂不支持BINARY_INTEGER和PLS_INTEGER。
  • 支持所有Character(字符类型),包括CHAR、VARCHAR2、LONG、NCHAR、 NVARCHAR2。
  • 支持大对象,包括CLOB、NCLOB、BLOB。但不支持BFILE
  • 支持Binary(二进制类型),包括RAW和LONG RAW。
  • 支持Date及timestamp类型。支持除了TIMEZONE_REGION和TIMEZONE_ABBR 类型的所有TIMESTAMP类型。
  • 暂不支持多字节的XML类型。
  • 支持用户自定义类型(UDT),源端的UDT与目标端的UDT的必须相同。
  • 其它支持的数据类型,包括ROWID、VARRAY、INTERVAL DAY、INTERVAL YEAR。
  • OGG暂不支持的其它数据类型:

ANYDATA and ANYDATASET

ANYTYPE

MLSLABEL

 

 

24

 

ORACLE

URITYPE

UROWID

1.2OGG 特殊对象支持

1.2.1 有条件支持物化视图(Materialized views)

在以下有条件限制中支持:

  • 源表必须有唯一主键
  • OGG不支持物化视图使用”WITH ROWID”来创建,但当物化视图LOG(不是物 化视图自己)用”WITH ROWID”来创建时,OGG是支持的。
  • 物化视图必须是使用单个表,而不能包含joins生成的表。
  • OGG不支持truncates物化视图,但支持使用“DELETE FROM”来替代。
  • 索引组织表(Index organized tables)通过物化视图复制
    • 对于OGG基于LOG的复制方式,IOT表无法直接从日志中抽取,但是可以为 IOT表建立物化视图,通过复制该物化视图的变化实现IOT数据变化的复制。
  • 其它不支持对象
    • Clustered tables。
    • Nested tables。OGG只支持该类表的增加和删除,不支持嵌入对象的更新。
    • 使用压缩(COMPRESS)选项生成或修改的表
    • Views(视图)
    • Synonyms(同义表)
    • REFs

2.OGG 不支持的特殊操作

以下特殊操作由于不写日志,OGG 无法予以复制:

  • Direct-path table loads(由于不进行写 LOG 操作)

Oracle 插入数据有两种方式:

 

 

25

 

ORACLE

a、常规插入:重新使用 table 中的自由空间,在已有数据中插入新数据;

维护引用完整性约束。

b、Direct-Path 插入:在表中已有数据之后插入新数据;数据直接插入数据

文件,绕过 buffer cache;已有数据中的自由空间没有被重新利用;忽略了

引用完整性约束。Direct-Path 可以 disable redo log 和 undo log,导致 OGG

无法通过日志捕捉到数据变化。

常见的 Direct Path Load 包括:

  • insert into table as select….
  • create table xxx as select…

如果遇到上述操作,一般这些表数据不是原生数据,可以在复制中排除掉这

些表并通过定时备份等方式予以复制。

  • /*+ APPEND */ hint。如果在应用中使用该 hint,则不会写日志,OGG 无

法复制。

  • /*+ BUFFER */ hint。如果在应用中使用该 hint,则不会写日志,OGG 无

法复制。

  1. OGG 支持 imp 操作

由于 imp 操作写日志,OGG 能够支持 imp 操作。但由于不复制 DDL 操作,需

要事前在目标端建立表结构。如果 imp 的表过大,有可能引起 OGG 内存不够用,报

出 105 错误。因此,请在使用 imp 前咨询 OGG 技术支持。

  1. 数据库和应用日常维护注意事项

4.1 Oracle 9i 中 redo parallelism 必须设置为 1

OGG基于log的复制方式,在oracle10g上可以将log_parallelism参数最大可以

设置到8,这个参数控制了并行产生REDO LOG的处理数量。但在oracle10g以下的版

本,OGG只支持该参数为1。请不要修改这个参数,否则会造成抽取数据不完整。

4.2 为表设置主键或者唯一索引

OGG使用主键和唯一索引在源和目标定位需要更新或者删除的数据,应用开发新

 

 

26

 

ORACLE

增表应当尽可能带有主键和唯一索引。

同时,增加主键也有利于提高目标端数据投递的速度,减小复制延迟和降低资源

消耗。

4.3 保留 3-7 天归档日志

OGG只复制已经提交的交易,如果不提交则不会复制到目标端。在停止复制并重

新启动时,需要找到以前没有提交交易开始的日志。

因此,为了保证OGG能够重新启动,请保留3-7天归档日志。

4.4 避免使用不写日志的操作

OGG 只复制日志中的交易,应当避免在应用和数据库维护中使用 Direct Path 等

不写日志的操作,这些操作无法复制,会导致两端数据不一致。 OGG  复制的限制

和约束。

 

oracle goldengate ogg 11.2以后的兼容性列表

oracle goldengate ogg 11.2以后的兼容性列表 OGG database version compatible matrix

 

 

 

 

c Last Updated: March 14, 2014
This document covers the following product releases for Oracle GoldenGate:
◦ OGG 11gR2 (11.2.1.0.0), OGG 11gR2 (11.2.1.0.1), OGG 11gR2 (11.2.1.0.2), OGG 11gR2 (11.2.1.0.4), OGG 11gR2 (11.2.1.0.5), OGG 11gR2 (11.2.1.0.6), OGG 11gR2 (11.2.1.0.19)Oracle GoldenGate 11.2.1.0.20 is the Terminal Release for support of Oracle Database 10g
Installation Type Version Supported Processor Type OS Version OS
32/64 bit
Supported
Database Versions*
Exceptions and Additional Information
OGG Core 11.2.1.0.19+ x64 Windows Server 2008 R2 64 bit Microsoft SQL Server 2005 n/a
OGG Core 11.2.1.0.19+ x64 Windows Server 2008 with SP1+ 64 bit Microsoft SQL Server 2005 n/a
OGG Core 11.2.1.0.19+ x64 Windows 2003 with SP2+ 64 bit Microsoft SQL Server 2005 n/a
OGG Core 11.2.1.0.6+ x64 Red Hat EL 5 (UL3+) 64 Sybase 15.7 1. For Red Hat EL 5 (UL3+) on Oracle VM, minimum update level required is Red Hat EL 5 (UL3+) on Oracle VM 2.1.2+
OGG Core 11.2.1.0.6+ x64 Red Hat EL 6 (UL1+) 64 Sybase 15.7 n/a
OGG Core 11.2.1.0.6+ x64 Oracle Linux 5 (UL3+) 64 Sybase 15.7 1. For Oracle Linux 5 (UL3+) on Oracle VM, minimum update level required is Oracle Linux 5 (UL3+) on Oracle VM 2.1.2+.
OGG Core 11.2.1.0.6+ x64 Oracle Linux 6 (UL1+) 64 Sybase 15.7 1. Support is with UEK: Unbreakable Enterprise Kernel and Red Hat Compatible Kernel.
OGG Core 11.2.1.0.6+ x64 Windows Server 2008 with SP1+ 64 Sybase 15.7 n/a
OGG Core 11.2.1.0.6+ x64 Windows Server 2008 R2 64 Sybase 15.7 n/a
OGG Core 11.2.1.0.6+ SPARC Solaris 10 Update 6+ 64 Sybase 15.7 n/a
OGG Core 11.2.1.0.5+ IBM z/OS zOS 1.13 32 bit IBM DB2 9.1
IBM DB2 10.1
n/a
OGG Core 11.2.1.0.4+ IBM AS400 AS400 5.4 64 bit DB2 (i-Series/IBM DB2/400) 5.4 n/a
OGG Core 11.2.1.0.4+ POWER AIX 7.1 (TL2+) 64 bit IBM DB2 9.1
IBM DB2 9.5
IBM DB2 9.7
OGG Core 11.2.1.0.4+ x64 Solaris 10 Update 6+ 64 bit MySQL 5.1 n/a
OGG Core 11.2.1.0.4+ x64 Solaris 11 (All Update Levels Included) 64 bit MySQL 5.1 n/a
OGG Core 11.2.1.0.4+ x64 Windows 2003 with SP2+/R2+ 64 bit IBM DB2/400 6.1
IBM DB2/400 7.1
n/a
OGG Core 11.2.1.0.4+ x64 Windows Server 2008 with SP1+ 64 bit IBM DB2/400 6.1
IBM DB2/400 7.1
n/a
OGG Core 11.2.1.0.4+ x86 Oracle Linux 4 (UL7+) 32 bit IBM DB2/400 5.4
IBM DB2/400 6.1
IBM DB2/400 7.1
1. For Oracle Linux 4 (UL7+) on Oracle VM, minimum update level required is Oracle Linux 4 (UL7+) on Oracle VM 2.1.2+.
2. DB2/400 is for delivery only
OGG Core 11.2.1.0.4+ x86 Oracle Linux 5 (UL3+) 32 bit IBM DB2/400 5.4
IBM DB2/400 6.1
IBM DB2/400 7.1
1. For Oracle Linux 5 (UL3+) on Oracle VM, minimum update level required is Oracle Linux 5 (UL3+) on Oracle VM 2.1.2+.
2. DB2/400 is for delivery only
OGG Core 11.2.1.0.4+ x86 Red Hat EL 4 (UL7+) 32 bit IBM DB2/400 5.4
IBM DB2/400 6.1
IBM DB2/400 7.1
1. Running Red Hat EL 4 (UL7+) on Oracle VM is not supported.
2. DB2/400 is for delivery only
OGG Core 11.2.1.0.4+ x86 Red Hat EL 5 (UL3+) 32 bit IBM DB2/400 5.4
IBM DB2/400 6.1
IBM DB2/400 7.1
1. For Red Hat EL 5 (UL3+) on Oracle VM, minimum update level required is Red Hat EL 5 (UL3+) on Oracle VM 2.1.2+
2. DB2/400 is for delivery only
OGG Core 11.2.1.0.4+ x86 Windows 2003 32 bit IBM DB2/400 6.1
IBM DB2/400 7.1
n/a
OGG Core 11.2.1.0.4+ x86 Windows Server 2008 with SP1+ 32 bit IBM DB2/400 6.1
IBM DB2/400 7.1
n/a
OGG Core 11.2.1.0.2+ HP-Itanium Red Hat EL 5 (UL3+) 64 Oracle 10.2.0.4+ n/a
OGG Core 11.2.1.0.2+ IBM AS400 AS400 6.1 64 bit DB2 (i-Series/IBM DB2/400) 6.1 n/a
OGG Core 11.2.1.0.2+ IBM AS400 AS400 7.1 64 bit DB2 (i-Series/IBM DB2/400) 7.1 n/a
OGG Core 11.2.1.0.2+ POWER AIX 5.3 (TL8+) 64 bit PostgreSQL 8.3
PostgreSQL 8.4
PostgreSQL 9.0
PostgreSQL 9.1
Sybase 15.0
Sybase 15.5
Teradata v13
Teradata v13.10
Teradata v14
n/a
OGG Core 11.2.1.0.2+ POWER AIX 6.1 (TL2+) 64 bit PostgreSQL 8.3
PostgreSQL 8.4
PostgreSQL 9.0
PostgreSQL 9.1
Sybase 15.0
Sybase 15.5
Teradata v13
Teradata v13.10
Teradata v14
n/a
OGG Core 11.2.1.0.2+ POWER AIX 7.1 (TL2+) 64 bit PostgreSQL 8.3
PostgreSQL 8.4
PostgreSQL 9.0
PostgreSQL 9.1
Sybase 15.0
Sybase 15.5
Teradata v13
Teradata v13.10
Teradata v14
n/a
OGG Core 11.2.1.0.2+ SPARC Solaris 10 Update 4+ 64 bit PostgreSQL 8.3
PostgreSQL 8.4
PostgreSQL 9.0
PostgreSQL 9.1
Teradata v13
Teradata v13.10
Teradata v14
n/a
OGG Core 11.2.1.0.2+ SPARC Solaris 11 (All Update Levels Included) 64 bit PostgreSQL 8.3
PostgreSQL 8.4
PostgreSQL 9.0
PostgreSQL 9.1
Teradata v13
Teradata v13.10
Teradata v14
n/a
OGG Core 11.2.1.0.2+ SPARC Solaris 2.9 Update 9+ 64 bit PostgreSQL 8.3
PostgreSQL 8.4
PostgreSQL 9.0
PostgreSQL 9.1
Teradata v13
Teradata v13.10
Teradata v14
n/a
OGG Core 11.2.1.0.2+ x64 Oracle Linux 4 (UL7+) 64 PostgreSQL 8.3
PostgreSQL 8.4
PostgreSQL 9.0
PostgreSQL 9.1
IBM DB2/400 6.1
IBM DB2/400 7.1
Teradata v13
Teradata v13.10
Teradata v14
1. For Oracle Linux 4 (UL7+) on Oracle VM, minimum update level required is Oracle Linux 4 (UL7+) on Oracle VM 2.1.2+.
OGG Core 11.2.1.0.2+ x64 Oracle Linux 5 (UL3+) 64 PostgreSQL 8.3
PostgreSQL 8.4
PostgreSQL 9.0
PostgreSQL 9.1
IBM DB2/400 6.1
IBM DB2/400 7.1
Teradata v13
Teradata v13.10
Teradata v14
1. For Oracle Linux 5 (UL3+) on Oracle VM, minimum update level required is Oracle Linux 5 (UL3+) on Oracle VM 2.1.2+.
OGG Core 11.2.1.0.2+ x64 Oracle Linux 6 (UL1+) 64 bit PostgreSQL 8.3
PostgreSQL 8.4
PostgreSQL 9.0
PostgreSQL 9.1
IBM DB2/400 6.1
IBM DB2/400 7.1
Teradata v13
Teradata v13.10
Teradata v14
1. Support is with UEK: Unbreakable Enterprise Kernel and Red Hat Compatible Kernel.
OGG Core 11.2.1.0.2+ x64 Red Hat EL 4 (UL7+) 64 PostgreSQL 8.3
PostgreSQL 8.4
PostgreSQL 9.0
PostgreSQL 9.1
IBM DB2/400 6.1
IBM DB2/400 7.1
Teradata v13
Teradata v13.10
Teradata v14
1. Running Red Hat EL 4 (UL7+) on Oracle VM is not supported.
OGG Core 11.2.1.0.2+ x64 Red Hat EL 5 (UL3+) 64 PostgreSQL 8.3
PostgreSQL 8.4
PostgreSQL 9.0
PostgreSQL 9.1
IBM DB2/400 6.1
IBM DB2/400 7.1
Teradata v13
Teradata v13.10
Teradata v14
1. For Red Hat EL 5 (UL3+) on Oracle VM, minimum update level required is Red Hat EL 5 (UL3+) on Oracle VM 2.1.2+
OGG Core 11.2.1.0.2+ x64 Red Hat EL 6 (UL1+) 64 bit PostgreSQL 8.3
PostgreSQL 8.4
PostgreSQL 9.0
PostgreSQL 9.1
IBM DB2/400 6.1
IBM DB2/400 7.1
Teradata v13
Teradata v13.10
Teradata v14
n/a
OGG Core 11.2.1.0.2+ x64 Windows 2003 with SP2+/R2+ 64 bit Teradata v13
Teradata v13.10
Teradata v14
PostgreSQL 9.0
n/a
OGG Core 11.2.1.0.2+ x64 Windows Server 2008 R2 64 bit IBM DB2/400 6.1
IBM DB2/400 7.1                         PostgreSQL 8.3
PostgreSQL 8.4
PostgreSQL 9.0
PostgreSQL 9.1
Teradata v13
Teradata v13.10
Teradata v14
Microsoft SQL Server 2012
SQL Server 2012 is supported for Delivery Only
OGG Core 11.2.1.0.2+ x64 Windows Server 2008 with SP1+ 64 bit IBM DB2/400 6.1
IBM DB2/400 7.1                         PostgreSQL 8.3
PostgreSQL 8.4
PostgreSQL 9.0
PostgreSQL 9.1
Teradata v13
Teradata v13.10
Teradata v14
Microsoft SQL Server 2012
SQL Server 2012 is supported for Delivery Only
OGG Core 11.2.1.0.2+ x86 Oracle Linux 4 (UL7+) 32 bit PostgreSQL 8.3
PostgreSQL 8.4
PostgreSQL 9.0
PostgreSQL 9.1
Teradata v13
Teradata v13.10
Teradata v14
1. For Oracle Linux 4 (UL7+) on Oracle VM, minimum update level required is Oracle Linux 4 (UL7+) on Oracle VM 2.1.2+.
OGG Core 11.2.1.0.2+ x86 Oracle Linux 5 (UL3+) 32 bit PostgreSQL 8.3
PostgreSQL 8.4
PostgreSQL 9.0
PostgreSQL 9.1
Teradata v13
Teradata v13.10
Teradata v14
1. For Oracle Linux 5 (UL3+) on Oracle VM, minimum update level required is Oracle Linux 5 (UL3+) on Oracle VM 2.1.2+.
OGG Core 11.2.1.0.2+ x86 Red Hat EL 4 (UL7+) 32 bit PostgreSQL 8.3
PostgreSQL 8.4
PostgreSQL 9.0
PostgreSQL 9.1
Teradata v13
Teradata v13.10
Teradata v14
1. Running Red Hat EL 4 (UL7+) on Oracle VM is not supported.
OGG Core 11.2.1.0.2+ x86 Red Hat EL 5 (UL3+) 32 bit PostgreSQL 8.3
PostgreSQL 8.4
PostgreSQL 9.0
PostgreSQL 9.1
Teradata v13
Teradata v13.10
Teradata v14
1. For Red Hat EL 5 (UL3+) on Oracle VM, minimum update level required is Red Hat EL 5 (UL3+) on Oracle VM 2.1.2+
OGG Core 11.2.1.0.2+ x86 Windows 2003 32 bit Teradata v13
Teradata v13.10
Teradata v14
n/a
OGG Core 11.2.1.0.2+ x86 Windows Server 2008 with SP1+ 32 bit Teradata v13
Teradata v13.10
Teradata v14
Microsoft SQL Server 2012
SQL Server 2012 is supported for Delivery Only
OGG Core 11.2.1.0.2+ zLinux on zSeries Red Hat EL 5 (UL3+) 64 bit Oracle 10.2.0.4+
Oracle 11.1.0.6+
n/a
OGG Core 11.2.1.0.1+ HP NonStop Itanium (OSS) OSS – H06 and J06 64 bit SQL/MX   2.3 and 3.1 n/a
OGG Core 11.2.1.0.1+ IBM z/OS zOS 1.08 32 bit IBM DB2 8.1
IBM DB2 9.1
IBM DB2 10.1
n/a
OGG Core 11.2.1.0.1+ IBM z/OS zOS 1.09 32 bit IBM DB2 8.1
IBM DB2 9.1
IBM DB2 10.1
n/a
OGG Core 11.2.1.0.1+ IBM z/OS zOS 1.10 32 bit IBM DB2 8.1
IBM DB2 9.1
IBM DB2 10.1
n/a
OGG Core 11.2.1.0.1+ IBM z/OS zOS 1.11 32 bit IBM DB2 8.1
IBM DB2 9.1
IBM DB2 10.1
n/a
OGG Core 11.2.1.0.1+ IBM z/OS zOS 1.12 32 bit IBM DB2 8.1
IBM DB2 9.1
IBM DB2 10.1
n/a
OGG Core 11.2.1.0.1+ Itanium-2 HP-UX 11i (11.23)
B.11.23.0703.059a Base Quality Pack Bundle for HP-UX 11i v2, March 2007+
64 bit Oracle 10.2.0.4+
Oracle 11.1.0.6+
Oracle 11.2.0.1+
n/a
OGG Core 11.2.1.0.1+ Itanium-2 HP-UX 11i (11.31)
B.11.31.0803.318a Base Quality Pack Bundle for HP-UX 11i v3, March 2008+
64 bit Oracle 10.2.0.4+
Oracle 11.1.0.6+
Oracle 11.2.0.1+
IBM DB2 9.1
IBM DB2 9.5
IBM DB2 9.7
Sybase 15.0
Sybase 15.5
n/a
OGG Core 11.2.1.0.1+ PA-RISC HP-UX 11i (11.23)
B.11.23.0703.059a Base Quality Pack Bundle for HP-UX 11i v2, March 2007+
64 bit Oracle 10.2.0.4+
Oracle 11.1.0.6+
Oracle 11.2.0.1+
n/a
OGG Core 11.2.1.0.1+ PA-RISC HP-UX 11i (11.31)
B.11.31.0803.318a Base Quality Pack Bundle for HP-UX 11i v3, March 2008+
64 bit Oracle 10.2.0.4+
Oracle 11.1.0.6+
Oracle 11.2.0.1+
IBM DB2 9.1
Sybase 15.0
Sybase 15.5
n/a
OGG Core 11.2.1.0.1+ POWER AIX 5.3 (TL8+) 64 bit Oracle 10.2.0.4+
Oracle 11.1.0.7+
Oracle 11.2.0.1+
IBM DB2 9.1
IBM DB2 9.5
IBM DB2 9.7
IBM DB2REMOTE 9.5
n/a
OGG Core 11.2.1.0.1+ POWER AIX 6.1 (TL2+) 64 bit Oracle 10.2.0.4+
Oracle 11.1.0.7+
Oracle 11.2.0.1+
IBM DB2 9.1
IBM DB2 9.5
IBM DB2 9.7
IBM DB2REMOTE 9.5
n/a
OGG Core 11.2.1.0.1+ POWER AIX 7.1 (TL2+) 64 bit Oracle 10.2.0.4+
Oracle 11.1.0.7+
Oracle 11.2.0.1+
n/a
OGG Core 11.2.1.0.1+ SPARC Solaris 10 Update 4+ 64 bit Oracle 10.2.0.4+
Oracle 11.1.0.6+
Oracle 11.2.0.1+
IBM DB2 9.1
IBM DB2 9.5
IBM DB2 9.7
Sybase 15.0
Sybase 15.5
MySQL 5.1
n/a
OGG Core 11.2.1.0.1+ SPARC Solaris 11 (All Update Levels Included) 64 bit Oracle 11.2.0.1+ n/a
OGG Core 11.2.1.0.1+ SPARC Solaris 2.9 Update 9+ 64 bit Oracle 10.2.0.4+
Oracle 11.1.0.6+
Oracle 11.2.0.1+
IBM DB2 9.1
IBM DB2 9.5
IBM DB2 9.7
Sybase 15.0
Sybase 15.5
n/a
OGG Core 11.2.1.0.1+ x64 Oracle Linux 4 (UL7+) 64 Oracle 10.2.0.4+
Oracle 11.1.0.6+
IBM DB2 9.1
IBM DB2REMOTE 9.5
Sybase 15.0
Sybase 15.5
1. For Oracle Linux 4 (UL7+) on Oracle VM, minimum update level required is Oracle Linux 4 (UL7+) on Oracle VM 2.1.2+.
OGG Core 11.2.1.0.1+ x64 Oracle Linux 5 (UL3+) 64 Oracle 10.2.0.4+
Oracle 11.1.0.6+
IBM DB2 9.1
IBM DB2 9.5
IBM DB2 9.7
IBM DB2REMOTE 9.5
Sybase 15.0
Sybase 15.5
MySQL 5.1
MySQL 5.5
1. For Oracle Linux 5 (UL3+) on Oracle VM, minimum update level required is Oracle Linux 5 (UL3+) on Oracle VM 2.1.2+.
OGG Core 11.2.1.0.1+ x64 Oracle Linux 6 (UL1+) 64 bit Oracle 10.2.0.4+
Oracle 11.1.0.6+
Oracle 11.2.0.1+
1. Support is with UEK: Unbreakable Enterprise Kernel and Red Hat Compatible Kernel.
OGG Core 11.2.1.0.1+ x64 Red Hat EL 4 (UL7+) 64 Oracle 10.2.0.4+
Oracle 11.1.0.6+
IBM DB2 9.1
IBM DB2 9.5
IBM DB2REMOTE 9.5
Sybase 15.0
Sybase 15.5
1. Running Red Hat EL 4 (UL7+) on Oracle VM is not supported.
OGG Core 11.2.1.0.1+ x64 Red Hat EL 5 (UL3+) 64 Oracle 10.2.0.4+
Oracle 11.1.0.6+
IBM DB2 9.1
IBM DB2 9.5
IBM DB2 9.7
IBM DB2REMOTE 9.5
Sybase 15.0
Sybase 15.5
MySQL 5.5
1. For Red Hat EL 5 (UL3+) on Oracle VM, minimum update level required is Red Hat EL 5 (UL3+) on Oracle VM 2.1.2+
OGG Core 11.2.1.0.1+ x64 Red Hat EL 6 (UL1+) 64 bit Oracle 10.2.0.4+
Oracle 11.1.0.6+
Oracle 11.2.0.1+
n/a
OGG Core 11.2.1.0.1+ x64 Solaris 10 Update 6+ 64 bit Oracle 10.2.0.4+
Oracle 11.1.0.6+
Oracle 11.2.0.1+
IBM DB2 9.1
IBM DB2 9.5
IBM DB2 9.7
Sybase 15.0
Sybase 15.5
n/a
OGG Core 11.2.1.0.1+ x64 Solaris 11 (All Update Levels Included) 64 bit Oracle 11.2.0.1+ n/a
OGG Core 11.2.1.0.1+ x64 Windows 2003 with SP2+/R2+ 64 bit Oracle 10.2.0.4+
Oracle 11.1.0.6+
Oracle 11.2.0.1+
Microsoft SQL Server 2008
Microsoft SQL Server 2008 R2
IBM DB2 9.1
IBM DB2 9.5
IBM DB2 9.7
IBM DB2REMOTE 9.5
Sybase 15.0
Sybase 15.5
n/a
OGG Core 11.2.1.0.1+ x64 Windows Server 2008 R2 64 bit Oracle 10.2.0.4+
Oracle 11.2.0.1+
Microsoft SQL Server 2008
Microsoft SQL Server 2008 R2
MySQL 5.1
MySQL 5.5
IBM DB2 9.1
IBM DB2 9.5
IBM DB2 9.7
IBM DB2REMOTE 9.5
Sybase 15.0
Sybase 15.5
n/a
OGG Core 11.2.1.0.1+ x64 Windows Server 2008 with SP1+ 64 bit Oracle 10.2.0.4+
Oracle 11.1.0.6+
Oracle 11.2.0.1+
Microsoft SQL Server 2008
Microsoft SQL Server 2008 R2
IBM DB2 9.1
IBM DB2 9.5
IBM DB2 9.7
IBM DB2REMOTE 9.5
Sybase 15.0
Sybase 15.5
n/a
OGG Core 11.2.1.0.1+ x86 Oracle Linux 4 (UL7+) 32 bit Oracle 10.2.0.4+
Oracle 11.1.0.6+
Oracle 11.2.0.1+
IBM DB2 9.1
IBM DB2 9.5
MySQL 5.1
Sybase 15.0
Sybase 15.5
1. For Oracle Linux 4 (UL7+) on Oracle VM, minimum update level required is Oracle Linux 4 (UL7+) on Oracle VM 2.1.2+.
2. MySQL 5.0 supports Delivery only.
OGG Core 11.2.1.0.1+ x86 Oracle Linux 5 (UL3+) 32 bit Oracle 10.2.0.4+
Oracle 11.1.0.6+
Oracle 11.2.0.1+
IBM DB2 9.1
IBM DB2 9.5
IBM DB2 9.7
MySQL 5.1
MySQL 5.5
Sybase 15.0
Sybase 15.5
1. For Oracle Linux 5 (UL3+) on Oracle VM, minimum update level required is Oracle Linux 5 (UL3+) on Oracle VM 2.1.2+.
2. MySQL 5.0 supports Delivery only.
OGG Core 11.2.1.0.1+ x86 Red Hat EL 4 (UL7+) 32 bit Oracle 10.2.0.4+
Oracle 11.1.0.6+
Oracle 11.2.0.1+
IBM DB2 9.1
IBM DB2 9.5
MySQL 5.1
MySQL 5.5
Sybase 15.0
Sybase 15.5
1. Running Red Hat EL 4 (UL7+) on Oracle VM is not supported.
2. MySQL 5.0 supports Delivery only.
OGG Core 11.2.1.0.1+ x86 Red Hat EL 5 (UL3+) 32 bit Oracle 10.2.0.4+
Oracle 11.1.0.6+
Oracle 11.2.0.1+
IBM DB2 9.1
IBM DB2 9.5
IBM DB2 9.7
MySQL 5.1
MySQL 5.5
Sybase 15.0
Sybase 15.5
1. For Red Hat EL 5 (UL3+) on Oracle VM, minimum update level required is Red Hat EL 5 (UL3+) on Oracle VM 2.1.2+.
2. MySQL 5.0 supports Delivery only.
OGG Core 11.2.1.0.1+ x86 Windows 2003 32 bit Oracle 10.2.0.4+
Oracle 11.1.0.6+
Oracle 11.2.0.1+
Microsoft SQL Server 2008
Microsoft SQL Server 2008 R2
MySQL 5.1
IBM DB2 9.1
IBM DB2 9.5
IBM DB2 9.7
IBM DB2REMOTE 9.5
Sybase 15.0
Sybase 15.5
n/a
OGG Core 11.2.1.0.1+ x86 Windows Server 2008 with SP1+ 32 bit IBM DB2 9.1
IBM DB2 9.5
IBM DB2 9.7
IBM DB2REMOTE 9.5
Oracle 10.2.0.4+
Oracle 11.1.0.6+
Oracle 11.2.0.1+
Microsoft SQL Server 2008
Microsoft SQL Server 2008 R2
n/a
OGG Core 11.2.1.0.0+ x64 Oracle Linux 4 (UL7+) 64 Oracle 11.2.0.1+ 1. For Oracle Linux 4 (UL7+) on Oracle VM, minimum update level required is Oracle Linux 4 (UL7+) on Oracle VM 2.1.2+.
OGG Core 11.2.1.0.0+ x64 Oracle Linux 5 (UL3+) 64 Oracle 11.2.0.1+ 1. For Oracle Linux 5 (UL3+) on Oracle VM, minimum update level required is Oracle Linux 5 (UL3+) on Oracle VM 2.1.2+.
OGG Core 11.2.1.0.0+ x64 Red Hat EL 4 (UL7+) 64 Oracle 11.2.0.1+ 1. Running Red Hat EL 4 (UL7+) on Oracle VM is not supported.
OGG Core 11.2.1.0.0+ x64 Red Hat EL 5 (UL3+) 64 Oracle 11.2.0.1+ 1. For Red Hat EL 5 (UL3+) on Oracle VM, minimum update level required is Red Hat EL 5 (UL3+) on Oracle VM 2.1.2+

ARCHIVEDLOGONLY TRANLOGOPTIONS

TRANLOGOPTIONS ARCHIVEDLOGONLY

Causes Extract to read from the archived logs only, without querying or validating the logs from system views such as v$log and v$archived_log. If this parameter is specified or the database is a standby database, you will be required to position the starting position of Extract to the physical address in the log, instead of using a timestamp.

 

TRANLOGOPTIONS ARCHIVEDLOGONLY
TRANLOGOPTIONS ALTARCHIVELOGDEST /oracle/g01/bkup01/archive/

 

Object ID Database – Object Database

The basic steps are the following:

  1. Initial Database setup
    1. Add GGS user to source DB
    2. Add/Check database level for supplemental logging.
    3. Add supplemental logging to tables needed in extract
  2. Make backup of primary DB – core tablespaces only
    1. This can be using RMAN, BCV splits, O.S. copy, Hot backup etc.
    2. System tablespace
    3. Rollback tablespace
    4. Temp tablespace
  3. Create standby controlfile
  4. Copy any archive log files to target system
  5. Copy Datafiles to like system
    1. Should be same structure of you will need to add parameters to map directory names
    2. Copy standby control file
  6. Startup standby DB no mount status

a. Offline drop any non-system, rollback datafiles 7. Startup mount DB

a. Recover database (standby recovery)

  1. Once recovery is until current time or last available archive file
    1. Open database read only
    2. If database needs more recovery before DB will open you need to check if ADVReplication is on for the source BD – Set in standby parameter file –

      replication_dependency_tracking = FALSE

    3. If ADV Rep is on you will need to disable it.
  2. Once DB is open you can start GGS.

10.

If the archived logs reside in a location other than the Oracle default, specify the
location with the ALTARCHIVELOGDEST option of the TRANLOGOPTIONS parameter in the Extract parameter file. This parameter is supported for RAC installations in release 10 and higher.

GoldenGate OGG altarchivelogdest参数介绍

altarchivelogdest

Oracle日志的读取 归档日志

  • 缺省查询数据库中归档日志位置和格式并到指定位置查找对应归档日志文件
  • 可通过参数指定归档日志

–TRANLOGOPTIONS {

[ALTARCHIVEDLOGFORMAT <string>] [INSTANCE <instance_name>] [THREADID <id>]

  • 指定日志文件名的格式

[ALTARCHIVELOGDEST [PRIMARY] [INSTANCE <instance_name>] <path name>]

  • 指定归档日志目录。如果是RAC,需要访问到所有节点归档日志,可使用共享文件系统或者使用nfs等将其它节点归档共享到运行节点
  • 如果为所有节点指定了归档日志目录,则可以使用PRIMARY参数告诉GoldenGate无需再去查询log_archive_dest_N

–可以通过降低进程对控制文件访问次数

  • 注意:OGG无法读取经压缩过的归档日志文件

 

TRANLOGOPTIONS ARCHIVEDLOGONLY

TRANLOGOPTIONS ALTARCHIVELOGDEST primary INSTANCE abv61 /ora_arch1,ALTARCHIVELOGDEST INSTANCE abv62 /ora_arch2

FETCHOPTIONS NOUSESNAPSHOT, NOUSELATESTVERSION, MISSINGROW REPORT

 

TRANLOGOPTIONS ALTARCHIVELOGDEST [PRIMARY] [INSTANCE

instance_name] <path name>

Valid for Oracle (single instance and RAC). Points Extract to the archived logs when they reside somewhere other than the default location. Extract first checks the default location, then the location specified with this parameter. <path name> specifies the fully qualified path to the archived logs. This directory must be NFS mounted to the node where GoldenGate is running.

Use that mount point for ALTARCHIVELOGDEST. INSTANCE <instance_name> applies the specified ALTARCHIVELOGDEST behavior to a specific Oracle instance. On RAC, if this option is used, you must specify the ALTARCHIVELOGDEST parameter on each node.

采用OGG Goldengate实现Oracle与MySQL之间的复制

本文永久地址:https://www.askmac.cn/archives/goldengate-oracle-mysql.html

 

采用OGG Goldengate实现Oracle与MySQL之间的复制

 

一、安装Goldengate

  1. 根据MySQL版本及操作系统版本,下载合适的MySQL安装介质,本例中操作系统为Windows XP,MySQL版本为1.42,因此,下载“Oracle GoldenGate V11.1.1.0.3 for MySQL 5.x on Windows 2003, 2008.zip”,文件大小约14MB;
  2. 将上述zip文件展开到OGG安装目录,本例为D:\Oracle\GGS11g_MySQL;
  3. 进入目录D:\Oracle\GGS11g_MySQL,执行“ggsci”进入OGG命令行,执行如下命令创建子目录:

Ggsci> create subdirs

  1. 在OGG命令行下执行如下命令,为OGG管理器命名:

Ggsci> EDIT PARAM ./GLOBALS

在文件中,添加如下一行,并保存:

MGRSERVNAME GGSMYSQL

  1. 配置OGG mgr参数:

Ggsci> EDIT PARAM MGR

在文件中,添加如下内容,并保存:

port 8809

DYNAMICPORTLIST 8840-8850

autorestart er *, retries 5, waitminutes 1

purgeoldextracts  /ggs/dirdat/*,usecheckpoints, minkeepdays 3

  1. 启动OGG mgr:

Ggsci> strat mgr

 

目标端Oracle数据库的Goldengate安装,除了介质不同,与上述安装步骤相同,在此不再赘述。

 

二、安装并准备MySQL数据库

  1. 下载并安装MySQL V5.1.42,本例中安装目录为D:\Oracle\MySQL5.1.42;
  2. 设置环境变量MYSQL_HOME,指向D:\Oracle\MySQL5.1.42;使得Goldengate EXTRACT进程可以根据这个环境变量找到MySQL配置文件ini(其他平台为my.conf);
  3. 在MySQL配置文件ini中设置下列参数:
    • 将log-bin设置为一个目录和日志文件格式,如下例日志文件名为00001、test.00002等,目录为“D:/Oracle/MySQL5.1.42/logs/test.bin”

log-bin=”D:/Oracle/MySQL5.1.42/logs/test.bin”

  • 设置max_binlog_size规定binary日志文件尺寸(以字节为单位),最小值应该为4096

max_binlog_size=10000000

  • 将binlog_format设置为ROW。设为ROW使得DML语句以binary格式记入日志,任何其他日志格式(mixed或statement)将引起EXTRACT进程停止。

binlog_format=row

  1. 重新启动MySQL服务器。
  2. 执行如下命令:

Shell> mysql –u root –p

Enter password: root

mysql> use test

Database changed

mysql> create table test1(id varchar(10) primary key, name varchar(20));

Query OK, 0 rows affected (0.06 sec)

 

 

三、配置Goldengate进程

在MySQL源端配置EXTRACT抽取进程和DATAPUMP数据泵进程。三个进程的参数文件样例如下。

  1. 源端添加EXTRACT进程exta:
    1. add extract exta, tranlog, begin now
    2. edit param exta

源端EXTRACT进程参数文件:

–日志捕获进程

extract exta
dboptions host localhost, connectionport 3306
sourcedb test, userid root, password root
exttrail ./dirdat/ea
–数据库对象

table TEST.TEST1;

  1. add exttrail ./dirdat/ea, extract exta, megabytes 10
  2. start exta
  3. info exta,确认状态为RUNNING,否则查找解决错误

 

  1. 源端添加Data Pump进程dmpa:
    1. add extract dmpa, exttrailsource ./dirdat/ea
    2. edit param dmpa

源端数据泵进程参数文件:

extract  dmpa
rmthost 127.0.0.1, mgrport 7809
rmttrail ./dirdat/ra
passthru
table TEST.TEST1;

 

  1. add rmttrail ./dirdat/ra, extract dmpa, megabytes 10
  2. start dmpa
  3. info dmpa, 确认状态为RUNNING,否则查找解决错误

 

  1. 在MySQL端生成def文件,复制到目标端
    1. Ggsci> edit param defgen

defsfile ./dirdef/mysql.def, purge

dboptions host localhost, connectionport 3306

sourcedb test, userid root, password root

table test.test1;

  1. Shell> defgen paramfile ./dirprm/defgen.prm
  2. 将生成的def文件ftp或复制到目标端Goldengate子目录dirdef下。

 

  1. 目标端添加应用进程repa:

本例中目标为Oracle数据库信息为127.0.0.1:1521:xe。数据库用户为test,目标表为ora_test1:

create table ora_test1(id varchar2(10) primary key, name varchar2(20));

  1. add replicat repa, exttrail ./dirdat/ra nodbcheckpoint
  2. edit param repa

目标段交付进程参数文件:

REPLICAT REPA

USERID goldengate, PASSWORD goldengate

SOURCEDEFS ./dirdef/mysql.def

ASSUMETARGETDEFS

DISCARDFILE ./dirrpt/ra.dsc, PURGE

MAP TEST.TEST1, TARGET test.ora_test1;

 

  1. start repa, 确认状态为RUNNING,否则查找解决错误。

 

四、测试Goldengate

  1. 执行如下命令,在MySQL表test1中插入三条记录:

Shell> mysql –u root –p

Enter password: root

mysql> use test

Database changed

mysql> insert into test1 values(‘1′,’User1’);

Query OK, 1 row affected (0.00 sec)

mysql> insert into test1 values(‘2′,’User2’);

Query OK, 1 row affected (0.02 sec)

mysql> insert into test1 values(‘3′,’User3’);

Query OK, 1 row affected (0.00 sec)

  1. 在目标端Oracle数据库上执行如下命令,查询是否同步了3条记录:

Shell> sqlplus test/test

SQL> select * from ora_test1;

 

OGG GoldenGate 故障诊断手册Troubleshooting handbook

 

本文地址:https://www.askmac.cn/archives/ogg-goldengate-%E6%95%85%E9%9A%9C%E8%AF%8A%E6%96%AD%E6%89%8B%E5%86%8Ctroubleshooting-handbook.html

OGG GoldenGate 故障诊断手册Troubleshooting handbook

1       前期准备

前期准备可以避免很多不必要的错误,因此在实施之前可以尽量完成以下准备工作。

1.1     操作系统环境变量

HP-UX:export LD_LIBRARY_PATH=/ggs/11.1:$LD_LIBRARY_PATH

AIX:export LIBPATH=/ggs/11.1:$LIBPATH

这里要注意,将GoldenGate安装目录放在LD_LIBRARY_PATH/LIBPATH环境变量最前面

1.2     GoldenGate运行操作系统用户

建议使用oracle用户运行GoldenGate,oracle用户已将oracle相关环境变量设置好,包括lib相关的环境变量。如果使用独立的GoldenGate用户,可以将oracle用户的环境变量复制到profile文件中,额外添加lib包相关的内容。

1.3     操作系统资源使用限制

使用操作系统命令:ulimit –a

查看相应的系统资源使用限制,通过修改/etc/security/limits文件,建议都设置unlimitied。如果不能全部设置为unlimited,必须将以下参数设置为unlimited:

max memory size       (kbytes, -m) unlimited

file size               (blocks, -f) unlimited

data seg size           (kbytes, -d) unlimited

cpu time              (seconds, -t) unlimited

stack size              (kbytes, -s) unlimited

很多情况下出现问题,和stack没有设置成unlimited有关。

 

1.4     源数据库必须启动归档模式并开启附加日志

1.4.1 Oracle数据库

Oracle数据库开启归档模式,数据库需要重启,步骤如下:

SQL> SELECT LOG_MODE FROM V$DATABASE;

SQL> SHUTDOWN IMMEDIATE

SQL> STARTUP MOUNT;

SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST=’/U01/archive’;

SQL> ALTER DATABASE ARCHIVELOG;

SQL> ALTER DATABASE OPEN;

SQL> ARCHIVE LOG LIST;

SQL> ALTER SYSTEM SWITCH LOGFILE;

SQL> ALTER SYSTEM ARCHIVE LOG CURRENT;

SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;

SQL> SELECT SUPPLEMENTAL_LOG_DATA_MIN FROM V$DATABASE;

 

1.4.2 DB2数据库

无论DB2 8还是DB2 9系列都需要重启数据库

DB2 8系列:必须设置USEREXIT和LOGRETAIN参数

db2 update db cfg for <database name> using USEREXIT ON

db2 update db cfg for <database name> using LOGRETAIN ON

DB2 9系列:可以不使用USEREXIT和LOGRETAIN参数,而是使用LOGARCHMETH1和LOGARCHMETH2参数开启归档模式,但是LOGRETAIN仍需设置为ON

1.5     AIX XL C版本

AIX 5.3 需要XL C/C++ Runtime v10.1以上以及libpthreads version 5.3.0.51或以上,libpthreads属于基础包,基本都会满足。

AIX 5.2 需要XL C/C++ Runtime v9.0以上以及libpthreads version 5.2.0.106或以上,libpthreads属于基础包,基本都会满足。

很多情况XL C版本为9.0以下,此时必须升级XL C版本(askmac.cn)

1.6     HP-UX aCC版本

On HP-UX 11.23 IA64, Oracle GoldenGate requires aCC: HP aC++/ANSI C B3910B

A.06.05 or newer aC++ libraries. PHSS_34041 or newer is required.

 

1.7     Windows C++版本

这里要注意,GoldenGate的版本是和数据库和操作系统相关的,如果是64位的OS,结果安装了32位的数据库,必须使用32位的GoldenGate和32位的C++ 2005 sp1 redistributable package。

32位下载地址:

http://www.microsoft.com/downloadS/details.aspx?displaylang=zh-cn&FamilyID=200b2fd9-ae1a-4a14-984d-389c36f85647

64位下载地址:

http://www.microsoft.com/downloads/en/details.aspx?displaylang=en&FamilyID=eb4ebe2d-33c0-4a47-9dd4-b9a6d7bd44da

1.8     GoldenGate安装目录

OGG安装目录建议在存储阵列上,但是在mount时需注意,不能使用并发参数,例如:在AIX下, 不能使用CIO参数。如果使用已有的mount点,并且使用并发参数,必须新建文件系统,重新mount,作为GoldenGate安装目录。

1.9     RAC相关设置

必须保证GoldenGate可以访问到RAC环境任何一个节点的归档日志,可以采用并行文件系统或NFS,一般采用NFS。

在extract参数文件中指定参数:

TRANLOGOPTIONS altarchivelogdest primary instance ins1 /archive01, altarchivelogdest  instance  ins2 /archive02

1.10        端口设置

在mgr.prm中设置动态端口范围

dynamicportlist 7840-7914

很多没有设置为这个范围,导致容灾中心Director不能观察到网省端的运行状态。

1.11        压缩传输设置

在datapump参数文件中指定压缩参数,否则将占用较大的网络带宽,导致传输时间过长。

RMTHOST 10.100.xx.xx, MGRPORT 7839, compress

1.12        待复制表名设置

在参数文件中建议使用具体要复制的表名称,例如:schema.table_name的方式,便于后期维护。

1.13        队列文件保存期限设置

在mgr.prm文件中进行设置:

PURGEOLDEXTRACTS ./dirdat/*,usecheckpoints, minkeepdays 3

如果空间不够,可将minkeepdays修改为:MINKEEPHOURS。

如果空间仍然紧张,仍要求立即释放空间,可修改为:MINKEEPFILES,将值设置为1,即只保留一个处理过的队列文件。

1.14        抽取及复制分组

针对大的应用系统,需对要复制的表进行分组,例如:营销系统,至少要分6-8个Extract、datapump和replicat进程。任何分组需要和应用系统开发商进行协调。

1.15        AIX使用裸设备

在extract, datapump,replicat参数文件中必须添加:

TRANLOGOPTIONS  RAWDEVICEOFFSET  0

1.16        同步表清单

只同步和应用系统相关的schema下面的表,很多网省的参数文件,直接把所有用户都列在里面,其中很多是数据库本身自己使用的用户,例如:

‘SYS’, ‘SYSTEM’, ‘DBSNMP’,’SYSMAN’,’OUTLN’,’MDSYS’,’ORDSYS’,’EXFSYS’,’DMSYS’,’WMSYS’, ‘CTXSYS’,’ANONYMOUS’,’XDB’,’ORDPLUGINS’,’OLAPSYS’

1.17        临时表排除

很多网省在参数文件中使用shcema.*的方式,这样有很多临时表也会进行复制,经于应用系统开发商确认,TEMP和TMP开头的表根本不需要复制,因此在参数文件中直接排除这些临时表。

extract:

TABLEEXCLUDE SCHEMA.TEMP*

TABLEEXCLUDE SCHEMA.TMP*

replicat:

MAPEXCLUDE SCHEMA.xxx

1.18        UNIX GGSCI需要lib包验证

在GoldenGate安装目录运行:

ldd ggsci

验证所需要的lib包,必须保证全部可以找到。

例如:下面的提示有lib包没有找到

linux-gate.so.1 =>  (0x00c10000)

libdl.so.2 => /lib/libdl.so.2 (0x006d2000)

libicui18n.so.38 => /u01/app/goldengate/libicui18n.so.38 (0x00110000)

libicuuc.so.38 => /u01/app/goldengate/libicuuc.so.38 (0x00cd6000)

libicudata.so.38 => /u01/app/goldengate/libicudata.so.38 (0xb74c3000)

libpthread.so.0 => /lib/libpthread.so.0 (0x006d8000)

libxerces-c.so.28 => /u01/app/goldengate/libxerces-c.so.28 (0x006f0000)

libnnz10.so => not found

libclntsh.so.10.1 => not found

libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x054b9000)

libm.so.6 => /lib/libm.so.6 (0x006a9000)

libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00271000)

libc.so.6 => /lib/libc.so.6 (0x00561000)

/lib/ld-linux.so.2 (0x00543000)

设置相关环境变量或安装缺失的操作系统补丁,确认全部lib包可以找到,如下所示:

$ ldd ggsci

linux-gate.so.1 =>  (0x00af3000)

libdl.so.2 => /lib/libdl.so.2 (0x006d2000)

libicui18n.so.38 => /u01/app/goldengate/libicui18n.so.38 (0x00cb3000)

libicuuc.so.38 => /u01/app/goldengate/libicuuc.so.38 (0x0090e000)

libicudata.so.38 => /u01/app/goldengate/libicudata.so.38 (0xb74d1000)

libpthread.so.0 => /lib/libpthread.so.0 (0x006d8000)

libxerces-c.so.28 => /u01/app/goldengate/libxerces-c.so.28 (0x00110000)

libnnz10.so => /u01/app/oracle/product/10.2.0/db_1/lib/libnnz10.so (0x006f0000)

libclntsh.so.10.1 => /u01/app/oracle/product/10.2.0/db_1/lib/libclntsh.so.10.1 (0x00e14000)

libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x054b9000)

libm.so.6 => /lib/libm.so.6 (0x006a9000)

libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x004bd000)

libc.so.6 => /lib/libc.so.6 (0x00561000)

/lib/ld-linux.so.2 (0x00543000)

libnsl.so.1 => /lib/libnsl.so.1 (0x00a54000)(askmac.cn)

2       常见错误处理

2.1     AIX GGSCI无法运行

错误信息:

Cannot load ICU resource bundle ‘ggMessage’, error code 2 – No such file or directory

Cannot load ICU resource bundle ‘ggMessage’, error code 2 – No such file or directory

IOT/Abort trap (core dumped)

或者ggsci可以启动,但是运行任何命令都报上面的错误。

处理方法:通常使用已有的mount点安装GoldenGate,在mount时使用了并发CIO参数。新建文件系统,重新mount,作为GoldenGate安装目录。

 

错误信息:

$ ./ggsci

exec(): 0509-036 Cannot load program ggsci because of the following errors:

0509-130 Symbol resolution failed for ggsci because:

0509-136   Symbol _GetCatName__FiPCc (number 158) is not exported from dependent module /usr/lib/libC.a[ansi_64.o].

0509-136   Symbol _Getnumpunct__FPCc (number 162) is not exported from dependent module /usr/lib/libC.a[ansi_64.o].

0509-136   Symbol __ct__Q2_3std8_LocinfoFPCci (number 183) is not exported from dependent module /usr/lib/libC.a[ansi_64.o].

0509-192 Examine .loader section symbols with the ‘dump -Tv’ command.

原因是XLC是6.0版本,升级XLC版本到10.1以上,问题解决

2.2     HP-UX GGSCI无法运行

错误信息:core dumped

该问题只在HP-UX11.31上发现。

处理方法:环境变量设置问题,参见“1.1 操作系统环境变量”小节

 

错误信息:aCC runtime: Use of “-mt” must be consistent during both compilation and linking.

IOT core dumped

该问题在HP-UX 11.23上发现,原因是没有C++运行环境

On HP-UX 11.23 IA64, Oracle GoldenGate requires aCC: HP aC++/ANSI C B3910B

A.06.05 or newer aC++ libraries. PHSS_34041 or newer is required.

处理方法:安装补丁包

2.3     OGG-01296

WARNING OGG-01154  Oracle GoldenGate Delivery for Oracle, repyxb.prm:  SQL error 1403 mapping SGPM.P_SMS_SEND to SGPM.P_SMS_SEND.

WARNING OGG-01003  Oracle GoldenGate Delivery for Oracle, repyxb.prm:  Repositioning to rba 2509817 in seqno 1.

ERROR   OGG-01296  Oracle GoldenGate Delivery for Oracle, repyxb.prm:  Error mapping from SGPM.P_SMS_SEND to SGPM.P_SMS_SEND.

ERROR   OGG-01668  Oracle GoldenGate Delivery for Oracle, repyxb.prm:  PROCESS ABENDING.

由于源端进行了表结构更改,没有通知目标端,导致此错误

处理方法:

  • 先确认两端表结构是否一致
  • 在源端查看附加日志是否enable

GGSCI>INFO TRANDATA schema.table_name

返回应该是enable,如果不是,重新添加

GGSCI>ADD TRANDATA schema.table_name

  • 目标端数据库:触发器,约束,job等是否已经禁止
  • 使用logdump查看实际数据,分析原因

2.4     OGG-01154

错误信息:2011-03-29 15:53:57  WARNING OGG-01154  Oracle GoldenGate Delivery for Oracle, repya.prm:  SQL error 14402 mapping EPMA.D_METER to E

PMA.D_METER OCI Error ORA-14402: updating partition key column would cause a partition change (status = 14402), SQL <UPDATE “EPMA”.”D_METER” SET “PR_ORG” = :a1,”BELONG_DEPT” = :a2 WHERE “METER_ID” = :b0>.

处理方法:SQLPLUS>alter table SCHEMA.TABLENAME enable row movement

2.5     OGG-01088

错误信息:

ERROR   OGG-01088  Oracle GoldenGate Delivery for Oracle, pms_rep1.prm:  malloc 2097152 bytes failed.

ERROR   OGG-01668  Oracle GoldenGate Delivery for Oracle, pms_rep1.prm:  PROCESS ABENDING.

处理方法:

  • ulimit -a,验证操作系统对用户是否所有资源都是无限制,参见3小节。
  • 将进程进行拆分,拆分为多个进程。
  • 从oracle.com下载最新的补丁包,升级GoldenGate。

2.6     OGG-01224

ERROR OGG-01224 Oracle GoldenGate Manager for Oracle, mgr.prm: No buffer space available

ERROR OGG-01224  Oracle GoldenGate Capture for Oracle, dpema.prm:  TCP/IP error 9 (Bad fil e number).

修改mgr.prm,扩大动态端口范围,dynamicportlist 7840-7914

2.7     OGG-01031

ERROR   OGG-01031  There is a problem in network communication, a remote file problem, encryption keys for target and source do not match (if using ENCRYPT) or an unknown error. (Reply received is Expected 4 bytes, but got 0 bytes, in trail ./dirdat/t1000026, seqno 26, reading record trailer token at RBA 103637218).

2011-01-06 11:04:16  ERROR   OGG-01668  PROCESS ABENDING.

处理方法:

可能是网络出现过故障,OGG源端的Data Pump进程与目标断了联系,目标端mgr为其启动的server进程一直还在运行,下次data pump重启时目标mgr会试图生成另外一个server进程,这样两个进程会争同一个队列文件。处理方法是停掉源端的所有data pump,使用ps –ef|grep server(或OGG安装目录)看看是不是还有OGG的server进程在跑,如果有,杀死它(一定要确认源端data pump全停掉,并且杀的是server进程,不要杀其它extract/replicat/mgr等),重启源端data pump即可。

 

可能是目标端的trail file出问题了,前滚重新生成一个新的队列文件

SEND EXTRACT xxx ETROLLOVER

或者:alter extract xxx etrollover

xxx为datapump的名称

2.8     OGG-01072

ERROR OGG-01072 LOBROW_get_next_chunk(LOBROW_row_t *, BOOL, BOOL, BOOL, LOBROW_chunk_header_t *, char *, size_t, BOOL, *) Buffer overflow, needed:132, alloc 2.

处理方法:

  • 如果版本为1.1.0.1 Build 078版本,升级到最新的补丁包
  • 使用ulimit –a查看资源使用限制,调整资源为unlimited
  • extract: DBOPTIONS LOBBUFSIZE <bytes>
  • replicat: DBOPTIONS LOBWRITESIZE 1MB

2.9     OGG-01476

ERROR   OGG-01476  The previous run abended due to an out of order transaction. Issue ALTER ETROLLOVER to advance the output trail sequence past the current trail sequence number, then restart. Then, use ALTER EXTSEQNO on the subsequent pump EXTRACT, or REPLICAT, process group to start reading from the new trail file created by ALTER ETROLLOVER; the downstream process will not automatically switch to the new trail file.

在初始化的时候,由于容灾端没有准备就绪,在生产端来回进行了很多次的操作,导致生产端抽取混乱,此时在进行RMAN之前,重新启动抽取,忽略调之前的混乱信息。

处理方法:

RAC环境,查看时钟是否同步

参数文件增加:

THREADOPTIONS MAXCOMMITPROPAGATIONDELAY 7000 IOLATENCY 7000

7000可以进行大小调整

如果还有问题:

alter extract xxx, etrollover

## 启动data pump进程后,datapump会报错,错误信息大致是进程当前的队列文件(假设是65)已经读完,但是找不到文件结尾标志,同时又发现新的队列文件(假设是66)已经生成。这个时候应该手工将datapump滚动到这个新的队列文件头(66)

##修改Data Pump从新的队列开始传输

stop [pump_name]

ALTER EXTRACT [pump_name], EXTSEQNO ##### EXTRBA 0

start [pump_name]

注:用实际的datapump进程名代替 [pump_name],用新的队列文件号代替#####

##重启Data Pump查看是否能够重启成功并从新的队列传输

 

##启动Replicat,观察其是否能够读取新传输过来的队列

 

##如Replicat无法自动滚动到下一个队列,需要通过命令手工滚动

stop [replicat_name]

alter replicat [replicat_name], EXTSEQNO ##### EXTRBA 0

start [replicat_name]

注:用实际的replicat进程名代替 [replicat_name],用新的队列文件号代替#####

 

##重新启动Replicat即可恢复正常复制

 

2.10        OGG-00850

ERROR   OGG-00850  Oracle GoldenGate Capture for DB2, extxa.prm:  Database instance XP1 has both USEREXIT and LOGRETAIN set to off.

ERROR   OGG-01668  Oracle GoldenGate Capture for DB2, extxa.prm:  PROCESS ABENDING.

处理方法:

如果是DB2 8.1/8.2,必须将USEREXIT和LOGRETAIN设置为ON。

如果是DB2 9.5,已经使用LOGARCHMETH1和LOGARCHMETH2代替以上两个参数,通常LOGARCHMETH1为DISK,LOGARCHMETH2为TSM,采用这两个参数开启归档模式。在DB2 9.5中,USEREXIT可以设置为OFF,但是LOGRETAIN仍需设置为ON。

因此LOGARCHMETH1需设置为LOGRETAIN,LOGARCHMETH2设置为OFF

经过现场测试:LOGARCHMETH1=TSM and LOGARCHMETH2=OFF 可以正常工作

2.11        OGG-01416

ERROR   OGG-01416  Oracle GoldenGate Capture for Oracle, dpeya.prm:  File ./dirdat/ya001542, with format RELEASE 9.0/9.5, does not match current format specification of RELEASE 10.4/11.1. Modify the parameter file to specify format RELEASE 9.0/9.5 or issue ETROLLOVER prior to restart.

2011-03-14 15:04:12  ERROR   OGG-01668  Oracle GoldenGate Capture for Oracle, dpeya.prm:  PROCESS ABENDING.

处理方法:

ALTER EXTRACT xxx etrollover

后续步骤参照OGG-01476进行处理。

## 启动data pump进程后,datapump会报错,错误信息大致是进程当前的队列文件(假设是65)已经读完,但是找不到文件结尾标志,同时又发现新的队列文件(假设是66)已经生成。这个时候应该手工将datapump滚动到这个新的队列文件头(66)

##修改Data Pump从新的队列开始传输

stop [pump_name]

ALTER EXTRACT [pump_name], EXTSEQNO ##### EXTRBA 0

start [pump_name]

注:用实际的datapump进程名代替 [pump_name],用新的队列文件号代替#####

##重启Data Pump查看是否能够重启成功并从新的队列传输

 

##启动Replicat,观察其是否能够读取新传输过来的队列

 

##如Replicat无法自动滚动到下一个队列,需要通过命令手工滚动

stop [replicat_name]

alter replicat [replicat_name], EXTSEQNO ##### EXTRBA 0

start [replicat_name]

注:用实际的replicat进程名代替 [replicat_name],用新的队列文件号代替#####

 

##重新启动Replicat即可恢复正常复制

 

 

2.12        OGG-01027(长事务)

在extract中添加:

WARNLONGTRANS 2h,CHECKINTERVAL 3m

ggserr.log文件中会记录大事务警告

WARNING OGG-01027  Long Running Transaction: XID 82.4.242063, Items 0, Extract YX_EXT1, Redo Thread 1, SCN 2379.2132775890 (10219859973074), Redo Seq #5688, Redo RBA 195997712.

GGSCI> send extract xxx, showtrans [thread n] [count n]

thread n是可选的,表示只查看其中一个节点上的未提交交易;

count n也是可选的,表示只显示n条记录。

例如:查看xxx进程中节点1上最长的10个交易,可以通过下列命令:

GGSCI> send extract extsz , showtrans thread 1 count 10

记录XID,通过DBA查找具体的长交易执行的内容

GGSCI> SEND EXTRACT xxx, SKIPTRANS <82.4.242063> THREAD <2> //跳过交易

GGSCI>SEND EXTRACT xxx, FORCETRANS <82.4.242063> THREAD <1> //强制认为该交易已经提交

使用这些命令只会让GoldenGate进程跳过或者认为该交易已经提交,但并不改变数据库中的交易,他们依旧存在于数据库中。因此,强烈建议使用数据库中提交或者回滚交易而不是使用GoldenGate处理。

查找长事务对应的SQL语句:

XID由三部分组成:XIDUSN.XIDSLOT.XIDSQN

通过以下语句查找对应的SQL语句

select /*+ rule*/b.USERNAME,b.SCHEMANAME,b.OSUSER,b.MACHINE,c.SQL_TEXT

from v$transaction a, v$session b, v$sql c
where a.XIDUSN = 5
and a.XIDSLOT = 42
and a.XIDSQN = 1920
and a.ADDR = b.TADDR
and b.SQL_ADDRESS = c.ADDRESS
and b.SQL_HASH_VALUE = c.HASH_VALUE;

2.13        队列文件保存天数

在mgr.prm中,添加:

PURGEOLDEXTRACTS ./dirdat/*,usecheckpoints, minkeepdays 3

修改之后,必须重启manager即可看到队列文件占用的空间被按照上面指定的规则释放。

如果存储空间不够,可以将minkeepdays修改为MINKEEPHOURS

很多网省源端存储空间不足,这样修改为最小保留的小时数,缓解存储空间不足。

如果空间仍然紧张,仍要求立即释放空间,可修改为:MINKEEPFILES,将值设置为1,即只保留一个处理过的队列文件(不建议使用)。

如果存储空间充裕,建议最少保留3天的队列文件。

2.14        队列文件不自动清除

首先确认manager参数文件mgr.prm中是否添加了定期清除参数:

PURGEOLDEXTRACTS ./dirdat/*,usecheckpoints, minkeepdays 3

修改之后,必须重启manager即可看到队列文件占用的空间被按照上面指定的规则释放。

如果还是没有删除,通过:GGSCI>INFO XXX, SHOWCH,查看是否存在多个Write Checkpoint,一个为相对路径,一个为绝对路径

原因如下:

源端:

在增加extract和datapump时,在GGSCI命令行指定的路径和参数文件中的不一致,如果在命令行使用绝对路径,在参数文件中必须使用绝对路径。如果使用了相对路径,则统一采用相对路径。

目标端:

在GGSCI增加datapump时,RMTTRAIL如果使用了相对路径,在增加replicat时必须使用相对路径。

处理方法:

GGSCI>INFO XXX, SHOWCH

GGSCI>INFO XXX

记录相关信息,删除不正确路径的exttrail

通过alter命令设置为上面INFO信息记录的检查点

GGSCI>alter xxx extseqno INFO看到的序列号, extrba INFO看到的RBA号码, [thread n]

GGSCI>start xxx

举例:

GGSCI > info exttrail dpecw

 

Extract Trail: /ggsfs/dirdat/cw

Extract: DPECW

Seqno: 0

RBA: 0

File Size: 50M

Extract Trail: ./dirdat/cw

Extract: DPECW

Seqno: 365

RBA: 8497768

File Size: 10M

可以看到有两个路径,一个是相对路径./dirdat/cw,一个是绝对路径:/ggsfs/dirdat/cw

GGSCI > stop dpecw

Sending STOP request to EXTRACT DPECW …

Request processed.

 

GGSCI > status dpecw

EXTRACT DPECW: STOPPED

 

GGSCI > info dpecw

EXTRACT    DPECW     Last Started 2011-03-23 11:03   Status STOPPED

Checkpoint Lag       00:00:00 (updated 00:00:09 ago)

Log Read Checkpoint  File /ggsfs/dirdat/cw000365

2011-04-07 14:10:01.000000  RBA 4558731

记录seqno:365和rba:4558731

GGSCI > stop extcw

Sending STOP request to EXTRACT EXTCW …

Request processed.

GGSCI > info exttrail cw*

Extract Trail: /ggsfs/dirdat/cw

Extract: DPECW

Seqno: 0

RBA: 0

File Size: 50M

Extract Trail: ./dirdat/cw

Extract: DPECW

Seqno: 365

RBA: 8497768

File Size: 10M

 

Extract Trail: /ggsfs/dirdat/cw

Extract: EXTCW

Seqno: 0

RBA: 0

File Size: 50M

Extract Trail: ./dirdat/cw

Extract: EXTCW

Seqno: 365

RBA: 4657905

File Size: 10M

可以看到extcw和dpecw都存在问题

删除多余的exttrail

GGSCI > delete exttrail /ggsfs/dirdat/cw

Deleting extract trail /ggsfs/dirdat/cw for extract DPECW

Deleting extract trail /ggsfs/dirdat/cw for extract EXTCW

GGSCI > info exttrail *

Extract Trail: ./dirdat/cw

Extract: DPECW

Seqno: 365

RBA: 8497768

File Size: 10M

Extract Trail: ./dirdat/cw

Extract: EXTCW

Seqno: 365

RBA: 4657905

File Size: 10M

确认已经正常

GGSCI > info extcw

EXTRACT    EXTCW     Last Started 2011-04-07 14:16   Status RUNNING

Checkpoint Lag       00:00:58 (updated 00:00:07 ago)

Log Read Checkpoint  Oracle Redo Logs

2011-04-07 14:15:30  Seqno 10726, RBA 151756800

确认和之前info extcw时的信息一致,启动extcw

GGSCI (ora5502) 18> start extcw

Sending START request to MANAGER …

EXTRACT EXTCW starting

GGSCI > info dpecw

 

EXTRACT    DPECW     Initialized   2011-03-23 11:03   Status STOPPED

Checkpoint Lag       00:00:00 (updated 00:02:19 ago)

Log Read Checkpoint  File /ggsfs/dirdat/cw000365

2011-04-07 14:10:01.000000  RBA 4558731

 

GGSCI > alter dpecw, exttrailsource ./dirdat/cw

EXTRACT altered.

 

GGSCI > info dpecw

 

EXTRACT    DPECW     Initialized   2011-04-07 14:17   Status STOPPED

Checkpoint Lag       00:00:00 (updated 00:00:03 ago)

Log Read Checkpoint  File ./dirdat/cw000000

First Record  RBA 0

 

GGSCI> alter dpecw, extseqno 365, extrba 4558731

EXTRACT altered.

 

GGSCI> info dpecw

 

EXTRACT    DPECW     Initialized   2011-04-07 14:17   Status STOPPED

Checkpoint Lag       00:00:00 (updated 00:00:03 ago)

Log Read Checkpoint  File ./dirdat/cw000365

First Record  RBA 4558731

 

 

GGSCI> start dpecw

Sending START request to MANAGER …

EXTRACT DPECW starting

GGSCI (ora5502) 31> info dpecw

EXTRACT    DPECW     Last Started 2011-04-07 14:18   Status RUNNING

Checkpoint Lag       00:00:00 (updated 00:00:29 ago)

Log Read Checkpoint  File ./dirdat/cw000365

First Record  RBA 4558731

2.15        复制进程拆分及指定队列文件及RBA

拆分前通过INFO XXX获取队列文件信息及RBA号,返回样例如下:

GGSCI> INFO REPYXA

REPLICAT   REPYXA    Last Started 2011-01-08 19:48   Status RUNNING

Checkpoint Lag       00:00:00 (updated 00:01:42 ago)

Log Read Checkpoint  File ./dirdat/p1000556 First Record  RBA 59193235

在将replicat进程拆分后,指定从拆分前的队列文件及RBA号码开始复制。

ALTER REPLICAT xxx EXTSEQNO nnn, EXTRBA mmm

以上面的为例:ALTER REPLICAT REPYXA 556, EXTRBA 59193235

2.16        BOUNDED RECOVERY

错误信息:BOUNDED RECOVERY: reset to initial or altered checkpoint.

数据库问题,不能读取第2个节点的archivelog文件

2.17        排除不复制的表

在参数文件中增加:

TABLEEXCLUDE schema.table_name

2.18        从指定时间重新抓取

重新抓取数据前提:归档文件没有删除

ALTER EXTRACT xxx, TRANLOG, BEGIN 2010-12-31 08:00

时间格式:yyyy-mm-dd [hh:mi:[ss[.cccccc]]]

如果是新建:ADD EXTRACT xxx, TRANLOG, BEGIN 2010-12-31 08:00

2.19        进程无法停止

通常情况是在处理大交易,尤其在营销系统中有很多超过2小时以上的大交易,建议等待进程处理完毕。

处理方法:如果必须停止进程,可以强制杀死进程:send xxx forcestop

2.20        CLOB处理

如果包含CLOB字段,在extract 参数文件中必须添加:

TRANLOGOPTIONS CONVERTUCS2CLOBS

2.21        DB2不能使用checkpoint table

处理方法:在增加replicat进程时使用nodbcheckpoint参数:

add replicat xxx, exttrail /goldengate/dirdat/rb, nodbcheckpoint

 

2.22        Datapump进程每次只传一个文件

错误信息:Datapump进程每次只传一个文件,然后就不工作了,状态是Running,重启之后,开始传下一个文件,需要不断重启才行

原因:AIX使用裸设备,没有添加参数。

处理方法:原来只是要求在extract中添加,在datapump中也需要添加

TRANLOGOPTIONS rawdeviceoffset 0

很多HP-UX出现不向目标端传输文件,是因为错误设置了上面的参数,将该参数从参数文件中删除即可。如果不是AIX使用裸设备,不要设置该参数。

2.23        Extract进程产生core文件

错误信息:extract运行一段时间,状态是running,但是不工作,在安装目录产生core文件,大约200M

原因:AIX没有使用裸设备,但是在参数文件中写了裸设备的参数

TRANLOGOPTIONS rawdeviceoffset 0

处理方法:将该参数删除

2.24        中文字节数问题

错误信息:2011-01-19 22:58:30  WARNING OGG-00869  OCI Error ORA-12899: value too large for column “SAPR3″.”ADRC”.”MC_STREET” (actual: 86, maximum: 75) (status = 12899), SQL <INSERT INTO “SAPR3″.”ADRC” (“CLIENT”,”ADDRNUMBER”,”DATE_FROM”,”NATION”,”DATE_TO”,”TITLE”,”NAME1″,”NA
ME2″,”NAME3″,”NAME4″,”NAME_TEXT”,”NAME_CO”,”CITY1″,”CITY2″,”CITY_CODE”,”CITYP_CODE”,”HOME_CITY”,”CIT>.

2011-01-19 22:58:30  WARNING OGG-01004  Aborted grouped transaction on ‘SAPR3.ADRC’, Database error 12899 (ORA-12899: value too large for column “SAPR3″.”ADRC”.”MC_STREET” (actual: 86, maximum: 75)).

2011-01-19 22:58:30  WARNING OGG-01003  Repositioning to rba 15479755 in seqno 11.

2011-01-19 22:58:30  WARNING OGG-01154  SQL error 12899 mapping SAPR3.ADRC to SAPR3.ADRC OCI Error ORA-12899: value too large for column “SAPR3″.”ADRC”.”MC_STREET” (actual: 86, maximum: 75) (status = 12899), SQL <INSERT INTO “SAPR3″.”ADRC” (“CLIENT”,”ADDRNUMBER”,”DATE_FROM”,”NATION”,”DATE_TO”,”TITLE”,”NAME1″,”NAME2″,”NAME3″,”NAME4″,”NAME_TEXT”,”NAME_CO”,”CITY1″,”CITY2″,”CITY_CODE”,”CITYP_CODE”,”HOME_CITY”,”CIT>.

2011-01-19 22:58:30  WARNING OGG-01003  Repositioning to rba 15479755 in seqno 11.

原因:中文字符问题,源端每个中文字符占2个字节,目标端每个占3个字节,

处理方法:SR 3-2456706611

首先确认参数文件中的NLS_LANG和数据库设置一致。

1 确认两个数据库的字符语义相同

参考SQL:

SQL> show parameter nls

NAME                                 TYPE        VALUE

———————————— ———– ——————————

nls_language                         string      AMERICAN

nls_length_semantics                 string      BYTE

nls_territory                        string      AMERICA

 

2 确认两端源和目标表的结构相同

参考SQL:

Select dbms_metadata.get_ddl(‘TABLE’,’#MyTable’,’My Owner’) from dual;

 

3 确认两端源和目标表的出错列的字符语义相同。

参考SQL:

select CHAR_USED,CHAR_LENGTH from dba_tab_columns where owner=’WHETC’ and table_name=’CBS_RUNNINGNUMBER_NOBU’ and column_name in (‘CPSBBZ’, ‘XCFX’);

4确认操作系统环境变量

确保两端操作系统级别,语言环境变量一致,包括:LANG,NLS_LANG等

3       中文表/中文字段处理

create table 测试表(

ID NUMBER,

姓名 VARCHAR2(30),

FLAG CHAR(1),

CONSTRAINT PK_TESTD PRIMARY KEY (ID) USING INDEX);

 

–源端创建MV LOG和MV:

drop materialized view log on “测试表”;

create materialized view log on “测试表” with primary key;

drop materialized view mv_cn_table;

create materialized view mv_cn_table refresh fast on commit as select id,姓名 as en_name,flag from “测试表”;

 

–目标端创建表及view

create or replace view v_cn_table as select id,姓名 as en_name,flag  from 测试表;

 

–这里NLS_LANG在GG中,抽取和复制必须设置为和目标字符集一致

SETENV (NLS_LANG = “AMERICAN_AMERICA.AL32UTF8”)

 

–Extract

extract ODISC

SETENV (NLS_LANG = “AMERICAN_AMERICA.AL32UTF8”)

userid custom_src, password custom_src

exttrail D:/goldengate/dirdat/ODISoc/oc

TABLE CUSTOM_SRC.MV_CN_TABLE;

–Datapump

extract ODIT1P

SETENV (NLS_LANG = “AMERICAN_AMERICA.AL32UTF8”)

PASSTHRU

rmthost localhost, mgrport 7909

rmttrail D:/gg_stg/dirdat/ODIT1op/op

TABLE CUSTOM_SRC.MV_CN_TABLE;

 

–Replicat

replicat ODIT1A1

SETENV (NLS_LANG = “AMERICAN_AMERICA.AL32UTF8”)

userid odi_staging,  password odi_staging

discardfile D:/gg_stg/dirrpt/ODIT1.dsc, purge

ASSUMETARGETDEFS

–这里必须指定此参数,否则update有问题

APPLYNOOPUPDATES

–这里必须指定KEYCOLS,否则删除和更新有问题

map CUSTOM_SRC.MV_CN_TABLE, TARGET ODI_STAGING.V_CN_TABLE, KEYCOLS (ID);

4       Extract拆分方法

  • 停止extract进程
  • 停止datapump、进程

GGSCI> INFO datapump_name

EXTRACT    DPEF      Last Started 2011-01-28 12:34   Status RUNNING

Checkpoint Lag       00:00:00 (updated 00:00:05 ago)

Log Read Checkpoint  File ./dirdat/ef000010

2011-01-28 12:47:45.000000  RBA 148645

直至RBA号不变化,才能停止

  • 停止replicat进程

GGSCI> INFO replicat_name

REPLICAT   RPEF      Last Started 2011-01-28 12:30   Status RUNNING

Checkpoint Lag       00:00:00 (updated 00:00:05 ago)

Log Read Checkpoint  File ./dirdat/ef000006

2011-01-28 12:47:45.000000  RBA 149258

直至RBA号不变化,才能停止

  • 记录extract检查点

Extract检查点包括:Recovery Checkpoint和Current Checkpoint

GGSCI> INFO extract_name, SHOWCH

EXTRACT    EXEE      Last Started 2011-01-28 09:58   Status STOPPED

Checkpoint Lag       00:00:00 (updated 00:01:02 ago)

Log Read Checkpoint  Oracle Redo Logs

2011-01-28 10:02:16  Seqno 26, RBA 7090688

Current Checkpoint Detail:

 

Read Checkpoint #1

 

Oracle Redo Log

 

Startup Checkpoint (starting position in the data source):

Sequence #: 26

RBA: 289296

Timestamp: 2011-01-28 09:27:31.000000

Redo File: C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO02.LOG

 

Recovery Checkpoint (position of oldest unprocessed transaction in the data source):

    Sequence #: 26

    RBA: 7088144

Timestamp: 2011-01-28 10:02:16.000000

Redo File: C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO02.LOG

 

Current Checkpoint (position of last record read in the data source):

    Sequence #: 26

    RBA: 7090688

Timestamp: 2011-01-28 10:02:16.000000

Redo File: C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO02.LOG

 

Write Checkpoint #1

 

GGS Log Trail

 

Current Checkpoint (current write position):

Sequence #: 11

RBA: 31609

Timestamp: 2011-01-28 10:02:19.072000

Extract Trail: ./dirdat/ee

 

Header:

Version = 2

Record Source = A

Type = 4

# Input Checkpoints = 1

# Output Checkpoints = 1

 

File Information:

Block Size = 2048

Max Blocks = 100

Record Length = 2048

Current Offset = 0

 

Configuration:

Data Source = 3

Transaction Integrity = 1

Task Type = 0

 

Status:

Start Time = 2011-01-28 09:58:34

Last Update Time = 2011-01-28 10:02:19

Stop Status = G

Last Result = 400

 

  • 修改原有相应的参数文件,将拆分出的表从参数文件中删除
  • 增加新的extract,datapump和replicat

–source————————————————–

GGSCI (win2k364) 15> add ext exef, tranlog, begin now

EXTRACT added.

 

GGSCI (win2k364) 16> add exttrail ./dirdat/ef, ext exef, megabytes 50

EXTTRAIL added.

 

GGSCI (win2k364) 17> add ext dpef, exttrailsource ./dirdat/ef

EXTRACT added.

 

GGSCI (win2k364) 18> add rmttrail ./dirdat/ef, ext dpef, megabytes 50

RMTTRAIL added.

 

–target————————————————–

GGSCI (win2k364) 21> add rep rpef, exttrail ./dirdat/ef

REPLICAT added.

 

  • 修改新增extract进程的检查点

检查点为上面记录的两个检查点:current read checkpoint and recovery checkpoint

–修改current read checkpoint

GGSCI (win2k364) 30> alter exef extseqno 26, extrba 7090688 [, thread n]

EXTRACT altered.

–修改recovery checkpoint

GGSCI (win2k364) 4> alter exef ioextseqno 26, ioextrba 7088144 [, thread n]

 

2011-01-28 10:46:18  INFO    OGG-00989  WARNING: Unsupported operation. This might cause transactional inconsistency. Modifying iocheckpoint: ioseq = 26 iorba = 7088144.

Are you sure you want to continue? y

EXTRACT altered.

 

  • 确认所有参数文件正确,启动进程即可

5       Datapump和replicat拆分方法

下面以拆分replicat为例,datapump拆分方法相同。

  • 停止replicat进程
  • 查看检查点

GGSCI> INFO replicat_name, SHOWCH

REPLICAT   RPEF      Last Started 2011-01-28 12:30   Status RUNNING

Checkpoint Lag       00:00:00 (updated 00:00:03 ago)

Log Read Checkpoint  File ./dirdat/ef000006

2011-01-28 12:47:45.000000  RBA 149258

 

 

Current Checkpoint Detail:

 

Read Checkpoint #1

 

GGS Log Trail

 

Startup Checkpoint (starting position in the data source):

Sequence #: 4

RBA: 1845

Timestamp: 2011-01-28 11:32:10.556000

Extract Trail: ./dirdat/ef

 

Current Checkpoint (position of last record read in the data source):

    Sequence #: 6

    RBA: 149258

Timestamp: 2011-01-28 12:47:45.000000

Extract Trail: ./dirdat/ef

 

Header:

Version = 2

Record Source = A

Type = 1

# Input Checkpoints = 1

# Output Checkpoints = 0

 

File Information:

Block Size = 2048

Max Blocks = 100

Record Length = 2048

Current Offset = 0

 

Configuration:

Data Source = 0

Transaction Integrity = -1

Task Type = 0

 

Database Checkpoint:

Checkpoint table = GGS.GGSCHKPT

Key = 746337239 (0x2c7c33d7)

Create Time = 2011-01-28 10:20:18

 

Status:

Start Time = 2011-01-28 12:30:23

Last Update Time = 2011-01-28 13:25:34

Stop Status = A

Last Result = 400

  • 修改原有参数文件,将拆分出的表删除
  • 新增replicat,和拆分前的进程读取相同的队列文件
  • 修改检查点

GGSCI>alter replicat_new extseqno 6, extrba 149258

  • 确认所有参数文件无误,启动进程即可

 

6       Logdump使用指引

  • 在GGSCI中使用如下命令查看当前处理的队列文件和RBA号,例如:

GGSCI (br-jl-accs-db1) 3> info REPYXA

REPLICAT   REPYXA    Last Started 2011-01-08 19:48   Status RUNNING

Checkpoint Lag       00:00:00 (updated 136:41:42 ago)

Log Read Checkpoint  File ./dirdat/p1000556 First Record  RBA 59193235

1、在GoldenGate安装目录执行logdump命令

2、打开要查看的队列文件

Logdump 1 >open ./dirdat/p1000556

Current LogTrail is ./dirdat/p1000556

Logdump 2 >ghdr on

Logdump 3 >detail on

Logdump 4 >detail data

Logdump 5 >usertoken on

Logdump 6 >pos 59193235 上面INFO命令看到的RBA号码

Logdump 7 >n

输入n显示当前处理的表及相关操作

再次输入n,显示下一条记录,如果要跳过当前记录,方法如下:

GGSCI>alter REPYXA extseqno 556, extrba 上面再次输入n看到的下一个RBA号

其中556为上面INFO看到的队列文件,0之后的数字

了解OGG GoldenGate Lag监控

了解OGG GoldenGate Lag监控

 

 

GGSCI中显示的LAG代表 事务被写入到磁盘介质中的时刻例如Oracle中redo被写入到online redo logfile中 和 Replicat将同一个事务分发到目标数据库的时刻 之间的时间间隔。

 

通俗地说,一个事务内的所有行记录将对应同一个LAG; 除非出现了一个事务被打散且被多个REPLICAT分别apply或者变成多个事务的情况。 OGG参数例如RANGE这种对应于第一种情况,即一个事务被多个REPLICATE分别APPLY。 OGG参数MAXTRANSOPS对应后一种情况。

 

LAG在以下情况中被引入:

 

  1. 当Extract进程在读取redolog并写出到TRAIL或REMOTE HOST
  2. 当额外的datapump在读取extract trail并通过网络写出到远程节点REMOTE HOST
  3. 当collector在目标服务器上接受网络数据并写出到LOCAL TRAIL
  4. 当REPLICAT读取LOCAL TRAIL并写出到数据库中

 

 

同时也需要注意通过GGSCI中INFO或STATUS等命令显示的LAG,或通过SEND 对象名,LAG命令获得的LAG可能不一致:

 

INFO命令所获得的LAG可能与SEND命令所得值存在小的差别

INFO命令获得的LAG返回自MANAGER来源于最近记录的checkpoint

SEND <OBJECT>, lag获得的LAG值基于<OBJECT>正在处理的行记录的时间戳

LAG常使用时间单位或需要处理的数据单位Kilobytes来表达

 

归根结底LAG是衡量 数据归档或写出到日志的时间 和 EXTRACT/PUMP/REPLICAT处理该数据的时刻 这2个时间点之间的差距, 而不是说 LAG反映了EXTRACT还要工作多久。

 

实际EXTRACT/PUMP/REPLICAT都不知道自己要工作多久才能追上 REAL TIME,它们的LAG值只是显示 最近它们处理的一条记录的时间 和这条记录被写到REDO LOG的时间点之间的差距,即LAG只说明ER之前的工作延迟,不代表还要工作多久才能追平。

 

举个例子来说,STOP EXTRACT之后等待一段时间再重启看到有很大的LAG,这不代表EXTRACT有什么问题,只是EXTRACT最后处理的一条记录 很早就在REDO LOG里生成了 而EXTRACT真正处理这条记录是等了一段时间的而已。

 

 

 

 

 

 

 

GGSCI (XIANGBLI-CN) 27> stop load2

 

Sending STOP request to EXTRACT LOAD2 …

Request processed.

 

 

GGSCI (XIANGBLI-CN) 28> start load2

 

Sending START request to MANAGER …

EXTRACT LOAD2 starting

 

GGSCI (XIANGBLI-CN) 31> info load2

 

EXTRACT    LOAD2     Last Started 2012-09-18 20:26   Status RUNNING

Checkpoint Lag       00:04:34 (updated 00:00:08 ago)

Log Read Checkpoint  Oracle Redo Logs

2012-09-18 20:21:32  Seqno 44, RBA 13750272

SCN 0.1845479 (1845479)

 

 

GGSCI (XIANGBLI-CN) 35> lag load2

 

Sending GETLAG request to EXTRACT LOAD2 …

Last record lag: 130 seconds.

At EOF, no more records to process.

 

GGSCI (XIANGBLI-CN) 36> info load2

 

EXTRACT    LOAD2     Last Started 2012-09-18 20:26   Status RUNNING

Checkpoint Lag       00:00:00 (updated 00:00:02 ago)

Log Read Checkpoint  Oracle Redo Logs

2012-09-18 20:27:33  Seqno 44, RBA 13817856

SCN 0.1845671 (1845671)

 

 

以上可以看到 Last record lag 和 Checkpoint Lag 是不同的

 

 

EXTRACT/PUMP/REPLICAT 没法预知自己什么时候能追平(catch up), 为什么? 因为虽然看上去可能有几十个GB的redo要处理,但是实际符合EXTRACT/PUMP/REPLICAT 要的记录可能很少。

 

 

又由于INFO的LAG是基于checkpoint的,所以如果出现大事务的情况Long Running Transactions (LRTs),事务可能长时间不提交COMMIT。 该事务可能变成一个最老而又最无聊的数据由于一直不COMMIT而无法写出。 这将造成EXTRACT/PUMP/REPLICAT实际处理这个大事务的时间点远落后于该大事务实际commit的时间点。 对于REPLICAT可以使用MAXTRANSOPS 参数来减少LAG。

沪ICP备14014813号-2

沪公网安备 31010802001379号