Почему в Oracle 11gR2 я не могу отбросить материализованное представление тем же пользователем, который его создал?


11

Я создал материализованное представление с 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пользователю.


что такое DO_OPP_SEARCH_MVIEW?
говорит Джек, попробуйте topanswers.xyz

Если вы хотите удалить материализованное представление MY_MVIEW, сделайте так: DROP MATERIALIZED VIEW MY_MVIEW. Банкомат, вы бросаете что-то еще, и это может быть критично ...
Керри Шоттс

1
Я пытаюсь отбросить MY_MVIEW, я изменил имя в примере для краткости, но я забыл этот бит ... Есть идеи, как это отладить? Почему оракул говорит, что он упал, но это не так? Приветствия
basilikode

У вас есть контракт на поддержку? Есть около 10 г ошибок, которые вызывают то, что вы видите, возможно, они все еще вокруг. Я пытался копировать против 11gR2, но не смог. Возможно, предоставьте полный сценарий из исходной таблицы и MV, который другие могут попытаться воспроизвести.
Мэтью Уотсон

Попробуйте включить STATUSв отборное на ALL_OBJECTS. У меня тоже есть эта проблема, и для меня статус на материализованном представлении есть INVALID.
благоговение

Ответы:


10

Подключитесь как sysdba и проверьте, есть ли какие-либо записи в dba_summaries для MV. Если есть бег,

drop summary <OWNER>.<MV_NAME>;`

Спасибо, приятель, это препятствовало тому, чтобы материализованное представление было полностью удалено ...
basilikode

У меня есть именно эта проблема, и MV был указан в dba_summaries. Проблема в том, что когда я пытаюсь запустить DROP SUMMARY MY_OWNER.MY_MATERIALIZED_VIEW;, я получаю ошибку ORA-00950 ... неверная опция DROP .
благоговение

@ мы пытаемся подключить вашу базу данных как / sysdba. Затем вы можете использовать команду DROP SUMMARY.
Атилла Озгур

0

Я столкнулся с подобной проблемой, когда пытался отбросить материализованное представление, которое говорит, что представление не существует. Если я пытаюсь создать его, он говорит, что Имя уже существует. Это ошибка в 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;

И попытайтесь воссоздать материализованное представление. Он должен работать.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.