物化檢視日誌表被DROP後建立物化檢視報錯
物化檢視尤其是快速重新整理的物化檢視,依賴於物化檢視日誌表,所以物化檢視日誌表被刪除後報錯是很正常的,不過如果物化檢視日誌表是直接被DROP,則錯誤資訊比較有意思。
直接看例子:
SQL> create table t (id number primary key, name varchar2(30));
表已建立。
SQL> create materialized view log on t;
實體化檢視日誌已建立。
SQL> create materialized view mv_t refresh fast as select * from t;
實體化檢視已建立。
SQL> drop materialized view mv_t;
實體化檢視已刪除。
SQL> drop table mlog$_t;
表已刪除。
SQL> create materialized view mv_t refresh fast as select * from t;
create materialized view mv_t refresh fast as select * from t
*
第 1 行出現錯誤:
ORA-23412: 主表的主鍵列已更改
SQL> create materialized view mv_t as select * from t;
create materialized view mv_t as select * from t
*
第 1 行出現錯誤:
ORA-00942: 表或檢視不存在
SQL> drop materialized view log on t;
實體化檢視日誌已刪除。
SQL> create materialized view mv_t refresh fast as select * from t;
create materialized view mv_t refresh fast as select * from t
*
第 1 行出現錯誤:
ORA-23413: 表 "TEST"."T" 不帶實體化檢視日誌
SQL> create materialized view mv_t as select * from t;
實體化檢視已建立。
SQL> drop materialized view mv_t;
實體化檢視已刪除。
SQL> create materialized view log on t;
實體化檢視日誌已建立。
SQL> drop table mlog$_t purge;
表已刪除。
SQL> create materialized view mv_t refresh fast as select * from t;
create materialized view mv_t refresh fast as select * from t
*
第 1 行出現錯誤:
ORA-23412: 主表的主鍵列已更改
SQL> create materialized view mv_t as select * from t;
create materialized view mv_t as select * from t
*
第 1 行出現錯誤:
ORA-00942: 表或檢視不存在
SQL> drop materialized view log on t;
實體化檢視日誌已刪除。
物化檢視日誌的清除必須使用DROP MATERIALIZED VIEW LOG ON的語法,如果直接刪除了物化檢視日誌對應的表,就會導致上面的錯誤資訊。有趣的是,建立快速重新整理的物化檢視錯誤是ORA-23412,而建立完全重新整理或FORCE重新整理的物化檢視會報錯ORA-942。
而對於沒有建立物化檢視日誌的基表,則快速重新整理的物化檢視會報錯ORA-23413,而完全重新整理或FORCE重新整理的物化檢視則不會報錯。
如果Oracle可以禁止直接刪除物化檢視日誌表,就不會帶來這種令人迷惑的錯誤資訊了。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4227/viewspace-617658/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【物化檢視】幾種物化檢視日誌分析
- 【物化檢視】根據物化檢視日誌快速重新整理物化檢視的過程
- 物化檢視妙用__表同步使用物化檢視方法
- Oracle如何根據物化檢視日誌快速重新整理物化檢視Oracle
- 物化檢視的快速重新整理測試與物化檢視日誌
- 物化檢視日誌的維護
- oracle物化檢視日誌系列(一)Oracle
- oracle物化檢視日誌系列(二)Oracle
- oracle物化檢視日誌系列(三)Oracle
- oracle 建立物化檢視Oracle
- Oracle 物化檢視建立Oracle
- 物化檢視匯出匯入可能導致物化檢視日誌的失效
- SYS使用者的表無法建立物化檢視日誌
- 物化檢視重新整理並非完全根據物化檢視日誌記錄
- 10G物化檢視PCT快速重新整理不再需要物化檢視日誌(三)
- 10G物化檢視PCT快速重新整理不再需要物化檢視日誌(二)
- 10G物化檢視PCT快速重新整理不再需要物化檢視日誌(一)
- 建立遠端基表的物化檢視
- 物化檢視日誌與增量重新整理
- 物化檢視日誌對UPDATE的影響
- ORACLE中的物化檢視建立Oracle
- 建立物化檢視MV ( Materialized View )ZedView
- 多個物化檢視導致物化日誌無法及時更新
- oracle物化檢視Oracle
- 物化檢視的建立(全刷模式)模式
- Oracle 11g 建立物化檢視Oracle
- 使用 on prebuilt table 建立物化檢視 (ZT)UI
- 使用 on prebuilt table 建立物化檢視(zt)UI
- Oracle 物化檢視 詳細錯誤描述 檢視方法Oracle
- 物化檢視詳解
- materialized view (物化檢視)ZedView
- 物化檢視 on commitMIT
- drop物化檢視log表導致insert、delete、update報ORA-00942delete
- Oracle物化檢視的建立及使用(二)Oracle
- Oracle物化檢視的建立及使用(一)Oracle
- 建立Materialed View (物化檢視)時候報錯ORA-01723View
- 普通檢視和物化檢視的區別
- 物化檢視日誌無法正常清除的解決方法