Question

J'ai une vue matérialisée sur un serveur qui est créé par lien DB. Il y a un travail en cours sur cette mview. (Créé avec dbms_refresh.make plus tôt).

Maintenant, j'ai créé 3 nouveaux champs dans le tableau original. Mes requêtes sont.

1) Dois-je laisser tomber et créer mview encore, si oui, dois-je créer mview à nouveau sur le serveur journal principal 2) Qu'est-ce qui se passe au travail en cours d'exécution sur mview, dois-je créer Agin?

Il y a aussi des vues créées sur mview, donc --Si je cours créer ou remplacer requête de vue, il va créer un problème?

S'il vous plaît guider.

Merci!

Était-ce utile?

La solution

Si vous devez inclure les nouvelles colonnes de votre vue matérialisée alors oui, vous devez recréer la vue matérialisée. Vous devez explicitement supprimer la vue car il n'y a pas de déclaration « créer ou remplacer la vue matérialisée ».

DROP MATERIALIZED VIEW blah;
CREATE MATERIALIZED VIEW blah...

Abandonner / recréer la vue matérialisée devrait recréer le travail de rafraîchissement. Pas sûr à 100%, mais vous devez recréer probablement le journal aussi bien.

Et, si vous n'avez pas besoin d'inclure les nouvelles colonnes de votre vue, vous ne avez pas vraiment besoin de faire quoi que ce soit ...

Autres conseils

Après une chute / création de la vue matérialisée, vous devez recompiler les autres vues par la suite, car ils peuvent sont devenus invalides.

Vous pouvez vérifier si cela se produisait avec

select * 
from user_objects
where status = 'INVALID';

recompiler une vue peut être fait avec

alter view the_view compile;

ou

exec dbms_utility.compile_schema(user);

recompile simplement tout dans votre schéma. Assurez-vous d'avoir aucun emploi en cours d'exécution tout en faisant cela!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top