Oracle-11g-R2
為什麼在 Oracle 11gR2 中我不能刪除創建它的同一使用者的物化視圖?
我和使用者一起創建了一個物化視圖
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;
並嘗試重新創建物化視圖。它應該工作。