Bonjour,
Version Oracle 10.2.0.3.0
J'ai plusieurs soucis que j'essaye de régler en créant une vue matérialisée.
Lorsque je lance la commande de création de ma vue, cette dernière boucle indéfiniement.
Via Sql Developer, en utilisant l'interface de creation de vue materialisée lorsque je demande de tester la syntaxe, il m'indique relation TGN introuvable. Et si je valide quand même la création, il ne me rend pas la main.
La vue fonctionne très bien en non materialisée.
La structure de ma vue est la suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 WITH TGN AS ( -- Requete recursive avec utilisation de level, sys_connect_by_path et fonction analytique ( ) SELECT champs FROM Table T JOIN TGN TGN1 ON condition JOIN TGN TGN2 ON condition
J'ai essaye de remplacer le bloc WITH par une autre vue.
Ce qui donne :
Avec le même message d'erreur sur VUE_TGN.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 SELECT champs FROM Table T JOIN VUE_TGN TGN1 ON condition JOIN VUE_TGN TGN2 ON condition
Idem si je fais un simple SELECT * from VUE_TGN
Je précise que j'ai crée mes vues avec le même utilisateur que celui souhaitant creer la vue matérialisée.
J'ai donc tenté de continuer en supprimant l'utilisation de la VUE et du WITH en remplaçant les VUE_TGN par la requete associée.
Cette fois il me jette avec un Fonction (null) inconnue ou non prise en charge. Une fois la fonction analytique retirée min(path) keep(dense_rank last order by l) path, cette fois l'analyse de syntaxe est ok.
Mes premières questions donc :
- Il y a t-il des restrictions sur les vues materialisées ? De même ma clause ORDER BY ne lui plait pas (même si cela est moins genant).
- Pourquoi n'accepte-t-il pas l'appel à mes vues dans la vue materialisée ?
Question bonus :
Tout cela sert à un appel via du Pro*C.
J'observe un comportement bizarre qui est que si j'appele mon Pro*C en ciblant une table dans laquelle j'ai insere les données de ma vue (non materialisée du coup), toutes les lignes sont bien remontées (j'ai un SELECT sans clause WHERE dans mon Pro*C)
Par contre si mon SELECT porte sur la vue, il ne me remonte pas toutes les lignes et prend presque 10minutes à traiter ma requete (alors que la vue remonte les données en quelques secondes).
Je ne comprends pas du tout ce comportement et en désespoir de cause j'ai tenté de faire une vue materialisée pour espérer contourner le problème.
Merci d'avance pour vos idées
Partager