转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 数据库 >> ORACLE >> 正文
Oracle的實体化視圖管理         ★★★★

Oracle的實体化視圖管理

作者:闵涛 文章来源:闵涛的学习笔记 点击数:723 更新时间:2009/4/22 22:08:15

                 Oracle的實体化視圖管理

作者: CCBZZP


1. 實体化視圖概念
    實体化視圖管理是用于匯總,預計算,復制或分發數据的對象, 在大型的數据庫中使用它可以提高涉及到的SUM,COUNT,AVG,MIN,MAX等的表的查詢的速度,只要在實体化視圖管理上創建了統計,查詢优化器將自動的使用實体化視圖管理,這特性被稱為QUERY REWRITE(查詢重寫).与普通的視圖不同的是實体化視圖管理存儲數据,占据數据庫的物理空間的.
    創建實体化視圖管理的用戶的權限必須有: CREATE MATERIALZED VIEW,CREATE TABLE,CREATE VIEW,SELECT等,如果在其他的模式中創建的話要在表上有CREATE ANY MATERIALIZED VIEW和SELECT權限.
要查詢重引用別的模式中的實体化視圖管理的話,還要有引用的表的GLOBAL QUERY REWRITE OR QUERY REWRITE權限.
    如果計划使用實体化視圖管理的話,要修改參數文件中加: QUERY_REWRITE_ENABLE=TRUE

2. 創建實体化視圖注意事項:
   創建之后,是否要填寫數據
   多長時間刷新一次
   使用那种刷新類型: COMPLE(完全),FAST(快速),FORCE(強制),NEVER(從不)

3. 創建實体化視圖
   CREATE MATERIALIZED VIEW TEST3
   PCTFREE 0 TABLESPACE MTEST
   STORAGE (INITIAL 1M NEXT 1M PCTINCREASE 0)
   BUILD DEFERRED
   REFRESH FAST ON COMMIT
   ENABLE QUERY REWRITE
   AS SELECT EMP_NO,SUM(QTY_PSC) AS QTY_PSC FROM BSEMPMS GROUP BY EMP_NO;

4. 刪除實体化視圖
   DROP MATERIALIZED VIEW TEST3;

5. 管理和評估實体化視圖的工具
   要運行DBMSSNAP.SQL和DBMSSUM.SQL為實体化視圖創建包DBMS_MVIEW和DBMS_OLAP
   DBMS_MVIEW用于執行管理活動的.
   DBMS_OLAP确定實体化視圖是否能提高查詢的性能.

6. 刷新實体化視圖的方法
   EXECUTE DBMS_MVIEW.REFRESH(''''TEST3'''',''''C'''');
   其中TEST3為實体化視圖名稱,''''C''''為刷新類型中的一种.
   刷新類型有: C-完全刷新
               F-快速刷新和強制刷新
   EXECUTE DBMS_MVIEW.REFRESH_ALL
   不接受任何參數,全部刷新.

7. 實体化視圖間的完整性
   在實体化視圖互相嵌套的時候會用不同的實体化視圖的刷新的方式和時間的不同而引起的數据的完整性的問題,對于這种情況,建議把相關聯的實体化視圖放在同一個刷新組中,協調進行刷新.
   DBMS_REFRESH軟件包中提供MAKE過程來創建一個刷新組.
   例如:
   EXECUTE DBMS_REFRESH.MAKE
   (NAME=>''''TEST_GROUP'''',
   LIST=>''''LOC_EMP,LOC_DPT'''',
   NEXT_DATE=>SYSDATE,
   INTERVAL=>''''SYSDATE+7'''');
   上面創建一個實体化視圖刷新組TEST_GROUP,刷新周期為7天一次的.
   兩個實体化視圖LOC_EMP和LOC_DPT通過一個參數來傳遞給過程的.

8. 向刷新組中增加刷新的實体化視圖
   DBMS_REFRESH.ADD
   (NAME IN VARCHAR2,
   LIST IN VARCHAR2,|
   TAB IN DBMS_UTILITY.UNCLARRAY,
   LAX IN BOOLEAN:=FALSE);
  
9. 向刷新組中刪除刷新的實体化視圖
   DBMS_REFRESH.SUBTRACT
   (NAME IN VARCHAR2,
   LIST IN VARCHAR2,|
   TAB IN DBMS_UTILITY.UNCLARRAY,
   LAX IN BOOLEAN:=FALSE);

10. 手工刪除一個刷新組
   EXECUTE DBMS_REFRESH.REFRESH(''''TEST_GROUP'''');
   也可以
   EXECUTE DBMS_REFRESH.DESTROY(NAME=>''''TEST_GROUP'''');
 
11. 實体化視圖的日志管理
   實体化視圖日志是一個表,保持對實体化視圖操作的歷史記錄.
   要創建實体化視圖日志必須能在表上創建AFTER ROW触發器,必須有CREATE TRIGGER,CREATE TABLE權限

   例如:
   CREATE MATERIALIZED VIEW LOG ON BSEMPMS
   TABLESPACE DATA_TEST
   STORAGE(INITIAL 1M NEXT 1M PCTINCREASE 0)
   PCTFREE 5 PCTUSED 90;
   實体化視圖日志的PCTFREE應該很小,PCTUSED應該很大的.
   通過ALTER MATERIALIZED VIEW LOG命令可以修改實体化視圖日志參數.
   如:
   ALTER MATERIALIZED VIEW LOG BSEMPMS PCTFREE 1;
   要撤銷實体化視圖日志,可以用DROP MATERIALIZED VIEW LOG命令
   如:
   DROP MATERIALIZED VIEW LOG ON BSEMPMS;

12. 清除實体化視圖日志
   要減少實体化視圖日志使用的空間,可用DBMS_MVIEW軟件包中的PURGE_LOG過程,PURGE_LOG有三個參數:
   主表名稱,NUM變量,DELETE標志
   NUM指最近最少刷新的實体化視圖數量
   例如:
   EXECUTE DBMS_MVIEW.PURGE_LOG
   (MATER=>''''BSEMPMS'''',
      NUM=>1,
      FLAG=>''''DELETE'''');
   BSEMPMS表的實体化視圖將清除實体化視圖最近最少使用的條目.
   要在截斷主表的時候而不丟失實体化視圖日志條目,可以用命令 
   TRUNCATE TABLE BSEMPMS PRESERVE MATERIALIZED VIEW LOG;

13. 也可以用OEM來創建和管理實体化視圖
   


没有相关教程
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · Sql Server  · MySql
    · Access  · ORACLE
    · SyBase  · 其他
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台