ORACLE中的物化視圖

來源:互聯網
上載者:User

物化視圖是包括一個查詢結果的資料庫對像,它是遠端資料的的本機複本,或者用來產生基於資料表求和的匯總表。物化視圖儲存基於遠端資料表的資料,也可以稱為快照。

       物化視圖可以查詢表,視圖和其它的物化視圖。

       通常情況下,物化視圖被稱為主表(在複製期間)或明細表(在資料倉儲中)。

       對於複製,物化視圖允許你在本地維護遠端資料的副本,這些副本是唯讀。如果你想修改本機複本,必須用進階複製的功能。當你想從一個表或視圖中抽取資料時,你可以用從物化視圖中抽取。

       對於資料倉儲,建立的物化視圖通常情況下是彙總檢視,單一表彙總檢視和串連視圖。

本篇我們將會看到怎樣建立物化視圖並且討論它的重新整理選項。

       在複製環境下,建立的物化視圖通常情況下主鍵,rowid,和子查詢視圖。

1.主鍵物化視圖:

              下面的文法在遠端資料庫表emp上建立主鍵物化視圖

        SQL> CREATE MATERIALIZED VIEW mv_emp_pk
             REFRESH FAST START WITH SYSDATE 
            NEXT  SYSDATE + 1/48
            WITH PRIMARY KEY 
            AS SELECT * FROM emp@remote_db;
            Materialized view created.

              注意:當用FAST選項建立物化視圖,必須建立基於主表的視圖日誌,如下:

            SQL> CREATE MATERIALIZED VIEW LOG ON emp;
            Materialized view log created.

2.Rowid物化視圖

              下面的文法在遠端資料庫表emp上建立Rowid物化視圖

      SQL> CREATE MATERIALIZED VIEW mv_emp_rowid 
            REFRESH WITH ROWID 
             AS SELECT * FROM emp@remote_db; 
            Materialized view log created.

3.子查詢物化視圖

              下面的文法在遠端資料庫表emp上建立基於emp和dept表的子查詢物化視圖

            SQL> CREATE MATERIALIZED VIEW  mv_empdept
            AS SELECT * FROM emp@remote_db e
            WHERE EXISTS
             (SELECT * FROM dept@remote_db d
             WHERE e.dept_no = d.dept_no)
      Materialized view log created.

       REFRESH 子句

                    [refresh [fast|complete|force]
            [on demand | commit]
            [start with date] [next date]
            [with {primary key|rowid}]]
 

       Refresh選項說明:

a.      oracle用重新整理方法在物化視圖中重新整理資料.

b.      是基於主鍵還是基於rowid的物化視圖

c.       物化視圖的重新整理時間和間隔重新整理時間

 

Refresh方法-FAST子句

       增量重新整理用物化視圖日誌(參照上面所述)來發送主表已經修改的資料行到物化視圖中.如果指定REFRESH FAST子句,那麼應該對主表建立物化視圖日誌

                    SQL> CREATE MATERIALIZED VIEW LOG ON emp;

Materialized view log created.

       對於增量重新整理選項,如果在子查詢中存在分析函數,則物化視圖不起作用。

 

Refresh方法- COMPLETE子句

       完全重新整理重建整個視圖,如果請求完全重新整理,oracle會完成       完全重新整理即使增量重新整理可用。

 

Refresh Method – FORCE 子句

       當指定FORCE子句,如果增量重新整理可用Oracle將完成增量重新整理,否則將完成完全重新整理,如果不指定重新整理方法(FAST, COMPLETE, or FORCE),Force選項是預設選項

 

主鍵和ROWD子句

       WITH PRIMARY KEY選項產生主鍵物化視圖,也就是說物化視圖是基於主表的主鍵,而不是ROWID(對應於ROWID子句). PRIMARY KEY是預設選項,為了產生PRIMARY KEY子句,應該在主表上定義主鍵,否則應該用基於ROWID的物化視圖.

       主鍵物化視圖允許識別物化視圖主表而不影響物化視圖增量重新整理的可用性。

       Rowid物化視圖只有一個單一的主表,不能包括下面任何一項:

n         Distinct 或者彙總函式.

n         Group by,子查詢,串連和SET操作

 

重新整理時間      

       START WITH子句通知數據庫完成從主表到本地表第一次複製的時間,應該及時估計下一次啟動並執行時間點, NEXT 子句說明了重新整理的間隔時間.

            SQL> CREATE MATERIALIZED VIEW mv_emp_pk
                     REFRESH FAST 
                  START WITH SYSDATE 
                  NEXT  SYSDATE + 2
                  WITH PRIMARY KEY 
                  AS SELECT * FROM emp@remote_db;
                  Materialized view created.

在上面的例子中,物化視圖資料的第一個副本在建立時產生,以後每兩天重新整理一次.

 

總結

物化視圖提供了可伸縮的基於主鍵或ROWID的視圖,指定了重新整理方法和自動重新整理的時間。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.