【问题标题】:OracleGoldengate BigData for Kafka does not produce UPDATE messagesOracle Goldengate Big Data for Kafka 不生成 UPDATE 消息
【发布时间】:2019-05-04 21:40:12
【问题描述】:

我正在尝试使用 OGG BD (v12.3.2.1.1) 将所有更改从 Oracle DB (11.2.0.4) 传播到 Kafka 主题。

我的基本设置一切正常,我正在监视的模式/表的 INSERT 和 DELETE 被捕获,并在配置的主题上生成 Kafka 消息(每个表 1 个主题)。到目前为止一切都符合预期。

但是数据库上的 UPDATE 操作不起作用。他们没有产生任何错误,只是主题上没有出现相应的消息。我已经使用 logdump 实用程序验证了 UPDATE 实际上已传播到跟踪文件中,但 kafkahandler 没有接收到它。

有什么想法可能是错的吗?配置如下

OGG PRM 文件

SETENV (TZ = "UTC")
REPLICAT kafkajsn
TARGETDB LIBFILE libggjava.so SET property=dirprm/kafkajsn.props

REPORTCOUNT EVERY 1 MINUTES, RATE
REPERROR DEFAULT DISCARD

APPLYNOOPUPDATES
ALLOWNOOPUPDATES
GETTRUNCATES
GETUPDATEBEFORES

DDL INCLUDE MAPPED

GROUPTRANSOPS 100

-- all tables have an 'ID' column
MAP *.*, TARGET *.*, KEYCOLS(ID);

Kafkahandler 参数文件

gg.handlerlist = kafkahandler
gg.handler.kafkahandler.type=kafka
gg.handler.kafkahandler.KafkaProducerConfigFile=kafka_producer.properties

gg.handler.kafkahandler.topicMappingTemplate=${schemaName}_${tableName}
gg.handler.kafkahandler.keyMappingTemplate=${primaryKeys}

gg.handler.kafkahandler.SchemaTopicName=SCHEMA_CHANGES

gg.handler.kafkahandler.mode=op
gg.handler.kafkahandler.format=json_row
gg.handler.kafkahandler.format.includePrimaryKeys=true

gg.classpath=dirprm/:/etc/kafka/conf:/usr/hdp/current/kafka-broker/libs/*

javawriter.bootoptions=-Xmx1g -Xms1g -Djava.class.path=ggjava/ggjava.jar

REPLICAT 的跟踪文件的日志转储(这是一个 UPDATE ... SET comment = 'foo122' WHERE id=...)

2019/05/04 21:10:02.000.601 GGSUnifiedUpdate     Len    30 RBA 64926561
Name: ORDER  (TDR Index: 19)
After  Image:                                             Partition 12   G  s  
0c00 0000 0400 0800 0000 0400 666f 6f31 0400 0a00 | ............foo1.... 
0000 0600 666f 6f31 3232                          | ....foo122 
Before Image          Len    16 (x00000010)
BeforeColumnLen     12 (x0000000c)
Column     4 (x0004), Len     8 (x0008) 

After Image           Len    14 (x0000000e)
Column     4 (x0004), Len    10 (x000a) 

编辑:错误信息

当我说它没有产生错误消息时我错了,我只是没有看到它。在丢弃文件(.dsc)中我得到

Operation failed at seqno 45 rba 108411
Discarding record on action DISCARD on error 0
Problem replicating ORDER to ORDER
Mapping problem with unified update record (target format)...
*
TRANSACTION_COMMENT = folkjhlkjhlkjhkljl jk lj5345u
000000: 66 6f 6c 6b 6a 68 6c 6b 6a 68 6c 6b 6a 68 6b 6c |folkjhlkjhlkjhkl|
000010: 6a 6c 20 6a 6b 20 6c 6a 35 33 34 35 75          |jl jk lj5345u   |

TRANSACTION_COMMENT = folkjhlkjhlkjhkljl jk ljjhlkjhlkh5345u
000000: 66 6f 6c 6b 6a 68 6c 6b 6a 68 6c 6b 6a 68 6b 6c |folkjhlkjhlkjhkl|
000010: 6a 6c 20 6a 6b 20 6c 6a 6a 68 6c 6b 6a 68 6c 6b |jl jk ljjhlkjhlk|
000020: 68 35 33 34 35 75                               |h5345u          |

【问题讨论】:

    标签: apache-kafka oracle-golden-gate


    【解决方案1】:

    我发现了问题所在。我错过了将 TRANDATA 添加到源数据库中所有表的步骤。我以前做过,但在测试期间我重新设置了整个架构,当然这些设置丢失了。

    将其应用于所有表后,我现在开始看到更新以 Kafka 消息的形式出现。

    我仍然需要了解如何在 Kafka 消息中生成完整的前后图像,目前它只记录 ID 列和修改的列。

    【讨论】:

    • 在提取参数文件中指定UPDATERECORDFORMAT FULL 生成了所有列,正如我想要的那样(我在尝试解决问题时玩弄了UPDATERECORDFORMAT COMPACT
    猜你喜欢
    • 2018-08-26
    • 1970-01-01
    • 1970-01-01
    • 2021-10-11
    • 1970-01-01
    • 2022-01-02
    • 1970-01-01
    • 2018-03-09
    • 1970-01-01
    相关资源
    最近更新 更多