这个提示相当模糊,google到yangtingkun的blog,发现了查找详细原因的方法。
http://yangtingkun.itpub.net/post/468/13318“
Oracle提供的DBMS_MVIEW.EXPLAIN_MVIEW过程可以帮助你快速定位问题的原因。下面通过一个例子来说明,如果通过这个过程来解决问题。
使用EXPLAIN_MVIEW 过程首先要建立MV_CAPABILITIES_TABLE表,建表的脚步是$ORACLE_HOME/rdbms/admin /utlxmv.sql。(EXPLAIN_MVIEW过程是两个过程的重载,一个输出到MV_CAPABILITIES_TABLE表,另一个以PL /SQL的VARRAY格式输出,为了简单起见,我们建立MV_CAPABILITIES_TABLE表)。
SQL> begin
2 dbms_mview.explain_mview('SELECT
3 A.COL1,B.COL1
4 FROM A,B
5 WHERE A.COL2 = B.COL2;');
6 end;
7 /
通过select capability_name, possible, msgtxt from mv_capabilities_table
where capability_name like 'REFRESH%';
可以查找出原因
”
经查,我这段sql错误原因是“
物化视图日志没有基于rowid;物化视图引用的字段没有包含所有关联表的rowid”。
修改sql为:
CREATE MATERIALIZED VIEW LOG ON A WITH ROWID ;
CREATE MATERIALIZED VIEW LOG ON B WITH ROWID ;
CREATE MATERIALIZED VIEW MV_TEST
BUILD IMMEDIATE
REFRESH FAST ON COMMIT
AS
SELECT
A.COL1,B.COL1,A.ROWID AID,B.ROWID BID
FROM A,B
WHERE A.COL2 = B.COL2;本回答被提问者采纳