Oracle物化视图介绍

原创 2012年03月30日 10:21:51

ORACLE中的物化视图

 

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

       物化视图可以查询表,视图和其它的物化视图。

       通常情况下,物化视图被称为主表(在复制期间)或明细表(在数据仓库中)。

       对于复制,物化视图允许你在本地维护远程数据的副本,这些副本是只读的。如果你想修改本地副本,必须用高级复制的功能。当你想从一个表或视图中抽取数据时,你可以用从物化视图中抽取。

       对于数据仓库,创建的物化视图通常情况下是聚合视图,单一表聚合视图和连接视图。

本篇我们将会看到怎样创建物化视图并且讨论它的刷新选项。

       在复制环境下,创建的物化视图通常情况下主键,rowid,和子查询视图。

1.主键物化视图:

              下面的语法在远程数据库表emp上创建主键物化视图

        SQL> CREATE MATERIALIZED VIEW mv_emp_pk
             REFRESH FAST START WITH SYSDATE 
            NEXT  SYSDATE + 1/48
            WITH PRIMARY KEY 
            AS SELECT * FROM emp@remote_db;
            Materialized view created.

              注意:当用FAST选项创建物化视图,必须创建基于主表的视图日志,如下:

            SQL> CREATE MATERIALIZED VIEW LOG ON emp;
            Materialized view log created.

2.Rowid物化视图

              下面的语法在远程数据库表emp上创建Rowid物化视图

      SQL> CREATE MATERIALIZED VIEW mv_emp_rowid 
            REFRESH WITH ROWID 
             AS SELECT * FROM emp@remote_db; 
            Materialized view log created.

3.子查询物化视图

              下面的语法在远程数据库表emp上创建基于emp和dept表的子查询物化视图

            SQL> CREATE MATERIALIZED VIEW  mv_empdept
            AS SELECT * FROM emp@remote_db e
            WHERE EXISTS
             (SELECT * FROM dept@remote_db d
             WHERE e.dept_no = d.dept_no)
      Materialized view log created.

       REFRESH 子句

                    [refresh [fast|complete|force]
            [on demand | commit]
            [start with date] [next date]
            [with {primary key|rowid}]]
 

       Refresh选项说明:

a.      oracle用刷新方法在物化视图中刷新数据.

b.      是基于主键还是基于rowid的物化视图

c.       物化视图的刷新时间和间隔刷新时间

 

Refresh方法-FAST子句

       增量刷新用物化视图日志(参照上面所述)来发送主表已经修改的数据行到物化视图中.如果指定REFRESH FAST子句,那么应该对主表创建物化视图日志

                    SQL> CREATE MATERIALIZED VIEW LOG ON emp;

Materialized view log created.

       对于增量刷新选项,如果在子查询中存在分析函数,则物化视图不起作用。

 

Refresh方法- COMPLETE子句

       完全刷新重新生成整个视图,如果请求完全刷新,oracle会完成       完全刷新即使增量刷新可用。

 

Refresh Method – FORCE 子句

       当指定FORCE子句,如果增量刷新可用Oracle将完成增量刷新,否则将完成完全刷新,如果不指定刷新方法(FAST, COMPLETE, or FORCE),Force选项是默认选项

 

主键和ROWD子句

       WITH PRIMARY KEY选项生成主键物化视图,也就是说物化视图是基于主表的主键,而不是ROWID(对应于ROWID子句). PRIMARY KEY是默认选项,为了生成PRIMARY KEY子句,应该在主表上定义主键,否则应该用基于ROWID的物化视图.

       主键物化视图允许识别物化视图主表而不影响物化视图增量刷新的可用性。

       Rowid物化视图只有一个单一的主表,不能包括下面任何一项:

n         Distinct 或者聚合函数.

n         Group by,子查询,连接和SET操作

 

刷新时间      

       START WITH子句通知数据库完成从主表到本地表第一次复制的时间,应该及时估计下一次运行的时间点, NEXT 子句说明了刷新的间隔时间.

            SQL> CREATE MATERIALIZED VIEW mv_emp_pk
                     REFRESH FAST 
                  START WITH SYSDATE 
                  NEXT  SYSDATE + 2
                  WITH PRIMARY KEY 
                  AS SELECT * FROM emp@remote_db;
                  Materialized view created.

在上面的例子中,物化视图数据的第一个副本在创建时生成,以后每两天刷新一次.

 

总结

物化视图提供了可伸缩的基于主键或ROWID的视图,指定了刷新方法和自动刷新的时间

Oracle普通视图和物化视图的区别

转自:http://blog.csdn.net/joshua_peng1985/article/details/6213593介绍物化视图是一种特殊的物理表,“物化”(Materialized)视图是...
  • aiynmimi
  • aiynmimi
  • 2017年01月09日 11:25
  • 2927

ORACLE物化视图创建实例

公司的项目中遇到需要从其它系统的数据库中取数据进行统计分析的问题,初步选择使用ORACLE的ODI工具进行抽数,但是对方提供的数据库用户下没有任何对象,只是有查询所有表的权限,因此无法做数据反向。于是...
  • zhangchu_63
  • zhangchu_63
  • 2010年04月29日 17:25
  • 10764

ORACLE物化视图-不能删除物化视图的解决办法

http://www.anysql.net/oracle/drop_busy_materialized_view.html 几分钟前一网友问我如何删除一个实体化视图, 当然不是什么语法不会的问题了, ...
  • outget1
  • outget1
  • 2010年02月02日 10:18
  • 4794

oracle中使用物化视图实现表的同步

表的同步可以使用物化视图来实现,可以是同库的也可以是不同数据库之间进行数据同步,建议在同库的数据同步可以使用实时的同步,如果使用db link建议使用增量的刷新方式,防止dblink导致原库的性能急剧...
  • su377486
  • su377486
  • 2015年03月21日 16:46
  • 1707

《Oracle物化视图实战手册》-原理讲解-应用场景-实战

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://leonarding.blog.51cto.com/6045525/1354990...
  • jumewo
  • jumewo
  • 2014年05月10日 21:48
  • 752

物化视图,索引视图,函数索引;创建索引时使用DESC

一、物化视图 Oracle的物化视图是包括一个查询结果的数据库对像,它是远程数据的的本地副本,或者用来生成基于数据表求和的汇总表。物化视图存储基于远程表的数据,也可以称为快照。 ...
  • buxizhizhou530
  • buxizhizhou530
  • 2015年05月06日 16:32
  • 2238

oracle中Job定期执行存储过程刷新物化视图并记录异常(我的物化视图不能自己刷)

最近一个项目,我们的系统中需要处理老数据,但是有一些客观限制:(都是Oracle11.2.0.2) (1)这些老数据存储在人家的数据库中 (2)这些老数据还会持续更新 (3)不能动人家的数据库 (4)...
  • jiq408694711
  • jiq408694711
  • 2013年12月08日 01:03
  • 1522

oracle物化视图介绍

前言 MView的两大应用方向 一是用于数据库的复制,这个在Oracle文档《Advanced Replication》中有详细的描述。另一个是用于数据仓库,同样Oracle文档《...
  • adermxl
  • adermxl
  • 2014年04月03日 11:06
  • 683

ORACLE物化视图与视图区别

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

由于物化视图定义为on commit导致update更新基表慢的解决方案

由于物化视图定义为on commit导致update更新基表慢的解决方案以下是模拟和解决测试过程:(模拟update慢的过程)1、首先基于基表创建物化视图日志:create materialized ...
  • l106439814
  • l106439814
  • 2013年06月18日 16:58
  • 3874
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Oracle物化视图介绍
举报原因:
原因补充:

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