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

SQL Oracle Discussion :

Vue matérialisée et ON COMMIT


Sujet :

SQL Oracle

  1. #1
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 80
    Points : 65
    Points
    65
    Par défaut Vue matérialisée et ON COMMIT
    Bonjour,
    je suis soumis à un problème d'ordre technique et de compréhension.
    Ma vue matérialisée est sensé se mettre à jour selon ce critère :
    Le rafraîchissement de ces copies doit se faire intégralement après chaque modification.

    Le seul problème, c'est que je ne sais pas ce qu'ils appellent modification, est-ce après un COMMIT ?

    Si tel est le cas j'ai tenté de crée une vue matérialisée et qui se refresh sur les commit comme ci-dessous :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CREATE MATERIALIZED VIEW JOUEURMV2  
        REFRESH ON COMMIT AS 
        ( SELECT *
          FROM JOUEUR@orapeda2to1
        );
    Mais cela ne fonctionne pas.

    Si quelqu'un à une idée sur le sens de cette phrase et la façon de rafraîchir ma vue.

    Merci.

  2. #2
    Membre habitué
    Inscrit en
    Septembre 2010
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 82
    Points : 140
    Points
    140
    Par défaut
    BONJOUR,

    Je viens de vite faire un petit test sur Oracle 10g et chez moi ca marche.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    CREATE TABLE joueurs (
     id_joueur, nom
    ) AS (
      SELECT LEVEL, cast(dbms_random.string('x', trunc(dbms_random.value(1, 20))) AS VARCHAR2(20))
        FROM dual
     CONNECT BY LEVEL < 10
    );
    ALTER TABLE JOUEURS ADD CONSTRAINT PK_JOUEURS PRIMARY KEY(ID_JOUEUR);
     
    select * from joueurs;
     
    CREATE MATERIALIZED VIEW JOUEURS_MV 
    REFRESH ON COMMIT AS 
    SELECT * FROM joueurs;
     
    select * from joueurs_mv;
     
    UPDATE JOUEURS SET NOM = ( 
          CASE MOD(ID_JOUEUR, 2) WHEN 0 THEN 'P' ELSE 'I' END
    );
     
    SELECT * FROM JOUEURS;
    SELECT * FROM JOUEURS_MV;
     
    commit;
     
    SELECT * FROM JOUEURS_MV;
    S'exécute correctement et renvoit le résultat

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
     
    table JOUEURS created.
    table JOUEURS altered.
    ID_JOUEUR              NOM                  
    ---------------------- -------------------- 
    1                      C98SWN               
    2                      2GC2                 
    3                      WIAMU4B7B5HT3KX056   
    4                      6HOQJ                
    5                      ALEOK82AL4E          
    6                      3BJY                 
    7                      4FU6T2TE8Y1TH        
    8                      SW0IPK9LR            
    9                      8BO9K3UDMBVJ         
     
     9 rows selected 
     
    materialized view JOUEURS_MV created.
    ID_JOUEUR              NOM                  
    ---------------------- -------------------- 
    1                      C98SWN               
    2                      2GC2                 
    3                      WIAMU4B7B5HT3KX056   
    4                      6HOQJ                
    5                      ALEOK82AL4E          
    6                      3BJY                 
    7                      4FU6T2TE8Y1TH        
    8                      SW0IPK9LR            
    9                      8BO9K3UDMBVJ         
     
     9 rows selected 
     
    9 rows updated.
    ID_JOUEUR              NOM                  
    ---------------------- -------------------- 
    1                      I                    
    2                      P                    
    3                      I                    
    4                      P                    
    5                      I                    
    6                      P                    
    7                      I                    
    8                      P                    
    9                      I                    
     
     9 rows selected 
     
    ID_JOUEUR              NOM                  
    ---------------------- -------------------- 
    1                      C98SWN               
    2                      2GC2                 
    3                      WIAMU4B7B5HT3KX056   
    4                      6HOQJ                
    5                      ALEOK82AL4E          
    6                      3BJY                 
    7                      4FU6T2TE8Y1TH        
    8                      SW0IPK9LR            
    9                      8BO9K3UDMBVJ         
     
     9 rows selected 
     
    commited.
    ID_JOUEUR              NOM                  
    ---------------------- -------------------- 
    1                      I                    
    2                      P                    
    3                      I                    
    4                      P                    
    5                      I                    
    6                      P                    
    7                      I                    
    8                      P                    
    9                      I                    
     
     9 rows selected
    Quel est le problème que tu rencontres? Tu as une exception ORA-?

  3. #3
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Je ne pense pas qu'on puisse suivre un COMMIT sur une base distante.

    Ah, Tom Kyte le confirme :
    Hi Tom,
    Can we use "on commit" option for refresh when we are using dblinks? I tired it gave me error.
    Please suggest


    Followup February 2, 2011 - 7am Central time zone:

    no, you cannot. It is supported in a single database only.

    On commit in a distributed database would make it such that the one database is completely dependent on the availability of the other - meaning - you really really meant to have a single database in the first place, there is no point in having two - they need to share data very intimately.

  4. #4
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 80
    Points : 65
    Points
    65
    Par défaut
    D'accord, je vous remercies.
    Dans ce cas le sujet veut peut-être dire que je dois utiliser un TRIGGER pour gérer cela.

    Donc si il y a un update de la base maitre, mes bases secondaires doivent se mettre à jour à ce moment là.

    Sinon je vois pas

  5. #5
    Membre habitué
    Inscrit en
    Septembre 2010
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 82
    Points : 140
    Points
    140
    Par défaut
    Citation Envoyé par byakuichi Voir le message
    D'accord, je vous remercies.
    Dans ce cas le sujet veut peut-être dire que je dois utiliser un TRIGGER pour gérer cela.

    Donc si il y a un update de la base maitre, mes bases secondaires doivent se mettre à jour à ce moment là.

    Sinon je vois pas
    Désolé ma réponse était hors sujet. Mais je n'avais pas remarqué le db link.

  6. #6
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 80
    Points : 65
    Points
    65
    Par défaut
    Je viens de tester et même avec un trigger ca ne semble pas être possible :/
    M'y serais-je mal pris ?

Discussions similaires

  1. Réponses: 10
    Dernier message: 27/04/2006, 16h03
  2. Rafraichissement vue matérialisée
    Par zach dans le forum Langage SQL
    Réponses: 17
    Dernier message: 31/08/2005, 17h49
  3. Réponses: 26
    Dernier message: 27/04/2005, 11h29
  4. Réponses: 2
    Dernier message: 06/12/2004, 14h43
  5. Fonctionnement et utilisation des vues matérialisées
    Par gOgHi dans le forum Administration
    Réponses: 7
    Dernier message: 19/10/2004, 14h29

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