网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > Oracle教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
本月文章推荐
.Oracle数据完整性嵌套事务调用的.
.Oracle9i 数据库(第二版)的高级选.
.在 Linux 下建立 FTP 搜索引擎.
.如何快速启动oracle8iSQL-Plus?.
.使用 ADDM 快速轻松解决常见的性.
.怎样修改查看Oracle字符集及怎样.
.Oracle数据库 关于连接池二.
.用Oracle Materialized views动态.
.在Oracle9i中,如何监视索引并清除.
.[Oracle]优化Oracle网络设置的方.
.Oracle 操作图片.
.Oracle 10g如何安排ORA-19815.
.漫谈oracle中的空值.
.oracle里的常用命令.
.ORACLE优化器.
.详解 Oracle 分布式系统数据复制.
.Oracle数据库-关于外联接.
.教你快速掌握Oracle数据库结构的.
.技术笔记-Forms的错误控制.
.数据库程序包全局变量的应用.

ORACLE中的物化视图

发表日期:2008-2-9



  
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 [fastcompleteforce]

            [on demand commit]

            [start with date] [next date]

            [with {primary keyrowid}]]

 

       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的视图,指定了刷新方法和自动刷新的时间。

 
上一篇:在oracle9i,如何在PL/SQL中读写文件 人气:720
下一篇:oracle 9i 的内存泄漏问题 人气:1002
浏览全部Oracle教程的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐