Oracle-11g-R2

為什麼在 Oracle 11gR2 中我不能刪除創建它的同一使用者的物化視圖?

  • April 16, 2015

我和使用者一起創建了一個物化視圖DI_TEST_AL,我們來命名它MY_MVIEW。它在USER_OBJECTS表中顯示為MATERIALIZED VIEW,我嘗試刪除它,我收到一條成功消息,但該對象仍然存在。事實上,如果我嘗試重新創建它,我會收到“對像已存在”之類的錯誤。

我看到有一個同名的表屬於另一個模式。我認為這不應該導致問題,但我想提一下。

這是 SQL*Plus 輸出:

SQL*Plus: Release 11.2.0.1.0 Production on Mon Aug 1 17:01:50 2011

SQL> select object_name, object_type, owner from all_objects where object_name = 'MY_MVIEW';  
OBJECT_NAME OBJECT_TYPE       OWNER
----------- ----------------- ----------
MY_MVIEW    MATERIALIZED VIEW DI_TEST_AL
MY_MVIEW    TABLE             DIDEV11

SQL> DROP MATERIALIZED VIEW MY_MVIEW;
Materialized view dropped.

SQL> select object_name, object_type, owner from all_objects where object_name = 'MY_MVIEW';
OBJECT_NAME OBJECT_TYPE       OWNER
----------- ----------------- ----------
MY_MVIEW    MATERIALIZED VIEW DI_TEST_AL
MY_MVIEW    TABLE             DIDEV11

SQL> 

我仔細檢查了我的權限並DROP ALL MATERIALIZED VIEWS授予DI_TEST_AL使用者。

以 sysdba 身份連接並檢查 dba_summaries 中是否有任何用於 MV 的條目。如果有執行,

drop summary <OWNER>.<MV_NAME>;`

當我嘗試刪除物化視圖時,我遇到了類似的問題,它說視圖不存在。如果我嘗試創建它,它會說名稱已經存在。這是 Oracle 中的一個錯誤。

在刪除視圖之前,查詢 all_objects 表。

SQL : SELECT * FROM ALL_OBJECTS WHERE OBJECT_NAME =‘MY_MVIEW’; 它應該返回 2 條記錄,ojbect_type = TABLE 和 Object_type = MATERIALIZED VIEW。

但是,如果它只顯示一個帶有 Object_type = Table 的記錄,那麼從數據庫中刪除該表

刪除表 MY_MVIEW;

並嘗試重新創建物化視圖。它應該工作。

引用自:https://dba.stackexchange.com/questions/4235