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.



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>;`

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ć.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.