J'ai créé une vue matérialisée avec l' DI_TEST_AL
utilisateur, nommons-la MY_MVIEW
. Il apparaît dans le USER_OBJECTS
tableau 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 VIEWS
est accordée à l' DI_TEST_AL
utilisateur.
oracle-11g-r2
materialized-view
basilikode
la source
la source
DO_OPP_SEARCH_MVIEW
?STATUS
dans la sélectionALL_OBJECTS
. J'ai également ce problème, et pour moi, le statut de la vue matérialisée estINVALID
.Réponses:
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,
la source
dba_summaries
. Le problème est que lorsque j'essaie d'exécuterDROP SUMMARY MY_OWNER.MY_MATERIALIZED_VIEW;
, j'obtiens l'erreur ORA-00950 ... option DROP invalide .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.
la source