Axe*_*auf 5 oracle materialized-view
我在我们当前的项目中多次遇到这里描述的问题,我想了解它是如何发生的以及如何在将来防止它。
DBA_SUMMARIES
在那里为用户的 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)
如果drop materialized view
在 中留下一个条目,那么您遇到了一个错误 - 也许是这里dba_summaries
描述的一个错误
由于您没有支持合同,因此无法筹集 TAR。然而,Oracle 支持人员会问您的第一个问题是您是否正在运行最新的补丁集11.2.0.3 - 我建议您首先考虑此选项,因为根本问题是 Oracle 错误。请注意“这是完整安装”
如果这不能解决问题,您需要尝试解决它,因为据我所知,除了sysdba
for之外没有其他选择drop summary
。链接的文章建议在删除 MV 之前删除索引,这可能是一个不错的起点。
任何指向文档的指针以及是否有人可以解释背后的逻辑
DBA_SUMMARIES
dba_summaries
并且drop summary
没有证件。