Précédent   Forum des professionnels en informatique > Bases de données > Oracle > SQL
SQL Forum d'entraide sur le SQL pour Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 19/03/2011, 12h52   #1
Nouveau Membre du Club
 
MOREL
Étudiant
Inscription : mai 2008
Messages : 77
Détails du profil
Informations personnelles :
Nom : MOREL
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2008
Messages : 77
Points : 29
Points : 29
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 :
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.
byakuichi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/03/2011, 09h35   #2
Membre à l'essai
 
Inscription : septembre 2010
Messages : 19
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 19
Points : 23
Points : 23
BONJOUR,

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

Code :
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 :
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-?
amir. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/03/2011, 12h35   #3
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 684
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 684
Points : 10 445
Points : 10 445
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Je ne pense pas qu'on puisse suivre un COMMIT sur une base distante.

Ah, Tom Kyte le confirme :
Citation:
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.
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/03/2011, 13h28   #4
Nouveau Membre du Club
 
MOREL
Étudiant
Inscription : mai 2008
Messages : 77
Détails du profil
Informations personnelles :
Nom : MOREL
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2008
Messages : 77
Points : 29
Points : 29
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
byakuichi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/03/2011, 16h10   #5
Membre à l'essai
 
Inscription : septembre 2010
Messages : 19
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 19
Points : 23
Points : 23
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.
amir. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/03/2011, 16h37   #6
Nouveau Membre du Club
 
MOREL
Étudiant
Inscription : mai 2008
Messages : 77
Détails du profil
Informations personnelles :
Nom : MOREL
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2008
Messages : 77
Points : 29
Points : 29
Je viens de tester et même avec un trigger ca ne semble pas être possible :/
M'y serais-je mal pris ?
byakuichi est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h43.


 
 
 
 
Partenaires

Hébergement Web