您的位置:首页 > 编程语言 > Go语言

GoldenGateOGG-01163问题处理

2018-03-07 22:47 369 查看

GoldenGateOGG-01163问题处理

一、背景

近来计量中心项目管理测试环境GoldenGate同步配置针对部分表的同步持续不断地报OGG-01163错误,导致涉及部分表同步的所有Replicat进程Abended,使GoldenGate停止工作。出现该问题的Table的结构完全一致,出现问题后,无法正常启动Replicat进程。

二、问题分析

实际环境的GoldenGate报错信息如下:HX_DJ.DJ_DJHZDYLBSZ表Usingthe following key columns for targettableHX_DJ.DJ_DJHZDYLBSZ: LB_DM.SourceContext :SourceModule:[ggstd.conv.endian]SourceID:[/scratch/aime1/adestore/views/aime1_staxk11/oggcore/OpenSys/src/gglib/ggstd/lecnv.c]SourceFunction:[convCompSQL(char*, file_def *,rowlen_t)]SourceLine:[591]2012-10-2510:05:08 ERROR OGG-01163 Bad column length (13) specified forcolumnLRR_DM in tableHX_DJ.DJ_DJHZDYLBSZ
4000
, maximum allowable length is11.HX_RD.RD_YBNSRFDQGL_RDB表Usingthe following key columns for targettableHX_RD.RD_YBNSRFDQGL_RDB:RDPZUUID.SourceContext :SourceModule:[ggstd.conv.endian]SourceID[/scratch/aime1/adestore/views/aime1_staxj16/oggcore/OpenSys/src/gglib/ggstd/lecnv.c]SourceFunction:[convCompSQL(char*, file_def *,rowlen_t)]SourceLine:[591]2012-10-2609:17:06 ERROR OGG-01163 Bad column length (7) specified forcolumnSJGSDQ in tableHX_RD.RD_YBNSRFDQGL_RDB, maximumallowablelength is 5.HX_RD.RD_NSSBFSRDJBGB表Usingthe following key columns for targettableHX_RD.RD_NSSBFSRDJBGB:RDPZUUID.SourceContext :SourceModule:[ggstd.conv.endian]SourceID:[/scratch/aime1/adestore/views/aime1_staxk11/oggcore/OpenSys/src/gglib/ggstd/lecnv.c]SourceFunction:[convCompSQL(char*, file_def *,rowlen_t)]SourceLine:[591]2012-10-2609:39:35 ERROR OGG-01163 Bad column length (7) specified forcolumnSJGSDQ in tableHX_RD.RD_NSSBFSRDJBGB, maximumallowablelength is 5.HX_ZSJ.T_XT_HCBXX表Usingthe following key columns for targettableHX_ZSJ.T_XT_HCBXX:TABLE_NAME.SourceContext :SourceModule:[ggstd.conv.endian]SourceID:[/scratch/aime1/adestore/views/aime1_staxk11/oggcore/OpenSys/src/gglib/ggstd/lecnv.c]SourceFunction:[convCompSQL(char*, file_def *,rowlen_t)]SourceLine:[591]2012-10-1623:49:10 ERROR OGG-01163 Bad column length (3) specified forcolumnQUERY_FROM_DB in tableHX_ZSJ.T_XT_HCBXX, maximum allowablelength is 1.我们针对上述问题所涉及的表及相应字段分析发现,出现问题的进程的Source和Target两端表的结构完全一致,并不符合OGG-01163错误所描述的那样两端的字段长度不一致。但是这些出现问题的表字段具有一个共性:都是char类型。SQL>desc HX_RD.RD_NSSBFSRDJBGBName Type Nullable DefaultComments…SJGSDQ     CHAR2(5)              '00000' 数据归属地区

SQL>desc HX_FP.FP_KFYJXXName Type Nullable DefaultComments--------------------- -------------------------------------------------------------------.....SJGSDQ   CHAR(5)              '00000' 数据归属地区

查阅OracleGoldenGate官方文档,《ErrotMessageReference》上面有对该问题的描述:OGG-01163:Bad column length ({3,number,0})specified for column {1} in table{0},maximumallowable length is {2,number,0}.Cause:There was an internal errorconverting trail file data. A bufferoverflowwasdetected.Action:Contact Oracle Support.众所周知,Oracle在处理char类型字段时,会对该字段自动补位,但是即便如此,字段长度也不会超出char类型所定义的长度。为了一看究竟是不是如官方文档所说(GoldenGate在转换trail文件数据时发生内部错误,系统检测到buffer溢出),我们利用GoldenGate自带的logdump工具对产生该错误时读取的trail文件进行了分析,SQL>desc HX_FP.FP_KFYJXXName Type Nullable DefaultComments--------------------- -------- --------------------------------1.FPYJUUID CHAR(32) 。。。。。。。2.SSSWJG_DM CHAR(11) 。。。。。。。3.FPKF_DM CHAR(32) 。。。。。。。4.FPZL_DM VARCHAR2(5) 。。。。。。。5.FPHLBS NUMBER(10) 。。。。。。。6.FPYJBS NUMBER(10) 。。。。。。。7.LRR_DM CHAR(11) 。。。。。。。8.LRRQ DATE 。。。。。。。9.XGR_DM CHAR(11) 。。。。。。。10.XGRQ DATE 。。。。。。。11.FPYJBL NUMBER(16,6) 。。。。。。。12.SJGSRQ DATE 。。。。。。。13.SJGSDQ    CHAR(5)              '00000' 数据归属地区
Trail文件dump:通过inforeplicatrep,showch 可以查看所在的trail文件,并可以查看seqno和rba。Logdump15 >open ./dirdat/zc000063CurrentLogTrail is/home/oracle/ggs/dirdat/zc000063Logdump16 >ghdr onLogdump17 >detail onLogdump18 >detail dataLogdump19 >usertoken onLogdump20 >pos 653304Readingforward from RBA 653304

Logdump21 >n___________________________________________________________________Hdr-Ind:E (x45) Partition: .(x04)UndoFlag:. (x00) BeforeAfter: A (x41)RecLength:270 (x010e) IO Time: 2012/10/16 11:36:51.721.932IOType:5 (x05) OrigNode: 255 (xff)TransInd:. (x03) FormatType : R (x52)SyskeyLen: 0 (x00) Incomplete : . (x00)AuditRBA: 500 AuditPos : 18925072Continued:N (x00) RecCount: 1 (x01)2012/10/1611:36:51.721.932 Insert Len 270 RBA 653304Name:HX_FP.FP_KFYJXXAfterImage: Partition 4Gs000000220000 64623834 3732 6166 6563 3137 3432 | ..."..db8472afec17423837386233623063 6562 6366 3361 3538 3263 0001 | 878b3b0cebcf3a582c..000d000031353030 3130 3933 3830 3000 0200 2200 | ....15001093800...".0031626632626231 3962 3961 3634 6463 3239 6562 | .1bf2bb19b9a64dc29eb3934663565613131 3330 6536 6300 0300 0900 0000 | 94f5ea1130e6c.......0534323033360004 000a 0000 0000 0000 0000 0064 | .42036.............d0005000a00000000 0000 0000 0005 0006 000d 0000 | ....................Column 0(x0000), Len 34 (x0022) //可以看到列是从0开始的,那么13列,就是第12Col0000646238343732 6166 6563 3137 3432 3837 3862 | ..db8472afec1742878b3362306365626366 3361 3538 3263|3b0cebcf3a582cColumn1(x0001), Len 13 (x000d)0000313530303130 3933 3830 30|..15001093800Column 2(x0002), Len 34 (x0022)0000316266326262 3139 6239 6136 3464 6332 3965 | ..1bf2bb19b9a64dc29e6239346635656131 3133 3065 3663|b94f5ea1130e6cColumn3(x0003), Len 9 (x0009)0000000534323033 36|....42036Column4(x0004), Len 10 (x000a)0000000000000000 0064|.........dColumn 5(x0005), Len 10 (x000a)0000000000000000 0005|..........Column 6(x0006), Len 13 (x000d)0000313530303130 3932 3231 30 |..15001092210Column 7(x0007), Len 21 (x0015)0000323031322d31 302d 3136 3a31 313a 3332 3a33 | ..2012-10-16:11:32:331|1Column 8(x0008), Len 13 (x000d)ffff000000000000 0000 0000 00|.............Column 9(x0009), Len 21 (x0015)ffff313930302d30 312d 3031 3a30 303a 3030 3a30 | ..1900-01-01:00:00:030|0Column 10(x000a), Len 10 (x000a)0000000000000000 c350 |.........PColumn 11(x000b), Len 21 (x0015)ffff313930302d30 312d 3031 3a30 303a 3030 3a30 | ..1900-01-01:00:00:030 | 0Column  12 (x000c), Len     9 (x0009) 0000000530303030 30 |....00000我们发现实际trail文件中相应字段的长度都要比表定义的长度要长(猜测可能跟Oracle内部机制有关),但是实际发生问题的字段长度要比定义长度长很多(9vs5)。定位问题该问题是由bug导致。考虑通过配置OGG同步不同定义的表来规避此问题。

三、问题解决

在源端用defgen生成定义文件,然后再传到目标端,并在复制进程指定,并去掉assumetargetdefs参数,具体操作步骤如下:--在源端数据库OGG安装目录下创建配置文件source.prm$cd /goldengate$vim source.prmdefsfile./dirdef/source.def,purgeuseridogg, PASSWORD oggtableusername.tablename;tableusername.tablename;···--生成数据库表的定义文件$cd /goldengate$./defgen paramfile source.prm--使用ftp将./dirdef/source.def上传到目标端./dirdef目录下--在复制进程中去掉ASSUMETARGETDEFS,加上如下参数:SOURCEDEFS./dirdef/source.def注:抓取进程可以考虑不新增加新的抓取进程,但是应用进程需新增一个,新增加的应用进程需增加参数:HANDLECOLLISIONS(查重功能)。并且启动前须作操作alterreplgggextseqno 37, extrba 1883。(此时的extseqno和extrba为处理失败时的值) 这些值怎么查看呢?info进程名称,showch
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  OGG 01163