Dlaczego w Oracle 11gR2 nie mogę upuścić zmaterializowanego widoku z tym samym użytkownikiem, który go utworzył?

11

Stworzyłem zmaterializowany widok z DI_TEST_ALużytkownikiem, nazwijmy go MY_MVIEW. Pojawia się w USER_OBJECTStabeli MATERIALIZED VIEW, gdy próbuję go upuścić, otrzymuję komunikat o powodzeniu, ale obiekt wciąż tam jest. W rzeczywistości, gdy próbuję go odtworzyć, pojawia się błąd „obiekt już istnieje”.

Widzę, że istnieje tabela o tej samej nazwie należąca do innego schematu. Zakładam, że nie powinno to powodować problemu, ale chciałem o tym wspomnieć.

Oto wynik 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> 

Dokładnie sprawdziłem swoje uprawnienia i DROP ALL MATERIALIZED VIEWSotrzymałem je od DI_TEST_ALużytkownika.

bazylika
źródło
co jest DO_OPP_SEARCH_MVIEW?
Jack mówi, spróbuj wypróbować topanswers.xyz
Jeśli chcesz upuścić zmaterializowany widok MY_MVIEW, upuść go w następujący sposób: DROP MATERIALIZED VIEW MY_MVIEW. ATM, upuszczasz coś innego, i może to być krytyczne ...
Kerri Shotts
1
Próbuję upuścić MY_MVIEW, zmieniłem nazwę w przykładzie dla zwięzłości, ale zapomniałem o tym trochę ... Masz pomysł, jak to debugować? Dlaczego wyrocznia mówi, że spadła, ale nie jest? Na zdrowie
bazylika
Czy masz umowę wsparcia? istnieje około 10 g błędów, które powodują to, co widzisz, być może są one nadal w pobliżu. Próbowałem replikować przeciwko 11gR2, ale nie mogłem. Być może zapewnij pełny skrypt z tabeli początkowej i pliku MV, który inni mogą spróbować replikować.
Matthew Watson,
Spróbuj dołączyć STATUSdo zaznaczenia na ALL_OBJECTS. Mam również ten problem i dla mnie status zmaterializowanego widoku to INVALID.
awe

Odpowiedzi:

10

Połącz się jako sysdba i sprawdź, czy są jakieś wpisy w dba_summaries dla MV. Jeśli jest uruchomiony,

drop summary <OWNER>.<MV_NAME>;`
Matthew Watson
źródło
Dzięki kolego, to uniemożliwiło całkowite usunięcie zmaterializowanego widoku ...
basilikode
Mam dokładnie ten problem, a MV został wymieniony w dba_summaries. Problem polega na tym, że kiedy próbuję uruchomić DROP SUMMARY MY_OWNER.MY_MATERIALIZED_VIEW;, pojawia się błąd ORA-00950 ... nieprawidłowa opcja DROP .
awe
@awe spróbuj połączyć bazę danych jako / sysdba. Następnie możesz użyć polecenia DROP SUMMARY.
Atilla Ozgur
0

Napotkałem podobny problem, gdy próbowałem upuścić zmaterializowany widok, który mówi, że widok nie istnieje. Jeśli spróbuję go utworzyć, napisane jest, że Nazwa już istnieje. To jest błąd w Oracle.

Przed upuszczeniem widoku zapytaj o tabelę all_objects.

SQL: WYBIERZ * Z ALL_OBJECTS GDZIE OBJECT_NAME = 'MY_MVIEW'; Powinien zwrócić 2 rekordy, ojbect_type = TABLE i Object_type = MATERIALIZED VIEW.

Ale jeśli pokazuje tylko jeden rekord z Object_type = Table, upuść tę tabelę z bazy danych

Upuść tabelę MY_MVIEW;

I spróbuj odtworzyć zmaterializowany widok. To powinno działać.

nieśmiała
źródło