定義: 物化視圖是一種特殊的物理表,,“物化”(Materialized)視圖是相對普通視圖而言,但是物化視圖跟普通視圖沒有什么聯(lián)系,物化視圖會占用數(shù)據(jù)庫磁盤空間,, 它創(chuàng)建索引,,創(chuàng)建方法。
ON DEMAND,、ON COMMIT 二者的區(qū)別在于刷新方法的不同 ON DEMAND顧名思義,,僅在該物化視圖“需要”被刷新了,才進行刷新(REFRESH),,即更新物化視圖,,以保證和基表數(shù)據(jù)的一致性; 而ON COMMIT是說,,一旦基表有了COMMIT,,即事務提交,則立刻刷新,,立刻更新物化視圖,,使得數(shù)據(jù)和基表一致。
oracle簡單的創(chuàng)建方法: create materialized view mv_name as select * from table_name ( 默認情況下,,如果沒指定刷新方法和刷新模式,,則Oracle默認為FORCE和DEMAND); ON COMMIT物化視圖: create materialized view mv_name refresh force on commit as select * from table_name( 實際創(chuàng)建過程中,,基表需要有主鍵約束,,否則會報錯(ORA-12014)); 創(chuàng)建定時刷新的物化視圖: create materialized view mv_name refresh force on demand start with sysdate next sysdate+1 (指定物化視圖每天刷新一次) 上述創(chuàng)建的物化視圖每天刷新,但是沒有指定刷新時間,,如果要指定刷新時間(比如每天晚上10:00定時刷新一次):create materialized view mv_name refresh force on demand start with sysdate next to_date( concat( to_char( sysdate+1,'dd-mm-yyyy'),' 22:00:00'),'dd-mm-yyyy hh24:mi:ss'),;
CREATE MATERIALIZED VIEW an_user_base_file_no_charge REFRESH COMPLETE START WITH SYSDATE NEXT TRUNC(SYSDATE+29)+5.5/24 --紅色部分表示從指定的時間開始,每隔一段時間(由next指定)就刷新一次 AS select distinct user_no from cw_arrearage t where (t.mon = dbms_tianjin.getLastMonth or t.mon = add_months(dbms_tianjin.getLastMonth, -1))
刪除: drop materialized view mv_name
|
|