IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Administration Oracle Discussion :

Outil pour tracer les requetes SQL envoyées au serveur.


Sujet :

Administration Oracle

  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    616
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Luxembourg

    Informations forums :
    Inscription : Mars 2007
    Messages : 616
    Points : 556
    Points
    556
    Par défaut Outil pour tracer les requetes SQL envoyées au serveur.
    Bonjour,

    Il y a pas si longtemps, j'ai travaillé sur SQL Server.

    Maintenant je dois travailler sur Oracle. J'avoue que le changement est difficile.
    Pour l'instant je cherche un outil capable de tracer toutes les requêtes SQL qui passent par le serveur.
    Existe t-il un outil de même type que SQL Server Profiler sur Oracle?

    Merci.

  2. #2
    Membre expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Points : 3 597
    Points
    3 597
    Par défaut
    Il faut utiliser la trace SQL avec TKPROF: http://download.oracle.com/docs/cd/B...htm#PFGRF01020

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    616
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Luxembourg

    Informations forums :
    Inscription : Mars 2007
    Messages : 616
    Points : 556
    Points
    556
    Par défaut
    Citation Envoyé par pifor Voir le message
    Il faut utiliser la trace SQL avec TKPROF: http://download.oracle.com/docs/cd/B...htm#PFGRF01020
    J'avais essayé TKPROF, mais il ne donne pas la valeur des paramètres passés dans la requête. J'aimerais bien connaitre les valeurs de paramètres pour savoir combien de lignes la requête retourne.

  4. #4
    Membre expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Points : 3 597
    Points
    3 597
    Par défaut
    Il faut activer la trace en demandant l'affichage des binds variables.
    Exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    EXECUTE DBMS_SESSION.SESSION_TRACE_ENABLE(waits => TRUE, binds => TRUE);

  5. #5
    Membre actif Avatar de petitfrere
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    259
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 259
    Points : 278
    Points
    278
    Par défaut
    binds => TRUE
    j'avoue j'ai pas cherché mais cette option fonctionne t'elle avec DBMS_FGA ?

    si vous savez...

    Merci

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    616
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Luxembourg

    Informations forums :
    Inscription : Mars 2007
    Messages : 616
    Points : 556
    Points
    556
    Par défaut
    Citation Envoyé par pifor Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    EXECUTE DBMS_SESSION.SESSION_TRACE_ENABLE(waits => TRUE, binds => TRUE);
    Ce code trace uniquement la session en cours, ce qui est n'est pas forcément intéressant.
    J'aimerais tracer toutes des instructions passées au serveur par une appli qui tourne (la session n'est pas connue d'avance).

  7. #7
    Membre expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Points : 3 597
    Points
    3 597
    Par défaut
    Pour tracer toutes les sessions de l'instance, il faut utiliser:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DBMS_MONITOR.DATABASE_TRACE_ENABLE(waits => TRUE, binds => TRUE);
    Attention au volume des fichiers trace générés.

  8. #8
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    616
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Luxembourg

    Informations forums :
    Inscription : Mars 2007
    Messages : 616
    Points : 556
    Points
    556
    Par défaut
    Citation Envoyé par pifor Voir le message
    Pour tracer toutes les sessions de l'instance, il faut utiliser:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DBMS_MONITOR.DATABASE_TRACE_ENABLE(waits => TRUE, binds => TRUE);
    Attention au volume des fichiers trace générés.
    Ca me génère ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    ********************************************************************************
     
    INSERT INTO ADDRESS_PHYSICAL (CID, OID, VERSION, CREATION_ACTOR, 
      CREATION_DATE_TIME, CREATION_TASK, CREATION_ACTION, CREATION_CHANNEL, 
      MODIFICATION_ACTOR, MODIFICATION_DATE_TIME, MODIFICATION_TASK, 
      MODIFICATION_ACTION, MODIFICATION_CHANNEL, FIRST_USE, LAST_USE, 
      DATE_VALIDITY_START, DATE_VALIDITY_END, ADDRESS, NOTE, OLD_PASS_ID, 
      IS_INCORRECT, SYNC_ID, MEDIA_CODEID) 
    VALUES
     (:1, :2, :3, :4, :5, :6, :7, :8, :9, :10, :11, :12, :13, :14, :15, :16, :17, 
      :18, :19, :20, :21, :22, :23)
     
     
    call     count       cpu    elapsed       disk      query    current        rows
    ------- ------  -------- ---------- ---------- ---------- ----------  ----------
    Parse        9      0.00       0.00          0          0          0           0
    Execute      9      0.04       0.11          0         13         97           9
    Fetch        0      0.00       0.00          0          0          0           0
    ------- ------  -------- ---------- ---------- ---------- ----------  ----------
    total       18      0.04       0.11          0         13         97           9
     
    Misses in library cache during parse: 1
    Misses in library cache during execute: 1
    Optimizer mode: ALL_ROWS
    Parsing user id: 70  
     
    Elapsed times include waiting on following events:
      Event waited on                             Times   Max. Wait  Total Waited
      ----------------------------------------   Waited  ----------  ------------
      log file sync                                   9        0.13          0.63
      SQL*Net message to client                       9        0.00          0.00
      SQL*Net message from client                     9        0.07          0.14
    ********************************************************************************
    Serait-il possible de connaitre les valeurs de :1, :2, :3, etc.?

  9. #9
    Membre expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Points : 3 597
    Points
    3 597
    Par défaut
    Il faut consulter le fichier trace brut (celui fourni en entrée de TKPROF) , rechercher la chaîne BIND et la valeur est après "value=":

    Exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    BINDS #1:
    bind 0: dty=2 mxl=22(22) mal=00 scl=00 pre=00 oacflg=03 oacfl2=c000000000000000
    size=48 offset=0 bfp=800003fb800697f0 bln=22 avl=02 flg=05 value=10
    bind 1: dty=2 mxl=22(22) mal=00 scl=00 pre=00 oacflg=03 oacfl2=c000000000000000
    size=0 offset=24 bfp=800003fb80069808 bln=22 avl=02 flg=01 value=300
    Exemple plus complet (en anglais) qui mentionne aussi la vue v$sql_bind_capture:
    http://www.dbaexpert.com/blog/2007/1...es-in-a-query/

  10. #10
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    616
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Luxembourg

    Informations forums :
    Inscription : Mars 2007
    Messages : 616
    Points : 556
    Points
    556
    Par défaut
    Citation Envoyé par pifor Voir le message
    Il faut consulter le fichier trace brut (celui fourni en entrée de TKPROF) , rechercher la chaîne BIND et la valeur est après "value=":
    Ah oui, j'ai trouvé. Merci.
    VACHE! Ils sont quand même compliqués chez Oracle. Je ne comprends pas pourquoi Oracle n'a pas développé un outil graphique digne de se nom.


    Chez SQL Server il existe un bel outil graphique pour ça.

  11. #11
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Citation Envoyé par cmako Voir le message
    ...
    VACHE! Ils sont quand même compliqués chez Oracle. Je ne comprends pas pourquoi Oracle n'a pas développé un outil graphique digne de se nom.

    Par altruisme, ils ont prix soin de laisser divers tiers de la faire , par exemple TVD$XTAT

Discussions similaires

  1. Réponses: 4
    Dernier message: 18/06/2014, 10h01
  2. Réponses: 9
    Dernier message: 20/10/2010, 11h42
  3. Réponses: 1
    Dernier message: 10/10/2008, 08h18
  4. Tracer les requetes envoyé depuis php.
    Par Rakken dans le forum Oracle
    Réponses: 1
    Dernier message: 25/10/2006, 11h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo