【发布时间】:2012-11-16 13:16:32
【问题描述】:
我想在预建表上使用物化视图,以便在迁移前保持表同步。数据在不断变化,因此需要跟踪导出开始和导入结束之间的变化。不用说表很大,所以完全刷新太慢了。
id 喜欢执行的步骤:
- 在新数据库上创建表。
- 在旧 db 表上创建 mv 日志。
- 将旧数据库中的数据导入新数据库。
- 在 prebuild table 上的新 db 上创建物化视图,并从创建 mv 日志时开始刷新它。
问题是在创建物化视图的那一刻,旧表上的 mv 日志被清除。
旧数据库: 创建表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.
新数据库: 创建表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.
有什么建议吗?
【问题讨论】:
标签: oracle oracle11g materialized-views