Я создал материализованное представление с DI_TEST_AL
пользователем, назовем его MY_MVIEW
. Он отображается в USER_OBJECTS
таблице как MATERIALIZED VIEW
, я пытаюсь отбросить его, я получаю сообщение об успехе, но объект все еще там. Фактически, если я пытаюсь воссоздать его, я получаю сообщение об ошибке типа «объект уже существует».
Я вижу, что есть таблица с таким же именем, принадлежащая другой схеме. Я предполагаю, что это не должно вызывать проблемы, но я хотел упомянуть об этом.
Вот вывод 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>
Я дважды проверил свое разрешение и DROP ALL MATERIALIZED VIEWS
предоставлен DI_TEST_AL
пользователю.
oracle-11g-r2
materialized-view
basilikode
источник
источник
DO_OPP_SEARCH_MVIEW
?STATUS
в отборное наALL_OBJECTS
. У меня тоже есть эта проблема, и для меня статус на материализованном представлении естьINVALID
.Ответы:
Подключитесь как sysdba и проверьте, есть ли какие-либо записи в dba_summaries для MV. Если есть бег,
источник
dba_summaries
. Проблема в том, что когда я пытаюсь запуститьDROP SUMMARY MY_OWNER.MY_MATERIALIZED_VIEW;
, я получаю ошибку ORA-00950 ... неверная опция DROP .Я столкнулся с подобной проблемой, когда пытался отбросить материализованное представление, которое говорит, что представление не существует. Если я пытаюсь создать его, он говорит, что Имя уже существует. Это ошибка в Oracle.
Прежде чем отбросить представление, сделайте запрос к таблице all_objects.
SQL: SELECT * FROM ALL_OBJECTS WHERE OBJECT_NAME = 'MY_MVIEW'; Он должен вернуть 2 записи: ojbect_type = TABLE и Object_type = MATERIALIZED VIEW.
Но если он показывает только одну запись с Object_type = Table, тогда удалите эту таблицу из базы данных.
Удалить таблицу MY_MVIEW;
И попытайтесь воссоздать материализованное представление. Он должен работать.
источник