我想在预建表上使用物化视图在迁移之前保持表同步。数据不断变化,因此需要跟踪导出开始和导入结束之间的变化。不用说表很大,所以完全刷新太慢了。
步骤 id 喜欢执行:
- 在新数据库上创建表。
- 在旧数据库表上创建 mv 日志。
- 将旧数据库中的数据导入新数据库。
- 在预构建表上的新数据库上创建物化视图,并从创建 mv 日志的那一刻开始刷新它。
问题是在创建物化视图的那一刻,旧表上的 mv 日志被清除。
老DB:创建表kvrtest(id号,cat号);
alter table kvrtest add ( constraint pkkvrtest primary key (id) using index);
insert into kvrtest (id, cat) values (1, 1);
commit;
CREATE MATERIALIZED VIEW LOG ON kvrtest WITH PRIMARY KEY;
insert into kvrtest (id, cat) values (2, 1);
insert into kvrtest (id, cat) values (3, 2);
commit;
select * from MLOG$_KVRTEST; --Yields 2, these should be caught by a fast refresh.
新建DB:创建表kvrtest(id号,cat号);
alter table kvrtest add ( constraint pkkvrtest primary key (id) using index);
insert into kvrtest (id, cat) values (1, 1); --Simulate import.
commit;
CREATE MATERIALIZED VIEW kvrtest
ON PREBUILT TABLE WITHOUT REDUCED PRECISION
USING INDEX
REFRESH FORCE ON DEMAND
AS
select * from kvrtest@oldDb;
此时 mv 日志被清除
select * from MLOG$_KVRTEST; --Yields 0, a fast refresh from here does not catch these records.
有什么建议么?