powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Oracle Streams ORA-26786
5 сообщений из 5, страница 1 из 1
Oracle Streams ORA-26786
    #39526658
Модест
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет.

Столкнулся со следующей проблемой. Пытаюсь реализовать репликацию. Во время репликации нужно менять значение одного из полей. Проблема в том, что когда в базе источнике апдейтится это поле, то возникает ошибка ORA-26786. Что конечно логично, так как данные действительно разные, я их сам поменял в момент предыдущей репликации.
Пока в голову пришел только грубый вариант, сделать ручками апдейт нужной мне строчки (её еще найти надо, я пока не знаю всегда ли это можно будет сделать), и потом вызвать lcr.execute. Вариант мне не нравится, я еще не пробовал, но он уже выглядит по-дебильному. Уверен что есть способ поизящнее.
Приведу пример.
Есть таблица
Код: plsql
1.
2.
3.
create table zzz_table
(id number,
 value number);



В ней вставляется строчка
Код: plsql
1.
insert into zzz_table values (1, 1)



Эта транзакция реплицируется в удаленную табличку
Код: plsql
1.
2.
3.
create table zzz_table_remote
(id number,
 value number)



Алгоритм изменения поля value возмем очень простой, value+1
Оракл Стримс вставляет запись
Код: plsql
1.
insert into zzz_table_remote values (1, 2)



После этого не проходит репликация на табличку zzz_table_remote, так как поля zzz_table.value и zzz_table_remote.value конфликтуют.
...
Рейтинг: 0 / 0
Oracle Streams ORA-26786
    #39527069
Filo & Peri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DBMS_APPLY_ADM.SET_PARAMETER('APPLY01', 'compare_key_only', 'N')
...
Рейтинг: 0 / 0
Oracle Streams ORA-26786
    #39527070
Filo & Peri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
то есть Y
...
Рейтинг: 0 / 0
Oracle Streams ORA-26786
    #39560178
Модест
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Filo & Peri,

Круто, спасибо. Правда я заюзал другой метод, dbms_apply_adm.copare_old_values.

Но возникла другая проблема, но похожая.

В целевой табличке есть дополнительное поле. В процессе реплицкации я cчитаю его значения, добавляю, все ок. Но при определенных условиях нужно оставлять старое значение этого доп поля. То есть по простому не апдейтить. Никак не могу придумать как это сделать. Оракл либо ставит указанное, либо налл.

Пробовал вообще не добавлять поле в dml_handler (да, я делаю через него), пробовал добавлять поле только со старыми value_type. В первом случае выставляет налл, во втором значение что добавлено вместе с полем.

Как быть?:) Неужто придется лезть и селектить из целевой таблики?
...
Рейтинг: 0 / 0
Oracle Streams ORA-26786
    #39560181
Модест
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вопрос снят. Оба способа рабочие. Тупил я:) Всем спасибо.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Oracle Streams ORA-26786
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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