加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长百科 > 正文

oracle – 创建新的物化视图,而不清除物化视图日志

发布时间:2021-01-17 00:43:42 所属栏目:站长百科 来源:网络整理
导读:我想在预建表上行使物化视图,以便在迁徙之前保持表同步.数据不绝变革,因此必要跟踪导出开始和导入完成之间的变革.不问可知,桌子很大,以是完全革新太慢了. 步调id喜好执行: 在新数据库上建设表. 在旧的db表上建设mv日记. 将旧数据库中的数据导入新数据库. 在

我想在预建表上行使物化视图,以便在迁徙之前保持表同步.数据不绝变革,因此必要跟踪导出开始和导入完成之间的变革.不问可知,桌子很大,以是完全革新太慢了.

步调id喜好执行:

>在新数据库上建设表.
>在旧的db表上建设mv日记.
>将旧数据库中的数据导入新数据库.
>在prebuild表上的新数据库上建设物化视图,并从建设mv日记时的点开始革新它.

题目是,在建设实体化视图的那一刻,将破除旧表上的mv日记.

老DB:
????create table kvrtest(id number,cat number);

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.

新数据库:
????create table kvrtest(id number,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.

有什么提议?

办理要领

当您行使REFRESH标志建设新的MATERIALIZED VIEW时,日记表正在破除,由于我们的视图现实上是在建设之后.

CREATE MATERIALIZED VIEW kvrtest 
ON PREBUILT TABLE WITHOUT REDUCED PRECISION
USING INDEX
REFRESH FORCE ON DEMAND
AS

假如不想破除您的日记表行使NEVER REFRESH然后变动为REFRESH ON DEMAND,如下所示:

CREATE MATERIALIZED VIEW kvrtest 
ON PREBUILT TABLE WITHOUT REDUCED PRECISION
USING INDEX
NEVER REFRESH
AS 
select * from kvrtest@oldDb;

让我们看看我们的日记表

select * from MLOG$_KVRTEST;

我们有两排,真好!然后

ALTER MATERIALIZED VIEW kvrtest 
    REFRESH ON DEMAND;

然后革新视图日记表将再次破除.

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读