1。如果要創建基表是其它用戶表的實體化視圖,那么需要給實體化視圖的owner賦予以下權限: grant create any materialized view to username; grant select any table to username; 如果要創建refresh on commit的視圖,那么還需要下面這個權限: grant on commit refresh to username;
2。創建refresh on commit的語法如下,此類實體化視圖在基表的事務commit之后,就會立刻刷新 create materialized view mv_t1 refresh fast on commit with primary key as select * from kamus.t1;
4。指定了start with ... next ...選項之后,第一次創建會有作一次完整刷新,然后在指定的時間間隔之后會定時刷新,本例中刷新間隔為1分鐘。 語法如下: create materialized view mv_t1 refresh fast start with sysdate next sysdate+1/24/60 with primary key as select * from kamus.t1; 檢查user_refresh視圖和user_jobs視圖,我們可以發現start with... next ...語法也就是oracle自動創建了一個刷新組,這個刷新組的名稱跟實體化視圖名稱相同,并且implicit_destroy屬性為y,表示只要該組中的實體化視圖刪除該組也自動被刪除。同時,創建了一個job,job中的waht屬性是dbms_refresh.refresh('"scott"."mv_t1"'); 自然,由于自動刷新是通過job完成的,那么初始化參數job_queue_processes必須大于0,這樣job才會正常運行。