DBMS_MVIEW.REFRESH调用导致ORA-01422错误

时间:2014-03-12 07:46:22

标签: sql oracle plsql oracle11g

我将完整数据库导入到具有相同结构的现有数据库中。 在此之后,调用DBMS_MVIEW.REFRESH过程导致ORA-01422错误。 例如:

begin
 DBMS_MVIEW.REFRESH('SCHEMA_NAME.T_TOP_FRESH_COMMENTS');
end;

错误:   ORA-01422精确提取返回超过请求的行数
  ORA-06512:在" SYS.DBMS_SNAPSHOT",第2563行   ORA-06512:在" SYS.DBMS_SNAPSHOT",第2776行   ORA-06512:在" SYS.DBMS_SNAPSHOT",第2745行   ORA-06512:第2行

选择贝娄返回单行:

select * from dba_registered_mviews t where t.name = 'T_TOP_FRESH_COMMENTS'

错误导致什么?我该如何解决这个问题? 谢谢!

UPD:
物化视图选择不会导致错误。其他物化视图重复了同样的错误。 下面列出了创建视图的脚本:

CREATE MATERIALIZED VIEW T_TOP_FRESH_COMMENTS
REFRESH FORCE ON DEMAND
AS
SELECT ROWNUM AS order_comment, id_comment, date_refresh
  FROM (  SELECT c.id_comment, MAX (h.updated) date_refresh
               FROM    t_comment_user c
                 INNER JOIN t_comment_history h  ON c.id_comment = h.id_comment
           WHERE c.published = 'T' AND h.published = 'T' and h.updated is not null GROUP BY c.id_comment
        ORDER BY date_refresh DESC)
 WHERE ROWNUM <= 10;

UPD1: 我跑完了刷新并收到了同样的错误:

begin
  DBMS_MVIEW.REFRESH('SCHEMA_NAME.T_TOP_FRESH_COMMENTS','c');
end;

我用REFRESH COMPLETE重新创建了物化视图,这也没有用。 我试图清除查看日志。它没有帮助:

begin
dbms_mview.purge_log('SCHEMA_NAME.T_COMMENT_HISTORY',99999,'delete');
end;

1 个答案:

答案 0 :(得分:0)

请参见SYSTEM.DEF$_DESTINATION表中的重复条目(文档ID 2172529.1)。