logo 西林@生存 - 骑猪闯天下!
物化视图
2006-10-14 8:45:00 By:xling

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的物化视图

转我的贴,写你的名,是一种可耻的行为!请不要让我BS你!
阅读全文 | 回复(0) | 引用通告 | 编辑

发表评论:

    密码:
    主页:
    标题:
    页面数据正在载入...
<<  < 2006 - 10 >  >>
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Placard
1,長江後浪推前浪,前浪死在沙灘上!
2,有了钱的男人,才是真正的男人...
3,不要以为把你的小JJ埋进土里,你就rape了整个地球;不要以为把你的小JJ朝向天空,你就rape了整个宇宙!
Logon System
Search
Info about this blog
Others
myDream
bxna 京ICP备05002321号