Oracle的實體化視圖(MVIEW)的深入研究之二

來源:互聯網
上載者:User
Oracle的實體化視圖(MVIEW)的深入研究之二  
  

Oracle的實體化視圖(MVIEW)的深入研究之二

轉:http://www.anysql.net/oracle/reorg_master_table.html

當在一個表上建了物化視圖的日誌(Materialized View Log)後, 所有的DML操作都會被相應地記錄到物化視圖日誌表(MLOG$_)中, 如果想對這個表進行操作, 但不想這些操作被記錄到日誌(MVIEW LOG)中, 應當怎麼辦呢? 在DBMS_MVIEW包中有兩個過程可以用來完成這個要求. 這裡我們需要開啟兩個會話, 其中一個會話以DBA的身份登陸(Session DBA), 另一個會話隨便了(Session USER), 按如下次序來進行操作:

    在Session USER中先運行以下語句去看一下MVIEW LOG表中有多少條記錄:

SQL> SELECT count(*) FROM MLOG$_T_REORG;

  COUNT(*)
----------
         0

    在Session DBA中運行BEGIN_TABLE_REORGANIZATION過程開始維護, 記得執行完後要運行COMMIT命令, 否則會阻塞(Block)別的進程:

SQL> exec dbms_mview.begin_table_reorganization('ANYSQL','T_REORG');

PL/SQL procedure successfully completed.

    在Session USER中先運行DML直接修改表的資料, 提交後看一下MVIEW LOG表中的記錄有沒有增加:

SQL> insert into t_reorg select * from tab;

13 rows created.

SQL> COMMIT;

Commit complete.

SQL> SELECT count(*) FROM MLOG$_T_REORG;

  COUNT(*)
----------
         0

    在Session DBA中運行END_TABLE_REORGANIZATION過程結束維護, 記得執行完後要運行COMMIT命令, 否則會阻塞(Block)別的進程:

SQL> exec dbms_mview.end_table_reorganization('ANYSQL','T_REORG');

PL/SQL procedure successfully completed.

    在Session USER中先運行一些DML語句, 檢查一下MVIEW LOG表中的記錄數是不是增多了:

SQL> delete t_reorg;

13 rows deleted.

SQL> commit;

Commit complete.

SQL> SELECT count(*) FROM MLOG$_T_REORG;

  COUNT(*)
----------
        13

    在這兒說了一大堆, 其實是如何讓表不產生實體化視圖日誌的問題.  

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.