Perché in Oracle 11gR2 non riesco a eliminare la vista materializzata con lo stesso utente che l'ha creata?


11

Ho creato una vista materializzata con l' DI_TEST_ALutente, chiamiamola MY_MVIEW. Appare nella USER_OBJECTStabella come MATERIALIZED VIEW, provo a rilasciarlo, ricevo un messaggio di successo, ma l'oggetto è ancora lì. In effetti se provo a ricrearlo ottengo un errore del tipo "oggetto già esistente".

Vedo che esiste una tabella con lo stesso nome appartenente a un altro schema. Presumo che non dovrebbe causare il problema, ma ho avuto voglia di menzionarlo.

Ecco l'output di 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> 

Ho ricontrollato la mia autorizzazione e DROP ALL MATERIALIZED VIEWSviene concesso DI_TEST_ALall'utente.


che cos'è DO_OPP_SEARCH_MVIEW?
Jack dice di provare topanswers.xyz l'

Se desideri eliminare la vista materializzata MY_MVIEW, rilasciala in questo modo: DROP MATERIALIZED VIEW MY_MVIEW. Bancomat, stai lasciando cadere qualcos'altro e potrebbe essere fondamentale ...
Kerri Shotts

1
Sto cercando di eliminare MY_MVIEW, ho cambiato il nome nell'esempio per brevità ma ho dimenticato quel bit ... Qualche idea su come eseguire il debug? Perché l'oracolo dice che è caduto ma non lo è? Saluti
basilikode

Hai un contratto di supporto? ci sono alcuni bug da 10 g che causano ciò che stai vedendo, forse sono ancora in giro. Ho provato a replicare contro 11gR2 ma non ci sono riuscito. Forse fornire uno script completo dalla tabella iniziale e MV che altri possono provare a replicare.
Matthew Watson,

Prova a includere STATUSnella selezione attivata ALL_OBJECTS. Ho anche questo problema, e per me lo stato nella vista materializzata è INVALID.
timore re

Risposte:


10

Connettiti come sysdba e controlla se ci sono entires in dba_summaries per MV. Se c'è corsa,

drop summary <OWNER>.<MV_NAME>;`

Grazie amico, ciò impediva di rimuovere completamente la vista materializzata ...
basilikode,

Ho questo esatto problema e la MV è stata elencata in dba_summaries. Il problema è quando provo a correre DROP SUMMARY MY_OWNER.MY_MATERIALIZED_VIEW;, ricevo l'errore ORA-00950 ... opzione DROP non valida .
timore re

@awe prova a connettere il tuo database come / sysdba. Quindi è possibile utilizzare il comando DROP SUMMARY.
Atilla Ozgur,

0

Ho riscontrato un problema simile quando ho provato a eliminare la visualizzazione materializzata che dice che View non esiste. Se provo a crearlo, dice che Nome esiste già. Questo è un bug in Oracle.

Prima di abbandonare la vista, eseguire una query sulla tabella all_objects.

SQL: SELEZIONA * DA ALL_OBJECTS DOVE OBJECT_NAME = 'MY_MVIEW'; Dovrebbe restituire 2 record, ojbect_type = TABLE e Object_type = MATERIALIZED VIEW.

Ma se mostra solo un record con Object_type = Table, elimina quella tabella dal database

Elimina tabella MY_MVIEW;

E prova a ricreare la vista materializzata. Dovrebbe funzionare.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.