微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

oracle中如何解决OGG-01163问题

小编给大家分享一下oracle中如何解决OGG-01163问题,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

故障现象:
复制进程Abended,在日志中报了以下错误
2018-02-23 21:28:36  ERROR   OGG-01163  Oracle GoldenGate Delivery for Oracle, rlis.prm:  Bad column length (21) specified for column BATCHNO in table LISBASE.LCSIGNLIST, maximum allowable length is 20.

故障分析:
经询问得知,因应用产生超过现有字段长度的数据,应用运维人员在未知会DBA的情况下直接修改了表的字段定义,且该字段为主键。从而导致了该错误

故障解决
因为GoldenGate的复制进程认是从trail文件获取表的Meta data信息,在抓取进程未重启的情况下,trail文件中表的Meta data信息并不会更新。所以我们需要手工介入,让复制进行使用新的Meta data.

步骤:
1、在源库使用defgen工具生成表的定义文件
//LCSIGNLIST_def.prm
DEFSFILE ./dirdef/LCSIGNLIST.def
USERID ggs@LISDB_BEQ, PASSWORD AACAAAAAAAAAAALAOGDEBEAACFOGYIVGrdIIDGQHSBPDRHXF, ENCRYPTKEY DEFAULT
TABLE LISBASE.LCSIGNLIST;

defgen ParaMFILE dirdef/LCSIGNLIST_def.prm
这时会生成一个LCSIGNLIST.def文件,这其实就是个文本文件,按照OGG的描述方式对表的定义进行了描述:

*+- Defgen version 5.0, Encoding ISO-8859-1
*
* DeFinitions created/modified  2018-02-23 23:33
*
*  Field descriptions for each column entry:
*
*     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 Significant DT
*    13    Least Significant DT
*    14    High Precision
*    15    Low Precision
*    16    Elementary Item
*    17    Occurs
*    18    Key Column
*    19    Sub Data Type
*    20    Native Data Type
*    21    Character Set
*    22    Character Length
*    23    LOB Type
*    24    Partial Type
*
Database type: ORACLE
Character set ID: zhs16gbk
National character set ID: UTF-16
Locale: neutral
Case sensitivity: 14 14 14 14 14 14 14 14 14 14 14 14 11 14 14 14
TimeZone: +08:00
*
DeFinition for table LISBASE.LCSIGNLIST
Record length: 632
Syskey: 0
Columns: 16
BATCHNO           64     30        0  0  0 1 0     30     30      0 0 0 0 0 1    0 1   0    1       -1      0 0 0
CONTNO            64     20       36  0  0 1 0     20     20      0 0 0 0 0 1    0 1   0    1       -1      0 0 0
MANAGECOM         64     10       62  0  0 1 0     10     10      0 0 0 0 0 1    0 0   0    1       -1      0 0 0
MAKEOPERATOR      64     60       78  0  0 1 0     60     60      0 0 0 0 0 1    0 0   0    1       -1      0 0 0
MAKEDATE         192     19      144  0  0 1 0     19     19     19 0 5 0 0 1    0 0   0   12       -1      0 0 0
MAKETIME          64      8      166  0  0 1 0      8      8      0 0 0 0 0 1    0 0   0    1       -1      0 0 0
MODIFYDATE       192     19      180  0  0 1 0     19     19     19 0 5 0 0 1    0 0   0   12       -1      0 0 0
MODIFYTIME        64      8      202  0  0 1 0      8      8      0 0 0 0 0 1    0 0   0    1       -1      0 0 0
RECEIVEOPERATOR   64     60      216  0  0 1 0     60     60      0 0 0 0 0 1    0 0   0    1       -1      0 0 0
RECEIVEDATE      192     19      282  0  0 1 0     19     19     19 0 5 0 0 1    0 0   0   12       -1      0 0 0
RECEIVETIME       64      8      304  0  0 1 0      8      8      0 0 0 0 0 1    0 0   0    1       -1      0 0 0
REASON            64    255      318  0  0 1 0    255    255      0 0 0 0 0 1    0 0   0    1       -1      0 0 0
STATE             64      1      578  0  0 1 0      1      1      0 0 0 0 0 1    0 0   0    1       -1      0 0 0
STANDBYFLAG1      64     10      584  0  0 1 0     10     10      0 0 0 0 0 1    0 0   0    1       -1      0 0 0
STANDBYFLAG2      64     10      600  0  0 1 0     10     10      0 0 0 0 0 1    0 0   0    1       -1      0 0 0
STANDBYFLAG3      64     10      616  0  0 1 0     10     10      0 0 0 0 0 1    0 0   0    1       -1      0 0 0
End of deFinition

在该案例中被修改的列是BATCHNO,原来的长度为20,我们可以看到定义文件中此时已经是30,前面的64为数据类型,64表示VARCHAR2类型。

2、将定义文件传到目标库(或者复制粘贴也可以),修改复制进行的参数,增加
SOURCEDEFS ./dirdef/LCSIGNLIST.def OVERRIDE
这个参数的意思是从LCSIGNLIST.def获取表的定义,OVERRIDE必须,这样才能覆盖trail中的Meta信息。
将复制进程起来后,在日志中我们可以观察到:
2018-02-23 23:33:14  INFO    OGG-02752  Oracle GoldenGate Delivery for Oracle, rlis.prm:  The deFinition for table LISBASE.LCSIGNLIST from deFinitions file /u01/app/oracle/product/ogg/gghome/12.2.0.1/gghome_1/dirdef/LCSIGNLIST.def overrides the table Metadata from the trail.
LCSIGNLIST.def已经使用了,复制进程也正常进行。

看完了这篇文章,相信你对“oracle中如何解决OGG-01163问题”有了一定的了解,如果想了解更多相关知识,欢迎关注编程之家行业资讯频道,感谢各位的阅读!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐