OracleGoldengate BigData для Kafka не выдает сообщения ОБНОВЛЕНИЕ - PullRequest
1 голос
/ 05 мая 2019

Я экспериментирую с OGG BD (v12.3.2.1.1), чтобы распространить все изменения из базы данных Oracle (11.2.0.4) на темы Kafka.

У меня все основные настройки работают, и INSERTи УДАЛИТЬ к схемам / таблицам, которые я отслеживаю, фиксируются и генерируют сообщения Kafka на настроенные темы (1 тема на таблицу).Пока все как положено.

Но операции UPDATE над базой данных не работают.Они не выдают никаких ошибок, но просто не появляются соответствующие сообщения в теме.Я проверил с помощью утилиты logdump, что UPDATE фактически передается в файл трассировки, но kafkahandler не находит его.

Есть идеи, что может быть не так?Конфигурации приведены ниже

Файл PRM OGG

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

Logdump файла журнала для REPLICAT (это было ОБНОВЛЕНИЕ ...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          |

1 Ответ

0 голосов
/ 05 мая 2019

Я выяснил, в чем проблема.Я пропустил шаг ДОБАВИТЬ TRANDATA во все таблицы в исходной базе данных.Я делал это раньше, но во время тестирования я переустанавливал всю схему, и, конечно, эти настройки отсутствовали.

После применения ко всем таблицам я теперь начинаю видеть обновления, поступающие в виде сообщений Kafka.

Мне все еще нужно выяснить, как создавать полные изображения до / после в сообщении Kafka, в настоящее время в нем регистрируются только столбцы идентификаторов и измененные.

...