优化Extract抽取进程性能,解决OGG抽取日志延迟

一般来说OGG Goldengate 抽取进程对CPU的压力非常小, 而对于I/O 、network的吞吐量有轻量级的要求。

用低配置AIX测试结果如下。

抽取进程支持DB Log生成峰值速度 = 4 * 2.1 = 8.4 MB/秒,或30GB/小时,或726 GB/天。
抽取进程平均CPU占用1.9% 。

投递进程支持DB Log生成平均速度 = 2,096,854 * 2.1 = 4.5 MB/秒,或16 GB/小时,或380 GB/天。
投递进程平均CPU占用7% 。

 

 

对于Extract抽取日志缓慢导致延迟的问题,优先采用如下方法诊断具体慢在 抽取 还是 写trail上:

 

1. 收集原始慢的Extract的性能信息

GGSCI> stats extract <extract_name>, totalsonly *, reportrate sec
GGSCI> stats extract <extract_name>, totalsonly *, reportrate min

 

2. 创建一个新的extract 参数文件

cp <extract_name>.prm ETEST.prm

3. 修改上述 etest params file中的extract名字 和 trail 位置

 

4. 加入TESTMAPPINGSPEED 参数到 etest的params files

TESTMAPPINGSPEED参数的作用是 不让extract 去写trail 文件 而仅仅抽取日志, 若加入该参数后抽取速度大幅提升则说明性能瓶颈在 write trail上

TESTMAPPINGSPEED
REPORTCOUNT EVERY 5000 RECORDS

 

5. 增加etest这个extract

GGSCI> add extract etest, tranlog, begin now

GGSCI> add exttrail ./dirdat/ma , extract etest , megabytes 200

 

6. 为etest指定 原始extract 存在抽取速度问题的archivelog 的sequence

GGSCI> alter extract etest, extseqno <arch_seq_no>, extrba 0

 

7. 启动etest 这个extract

GGSCI> start extract etest

 

等待5分钟并检查

GGSCI> stats extract etest, totalsonly *, reportrate sec
GGSCI> stats extract etest, totalsonly *, reportrate min

 

对比 原始慢的extract 与 新加入的etest的 stats reportrate 报告中的性能指标,若 TESTMAPPINGSPEED 后 性能明显提升则说明问题出在 写trail  (extract 写到本地的情况) 或者 网络传出慢( 直接写到目标机上)。

 

如果TESTMAPPINGSPEED 后性能也无明显变化则继续。

 

8. 将所有extract 的表都注释掉,而仅仅extract 一张很少变化记录的表, 若这样 后性能明显提升则说明 瓶颈不在读archivelog 上而在 日志记录的处理上 log record processing 。

一般来说redo日志的解析分成2部分:

A. Record parsing in Extract
B. Record fetching if needed

 

9.为了进一步确认问题 将TESTMAPPINGSPEED 注释掉, 并 加入 TRACE/TRACE2 参数 以便确认 Extract是否慢在fetch上

 

–TESTMAPPINGSPEED http://www.askmaclean.com
TRACE ./dirtmp/ext.trc
TRACE2 ./dirtmp/ext.trc2

 

10 检查生成的trace 文件 若 其中显示 大量的时间耗费在一些SELECT语句上,则需要DBA介入来调优这些SELECT SQL

 

11. 若看到一些与undo/rollback 相关的错误例如ORA-1555则确保UNDO 表空间可用 空间足够,  也可以加入  FETCHOPTIONS NOUSESNAPSHOT 让 Extract fetch column 数据是尽可能不要走UNDO CR READ

 

12. 如果将大部分表都去掉,只剩下一个不太用的表且仍无明显的性能增长, 且CPU 也不忙, 一般来说这可能是IO瓶颈造成的

 

13. 建议dd测一下archivelog 的读取速度

例如maclean>time dd if=<归档日志> of=/dev/null bs=1M

对比其他磁盘若有明显差异, 则考虑将archivelog 移动到对应磁盘并再次上述测试。

 

 

对于cache较小的sequence 可以引起在replicat DDL 时频繁执行 ALTER SEQUENCE “SEQ_NAME” CYCLE的DDL语句:

 

2013-04-22 09:54:06  INFO    OGG-01487  DDL found, operation [ALTER SEQUENCE "TXN_SEQ" CYCLE  (size 31)], start SCN [20181621217], commit SCN [20181621231] instance [C
ULPRODB (1)], DDL seqno [2734821], marker seqno [2736076].

2013-04-22 09:54:06  INFO    OGG-00487  DDL operation included [Include Mapped], optype [ALTER], objtype [SEQUENCE], objowner [OLSUSER], objname [TXN_SEQ].

2013-04-22 09:54:06  INFO    OGG-00497  Writing DDL operation to extract trail file.
Wildcard SEQUENCE resolved (entry olsuser.*):
  Sequence "OLSUSER"."TXN_SEQ";
Resolving source sequence OLSUSER.TXN_SEQ.

2013-04-22 09:54:07  INFO    OGG-01487  DDL found, operation [ALTER SEQUENCE "TXN_SEQ" CYCLE  (size 31)], start SCN [20181621236], commit SCN [20181621248] instance [C
ULPRODB (1)], DDL seqno [2734822], marker seqno [2736077].

2013-04-22 09:54:07  INFO    OGG-00487  DDL operation included [Include Mapped], optype [ALTER], objtype [SEQUENCE], objowner [OLSUSER], objname [TXN_SEQ].

2013-04-22 09:54:07  INFO    OGG-00497  Writing DDL operation to extract trail file.
Wildcard SEQUENCE resolved (entry olsuser.*):
  Sequence "OLSUSER"."TXN_SEQ";
Resolving source sequence OLSUSER.TXN_SEQ.

2013-04-22 09:54:08  INFO    OGG-01487  DDL found, operation [ALTER SEQUENCE "TXN_SEQ" CYCLE  (size 31)], start SCN [20181621251], commit SCN [20181621261] instance [C
ULPRODB (1)], DDL seqno [2734823], marker seqno [2736078].

2013-04-22 09:54:08  INFO    OGG-00487  DDL operation included [Include Mapped], optype [ALTER], objtype [SEQUENCE], objowner [OLSUSER], objname [TXN_SEQ].

2013-04-22 09:54:08  INFO    OGG-00497  Writing DDL operation to extract trail file.
Wildcard SEQUENCE resolved (entry olsuser.*):
  Sequence "OLSUSER"."TXN_SEQ";
Resolving source sequence OLSUSER.TXN_SEQ.

 

若该replicat target库上尚有extract则 extract挖掘日志时可能因为处理频繁的DDL操作而变得很慢,”Why GoldenGate replicat issues “alter sequence .. cycle|nocycle” in sequence replication? [ID 1535322.1]” 文档指出了 这种频繁的 是为了在target 上上可信赖的同步sequence的高水位。

但是这种超频繁的 几乎每2s 一次的ALTER SEQUENCE CYCLE操作确实拖慢了Extract的速度, 可以通过指定参数 DBOPTIONS _NOAUTOMATICSEQUENCEFLUSH来减少ALTER SEQUENCE CYCLE出现,实际并不能完全避免。 文档指出使用该 DBOPTIONS _NOAUTOMATICSEQUENCEFLUSH参数可能导致TARGET上的SEQUENCE 不同步。

实际优先考虑增加SOURCE上SEQUENCE的CACHE解决问题, 之后再考虑用 DBOPTIONS _NOAUTOMATICSEQUENCEFLUSH; 针对该SEQUENCE  在EXTRACT里 排除该索引 没有效果, 例如 DDL EXCLUDE OBJNAME “XX.SEQNAME”  或者 TABLEEXCLUDE “XX.SEQUENCE”在实际测试中均没有明显的改善, 但修改DBOPTIONS _NOAUTOMATICSEQUENCEFLUSH确实可以该少性能。


http://www.askmaclean.com/archives/ogg-goldengate-extract-slow.html

<think>好的,我现在需要帮助用户解决在OracleGoldenGate中配置和添加抽取进程的问题。首先,我得回忆一下之前学过的OGG相关知识,以及用户提供的引用内容。用户引用了三个资料,其中引用[1]提到了创建抽取进程和传送进程的步骤,引用[3]有添加replicat的GGSCI命令示例。用户的问题是关于如何配置和添加抽取进程的,所以重点应该放在Extract Process的配置步骤上。首先,我需要确定配置抽取进程的基本流程。通常,OGG的配置包括安装软件、创建管理目录、参数文件配置、定义进程等步骤。根据引用[1],在源数据库安装OGG软件后,需要创建管理目录和参数文件,然后创建抽取进程和传送进程。用户的问题集中在抽取进程,所以需要详细说明这部分。 接下来,步骤可能包括登录GGSCI,添加抽取进程,编辑参数文件,定义抽取源,检查点设置,启动进程等。需要确保每一步都正确,比如参数文件中的EXTRACT名称与添加的进程一致,配置正确的trail文件路径,指定正确的表或事务日志等。然后,需要考虑参数文件的具体内容,比如使用EXTRACT命令,SOURCEISTABLE用于初始加载,或者TRANLOGOPTIONS处理日志。还要注意检查点表的配置,如引用[3]中的CHECKPOINTTABLE,这可能与抽取进程的检查点有关,但通常检查点表更多用于Replicat进程。不过需要确认是否正确应用。 另外,用户可能对参数的具体配置有疑问,比如如何指定表结构、过滤条件等。需要举例说明,比如使用TABLE语句指定源表,或者使用FILTER子句。同时,要提醒用户处理可能的错误,如权限问题、路径不存在等。最后,验证步骤很重要,比如查看进程状态,检查日志文件,确保数据正确抽取到trail文件中。可能还需要引用用户提供的示例命令,比如addextract和editparams,确保语法正确。总结一下,回答需要分步骤详细说明,包括GGSCI命令、参数文件配置、启动进程的方法,并给出示例。同时,要结合用户提供的引用内容,正确引用相关步骤,如引用[1]中的创建抽取进程部分。此外,相关问题可以引导用户进一步学习优化、监控或处理初始数据加载的方法。</think>### Oracle GoldenGate 中配置和添加抽取进程Extract Process)的步骤 #### **1. 准备工作** - 确保已安装Oracle GoldenGate软件,并创建管理目录(如`dirdat`、`dirprm`等)[^1]。 - 确保源数据库已启用补充日志(Supplemental Logging),以捕获变更数据。 #### **2. 登录GGSCI命令行工具** ```bash cd /u01/app/product/ogg_src ./ggsci ``` #### **3. 添加抽取进程** 通过以下命令定义抽取进程,并指定其类型和关联的Trail文件: ```sql ADD EXTRACT <extract_name>, {TRANLOG | INTEGRATED TRANLOG} [, BEGIN <time> | NOW] -- 示例:添加一个实时抽取进程,并生成本地Trail文件 ADD EXTRACT extr1, TRANLOG, BEGIN NOW ADD EXTTRAIL /u01/app/product/ogg_src/dirdat/et, EXTRACT extr1 ``` - **类型说明**: - `TRANLOG`:基于传统事务日志抽取。 - `INTEGRATED TRANLOG`:适用于Oracle数据库的集成模式(推荐11.2.0.4及以上版本)。 #### **4. 编辑抽取进程参数文件** 使用`EDIT PARAMS`命令配置抽取规则: ```sql EDIT PARAMS extr1 ``` 在参数文件中定义以下内容: ```bash EXTRACT extr1 -- 数据库连接信息 USERIDALIAS ogg_user DOMAIN admin -- 指定Trail文件路径 EXTTRAIL /u01/app/product/ogg_src/dirdat/et -- 定义抽取的表(支持通配符) TABLE schema1.table1; TABLE schema2.*; -- 若需过滤数据,可添加条件 TABLE schema3.orders, FILTER (WHERE amount > 1000); ``` #### **5. 注册抽取进程(仅集成模式需执行)** 若使用集成模式,需在数据库中注册抽取进程: ```sql REGISTER EXTRACT extr1 DATABASE CONTAINER (<pdb_name>) ``` #### **6. 启动抽取进程** ```sql START EXTRACT extr1 ``` #### **7. 验证配置** - 检查进程状态: ```sql INFO EXTRACT extr1, DETAIL ``` - 查看日志报告: ```sql VIEW REPORT extr1 ``` --- ### **关键参数说明** - **`USERIDALIAS`**:使用安全认证别名代替明文密码[^1]。 - **`TRANLOGOPTIONS`**:调整事务日志读取参数(如解码格式)。 - **`TABLE`**:支持通配符(`*`)或条件过滤(`FILTER`)。 --- ### **相关问题** 1. 如何为Oracle GoldenGate抽取进程配置数据过滤? 2. 集成模式(Integrated Extract)与传统模式有何性能差异? 3. 如何监控抽取进程延迟和吞吐量?[^2] 4. 如何处理抽取进程日志缺失导致的异常终止? --- ### **引用说明** - 添加进程和参数配置参考了GoldenGate基础管理流程[^1][^3]。 - 监控方法可通过Enterprise Manager插件实现可视化[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值