本站不再更新,歡迎光臨 java開發技術網
          隨筆-230  評論-230  文章-8  trackbacks-0
            實體化視圖管理是用于匯總,預計算,復制或分發數據的對象, 在大型的數據庫中使用它可以提高涉及到的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;

          posted on 2008-07-14 18:29 有貓相伴的日子 閱讀(445) 評論(0)  編輯  收藏 所屬分類: BI

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          本站不再更新,歡迎光臨 java開發技術網
          主站蜘蛛池模板: 石渠县| 钟山县| 丰镇市| 峨边| 苗栗市| 武川县| 蒲江县| 保德县| 襄城县| 大城县| 东莞市| 砚山县| 保山市| 赤城县| 信丰县| 常州市| 淮北市| 眉山市| 宁陕县| 象州县| 拉孜县| 平顶山市| 金沙县| 南通市| 宁晋县| 高台县| 旬阳县| 阜南县| 合阳县| 福安市| 西充县| 伊金霍洛旗| 辉县市| 阿拉尔市| 通山县| 鲁甸县| 榆中县| 沽源县| 芮城县| 萝北县| 铜陵市|