2017-01-06 4 views
1

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

+1

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

Répondre

0

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 
) 
+0

Ok actualise forcer la valeur par défaut pour que l'actualisation utilise les journaux de vue matérialisés. –

+0

Devrais-je également créer des journaux d'affichage matérialisés pour la force d'actualisation? –

+0

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? –