OGG-01163解决

生产系统上的一套oracle—>mysql的ogg报错:

ERROR   OGG-01163  Oracle GoldenGate Delivery for MySQL, rep15.prm:  Bad column length (220) specified for column CG_SEND_INFO4 in table SHOP88.TB_AG003, maximum allowable length is 200.

很明显,是有人修改了源端表的字段长度,而该ogg未配置ddl同步,导致目标端数据无法插入。

解决方法:
首先想到的是同样修改目标端该字段的长度为500,重启进程,报同样的错。

查看./ogg/dirdef/table.def,发现该表的字段长度仍然为修改之前的值。且源端和目标端都为修改之前的值。

源端使用defgen重新生成表定义文件,并将定义的文件scp到目标机器的.dirdef目录下:
[oracle@lddbd ggs]$ ./ggsci
GGSCI (lddbd) 2> edit params defgen

userid ggs,password ggs
defsfile /u01/app/ggs/dirdef/shop88.def
table shop88.TB_AG003;
table shop88.TB_AG001_BY_DLR_ID;

[oracle@lddbd ggs]$ ./defgen paramfile ./dirprm/defgen.prm
[oracle@lddbd ggs]$ scp ./dirprm/shop88.def 192.168.166.39:/u01/app/ggs/dirdef/


再次重启进程,还是报同样的错。

通过查询发现,虽然源端和目标端该字段的长度已修改,且def文件也都已修改,但生成的trail文件中的meta信息并不会更新。replicat进程默认按照trail文件中的meta信息进行操作。所以还是报错。

GGSCI (hzdb01) 24> edit params REP15

replicat rep15
sourcedefs /u01/app/ogg/dirdef/15table.def OVERRIDE

注意一定添加OVERRIDE选项,新的def内容才能覆盖trail中的meta信息。
启动replication进程恢复正常。

 

Ogg-JSON (Ogg with JSON metadata) 和 OGG-AVRO (Avro数据序列化格式在Ogg容器中) 都是在Ogg流媒体框架下使用的不同格式,其中Ogg-JSON通常用于存储结构化的元数据,而AVRO是一种数据格式,常用于分布式系统中。 将Ogg-JSON转换成Ogg-AVRO通常需要两个步骤: 1. **解析Ogg-JSON**:首先,你需要读取包含JSON元数据的Ogg文件,并将其内容解析为JSON对象。这通常涉及到使用支持JSON的库(如Python的json模块,JavaScript的JSON.parse()等)。 ```python import json ogg_json_data = read_ogg_file() ogg_json = json.loads(ogg_json_data) ``` 2. **序列化为AVRO**:然后,你需要将解析出的JSON对象转换为Avro格式的数据。这一步取决于你如何定义Avro schema(数据模型)。如果你已经有了对应的Avro schema,你可以使用Avro库(如Java的Apache Avro或Python的avro库)将数据编码为Avro格式。 ```python from avro.io import DatumWriter from avro.datafile import DataFileWriter # 假设schema_dict是你已经定义好的Avro schema avro_schema = avro.schema.parse(schema_dict) datum_writer = DatumWriter(avro_schema) with open('output.avro', 'wb') as out_file: datafile_writer = DataFileWriter(out_file, datum_writer, avro_schema) datafile_writer.append(ogg_json) datafile_writer.close() ``` 完成这两个步骤后,你就得到了一个名为`output.avro`的Ogg-AVRO文件。 注意:在实际操作中,这个过程可能会因为编程语言、库的选择以及特定的schema定义而有所不同。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值