oracle物化视图创建过程:
物化视图可以分为以下三种类型:包含聚集的物化视图;只包含连接的物化视图;嵌套物化视图
1、创建物化视图快速刷新日志:
create materialized view log on table_name
with primary key
includeing new values;
物化视图日志:如果需要进行快速刷新,则需要建立物化视图日志。物化视图日志根据不同物化视图的快速刷新的需要,可以建立为ROWID或PRIMARY KEY类型的。还可以选择是否包括SEQUENCE、INCLUDING NEW VALUES以及指定列的列表。
可以指明ON PREBUILD TABLE语句将物化视图建立在一个已经存在的表上。这种情况下,物化视图和表必须同名。当删除物化视图时,不会删除同名的表。这种物化视图的查询重写要求参数QUERY_REWRITE_INTEGERITY必须设置为trusted或者stale_tolerated。
2、穿件物化视图:
create materialized view mv_name
building immediate
refresh fast with primary key --根据主表主键增量刷新(FAST,增量)
on demand
enable query rewrite
as
select * from table_name;
创建方式(Build Methods):包括BUILD IMMEDIATE和BUILD DEFERRED两种。默认为BUILD IMMEDIATE。
1)BUILD IMMEDIATE是在创建物化视图的时候就生成数据;
2)BUILD DEFERRED则在创建时不生成数据,以后根据需要在生成数据。
物化视图的刷新(Refresh):指当基表发生了DML操作后,物化视图何时采用哪种方式和基表进行同步。
刷新的模式有两种:ON DEMAND和ON COMMIT。
1)ON DEMAND顾名思义,仅在该物化视图“需要”被刷新了,才进行刷新(REFRESH),即更新物化视图,以保证和基表数据的一致性;
2)ON COMMIT是说,一旦基表有了COMMIT,即事务提交,则立刻刷新,立刻更新物化视图,使得数据和基表一致。
刷新的方法有四种:FAST、COMPLETE、FORCE和NEVER。
1) FAST刷新采用增量刷新,只刷新自上次刷新以后进行的修改。
2) COMPLETE刷新对整个物化视图进行完全的刷新。
3) FORCE方式在刷新时会去判断是否可以进行快速刷新。如果可以则采用FAST方式,否则采用COMPLETE的方式。
4) NEVER指物化视图不进行任何刷新。
对于已经创建好的物化视图,可以修改其刷新方式,比如把物化视图mv_name的刷新方式修改为每天晚上10点刷新一次:
SQL> alter materialized view mv_name refresh force on demand start with sysdate next to_date(concat(to_char(sysdate+1,'dd-mm-yyyy'),' 22:00:00'),'dd-mm-yyyy hh24:mi:ss');
例子中以主键刷新,也可以以时间来刷新:
创建定时刷新的物化视图(指定物化视图每天刷新一次):
SQL> create materialized view mv_name refresh force on demand start with sysdate next sysdate+1;
上述创建的物化视图每天刷新,但是没有指定刷新时间,如果要指定刷新时间(比如每天晚上10:00定时刷新一次):
SQL> create materialized view mv_name refresh force on demand start with sysdate next to_date( concat( to_char( sysdate+1,'dd-mm-yyyy'),' 22:00:00'),'dd-mm-yyyy hh24:mi:ss');
查询重写(Query Rewrite):包括ENABLE QUERY REWRITE和DISABLE QUERY REWRITE两种。分别指出创建的物化视图是否支持查询重写。查询重写是指当对物化视图的基表进行查询时,Oracle会自动判断能否通过查询物化视图来得到结果,如果可以,则避免了聚集或连接操作,而直接从已经计算好的物化视图中读取数据。默认为DISABLE QUERY REWRITE。
3、视图刷新
create procedure p_mview_refresh as
begin
dbms_mview.refresh(' mv_name ','f');
end p_mview_refresh ;
4、物化视图删除
drop materialized view log on table_name;
drop materialized view mv_name ;
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/28588471/viewspace-758060/ ,如需转载,请注明出处,否则将追究法律责任。