1、减轻网络负担:通过MV将数据从一个数据库分发到多个不同的数据库上,通过对多个数据库访问来减轻对单个数据库的网络负担。 
2、搭建分发环境:通过从一个中央数据库将数据分发到多个节点数据库,达到分发数据的目的。 
3、复制数据子集:MV可以进行行级/列级的筛选,这样可以复制需要的那一部分数据。
create materialized view [view_name] 
     {TABLESPACE (表空间名)}              --保存表空间 
     {BUILD [DEFERRED|IMMEDIATE(默认值)]} --延迟刷新还是立即刷新 
refresh [fast|complete|force] 
on [commit|demand] | 
start with (start_time) next (next_time) 
as 
{创建物化视图用的查询语句} 
 
相关参数说明: 
1, 
Build子句:定义创建方式,包括BUILD IMMEDIATE和BUILD DEFERRED两种 
BUILD IMMEDIATE 在创建实体化视图的时候就生成数据,默认 BUILD IMMEDIATE  
BUILD DEFERRED 在创建时不生成数据,以后根据需要在生成数据 
 
2, 
Refresh子句:定义数据同步刷新,当基表发生了DML操作后,实体化视图何时采用哪种方式和基表进行同步,语法: 
[refresh [fast | complete | force] 
         [on demand | commit] 
         [start with date] 
         [next date] 
         [with {primary key | rowid}] 
 
FAST 采用增量刷新,只刷新自上次刷新以后进行的修改,如果指定REFRESH FAST子句,那么应该对主表创建物化视图日志,如果没有建立MView Log的话要进行快速刷新的话会报错 
注意:对于增量刷新选项,如果在子查询中存在分析函数,则物化视图不起作用。 
 
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操作 
 
3, 
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以及指定列的列表。 
 
物化视图可以进行分区。而且基于分区的物化视图可以支持分区变化跟踪(PCT)。具有这种特性的物化视图,当基表进行了分区维护操作后,仍然可以进行快速刷新操作。 
 
创建多表关联的实体化视图: 
实体化视图包含多表关联,但不包含聚合操作,仅包含表关联的实体化视图同样支持在两种情况下刷新: 
ON COMMIT 和 ON DEMAND。在 ON COMMIT 下,当基表发生DML操作并提交commit 的时候,实体化视图被刷新。 
Oracle不允许实体化视图中有self-jions 的存在。 
假如指定刷新方式为REFRESH FAST, oracle 执行附加的校验,以确定fast refresh能被执行。这些附加的检查包括: 
1 每个基表下必须创建相应的 materialized view log 
2 每个基表的rowid 必须在实体化视图的select 语句中出现 
3 如果存在外联接,在where 子句不能有任何的selections.并且,所有的关联必须以AND 相连,并且用“=”操作符。 
4 如果存在外联接,唯一性约束必须存在于外联的 inner table 的相关列中。

Oracle实体化视图的更多相关文章

  1. Oracle案例02——ORA-12034: "SCOTT"."USER_TABLE" 上的实体化视图日志比上次刷新后的内容新

    最近同事在交接工作时,发现有几个schedule job没有执行成功,我这边给看了下,其中一个是由于数据库迁移,调用dblink的host主机IP在tnsnames中没有变更导致,还有一个是无法视图的 ...

  2. oracle 物化视图 ORA-23413: 表 "xxx"."xx" 不带实体化视图日志

    DROP materialized view log on TAB_NAME ;    --不是view名,是表名 CREATE MATERIALIZED VIEW LOG ON TAB_NAME W ...

  3. oracle中普通视图和实体试图的区别

    Oracle普通视图和实体化视图比较 来源:茂盛博客|2013-07-30 Oracle普通视图和实体化视图比较 相对于普通的视图来说,实体化视图的不同之处在于实体化视图管理存储数据,占据数据库的物理 ...

  4. Oracle EBS 物化视图

    怎么理解物化视图呢,先随意拿一个建物化视图的例子看一下. create materialized view EBS_ACCOUNTS_HIERARCHY_MV refresh complete on ...

  5. MATERIALIZED VIEW-物化视图

     Oracle的实体化视图提供了强大的功能,可以用在不同的环境中,实体化视图和表一样可以直接进行查询.实体化视图可以基于分区表,实体化视图本身也可以分区. 主要用于预先计算并保存表连接或聚集等耗时较多 ...

  6. 【转】Oracle之物化视图

    原文地址:http://www.cnblogs.com/Ronger/archive/2012/03/28/2420962.html 物化视图是一种特殊的物理表,“物化”(Materialized)视 ...

  7. Oracle之物化视图

    来源于:http://www.cnblogs.com/Ronger/archive/2012/03/28/2420962.html 近期根据项目业务需要对oracle的物化视图有所接触,在网上搜寻关于 ...

  8. 《oracle每天一练》Oracle之物化视图

    相关帖子思考和跟踪 本文转自Ronger 物化视图是一种特殊的物理表,“物化”(Materialized)视图是相对普通视图而言的.普通视图是虚拟表,应用的局限性大,任何对视图的查询,Oracle都实 ...

  9. Oracle数据库之视图与索引

    Oracle数据库之视图与索引 1. 视图简介 视图是基于一个表或多个表或视图的逻辑表,本身不包含数据,通过它可以对表里面的数据进行查询和修改. 视图基于的表称为基表,视图是存储在数据字典里的一条SE ...

随机推荐

  1. bzoj1691/luogu2869 [USACO07DEC]挑剔的美食家 (STL::set)

    给牛和草都按价格排序,然后贪心地把草给牛(就是尽量给满足价格的.要求的美味度最高但不超过这个草的美味度的牛) 这个可以用一个平衡树来维护,偷懒直接用multiset了 #include<bits ...

  2. SwitchButton 开关按钮 的多种实现方式 (附源码DEMO)

    http://blog.csdn.net/vipzjyno1/article/details/23707149 Switch开关android源码SwitchButton 刚开始接触开关样式的按钮是在 ...

  3. SDL源码阅读笔记(2) video dirver的初始化及选择

    write by 九天雁翎(JTianLing) -- blog.csdn.net/vagrxie 前一篇文章 讲了SDL的除video以外的大部分模块.本文主要关注SDL的video模块部分. SD ...

  4. JavaScript中解决jQuery和Prototype.js同时引入冲突问题

    两个库同时都定义了一个叫$的函数,所以在同时使用的时候会发生冲突.jQuery( http://jquery.com/ https://jquery.org/ )中提供了一种返还$的使用权给其他js库 ...

  5. LOJ#2320 生成树计数

    解:讲一个别的题解里我比较难以理解的地方,就是为什么可以把这两个东西合起来看成某一个连通块指数是2m而别的指数都是m. 其实很好理解,但是别人都略过了......把后面的∑提到∏的前面,然后展开,也可 ...

  6. windows下用bat启动jar包,修改cmd标题(title)

    新建start.bat,输入以下内容即可. @echo off title myprogress-%date%-%time%-%cd% java -jar myprogress.jar

  7. A1086. Tree Traversals Again

    An inorder binary tree traversal can be implemented in a non-recursive way with a stack. For example ...

  8. 【洛谷P3469】BLO

    题目大意:给定 N 个点,M 条边的联通无向图,求出对于每个点来说,将与这个点相连的所有边都去掉后,会少多少个联通的点对 (x,y). 题解:连通性问题从 DFS 树的角度进行考虑.对于 DFS 树当 ...

  9. VS2010程序崩溃,报错Unhandled exception at **.exe:0xC0000005: Access violation reading location 0x000000008899.

    最近被派到另外一个组支援,从而从Linux下开发暂转到Windows下开发,个人觉得Windows自己搞的一套并不那么完美,坑多. 网文可能出现的原因: 未处理的异常: 0xC0000005: 读取位 ...

  10. Hystrix介绍以及服务的降级限流熔断

    (dubbo熔断,Hystrix问的少) 无论是缓存层还是存储层都会有出错的概率,可以将它们视同为资源.作为并发量较大的系统,假如有一个资源不可用,可能会造成线程全部 hang (挂起)在这个资源上, ...