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

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

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

在建立物化视图的时候可以指定ORDER BY语句,使生成的数据按照一定的顺序进行保存。不
过这个语句不会写入物化视图的定义中,而且对以后的刷新也无效。

--物化视图数据的刷新模式:
 仅在该物化视图“需要”被刷新了,才进行刷新(REFRESH),即更新物化视图,
以保证和基表数据的一致性;
 基表有了COMMIT,即事务提交,则立刻刷新,立刻更新物化视图,使得数据
和基表一致
二者的区别在于刷新方法的不同。

--刷新的方法有四种:FAST、COMPLETE、FORCE和NEVER。
FAST刷新采用增量刷新,只刷新自上次刷新以后进行的修改。
COMPLETE刷新对整个物化视图进行完全的刷新。
如果选择FORCE方式,则Oracle在刷新时会去判断是否可以进行快速刷新,如果可以则采用FAST方式,否则采用COMPLETE的方式。
NEVER指物化视图不进行任何刷新。

--物化视图日志
如果需要进行'快速刷新',则需要建立物化视图日志。
物化视图日志根据不同物化视图的快速刷新的需要,可以建立为ROWID或PRIMARY KEY类型的。
还可以选择是否包括SEQUENCE、INCLUDING NEW VALUES以及指定列的列表。
可以指明ON PREBUILD TABLE语句将物化视图建立在一个已经存在的表上。这种情况下,物化
视图和表必须同名。当删除物化视图时,不会删除同名的表。这种物化视图的查询重写要求参
数QUERY_REWRITE_INTEGERITY必须设置为trusted或者stale_tolerated。

--物化视图分区
基于分区的物化视图可以支持分区变化跟踪(PCT)。具有这种特性的物化视图,当基表进行了分
区维护操作后,仍然可以进行快速刷新操作。对于聚集物化视图,可以在GROUP BY列表中使用
CUBE或ROLLUP,来建立不同等级的聚集物化视图。

--物化视图的手工刷新:
刷新指定的物化视图
execute dbms_mview.refresh('MV_TEST'); 
刷新利用了该表的所有物化视图
execute dbms_mview.refresh_defresh_dependent('TEST'); 
刷新该模式中,自上次刷新以来,未得到刷新的所有物化视图
execute dbms_mview.refresh_all_mviews;

--物化视图的特点:
* 物化视图在某种意义上说就是一个物理表(而且不仅仅是一个物理表);
* 物化视图也是一种段(segment),所以其有自己的物理存储属性;
* 物化视图会占用数据库磁盘空间;

--设置init.ora的参数:
使用物化视图:
JOB_QUEUE_PROCESSES,必须设置大于 1。
QUERY_REWRITE_ENABLED,设置为TRUE时,允许动态重写查询。
QUERY_REWRITE_INTEGRITY,确定访问物化视图时数据一致性要遵守的程度。
OPTIMIZER_MODE,必须设置成CBO的某种方式。
禁用物化视图:
修改init.ora参数的query_rewrite_enabled参数设置成flase,重启实例。
使用alter system set query_rewrite_enabled = flase;动态修改。
使用alter session set query_rewrite_enabled = flash;修改会话内。
使用 norewrite提示。

--------------------------------------------------------------------------------------
源宿主:y,目标宿主:m
1、源表
create table y.test(id varchar2(10) primary key ,name varchar2(20));
2、物化视图日志
创建:
create materialized view log on y.test [tablespace MV_DATA WITH ROWID, sequence(seq_tid)];
删除:
drop materialized view log on test;
2、物化视图
创建:
  CREATE MATERIALIZED VIEW m.mv_test [tablespace mview_data]
 BUILD IMMEDIATE
 REFRESH FORCE 
 ON DEMAND  --刷新模式,默认值,可以不写
 START WITH SYSDATE
 NEXT SYSDATE+2/1444
 WITH PRIMARY KEY
 DISABLE QUERY REWRITE  --查询重写,默认值,可以不写
 AS
 SELECT * FROM y.test;
删除:
  drop materialized view m.mv_test;

Oracle物化视图梳理的更多相关文章

  1. Oracle 物化视图 说明

    一.    物化视图概述 Oracle的物化视图是包括一个查询结果的数据库对像,它是远程数据的的本地副本,或者用来生成基于数据表求和的汇总表.物化视图存储基于远程表的数据,也可以称为快照. 物化视图可 ...

  2. [O]ORACLE物化视图的使用

    用于数据复制的物化视图 物化视图的一个主要功能就是用于数据的复制,Oracle推出的高级复制功能分为两个部分,多主复制和物化视图复制.而物化视图复制就是利用了物化视图的功能. 物化视图复制包含只读物化 ...

  3. Oracle物化视图的创建及使用

    oracle物化视图 一.oracle物化视图基本概念  物化视图首先需要创建物化视图日志,  oracle依据用户创建的物化视图日志来创建物化视图日志表,  物化视图日志表的名称为mlog$_后面跟 ...

  4. ORACLE物化视图(物理视图)

    百度文库 http://wenku.baidu.com/view/f78f55c68bd63186bcebbc4b.html ORACLE物化视图 一.------------------------ ...

  5. Oracle物化视图的创建及使用(一

    Oracle物化视图的创建及使用 http://blog.csdn.net/tegwy/article/details/8935058 先看简单创建语句: create   materialized  ...

  6. Oracle物化视图的一般使用

    普通视图和物化视图根本就不是一个东西,说区别都是硬拼到一起的,首先明白基本概念,普通视图是不存储任何数据的,他只有定义,在查询中是转换为对应的定义SQL去查询,而物化视图是将数据转换为一个表,实际存储 ...

  7. ORACLE物化视图具体解释

    一.物化的一般使用方法物化视图是一种特殊的物理表,"物化"(Materialized)视图是相对普通视图而言的.普通视图是虚拟表.应用的局限性大,不论什么对视图的查询.oracle ...

  8. 解决oracle 物化视图刷新失败

    oracle 物化视图刷新失败可能原因: 1.视图未建立物化视图日志 2.基表为授权给用户 1.物化视图语法 create materialized view [view_name] refresh ...

  9. oracle物化视图

    物化视图是一种特殊的物理表,“物化”(Materialized)视图是相对普通视图而言的.普通视图是虚拟表,应用的局限性大,任何对视图的查询,Oracle都实际上转换为视图SQL语句的查询. 这样对整 ...

随机推荐

  1. 平常比较多实用的SQL

    创建数据库 创建之前判断该数据库是否存在 if exists (select * from sysdatabases where name='databaseName') drop database ...

  2. Python数据分析Numpy库方法简介(二)

    数据分析图片保存:vg 1.保存图片:plt.savefig(path) 2.图片格式:jpg,png,svg(建议使用,不失真) 3.数据存储格式: excle,csv csv介绍 csv就是用逗号 ...

  3. 配置jmeter环境变量及运行命令解释

    Linux下Jmeter的安装及环境变量的配置 1.将Jmeter的安装包上传至Linux的/opt目录下,解压,如下图: 2.编辑/etc/profile文件配置Jmeter的环境变量 3.将编辑好 ...

  4. JS设计模式(5)发布订阅模式

    什么是发布订阅模式(观察者模式)? 定义:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新. 主要解决:一个对象状态改变给其他对象通知的问题,而且 ...

  5. 尚硅谷面试第一季-16 JVM垃圾回收机制

    问题的提出:GC发生在JVM那个部分,由几种GC,它们的算法是什么? 课堂重点: GC发生在JVM体系的堆部分.     什么是GC(分代手机算法)Minor GC 和 Full GC GC4大算法: ...

  6. Linux 修改SWAP分区后导致开机问题

    Linux 系统出现提示原因 扩容后,修改了SWAP,或者安装了双 Linux 系统,在安装后一种 Linux 系统时把 SWAP分区 重新格式化,导致UUID 改变,所以启动时无法加载原来对应UUI ...

  7. Neo4j 安装插件APOC和GRAPH ALGORITHMS

    在 https://github.com/neo4j-contrib/neo4j-apoc-procedures/releases 下载apoc扩展包JAR文件 在 https://github.co ...

  8. Navicat Premium 12激活

    大自然的搬运工:https://www.jianshu.com/p/5f693b4c9468 声明:本文所提供的所有软件均来自于互联网,个人存放在此作为备用,以备将来不时之需,同时作为大家的分享和学习 ...

  9. windows(xshell)免密码登录

    windows(xshell)免密码登录 第一步生成密钥文件 打开xshell 选个工具栏的工具如下图 选择密钥类型和长度,如下图 密钥会自动生成,如下图,点击下一步即可 设置给密钥加密的密码也可以不 ...

  10. js自己总结的小东西(打印出来方便学习)

    1.你对angular有哪些认识? 属于mvvm框架,现在非常的火,由谷歌开发出来并维护的框架,为了解决负责业务中ajax的开发痛苦,刚开始结果angular的时候,确实让我有一种耳目一些,原来代码还 ...