J'ai une requête complexe qui ne satisfait pas aux conditions de création d'une vue matérialisée avec 'REFRESH FAST ON COMMIT' ou 'REFRESH FAST'. J'ai créé la vue matérialisée avec 'BUILD IMMEDIATE'. J'ai créé des journaux de vue matérialisés sur toutes les tables utilisées dans la requête. Ma question est que lorsque j'actualiserai la vue matérialisée, elle utilisera les journaux de vue matérialisés pour actualiser de façon incrémentielle la table sans que la vue matérialisée ait les options de création 'REFRESH FAST ON COMMIT' ou 'REFRESH FAST'. Va-t-il refaire la requête et construire tous les enregistrements à partir de zéro à l'actualisation.Vues matérialisées et journal de table maître correspondant pour l'actualisation incrémentielle dans Oracle 11x
Répondre
Je ne comprends pas bien votre question, mais voici quelques réponses:
Vous pouvez définir REFRESH FAST
, REFRESH COMPLETE
et REFRESH FORCE
. REFRESH FORCE
signifie qu'Oracle essaie d'effectuer une actualisation RAPIDE et si cela n'est pas possible, effectuez un rafraîchissement COMPLET. REFRESH FORCE
est la valeur par défaut si vous omettez la clause. COMPLETE refresh ne touche aucun journal VIEW MATERIALIZED, ils restent jusqu'à ce que toutes les VAST FAST MATERIALIZED VIEW aient été rafraîchies, c'est-à-dire que l'actualisation complète refait la requête et crée tous les enregistrements à partir de zéro.
Apparemment, vous essayez de créer une VUE MATERIELLE RAPIDE, mais vous n'avez pas réussi.
Essayez la procédure DBMS_MVIEW.EXPLAIN_MVIEW afin de vérifier pourquoi l'actualisation FAST n'est pas possible. Cette procédure nécessite le tableau MV_CAPABILITIES_TABLE
:
CREATE TABLE MV_CAPABILITIES_TABLE
(
STATEMENT_ID VARCHAR2(30 BYTE),
MVOWNER VARCHAR2(30 BYTE),
MVNAME VARCHAR2(30 BYTE),
CAPABILITY_NAME VARCHAR2(30 BYTE),
POSSIBLE CHAR(1 BYTE),
RELATED_TEXT VARCHAR2(2000 BYTE),
RELATED_NUM NUMBER,
MSGNO INTEGER,
MSGTXT VARCHAR2(2000 BYTE),
SEQ NUMBER
)
Ok actualise forcer la valeur par défaut pour que l'actualisation utilise les journaux de vue matérialisés. –
Devrais-je également créer des journaux d'affichage matérialisés pour la force d'actualisation? –
VUE MATÉRIALISÉE Les journaux sur la table de base sont (un) prérequis pour un rafraîchissement rapide. Quel est votre problème, resp. qu'est-ce que vous essayez d'accomplir? –
Je pense que je comprends votre confusion - essayons. Puisque votre MV ne répond pas aux exigences de 'refresh fast', il n'aura pas besoin des logs MV. C'est un fait. Maintenant, puisque c'est un fait, avez-vous encore besoin des journaux MV? La réponse est, les journaux ne sont pas là seulement pour une vue matérialisée. Vous pouvez avoir différents MV qui utilisent la même table de base (ou tables). Certains de ces MV peuvent être rapidement recyclables, d'autres non. Le journal de MV sur une table de base est juste un journal - il sera utilisé par tous les MV sont actualisables rapidement et utiliser cette table, même si d'autres MV sur la table ne sont pas rapides à rafraîchir. – mathguy