OGG-01163 关于varchar2(1)的bug解决方法

在目标端的replicat进程报如下错:
OGG-01163  Bad column length (6) specified for column SHANGPCK_RULE in table LMIS.JC_DWZL, maximum allowable length is 1.
状况:
源表与目标表异构.
字段SHANGPCK_RULE 存在于源表,目标表不需要这个字段。
源表与目标表之间做了def定义
由于源表新增加了字段,就要重新生成def文件。平常这样是正常 的。可次无论我重复多少次,都是报同样错。

期间的测试:
1。 在目标表增加字段 ,开启replicat 仍然报同样的错
2。 在目标端指定字段集,仍然报同样错
SETENV (NLS_LANG="AMERICAN_AMERICA.ZHS16GBK")
3。 在目标表增加字段,并增加字段长度依然报错


最后发现网上旧版本的ogg 关于char(1)的bug报告。报错是一样的,但是官方说在新版本已经修复这个bug。而且我用的ogg是最新版本的。

于是构想修改源表的SHANGPCK_RULE 字段使其长度更改。与开发沟通不合作。只好另外想办法了。

修改不了源表的字段长度,那就修改def文件关于SHANGPCK_RULE长度吧。

原先hb.def文件是如下:
YEWLXR_PHONE      64     40     2384  0  0 1 0     40     40      0 0 0 0 0 1    0 0   0    1       -1      0 0 0
ZHIG_PHONE        64     40     2430  0  0 1 0     40     40      0 0 0 0 0 1    0 0   0    1       -1      0 0 0
SHANGPCK_RULE     64      1     2476  0  0 1 0      1      1      0 0 0 0 0 1    0 0   0    1       -1      0 0 0
BANKACCOUNT       64     30     2482  0  0 1 0     30     30      0 0 0 0 0 1    0 0   0    1       -1      0 0 0
End of definition

第一次更改,想把SHANGPCK_RULE长度改为2
YEWLXR_PHONE      64     40     2384  0  0 1 0     40     40      0 0 0 0 0 1    0 0   0    1       -1      0 0 0
ZHIG_PHONE        64     40     2430  0  0 1 0     40     40      0 0 0 0 0 1    0 0   0    1       -1      0 0 0
SHANGPCK_RULE     64      2     2476  0  0 1 0      2      2      0 0 0 0 0 1    0 0   0    1       -1      0 0 0
BANKACCOUNT       64     30     2482  0  0 1 0     30     30      0 0 0 0 0 1    0 0   0    1       -1      0 0 0
End of definition

运行replicat 之后报错终止运行:

2016-08-23 11:51:48  ERROR   OGG-01163  Bad column length (6) specified for column SHANGPCK_RULE in table LMIS.JC_DWZL, maximum allowable length is 2.

maximum allowable length 由1 变成2

第二次更改SHANGPCK_RULE 长度为6
YEWLXR_PHONE      64     40     2384  0  0 1 0     40     40      0 0 0 0 0 1    0 0   0    1       -1      0 0 0
ZHIG_PHONE        64     40     2430  0  0 1 0     40     40      0 0 0 0 0 1    0 0   0    1       -1      0 0 0
SHANGPCK_RULE     64      6     2476  0  0 1 0      6      6      0 0 0 0 0 1    0 0   0    1       -1      0 0 0
BANKACCOUNT       64     30     2482  0  0 1 0     30     30      0 0 0 0 0 1    0 0   0    1       -1      0 0 0
End of definition

运行replicat 之后正常运行。

就这样用这种另类方法解决了这个问题 。这应该是一个bug.
ogg版本号:

 Version 12.1.2.1.0 OGGCORE_12.1.2.1.0_PLATFORMS_140920.0203       Windows x64 (optimized), Oracle 11g on Sep 20 2014 09:16:32


源端extract上发生OGG-01163错误,解决办法如上,就是在源端的配置 文件中添加def定义文件,然后修改长度。

如下:

extract Pump
dynamicresolution
userid ggs,password ggs

rmthost 10.3.99.99, mgrport 7809 compress
sourcedefs F:\ogg\dirdef\gx.def
rmttrail D:\ogg\dirdat\gx


并修改文件F:\ogg\dirdef\gx.def 中相关字段的长度






你可能感兴趣的:(oracle,ogg)