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 '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 '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 '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' )+ 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物化视图的创建及使用(一的更多相关文章

  1. oracle 物化视图及创建索引

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

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

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

  3. oracle物化视图

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

  4. Oracle 物化视图 说明

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

  5. Oracle物化视图梳理

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

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

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

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

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

  8. Oracle物化视图详解

    现实工作中会有多个数据源同步到一个数据库完成数据分析的场景,这些数据可以不是实时同步的,我们一般通过定时任务抽取数据到统计分析库给应用使用. 一般的同步方式可以通过时间戳做全量和增量数据同步(存在原数 ...

  9. ORACLE物化视图具体解释

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

随机推荐

  1. WebForm 【复合控件】

    一 复合控件(取值,赋值用法相近)  RadioButtonList      --单选按钮 (一组列表)  <asp:RadioButtonList ID="RadioButtonL ...

  2. [javaSE] 看博客学习java并发编程

    共享性 多线程操作同一个数据,产生线程安全问题 新建一个类ShareData 设计一个int 型的成员变量count 设计一个成员方法addCount(),把count变量++ 在main函数中开启多 ...

  3. String 字符串相加比较

    String 字符串相加 对比 public static void main(String[] args) { String a = "helloword"; final Str ...

  4. 跨域CORS 头缺少 'Access-Control-Allow-Origin'

    今天遇到一个跨域的问题找了好久的资料错误如下: 解决之后: 控制层 加上这两行代码就好啦: @RequestMapping(value = "",method = RequestM ...

  5. Mybatis的枚举处理器

    Mybatis有两个默认枚举处理器 EnumOrdinalTypeHandler EnumTypeHandler 自定义枚举 EnumOrdinalTypeHandler 这个处理器负责将pojo里面 ...

  6. POJ3468(KB7-C 线段树)

    A Simple Problem with Integers Time Limit: 5000MS  Memory Limit: 131072K Total Submissions: 108903   ...

  7. framework7中a标签没反应

    试试在a标签上加这个样式: class="external"

  8. drupal 去掉视图中字段默认的HTML标签

    1.格式--设置 去掉复选框 2.具体字段:

  9. Windows10设置

    按下Win+R键,输入gpedit.msc,打开组策略窗口

  10. FineBI表单如何更新

    FineBI表单如何更新 1. 描述Cube单表更新,是指在某个业务包上面设置定时更新,在某个固定的时间点对某个的业务包中的特定表进行数据更新,部分更新分为两种,全量更新和增量更新,因而在更新策略上则 ...