Oracle物化视图增量刷新测试

说明:物化视图刷新方式有三种:全量刷新、增量刷新和强制刷新,三种刷新方式具体如下:
全量刷新(complete):不管使用哪种刷新方式,物化视图的首次刷新都使用全量刷新的方式。全量刷新机制是首先物化视图对应表中的数据采用delete全部删除,然后再从原表中使用insert把数据重新插入。
增量刷新(fast):增量刷新是基于主表上的物化视图日志(MLOG$_tablename)进行刷新的,主表上每插入或删除一条数据,对应物化视图日志中同样会插入一条数据(主表更新一条数据,对应物化视图中会插入两条记录数据),
物化视图刷新后主表上物化视图日志记录信息会被清空,重新开始记录后面的更新。
强制刷新(force):当物化视图满足增量刷新的条件时使用增量刷新,否则使用全量刷新。

增量刷新测试:
1、数据库eisoo上使用u01用户创建主表
create table t1(id int,name varchar2(20));
alter table t1 add constraints pk_t1 primary key(id);
create sequence t1_seq increment by 1 start with 1 minvalue 1 maxvalue 9999999999999 nocache order;

create or replace procedure insert_to_t1 as
begin
  insert into t1 values (t1_seq.Nextval,'abc');
  commit;
end;
/

declare
  job number;
begin
  dbms_job.submit(job,'insert_to_t1;',sysdate,'sysdate+1');
end;
/

create materialized view log on u01.t1 with primary key including new values;


2、数据库wqwq上使用u01用户创建物化视图,采用增量刷新定时同步主表U01.t1数据

create materialized view u01.t1 refresh fast on demand with primary key as select * from u01.t1@wqwq_to_eisoo;   --wqwq_to_eisoo是wqwq数据库到eisoo数据库的dblink

创建物化视图自动刷新的job
declare
job_id number;
begin
  DBMS_JOB.submit(
    job =>job_id,
    what => 'begin
        dbms_mview.refresh(''U01.T1'',''F'');
         end;',
    next_date => sysdate,
    interval => 'sysdate + 1/144');
  COMMIT;
end;
/

3、验证物化视图刷新
SQL> select MVIEW_NAME,to_char(LAST_REFRESH_DATE,'yyyy-MM-dd HH24:mi:ss'),LAST_REFRESH_TYPE,FAST_REFRESHABLE from user_mviews;   --物化视图在15:45:34时刷新一次

MVIEW_NAME               TO_CHAR(LAST_REFRES LAST_REF FAST_REFRESHABLE
------------------------------ ------------------- -------- ------------------
T1                   2016-09-30 15:45:34 FAST     DIRLOAD_DML


SQL> select * from MLOG$_T1 order by id;    --主表物化视图日志记录信息

    ID SNAPTIME$$           D O CHANGE_VECTOR$$               XID$$
---------- ------------------- - - ------------------------------ ----------
       228 4000/01/01 00:00:00 I N FE                  1.9704E+15
       229 4000/01/01 00:00:00 I N FE                  8.4456E+14
       230 4000/01/01 00:00:00 I N FE                  2.8148E+15
       231 4000/01/01 00:00:00 I N FE                  5.6308E+14
       232 4000/01/01 00:00:00 I N FE                  8.4454E+14
       233 4000/01/01 00:00:00 I N FE                  2.8149E+15
       234 4000/01/01 00:00:00 I N FE                  1.4075E+15

7 rows selected.


SQL> select MVIEW_NAME,to_char(LAST_REFRESH_DATE,'yyyy-MM-dd HH24:mi:ss'),LAST_REFRESH_TYPE,FAST_REFRESHABLE from user_mviews;    --物化视图在15:55:34时再次刷新一次

MVIEW_NAME               TO_CHAR(LAST_REFRES LAST_REF FAST_REFRESHABLE
------------------------------ ------------------- -------- ------------------
T1                   2016-09-30 15:55:34 FAST     DIRLOAD_DML

SQL> select * from MLOG$_T1 order by id;    --物化视图刷新后立刻查看主表物化视图日志信息,已经被清空

no rows selected




来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30373263/viewspace-2125833/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/30373263/viewspace-2125833/

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值