goldengate ogg troubleshooting guide
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.
SQL ERROR 1403属数据错误,指记录无法投递到目标数据库,需通过查看错误信息及discarded文件,到两端库寻找相应记录,并结合logdump工具分析队列中的实际数据,分析出现该错误的原因,进而解决该问题。
造成该错误的可能原因:
重新初始化该表,初始化方法见《国家电网公司网省数据级容灾GoldenGate运维方案》。
在源端确认该表附加日志是否为enable状态,执行命令:
GGSCI>INFO TRANDATA schema.table_name
如果不是,重新添加附加日志,执行命令
GGSCI>ADD TRANDATA schema.table_name
加完附加日志后需要重新对该表执行初始化,具体方法请参照运维方案。
GG在执行删改操作时,由于初始化方法错误造成的数据不一致,使得GG删除的记录不存在,或修改的数据前影像不一致。此时,可通过logdump观察具体错误,如果记录条数不多,则可手动修复该错误。如果记录数非常多,则需对该表进行重新初始化或在replicat进程中添加handlecollisions参数(加handlecollisions参数的前提为该replicat进程复制的表均有主键或唯一约束)。
删除目标端trigger及主外键约束即可。
禁止trigger:
禁止主外键约束:
当表处于logging状态且使用了以下数据装载模式+nologging时DML将不会被写入数据库日志,OGG无法捕获到:
❍ /*+ APPEND */ hint
❍ /*+ BUFFER */ hint
❍ /*+ PARALLEL */ hint
❍ SQLLDR with DIRECT=TRUE
请首先检查表是否处于logging mode,然后从应用方面检查是否存在这些限制。如果有需要调整表为logging模式,对表执行重新初始化,具体方法请参照运维方案。
观察数据库是否存在定时任务自动修改数据。
同样,对于操作系统级也进行检查,是否有脚本自动修改数据库中数据。
如有以上现象,请禁止这些任务,对已经受影响的表执行初始化。
如果数据初始化时候没有使用SCN号做恢复和启动OGG进程,则可能会丢失部分数据,在日后的运行过程中报告1403错误。
如果使用了alter extract/replicat等操作修改过OGG的检查点,则可能会出现丢失数据或者部分时段数据重复现象,造成运行期间报告1403错误。
人为失误修改目标数据也会造成两端数据不一致。
一. 概述 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 Goldengat 软
件的日常维护和使用的技术参考;
3
ORACLE
第二章 OGG 日常维护操作指南
Copyright OGG Software, Inc. 1995-2007
GGSCI > start mgr // 启动 manager 进程
Copyright OGG Software, Inc. 1995-2007
GGSCI > start ext * //启动所有抽取进程
Copyright OGG Software, Inc. 1995-2007
GGSCI > info ext | *//查看所有进程信息 |
SCI > start rep * | //启动所有投递进程 |
Copyright OGG Software, Inc. 1995-2007
GGSCI > info er * //查看所有进程信息
说明:GGSCI > start er *是启动所有进程,如果只启动一个进程命令为 start <
进程名>。例如进程名称为 dpesz,则启动命令为 start dpesz。
4
ORACLE
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 进程;
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;
OGG 所有进程状态共有 3 种:
正常的情况下,进程为 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
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 进程并不影响数据复制。
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.
注意:一般建议不用自动启动,而是手工启动,便于观察状态验证启动是否
成功,同时也便于客户自己修改参数。
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.
在停止抽取进程前需要通过命令检查是否存在长交易,以防止下次启动无法找
到归档日志:
命令格式 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 命令查看这些告警信息。以上配置可以有
助于及时发现长交易并予以处理。
(一) 增加复制表
在当前进程参数中,通过显式列表的来匹配表,增加表后必须要修改配置文件,
还要为新增的表添加附加日志。步骤如下:
源端:
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 复制,则可以通过以下步骤排除:
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
即可进入正常复制状态。
当数据库需要复制的表结构有所改变,如增加列,改变某些列的属性如长度等表
结构改变后,可以按照下列步骤执行:
继续执行下列步骤;
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
19
ORACLE
使用 imp 工具导入数据时,由于该操作写日志,OGG 支持复制通过 imp 导入的
数据,但不支持创建表的操作,需要在目标端事先创建表然后再在源端导入。
需要注意的是,每次 imp 都是一个 oracle 事务,如果导入的表过大(如超过 10G),
有可能超过 OGG 所配置的最大内存,请首先咨询 OGG 技术支持。
如果是某些表由于各种原因造成两边数据不一致,需要重新进行同步,但实际业
务始终 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 即可进入
正常复制。
当源端和目标端要进行 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
记录反馈信息
$ 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) 版本升级结束。
在数据库升级之前应提前通报给 OGG,以便于确定复制软件是否支持最新版本。
如果需要升级 OGG 软件参考前面的升级步骤,如果不需要升级 OGG,则只需停止
OGG 进程进行升级,然后升级完毕重新启动即可。
在数据库升级之前应提前通报给 OGG,以便于确定复制软件是否支持最新版本。
如果需要升级 OGG 软件参考前面的升级步骤,如果不需要升级 OGG,则只需停止
OGG 进程进行升级,然后升级完毕重新启动即可。
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 数据类型支持
ANYDATA and ANYDATASET
ANYTYPE
MLSLABEL
24
ORACLE
URITYPE
UROWID
1.2OGG 特殊对象支持
1.2.1 有条件支持物化视图(Materialized views)
在以下有条件限制中支持:
2.OGG 不支持的特殊操作
以下特殊操作由于不写日志,OGG 无法予以复制:
Oracle 插入数据有两种方式:
25
ORACLE
a、常规插入:重新使用 table 中的自由空间,在已有数据中插入新数据;
维护引用完整性约束。
b、Direct-Path 插入:在表中已有数据之后插入新数据;数据直接插入数据
文件,绕过 buffer cache;已有数据中的自由空间没有被重新利用;忽略了
引用完整性约束。Direct-Path 可以 disable redo log 和 undo log,导致 OGG
无法通过日志捕捉到数据变化。
常见的 Direct Path Load 包括:
如果遇到上述操作,一般这些表数据不是原生数据,可以在复制中排除掉这
些表并通过定时备份等方式予以复制。
法复制。
法复制。
由于 imp 操作写日志,OGG 能够支持 imp 操作。但由于不复制 DDL 操作,需
要事前在目标端建立表结构。如果 imp 的表过大,有可能引起 OGG 内存不够用,报
出 105 错误。因此,请在使用 imp 前咨询 OGG 技术支持。
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以后的兼容性列表 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+ |
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:
a. Offline drop any non-system, rollback datafiles 7. Startup mount DB
a. Recover database (standby recovery)
replication_dependency_tracking = FALSE
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.
Oracle日志的读取 – 归档日志
–TRANLOGOPTIONS {
[ALTARCHIVEDLOGFORMAT <string>] [INSTANCE <instance_name>] [THREADID <id>]
[ALTARCHIVELOGDEST [PRIMARY] [INSTANCE <instance_name>] <path name>]
–可以通过降低进程对控制文件访问次数
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.
本文永久地址:https://www.askmac.cn/archives/goldengate-oracle-mysql.html
采用OGG Goldengate实现Oracle与MySQL之间的复制
Ggsci> create subdirs
Ggsci> EDIT PARAM ./GLOBALS
在文件中,添加如下一行,并保存:
MGRSERVNAME GGSMYSQL
Ggsci> EDIT PARAM MGR
在文件中,添加如下内容,并保存:
port 8809
DYNAMICPORTLIST 8840-8850
autorestart er *, retries 5, waitminutes 1
purgeoldextracts /ggs/dirdat/*,usecheckpoints, minkeepdays 3
Ggsci> strat mgr
目标端Oracle数据库的Goldengate安装,除了介质不同,与上述安装步骤相同,在此不再赘述。
log-bin=”D:/Oracle/MySQL5.1.42/logs/test.bin”
max_binlog_size=10000000
binlog_format=row
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)
在MySQL源端配置EXTRACT抽取进程和DATAPUMP数据泵进程。三个进程的参数文件样例如下。
源端EXTRACT进程参数文件:
–日志捕获进程
extract exta
dboptions host localhost, connectionport 3306
sourcedb test, userid root, password root
exttrail ./dirdat/ea
–数据库对象
table TEST.TEST1;
源端数据泵进程参数文件:
extract dmpa
rmthost 127.0.0.1, mgrport 7809
rmttrail ./dirdat/ra
passthru
table TEST.TEST1;
defsfile ./dirdef/mysql.def, purge
dboptions host localhost, connectionport 3306
sourcedb test, userid root, password root
table test.test1;
本例中目标为Oracle数据库信息为127.0.0.1:1521:xe。数据库用户为test,目标表为ora_test1:
create table ora_test1(id varchar2(10) primary key, name varchar2(20));
目标段交付进程参数文件:
REPLICAT REPA
USERID goldengate, PASSWORD goldengate
SOURCEDEFS ./dirdef/mysql.def
ASSUMETARGETDEFS
DISCARDFILE ./dirrpt/ra.dsc, PURGE
MAP TEST.TEST1, TARGET test.ora_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)
Shell> sqlplus test/test
SQL> select * from ora_test1;
OGG GoldenGate 故障诊断手册Troubleshooting handbook
前期准备可以避免很多不必要的错误,因此在实施之前可以尽量完成以下准备工作。
HP-UX:export LD_LIBRARY_PATH=/ggs/11.1:$LD_LIBRARY_PATH
AIX:export LIBPATH=/ggs/11.1:$LIBPATH
这里要注意,将GoldenGate安装目录放在LD_LIBRARY_PATH/LIBPATH环境变量最前面
建议使用oracle用户运行GoldenGate,oracle用户已将oracle相关环境变量设置好,包括lib相关的环境变量。如果使用独立的GoldenGate用户,可以将oracle用户的环境变量复制到profile文件中,额外添加lib包相关的内容。
使用操作系统命令: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有关。
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;
无论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
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)
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.
这里要注意,GoldenGate的版本是和数据库和操作系统相关的,如果是64位的OS,结果安装了32位的数据库,必须使用32位的GoldenGate和32位的C++ 2005 sp1 redistributable package。
32位下载地址:
64位下载地址:
OGG安装目录建议在存储阵列上,但是在mount时需注意,不能使用并发参数,例如:在AIX下, 不能使用CIO参数。如果使用已有的mount点,并且使用并发参数,必须新建文件系统,重新mount,作为GoldenGate安装目录。
必须保证GoldenGate可以访问到RAC环境任何一个节点的归档日志,可以采用并行文件系统或NFS,一般采用NFS。
在extract参数文件中指定参数:
TRANLOGOPTIONS altarchivelogdest primary instance ins1 /archive01, altarchivelogdest instance ins2 /archive02
在mgr.prm中设置动态端口范围
dynamicportlist 7840-7914
很多没有设置为这个范围,导致容灾中心Director不能观察到网省端的运行状态。
在datapump参数文件中指定压缩参数,否则将占用较大的网络带宽,导致传输时间过长。
RMTHOST 10.100.xx.xx, MGRPORT 7839, compress
在参数文件中建议使用具体要复制的表名称,例如:schema.table_name的方式,便于后期维护。
在mgr.prm文件中进行设置:
PURGEOLDEXTRACTS ./dirdat/*,usecheckpoints, minkeepdays 3
如果空间不够,可将minkeepdays修改为:MINKEEPHOURS。
如果空间仍然紧张,仍要求立即释放空间,可修改为:MINKEEPFILES,将值设置为1,即只保留一个处理过的队列文件。
针对大的应用系统,需对要复制的表进行分组,例如:营销系统,至少要分6-8个Extract、datapump和replicat进程。任何分组需要和应用系统开发商进行协调。
在extract, datapump,replicat参数文件中必须添加:
TRANLOGOPTIONS RAWDEVICEOFFSET 0
只同步和应用系统相关的schema下面的表,很多网省的参数文件,直接把所有用户都列在里面,其中很多是数据库本身自己使用的用户,例如:
‘SYS’, ‘SYSTEM’, ‘DBSNMP’,’SYSMAN’,’OUTLN’,’MDSYS’,’ORDSYS’,’EXFSYS’,’DMSYS’,’WMSYS’, ‘CTXSYS’,’ANONYMOUS’,’XDB’,’ORDPLUGINS’,’OLAPSYS’
很多网省在参数文件中使用shcema.*的方式,这样有很多临时表也会进行复制,经于应用系统开发商确认,TEMP和TMP开头的表根本不需要复制,因此在参数文件中直接排除这些临时表。
extract:
TABLEEXCLUDE SCHEMA.TEMP*
TABLEEXCLUDE SCHEMA.TMP*
replicat:
MAPEXCLUDE SCHEMA.xxx
在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)
错误信息:
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以上,问题解决
错误信息: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.
处理方法:安装补丁包
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.
由于源端进行了表结构更改,没有通知目标端,导致此错误
处理方法:
GGSCI>INFO TRANDATA schema.table_name
返回应该是enable,如果不是,重新添加
GGSCI>ADD TRANDATA schema.table_name
错误信息: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
错误信息:
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.
处理方法:
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
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的名称
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.
处理方法:
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即可恢复正常复制
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 可以正常工作
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即可恢复正常复制
在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;
在mgr.prm中,添加:
PURGEOLDEXTRACTS ./dirdat/*,usecheckpoints, minkeepdays 3
修改之后,必须重启manager即可看到队列文件占用的空间被按照上面指定的规则释放。
如果存储空间不够,可以将minkeepdays修改为MINKEEPHOURS
很多网省源端存储空间不足,这样修改为最小保留的小时数,缓解存储空间不足。
如果空间仍然紧张,仍要求立即释放空间,可修改为:MINKEEPFILES,将值设置为1,即只保留一个处理过的队列文件(不建议使用)。
如果存储空间充裕,建议最少保留3天的队列文件。
首先确认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
拆分前通过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
错误信息:BOUNDED RECOVERY: reset to initial or altered checkpoint.
数据库问题,不能读取第2个节点的archivelog文件
在参数文件中增加:
TABLEEXCLUDE schema.table_name
重新抓取数据前提:归档文件没有删除
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小时以上的大交易,建议等待进程处理完毕。
处理方法:如果必须停止进程,可以强制杀死进程:send xxx forcestop
如果包含CLOB字段,在extract 参数文件中必须添加:
TRANLOGOPTIONS CONVERTUCS2CLOBS
处理方法:在增加replicat进程时使用nodbcheckpoint参数:
add replicat xxx, exttrail /goldengate/dirdat/rb, nodbcheckpoint
错误信息:Datapump进程每次只传一个文件,然后就不工作了,状态是Running,重启之后,开始传下一个文件,需要不断重启才行
原因:AIX使用裸设备,没有添加参数。
处理方法:原来只是要求在extract中添加,在datapump中也需要添加
TRANLOGOPTIONS rawdeviceoffset 0
很多HP-UX出现不向目标端传输文件,是因为错误设置了上面的参数,将该参数从参数文件中删除即可。如果不是AIX使用裸设备,不要设置该参数。
错误信息:extract运行一段时间,状态是running,但是不工作,在安装目录产生core文件,大约200M
原因:AIX没有使用裸设备,但是在参数文件中写了裸设备的参数
TRANLOGOPTIONS rawdeviceoffset 0
处理方法:将该参数删除
错误信息: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等
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);
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号不变化,才能停止
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检查点包括: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
–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.
检查点为上面记录的两个检查点: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.
下面以拆分replicat为例,datapump拆分方法相同。
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
GGSCI>alter replicat_new extseqno 6, extrba 149258
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监控
GGSCI中显示的LAG代表 事务被写入到磁盘介质中的时刻例如Oracle中redo被写入到online redo logfile中 和 Replicat将同一个事务分发到目标数据库的时刻 之间的时间间隔。
通俗地说,一个事务内的所有行记录将对应同一个LAG; 除非出现了一个事务被打散且被多个REPLICAT分别apply或者变成多个事务的情况。 OGG参数例如RANGE这种对应于第一种情况,即一个事务被多个REPLICATE分别APPLY。 OGG参数MAXTRANSOPS对应后一种情况。
LAG在以下情况中被引入:
同时也需要注意通过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。
Copyright © 2024 · Genesis Framework · WordPress · Log in