2016-06-27 2 views
0

У меня есть таблица на главном сайте, которая разрешает операцию вставки. Я хочу реплицировать строки, которые были вставлены недавно, поэтому нужно что-то, что может отслеживать последнюю запись, реплицированную на локальный сайт, и затем выполнять репликацию.Репликация данных в Oracle

Я пробовал материализованное представление Oracle, но все еще путаю, использую ли я Fast Refresh или Complete Refresh. Мне нужны все вновь вставленные строки, реплицированные в одной транзакции.

Есть ли лучший способ сделать это? Любая помощь будет высоко оценен.

Спасибо.

+0

Вы хотите сделать это для одного стола или всего набора таблиц. Когда вы говорите, что хотите вставить реплицированные строки в одну транзакцию, что именно вы имеете в виду. Вы хотите вставлять через определенные промежутки времени. Кроме того, когда вы говорите, что хотите выполнить репликацию впоследствии, это означает, что вам не нужна репликация данных в реальном времени. Кроме того, какова цель этого репликации (строите ли вы сайт DR?), Пользователи будут запрашивать данные доступа для целей отчетности. –

ответ

1

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

Полное обновление будет копировать каждую строку по сети при каждом обновлении материализованного представления. Это, вероятно, будет менее эффективным с точки зрения обновления, но не будет накладных расходов на вставку в исходную таблицу, и мастер-сайт не должен создавать материализованный журнал представлений.

Oracle предоставляет множество технологий репликации данных - материализованные представления являются самыми старыми и, вероятно, наименее эффективными, но относительно тривиальны для настройки. Streams - это более новая технология, которая имеет гораздо более низкие издержки, но ее немного сложнее настроить. Golden Gate является предпочтительной технологией репликации сегодня, но у нее есть дополнительные расходы на лицензирование.

+0

Спасибо за ваш ответ. Материализованное представление создано из другого представления в основной базе данных и что Полное обновление менее эффективно. Я думаю, потому что нам нужно часто записывать запись (каждую секунду). Я сделал это с помощью нескольких таблиц. планировщик, написав ниже запрос. 'INSERT INTO ARIX_FOO F_FOO (SELECT L_FOO.ID, L_FOO.BAR FROM ARIX_FOO @ link L_FOO где L_FOO.ID> (SELECT NVL (MAX (ID), 0) FROM ARIX_FOO));' Есть ли другой способ сделать это эффективно? –

+1

@UmairAnsari - Это вряд ли будет работать ess есть однопоточный процесс, вставляющий данные в исходную базу данных. Что произойдет, если значение «id» 2 будет передано непосредственно перед значением «id» 1? Вы можете видеть 2 и никогда не видеть 1. Похоже, вам может понадобиться дополнительная сложность обоих потоков GoldenGate. –

Смежные вопросы