#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».