oracle如何创建、刷新物化视图

51次阅读
没有评论

共计 3404 个字符,预计需要花费 9 分钟才能阅读完成。

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

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 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 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  on t_keyword_industry_sign(id);

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

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

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-24发表,共计3404字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)