Bonjour,

Je vous propose un nouvel élément à utiliser : Comment afficher les évènements d'attente et les valeurs des variables liées

Affichage des attentes et des valeurs des bind variables



Le script ci-joint permet à partir d'un fichier de trace d'obtenir les attentes au niveau de chaque requête et au niveau du fichier ainsi que d'afficher les valeurs des bind variables. Il est utile dans la mesure où les fichiers de trace sont directement exploitables. De plus, ces informations ne sont pas restituées par l'outil TkProf.



Les résultats sont affichés directement à l'écran.



Il faut pour voir ces informations générer un fichier de trace avec la commande suivante :



ALTER SESSION SET EVENTS '10046 trace name context forever, LEVEL 12';



Ensuite, vous pouvez exécuter les requêtes/procédures que vous souhaitez analyser.

pour arrêter la génération des traces, il faut exécuter :



ALTER SESSION SET EVENTS '10046 trace name context off';



Le script est écrit en PERL.

PERL est un langage très courant sous Unix. L'utilisateur peut télécharger gratuitement un interpréteur PERL ici : http://www.activestate.com/Products/ActivePerl.



Pour lancer ce script :





perl wait.pl





Exemples de sortie :



ela : est le temps écoulé (elapsed time) en centième de secondes.

cnt : est le nombre de fois où ce type d'attente s'est produit.



Affichage des attentes au niveau de chaque requête :



=====================

CURSOR 23

INSERT /*+ APPEND */INTO DM_PERSONNALISE ( CLIENT_ID,C_CONTRIB,ISSUER_ID,NOTE_INTERNE )

SELECT A.CLIENT_ID,B.DM_C_CONTRIB,B.DM_ISSUER_ID,'N'

FROM DM_CLIENT A,DM_ISSUER B,PPWEB.GRP_CLIENT@PUSHPULL C,PPWEB.GRP_ISSUER@PUSHPULL D

WHERE A.CLIENT_ID = C.CLIENT_ID

AND C.GRP_ID = D.GRP_ID

AND D.C_CONTRIB = B.C_CONTRIB

AND D.ISSUER_ID = B.ISSUER_ID



WAIT : SQL*Net more data from dblink ela=2 cnt=681

WAIT : SQL*Net message to dblink ela=0 cnt=1341

WAIT : control file parallel write ela=0 cnt=2

WAIT : direct path write ela=0 cnt=1

WAIT : SQL*Net message from dblink ela=1324 cnt=1341

WAIT : control file sequential read ela=0 cnt=10



Affichage des attentes au niveau du fichier :



Total waits :

WAIT : SQL*Net message from dblink ela=40187 cnt=40917

WAIT : SQL*Net message to dblink ela=8 cnt=40917

WAIT : SQL*Net message from client ela=7 cnt=13

WAIT : pipe get ela=6 cnt=1

WAIT : rdbms ipc reply ela=5 cnt=13

WAIT : SQL*Net more data from dblink ela=4 cnt=685

WAIT : db file sequential read ela=3 cnt=37

WAIT : log file sync ela=3 cnt=9

WAIT : local write wait ela=3 cnt=18

WAIT : file open ela=2 cnt=6

WAIT : control file sequential read ela=1 cnt=36

WAIT : single-task message ela=1 cnt=2

WAIT : direct path write ela=0 cnt=3

WAIT : SQL*Net message to client ela=0 cnt=13

WAIT : db file scattered read ela=0 cnt=1

WAIT : control file parallel write ela=0 cnt=6



Affichage des valeurs des bind variables :



=====================

CURSOR 25

SELECT I.PROPERTY

FROM SYS.OBJ$ IOB,SYS.USER$ U,SYS.IND$ I

WHERE IOB.NAME = :b1

AND U.NAME = :b2

AND IOB.OBJ# = I.OBJ#

AND IOB.OWNER# = U.USER#





BIND : 1 value="PK_DM_GRP_CONTENT"

BIND : 2 value="DEXD"



Qu'en pensez-vous ?