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