|
|
|
Golden Gate: Ошибка Replicat OGG-00918 Key column {0} is missing from map.
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток! Ситуация следующая: Имеем одностороннюю репликацию между двумя БД. Реплицируется вся схема за исключением нескольких таблиц, поэтому маппинг идет по 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); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2016, 16:13:14 |
|
||
|
Golden Gate: Ошибка Replicat OGG-00918 Key column {0} is missing from map.
|
|||
|---|---|---|---|
|
#18+
Immunitet, Ну как вариант прописать keycops в replicat ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2016, 17:11:53 |
|
||
|
Golden Gate: Ошибка Replicat OGG-00918 Key column {0} is missing from map.
|
|||
|---|---|---|---|
|
#18+
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, но без него не работает (см. выше). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2016, 09:12:17 |
|
||
|
Golden Gate: Ошибка Replicat OGG-00918 Key column {0} is missing from map.
|
|||
|---|---|---|---|
|
#18+
Имелось в виду вот так Код: plsql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2016, 09:15:27 |
|
||
|
Golden Gate: Ошибка Replicat OGG-00918 Key column {0} is missing from map.
|
|||
|---|---|---|---|
|
#18+
Alexander Ryndin, А вот это уже интересно, но я все равно не понимаю зачем здесь COLMAP если маппинг идет по wildcard-у, а у нового поля стоит DEFAULT 0? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2016, 09:17:00 |
|
||
|
Golden Gate: Ошибка Replicat OGG-00918 Key column {0} is missing from map.
|
|||
|---|---|---|---|
|
#18+
Цитирую документацию: 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 на входе - я не прав? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2016, 09:24:25 |
|
||
|
Golden Gate: Ошибка Replicat OGG-00918 Key column {0} is missing from map.
|
|||
|---|---|---|---|
|
#18+
ImmunitetAlexander Ryndin, А вот это уже интересно, но я все равно не понимаю зачем здесь COLMAP если маппинг идет по wildcard-у, а у нового поля стоит DEFAULT 0?Тогда COLMAP не нужен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2016, 09:26:05 |
|
||
|
Golden Gate: Ошибка Replicat OGG-00918 Key column {0} is missing from map.
|
|||
|---|---|---|---|
|
#18+
Alexander Ryndin Тогда COLMAP не нужен. Лог работы REPLICAT без COLMAP см. выше. Я, конечно, еще раз проверю, но... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2016, 09:28:13 |
|
||
|
Golden Gate: Ошибка Replicat OGG-00918 Key column {0} is missing from map.
|
|||
|---|---|---|---|
|
#18+
ImmunitetAlexander Ryndin Тогда COLMAP не нужен. Лог работы REPLICAT без COLMAP см. выше. Я, конечно, еще раз проверю, но...ну так у вас 4 поля были в keycols. Из за это и ошибка ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2016, 09:52:49 |
|
||
|
Golden Gate: Ошибка Replicat OGG-00918 Key column {0} is missing from map.
|
|||
|---|---|---|---|
|
#18+
Alexander Ryndinну так у вас 4 поля были в keycols. Из за это и ошибка Поясните? В вашем примере: Alexander RyndinИмелось в виду вот так Код: plsql 1. 3 поля в KEYCOLS. На сколько я понимаю надо указывать все KEYCOLS которые есть в БД-приемнике? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2016, 10:08:18 |
|
||
|
Golden Gate: Ошибка Replicat OGG-00918 Key column {0} is missing from map.
|
|||
|---|---|---|---|
|
#18+
Immunitet3 поля в KEYCOLS. На сколько я понимаю надо указывать все KEYCOLS которые есть в БД-приемнике?Верно, но, по сути, у вас 3 поля ключевых, а четвертое вы константой делаете. Так что этот вариант, когда вы переопределяете PK до 3х полей должен работать. Мы ведь не теряем уникальность. По мне и такой вариант должен работать - можно завести bug/enhancement request Код: plsql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2016, 10:30:18 |
|
||
|
Golden Gate: Ошибка Replicat OGG-00918 Key column {0} is missing from map.
|
|||
|---|---|---|---|
|
#18+
Новые данные по проблеме (изначально я дал неверную вводную - поленился посмотреть): У таблицы нет PK, поэтому OGG использует всю строку как PK и получает эту ошибку. Я так понимаю, что если есть поле, которое можно указать как PK то только его и нужно прописать в KEYCOLS? Дело в том, что в таблице порядка 300 полей и прописывать их все в KEYCOLS как-то не айс. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2016, 11:53:59 |
|
||
|
Golden Gate: Ошибка Replicat OGG-00918 Key column {0} is missing from map.
|
|||
|---|---|---|---|
|
#18+
ImmunitetНовые данные по проблеме (изначально я дал неверную вводную - поленился посмотреть): У таблицы нет PK, поэтому OGG использует всю строку как PK и получает эту ошибку. Я так понимаю, что если есть поле, которое можно указать как PK то только его и нужно прописать в KEYCOLS? Дело в том, что в таблице порядка 300 полей и прописывать их все в KEYCOLS как-то не айс.В keycols нужно прописывать только поля, которые уникально идентифицируют строку. Лучше, конечно, создать нормальный PK ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2016, 13:21:57 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39278485&tid=1887830]: |
0ms |
get settings: |
8ms |
get forum list: |
23ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
37ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
63ms |
get tp. blocked users: |
1ms |
| others: | 206ms |
| total: | 353ms |

| 0 / 0 |
