Oracle物化视图梳理
--物化视图可以分为三种类型:
* 包含聚集的物化视图
* 只包含连接的物化视图
* 嵌套物化视图
三种物化视图的快速刷新的限制条件有很大区别,而对于其他方面则区别不大。
--物化视图创建方式(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物化视图梳理的更多相关文章
- Oracle 物化视图 说明
一. 物化视图概述 Oracle的物化视图是包括一个查询结果的数据库对像,它是远程数据的的本地副本,或者用来生成基于数据表求和的汇总表.物化视图存储基于远程表的数据,也可以称为快照. 物化视图可 ...
- [O]ORACLE物化视图的使用
用于数据复制的物化视图 物化视图的一个主要功能就是用于数据的复制,Oracle推出的高级复制功能分为两个部分,多主复制和物化视图复制.而物化视图复制就是利用了物化视图的功能. 物化视图复制包含只读物化 ...
- Oracle物化视图的创建及使用
oracle物化视图 一.oracle物化视图基本概念 物化视图首先需要创建物化视图日志, oracle依据用户创建的物化视图日志来创建物化视图日志表, 物化视图日志表的名称为mlog$_后面跟 ...
- ORACLE物化视图(物理视图)
百度文库 http://wenku.baidu.com/view/f78f55c68bd63186bcebbc4b.html ORACLE物化视图 一.------------------------ ...
- Oracle物化视图的创建及使用(一
Oracle物化视图的创建及使用 http://blog.csdn.net/tegwy/article/details/8935058 先看简单创建语句: create materialized ...
- Oracle物化视图的一般使用
普通视图和物化视图根本就不是一个东西,说区别都是硬拼到一起的,首先明白基本概念,普通视图是不存储任何数据的,他只有定义,在查询中是转换为对应的定义SQL去查询,而物化视图是将数据转换为一个表,实际存储 ...
- ORACLE物化视图具体解释
一.物化的一般使用方法物化视图是一种特殊的物理表,"物化"(Materialized)视图是相对普通视图而言的.普通视图是虚拟表.应用的局限性大,不论什么对视图的查询.oracle ...
- 解决oracle 物化视图刷新失败
oracle 物化视图刷新失败可能原因: 1.视图未建立物化视图日志 2.基表为授权给用户 1.物化视图语法 create materialized view [view_name] refresh ...
- oracle物化视图
物化视图是一种特殊的物理表,“物化”(Materialized)视图是相对普通视图而言的.普通视图是虚拟表,应用的局限性大,任何对视图的查询,Oracle都实际上转换为视图SQL语句的查询. 这样对整 ...
随机推荐
- pypi上传问题
pypi上传过程中报错403 windows 解决办法: 1.建一个新的记事本编辑内容 [distutils]index-servers = pypi [pypi]repository:https:/ ...
- 【winform】listbox 列表
一.Item 一个ListBox是由一个个的Item项组成的 1.向下添加Item lstResult.Items.Add("***" + PostWebRequest(cbxUr ...
- Hdu2040 亲和数
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2040 亲和数 Time Limit: 2000/1000 MS (Java/Others) Me ...
- windows安装composer总结
1.直接去网吧下载windows安装EXE程序,傻瓜式安装,so easy. 2.通过命令行安装,可以直接在php目录跑起来 php -r "readfile('https://getcom ...
- 模块_pip、os模块
一个python文件就是一个模块 1.标准模块 python自带的模块就是标准模块,也就是可以直接import进来的就是标准模块 import json import random import da ...
- Redis学习-list数据类型
list类型是一个链表结构,主要功能有push,pop等.而且list是一个双向链表,可以通过相关操作进行集合的头部或者尾部添加,删除元素. lpush key string 在key对应的list的 ...
- CSS Class 选择器
CSS Class 选择器 再<stype>标签内,通过class属性来对标签进行css样式配置 <html> <head> <!-- style 设置头部标 ...
- Android一个工程引用另一个工程的方法
一个工程包含另一个工程.相当于一个jar包的引用.但又不是jar包反而像个package 现在已经有了一个Android工程A.我们想扩展A的功能,但是不想在A的基础上做开发,于是新建了另外一个And ...
- Windows下用python来获取微信撤回消息
转自:https://blog.csdn.net/sunzhibin1/article/details/83348304 娱乐(windows系统) 安装itchat itchat是一个开源的pyth ...
- Not supported for DML operations
问题原因 缺失@Modifying注解 问题解决 在自定义的修改方法(delete.update)上面除了@Transactional注解和@Query还需要@Modifying注解 Bug重现 or ...