专栏首页udapp修改数据库主键长度导致GOLDENGATE复制进程无法启动提示OGG-01296&ABEND on error 0

修改数据库主键长度导致GOLDENGATE复制进程无法启动提示OGG-01296&ABEND on error 0

【背景】

前几天有个朋友发消息说,GOLDENATE复制进程无法启动,错误日志如下:

错误日志:

2019-01-11 17:56:34 ERROR OGG-01296 Error mapping from SOURCE.AA to TARGET.AA

DISCARD日志:

Mapping error to target column: DID

Mapping error to target column: DID

Current time: 2019-01-11 17:34:31

Discarded record from action ABEND on error 0 -- 提示ABEND on error 0

Aborting transaction on ./dirdat/lq beginning at seqno 15172 rba 475244077

error at seqno 15172 rba 475427432

Problem replicating SOURCE.AA toTARGET.AA

Mapping problem with insert record (source format)...

*

DID = <Raw Data> ------------------> 这个主键是数字,没有显示正确,居然是<Raw Data>

000000: d5 11

DCODE = 0001

ORTYPE = <Raw Data>

000000: c5 e4 bc fe c6 d5 cd a8 b6 a9 b5 a5 |............ |

*

Process Abending : 2019-01-11 17:34:31

【环境介绍】

os: windows 2008 R2

db:11.2.0.4

ogg:11.2.1.0.17

注释:windows环境确实有点不习惯,包括debug以及之类.更坑的是报错信息居然和linux下不一样的.

表结构:

CREATE TABLE AA(

DID NUMBER(20) NOT NULL primary key,

DCCODE VARCHAR2(50),

OTYPE VARCHAR2(50),

DIST NUMBER(18,2),

CEDATE DATE,

DDLINE DATE,

CODE VARCHAR2(50))

【分析过程】

1、使用logdump分析数据 --发现主键的16进制6061123939,

但是discard具体没有显示,只是显示<Raw Data>且000000: d5 11 ,通过d5 11通过各种几进制转换,也没有对不上.

2、对比2边表结构发现一致的.

12.2开始表定义存在trailfile header中,可以通过SCANFORMETADATA命令可以获取,如下:

logdump> SCANFORMETADATA

12.2以下版本可以通过ggsci中

capture tabledefs xx.xx来获取

3、使用goldengate sql debug模式来打印执行语句:

注释:诡异,debug模式进程直接推出,什么都没有打印出来,正常不管什么sql都可以打印出来。

debug模式日志:

2019-01-11 17:56:34 WARNING OGG-01431 Aborted grouped transaction on 'SOURCE.AA', Mapping error.

2019-01-11 17:56:34 WARNING OGG-01003 Repositioning to rba 475244077 in seqno 15172.

2019-01-11 17:56:34 WARNING OGG-01151 Error mapping from SOURCE.AA to SOURCE.AA.

2019-01-11 17:56:34 WARNING OGG-01003 Repositioning to rba 475244077 in seqno 15172.

Source Context :

SourceModule : [er.errors]

SourceID : [er/errors.cpp]

SourceFunction : [take_rep_err_action]

SourceLine : [632]

ThreadBacktrace : [11] elements

: [D:\dmsjk\gglog.dll(??1CContextItem@@UEAA@XZ+0x34f3) [0x0000000180114DE3]]

: [D:\dmsjk\gglog.dll(?_MSG_ERR_MAP_TO_TANDEM_FAILED@@YAPEAVCMessage@@PEAVCSourceContext@@AEBV?CQualDBObjName@00@ggapp@gglib@ggs@@1W4MessageDisposition@CMessageFactory@@@Z+0x138) [0x00000001800AE3D8]]

: [D:\dmsjk\replicat.exe(ERCALLBACK+0x72ae) [0x000000014009CA3E]]

: [D:\dmsjk\replicat.exe(ERCALLBACK+0x36577) [0x00000001400CBD07]]

: [D:\dmsjk\replicat.exe(ERCALLBACK+0x5c98a) [0x00000001400F211A]]

: [D:\dmsjk\replicat.exe(_ggTryDebugHook+0x13a34) [0x00000001401D05F4]]

: [D:\dmsjk\replicat.exe(_ggTryDebugHook+0x12ad3) [0x00000001401CF693]]

: [D:\dmsjk\replicat.exe(ERCALLBACK+0x5ce90) [0x00000001400F2620]]

: [D:\dmsjk\replicat.exe(CommonLexerNewSSD+0xcf20) [0x00000001402B2F70]]

: [C:\Windows\system32\kernel32.dll(BaseThreadInitThunk+0xd) [0x000000007760F56D]]

: [C:\Windows\SYSTEM32\ntdll.dll(RtlUserThreadStart+0x21) [0x0000000077743281]]

2019-01-11 17:56:34 ERROR OGG-01296 Error mapping from SOURCE.AA to SOURCE.AA.

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

* ** Run Time Statistics ** *

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

Reading ./dirdat/lq015172, current RBA 475427432, 0 records

Report at 2019-01-11 17:56:34 (activity since 2019-01-11 17:56:32)

From Table SOURCE.AA toSOURCE.AA:

# inserts: 0

# updates: 0

# deletes: 0

# discards: 1

4、分析logdump中第一列长度是10,但是表结构中显示20

经过了解,源端ogg配置ddl,直接修改数据库主键长度10变成20,目标端由于特定原因导致进程异常,ddl没有正常同步,运维人员手动执行ddl操作,修改ddl后,过一段时间,ogg运维人员发现复制进程宕机了,为了验证此过程,新建一张一样的表且主键长度为10(因为表中有数据,无法将字段长度减小)

再次开启debug模式,可以打印SQL

5、为了模拟这个场景,在linux上和windows的discard错误差异很多.

linux下discard文件:

Current time: 2019-01-14 17:00:19

Discarded record from action ABEND on error 0

Aborting transaction on ./dirdat/lq beginning at seqno 15172 rba 475427432

error at seqno 15172 rba 475427432

Problem replicating DMS.T_SH_DISCOUNT to TARGET.T_SH_DISCOUNT

Mapping problem with insert record (source format)...

*

DID = --->这个为空

DCODE = 5582

OTYPE = <Raw Data>

000000: c5 e4 bc fe c6 d5 cd a8 b6 a9 b5 a5 |............ |

Windows的discard文件:

Aborting transaction on ./dirdat/lq beginning at seqno 15172 rba 475244077

error at seqno 15172 rba 475427432

Problem replicating SOURCE.AA toTARGET.AA

Mapping problem with insert record (source format)...

*

DID = <Raw Data> ------------------> 这个主键是数字,没有显示正确,居然是<Raw Data>

000000: d5 11

DCODE = 0001

ORTYPE = <Raw Data>

000000: c5 e4 bc fe c6 d5 cd a8 b6 a9 b5 a5 |............ |

*

Process Abending : 2019-01-11 17:34:31

【总结】

1、对于修改表结构的,目标端必须将之前延迟数据应用完成后,再修改DDL

2、对于配置ddl同步的,源端和目标端会自动同步,无需人工干预.

3、多分析report日志以及discard文件找出蛛丝马迹.

本文分享自微信公众号 - udapp(gh_945028ad4abb),作者:udapp

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-01-14

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • enq HW – contention分析

    一、做性能压测,实现准实时从mysql同步数据到oracle,mysql采用分库分表,oracle是传统rac架构。源端使用全量初始化+增量解析binlog方式...

    徐靖
  • 如何使用GOLDENGATE构建数据库的审计表之一

    GOLDENGATE版本是11.2.1.0.5和12.2.0.1.1,使用2个版本主要说明12c与11g变化.

    徐靖
  • Mongodb多键索引之嵌套文档

    接上上一篇文档 Mongodb多键索引之数组,本次继续多键索引,到目前为止还没有分析业务中具体使用方式以及需求,只知道需要使用多键索引来满足不同查询,通...

    徐靖
  • 024.Zabbix告警等级机制

    告警升级可以对告警结果按自定义的时间段进行进行消息发送,并执行命令,形成一个梯度的告警处理。

    木二
  • 智慧运营-纵深监测与响应丨CSO高峰论坛议题前瞻

    随着“互联网+”和“工业4.0”等国家战略的全面铺开,大大推动了企业的数字化转型。在这个过程中,应接不暇的网络攻击手段给企业安全运营造成了重大挑战,传统安全设备...

    FB客服
  • MongoDB备份有密码的数据库

    在MongoDB使用自带的mongodump备份数据的时候,如果数据库设置了密码,那么在指定mongodump的--password 密码参数的同时,还必须指定...

    青南
  • Java基础-25(04)图形用户界面编程GUI

    package cn.itcast.view;(5) import cn.itcast.dao.UserDao; import cn.itcast.dao.i...

    Java帮帮
  • C++版 - 剑指offer 面试题19:二叉树的镜像(leetcode226. Invert Binary Tree) 题解

    提交网址: http://www.nowcoder.com/practice/564f4c26aa584921bc75623e48ca3011?tpId=13&...

    Enjoy233
  • 利用Python网络爬虫抓取微信好友的所在省位和城市分布及其可视化

    前几天给大家分享了如何利用Python网络爬虫抓取微信好友数量以及微信好友的男女比例,感兴趣的小伙伴可以点击链接进行查看。今天小编给大家介绍如何利用Py...

    Python进阶者
  • 【剑指offer】二叉树的镜像

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    喜欢ctrl的cxk

扫码关注云+社区

领取腾讯云代金券