powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Репликация в DB2 9.7. Можно ли НЕ реплицировать удаление данных?
23 сообщений из 23, страница 1 из 1
Репликация в DB2 9.7. Можно ли НЕ реплицировать удаление данных?
    #38026240
slix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день. Задача следующая: создать копию БД и с какой-либо периодичностью переносить в эту копию данные с основной базы. При этом данные в основной базе могут удаляться, но при переносе в копию удалений быть не должно.

DB2 9.7. Рассматриваю стандартный механизм sql репликации. Два момента работы - запись изменений и применение изменений. Возможно ли исключить в какой-либо момент все операции delete?
...
Рейтинг: 0 / 0
Репликация в DB2 9.7. Можно ли НЕ реплицировать удаление данных?
    #38026293
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
slix,

Здравствуйте.

Возможно.
Defining triggers on CD tables to prevent specific rows from being captured
Если надо не на постоянной основе запрещать репликацию удалений, а на время, то можете создать свою контрольную таблицу с флагом и проверять его в WHEN.
...
Рейтинг: 0 / 0
Репликация в DB2 9.7. Можно ли НЕ реплицировать удаление данных?
    #38027896
slix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mark Barinstein,
Спасибо за ссылку. Попробовал, работает. Теперь возникла другая проблема. В большинстве таблиц определено автогенерируемое поле ID. Программа Apply не может перенести изменения в таблицу назначения, т.к. это поле указывается явно. Каким способом лучше это обойти? Пока что приходит на ум только убрать этот столбец при регистрации в программе Capture.
...
Рейтинг: 0 / 0
Репликация в DB2 9.7. Можно ли НЕ реплицировать удаление данных?
    #38027928
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
slixВ большинстве таблиц определено автогенерируемое поле ID. Программа Apply не может перенести изменения в таблицу назначения, т.к. это поле указывается явно. Каким способом лучше это обойти? Пока что приходит на ум только убрать этот столбец при регистрации в программе Capture.В таблицу-цель что-то ещё пишет, кроме репликации?
Если нет - удалите автогенерацию поля в таблице-цели.
Если да, и хочется, чтобы ID в цели всё равно генерировался, сделайте generated by default но так, чтобы диапазоны генерируемых значений и значений, которые реплицируются, не совпадали. Например, генерируйте значения в минус в одной базе и в плюс - в другой.
...
Рейтинг: 0 / 0
Репликация в DB2 9.7. Можно ли НЕ реплицировать удаление данных?
    #38031379
slix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Так и не удаётся настроить репликацию. Восстанавливаю базу меняя ей название. После запуска capture и apply в некоторых таблицах target данные вообще удаляются. Похоже они удаляются во всех, но затем переносятся из основной(тут проблема с некоторыми таблицами). Использую asnclp. Сейчас возникают вопросы:
как сделать так, чтобы данные из таблиц назначения не удалялись?
можно ли как-то увидеть более конкретный лог по каждой таблице?


Прилагаю часть скрипта asnclp
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
CREATE REGISTRATION (DB2ADMIN.ATTRIBUTES) DIFFERENTIAL REFRESH STAGE CDATTRIBUTES;
CREATE REGISTRATION (DB2ADMIN.ATTRIBUTES_HISTORY) DIFFERENTIAL REFRESH STAGE CDATTRIBUTES_HISTORY;
CREATE REGISTRATION ...(остальные таблицы)

CREATE SUBSCRIPTION SET SETNAME SETWF00 APPLYQUAL WFQUAL1 ACTIVATE YES TIMING INTERVAL 1 START DATE "2012-10-30" TIME "01:00:00.000000";

CREATE MEMBER IN SETNAME SETWF00 APPLYQUAL WFQUAL1 ACTIVATE YES SOURCE  DB2ADMIN.ATTRIBUTES TARGET NAME DB2ADMIN.ATTRIBUTES DEFINITION IN USERSPACE1 TYPE USERCOPY COLS ALL REGISTERED;
CREATE MEMBER IN SETNAME SETWF00 APPLYQUAL WFQUAL1 ACTIVATE YES SOURCE  DB2ADMIN.ATTRIBUTES_HISTORY TARGET NAME DB2ADMIN.ATTRIBUTES_HISTORY DEFINITION IN USERSPACE1 TYPE USERCOPY COLS ALL REGISTERED;
CREATE MEMBER IN ...(остальные таблицы)
...
Рейтинг: 0 / 0
Репликация в DB2 9.7. Можно ли НЕ реплицировать удаление данных?
    #38031385
slix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mark Barinstein,

да. спасибо за ответ. Во всех таблицах-целях удалил автогенерацию.
...
Рейтинг: 0 / 0
Репликация в DB2 9.7. Можно ли НЕ реплицировать удаление данных?
    #38032221
slix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Логи подробные программы apply идут в WFQUAL1.TRC. По ним понял что нужно внешние ключи ещё поудалять в таблицах базы назначения. После этого данные перенеслись.
Однако вопрос с удалением так и остался. Когда происходит удаление из таблиц назначения?
...
Рейтинг: 0 / 0
Репликация в DB2 9.7. Можно ли НЕ реплицировать удаление данных?
    #38032437
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
slixКогда происходит удаление из таблиц назначения?Когда вы выполняете холодный старт capture, либо capture не может продолжить после предыдущего запуска.
Перед тем, как начать реплициовать, первоначально по-умолчанию запускается процесс синхронизация таблиц, который и удаляет сначала все записи из цели.
...
Рейтинг: 0 / 0
Репликация в DB2 9.7. Можно ли НЕ реплицировать удаление данных?
    #38034080
slix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mark Barinstein,

А можно ли как-нибудь отключить этот "процесс синхронизации по умолчанию"? Хотелось бы вообще запретить удаление из таблицы цели.
...
Рейтинг: 0 / 0
Репликация в DB2 9.7. Можно ли НЕ реплицировать удаление данных?
    #38034139
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
slixА можно ли как-нибудь отключить этот "процесс синхронизации по умолчанию"? Хотелось бы вообще запретить удаление из таблицы цели.
IBMSNAP_REGISTER.DISABLE_REFRESH=1
...
Рейтинг: 0 / 0
Репликация в DB2 9.7. Можно ли НЕ реплицировать удаление данных?
    #38035707
slix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mark Barinstein, огромное спасибо за ответы.

Сейчас вроде бы всё работает. После установки IBMSNAP_REGISTER.DISABLE_REFRESH=1 вручную(запросом) выходила ошибка. Решил её через Центр репликации, выполнив на сете "Полное обновление" - "Вручную...".
Также в данный момент на базе назначения удаляю все автогенерируемые поля и все внешние индексы. Может быть подскажете ещё способ обойти удаление внешних индексов.
...
Рейтинг: 0 / 0
Репликация в DB2 9.7. Можно ли НЕ реплицировать удаление данных?
    #38035759
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
slixТакже в данный момент на базе назначения удаляю все автогенерируемые поля и все внешние индексы. Может быть подскажете ещё способ обойти удаление внешних индексов.Если я правильно понял, то речь идёт о внешник ключах, а не внешних индексах.
Зачем вы их удаляете?
Чем они вам мешают?
...
Рейтинг: 0 / 0
Репликация в DB2 9.7. Можно ли НЕ реплицировать удаление данных?
    #38035829
slix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mark Barinstein,

Когда во время репликации переносятся данные по таблице со внешним ключом, то возможно данные в таблицу, на которую ссылается ключ, ещё не были перенесены. В итоге выходит ошибка, что нет такого ключа в связанной таблице.
Возможно я как-то не так зарегистрировал источники или цели. В инфоцентре db2 все примеры сводятся к репликации одной таблицы.
...
Рейтинг: 0 / 0
Репликация в DB2 9.7. Можно ли НЕ реплицировать удаление данных?
    #38035838
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
slixКогда во время репликации переносятся данные по таблице со внешним ключом, то возможно данные в таблицу, на которую ссылается ключ, ещё не были перенесены. В итоге выходит ошибка, что нет такого ключа в связанной таблице.Вы должны все связанные ссылочной целостностью таблицы включать в один subscription set, тогда такие ошибки не должны появляться.
Planning the number of subscription-set members
...
Рейтинг: 0 / 0
Репликация в DB2 9.7. Можно ли НЕ реплицировать удаление данных?
    #38035952
slix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mark Barinstein,
все таблицы в одном subscription set. Проверю ещё раз с ключами, может быть ошибка в другом была.
...
Рейтинг: 0 / 0
Репликация в DB2 9.7. Можно ли НЕ реплицировать удаление данных?
    #38059388
slix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mark BarinsteinslixА можно ли как-нибудь отключить этот "процесс синхронизации по умолчанию"? Хотелось бы вообще запретить удаление из таблицы цели.
IBMSNAP_REGISTER.DISABLE_REFRESH=1

При установке вышеуказанного параметра запрещается полное обновление. Причём, программа Apply начинает выдавать ошибку, пока через "Центр репликации" не установлю "обновление вручную".
Однако мне необходима возможность полного обновления, но чтобы при этом данные не удалялись из таблицы назначения.

То есть механизм FULL_REFRESH почти устраивает. Можно ли как-то запретить Apply удалять данные, при этом пусть останется возможность указать Capture перенести в CD-таблицы все имеющиеся данные?
...
Рейтинг: 0 / 0
Репликация в DB2 9.7. Можно ли НЕ реплицировать удаление данных?
    #38059494
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
slixОднако мне необходима возможность полного обновления, но чтобы при этом данные не удалялись из таблицы назначения.Эти 2 требования - взаимоисключающие.
Я не понимаю, что вы хотите сделать.
Полное обновление есть полное обновление.
Если вы не хотите перед ним удалять данные из таблицы назначения, то что же у вас в ней будет после полного обновления с сохранением предыдущих данных?
...
Рейтинг: 0 / 0
Репликация в DB2 9.7. Можно ли НЕ реплицировать удаление данных?
    #38059781
slix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mark Barinstein,

Всё это затеяли из-за того что базы сейчас очень большие. Подстройка db2, индексы и перевод на более быстрые хранилища уже исчерпаны. При этом базы растут дальше.
Уже реализовали возможность удаления старых данных из таблицы источника до какого-то момента времени. При этом в таблице назначения данные будут содержаться в полном объёме. В принципе это уже работает. Программа Capture переносит данные, удаление при этом не реплицируется.
Полное обновление без удаления данныхи из таблицах цели может понадобиться, если произойдёт какой-либо сбой.
...
Рейтинг: 0 / 0
Репликация в DB2 9.7. Можно ли НЕ реплицировать удаление данных?
    #38059791
slix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Думаю что если запись уже существует, при полном обновлении она будет замещена. Понятно что это уже будет update, при полном же обновлении, видимо, используется только insert. Но может быть существует какой-то способ?
...
Рейтинг: 0 / 0
Репликация в DB2 9.7. Можно ли НЕ реплицировать удаление данных?
    #38059924
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
slixДумаю что если запись уже существует, при полном обновлении она будет замещена. Понятно что это уже будет update, при полном же обновлении, видимо, используется только insert. Но может быть существует какой-то способ?Apply так не делает.
Вы можете руками синхронизировать таблицы, т.е., например, загрузить load'ом в промежуточную таблицу базы-цели основную таблицу, а потом вставить / обновить на основе ее содержимого таблицу-цель. Потом сделать так, чтобы процесс пошел дальше, как будно сбоя не было.
...
Рейтинг: 0 / 0
Репликация в DB2 9.7. Можно ли НЕ реплицировать удаление данных?
    #38069054
slix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Возник ещё другой вопрос. Если включаю через Центр репликации на БД "возможность репликации", то при этом устанавливаются параметры
LOGARCHMETH1=LOGRETAIN
LOGRETAIN=RECOVERY
Однако в инфоцентре db2 9.7 написано что параметр LOGRETAIN устаревший, и если использовать, то только один из них. http://pic.dhe.ibm.com/infocenter/db2luw/v9r7/index.jsp?topic=%2Fcom.ibm.db2.luw.admin.config.doc%2Fdoc%2Fr0000247.html

Как быть? Верить инфоцентру или считать что Центр репликации всё правильно делает?
...
Рейтинг: 0 / 0
Репликация в DB2 9.7. Можно ли НЕ реплицировать удаление данных?
    #38069180
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
slix...
Как быть? Верить инфоцентру или считать что Центр репликации всё правильно делает?Ничего страшного в том, что Центр репликации устанавливает LOGRETAIN=RECOVERY нет.
При этом, как написано в доке, LOGARCHMETH1 устанавливается в LOGRETAIN автоматически, т.е. архивное журналирование для базы включается, что и нужно для репликации.
Если оно вас смущает, можете поставить LOGRETAIN=OFF, LOGARCHMETH1 должен сохранить при этом значение LOGRETAIN.
...
Рейтинг: 0 / 0
Репликация в DB2 9.7. Можно ли НЕ реплицировать удаление данных?
    #38076987
slix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mark BarinsteinslixКогда во время репликации переносятся данные по таблице со внешним ключом, то возможно данные в таблицу, на которую ссылается ключ, ещё не были перенесены. В итоге выходит ошибка, что нет такого ключа в связанной таблице.Вы должны все связанные ссылочной целостностью таблицы включать в один subscription set, тогда такие ошибки не должны появляться.
Planning the number of subscription-set members

subscription set изначально был один. Заработало после указания через Центр репликации для subscription set опции "Разрешить программе Apply использовать для элементов набора транзакционную обработку"
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Репликация в DB2 9.7. Можно ли НЕ реплицировать удаление данных?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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