tout de meme disposer d'une vue materialisée rafraichie dés qu'une table sous jacente est COMMITée
-----------------------------------------------------------------------------
bonsoir,
J'essaye de créer des vues materialisées qui doivent dans mon cas etre rafraichies dés que/si une table sous jacente est modifiée
J'y parviens pour des vues materialisées créées à partir de selections simples (avec une clef primaire, sans jointure et un filtre simple)
et avec l'option REFRESH ON COMMIT
Mais lorsque je veux créer des vues materialisées à partir de selections plus complexes, par exemple avec des jointures ou sans clef primaire dans le résultat de la sélection, j'obtiens l'erreur
Citation:
ORA-12054: impossible de définir l'attribut de régénération ON COMMIT pour la vue matérialisée
dans les docs, je lis qu'il y a des restrictions et des propositions avec des LOG utiles pour un rafraichissement FAST, mais cela ne concerne pas mon cas de figure
Auriez vous des précisions ?
Voici un exemple en echec pour moi
1 2 3 4 5 6 7 8 9
| CREATE MATERIALIZED VIEW schema.mv_tab
TABLESPACE schema_dta
REFRESH ON COMMIT
AS
SELECT p.lib_1 , f.lib_2
FROM tab1 p , tab2 f
WHERE p.id_1 = f.id_2(+)
AND p.txt_1 = 'texte'
ORDER BY p.lib_1 ASC , f.lib_2 ASC; |
J'arrive à créer cette vue materialisée avec REFRESH COMPLETE mais alors une modification de la table sous jacente tab1 ou tab2 et un COMMIT ne provoquent pas le rafraichissement de mv_tab
La création de LOG n'est pas possible pour mes tables si elles sont organisées en index
Le commande suivante
CREATE MATERIALIZED VIEW LOG ON tab1 WITH ROWID ;
provoque l'erreur :
ORA-12041: impossible d'enregistrer les ROWID associés à la table organisée en index tab1
Merci d'avance pour votre regard d'expert
Partager