|
|
|
ASA - репликация данных
|
|||
|---|---|---|---|
|
#18+
Столкнулся с таким финтом: на удаленной базе ИЗ ТРИГГЕРА пересчитал таблицу с промежуточными итогами (специально, чтобы данные не пришли в консолидированную базу. В удаленной базе ее слегонца перекосило благодаря некоторым несанкционированным операциям, а заново выливать всю базу из-за одной таблицы было лень), эта таблица участвует в репликации. С первым же пакетом репликации получил кучу гадости: таблица решила таки прийти в консолидированную базу, при этом естественно страшно материлась потому что данные в ней уже были (соответственно получили при каждой попытке INSERT'а отлуп - первичный ключ уже существует). Я ничего не понял, даже специально скачал русскую доку по репликации (она мелькала в этом форуме). Там русским по белому написано: ДАННЫЕ, ФОРМИРУЮЩИЕСЯ В ТРИГГЕРЕ, В РЕПЛИКАЦИИ НЕ УЧАСТВУЮТ. Тогда что это было??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2004, 21:24 |
|
||
|
ASA - репликация данных
|
|||
|---|---|---|---|
|
#18+
Обратите внимание на ключ -t при запуске dbremote ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2004, 13:46 |
|
||
|
ASA - репликация данных
|
|||
|---|---|---|---|
|
#18+
Вообще-то, насколько я помню, -t как раз таки делает то что мне НЕ нужно - включает в репликацию то, что происходит в триггере. На самом деле, это удобно-делать всякие гадости в триггере и знать что они никуда не приедут. А сейчас получилась фигня редкостная: 3 часа агент ругался на то, что я сделал в триггере. Трындец. :( Все матерились, громче всех я ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2004, 01:50 |
|
||
|
ASA - репликация данных
|
|||
|---|---|---|---|
|
#18+
А из триггера случайно процедурка, функция или событие не вызываются ? Если да - то ищите там ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2004, 13:18 |
|
||
|
ASA - репликация данных
|
|||
|---|---|---|---|
|
#18+
Не вызывается там ничего. Триггер специальный, называется bugfix и сделан на таблицу с таким же названием, она в репликации не участвует :) Все что там делается - пересчитывается промежуточная таблица (несколько select во временную, потом truncate нужной таблицы и заливка в нее посчитанных данных) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2004, 18:39 |
|
||
|
ASA - репликация данных
|
|||
|---|---|---|---|
|
#18+
В общем ASA считает (и правильно считает на мой взгляд) что удаленная и консолидированная базы обе имеют одинаковые триггеры на реплицируемые данные. Соотвественно все то что произошло в базе под воздействием триггера в сообщение репликации не попадает, предполагается что во второй базе отработает аналогичный триггер. Если во второй базе такого триггера нету, то тогда и надо использовать ключик -t. Однако, существует странная баго-фича, заключающаяся в том, что триггеры в процессе репликации запускаются в какой-то отдельной сессии. И все изменения произведенные триггером не видны для обрабатываемого сообщения. В итоге получаем следующую картину: На базе ДБ1 1) Клиент сделал что-то, что инициировало триггер. 2) Триггер изменил что-то в базе (строку добавл например). 3) Клиент в этой же сессии видит результат работы триггера и вручную делает исправление данных после триггера. 4) Клиент посылает коммит. А на базе ДБ2 вместо клиента работает dbremote и тут обнаруживается что изменения в таблице сделаные триггером не видны. Однако есть запись о ручном исправлении данных - dbremote пытается наложить эти изменения. Что получится в итоге - никому не известно. Потом следует коммит и только после него становится видно что там триггер чего-то сделал. Метод лечения - клиент должен делать коммит после пункта номер 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2004, 19:58 |
|
||
|
|

start [/forum/topic.php?fid=55&tid=2014629]: |
0ms |
get settings: |
7ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
85ms |
get topic data: |
10ms |
get forum data: |
4ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
| others: | 14ms |
| total: | 196ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...