powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Golden Gate: Ошибка Replicat OGG-00918 Key column {0} is missing from map.
14 сообщений из 14, страница 1 из 1
Golden Gate: Ошибка Replicat OGG-00918 Key column {0} is missing from map.
    #39277191
Фотография Immunitet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго времени суток!
Ситуация следующая:
Имеем одностороннюю репликацию между двумя БД. Реплицируется вся схема за исключением нескольких таблиц, поэтому маппинг идет по wildcard:
MAP MY_USER.*, TARGET MY_USER.*;

А затем уже исключения:
MAPEXCLUDE MY_USER.TABLE1;
MAPEXCLUDE MY_USER.TABLE2;

Имеем файл SOURCEDEFS на стороне приемника, со структурой БД источника.
В один момент меняем структуру БД приемника таким образом, что в реплицируемой таблице появляется новое поле да еще и в составе PK.
Тут и сказочке конец. Replicat справедливо падает с ошибкой: OGG-00918, где пишет, что поле из состава ключа отсутствует в маппинге. Оно и понятно - такого поля на источнике нет.

Вопрос:
Как разрешить этот конфликт?

P.S.
COLMAP пробовал - не подходит
(пробовал вот так MAP MY_USER.MY_TABLE,TARGET MY_USER.MY_TABLE, COLMAP (USEDEFAULTS, NEW_FIELD=0);
...
Рейтинг: 0 / 0
Golden Gate: Ошибка Replicat OGG-00918 Key column {0} is missing from map.
    #39277244
Alexander Ryndin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Immunitet,

Ну как вариант прописать keycops в replicat
...
Рейтинг: 0 / 0
Golden Gate: Ошибка Replicat OGG-00918 Key column {0} is missing from map.
    #39278345
Фотография Immunitet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander Ryndin,

Спасибо за ответ.
Попробовал сделать вот так в настойках REPLICAT:
MAP MY_USER.MY_TABLE,TARGET MY_USER.MY_TABLE, KEYCOLS (OLD_1, OLD_2, OLD_3, NEW_1);

но все равно свалилось с ошибкой:
2016-07-21 18:30:22 INFO OGG-03506 Oracle GoldenGate Delivery for Oracle, APPLY.prm: The source database character set, as determined from the trail file, is UTF-8.
2016-07-21 18:30:22 INFO OGG-06505 Oracle GoldenGate Delivery for Oracle, APPLY.prm: MAP resolved (entry MY_USER.MY_TABLE): MAP MY_USER"."MY_TABLE",TARGET MY_USER.MY_TABLE, KEYCOLS (OLD_1, OLD_2, OLD_3, NEW_1).
2016-07-21 18:30:22 INFO OGG-02756 Oracle GoldenGate Delivery for Oracle, APPLY.prm: The definition for table MY_USER.MY_TABLE is obtained from the trail file.
2016-07-21 18:30:22 INFO OGG-06511 Oracle GoldenGate Delivery for Oracle, APPLY.prm: Using following columns in default map by name: OLD_1, OLD_2, OLD_3.
2016-07-21 18:30:22 ERROR OGG-00918 Oracle GoldenGate Delivery for Oracle, APPLY.prm: Key column NEW_1 is missing from map.
2016-07-21 18:30:39 ERROR OGG-01668 Oracle GoldenGate Delivery for Oracle, APPLY.prm: PROCESS ABENDING.

Т.е. REPLICAT нашел, но проигнорировал описание новой KEYCOL.

Странным образом заработал следующий вариант:
MAP MY_USER.MY_TABLE,TARGET MY_USER.MY_TABLE, COLMAP (USEDEFAULTS,ID=ID, OLD_1=OLD_1, OLD_2=OLD_2, OLD_3=OLD_3, NEW_1=0), KEYCOLS (OLD_1, OLD_2, OLD_3, NEW_1);
MAP MY_USER.*, TARGET MY_USER.*;

Я не понимаю зачем здесь COLMAP, но без него не работает (см. выше).
...
Рейтинг: 0 / 0
Golden Gate: Ошибка Replicat OGG-00918 Key column {0} is missing from map.
    #39278347
Alexander Ryndin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имелось в виду вот так
Код: plsql
1.
MAP MY_USER.MY_TABLE,TARGET MY_USER.MY_TABLE, COLMAP (USEDEFAULTS, NEW_1=0), KEYCOLS (OLD_1, OLD_2, OLD_3);
...
Рейтинг: 0 / 0
Golden Gate: Ошибка Replicat OGG-00918 Key column {0} is missing from map.
    #39278349
Фотография Immunitet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander Ryndin,

А вот это уже интересно, но я все равно не понимаю зачем здесь COLMAP если маппинг идет по wildcard-у, а у нового поля стоит DEFAULT 0?
...
Рейтинг: 0 / 0
Golden Gate: Ошибка Replicat OGG-00918 Key column {0} is missing from map.
    #39278357
Фотография Immunitet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Цитирую документацию:
Oracle® GoldenGate Administering Oracle GoldenGate for Windows and UNIX12.6.2 Configuring Table-level Column Mapping with COLMAP
Use the COLMAP option of the MAP and TABLE parameters to:

map individual source columns to target columns that have different names.

specify default column mapping when an explicit column mapping is not needed.

Provide instructions for selecting, mapping, translating, and moving data from a source column into a target column.

По идее, моя ситуация попадает под "specify default column mapping when an explicit column mapping is not needed", но эту функцию должен выполнить wildcard по схеме - нет?

А заполнить поле нулем должна инструкция DEFAULT 0, когда получит NULL на входе - я не прав?
...
Рейтинг: 0 / 0
Golden Gate: Ошибка Replicat OGG-00918 Key column {0} is missing from map.
    #39278359
Alexander Ryndin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ImmunitetAlexander Ryndin,

А вот это уже интересно, но я все равно не понимаю зачем здесь COLMAP если маппинг идет по wildcard-у, а у нового поля стоит DEFAULT 0?Тогда COLMAP не нужен.
...
Рейтинг: 0 / 0
Golden Gate: Ошибка Replicat OGG-00918 Key column {0} is missing from map.
    #39278361
Фотография Immunitet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander Ryndin Тогда COLMAP не нужен.

Лог работы REPLICAT без COLMAP см. выше. Я, конечно, еще раз проверю, но...
...
Рейтинг: 0 / 0
Golden Gate: Ошибка Replicat OGG-00918 Key column {0} is missing from map.
    #39278383
Alexander Ryndin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ImmunitetAlexander Ryndin Тогда COLMAP не нужен.

Лог работы REPLICAT без COLMAP см. выше. Я, конечно, еще раз проверю, но...ну так у вас 4 поля были в keycols. Из за это и ошибка
...
Рейтинг: 0 / 0
Golden Gate: Ошибка Replicat OGG-00918 Key column {0} is missing from map.
    #39278398
Фотография Immunitet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander Ryndinну так у вас 4 поля были в keycols. Из за это и ошибка

Поясните? В вашем примере:

Alexander RyndinИмелось в виду вот так
Код: plsql
1.
MAP MY_USER.MY_TABLE,TARGET MY_USER.MY_TABLE, COLMAP (USEDEFAULTS, NEW_1=0), KEYCOLS (OLD_1, OLD_2, OLD_3);




3 поля в KEYCOLS. На сколько я понимаю надо указывать все KEYCOLS которые есть в БД-приемнике?
...
Рейтинг: 0 / 0
Golden Gate: Ошибка Replicat OGG-00918 Key column {0} is missing from map.
    #39278410
Alexander Ryndin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Immunitet3 поля в KEYCOLS. На сколько я понимаю надо указывать все KEYCOLS которые есть в БД-приемнике?Верно, но, по сути, у вас 3 поля ключевых, а четвертое вы константой делаете. Так что этот вариант, когда вы переопределяете PK до 3х полей должен работать. Мы ведь не теряем уникальность.

По мне и такой вариант должен работать - можно завести bug/enhancement request
Код: plsql
1.
MAP MY_USER.MY_TABLE,TARGET MY_USER.MY_TABLE, COLMAP (USEDEFAULTS, NEW_1=0), KEYCOLS (OLD_1, OLD_2, OLD_3, NEW_1);
...
Рейтинг: 0 / 0
Golden Gate: Ошибка Replicat OGG-00918 Key column {0} is missing from map.
    #39278485
Фотография Immunitet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Новые данные по проблеме (изначально я дал неверную вводную - поленился посмотреть):
У таблицы нет PK, поэтому OGG использует всю строку как PK и получает эту ошибку.
Я так понимаю, что если есть поле, которое можно указать как PK то только его и нужно прописать в KEYCOLS? Дело в том, что в таблице порядка 300 полей и прописывать их все в KEYCOLS как-то не айс.
...
Рейтинг: 0 / 0
Golden Gate: Ошибка Replicat OGG-00918 Key column {0} is missing from map.
    #39278616
Alexander Ryndin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ImmunitetНовые данные по проблеме (изначально я дал неверную вводную - поленился посмотреть):
У таблицы нет PK, поэтому OGG использует всю строку как PK и получает эту ошибку.
Я так понимаю, что если есть поле, которое можно указать как PK то только его и нужно прописать в KEYCOLS? Дело в том, что в таблице порядка 300 полей и прописывать их все в KEYCOLS как-то не айс.В keycols нужно прописывать только поля, которые уникально идентифицируют строку. Лучше, конечно, создать нормальный PK
...
Рейтинг: 0 / 0
Golden Gate: Ошибка Replicat OGG-00918 Key column {0} is missing from map.
    #39278627
Фотография Immunitet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander Ryndin,

Я так и понял - спасибо, щаз буду разработчиков пытать на предмет PK.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Golden Gate: Ошибка Replicat OGG-00918 Key column {0} is missing from map.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]