創(chuàng)建實體化視圖的幾個注意點 收藏
1。如果要創(chuàng)建基表是其它用戶表的實體化視圖,那么需要給實體化視圖的owner賦予以下權(quán)限:
grant CREATE ANY MATERIALIZED VIEW to username;
grant SELECT ANY TABLE to username;
如果要創(chuàng)建refresh on commit的視圖,那么還需要下面這個權(quán)限:
grant ON COMMIT REFRESH to username;
2。創(chuàng)建refresh on commit的語法如下,此類實體化視圖在基表的事務commit之后,就會立刻刷新
CREATE MATERIALIZED VIEW MV_T1
REFRESH FAST ON COMMIT WITH PRIMARY KEY AS SELECT * FROM kamus.t1;
3。如果不指定on commit,那么默認是on demand,只有手工調(diào)用DBMS_MVIEW包中的刷新過程,實體化視圖才會被刷新
4。指定了start with ... next ...選項之后,第一次創(chuàng)建會有作一次完整刷新,然后在指定的時間間隔之后會定時刷新,本例中刷新間隔為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視圖,我們可以發(fā)現(xiàn)start with... next ...語法也就是Oracle自動創(chuàng)建了一個刷新組,這個刷新組的名稱跟實體化視圖名稱相同,并且IMPLICIT_DESTROY屬性為Y,表示只要該組中的實體化視圖刪除該組也自動被刪除。同時,創(chuàng)建了一個JOB,JOB中的waht屬性是dbms_refresh.refresh('"SCOTT"."MV_T1"');
自然,由于自動刷新是通過JOB完成的,那么初始化參數(shù)job_queue_processes必須大于0,這樣JOB才會正常運行。
本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請
點擊舉報。