Pourquoi dans Oracle 11gR2, je ne peux pas supprimer la vue matérialisée avec le même utilisateur qui l'a créée?


11

J'ai créé une vue matérialisée avec l' DI_TEST_ALutilisateur, nommons-la MY_MVIEW. Il apparaît dans le USER_OBJECTStableau car MATERIALIZED VIEW, j'essaie de le supprimer, j'obtiens un message de réussite, mais l'objet est toujours là. En fait, si j'essaye de le recréer, j'obtiens une erreur comme "l'objet existe déjà".

Je vois qu'il y a une table du même nom appartenant à un autre schéma. Je suppose que cela ne devrait pas causer de problème, mais j'avais envie de le mentionner.

Voici la sortie 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> 

J'ai revérifié ma permission et DROP ALL MATERIALIZED VIEWSest accordée à l' DI_TEST_ALutilisateur.


c'est quoi DO_OPP_SEARCH_MVIEW?
Jack dit d'essayer topanswers.xyz

Si vous souhaitez supprimer la vue matérialisée MY_MVIEW, supprimez-la comme suit: DROP MATERIALIZED VIEW MY_MVIEW. ATM, vous laissez tomber quelque chose d'autre, et cela pourrait être critique ...
Kerri Shotts

1
J'essaie de supprimer MY_MVIEW, j'ai changé le nom dans l'exemple par souci de concision mais j'ai oublié ce bit ... Une idée comment déboguer cela? Pourquoi Oracle dit qu'il est tombé mais ce n'est pas le cas? Santé
basilikode

Avez-vous un contrat de support? il y a des bugs de 10g qui causent ce que vous voyez, peut-être qu'ils sont toujours là. J'ai essayé de répliquer contre 11gR2 mais je n'ai pas pu. Peut-être fournir un script complet à partir de la table initiale et du MV que d'autres peuvent essayer de répliquer.
Matthew Watson

Essayez d'inclure STATUSdans la sélection ALL_OBJECTS. J'ai également ce problème, et pour moi, le statut de la vue matérialisée est INVALID.
admiration le

Réponses:


10

Connectez-vous en tant que sysdba et vérifiez s'il y a des entrées dans dba_summaries pour le MV. S'il y a un run,

drop summary <OWNER>.<MV_NAME>;`

Merci mon pote, cela empêchait la vue matérialisée d'être complètement supprimée ...
basilikode

J'ai ce problème exact, et le MV a été répertorié dans dba_summaries. Le problème est que lorsque j'essaie d'exécuter DROP SUMMARY MY_OWNER.MY_MATERIALIZED_VIEW;, j'obtiens l'erreur ORA-00950 ... option DROP invalide .
admiration le

@awe essaie de connecter votre base de données en tant que / sysdba. Ensuite, vous pouvez utiliser la commande DROP SUMMARY.
Atilla Ozgur

0

J'ai rencontré un problème similaire lorsque j'ai essayé de supprimer la vue matérialisée, cela indique que la vue n'existe pas. Si j'essaye de le créer, il indique que le nom existe déjà. Il s'agit d'un bogue dans Oracle.

Avant de supprimer la vue, interrogez la table all_objects.

SQL: SELECT * FROM ALL_OBJECTS WHERE OBJECT_NAME = 'MY_MVIEW'; Il doit renvoyer 2 enregistrements, ojbect_type = TABLE et Object_type = MATERIALIZED VIEW.

Mais s'il affiche un seul enregistrement avec Object_type = Table, supprimez cette table de la base de données

Drop table MY_MVIEW;

Et essayez de recréer la vue matérialisée. Ça devrait marcher.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.