|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre émérite
![]() Inscription : janvier 2004 Messages : 845 ![]() |
bonjour,
est-ce qu'il est possible de créer une (on dit une ou un ?) outline à partir d'un procédure PL/SQL ? Ce pour "figer" les plan d'exécutions de tous les ordres SQL qui se trouvent dans cette procédure ? si quelqu'un a des infos, merci d'avance
__________________
Il est plus facile de voir les signes avant-coureurs après coup que l'inverse ! Yorglaa |
|
|
00
|
|
|
#2 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
c'est quoi un outline ?
|
|
|
00
|
|
|
#3 |
|
Membre émérite
![]() Inscription : janvier 2004 Messages : 845 ![]() |
le stokage d'un plan d'execution pour s'assurer qu'il sera réemployé quel que soit l'évolution des données cibles...
j'ai peut-être pas employé le bon terme (en anglais STORED_OUTLINE) ?
__________________
Il est plus facile de voir les signes avant-coureurs après coup que l'inverse ! Yorglaa |
|
|
00
|
|
|
#4 |
![]() Inscription : septembre 2004 Messages : 626 ![]() |
Le plus simple est de faire :
Code :
ALTER session SET create_stored_outlines = true Code :
ALTER session SET create_stored_outlines = monAppli Ensuite tu fais : Code :
ALTER session SET create_stored_outlines = false Ensuite pour exporter tes outlines en prod par exemple, on exporte les tables du schéma OUTLN en faisant export ... query="where category='monAppli'" et on fait un import en faisant ignore=yes, mais je sais pas si c'est supporté ! Les outlines c'est bien mignon, mais c'est ultrasensible à la requête : il suffit que tu la modifies d'un espace pour que l'outline ne soit plus utilisé. Tu peux créer tes outlines, regarder les hints utilisés dans les tables OL$HINTS (à vérifier) et placer ses hints au bon endroit dans ta requête de départ. Laly.
__________________
In the heart of the truly greats, perfection is never achieved but endlessly pursued. Mon article sur les fonctions analytiques d'Oracle (calcul de moyennes mobiles, de quartiles et bien d'autres...) |
|
|
00
|
|
|
#5 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
+1 en PL/SQL tu package ça dans un execute immediate et le tour est joué
|
|
|
00
|
|
|
#6 |
|
Membre émérite
![]() Inscription : janvier 2004 Messages : 845 ![]() |
en fait j'ai essayé un
Code :
ALTER session SET create_stored_outlines=monNomPerso ; puis Code :
ALTER session SET create_stored_outlines=false; le SQL que je veux "stabiliser" comme ça est un insert-selct d'une vue... donc ma requête ne vas pas bouger d'un poil...
__________________
Il est plus facile de voir les signes avant-coureurs après coup que l'inverse ! Yorglaa |
|
|
00
|
|
|
#7 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
question bête... la procédure n'est pas en autonomous_transaction ? Il y a bien des requêtes ?
|
|
|
00
|
|
|
#8 |
![]() Inscription : septembre 2004 Messages : 626 ![]() |
C'est un pb de droits. Tu peux essayer de faire un grant à ton user du privilège CREATE ANY OUTLINE...
Laly
__________________
In the heart of the truly greats, perfection is never achieved but endlessly pursued. Mon article sur les fonctions analytiques d'Oracle (calcul de moyennes mobiles, de quartiles et bien d'autres...) |
|
|
00
|
|
|
#9 |
|
Membre émérite
![]() Inscription : janvier 2004 Messages : 845 ![]() |
le user en question a le role DBA... mais je vais essayer de granter ces droit directement au user...
__________________
Il est plus facile de voir les signes avant-coureurs après coup que l'inverse ! Yorglaa |
|
|
00
|
|
|
#10 | |
|
Membre émérite
![]() Inscription : janvier 2004 Messages : 845 ![]() |
Citation:
__________________
Il est plus facile de voir les signes avant-coureurs après coup que l'inverse ! Yorglaa |
|
|
|
00
|
|
|
#11 |
![]() Inscription : septembre 2004 Messages : 626 ![]() |
Je pense aussi qu'il faut recevoir directement le grant si tu fais l'alter session dans ta procédure.
Laly.
__________________
In the heart of the truly greats, perfection is never achieved but endlessly pursued. Mon article sur les fonctions analytiques d'Oracle (calcul de moyennes mobiles, de quartiles et bien d'autres...) |
|
|
00
|
|
|
#12 |
|
Membre émérite
![]() Inscription : janvier 2004 Messages : 845 ![]() |
en fait ma procédure en appelle d'autres dans lesquelles sont les Select, inserts, deletes et autre...
Est-ce que peut-être il ne supporte pas plus d'un "niveau" de PL/SQL ? et maintenant ma proc tourne (elle prends env. 20 minutes)... est-ce que je devrait voir la table DBA_OUTLINE se remplir ou bien est-ce tous les outlines ne sont visibles qu'à la fin ?
__________________
Il est plus facile de voir les signes avant-coureurs après coup que l'inverse ! Yorglaa |
|
|
00
|
|
|
#13 |
![]() Inscription : septembre 2004 Messages : 626 ![]() |
Non, il faut l'activer au début du traitement, ensuite tous les ordres SQL sont "catchés".
Laly.
__________________
In the heart of the truly greats, perfection is never achieved but endlessly pursued. Mon article sur les fonctions analytiques d'Oracle (calcul de moyennes mobiles, de quartiles et bien d'autres...) |
|
|
00
|
|
|
#14 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
ce serait bien visible qu'une fois que tu repasses à FALSE
|
|
|
00
|
|
|
#15 |
|
Membre émérite
![]() Inscription : janvier 2004 Messages : 845 ![]() |
alors ma proc a fini...
mais dans DBA_OUTLINES je n'ai que le DERNIER ordre SQL de la procédure (un update tout rikiki...) je comprends pas tout alors...
__________________
Il est plus facile de voir les signes avant-coureurs après coup que l'inverse ! Yorglaa |
|
|
00
|
|
|
#16 |
|
Membre émérite
![]() Inscription : janvier 2004 Messages : 845 ![]() |
Laly :
ma procédure en appelle d'autres qui ne lui appartiennent pas... est-ce que le user à qui appartiennent ces procédures doivent également avoir le create any outline ?
__________________
Il est plus facile de voir les signes avant-coureurs après coup que l'inverse ! Yorglaa |
|
|
00
|
|
|
#17 |
![]() Inscription : septembre 2004 Messages : 626 ![]() |
Yorglaa, effectivement, je viens de faire le test. Si tu n'as qu'un grant execute sur une procédure, les stored outlines ne sont pas créés quand tu l'exécute. C'est un peu normal, car tu peux avoir le droit d'exécuter une procédure mais aucun accès aux objets sous-jacents.
Laly.
__________________
In the heart of the truly greats, perfection is never achieved but endlessly pursued. Mon article sur les fonctions analytiques d'Oracle (calcul de moyennes mobiles, de quartiles et bien d'autres...) |
|
|
00
|
|
|
#18 |
|
Membre émérite
![]() Inscription : janvier 2004 Messages : 845 ![]() |
ok, je viens de donner le create any outlines à mon user propriétaire des procédures lancées par la première...
réponse dans 20 minutes... en tout cas merci beaucoup à tous pour votre aide !
__________________
Il est plus facile de voir les signes avant-coureurs après coup que l'inverse ! Yorglaa |
|
|
00
|
|
|
#19 |
|
Membre émérite
![]() Inscription : janvier 2004 Messages : 845 ![]() |
YAHOU ça a l'air de fonctionner !!!
ma table dba_outlines est en train de se remplir avec les ordres SQL de mes procédures... de cette façon je vais (j'espère) pouvoir règler mon soucis de perf avec dbms_job en utilisant le outline de l'exécution "qui va bien"... voir http://www.developpez.net/forums/sho...26#post=263473 merci à tous ! dès que j'ai confirmation que le job en question est bien optimisé par l'utilisation du outline je mettrais à jour le post en question... merci Laly et orafrance
__________________
Il est plus facile de voir les signes avant-coureurs après coup que l'inverse ! Yorglaa |
|
|
00
|
|
|
#20 |
![]() Inscription : septembre 2004 Messages : 626 ![]() |
Yorglaa, pour qu'Oracle utilise les stored outlines, il faut que tu aies positionner le paramètres suivant use_stored_outline à true ou bien au nom de la catégorie utilisée.
Ensuite tu as une colonne used dasn USER_OUTLINES pour voir si l'outline a été utilisé au moins une fois. C'est bien vu de penser aux outlines pour ton pb de job Tiens nous au courant.Laly.
__________________
In the heart of the truly greats, perfection is never achieved but endlessly pursued. Mon article sur les fonctions analytiques d'Oracle (calcul de moyennes mobiles, de quartiles et bien d'autres...) |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com