Warum kann ich in Oracle 11gR2 die materialisierte Ansicht nicht mit demselben Benutzer löschen, der sie erstellt hat?

11

Ich habe mit dem DI_TEST_ALBenutzer eine materialisierte Ansicht erstellt , nennen wir sie MY_MVIEW. Es erscheint in der USER_OBJECTSTabelle 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 VIEWSdem DI_TEST_ALBenutzer gewährt .

Basilikode
quelle
was ist DO_OPP_SEARCH_MVIEW?
Jack sagt, versuchen Sie es mit topanswers.xyz
Wenn Sie die materialisierte Ansicht MY_MVIEW löschen möchten, löschen Sie sie wie folgt: DROP MATERIALIZED VIEW MY_MVIEW. ATM, Sie lassen etwas anderes fallen, und es könnte kritisch sein ...
Kerri Shotts
1
Ich versuche MY_MVIEW zu löschen. Ich habe den Namen im Beispiel der Kürze halber geändert, aber ich habe dieses Bit vergessen ... Irgendeine Idee, wie man das debuggt? Warum sagt Orakel, dass es fallen gelassen wurde, aber nicht? Prost
Basilikode
Haben Sie einen Supportvertrag? Es gibt einige 10g-Fehler, die verursachen, was Sie sehen, vielleicht sind sie immer noch in der Nähe. Ich habe versucht, gegen 11gR2 zu replizieren, konnte dies aber nicht. Stellen Sie möglicherweise ein vollständiges Skript aus der Anfangstabelle und dem MV bereit, das andere zu replizieren versuchen können.
Matthew Watson
Versuchen Sie, STATUSin die Auswahl auf aufzunehmen ALL_OBJECTS. Ich habe auch dieses Problem, und für mich ist der Status in der materialisierten Ansicht INVALID.
Ehrfurcht

Antworten:

10

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,

drop summary <OWNER>.<MV_NAME>;`
Matthew Watson
quelle
Danke Kumpel, das hat verhindert, dass die materialisierte Ansicht vollständig entfernt wurde ...
Basilikode
Ich habe genau dieses Problem und das MV wurde in aufgeführt dba_summaries. Das Problem ist, wenn ich versuche auszuführen DROP SUMMARY MY_OWNER.MY_MATERIALIZED_VIEW;, erhalte ich die Fehlermeldung ORA-00950 ... ungültige DROP-Option .
Ehrfurcht
@awe versuchen, Ihre Datenbank als / sysdba zu verbinden. Dann können Sie den Befehl DROP SUMMARY verwenden.
Atilla Ozgur
0

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.

Shyla
quelle