1. 程式人生 > >ORACLE 快速重新整理物化檢視的方法(11g)

ORACLE 快速重新整理物化檢視的方法(11g)

1、on demand:使用者需要重新整理的時候重新整理,這裡就要求使用者自己動手去重新整理資料了(也可以使用job定時重新整理)

  refresh [fast|complete|force] 檢視重新整理的方式:          complete:全部重新整理。         相當於重新執行一次建立檢視的查詢語句。     fast: 增量重新整理.         假設前一次重新整理的時間為t1,那麼使用fast模式重新整理物化檢視時,只向檢視中新增t1到當前時間段內,主表變化過的資料.為了記錄這種變化,
        建立增量重新整理物化檢視還需要一個物化檢視日誌表。create materialized view log on (主表名)。        (多張表時,此語句也生效,建立後,原來的表中會多出兩類視圖表:MLOG$_table_name和RUPD$_table_name)     force: 這是預設的資料重新整理方式。       當可以使用fast模式時,資料重新整理將採用fast方式;否則使用complete方式。  

2、on commit:在事務提交後重新整理(當主表中有資料提交的時候,立即重新整理MV中的資料;)

  使用情況

  ⑴僅用於快速重新整理的物化檢視

  ⑵需要on commit refresh物件許可權

  ⑶如果重新整理失敗需要進行手工重新整理

 

3、start ……:從指定的時間開始,每隔一段時間(由next指定)就重新整理一次;

  在計劃時間進行重新整理:使用start with 和next選項。從指定的時間開始,每隔一段時間(由next指定)就重新整理一次;

  比如說我們要全重新整理一張mv_test物化檢視:     begin
         dbms_mview.refresh(TAB=>'MV_TEST',

                                       METHOD=>'COMPLETE',
                                       PARALLELISM=>8);
    end;
  
  增量重新整理就不需要使用什麼並行了,通常情況下,是沒有那個必要的。     begin
         dbms_mview.refresh(TAB=>'MV_TEST',
                                       METHOD=>'FAST',
                                       PARALLELISM=>1);
    end;

    或者,也可以這樣執行:     exec dbms_mview.refresh('MV_TEST','F');