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 21/12/2011, 17h02   #1
Invité de passage
 
Inscription : septembre 2002
Messages : 1
Détails du profil
Informations forums :
Inscription : septembre 2002
Messages : 1
Points : 0
Points : 0
Par défaut Vues matéralisées sur différents schémas

Bonjour,

Version d'Oracle : 10.2.0.4.0 ou 11.2.0.1.0

J'ai 3 schémas : DVLP0000, DVLP0001 et DVLP0002
J'ai une table T dans DVLP0001 et DVLP0002.

Question 1 : comment créer une vue matérialisée appartenant à DVLP0000 et attaquant les tables T (de DVLP0001 et DVLP0002 donc).
Ce que j'ai fait :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
CREATE materialized VIEW log ON DVLP0001.T
CREATE materialized VIEW log ON DVLP0002.T
 
GRANT SELECT ON DVLP0001.T TO DVLP0000
GRANT SELECT ON DVLP0002.T TO DVLP0000
GRANT SELECT ON DVLP0001.MLOG$_T TO DVL0000
GRANT SELECT ON DVLP0002.MLOG$_T TO DVL0000
 
CREATE materialized VIEW DVLP0000.MV_T refresh fast ON commit
AS SELECT * FROM DVLP0001.T
union 
SELECT * FROM DVLP0002.T
=> j'obtiens l'erreur ORA-12054 : impossible de définir l'attribut de régénération ON COMMIT pour la vue matérialisée

=> pourquoi ? Une idée ?


Question 2 : j'ai 2 vues matérialisées de type "on resfresh fast on commit"
=> ok, elles fonctionnent bien.
Maintenant dans un autre schéma, je veux une vue matérialisée qui se mette à jour lors de la mise à jour de l'une de ces 2 vues.
=> mon pb : impossible de mettre "on refresh fast on commit" sur cette 3ième vue matérialisée (qui fait un union genre select * from DVLP0001.MV1 union select * from DVLP0002.MV1)
=> Comment faire ?


Merci d'avance.
laurentboutet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/12/2011, 22h06   #2
Membre éprouvé
 
Avatar de totoche
 
Inscription : janvier 2004
Messages : 1 071
Détails du profil
Informations forums :
Inscription : janvier 2004
Messages : 1 071
Points : 478
Points : 478
Bonsoir,
La clause ON COMMIT par définition ne nécessite pas de commande REFRESH c’est la mise à jour COMMITée de la table maître qui déclenche automatiquement le REFERESH.

Si tu tiens à utiliser un REFRESH Fast il faut tracer les mises a jour faites sur la table maitre dans des fichiers LOG

Par exemple
Code :
1
2
3
4
5
6
7
 
CREATE  materialized VIEW log ON DVLP0001.T;
 
CREATE materialized VIEW DVLP0000.MV_T refresh fast ON demand
AS SELECT * FROM DVLP0001.T
union 
SELECT * FROM DVLP0002.T
__________________
La patience est un arbre aux racines amères, mais aux fruits ci-doux.
totoche 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 05h43.


 
 
 
 
Partenaires

Hébergement Web