GoldenGateOGG-01163 问题处理

 

GoldenGateOGG-01163 问题处理

 

 

 

一、背景

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

二、问题分析

Source 和 Target 数据库版本:11.2.0.3.0

 

SQL> select * from v$version;

 

BANNER

 

--------------------------------------------------------------------------------

 

Oracle Database 11g Enterprise EditionRelease11.2.0.1.0 - 64bit Production

 

PL/SQL Release 11.2.0.3.0 - Production

 

CORE  11.2.0.3.0      Production

 

TNS for IBM/AIX RISC System/6000: Version11.2.0.3.0 -Production

 

NLSRTL Version 11.2.0.3.0 - Production

 

 

 

Source 和 Target 的GoldenGate 版本:

 

 

 

$ ggsci -v

 

Oracle GoldenGate Command Interpreter forOracle

 

Version 11.2.1.0.13_0213878881OGGCORE_11.2.1.0.4_PLATFORMS_120323.1345

 

AIX 5L, ppc, 64bit (optimized), Oracle 11gon Mar 232012 17:01:26

 

Copyright (C) 1995, 2012, Oracle and/or itsaffiliates.All rights reserved.

 

 

 

实际环境的GoldenGate报错信息如下:

 

 

 

HX_DJ.DJ_DJHZDYLBSZ 表

 

Using the following key columns for targettableHX_DJ.DJ_DJHZDYLBSZ: LB_DM.

 

Source Context :

 

 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-25 10:05:08 ERROR   OGG-01163 Bad column length (13) specified for columnLRR_DM in tableHX_DJ.DJ_DJHZDYLBSZ, maximum allowable length is 11.

 

 

 

 

 

HX_RD.RD_YBNSRFDQGL_RDB 表

 

Using the following key columns for targettableHX_RD.RD_YBNSRFDQGL_RDB: RDPZUUID.

 

Source Context :

 

 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-26 09:17:06 ERROR   OGG-01163 Bad column length (7) specified for columnSJGSDQ in tableHX_RD.RD_YBNSRFDQGL_RDB, maximum

 

allowable length is 5.

 

 

 

 

 

HX_RD.RD_NSSBFSRDJBGB 表

 

Using the following key columns for targettableHX_RD.RD_NSSBFSRDJBGB: RDPZUUID.

 

Source Context :

 

 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-26 09:39:35 ERROR   OGG-01163 Bad column length (7) specified for columnSJGSDQ in tableHX_RD.RD_NSSBFSRDJBGB, maximumal

 

lowable length is 5.

 

 

 

HX_ZSJ.T_XT_HCBXX 表

 

Using the following key columns for targettableHX_ZSJ.T_XT_HCBXX: TABLE_NAME.

 

Source Context :

 

 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-16 23:49:10 ERROR   OGG-01163 Bad column length (3) specified for columnQUERY_FROM_DB in tableHX_ZSJ.T_XT_HCBXX, maximum allowable length is 1.

 

 

 

 

 

全功能环境配置如下:

 

Source 和 Target 的OS 版本:AIX 6100

 

# oslevel

 

6.1.0.0

 

# oslevel -r

 

6100-07

 

 

 

 

 

 

Source 和 Target 数据库版本:11.2.0.1.0

 

SQL> select * from v$version;

 

 

 

BANNER

 

--------------------------------------------------------------------------------

 

Oracle Database 11g Enterprise EditionRelease11.2.0.1.0 - 64bit Production

 

PL/SQL Release 11.2.0.3.0 - Production

 

CORE  11.2.0.3.0      Production

 

TNS for IBM/AIX RISC System/6000: Version11.2.0.3.0 -Production

 

NLSRTL Version 11.2.0.3.0 - Production

 

 

 

Source 和 Target 的GoldenGate 版本:

 

$ ggsci -v

 

Oracle GoldenGate Command Interpreter forOracle

 

Version 11.2.1.13.3_0213878881OGGCORE_11.2.1.0.4_PLATFORMS_120323.1345

 

AIX 5L, ppc, 64bit (optimized), Oracle 11gon Mar 232012 17:01:26

 

Copyright (C) 1995, 2012, Oracle and/or itsaffiliates.All rights reserved.

 

 

 

 

 

我们针对上述问题所涉及的表及相应字段分析发现,出现问题的进程的Source和Target两端表的结构完全一致,并不符合 OGG-01163 错误所描述的那样两端的字段长度不一致。

 

但是这些出现问题的表字段具有一个共性:都是char类型。

 

 

 

SQL> desc hx_zsj.t_xt_hcbxx

 

Name                Type          Nullable DefaultComments                        

 

-------------------- ------------- ------------------------------------------------

 

TABLE_NAME          VARCHAR2(150)                  。。。。。。。                              

 

CACHE_NAME          VARCHAR2(30)  Y                。。。。。。。                         

 

DATA_QUERY_SQL      VARCHAR2(750) Y                。。。。。。。。。。。。。。 L                  

 

。。。。。。。。。。。。。            VARCHAR2(15)                   。。。。。。。                          

 

。。。。。。。。。。。。。       VARCHAR2(750)                  。。。。。。。                          

 

DEFAULT_VALUE_COLUMN VARCHAR2(75)                   。。。。。。。                        

 

VERSION             VARCHAR2(6)                    。。。。。。。                      

 

XY_BJ               VARCHAR2(1)            'Y'     。。。。。。。                          

 

GENERATE_JSON       VARCHAR2(1)            'N'     是否生成压缩过的JSON字符串,只有Key/Value缓存系统生效

 

QUERY_FROM_DB        CHAR2(1)           'N'     是否实时从数据库查询缓存数据    

 

 

 

SQL> desc HX_RD.RD_NSSBFSRDJBGB

 

Name      Type           NullableDefaultComments

 

----------- -------------- -------- ---------------

 

RDPZUUID   CHAR(32)                        。。。。。。。

 

LCSLID    CHAR(32)       Y                。。。。。。。  

 

DJXH      NUMBER(20)                      。。。。。。。

 

YXQQ      DATE           Y                。。。。。。。

 

SDDZ      VARCHAR2(150)  Y                。。。。。。。

 

YZBM      CHAR(6)        Y                。。。。。。。

 

。。。。。。        DATE           Y                。。。。。。。

 

。。。。。。        VARCHAR2(3000) Y                。。。。。。。

 

。。。。。。      CHAR(11)                        。。。。。。。。。。。

 

。。。。。。        DATE                            。。。。。。。。

 

XGR_DM    CHAR(11)       Y               。。。。。。。 

 

XGRQ      DATE           Y                。。。。。。。 

 

SJGSRQ    DATE           Y                。。。。。。。日期

 

YXBZ      CHAR(1)        Y                。。。。。。。 

 

SJZZRQ    DATE           Y                。。。。。。。 

 

SPSDSX_DM CHAR(1)        Y                。。。。。。。 

 

SKJNFS_DM_1 VARCHAR2(20)   Y                。。。。。。。 

 

SPSDFS_DM_1 VARCHAR2(20)   Y                。。。。。。。代码

 

SBFS      VARCHAR2(60)   Y                申报方式

 

SJGSDQ      CHAR2(5)               '00000' 数据归属地区

 

 

 

SQL> desc HX_FP.FP_KFYJXX

 

Name    Type         NullableDefaultComments

 

--------- ------------ -------- ---------------

 

FPYJUUID CHAR(32)                      。。。。。。。 

 

SSSWJG_DM CHAR(11)                      。。。。。。。

 

FPKF_DM CHAR(32)                      。。。。。。。 

 

FPZL_DM VARCHAR2(5)                   。。。。。。。 

 

FPHLBS  NUMBER(10)                    。。。。。。。数

 

FPYJBS  NUMBER(10)                    。。。。。。。数

 

LRR_DM  CHAR(11)                     。。。。。。。

 

LRRQ    DATE                          。。。。。。。

 

XGR_DM  CHAR(11)     Y                。。。。。。。 

 

XGRQ    DATE         Y                。。。。。。。 

 

FPYJBL  NUMBER(16,6)                         

 

SJGSRQ  DATE         Y                数据归属日期

 

SJGSDQ    CHAR(5)               '00000' 数据归属地区

 

 

 

查阅OracleGoldenGate 官方文档,《ErrotMessage Reference》上面有对该问题的描述:

 

OGG-01163: Bad column length ({3,number,0})specified for column {1} in table {0},

maximum allowable length is {2,number,0}.

Cause: There was an internal errorconverting trail file data. A buffer overflow

was detected.

Action: Contact Oracle Support.

 

 

众所周知,Oracle在处理 char 类型字段时,会对该字段自动补位,但是即便如此,字段长度也不会超出char类型所定义的长度。为了一看究竟是不是如官方文档所说(GoldenGate在转换trail文件数据时发生内部错误,系统检测到buffer溢出),我们利用GoldenGate自带的logdump工具对产生该错误时读取的trail文件进行了分析,

 

 

 

SQL> desc HX_FP.FP_KFYJXX

 

Name    Type         NullableDefaultComments

 

--------- ------------ -------- ---------------

 

FPYJUUID CHAR(32)                      。。。。。。。

 

SSSWJG_DM CHAR(11)                      。。。。。。。

 

FPKF_DM CHAR(32)                      。。。。。。。

 

FPZL_DM VARCHAR2(5)                   。。。。。。。

 

FPHLBS  NUMBER(10)                    。。。。。。。数

 

FPYJBS  NUMBER(10)                    。。。。。。。数

 

LRR_DM  CHAR(11)                     。。。。。。。

 

LRRQ     DATE                          。。。。。。。

 

XGR_DM  CHAR(11)     Y                。。。。。。。

 

XGRQ    DATE         Y                。。。。。。。

 

FPYJBL  NUMBER(16,6)                         

 

SJGSRQ  DATE         Y                数据归属日期

 

SJGSDQ    CHAR(5)               '00000' 数据归属地区

 

Trail 文件dump:

通过inforeplicat rep,showch 可以查看所在的trail文件,并可以查看seqno和rba。

 

Logdump 15 >open ./dirdat/zc000063

 

Current LogTrail is/home/oracle/ggs/dirdat/zc000063

 

Logdump 16 >ghdr on

 

Logdump 17 >detail on

 

Logdump 18 >detail data

 

Logdump 19 >usertoken on

 

Logdump 20 >pos 653304

 

Reading forward from RBA 653304

 

Logdump 21 >n

 

___________________________________________________________________

 

Hdr-Ind   :     E (x45)     Partition :    .  (x04)

 

UndoFlag  :     . (x00)     BeforeAfter:     A (x41)

 

RecLength :   270 (x010e)   IO Time   : 2012/10/16 11:36:51.721.932 

 

IOType    :     5 (x05)     OrigNode  :  255  (xff)

 

TransInd  :     . (x03)     FormatType :     R (x52)

 

SyskeyLen :     0 (x00)     Incomplete :     . (x00)

 

AuditRBA  :        500       AuditPos   : 18925072

 

Continued :     N (x00)     RecCount  :    1  (x01)

 

 

 

2012/10/16 11:36:51.721.932 Insert               Len   270 RBA 653304

 

Name: HX_FP.FP_KFYJXX

 

After Image:                                           Partition 4   G  s 

 

 00000022 0000 64623834 3732 6166 6563 3137 3432 | ..."..db8472afec1742

 

 38373862 33623063 6562 6366 3361 3538 3263 0001 | 878b3b0cebcf3a582c..

 

 000d0000 31353030 3130 3933 3830 3000 0200 2200 | ....15001093800...".

 

 00316266 32626231 3962 3961 3634 6463 3239 6562 | .1bf2bb19b9a64dc29eb

 

 39346635 65613131 3330 6536 6300 0300 0900 0000 | 94f5ea1130e6c.......

 

 05343230 33360004 000a 0000 0000 0000 0000 0064 | .42036.............d

 

 0005000a 00000000 0000 0000 0005 0006 000d 0000 | ....................

 

Column    0(x0000), Len    34 (x0022)

 

 00006462 38343732 6166 6563 3137 3432 3837 3862 | ..db8472afec1742878b

 

 33623063 65626366 3361 3538 3263               |3b0cebcf3a582c

 

Column    1(x0001), Len    13 (x000d)

 

 00003135 30303130 3933 3830 30                 |..15001093800

 

Column    2(x0002), Len    34 (x0022)

 

 00003162 66326262 3139 6239 6136 3464 6332 3965 | ..1bf2bb19b9a64dc29e

 

 62393466 35656131 3133 3065 3663               |b94f5ea1130e6c

 

Column    3(x0003), Len     9 (x0009)

 

 00000005 34323033 36                           |....42036

 

Column    4(x0004), Len    10 (x000a)

 

 00000000 00000000 0064                         |.........d

 

Column    5(x0005), Len    10 (x000a)

 

 00000000 00000000 0005                         |..........

 

Column    6(x0006), Len    13 (x000d)

 

 00003135 30303130 3932 3231 30                 |..15001092210

 

Column    7(x0007), Len    21 (x0015)

 

 00003230 31322d31 302d 3136 3a31 313a 3332 3a33 | ..2012-10-16:11:32:3

 

 31                                              | 1

 

Column    8(x0008), Len    13 (x000d)

 

 ffff0000 00000000 0000 0000 00                 |.............

 

Column    9(x0009), Len    21 (x0015)

 

 ffff3139 30302d30 312d 3031 3a30 303a 3030 3a30 | ..1900-01-01:00:00:0

 

 30                                              | 0

 

Column   10(x000a), Len    10 (x000a)

 

 00000000 00000000 c350                         |.........P

 

Column   11(x000b), Len    21 (x0015)

 

 ffff3139 30302d30 312d 3031 3a30 303a 3030 3a30 | ..1900-01-01:00:00:0

 

 30                                               | 0

 

Column   12 (x000c), Len     9 (x0009) 

 

 00000005 30303030 30                           |....00000

 

 

 

 

 

我们发现实际trail文件中相应字段的长度都要比表定义的长度要长(猜测可能跟Oracle内部机制有关),但是实际发生问题的字段长度要比定义长度长很多(9vs5)。定位问题该问题是由bug导致。考虑通过配置OGG同步不同定义的表来规避此问题。

三、问题解决

在源端用defgen生成定义文件,然后再传到目标端,并在复制进程指定,并去掉assumetargetdefs参数,具体操作步骤如下:

--在源端数据库OGG安装目录下创建配置文件source.prm

$ cd /goldengate

$ vim source.prm

defsfile ./dirdef/source.def,purge

userid ogg, PASSWORD ogg

table username.tablename;

table username.tablename;

···

 

--生成数据库表的定义文件

$ cd /goldengate

$ ./defgen paramfile source.prm

 

--使用ftp将./dirdef/source.def上传到目标端./dirdef目录下

 

--在复制进程中去掉ASSUMETARGETDEFS,加上如下参数:

SOURCEDEFS ./dirdef/source.def

注:抓取进程可以考虑不新增加新的抓取进程,但是应用进程需新增一个,新增加的应用进程需增加参数:HANDLECOLLISIONS(查重功能)。并且启动前须作操作alterreplggg extseqno 37, extrba 1883。(此时的extseqno和extrba为处理失败时的值)

 这些值怎么查看呢?

info 进程名称,showch

                                                                                                                                                                                                     如有问题请联系    王杰  15314117200

                                                                                                                                                                                                     

 

 

 

你可能感兴趣的:(GoldenGateOGG-01163 问题处理)