再生垫。由于 dba_summaries 条目,在 Oracle 中查看失败,如何防止?

Axe*_*auf 5 oracle materialized-view

我在我们当前的项目中多次遇到这里描述的问题,我想了解它是如何发生的以及如何在将来防止它。

  • DBA_SUMMARIES在那里为用户的 MV 创建条目的含义和原因是什么?
  • 有没有办法以标准用户身份删除那里的条目,以便我可以重新创建 MV 而不会遇到上述问题?

主要问题是SYSDBA删除冲突摘要需要特权。由于我们SYSDBA在目标实例上没有帐户,因此我们无法在没有数据库支持团队人员介入的情况下重新创建我们的 MV。

任何指向文档的指针,如果有人可以解释背后的逻辑DBA_SUMMARIES是什么以及我如何防止这个问题发生,那就太好了。

我们观察到的 Oracle 版本是 11.2.0.1.0(在 64 位 Linux 上),我们没有支持合同,因此无法获得 Oracle 支持。

更新/解决方案

感谢下面杰克的回答,我已经能够绕过这个问题,因为我们似乎真的遇到了他提到的错误。当我第一次删除 MV 上的所有索引时,我没有收到错误消息,并且能够按预期重新创建 MV(它在USER_OBJECTS删除后不再显示)。

这就是我现在的做法(为简洁起见剪掉了):

SET serveroutput ON
SET echo ON

DECLARE
  CURSOR mv_indexes
  IS
    SELECT 'DROP INDEX '
      || index_name AS stmt
    FROM user_indexes
    WHERE table_name = 'MV_NAME'
    AND table_owner  = 'USER';
BEGIN
  FOR ix IN mv_indexes
  LOOP
    dbms_output.put_line('Executing: ' || ix.stmt);
    EXECUTE immediate ix.stmt;
  END LOOP;
END;
/

DROP materialized VIEW MV_NAME;

SELECT * FROM user_objects WHERE object_name = 'MV_NAME';

CREATE materialized VIEW MV_NAME ..

CREATE INDEX ix_someindex ON MV_NAME (..);
CREATE INDEX..
Run Code Online (Sandbox Code Playgroud)

Jac*_*las 4

如果drop materialized view在 中留下一个条目,那么您遇到了一个错误 - 也许是这里dba_summaries描述的一个错误

由于您没有支持合同,因此无法筹集 TAR。然而,Oracle 支持人员会问您的第一个问题是您是否正在运行最新的补丁集11.2.0.3 - 我建议您首先考虑此选项,因为根本问题是 Oracle 错误。请注意“这是完整安装”

如果这不能解决问题,您需要尝试解决它,因为据我所知,除了sysdbafor之外没有其他选择drop summary。链接的文章建议在删除 MV 之前删除索引,这可能是一个不错的起点。

任何指向文档的指针以及是否有人可以解释背后的逻辑DBA_SUMMARIES

dba_summaries并且drop summary没有证件。