OracleGoldengate BigData для Kafka не создает сообщения UPDATE

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

У меня все базовые настройки работают, а INSERT и DELETE в схемах/таблицах, которые я отслеживаю, перехватываются и создают сообщения Kafka в настроенных темах (1 тема на таблицу). Пока все как и ожидалось.

Но операции UPDATE в базе данных не работают. Никакой ошибки они не выдают, а просто не появляются соответствующие сообщения по теме. Я проверил с помощью утилиты logdump, что ОБНОВЛЕНИЕ действительно распространяется в файл следа, но 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) 

EDIT: сообщение об ошибке

Я был неправ, когда сказал, что он не выдает сообщения об ошибке, я просто его не видел. В файле сброса (.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          |

person jammann    schedule 04.05.2019    source источник


Ответы (1)


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

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

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

person jammann    schedule 05.05.2019
comment
Указание UPDATERECORDFORMAT FULL в файле параметров извлечения привело к созданию всех столбцов, как я и хотел (у меня было UPDATERECORDFORMAT COMPACT из-за того, что я пытался решить проблему) - person jammann; 05.05.2019