<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Decode360's Blog

    業精于勤而荒于嬉 QQ:150355677 MSN:decode360@hotmail.com

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 ::  :: 管理 ::
      397 隨筆 :: 33 文章 :: 29 評論 :: 0 Trackbacks
    關于MV刷新的問題
    ?
    ??? 最近在工作中遇到一個問題,是關于物化視圖的刷新的,對實際數據產生了比較大的影響。雖然犯得錯誤很低級,主要是由于對一些概念的不清晰造成的,但是仍然覺得有必要將這個問題記下來,以免悲劇再次發生。
    ?
    ?
    ?
    ?
    ??? 這個錯誤還需要從materialized view的創建開始追溯,因為如果在create materialized view語句中加入start with 和 next 子句的話,創建MV的過程中會自動創建一個job,制定定期刷新計劃,例如:
    ?
    create materialized view t1_mv refresh fast
    start with to_date('21-07-2009 17:15:00', 'dd-mm-yyyy hh24:mi:ss')
    ? next TRUNC(SYSDATE,'HH')+375/1440
    ? with primary key
    ??? as select * from t1;
    ?
    SQL> select job, schema_user, interval, what from all_jobs;
    ?
    ?????? JOB SCHEMA_USER??????? INTERVAL??????????????????????????? WHAT
    ---------- ------------------ ----------------------------------- ----------------------------------------------
    ??????? 21 WANGXIAOQI???????? TRUNC(SYSDATE,'HH')+375/1440??????? dbms_refresh.refresh('"WANGXIAOQI"."T1_MV"');
    ?
    SQL>
    ?
    ??? 可以看到,這個job中的執行內容是:dbms_refresh.refresh('"WANGXIAOQI"."T1_MV"'); 而不是我們普通手動刷新MV時用的 dbms_mview.refresh 。
    ?
    ?
    ?
    ?
    ?
    ?
    ??? 再來研究一下dbms_refresh這個數據包,這個包是用于產生一個刷新組以方便MV一組為單位統一刷新的。而當MV被制定刷新策略的方式指定時,會自動創建一個刷新組,并將該MV添加至這個刷新組中,所以job可以使用dbms_refresh.refresh來進行刷新。可以來看一下:
    ?
    SQL> select rowner, rname, job, interval from all_refresh where rname = 'T1_MV';
    ?
    ROWNER?????????????? RNAME?????????????????? JOB INTERVAL
    -------------------- ---------------- ---------- ----------------------------------------
    WANGXIAOQI?????????? T1_MV??????????????????? 21 TRUNC(SYSDATE,'HH')+375/1440
    ?
    ??? 再看這個組的成員:
    ?
    SQL> select rowner, rname, job, interval from all_refresh_children where rname = 'T1_MV';
    ?
    ROWNER?????????????? RNAME?????????????????? JOB INTERVAL
    -------------------- ---------------- ---------- ----------------------------------------
    WANGXIAOQI?????????? T1_MV??????????????????? 21 TRUNC(SYSDATE,'HH')+375/1440
    ?
    ??? 可以看到只有這個物化視圖本身。
    ?
    ??? 所以當物化視圖刷新腳本自動執行時,刷新的是你所創建的MV的名字命名的刷新組,而不是單純得刷新這個MV。 注:關于具體如何使用dbms_refresh來創建刷新組、添加成員、進行刷新等操作,可以參見以下地址:http://www.lansz.com/html/2009/06/mview_step_by_step_05.html
    ?
    ?
    ?
    ?
    ?
    ??? 這新一次的物化視圖創建中,沒有指定執行時間,而是單純得創建,所以Oracle不會創建刷新組,如下:
    ?
    SQL>
    SQL> create materialized view t1_mv_2 refresh fast
    ? 2????? as select * from t1;
    ?
    Materialized view created

    SQL> select rowner, rname, job, interval from all_refresh_children where rname = 'T1_MV_2';
    ?
    ROWNER?????????????? RNAME?????????????????? JOB INTERVAL
    -------------------- ---------------- ---------- ----------------------------------------

    SQL>
    ?
    ??? 所以,如果對dbms_refresh了解不清的情況下,會造成無法刷新的情況,如果對沒有創建刷新組的對象進行刷新就報錯:
    ?
    SQL> exec dbms_refresh.refresh('T1_MV_2');
    ?
    begin dbms_refresh.refresh('T1_MV_2'); end;
    ?
    ORA-23404: refresh group "WANGXIAOQI"."T1_MV_2" does not exist
    ORA-06512: at "SYS.DBMS_SYS_ERROR", line 95
    ORA-06512: at "SYS.DBMS_REFRESH", line 23
    ORA-06512: at "SYS.DBMS_REFRESH", line 195
    ORA-06512: at line 2
    ?
    SQL> exec dbms_mview.refresh('T1_MV_2');
    ?
    PL/SQL procedure successfully completed


    ?
    ?
    ??? 另外還需要注意一點,如果刪除了某個MV,則會連同創建的fresh group同時刪除,需要在實際操作中注意。
    ?
    ?
    ?
    ?
    posted on 2009-08-31 22:41 decode360 閱讀(1860) 評論(1)  編輯  收藏 所屬分類: 07.Oracle

    評論

    # re: 關于MV刷新的問題 2015-07-14 11:54 YYJ
    GOOD!!!!!!!!!!  回復  更多評論
      

    主站蜘蛛池模板: 亚洲人成网站色在线入口| 亚洲国产日韩成人综合天堂| 久久久亚洲精品国产| 野花香在线视频免费观看大全| 国产福利电影一区二区三区,亚洲国模精品一区 | 在线观看免费精品国产| 亚洲乱理伦片在线观看中字| 免费阿v网站在线观看g| 亚洲最大无码中文字幕| 日韩成人免费aa在线看| 色偷偷亚洲男人天堂| 亚洲国产人成精品| 日韩精品无码免费专区网站| 久久综合日韩亚洲精品色| 美女内射无套日韩免费播放| 亚洲网红精品大秀在线观看| 成人免费观看一区二区| 亚洲国产av玩弄放荡人妇| 亚洲JIZZJIZZ中国少妇中文| 亚洲阿v天堂在线2017免费| 亚洲高清专区日韩精品| 2021在线永久免费视频| 亚洲中文字幕无码中文字| 免费a在线观看播放| a色毛片免费视频| 亚洲av无码片在线观看| 国产做床爱无遮挡免费视频| 国产精品成人免费观看| 亚洲精品电影天堂网| 国产精品国产午夜免费福利看| 中文字幕免费人成乱码中国| 亚洲精品国产福利片| 免费高清小黄站在线观看 | 中文亚洲AV片在线观看不卡| 蜜桃成人无码区免费视频网站| 狠狠色伊人亚洲综合网站色| 亚洲精品无码你懂的网站| 最近2019免费中文字幕6| 小说专区亚洲春色校园| 亚洲色图在线播放| 国产成人免费手机在线观看视频|