web-dev-qa-db-fra.com

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

J'ai créé une vue matérialisée avec le DI_TEST_AL utilisateur, nommez-le MY_MVIEW. Il apparaît dans le USER_OBJECTS table comme MATERIALIZED VIEW, J'essaie de le laisser tomber, je reçois un message de réussite, mais l'objet est toujours là. En fait, si j'essaie de le reconstituer, je reçois une erreur comme "l'objet existe déjà".

Je vois qu'il y a une table avec le même nom appartenant à un autre schéma. Je suppose que cela ne devrait pas causer le problème, mais j'ai eu 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 vérifié ma permission et DROP ALL MATERIALIZED VIEWS est accordé au DI_TEST_AL utilisateur.

11
basilikode

J'ai confronté un problème similaire lorsque j'ai essayé de laisser tomber la vue matérialisée, il est indiqué que la vue n'existe pas. Si j'essaie de le créer, il est indiqué que le nom existe déjà. Ceci est un bogue dans Oracle.

Avant de laisser tomber la vue, interrogez sur All_Objects Table.

SQL: Sélectionnez * à partir d'All_Objects où Object_Name = 'my_mview'; Il devrait renvoyer 2 enregistrements, ojbect_type = table et objet_type = vue matérialisée.

Mais si sa affichage d'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. Cela devrait fonctionner.

0
shyla