这篇文章将为大家详细讲解有关oracle如何创建、刷新物化视图,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

Create materialized view log on F_RPT_TASK WITH ROWID --
----F_RPT_TASK为表名 ----注:(F_RPT_TASK为表名或者视图名,关于视图上建立物化视图,见基于视图的物化视图 ----创建物化视图语句:
DROP materialized view log on F_RPT_TASK

Create materialized view MV_F_RPT_TASK
----MVTEST为物化视图名
Build immediate ----创建时生成数据对应的是build deferred
Refresh fast ----增量刷新
On commit ----在基表有更新时提交,这里该句对视图无效
With PRIMARY KEY ----这里创建基于primary key 的物化视图,要与日志中对应的是 primary key ;若日志为 rowid 则此处必须为rowid
As
Select * from F_RPT_TASK where RPT_PERIOD in (2012,2011) ----生成物化视图数据语句



把物化视图改为nologging模式

alter table MV_VECAM01_2YEARS nologging;

需要权限:GRANT CREATE MATERIALIZED VIEW,还必须直接赋予GRANT QUERY REWRITE.

创建指定刷新试图:

1.包含SYSDATE/ROWNUM或RAW/LONG RAW数据类型;无法建立On commit方式刷新。

建立时候去掉注释。

Create materialized view log on tecam01
TABLESPACE CISA_GXPORTAL
WITH PRIMARY KEY
----tecam01为表名 ----注:(tecam01为表名或者视图名,关于视图上建立物化视图,见基于视图的物化视图 ----创建物化视图语句:
/*删除日志和视图*/
DROP materialized view log on tecam01
drop materialized view MV_vecam01_2years


Create materialized view MV_vecam01_2years
TABLESPACE CISA_GXPORTAL --保存表空间
BUILD DEFERRED --延迟刷新不立即刷新
refresh force --如果可以快速刷新则进行快速刷新,否则完全刷新
on demand --按照指定方式刷新
start with to_date('07-12-2013 12:00:10', 'dd-mm-yyyy hh34:mi:ss') /*第一次刷新时间*/
next sysdate+5/(24*60) --刷新时间间隔 5分钟一次
-- next TRUNC(SYSDATE+1)+18/24 --刷新时间间隔 隔一天的18点开始
As
SELECT * FROM tecam01 WHERE display_time > to_char((sysdate- 730),'yyyyMMdd' ) ;

相关资料:

刷新(Refresh):指当基表发生了DML操作后,物化视图何时采用哪种方式和基表进行同步。刷新的模式有两种:ON DEMAND和ON COMMIT。ON DEMAND指物化视图在用户需要的时候进行刷新,可以手工通过DBMS_MVIEW.REFRESH等方法来进行刷新,也可以通过JOB定时进行刷新。ON COMMIT指出物化视图在对基表的DML操作提交的同时进行刷新。刷新的方法有四种:FAST、COMPLETE、FORCE和NEVE*。**ST刷新采用增量刷新,只刷新自上次刷新以后进行的修改。COMPLETE刷新对整个物化视图进行完全的刷新。如果选择FORCE方式,则Oracle在刷新时会去判断是否可以进行快速刷新,如果可以则采用FAST方式,否则采用COMPLETE的方式。NEVER指物化视图不进行任何刷新。默认值是FORCE ON DEMAND。

二、相关参数说明

创建物化视图主要选项说明

创建物化视图时可以指定多种选项,下面对几种主要的选项进行简单说明:

名称Build Clause创建方式描述包括BUILD IMMEDIATE和BUILD DEFERRED两种取值BUILD IMMEDIATE在创建实体化视图的时候就生成数据BUILD DEFERRED在创建时不生成数据,以后根据需要在生成数据默认BUILD IMMEDIATE名称Query Rewrite查询重写描述包括ENABLE QUERY REWRITE和DISABLE QUERY REWRITE两种。分别指出创建的实体化
视图是否支持查询重写。查询重写是指当对实体化视图的基表进行查询时,Oracle会自动判
断能否通过查询实体化视图来得到结果,如果可以,则避免了聚集或连接操作,
而直接从已经计算好的实体化视图中读取数据取值ENABLE QUERY REWRITE支持查询重写DISABLE QUERY REWRITE不支持查询重写默认DISABLE QUERY REWRITE

创建实体化试图日志主要选项说明

如果需要进行快速刷新,则需要建立实体化视图日志。实体化视图日志根据不同实体化
视图的快速刷新的需要,可以建立为ROWID或PRIMARY KEY类型的。还可以选择
是否包括SEQUENCE、INCLUDING NEW VALUES以及指定列的列表。

<table border="1" width="661" font-size:16px;background-color:#ffffff;"="">

名称WITH Clause描述取值OBJECT ID如果是对象实体化视图(object materialized view),
则只能采用该方式PRIMARY KEYROWIDSEQUENCE默认PRIMARY KEY

三、举例说明
1、简单示例

create materialized view MV_except_pattern_ordersrefresh
Complete on demand
start with to_date('2010-11-06 13:20:51','YYYY-MM-DD HH24:MI:SS')
next sysdate+1/(24*60)
as select * from v_except_pattern_orders

2、带日志物化视图

--创建物化视图日志
create materialized view log on table1tablespace ts_data --日志保存在特定的表空间
with rowid;--创建物化视图主体
create materialized view MV_LVY_LEVYDETAILDATATABLESPACE ZGMV_DATA
--保存表空间
BUILD DEFERRED --延迟刷新不立即刷新
refresh force --如果可以快速刷新则进行快速刷新,否则完全刷新
on demand --按照指定方式刷新
start with to_date('24-11-2005 18:00:10', 'dd-mm-yyyy hh34:mi:ss') --第一次刷新时间
next TRUNC(SYSDATE+1)+18/24 --刷新时间间隔
as
as select * from table1;

上面这部分转载自:

https://blog.csdn.net/dongcctv5/article/details/8614887


更新物化视图的刷新方式:

ALTER MATERIALIZED VIEW t_keyword_industry_sign
REFRESH FORCE
ON DEMAND
WITH ROWID
start with sysdate NEXT SYSDATE +30/24

物化视图的索引的创建:
create index index_testid ont_keyword_industry_sign(id);

索引的查询:
select * FROM user_indexes t where t.table_name='NGCC_BEST.T_CONTRACT';

关于“oracle如何创建、刷新物化视图”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。