|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre chevronné
![]() olivier ThiébautChef de projet/Architecte Inscription : mai 2004 Messages : 627 ![]() |
Bonjour,
J'ai besoin de vos services Je suis en train de développer un module PLSQL pour optimiser une application. connaissez vous un moyen d'obtenir une trace de l'exécution de ma procédure PLSQL . Sachant que je suis développeur et que je dois demander des autorisations à un DBA system si je dois faire des appels systèmes. EXPLAIN peut être utilisé ? Merci olivier Eclairez moi, le soleil vous le rendra |
|
|
00
|
|
|
#2 | |||
|
Membre du Club
![]() Inscription : septembre 2006 Messages : 79 ![]() |
Citation:
Code :
|
|||
|
|
00
|
|
|
#3 |
|
Membre chevronné
![]() olivier ThiébautChef de projet/Architecte Inscription : mai 2004 Messages : 627 ![]() |
Bonjour,
Et comment je fais pour l'intégrer je l'appelle de l'éxtérieur ou dans mon package désolé pour mon ignorance olivier |
|
|
00
|
|
|
#4 | |
|
Membre du Club
![]() Inscription : septembre 2006 Messages : 79 ![]() |
Citation:
Vous pouvez l'insérer dans votre application, ou l'executer dans une autre procédure stockée présente que vous utiliser. A vous de l'adapter selon vos besoins. |
|
|
|
00
|
|
|
#5 |
|
Membre actif
![]() Inscription : février 2007 Messages : 167 ![]() |
Bonjour,
De ce que je comprends la routine envoyée par ggounouman va à chaque fois qu'elle sera invoquée ajouter une ligne datée dans le fichier trace qu'elle manipule. Ceci permet de d'horodater le passage dans telle ou telle partie de la procédure à optimiser dans laquelle on parsème des appels à cette routine. L'allusion à EXPLAIN de nathieb me fait penser à un package mis à disposition par Oracle : le DBMS_PROFILER. Ce package doit être installé par le dba en lançant connecté SYS le fichier profload.sql situé dans rdbms\admin. Il est un peu ardu à exploiter "brut" mais il permet de déterminer à quel endroit la procédure à optimiser passe du temps. Carrément puissant (j'ai testé sous Oracle 9 et 10). Ensuite une fois qu'on a repéré la requête qui est la plus consommatrice en temps on peut en effet utiliser la commande EXPLAIN PLAN pour l'optimiser. PS : Si vous disposez d'un environnement windows de développement (du type PlSqldeveloper gratuit 30 jours chez allroundautomations) son exploitation devient plus facile. Pozzo |
|
|
00
|
|
|
#6 |
|
Membre confirmé
![]() Inscription : mai 2007 Messages : 385 ![]() |
Pourquoi ne veuxtu pas utiliser le EXPLAIN PLAN qui te donne le chemin d'accés de ta requête et en plus une estimation du temps de réponse de ta requête.
LBO72. |
|
|
00
|
|
|
#7 |
|
Membre actif
![]() Inscription : septembre 2007 Messages : 188 ![]() |
Je ne suis pas sur de comprendre.
Tu veux écrire un module pour optimiser une appli ? De quels ordres sont tes pb ? Si l'unique objet de ce module est est de trouver d'ou viennent les pb de lenteurs, autant utulise tout l'armada fournit par Oracle. En premier lieu demande à ton dba d'installer statspack (package fournit par oracle) et demande lui de générer des snap shot toutes les 15 ' Ensuite il faut qu'il te donne un compte pour pouvoir générer des rapports entre deux snap. A partir de la tu pourras identifier les différents goulets d'étranglement (requete / Accès disques / mémoire,...) Pour info 80% des pbs de temps de réponses sont en général liés à une appli mal concu ou mal écrite(sql mauvais, pas d'index) et rarement à des pbs purement oracle (pas de stats, répartition disques,...) |
|
|
00
|
|
|
#8 |
|
Membre chevronné
![]() olivier ThiébautChef de projet/Architecte Inscription : mai 2004 Messages : 627 ![]() |
Pozzo a répondu partiellement à ma question.
J'ai crée un package avec plusieurs fonctions. Ils accéèdent à une table de 67000 lignes. Pour chaque, lignes , j'ai environ vingt champs. Dont une dizaine doivent être controlé non null. après ce premier controle, je fais des triples contrôles qui s'appuie sur des tables externes. Le Pb c'est que c'est un script PHP qui va appeler la procédure stockée. Je cherche donc le moyen d'optimiser et de mieux comprendre ou pourrait être mes erreurs ( requêtes, algo , ...) olivier |
|
|
00
|
|
|
#9 |
|
Membre actif
![]() Inscription : septembre 2007 Messages : 188 ![]() |
L'un n'empeche pas l'autre. Je te garantis que Statspack est capable de sortir les requetes consommatrice, il y a également des conseils en terme de mémoire....
Par ailleurs, si dans tes requetes tu as beaucoup de ... where is null (ou is not null), je te conseille 'utiliser des indexe de types "user fonction" en utilisant la fonction nvl. Ca permet de contourner le fait que les valeurs non nulles ne sont pas indexées. Laurent |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com