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 hh24: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。

 

二、相关参数说明

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

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

 

名称ON PREBUILD TABLE
描述将已经存在的表注册为实体化视图。同时还必须提供描述创建该表的查询的 SELECT 子句。可能无法始终保证查询的精度与表的精度匹配。为了克服此问题,应该在规范中包含 WITH REDUCED PRECISION 子句。

 

名称Build Clause创建方式
描述包括BUILD IMMEDIATE和BUILD DEFERRED两种
取值BUILD IMMEDIATE在创建实体化视图的时候就生成数据
BUILD DEFERRED在创建时不生成数据,以后根据需要在生成数据
默认BUILD IMMEDIATE

 

名称Refresh刷新子句
描述当基表发生了DML操作后,实体化视图何时采用哪种方式和基表进行同步
语法
[refresh [fast | complete | force]
         [on demand | commit]
         [start with date]
         [next date]
         [with {primary key | rowid}]
]
取值FAST采用增量刷新,只刷新自上次刷新以后进行的修改
COMPLETE对整个物化视图进行完全的刷新
FORCE(默认)Oracle在刷新时会去判断是否可以进行快速刷新,如果可以则采用Fast方式,否则采用Complete的方式,Force选项是默认选项
 
ON DEMAND(默认)物化视图在用户需要的时候进行刷新,可以手工通过DBMS_MVIEW.REFRESH等方法来进行刷新,也可以通过JOB定时进行刷新
ON COMMIT实体化视图在对基表的DML操作提交的同时进行刷新
 
START WITH第一次刷新时间
 
NEXT刷新时间间隔
 
WITH PRIMARY KEY(默认)生成主键实体化视图,也就是说实体化视图是基于表的主键,而不是ROWID(对应于ROWID子句)。 为了生成PRIMARY KEY子句,应该在表上定义主键,否则应该用基于ROWID的实体化视图。主键实体化视图允许识别实体化视图表而不影响实体化视图增量刷新的可用性
WITH ROWID只有一个单一的主表,不能包括下面任何一项:

●Distinct

●聚合函数

●Group by

●子查询

●连接

●SET操作

  

 

名称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以及指定列的列表。

 

名称WITH Clause
描述 
取值OBJECT ID如果是对象实体化视图(object materialized view),则只能采用该方式
PRIMARY KEY 
ROWID 
SEQUENCE 
默认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 hh24:mi:ss') --第一次刷新时间
next TRUNC(SYSDATE+1)+18/24 --刷新时间间隔
as
as select * from table1;

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值