Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Репликация multimaster / 13 сообщений из 13, страница 1 из 1
03.04.2003, 16:09
    #32132902
Репликация multimaster
Работает репликация базы ПАРУС8 в режиме multimaster.

Настроено автоматическое разрешение конфликтов на уровне данных в режиме Site Priority

Как настроить автоматическое разрешение конфликтов на уровне транзакций(?):
1) одновременно отрабатывается на двух сайтах один и тот же документ
2) конфликт данных этого документа автоматически разрешается в режиме Site Priority

НО!!!

3) через триггеры генерятся данные в других таблицах, и при репликации этих данных возникают ошибки по constrain (получается дублирование данных, которые должны быть уникальные)

Если сам документ ORACLE идентифицирует как один и тот же документ, то вторичные (итоговые) данные, которые создаются при его отработке физически разные, а логически одинаковые.

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

Какие варианты?
...
Рейтинг: 0 / 0
03.04.2003, 17:13
    #32132949
Denis Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Репликация multimaster
Я еще не дочитал сам до конца, но в Oracle9i Replication Management API Reference аккурат после описания Site Priority Conflict Resolution Methods идет описание Creating Conflict Resolution Methods for Uniqueness Conflicts:

http://download-west.oracle.com/docs/cd/B10501_01/server.920/a96568/rarconfl.htm#17618

Правда, тут рассматривается только уведомление о наличии конфликта, но зато ниже идет Creating Conflict Avoidance Methods for Delete Conflicts:

http://download-west.oracle.com/docs/cd/B10501_01/server.920/a96568/rarconfl.htm#19153

Подобные вещи не рассматривались? Т.е. ты разрешаешь конфликт на одном из сайтов, остается передать данные на другой. Немного непонятно, если репликация multimaster, то почему один из сайтов назван главным, а другой подчиненным? Или под этим подразумевается Site Priority?
...
Рейтинг: 0 / 0
03.04.2003, 17:53
    #32133005
softy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Репликация multimaster
Репликация базы в режиме multimaster подразумевает абсолютно идеентичные
базы. Разница между ними только в том, что один из них master-defenition site -
с котрого происходило создание репликации. А во всём остальном никакой
разницы. Поэтому если у тебя начинают делать update одной и той-же
логической записи в разных базах - то естественно что изменеения пойдут в
обе стороны. Поэтому будут и конфликты.


Я подозреваю, что ты используешь асинхронную репликацию.

Я например использую асинхронную мультимастер- репликацию, но я никогда не использую
одновременно обе БД.

Вероятно тебе нужна синхронная репликация. Вот выдержка из доки по репликации.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
Synchronous (Real-Time) Data Propagation
Asynchronous data propagation is the normal configuration for advanced 
replication environments. However, Oracle also supports synchronous data 
propagation for applications with special requirements. Synchronous data 
propagation occurs when an application updates a local replica of a table, and 
within the same transaction also updates all other replicas of the same table. 
Consequently, synchronous data replication is also called real-time data 
replication. Use synchronous replication only when applications require that 
replicated sites remain continuously synchronized. 


Note: A replication system using real-time propagation of replication data is highly
 dependent on system and network availability because it can function only when 
all system sites are concurrently available. 


Figure  1 - 12  Synchronous Data Replication Mechanisms
 
As Figure  1 - 12  shows, Oracle uses the same system of internal database triggers
 to generate RPCs that replicate data-level changes to other replication sites to 
support synchronous, row-level data replication. However, Oracle does not defer 
the execution of such RPCs. Instead, data replication RPCs execute within the 
boundary of the same transaction that modifies the local replica. Consequently, a 
data-level change must be possible at all sites that manage a replicated table or 
else a transaction rollback occurs. 

You can create a replicated environment with some sites propagating changes 
synchronously while others use asynchronous propagation (deferred transactions). 

Replication Conflicts and Synchronous Data Replication

When a shared ownership system replicates all changes synchronously (real-time 
replication), replication conflicts are cannot occur. With real-time replication, 
applications use distributed transactions to update all replicas of a table at the 
same time. As is the case in nondistributed database environments, Oracle 
automatically locks rows on behalf of each distributed transaction to prevent all 
types of destructive interference among transactions. Real-time replication 
systems can prevent replication conflicts. However, this type of system is highly 
dependent on system and network availability because it can function only when 
all system sites are available. 


Хочу оборатить внимание на
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
When a shared ownership system replicates all changes synchronously (real-time 
replication), replication conflicts are cannot occur. With real-time replication, 
applications use distributed transactions to update all replicas of a table at the 
same time. As is the case in nondistributed database environments, Oracle 
automatically locks rows on behalf of each distributed transaction to prevent all 
types of destructive interference among transactions. Real-time replication 
systems can prevent replication conflicts. 
...
Рейтинг: 0 / 0
04.04.2003, 07:47
    #32133196
Репликация multimaster
Репликация асинхронная. Сайты идентичные, но один является мастер-сайтом и в методе Site priority определены приоритеты сайтов на изменение и удаление данных. При этом разделены на каждом сайте секвенции для генерации идентификаторов.

Денис, уточняю, проблема не на уровне данных, на котором репликация настроена и все работает корректно с автоматическим разрешением конфликтов при одновременном изменении/удалении.

Моя проблема на уровне управления транзакциями: одновременная отработка документа в ПАРУСе порождает длинные транзакции с изменением многих связанных таблиц и созданием новых данных в итоговых таблиц (например, товарные остатки). Так вот, именно в итоговых таблицах определены constraints, которые проверяют уникальность по нескольким полям одновременно: товарный остаток по партии может быть определен только однократно. При встречных транзакциях на каждом сайте порождается одна запись по товарному остатку ->> возникает ошибка.

Спасибо, жду новых советов
...
Рейтинг: 0 / 0
04.04.2003, 09:40
    #32133247
softy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Репликация multimaster
Мда....Для кого я всё это писал....

"Работает репликация базы ПАРУС8 в режиме multimaster.... "

"...Сайты идентичные, но один является мастер-сайтом..."

Почему люди такие упрямые?

В режиме multimaster - оба сайта являются мастер-сайтами.
Неужели это так трудно для понимания?
...
Рейтинг: 0 / 0
04.04.2003, 10:54
    #32133344
Denis Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Репликация multimaster
Т.е. ты умеешь в рамках одной транзакции определить, какую из записей дубликатов следует оставить, и если не было бы constraint'а, то все бы отработало правильно?
...
Рейтинг: 0 / 0
04.04.2003, 12:22
    #32133474
Репликация multimaster
Уточняю: один из сайтов является master definition site (извиняюсь за неточность, спасибо за замечание).

Также настроены приоритеты сайтов для одновременного изменения одних и тех же данных на разных сайтах.

Денис - если одна запись одновременно изменена (или на одном сайте удалена, а на втором изменена), то метод site priority автоматически разрешает конфликт в пользу сайта с большим приоритетом. Но это стандартные функции и они работают, когда ORACLE может идентифицировать изменение ОДНИХ И ТЕХ ЖЕ данных (логически и физически) на РАЗНЫХ сайтах.

Проблема на другом уровне (описана выше).
...
Рейтинг: 0 / 0
04.04.2003, 12:24
    #32133480
Репликация multimaster
Репликация асинхронная, потому что это требования клиента: ненадежный канал связи
...
Рейтинг: 0 / 0
04.04.2003, 12:41
    #32133499
softy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Репликация multimaster
В этом случае по определению неверно, что пользователи разных БД могут
изменять одни и те-же данные.

Если канал совсем упал, при асинхронной репликации отложенные транзакции
будут копиться до тех пор пока не восстановиться канал и не запуститься
процесс перекачки.

И за это время, пока нет связи между данными - юзеры даже не будут знать,
что связь между базами пропала. За это время можно с обеих сторон одни и
теже данные заизменять множество раз.


Вот конкретный пример:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
 1 ) Есть база банка БД1 в г. Москве и БД2 в г.Питере. Базы находятся в 
асинхронной репликации. Рассотрим таблицу счетов. Скажем у клиента 
Иванова на счету лежит реально  600 , 000 . 00  рублей. Эти данные есть в обеих 
БД.
 2 ) Упал канал в 15ч00мин на  2  часа
 3 ) В Москве в 15ч05мин приходит г.Иванов и получает  600 , 000 .00р. На счету у 
г.Иванова в БД1 0р. 
 4 ) В Питере в 15ч08мин приходит человек с доверенностью от г.Иванова на 
получение денег. Кассир честно лезет в БД2 и выдаёт человеку  600 , 000 .00р.
 5 ) В 17ч.00мин связь восстанавливается. В результате после перекачки 
отложенных транзакций получаем В БД1 и в БД2 на счету - 600 , 000 .00р или 
если программа умная скажет что неверная операция.
 6 ) Счастливые и довольные г.Иванов и его подельник едут отдыхать на Канары
 7 ) DBA по имени Сергей Минюров вызывает директор банка и молча кладёт 
пистолет на стол и выходит из кабинета.
 8 ) Конец
...
Рейтинг: 0 / 0
04.04.2003, 12:54
    #32133520
Репликация multimaster
SB, о словах я не спорю, пример прямо как в кино.

Но он так же подтвреждает, что помимо локальной транзакции на каждом из сайте необходима глобальная транзакция (но клиенту требуется асинхронный режим).

Соответственно, для критичных процедур (типа выдачи 600000 рублей г. Иванову) при долгосрочном потере связи локальные транзакции должны ОТКАТЫВАТЬСЯ автоматически.
Для встречных транзакций требуется ТО ЖЕ САМОЕ.
...
Рейтинг: 0 / 0
04.04.2003, 13:00
    #32133529
Denis Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Репликация multimaster
У тебя сторонняя система, поэтому ИМХО вносить изменения в ее структуру/код следует в самую последнюю очередь. Остаются штатные средства Оракла разрешения конфликтов при асинхронной репликации. Следовательно, фразу "репликация настроена и все работает корректно с автоматическим разрешением конфликтов при одновременном изменении/удалении." я бы уточнил: репликация настроена и все работает при изменении/удалении _именно_ одной записи. Теперь надо настраивать репликацию на разрешение конфликтов уникальности при добавлении записей с разных сайтов. Из документации мне показались интересны следующие главы:

Oracle9i Replication Management API Reference
Configure Conflict Resolution
Creating Conflict Resolution Methods for Uniqueness Conflicts
http://download-west.oracle.com/docs/cd/B10501_01/server.920/a96568/rarconfl.htm#17618

Но если не удается разрешить конфликт "with Oracle's pre-built conflict resolution methods" , то может быть стоит рассмотреть следующее:

User-Defined Conflict Resolution Methods
http://download-west.oracle.com/docs/cd/B10501_01/server.920/a96568/raruserc.htm#9601

ИМХО можно определить, какая из записей-дубликатов лишняя, и удалить ее, либо каки-то еще способом обеспечить уникальность. Я правильно понял задачу?
...
Рейтинг: 0 / 0
04.04.2003, 13:03
    #32133533
softy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Репликация multimaster
"при долгосрочном потере связи локальные транзакции должны ОТКАТЫВАТЬСЯ автоматически. "

Может быть они и откатятся. Но деньги уже нет.

Если проблемы с каналом и нельзя сделать синхронную репликацию.
При этом у пользователей физически находящихся должна быть возможность изменения общих данных:
В этом случае необходимо сделать так:
1) База с которой непосредственно работают пользователи должна быть только одна.
2)Может быть множество других баз на которые будут перетекать данные из рабочей, но данные на этих серверах не должны изменяться непосредственно юзерами.
3)Для обеспечения работы с базой необходимо использовать http-сервер по SSL соединению(https), реализованный с помощью ПО напримео на сервлетах итд итп.

Можно использовать TerminalServer на БД. Тогда опять-же все будут работать с одной базой.
...
Рейтинг: 0 / 0
04.04.2003, 14:26
    #32133640
Репликация multimaster
Решение с терминалом оптимальное. И клиент практически согласился. А репликация остается вариантом резервирования данных и обеспечения работы удаленного офиса при аварийной ситуации.

Вопрос принципиальный: можно настроить репликацию в ОРАКЛе для управления локальными транзакциями или это в принципе невозможно.

Иначе 600000 действительно уйдут.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Репликация multimaster / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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