资讯专栏INFORMATION COLUMN

ogg运维故障处理三例

IT那活儿 / 839人阅读
ogg运维故障处理三例

在OGG中遇到的一些故障问题,以下是我对日常OGG运维的故障一些梳理。OGG在运行中,除了mgr还有三个主要的进程,也就是我们常看的源头抽取进程Extract、源头传输进程Dump、目的端应用进程Replicat(常叫复制进程)。而我们一般出问题的大多是复制进程,由于各种各样的原因导致复制进程延迟与终止。


首先对三个进程简单介绍


1、Extract进程(捕获)

extract运行在数据库源端,负责从源端数据表或者日志中捕获数据。初始数据装载阶段;Extract进程直接从源端的数据表中抽取数据。同步变化捕获阶段;初始数据同步以后,Extract进程负责捕获源段数据的变化(DML/DDL)。


Extract进程利用其内在的checkpoint机制,周期性的检查并记录其读写的位置,通常是写入到一个本地的trail文件。这种机制是为了保证如果Extract进程终止或者操作体统宕机,我们重新启动Extract进程后,GoldenGate能够恢复到以前的状态,从上一个断点处继续往下运行,而不会有任何的数据损失。


2、Pump进程(投递)

Pump进程运行在数据库源端,作用就是:

a、源端使用了本地trail文件,Pump进程把trail以数据块的形式通过tcp/ip协议发送到目标端,这也是通常推荐的方式。


b、如果不使用trail文件,那么就是Extract进程在抽取完数据以后,直接投递到目标端。


3、Replicat进程(交付)

Replicat进程,通常我们也把它叫做复制进程。运行在目标端,负责读取目标端trail文件中的内容,并将其解析为DML或DDL语句,然后应用到目标数据库中。


和Extract进程一样,Replicat也有其内部的checkpoint机制,保证进程重启后可以从上次的记录的位置开始恢复而无数据损失的风险。


故障一:表索引不一致

一般是源端表结构增加列或减少列变化导致的ogg进程异常


起因

OGG复制进程abend


查询经过

查看进程report

发现OGG-01169Encountered an update where all key columns for target tabletablename are not present.


解决过程

首先想到是检查源端与目标端的表结构,但是查看后发现表结构是一样的,再回看报错信息,说有allkeycolumns,猜测是否出现索引造成的,那么再查看表上的索引,发现源端的表上有一个唯一索引,而目标端没有,那么我们先给目标端加上同样的唯一索引看下,重启进程并观察,发现恢复正常。

ALTER schema.tableName ADD UNIQUE schema.indexNameON (&colname);

注意建索引加schema,避免建在sys下。


故障二:表约束不一致

起因

OGG复制进程异常abend


查询经过

Report查看详细信息

由此检查源端与目标端的表结构

进库查询desc&tablename

源端

目标端

发现约束有问题,目标端的表字段AREA_ID是notnull,与源端不一致


解决办法

给目标端的表字段约束notnull去掉,允许null值,保持与源端表约束一致。

Altertable &table_name modify AREA_ID null;

进入ogg

GGSCI> start &process

重启进程,并观察,进程运行正常


故障三:源库大量DML操作导致的长时间延迟

起因

OGG延迟告警


查询经过

首先查看进程状态,发现OGG所有进程都正常

再看进程的详细统计信息

statsextract XXX,total

发现大量delete操作


解决方法

有一个参数IGNOREDELETES

询问业务人员是否可以忽略delete,征得同意以后,加入参数。

GGSCI> edit param process

加入参数,或者直接进入目录vi编辑

追加参数

IGNOREDELETES

重启进程,观察,很快恢复


备选方案

落后太多的情况,可以做OGG初始化

初始化时注意版本问题,12C到11G,需要在expdp指定版本version=11。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/130115.html

相关文章

  • DBASK问答集萃第四期

    摘要:问题九库控制文件扩展报错库的扩展报错,用的是裸设备,和还是原来大小,主库的没有报错,并且大小没有变,求解释。专家解答从报错可以看出,控制文件从个块扩展到个块时报错,而裸设备最大只支持个块,无法扩展,可以尝试将参数改小,避免控制文件报错。 链接描述引言 近期我们在DBASK小程序新关联了运维之美、高端存储知识、一森咖记、运维咖啡吧等数据领域的公众号,欢迎大家阅读分享。 问答集萃 接下来,...

    SKYZACK 评论0 收藏0
  • CSS开关按钮三例

    摘要:我们将使用纯打造一些切换开关并使其拥有类似于的用户体验。总结这是一个关于一些很好的切换开关示例这种技术使得一切完全复合语义,不会增加任何疯狂的标记,并且用纯就可以完成。获取开关按钮代码可以 我们将使用纯CSS打造一些切换开关并使其拥有类似于checkbox的用户体验。 很多时候我们都需要用户通过勾选/取消checkbox来表明他们对一些问题的答案。我们设置了一个标签,一个checkbo...

    ivan_qhz 评论0 收藏0
  • CSS开关按钮三例

    摘要:我们将使用纯打造一些切换开关并使其拥有类似于的用户体验。总结这是一个关于一些很好的切换开关示例这种技术使得一切完全复合语义,不会增加任何疯狂的标记,并且用纯就可以完成。获取开关按钮代码可以 我们将使用纯CSS打造一些切换开关并使其拥有类似于checkbox的用户体验。 很多时候我们都需要用户通过勾选/取消checkbox来表明他们对一些问题的答案。我们设置了一个标签,一个checkbo...

    longmon 评论0 收藏0

发表评论

0条评论

IT那活儿

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<