物化视图详解--介绍、创建方法、例子

原创 2012年03月27日 19:39:23
物化视图是包括一个查询结果的数据库对象,它是远程数据的的本地副本,或者用来生成基于数据表求和的汇总表。物化视图存储基于远程表的数据,也可以称为快照。对于复制,物化视图允许你在本地维护远程数据的副本,这些副本是只读的。如果你想修改本地副本,必须用高级复制的功能。当你想从一个表或视图中抽取数据时,你可以用从物化视图中抽取。 对于数据仓库,创建的物化视图通常情况下是聚合视图,单一表聚合视图和连接视图。物化视图可以查询表,视图和其它的物化视图。

一、 关于物化视图日志:

查询物化视图日志文件格式:desc mlog$_lzwmvtest;

创建物化视图时默认指定物化视图中存在主键,如果不指定,那么创建的物化视图日志文件的基表必须存在主键,否则会报错

Demo:对一个表test

创建日志:create materialized view log on test;

那么会报:'LZWMVTEST'不包含主键约束条件

这种情况下,就必须指定日志文件结构

比如:create materialized view log on test with rowid(具体的针对日志内容方面的在另外一个专题里说明,这里就简述到此)

二、 关于生成数据和刷新:

1>生成数据

两大选项:build immediate build deferred

Build immediate:在创建物化视图的同时根据主表生成数据

Bulid deferred:在创建物化视图的同时,在物化视图内不生成数据,如果此时没有生成数据,以后可以采取:EXEC DBMS_MVIEW.Refresh(‘MV_name’,’C’),注意必须使用全量刷新,默认是增量刷新,所以这里参数必须是C,因为之前都没有生成数据,所以必须全量。

2>关于刷新

² 刷新方式:complete fast force

Complete :完全刷新整个物化视图,相当于重新生成物化视图,此时即时增量刷新可用也全量刷新

Ø Fast:当有数据更新时依照相应的规则对物化视图进行更新(此时必须创建物化视图日志(物化视图日志记录了数据更新的日志),关于日志的说明,参照“物化视图日志文件介绍”)

Ø Force:当增量刷新可用则增量刷新,当增量刷新不可用,则全量刷新(此项为默认选项)

不过从实际情况出发,应该尽量不使用默认选项,可以考虑使用增量刷新,对大表特别有效,大表全量更新速度是非常慢的,特别是在存在索引的情况下(在创建物化视图语句中,可能某些限制查询的条件,导致了增量刷新无法使用,这个是需要注意的,具体是哪类语句导致fast刷新不可用,有待总结…..

² 刷新时间:on demand on commit start with/ next

On demand:在需要刷新时进行刷新(人工判断)

On commit:在基表上有提交操作时,进行更新

Start with:指定首次刷新的时间(一般指定的是当前时间,不过也可以在创建物化视图时不生成数据,则可以考虑在指定的时间刷新,从而生成数据)

Next:刷新的周期时间

三、 基于主键的物化视图和ROWID的物化视图的说明

创建物化视图日志时,指定了记录更新的原则即with 后面的primary 或者rowid 或者object id等等,后面,默认是以primary key为记录更新,在物化视图内也是以此为更新的原则。

例如:1、如果日志内使用的是primary key 则在创建物化视图时指定rowid来更新,则会报ORA-12032: 不能使用 "TEST" 上实体化视图日志中的 rowid

2、如过日志内使用的是rowid 则在创建物化视图时指定primary或者默认指定,则会报ORA-23415: "GIS"."LZWMV" 的实体化视图日志不记录主键

四、 关于物化视图存放的的表空间

直接在创建物化视图时指定日志存放的表空间和物化视图的表空间。

例子:create materialized view MV_TEST tablespace test ----表空间名称

五、 关于查询重写和更新

在创建查询重写时,基表中必须有主键约束,视图里是无法创建主键的,不过其继承了基表的主键约束。(关于视图的创建的一些技巧有待总结……)下面给个例子

Create materialized view MV_TEST

Refresh fast ----前提是必须创建基表日志,可以忽略该项

Enable query rewrite ----前提是基表上必须存在主键约束

As

Select * from TEST; ----物化视图数据生成

六、 关于创建物化视图的例子:

1、 使用增量刷新的物化视图的写法

创建物化视图日志,必须创建日志

Create materialized view log on TEST ----TEST为表名

----注:(TEST为表名或者视图名,关于视图上建立物化视图,见基于视图的物化视图

----创建物化视图语句:

Create materialized view MV_TEST

----MVTEST为物化视图名

Build immediate

----创建时生成数据对应的是build deferred

Refresh fast

----增量刷新

On commit

----在基表有更新时提交,这里该句对视图无效

With rowid

----这里创建基于rowid的物化视图,对应的是 primary key

As

Select * from TEST;

----生成物化视图数据语句

七、 小的知识点

创建主键约束语句:alter table table_name add(constraint constraint_name primary key(columes));

建议使用job来定期刷新物化视图

详解物化视图(汇总比较有用的资料)

物化视图是包括一个查询结果的数据库对象,它是远程数据的的本地副本,或者用来生成基于数据表求和的汇总表。物化视图存储基于远程表的数据,也可以称为快照。对于复制,物化视图允许你在本地维护远程数据的副本,这...
  • caixingyun
  • caixingyun
  • 2014年11月04日 18:07
  • 3001

创建物化视图详解(图解)

创建物化视图详解                  一,什么是物化视图     物化视图是包括一个查询结果的数据库对象,它是远程数据的的本地副本,或者用来生成基于数据表求和的汇总表。物化视图存储...
  • wk843620202
  • wk843620202
  • 2014年10月03日 19:57
  • 5581

oracle 物化视图简单创建

Create materialized view log on F_RPT_TASK WITH ROWID    --  ----TEST为表名 ----注:(TEST为表名或者视图名,关于视图上建...
  • dongcctv5
  • dongcctv5
  • 2013年02月26日 17:53
  • 3937

物化视图创建 及 刷新机制修改

Oracle物化视图语法2010-05-21 09:58    物化视图对于前台数据库使用者来说如同一个实际的表,具有和一般表相同的如select等操作,而其实际上是一个视图,一个由系统实现定期刷新其...
  • lsyuan1989
  • lsyuan1989
  • 2016年01月20日 16:48
  • 1942

物化视图详解--介绍、创建方法、例子

    物化视图,它是用于预先计算并保存表连接或聚集等耗时较多的操作的结果,这样,在执行查询时,就可以避免进行这些耗时的操作,从而快速的得到结果。物化视图有很多方面和索引很相似:使用物化视图的目的是为...
  • huijuanlover
  • huijuanlover
  • 2011年06月26日 23:25
  • 1146

创建物化视图详解(图解)

创建物化视图详解                  一,什么是物化视图     物化视图是包括一个查询结果的数据库对象,它是远程数据的的本地副本,或者用来生成基于数据表求和的汇总表。物化视图存储...
  • wk843620202
  • wk843620202
  • 2014年10月03日 19:57
  • 5581

oralce创建物化视图

  • 2014年04月23日 09:16
  • 314B
  • 下载

Oracle物化视图应用详解

  • 2011年11月04日 15:17
  • 28KB
  • 下载

Oracle 物化视图 详细错误描述 查看方法

Oracle的物化视图提供了强大的功能,可以用于预先计算并保存表连接或聚集等耗时较多的操作的结果,这样,在执行查询时,就可以避免进行这些耗时的操作,而从快速的得到结果。关于物化视图相关的说明参考: O...
  • tianlesoftware
  • tianlesoftware
  • 2012年07月05日 20:02
  • 8662

『ORACLE』快速刷新物化视图的方法(11g)

1、on demand:使用DBMS_MVIEW包中的存储过程启用手工刷新(默认设置) refresh [fast|complete|force] 视图刷新的方式: complete:全部...
  • qq_38815172
  • qq_38815172
  • 2017年05月17日 14:53
  • 1034
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:物化视图详解--介绍、创建方法、例子
举报原因:
原因补充:

(最多只允许输入30个字)