Eu criei uma visão materializada com o DI_TEST_AL
usuário, vamos nomear MY_MVIEW
. Ele aparece na USER_OBJECTS
tabela como MATERIALIZED VIEW
, eu tento descartá-lo, recebo uma mensagem de sucesso, mas o objeto ainda está lá. De fato, se eu tentar recriá-lo, recebo um erro como "o objeto já existe".
Vejo que há uma tabela com o mesmo nome pertencente a outro esquema. Suponho que isso não deve causar o problema, mas tive vontade de mencioná-lo.
Aqui está a saída do 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>
Eu verifiquei minha permissão e DROP ALL MATERIALIZED VIEWS
é concedida ao DI_TEST_AL
usuário.
oracle-11g-r2
materialized-view
basilikode
fonte
fonte
DO_OPP_SEARCH_MVIEW
?STATUS
na seleção emALL_OBJECTS
. Eu também tenho esse problema e, para mim, o status na exibição materializada éINVALID
.Respostas:
Conecte-se como sysdba e verifique se há alguma entrada em dba_summaries para o MV. Se houver corrida,
fonte
dba_summaries
. O problema é quando tento executarDROP SUMMARY MY_OWNER.MY_MATERIALIZED_VIEW;
, recebo o erro ORA-00950 ... opção DROP inválida .Eu enfrentei um problema semelhante quando tentei descartar a exibição materializada, que diz que a exibição não existe. Se eu tentar criá-lo, ele diz que o nome já existe. Este é um erro no Oracle.
Antes de soltar a exibição, consulte a tabela all_objects.
SQL: SELECT * FROM ALL_OBJECTS WHERE OBJECT_NAME = 'MY_MVIEW'; Ele deve retornar 2 registros, ojbect_type = TABLE e Object_type = MATERIALIZED VIEW.
Mas se estiver mostrando apenas um registro com Object_type = Table, elimine essa tabela do banco de dados
Solte a tabela MY_MVIEW;
E tente recriar a exibição materializada. Deveria funcionar.
fonte