Есть ли способ запросить изменения, сделанные с помощью быстрого обновления материализованного представления в Oracle? - PullRequest
5 голосов
/ 25 января 2012

Скажите, что у вас есть две базы данных Oracle, DB_A и DB_B.Существует таблица с именем TAB1 в DB_A с материализованным журналом представлений и материализованное представление с именем SNAP_TAB1 в DB_B, созданное с помощью

CREATE SNAPSHOT SNAP_TAB1
REFRESH FAST
AS SELECT * FROM TAB1@DB_A;

. Есть ли способ запросить в DB_B изменения, внесенные в SNAP_TAB1 после каждого вызовабыстро обновить материализованное представление?

DBMS_SNAPSHOT.REFRESH( 'SNAP_TAB1', 'F' );

В DB_A до обновления вы можете запросить таблицу журнала материализованного представления MLOG $ _TAB1, чтобы узнать, какие строки были изменены в TAB1.Я ищу способ запроса в DB_B, после каждого обновления, какие строки были обновлены в SNAP_TAB1.

Спасибо!

1 Ответ

1 голос
/ 25 января 2012

Я думаю, что строки ниже работают с готовой таблицей:

Вы можете добавить столбец в таблицу SNAP_TAB1.

Для вставок Вы можете поставить его на default sysdate => для каждой вставки, у которой будет метка времени вставки.

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

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

Очевидно, что вы не можете отслеживать удаления с этой идеей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...