晚上测试实体化视图复制,测试环境中的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上创建实体化视图,成功。