Условие репликации Golden Gate

#oracle-golden-gate

#oracle-golden-gate

Вопрос:

В goldengate я хочу, чтобы все репликации выполнялись только тогда, когда удовлетворяется определенное условие, иначе следует подождать, пока условие не будет выполнено.

Предположим, у меня есть таблица ‘T’, в которой есть только одна строка и столбец ‘Flag’. Для каждой репликации, происходящей в целевой базе данных, я хочу убедиться, что это происходит только тогда, когда значение ‘Flag’ равно ‘A’, иначе репликация должна ждать, пока значение ‘Flag ‘ не станет ‘A’.

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

Ответ №1:

Для этого подойдет что-то вроде фильтра.

В схеме извлечения ТАБЛИЦЫ.T, ФИЛЬТР (ФЛАГ = ‘A’);

Вы также должны убедиться, что любой столбец, который находится в фильтре, также находится в журналах повтора и записывается Extract для повышения производительности. Вы также можете захотеть добавить столбец ФЛАГОВ в дополнительную группу журналов (для этого можно использовать ADD TRANDATA), а затем использовать LOGALLSUPCOLS и в извлечении.

Ник

Ответ №2:

Вы можете использовать условную фильтрацию в самом процессе извлечения, чтобы вам не приходилось извлекать и реплицировать те, которые не соответствуют условию. Вы могли бы либо использовать FILTER, как указано в комментариях, либо вы могли бы использовать SQLPREDICATE в своем ИЗВЛЕЧЕНИИ

т.е.

Схема таблицы.T, SQLПРЕДИКАТ «ГДЕ ФЛАГ = ‘A'»;

Преимущество использования SQLPREDICATE заключается в том, что вы также можете фильтровать данные, которые хотите извлечь, с помощью сложных условий SQL «WHERE».