Por que no Oracle 11gR2 não consigo descartar a visualização materializada com o mesmo usuário que a criou?

11

Eu criei uma visão materializada com o DI_TEST_ALusuário, vamos nomear MY_MVIEW. Ele aparece na USER_OBJECTStabela 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_ALusuário.

basilikode
fonte
o que é DO_OPP_SEARCH_MVIEW?
Jack diz que tente topanswers.xyz
Se você deseja descartar a visualização materializada MY_MVIEW, solte-a da seguinte forma: DROP MATERIALIZED VIEW MY_MVIEW. ATM, você está caindo outra coisa, e que poderia ser crítico ...
Kerri Shotts
1
Estou tentando largar MY_MVIEW, mudei o nome no exemplo por brevidade, mas esqueci um pouco ... Alguma idéia de como depurar isso? Por que a oracle diz que caiu, mas não é? Cheers
basilikode
Você tem um contrato de suporte? existem alguns bugs de 10g que causam o que você está vendo, talvez eles ainda estejam por aí. Eu tentei replicar contra 11gR2, mas não consegui. Talvez forneça um script completo da tabela inicial e MV que outros possam tentar replicar.
Matthew Watson
Tente incluir STATUSna seleção em ALL_OBJECTS. Eu também tenho esse problema e, para mim, o status na exibição materializada é INVALID.
temor

Respostas:

10

Conecte-se como sysdba e verifique se há alguma entrada em dba_summaries para o MV. Se houver corrida,

drop summary <OWNER>.<MV_NAME>;`
Matthew Watson
fonte
Graças acasalar, que estava impedindo a visão materializada seja removido completamente ...
basilikode
Eu tenho esse problema exato e o MV foi listado em dba_summaries. O problema é quando tento executar DROP SUMMARY MY_OWNER.MY_MATERIALIZED_VIEW;, recebo o erro ORA-00950 ... opção DROP inválida .
temor
@ tentamos conectar seu banco de dados como / sysdba. Então você pode usar o comando DROP SUMMARY.
Atilla Ozgur
0

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.

shyla
fonte