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 ...
随机推荐
- C# Azure 用Webhook添加警报规则
本篇文章的目的是什么? Azure云端一直困扰着我的是,如果遇到数据库累积数据量过大.数据库DTU过大.应用程序服务访问量过大等,我们都没办法知道他们什么时候过大.只能做的是,我们天天看着我们的应用, ...
- SQL Server “复制”表结构,创建_Log表及触发器
实例效果: 实现表数据的增修删时,记录日志. 1.“复制”现有表, 创建相应的_Log表: (注意点: 通过select union all 的方式,避免了IDENTITY 的“复制”,即如果原表有 ...
- 根据ip获取地点
#region 根据ip获取地点 /// 获取Ip归属地 /// </summary> /// <param name="ip">ip</param& ...
- Wooden Sticks(hdu1501)(sort,dp)
Wooden Sticks Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) To ...
- 悟空模式-java-建造者模式
[此是锻炼神冰铁,磨琢成工光皎洁.老君自己动钤锤,荧惑亲身添炭屑.五方五帝用心机,六丁六甲费周折.造成九齿玉垂牙,铸就双环金坠叶.身妆六曜排五星,体按四时依八节.短长上下定乾坤,左右阴阳分日月.六爻神 ...
- python的小数据池 is和== 以及再谈编码
---恢复内容开始--- 1. 小数据池, id() 小数据池针对的是: int, str, bool 在py文件中几乎所有的字符串都会缓存. id() 查看变量的内存地址 # a = 10 # b ...
- 【代码笔记】iOS-使用MD5加密
一,代码. - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, ...
- 使用Apache php 的一些基本操作(一)
切换目录命令:(就可以在www文件夹里面操作了) cd /var/www/html 新建一个文件: sudo vim info.php (这里出现了一个问题,sudo: vim: command no ...
- kotlin3-IdeaIU编辑器字体自动放大缩小
- python appium笔记(一):appium android环境配置及示例
(一) 简介 Appium是一个开源的自动化测试框架,可以用来测试基于iOS.Android和Firefox OS平台的原生和混合应用.该框架使用Selenium Webdriver,在执行测试时和 ...