教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 互联网资料 >

Oracle物化视图介绍

来源:网络收集 时间:2026-07-18
导读: Oracle 物化视图说明 1 详细语法 CREATE MATERIALIZED VIEW [mv_name] [ TABLESPACE [ts_name] -- 指定表空间 PARALLEL (DEGREE 2) -- 并行度设计为2(与目前的CPU个数相等) BUILD [IMMEDIATE|DEFERRED] -- 创建是否产生数据 REFRESH [FAST|COMPLETE|FORCE]

Oracle 物化视图说明

1 详细语法

CREATE MATERIALIZED VIEW [mv_name] [

TABLESPACE [ts_name] -- 指定表空间

PARALLEL (DEGREE 2) -- 并行度设计为2(与目前的CPU个数相等) BUILD [IMMEDIATE|DEFERRED] -- 创建是否产生数据 REFRESH [FAST|COMPLETE|FORCE] -- 快速、完全刷新

[ON COMMIT|ON DEMAND START WITH (start_time) NEXT (next_time)] -- 刷新方式 ENABLE QUERY REWRITE -- 查询重写 ] AS

{创建物化视图用的查询语句};

2 语法解释

以上是Oracle创建物化视图(Materialized View,以下简称MV)时的常用语法,各参数的含义如下:

1、创建方式(Build Methods)

包括BUILD IMMEDIATE和BUILD DEFERRED两种。BUILD IMMEDIATE是在创建物化视图的时候就生成数据,而BUILD DEFERRED则在创建时不生成数据,以后根据需要在生成数据。默认为BUILD IMMEDIATE。

2、刷新(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。

refresh [fast|complete|force] 视图刷新的方式:

fast: 增量刷新.假设前一次刷新的时间为t1,那么使用fast模式刷新物化视图时,只向视图中添加t1到当前时间段内,主表变化过的数据.为了记录这种变化,建立增量刷新物化视图

还需要一个物化视图日志表。create materialized view log on (主表名)。

complete: 全部刷新。相当于重新执行一次创建视图的查询语句。

force: 这是默认的数据刷新方式。当可以使用fast模式时,数据刷新将采用fast方式;否则使用complete方式。

MV数据刷新的时间:

on demand: 在用户需要刷新的时候刷新,这里就要求用户自己动手去刷新数据了(也可以使用job定时刷新)

on commit: 当主表中有数据提交的时候,立即刷新MV中的数据;

start ??: 从指定的时间开始,每隔一段时间(由next指定)就刷新一次; Oracle的物化视图提供了强大的功能,可以用于预先计算并保存表连接或聚集等耗时较多的操作的结果,这样,在执行查询时,就可以避免进行这些耗时的操作,而从快速的得到结果。物化视图有很多方面和索引很相似:使用物化视图的目的是为了提高查询性能;物化视图对应用透明,增加和删除物化视图不会影响应用程序中SQL语句的正确性和有效性;物化视图需要占用存储空间;当基表发生变化时,物化视图也应当刷新。

3、查询重写(Query Rewrite):

包括ENABLE QUERY REWRITE和DISABLE QUERY REWRITE两种。分别指出创建的物化视图是否支持查询重写。查询重写是指当对物化视图的基表进行查询时,Oracle会自动判断能否通过查询物化视图来得到结果,如果可以,则避免了聚集或连接操作,而直接从已经计算好的物化视图中读取数据。默认为DISABLE QUERY REWRITE。

3 物化视图日志

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

1、详细语法

CREATE MATERIALIZED VIEW LOG ON [t_name] -- 表名 tablespace [ts_name] -- 日志保存在特定的表空间

WITH [ROWID|PRIMARY KEY|SEQUENCE]; -- 日志类型

4 物化视图类型

物化视图可以分为以下三种类型:只包含连接的物化视图;包含聚集的物化视图;嵌套物化视图。三种物化视图的快速刷新的限制条件有很大区别,而对于其他方面则区别不大。

5 各类型快速刷新的限制

所有类型的快速刷新物化视图都必须满足的条件:

1.物化视图不能包含对不重复表达式的引用,如SYSDATE和ROWNUM; 2.物化视图不能包含对LONG和LONG RAW数据类型的引用。

5.1 只包含连接的物化视图

1.必须满足所有快速刷新物化视图都满足的条件; 2.不能包括GROUP BY语句或聚集操作;

3.如果在WHERE语句中包含外连接,那么唯一约束必须存在于连接中内表的连接列上;

4.如果不包含外连接,那么WHERE语句没有限制,如果包含外连接,那么WHERE语句中只能使用AND连接,并且只能使用“=”操作。

5.FROM语句列表中所有表的ROWID必须出现在SELECT语句的列表中。 6.FROM语句列表中的所有表必须建立基于ROWID类型的物化视图日志。

下面,我们看一个满足快速刷新条件的例子,然后依次违反上述6个条件,分别测试,查看会出现什么错误。

首先,创建测试环境:

SQL> create table dim_a (id number primary key, name varchar2(30)); 表已创建。

SQL> create table dim_b (id number primary key, name varchar2(30)); 表已创建。

SQL> create table fact (id number, aid number, bid number, num number); 表已创建。

SQL> alter table fact add constraint fk_fact_aid foreign key (aid) references dim_a(id); 表已更改。

SQL> alter table fact add constraint fk_fact_bid foreign key (bid) references dim_b(id); 表已更改。

SQL> insert into dim_a select rownum, 'a'||rownum from user_objects; 已创建74行。

SQL> insert into dim_b select rownum, 'b'||rownum from user_objects; 已创建74行。

SQL> insert into fact select rownum, mod(rownum, 6) + 1, mod(rownum, 5 ) + 1, rownum *2

2 from user_objects; 已创建74行。 SQL> commit; 提交完成。

接下来建立一个可以成功快速刷新的例子,这个物化视图只包含连接: SQL> create materialized view log on dim_a with rowid; 实体化视图日志已创建。

SQL> create materialized view log on dim_b with rowid; 实体化视图日志已创建。

SQL> create materialized view log on fact with rowid; 实体化视图日志已创建。

SQL> create materialized view mv_fact refresh fast on commit as 2 select f.rowid f_rowid, a.rowid a_rowid, b.rowid b_rowid, f.id, 3 a.name a_name, b.name b_name, num 4 from fact f, dim_a a, dim_b b 5 where f.aid = a.id 6 and f.bid = b.id; 实体化视图已创建。

下面我们依次违反上面的6个条件,观察错误信息。 1.包含SYSDATE/ROWNUM或RAW/LONG RAW数据类型。

SQL> create materialized view mv_fact_err refresh fast on commit as 2 select f.rowid f_rowid, a.rowid a_rowid, b.rowid b_rowid, f.id, 3 a.name a_name, b.name b_name, num, sysdate time 4 fr …… 此处隐藏:4408字,全部文档内容请下载后查看。喜欢就下载吧 ……

Oracle物化视图介绍.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/442975.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)