Oracle物化视图的创建及使用(一
Oracle物化视图的创建及使用
http://blog.csdn.net/tegwy/article/details/8935058
先看简单创建语句:
create materialized view mv_materialized_test refresh force on demand start with sysdate next
to_date( concat (to_char( sysdate + 1 , 'dd-mm-yyyy' ), '10:25:00' ), 'dd-mm-yyyy hh24:mi:ss' ) as
select * from user_info; --这个物化视图在每天10:25进行刷新
物化视图也是种视图。 Oracle的物化视图是包括一个查询结果的数据库对像,它是远程数据的的本地副本,或者用来生成基于数据表求和的汇总表。物化视图存储基于远程表的数据,也可以称为快照。
物化视图可以查询表,视图和其它的物化视图。
特点:
(1) 物化视图在某种意义上说就是一个 物理表 (而且不仅仅是一个物理表),这通过其可以被user_tables查询出来,而得到确认;
(2) 物化视图也是一种段(segment),所以其有自己的物理存储属性;
(3) 物化视图会占用数据库磁盘空间,这点从user_segment的查询结果,可以得到佐证;
创建语句:create materialized view mv_name as select * from table_name
因为物化视图由于是物理真实存在的,故可以创建索引。
创建时生成数据:
分为两种: build immediate 和 build deferred ,
build immediate是在 创建物化视图的时候就生成数据 。
build deferred 则在创建时不生成数据,以后根据需要在生成数据 。
如果不指定,则默认为 build immediate 。
刷新模式:
物化视图有二种刷新模式:
在创建时refresh mode是 on demand 还是 on commit 。
on demand 顾名思义,仅在该物化视图“需要”被刷新了,才进行刷新(REFRESH),即更新物化视图,以保证和基表数据的一致性;
on commit 提交触发,一旦基表有了commit,即事务提交,则立刻刷新,立刻更新物化视图,使得数据和基表一致。一般用这种方法在操作基表时速度会比较慢。
创建物化视图时未作指定,则Oracle按 on demand 模式来创建。
上面说的是 刷新模式 ,针对于如何刷新,则有如下三种 刷新方法 :
完全刷新(COMPLETE): 会删除表中所有的记录(如果是单表刷新,可能会采用TRUNCATE的方式),然后根据物化视图中查询语句的定义重新生成物化视图。
快速刷新(FAST): 采用增量刷新的机制,只将自上次刷新以后对基表进行的所有操作刷新到物化视图中去。FAST必须创建基于主表的视图日志。对于增量刷新选项,如果在子查询中存在分析函数,则物化视图不起作用。
FORCE方式: 这是默认的数据刷新方式。Oracle会自动判断是否满足快速刷新的条件,如果满足则进行快速刷新,否则进行完全刷新。
关于快速刷新: Oracle物化视图的 快速刷新 机制是通过 物化视图日志 完成的。 Oracle通过一个物化视图日志还可以支持多个物化视图的快速刷新 。 物化视图日志根据不同物化视图的快速刷新的需要,可以建立为ROWID或PRIMARY KEY类型的 。还可以选择是否包括SEQUENCE、INCLUDING NEW VALUES以及指定列的列表。
查询重写(QueryRewrite):
包括 enable query rewrite 和 disable query rewrite 两种。
分别指出创建的物化视图是否支持查询重写。 查询重写是指当对物化视图的基表进行查询时 , oracle会自动判断能否通过查询物化视图来得到结果,如果可以,则避免了聚集或连接操作,而直接从已经计算好的物化视图中读取数据。
默认为 disable query rewrite 。
语法:
create materialized view view_name
refresh [ fast|complete|force ]
[
on [commit|demand ] |
start with (start_time) next (next_time)]
AS subquery;
具体操作
创建物化视图需要的权限:
grant create materialized view to user_name;
在源表建立 物化视图日志 :
create materialized view log on test_table
tablespace test_space -- 日志空间
with primary key ; -- 指定为主键类型
在目标数据库上创建MATERIALIZED VIEW:
create materialized view mv_materialized_test refresh force on demand start with sysdate next
to_date( concat (to_char( sysdate + 1 , 'dd-mm-yyyy' ), '10:25:00' ), 'dd-mm-yyyy hh24:mi:ss' ) as
select * from user_info; --这个物化视图在每天10:25进行刷新
修改刷新时间:
alter materialized view mv_materialized_test refresh force on demand start with sysdate
next to_date( concat (to_char( sysdate + 1 , 'dd-mm-yyyy' ), ' 23:00:00' ), 'dd-mm-yyyy hh24:mi:ss' );
或
alter materialized view mv_materialized_test refresh force on demand start with sysdate
next trunc ( sysdate , 'dd' )+ 1 + 1 / 24 ; -- 每天1点刷新
建立索引:
create index IDX_MMT_IU_TEST
on mv_materialized_test( ID ,UNAME)
tablespace test_space;
删除物化视图及日志:
drop materialized view log on test_table; --删除物化视图日志:
drop materialized view mv_materialized_test; --删除物化视图
Oracle物化视图的创建及使用(一的更多相关文章
- oracle 物化视图及创建索引
物化视图是一种特殊的物理表,“物化”(Materialized)视图是相对普通视图而言的.普通视图是虚拟表,应用的局限性大,任何对视图的查询,Oracle都实际上转换为视图SQL语句的查询.这样对整体 ...
- Oracle物化视图的创建及使用
oracle物化视图 一.oracle物化视图基本概念 物化视图首先需要创建物化视图日志, oracle依据用户创建的物化视图日志来创建物化视图日志表, 物化视图日志表的名称为mlog$_后面跟 ...
- oracle物化视图
物化视图是一种特殊的物理表,“物化”(Materialized)视图是相对普通视图而言的.普通视图是虚拟表,应用的局限性大,任何对视图的查询,Oracle都实际上转换为视图SQL语句的查询. 这样对整 ...
- Oracle 物化视图 说明
一. 物化视图概述 Oracle的物化视图是包括一个查询结果的数据库对像,它是远程数据的的本地副本,或者用来生成基于数据表求和的汇总表.物化视图存储基于远程表的数据,也可以称为快照. 物化视图可 ...
- Oracle物化视图梳理
--物化视图可以分为三种类型:* 包含聚集的物化视图* 只包含连接的物化视图* 嵌套物化视图三种物化视图的快速刷新的限制条件有很大区别,而对于其他方面则区别不大. --物化视图创建方式(Build M ...
- ORACLE物化视图(物理视图)
百度文库 http://wenku.baidu.com/view/f78f55c68bd63186bcebbc4b.html ORACLE物化视图 一.------------------------ ...
- Oracle物化视图的一般使用
普通视图和物化视图根本就不是一个东西,说区别都是硬拼到一起的,首先明白基本概念,普通视图是不存储任何数据的,他只有定义,在查询中是转换为对应的定义SQL去查询,而物化视图是将数据转换为一个表,实际存储 ...
- Oracle物化视图详解
现实工作中会有多个数据源同步到一个数据库完成数据分析的场景,这些数据可以不是实时同步的,我们一般通过定时任务抽取数据到统计分析库给应用使用. 一般的同步方式可以通过时间戳做全量和增量数据同步(存在原数 ...
- ORACLE物化视图具体解释
一.物化的一般使用方法物化视图是一种特殊的物理表,"物化"(Materialized)视图是相对普通视图而言的.普通视图是虚拟表.应用的局限性大,不论什么对视图的查询.oracle ...
随机推荐
- [转]magento2项目上线注意事项 切换到产品模式
本文转自:https://segmentfault.com/a/1190000007929783 切换到产品模式 php magento deploy:mode:set production 执行以上 ...
- 【JVM】2、JVM调优总结
转自:http://unixboy.iteye.com/blog/174173/ 堆大小设置JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制:系统的可用虚拟内 ...
- es7新增的2个特性
- Java设计模式之【单例模式】
Java设计模式之[单例模式] 何为单例 在应用的生存周期中,一个类的实例有且仅有一个 当在一些业务中需要规定某个类的实例有且仅有一个时,就可以用单例模式 比如spring容器默认初始化的实例就是单例 ...
- HDU3062(2-SAT)
Party Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
- 老男孩教育python全栈第九期视频
失效了在下面评论即可,会及时更新.python9期已全部更新完 链接: https://pan.baidu.com/s/1VV8_ZyVasK05iKd7QMxO-A 密码: 9zau
- python-责任链模式
源码地址:https://github.com/weilanhanf/PythonDesignPatterns 说明: 当你作为一名coder已经快三十却还还没有女朋友,家中父母已经着急万分,此时要求 ...
- input不可编辑且颜色不变
<input name="ly_qq" type="text" tabindex="2" onMouseOver="this ...
- SpringCloud 组件Eureka参数配置项详解
Eureka涉及到的参数配置项数量众多,它的很多功能都是通过参数配置来实现的,了解这些参数的含义有助于我们更好的应用Eureka的各种功能,下面对Eureka的配置项做具体介绍,供大家参考. Eure ...
- WebSerivce与WebAPI的区别
一.什么是Web Service Web Service技术, 能使得运行在不同机器上的不同应用无须借助附加的.专门的第三方软件或硬件, 就可相互交换数据或集成.依据Web Service规范实施的应 ...