zoukankan      html  css  js  c++  java
  • 应用复制进程abend,报错OGG-01163字段列长度不够

    本篇文档根据实际遇到的情况进行更新。

    一、报错

     ERROR OGG-01163 Bad column length (8) specified for column STATUS_ID in table <SCHEMA>.<TABLE>, maximum allowable length is 4.

    二、报错问题分析

    可能性一、源端目标端字段长度不一致

    应用报错的列字段长度不匹配[源端varchar2(10), 目标端 varchar2(9)]   ,对表的列在目标端进行添加长度

    alter table xx modify column_name varchar2(10);

    可能性二、字符集不同,源端目标端字段长度一致;

    [例如源端gbk,目标端utf8, 表源端目标端均为varchar2(10),但是由于utf8 存储中文3字节>gbk 2字节,导致字段长度还是不够】

    SQL> alter table a modify name varchar2(20 char);  --需要注意,次modify操作,申请表TM6号锁!!!

    建议在执行修改操作之前查询有没有事务,id1= table object_id

    SQL> SELECT TYPE,ID1,ID2,LMODE,REQUEST FROM V$LOCK WHERE ID1=89941;

    可能性三、源端目标端字段长度一致、异构环境不同操作系统,需要更新Def文件

    操作系统跨平台ogg同步时,由于未配置ddl同步或无法配置ddl同步,源端进行ddl操作加大字段长度等,很可能导致目标端应用进程abend,提示长度不匹配,长度不足,需要更新def文件定义。

    可能性四、源端目标端字段长度一致,相同操作系统,源端加大字段长度限制,但是未规范操作重启抽取进程,导致dump文件中记录的字段限制未更新!!!

    如下争对可能性四,进行主要说明!

    2.1 复制进程报错分析

    参考文档
    Replicat Abends with OGG-01163 after Executing Alter Table Modify at Source and Target Databases (Doc ID 2468892.1)    
    OGG-01163 Bad Column Length (111) Specified For Column (Doc ID 2151580.1)    
    
    复制进程abend
    GGSCI> info R_1
    
    REPLICAT   r1 Last Started 2020-11-16 10:40   Status ABENDED
    Checkpoint Lag       00:00:04 (updated 81:43:36 ago)
    Log Read Checkpoint  File /ogg/dirdat/by000003105
                         2020-11-13 00:57:56.003931  RBA 14279905

    ERROR   OGG-01163  Bad column length (38) specified for column C_NAME in table O.O, maximum allowable length is 32.

    目标端C_NAME VARCHAR2(256)
    源端C_NAME VARCHAR2(256)  数据库字符集相同,不存在转换问题!

    使用logdump工具查询

    [oracle ogg]$ ./logdump
    Oracle GoldenGate Log File Dump Utility for Oracle
    Version 19.1.0.0.4 OGGCORE_19.1.0.0.0_PLATFORMS_191017.1054
    Copyright (C) 1995, 2019, Oracle and/or its affiliates. All rights reserved.
    Logdump 68 >open /ogg/dirdat/by000003105
    Current LogTrail is /ogg/dirdat/by000003105
    Logdump 69 >ghdr on
    Logdump 70 >detail on
    Logdump 71 >detail data
    Logdump 72 >usertoken on
    Logdump 74 >FILTER INClude FILENAME O.O
    Logdump 75 >
    Logdump 75 >n
    Scanned 10000 records, RBA 2953351, 2020/11/13 00:56:18.004.767
    Hdr-Ind : E (x45) Partition : . (x00)
    UndoFlag : . (x00) BeforeAfter: A (x41)
    RecLength : 2600 (x0a28) IO Time : 2020/06/16 17:23:27.304.968
    IOType : 170 (xaa) OrigNode : 2 (x02)
    TransInd : . (x03) FormatType : R (x52)
    SyskeyLen : 0 (x00) Incomplete : . (x00)
    DDR/TDR Idx: (001, 013) AuditPos : 543954400
    Continued : N (x00) RecCount : 1 (x01)
    2020/06/16 17:23:27.304.968 Metadata Len 2600 RBA 4957448
    Table Name: 
    *
    1)Name 2)Data Type 3)External Length 4)Fetch Offset 5)Scale 6)Level
    7)Null 8)Bump if Odd 9)Internal Length 10)Binary Length 11)Table Length 12)Most Sig DT
    13)Least Sig DT 14)High Precision 15)Low Precision 16)Elementary Item 17)Occurs 18)Key Column
    19)Sub DataType 20)Native DataType 21)Character Set 22)Character Length 23)LOB Type 24)Partial Type
    *
    TDR version: 11
    Definition for table 
    Record Length: 9912
    Columns: 33
    ······
    C_NAME 64 32 76 0 0 1 0 32 32 0 0 0 0 0 1 0 0 0 1 -1 0 0 0

    2.2 源端OGG抽取进程重启

    源端重启进程
    GGSCI  2> info E1
    EXTRACT    E1  Last Started 2020-06-16 17:22   Status RUNNING
    GGSCI  6> info E1,detail
      Trail Name                                Seqno        RBA     Max MB Trail Type
      ./dirdat/by                                1265  210223246        500 EXTTRAIL  
    
    GGSCI () 3> stop E1
    GGSCI () 5> start E1
    GGSCI () 8> info E1,detail
      Trail Name                                 Seqno        RBA     Max MB Trail Type
      ./dirdat/by                                1266    1421356        500 EXTTRAIL  
      
    GGSCI () 10> info P1,detail
    Log Read Checkpoint  File /ogg2/by000001266
                         2020-11-16 11:15:22.000000  RBA 2509450
      Trail Name                                Seqno        RBA     Max MB Trail Type
      ./dirdat/by                                3162  175791621        200 RMTTRAIL  
    
    目标端再次对最新的dump文件进行logdump
    -rw-r----- 1 oracle oinstall 181049628 Nov 16 11:17 ./dirdat/by000003162
    Logdump 78 >open ./dirdat/by000003162
    ghdr on
    detail on
    detail data  
    usertoken on  
    FILTER INClude FILENAME 0.O
    n
    Scanned     10000 records, RBA    2919190, 2020/11/16 11:24:29.990.984 
    open ./dirdat/by000003163
    open ./dirdat/by000003164
    2020/11/16 11:59:34.816.667 Metadata             Len 3466 RBA 46097932 
    Table Name: O.O
    *
     1)Name          2)Data Type        3)External Length  4)Fetch Offset      5)Scale         6)Level
     7)Null          8)Bump if Odd      9)Internal Length 10)Binary Length    11)Table Length 12)Most Sig DT
    13)Least Sig DT 14)High Precision  15)Low Precision   16)Elementary Item  17)Occurs       18)Key Column
    19)Sub DataType 20)Native DataType 21)Character Set   22)Character Length 23)LOB Type     24)Partial Type
    *
    TDR version: 11
    Definition for table 
    Record Length: 15848
    Columns: 44
    ······
    C_NAME           64    256      300  0  0 1 0    256    256      0 0 0 0 0 1    0 0   0    1       -1      0 0 0
    
    解决方法: 1.target alter REPLICAT R_BYPRI1,extseq 3162,extrba 0
    跳过报错的rba,一直跳到源端重启抽取进程后,输出的最新的dump文件,最新的dump文件中表的结构更新到256,可以完成同步!!! 但是这样会导致丢失很多数据变化
    2.target add def file
    争对这一个表,单独新增一个OGG复制进程,报错的OGG复制进程删除这个报错表的同步信息。 新增一个进程,使用def文件指定!!!采用异构的方式进行同步 ogg 19版本,一个复制进程,使用ASSUMETARGETDEFS +sourcedefs ./dirdef/r1.def,OVERRIDE 不兼容

    2020-11-16 13:20:53 ERROR OGG-10107 (r1.prm) line 269: Parsing error, parameter [assumetargetdefs] conflicts with parameter [sourcedefs].

    ASSUMETARGETDEFS
    map ······
    --map 0.0,target 0.0;
    add
    sourcedefs ./dirdef/r1.def,OVERRIDE

    map 0.0,target 0.0;

    2.3 问题处理

    选择新建一个OGG复制进程,使用def文件进行,采用异构方法进行同步;

    原abend进程删除同步错误的表信息,恢复同步;

    新增一个ckpt表
    OGG>dblogin USERID ogg,PASSWORD cc
    OGG>add checkpointtable ogg.ckpt_rep03 
    新建复制进程
    OGG>add rep r3,exttrail /ogg/dirdat/by checkpointtable ogg.ckpt_rep03 
    OGG>edit param r3 
    replicat r3
    USERID ogg,PASSWORD CC
    discardfile .
    /dirrpt/rep_03.DSC,append,megabytes 1024
    reperror
    default,abend
    HANDLECOLLISIONS
    report at
    02:01
    sourcedefs .
    /dirdef/R1.def,OVERRIDE
    map 0.0,target 0.0;
    OGG>alter replicat R3,extseqno 3105,extrba 14279905
  • 相关阅读:
    数梦工场:新思维、新技术下的互联网+政务
    计算成就价值_数据实现梦想——达科在DT时代转型历程的分享
    AliSQL开源功能特性
    mysql 索引的使用
    sql经典面试题
    数据库理论知识点
    sql语句面试练习
    数据库范式的选择使用
    sql常用语句
    数据库范式
  • 原文地址:https://www.cnblogs.com/lvcha001/p/12850627.html
Copyright © 2011-2022 走看看