Trace des requêtes oracle 

Introduction

Cet outil est accessible depuis n’importe quel écran du progiciel dès lors que la base de données utilisée est Oracle™, via le menu Outils situé en haut de l’écran, qui contient les deux choix suivants :

Activation trace oracle

Via la fonctionnalité SQL_TRACE d'Oracle, on active l'enregistrement de ordres SQL exécutés dans un fichier qui pourront ensuite être analysés.

Désactivation trace

Cette fonction lance le retraitement via l’outil oracle TKPROF qui traite le fichier de trace obtenu par l'activation, puis visualise du résultat. Ceci permet de voir tous les ordres SQL exécutés durant l'activation.

Pré-requis

Habilitation

L’utilisateur doit être autorisé à utiliser le débogueur (paramètre DBG).

Contrainte technique

La fonction ne peut fonctionner que si un serveur de traitement est installé et est actif sur la machine de la base de données.

Droits de l'utilisateur pour Unix

Pour les configurations où le serveur d'application se trouve sur une machine Unix, les utilisateurs désireux de lancer la trace Oracle doivent être dans le groupe DBA

Interface utilisateur

Lorsque l’on lance la fonction, un écran permet de saisir un ensemble d’options :

Récupération des résultats

On peut choisir d'utiliser ou non les trois options suivantes

AGGREGATE

Indique si les enregistrements identiques doivent être regroupés en une seule requête SQL ou laissés indépendants

WAITS

Indique si les récapitulatifs doivent être enregistrés pour les évènements d’attentes. Cette option n'est disponible que depuis la version 9i

SYS

Indique s’il faut afficher le SQL récursif exécuté par SYS

Options de tri

Par défaut les ordres SQL sont détaillés par ordre chronologique mais il est possible de préciser des options de tri.

Plusieurs propositions de tri sont proposées et on retrouvera en premier les ordres correspondant au coût le plus important selon le tri demandé.

L'utilisateur peut aussi choisir lui-même les options de tri voulues par "Paramétrage tri avancé". La fenêtre correspondante lui permettra de choisir toutes les options possibles parmi les suivantes (listées par phase de traitement de la requête) :

prscnt

Nombre d’appels d’analyse (PARSE)

prscpu

Temps CPU consommé pour l’analyse

prsela

Temps écoulé pour l'analyse

prsdsk

Nombre de lectures sur le disque

prsqry

Nombre de mémoire tampon pour une lecture cohérente au cours de l’analyse

prscu

Nombre de buffers durant la phase de parse

prsmis

Nombre d’échecs dans le cache « library » au cours de l’analyse

execnt

Nombre d’exécutions appelées

execpu

Temps CPU consommé pour l’exécution

exeela

Temps écoulé durant l’exécution

exedsk

Nombre de lectures sur le disque durant l’exécution

exeqry

Nombre de mémoire tampon pour une lecture cohérente au cours de l’exécution

execu

Nombre de buffers durant la phase d’exécution

exerow

Nombre de lignes traitées durant l’exécution

exemis

Nombre d’échecs dans le cache « library » au cours de l’exécution

fchcnt

Nombre d’appels d’extraction (FECTH)

fchcpu

Temps CPU consommé pour l’extraction

fchela

Temps écoulés pour l’extraction

fchdsk

Nombre de lectures sur le disque au cours du FETCH

fchqry

Nombre de mémoires tampon pour une lecture cohérente au cours de l’extraction

fchcu

Nombres de mémoires tampon pour la lecture en cours lors de l’extraction

fchrow

Nombre de lignes traitées durant l’extraction.

Présentation des résultats

L'utilisateur peut choisir de ne lister que les n premiers ordres SQL ramenés.

Dans le cas où il a choisit un tri, il obtiendra les n premiers ordres SQL qui correspondent au coût le plus important de ce tri.

Explication du résultat de tkprof

Count

Nombre d’analyses, exécutions et récupération effectuées.
(Bien vérifier la présence d’une valeur supérieur à 0 avant d’interpréter les autres colonnes). A moins d’avoir spécifié AGGREGATE=no , TKPROF regroupe les instructions SQL identiques .

CPU

Temps CPU total, exprimé en secondes, consacré aux étapes d’analyse, d'exécution et de récupération.

Elapsed

Temps total, en secondes, consacré à tous les appels d’analyse, d’exécution ou de récupération (Ici les waits sont ajoutés et donc ce temps comprend aussi bien les opérations Oracle que les opérations CPU ).
Il faut vérifier qu’il n’y a pas de différence notable entre CPU et Elapsed

Disk

Nombre total de blocs de données lus physiquement dans les fichiers de données pour les étapes d’analyse, d'exécution ou de récupération.

Query

Nombre total de buffers extraits en mode cohérent pour toute les étapes.

Current

Nombre total de buffers extraits en mode courant pour toute les étapes.

Rows

Nombre total de lignes traitées (mais cela ne concerne pas les sous-requêtes)
- Select : ce nombre se trouve dans la colonne Fetch
- Insert , Update et Delete : ce nombre se trouve dans la colonne Execute

Erreurs

Outre les messages génériques, les messages d'erreur suivants peuvent apparaître lors de la saisie :

"Erreur lors de l'accès au serveur de la base de données"

L'accès à la machine de la base de données n'est pas possible, il n'y a pas de serveur de traitement ou il n'est pas démarré

"Erreur d'accès au répertoire des traces de la base de données"

Le répertoire indiqué comme répertoire des traces n'est pas accessible