Oracle11gr2物化檢視日誌新增PURGE語句
在11.2中,物化檢視日誌也新增了一些功能,物化檢視日誌新增了PURGE語句,使得物化檢視日誌的清除和物化檢視的重新整理分離,從而提高物化檢視的重新整理效能。
在以往的版本中,物化檢視重新整理完成之前,需要清除物化檢視日誌中的記錄,清除的標準是這些記錄沒有任何一個物化檢視的重新整理需要用到。
顯然,這個DELETE的操作勢必會影響物化檢視重新整理的效能。現在Oracle提供了專門的PURGE語句,使得物化檢視日誌的清除工作可以和重新整理分離開,這樣物化檢視重新整理的效能可以得以提高。
SQL> SELECT * FROM V$VERSION;
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
PL/SQL Release 11.2.0.1.0 - Production
CORE 11.2.0.1.0 Production
TNS for Linux: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production
SQL> ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS';
會話已更改。
SQL> SELECT SYSDATE FROM DUAL;
SYSDATE
-------------------
2010-01-18 05:11:47
SQL> CREATE TABLE T
2 (ID NUMBER PRIMARY KEY,
3 NAME VARCHAR2(30),
4 AGE NUMBER);
表已建立。
SQL> CREATE MATERIALIZED VIEW LOG ON T
2 PURGE START WITH SYSDATE + 5/1440
3 REPEAT INTERVAL '5' MINUTE;
實體化檢視日誌已建立。
SQL> CREATE MATERIALIZED VIEW MV_T
2 REFRESH FAST
3 AS SELECT * FROM T;
實體化檢視已建立。
SQL> INSERT INTO T
2 VALUES (1, 'TEST', 18);
已建立 1 行。
SQL> SELECT * FROM MLOG$_T;
ID SNAPTIME$$ D O CHANGE_VECTOR$$ XID$$
---------- ------------------- - - ------------------------------ ----------
1 4000-01-01 00:00:00 I N FE 2.8148E+15
SQL> EXEC DBMS_MVIEW.REFRESH('MV_T')
PL/SQL 過程已成功完成。
SQL> SELECT * FROM MV_T;
ID NAME AGE
---------- ------------------------------ ----------
1 TEST 18
SQL> SELECT * FROM MLOG$_T;
ID SNAPTIME$$ D O CHANGE_VECTOR$$ XID$$
---------- ------------------- - - ------------------------------ ----------
1 2010-01-18 05:12:35 I N FE 2.8148E+15
SQL> SELECT SYSDATE FROM DUAL;
SYSDATE
-------------------
2010-01-18 05:13:04
SQL> SELECT SYSDATE FROM DUAL;
SYSDATE
-------------------
2010-01-18 05:16:55
SQL> SELECT * FROM MLOG$_T;
未選定行
SQL> UPDATE T SET NAME = 'ABC';
已更新 1 行。
SQL> SELECT * FROM MLOG$_T;
ID SNAPTIME$$ D O CHANGE_VECTOR$$ XID$$
---------- ------------------- - - ------------------------------ ----------
1 4000-01-01 00:00:00 U U 04 2.8149E+15
SQL> EXEC DBMS_MVIEW.REFRESH('MV_T')
PL/SQL 過程已成功完成。
SQL> SELECT * FROM MLOG$_T;
ID SNAPTIME$$ D O CHANGE_VECTOR$$ XID$$
---------- ------------------- - - ------------------------------ ----------
1 2010-01-18 05:17:33 U U 04 2.8149E+15
SQL> SELECT SYSDATE FROM DUAL;
SYSDATE
-------------------
2010-01-18 05:17:46
SQL> SELECT SYSDATE FROM DUAL;
SYSDATE
-------------------
2010-01-18 05:22:02
SQL> SELECT * FROM MLOG$_T;
未選定行
可以看到,物化檢視日誌的清除現在和物化檢視的重新整理沒有關係,而是根據物化檢視日誌建立時候指定的時間間隔,每5分鐘清除一次。
物化檢視日誌的清除語句可以在建立的時候指定,也可以通過ALTER MATERIALIZED VIEW語句進行修改,比如下面就將物化檢視日誌的重新整理修改為預設方式,也就是和以前版本保持一致的——物化檢視重新整理時清除物化檢視日誌:
SQL> ALTER MATERIALIZED VIEW LOG ON T PURGE IMMEDIATE SYNCHRONOUS;
實體化檢視日誌已更改。
SQL> INSERT INTO T
2 VALUES (2, 'T', 1);
已建立 1 行。
SQL> COMMIT;
提交完成。
SQL> SELECT * FROM MLOG$_T;
ID SNAPTIME$$ D O CHANGE_VECTOR$$ XID$$
---------- ------------------- - - ------------------------------ ----------
2 4000-01-01 00:00:00 I N FE 1.4075E+15
SQL> EXEC DBMS_MVIEW.REFRESH('MV_T')
PL/SQL 過程已成功完成。
SQL> SELECT * FROM MLOG$_T;
未選定行
即使是PURGE IMMEDIATE方式清除物化檢視日誌,Oracle也可以選擇同步進行或非同步進行。同步方式就是以前版本的工作方式,而非同步方式Oracle會在重新整理後啟動一個SHEDULER JOB來完成日誌的清除,這種方式同樣可以提高物化檢視重新整理的效能。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4227/viewspace-629542/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle11gr2物化檢視日誌新增COMMIT SCN語句OracleMIT
- 【物化檢視】幾種物化檢視日誌分析
- 【物化檢視】根據物化檢視日誌快速重新整理物化檢視的過程
- 物化檢視日誌的維護
- oracle物化檢視日誌系列(一)Oracle
- oracle物化檢視日誌系列(二)Oracle
- oracle物化檢視日誌系列(三)Oracle
- 物化檢視日誌表被DROP後建立物化檢視報錯
- Oracle如何根據物化檢視日誌快速重新整理物化檢視Oracle
- 物化檢視的快速重新整理測試與物化檢視日誌
- 物化檢視匯出匯入可能導致物化檢視日誌的失效
- 物化檢視重新整理並非完全根據物化檢視日誌記錄
- 物化檢視日誌與增量重新整理
- 物化檢視日誌對UPDATE的影響
- 10G物化檢視PCT快速重新整理不再需要物化檢視日誌(三)
- 10G物化檢視PCT快速重新整理不再需要物化檢視日誌(二)
- 10G物化檢視PCT快速重新整理不再需要物化檢視日誌(一)
- 物化檢視的CONSIDER FRESH語句(三)IDE
- 物化檢視的CONSIDER FRESH語句(二)IDE
- 物化檢視的CONSIDER FRESH語句(一)IDE
- 多個物化檢視導致物化日誌無法及時更新
- 通過日誌檢視mysql正在執行的SQL語句MySql
- Oracle物化檢視語法Oracle
- 物化檢視日誌無法正常清除的解決方法
- 物化檢視日誌的重建 與 ORA-12034
- 用exp、imp遷移包含物化檢視日誌的資料
- SYS使用者的表無法建立物化檢視日誌
- 物化檢視日誌(materialized view log)引起大量Dfs Lock Handle等待ZedView
- Oracle11gr2新增遞迴WITH語句(三)Oracle遞迴
- Oracle11gr2新增遞迴WITH語句(二)Oracle遞迴
- Oracle11gr2新增遞迴WITH語句(一)Oracle遞迴
- 檢視日誌
- 物化檢視comlete重新整理會產生大量的日誌
- 【ORACLE】常用物化檢視相關後設資料查詢語句Oracle
- 物化檢視妙用__表同步使用物化檢視方法
- alertmanager: 檢視日誌
- 用sql語句dbcc log 檢視SQL Server 資料庫的事務日誌SQLServer資料庫
- MYSQL啟用日誌和檢視日誌MySql