IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Administration Oracle Discussion :

Fonctionnement et utilisation des vues matérialisées


Sujet :

Administration Oracle

  1. #1
    Futur Membre du Club
    Inscrit en
    Octobre 2004
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 12
    Points : 7
    Points
    7
    Par défaut Fonctionnement et utilisation des vues matérialisées
    Bonjour,

    Je souhaiterais savoir comment "fonctionnent" réellement les vues matérialiées. Quels sont leurs avantages et inconvénients ? Qu'est-ce qui les différencie des vues "simples" pour la base de données et pour son administration ?
    Comment sont-elles "alimentées" et comment doit-on procéder pour le faire puis pour les mettre à jour quotidiennement ? (à partir de scripts PL/SQL...)

    Je sais simplement que le "résultat" de ces vues sont des tables mais faut-il à chaque fois "reparcourir" entièrement les tables "sources" pour les mettre à jour, en détruisant puis en reconstruisant entièrement les vues matérialisées ?

    Dans mon cas, ces vues auraient simplement quelques (peu de) nouvelles données (lignes) tous les jours (pour alimenter un DWH "B.O.") mais contiennent beaucoup de colonnes (champs) et seraient alimentées à partir de plusieurs tables "sources".

    En conclusion, j'ai beaucoup de questions mais tous vos conseils, informations et liens sont les bienvenus !!!

    Merci par avance.

  2. #2
    Futur Membre du Club
    Inscrit en
    Octobre 2004
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 12
    Points : 7
    Points
    7
    Par défaut
    J'ai peut-etre oublié de préciser que la version d'Oracle utilisée est la 9.2

  3. #3
    Rédacteur

    Inscrit en
    Septembre 2004
    Messages
    626
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 626
    Points : 848
    Points
    848
    Par défaut
    Bonjour,


    Les vues matérialisées sont comme des vues dont le résultat est stockée dans une table. En particulier, tu peux indexer ta MV comme toute table.

    Pour une vue classique, la requête est réexcutée à chaque interrogation tandis que pour une VM lors d'une interrogation on interroge directement la table.

    La syntaxe pour créer une vue matérialisée rafraichit tous les jours à 01:00 est de la forme suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    CREATE SNAPSHOT ...
    REFRESH COMPLETE 
    START WITH sysdate 
    NEXT trunc(sysdate+1) + 1/24  
    AS 
    select ...
    Pour un rafraichissement périodique tu dois positionner le paramètre job_queue_processes à 1 au moins.


    Il y a plein d'options possible avec les VM (synonymes de snapshots) :
    - rafraichissement à intervalles régulier (comme ici)
    - rafraichissement à la demande
    - rafraichissement lorsque les données des tables sous-jacente sont modifiées (refresh on commit)
    ...

    Tu peux vérifier que tes VM sont correctement rafraichies en regardant la table DBA_SNAPSHOT_REFRESH_TIMES.

    Tu peux interroger directement la VM, tu as alors les données telles qu'elles étaient lors du dernier rafraichissement.

    Tu peux aussi laisser Oracle tirer profit de tes VM pour les utiliser lors de requêtes pouvant prendre des données de ta VM.
    Cf. par exemple http://asktom.oracle.com/pls/ask/f?p...D:349809082244


    Laly.
    In the heart of the truly greats, perfection is never achieved but endlessly pursued.

    Mon article sur les fonctions analytiques d'Oracle (calcul de moyennes mobiles, de quartiles et bien d'autres...)

  4. #4
    CD
    CD est déconnecté
    Membre habitué
    Inscrit en
    Septembre 2004
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 127
    Points : 151
    Points
    151
    Par défaut
    Une vue matérialisée permet de stocker à l'avance des résultats de requêtes. C'est utile notamment dans les alimentations de DWH pour avoir justement des préaggrégations accessibles rapidement.

    A la différence des vues, elles ne sont pas recalculées à chaque appel. Une vue est juste un "raccourci" pour une requête définie. A chaque fois que l'on fait appel à la vue, on exécute la requête sous-jacente.

    Voici un petit tutoriel sur les MV :

    http://www.tafora.fr/8i/materialview.html

  5. #5
    Futur Membre du Club
    Inscrit en
    Octobre 2004
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 12
    Points : 7
    Points
    7
    Par défaut
    Dans l'exemple donné :

    CREATE SNAPSHOT ...
    REFRESH COMPLETE
    START WITH sysdate
    NEXT trunc(sysdate+1) + 1/24
    AS
    select ...

    Est-ce que le "REFRESH COMPLETE" ne va pas détruire puis reconstruire entièrement la table qui résulte de la vue matérialisée (du "select...") ? car en fait, peu de données doivent être ajoutées chaque jour et je voudrais simplement que les "nouvelles" données ou les données modifiées soient insérées dans ma vue matérialisée, et non pas repartir de 0 à chaque fois (quotidiennement)

    Merci de l'aide.

  6. #6
    Rédacteur

    Inscrit en
    Septembre 2004
    Messages
    626
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 626
    Points : 848
    Points
    848
    Par défaut
    Dans ce cas utilises l'option refresh fast. Tu devras ensuite peu être créer des materialized view logs sur tes tables pour capturer les changements intervenus.


    Laly.
    In the heart of the truly greats, perfection is never achieved but endlessly pursued.

    Mon article sur les fonctions analytiques d'Oracle (calcul de moyennes mobiles, de quartiles et bien d'autres...)

  7. #7
    Futur Membre du Club
    Inscrit en
    Octobre 2004
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 12
    Points : 7
    Points
    7
    Par défaut
    J'ai lu qu'il existait des vues matérialisées "simples" et "complexes", mais que seules les vues simples permettaient d'employer des journaux de vues matérialisées avec la clause "refresh fast" : or dans mon cas, je pense être obligé de faire des vues matérialisées "complexes" (je ne veux que certains champs provenant de plusieurs tables, etc.).

    Comment faire dans ces conditions pour mettre à jour la vue matérialisée ?

    En fait, je ne suis pas trop sûr de la définition de la vue matérialisée "complexe", c'est-à-dire que je ne sais pas trop ce qui entre en jeu pour dire qu'une vue est complexe...

    Merci.

  8. #8
    Rédacteur

    Inscrit en
    Septembre 2004
    Messages
    626
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 626
    Points : 848
    Points
    848
    Par défaut
    Oui c'est vrai tu trouveras tous les détails sur les vues matérialisées complexes ici : http://download-west.oracle.com/docs...view.htm#25391

    Par contre tu peux essayer de ruser en faisant un MV fast refresh pour chacune des tables de bases et construire des MV de MV qui soient fast refreshable.


    Laly.
    In the heart of the truly greats, perfection is never achieved but endlessly pursued.

    Mon article sur les fonctions analytiques d'Oracle (calcul de moyennes mobiles, de quartiles et bien d'autres...)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Utilisation des Vues Matérialisées
    Par bar_79 dans le forum PL/SQL
    Réponses: 1
    Dernier message: 13/08/2010, 13h33
  2. Utilisation des vues matérialisées Oracle
    Par yphilogene dans le forum Autres outils décisionnels
    Réponses: 6
    Dernier message: 14/12/2007, 00h48
  3. Fonctionnement des vues matérialisées
    Par big1 dans le forum SQL
    Réponses: 3
    Dernier message: 13/12/2007, 17h57
  4. Utilisation des vues
    Par Andry dans le forum Débuter
    Réponses: 2
    Dernier message: 19/07/2004, 08h00
  5. [Crystal Report] Utilisation des vues de sql serveur
    Par Olivierakadev dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 15/11/2002, 17h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo