(1)概念
物化视图 (Materialized View)在9i以前的版本叫做快照(SNAPSHOT),从9i开始改名叫做物化视图。它是用于预先计算并保存表连接或聚集等耗时较多的操作的结果,也可用于数据复制和增量数据收集。不同于普通视图只保存sql没有数据,物化视图相当于物理表,有自己的数据。
物化视图 (Materialized View)在9i以前的版本叫做快照(SNAPSHOT),从9i开始改名叫做物化视图。它是用于预先计算并保存表连接或聚集等耗时较多的操作的结果,也可用于数据复制和增量数据收集。不同于普通视图只保存sql没有数据,物化视图相当于物理表,有自己的数据。
(2)创建
1.数据生成
Build immediate:在创建物化视图的同时根据主表生成数据(默认)
Bulid deferred:在创建物化视图的同时,在物化视图内不生成数据
Build immediate:在创建物化视图的同时根据主表生成数据(默认)
Bulid deferred:在创建物化视图的同时,在物化视图内不生成数据
2.日志
默认保存在物化视图表空间
NOLOGGING:不记录
LOGGING:记录(默认)
3.刷新方式
Complete :完全刷新整个物化视图,相当于重新生成物化视图,消耗较大。
Fast:增量刷新,只刷新自上次刷新以后进行的修改,需要有物化视图日志。若选择增量刷新,且建立物化视图时不生成数据,需手动全量刷新物化视图才能生效。
Force:当增量刷新可用则增量刷新,当增量刷新不可用,则全量刷新(默认)
4.刷新时间
On demand:在需要刷新时进行刷新
On commit:在基表上有提交操作时,进行更新
Start with:指定首次刷新的时间
Next:刷新的周期时间
若start with 省略,则首次刷新时间按创建时间加上next时间
若next省略,则只刷新一次
若start with 和 next 都省略,不会自动刷新
5.基于主键与rowid
primary key:需要基表上有主键,可用于多表。(默认)
rowid:用于单表,不需要基表上有主键,快速刷新需要基表上有基于rowid 的物化视图日志,如
create MATERIALIZED VIEW log on t12 with rowid;
e.g
CREATE MATERIALIZED VIEW mv_t12
NOLOGGING --不记录日志
BUILD DEFERRED --不马上生成数据
REFRESH FORCE --当增量刷新可用则增量刷新,当增量刷新不可用,则全量刷新
START WITH SYSDATE --马上刷新
NEXT SYSDATE +1/( 24*60 ) --刷新间隔
WITH PRIMARY KEY --基于主键
AS
SELECT * FROM t12;
(3)删除
drop MATERIALIZED VIEW view_name
(4)手动刷新
dbms_mview.refresh('表名','F'); --快速刷新,也就是增量刷新
dbms_mview.refresh('表名','C'); --完全刷新
dbms_mview.refresh('mv_t11','?'); --force刷新
(5)物化视图系统表
SELECT * FROM DBA_MVIEWS;
(6)物化视图日志
一.查询
select mlog$_表名 --查看物化视图日志内容
select * from dba_mview_logs;--查看物化视图日志详细情况
二.创建
create materialized view view_name log on table;
三.删除
drop materialized view view_name log on table