Ich habe mit dem DI_TEST_AL
Benutzer eine materialisierte Ansicht erstellt , nennen wir sie MY_MVIEW
. Es erscheint in der USER_OBJECTS
Tabelle als MATERIALIZED VIEW
, ich versuche es zu löschen, ich bekomme eine Erfolgsmeldung, aber das Objekt ist noch da. In der Tat, wenn ich versuche, es neu zu erstellen, erhalte ich eine Fehlermeldung wie "Objekt existiert bereits".
Ich sehe, dass es eine Tabelle mit demselben Namen gibt, die zu einem anderen Schema gehört. Ich gehe davon aus, dass dies das Problem nicht verursachen sollte, aber ich wollte es erwähnen.
Hier ist die SQL * Plus-Ausgabe:
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>
Ich habe meine Erlaubnis überprüft und werde DROP ALL MATERIALIZED VIEWS
dem DI_TEST_AL
Benutzer gewährt .
oracle-11g-r2
materialized-view
Basilikode
quelle
quelle
DO_OPP_SEARCH_MVIEW
?STATUS
in die Auswahl auf aufzunehmenALL_OBJECTS
. Ich habe auch dieses Problem, und für mich ist der Status in der materialisierten AnsichtINVALID
.Antworten:
Stellen Sie eine Verbindung als sysdba her und überprüfen Sie, ob in dba_summaries Entires für das MV vorhanden sind. Wenn es ausgeführt wird,
quelle
dba_summaries
. Das Problem ist, wenn ich versuche auszuführenDROP SUMMARY MY_OWNER.MY_MATERIALIZED_VIEW;
, erhalte ich die Fehlermeldung ORA-00950 ... ungültige DROP-Option .Ich hatte ein ähnliches Problem, als ich versuchte, die materialisierte Ansicht zu löschen, die besagt, dass die Ansicht nicht existiert. Wenn ich versuche, es zu erstellen, heißt es, dass der Name bereits existiert. Dies ist ein Fehler in Oracle.
Fragen Sie vor dem Löschen der Ansicht die Tabelle all_objects ab.
SQL: SELECT * FROM ALL_OBJECTS WHERE OBJECT_NAME = 'MY_MVIEW'; Es sollte 2 Datensätze zurückgeben, ojbect_type = TABLE und Object_type = MATERIALIZED VIEW.
Wenn jedoch nur ein Datensatz mit Object_type = Table angezeigt wird, löschen Sie diese Tabelle aus der Datenbank
Drop table MY_MVIEW;
Und versuchen Sie, die materialisierte Ansicht neu zu erstellen. Es sollte funktionieren.
quelle