創建實體化視圖產生ORA-600 [ksmovrflow], [kkznxddl.begin]錯誤的解決方法
2024-07-21 02:41:06
供稿:網友
晚上測試實體化視圖復制,測試環境中的master site是Oracle10g,MV site是Oracle9201,當在MV site上創建快速刷新的實體化視圖時,報ORA-600錯誤。
SQL> CREATE MATERIALIZED VIEW KAMUS.ACCOUNT2004 REFRESH FAST WITH PRIMARY KEY AS SELECT * FROM KAMUS.ACCOUNT2004@orcl;
CREATE MATERIALIZED VIEW KAMUS.ACCOUNT2004 REFRESH FAST WITH PRIMARY KEY AS SELECT * FROM KAMUS.ACCOUNT2004@orcl
ORA-00600: internal error code, arguments: [ksmovrflow], [kkznxddl.begin], [], [], [], [], [], []
查metalink,發現又是一個bug,這個bug只有當在Oracle8或者9中創建基于Oracle10g的實體化視圖時才會發生。
原因:
Oracle10g的master table中創建主鍵時候顯式指定了主鍵的名稱。如下
alter table table_name add constraint < constraint name> primary key (< col>);
解決方法:
刪除這個主鍵,然后創建一個不指定名稱的主鍵,由Oracle自動命名,如下
alter table ACCOUNT2004 add primary key(OCCURTIME, ACCTID, CURRENCYID);
這樣產生的主鍵名稱就變成SYS_CXXXX。
之后重新在MV site上創建實體化視圖,成功。