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

Oracle Discussion :

Tracer plusieurs sessions en même temps


Sujet :

Oracle

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 99
    Points : 46
    Points
    46
    Par défaut Tracer plusieurs sessions en même temps
    Bonjour à tous,
    j'ai une petite question, est il possible de tracer plusieurs sessions en même temps?

    Je suppose que oui... personnellement, je fais ça de la façon suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    -- Je récupère tous les SPID dont le nom de schema est 'BENCH'
    SELECT spid 
    FROM v$process a, v$session b
    WHERE a.addr = b.paddr 
    AND b.schemaname = 'BENCH';
     
    --Ensuite je souhaite tracer chacune de ces sessions
    oradebug setospid 5993
    oradebug setospid 20890
    oradebug setospid 20918
    oradebug setospid 20946
    oradebug setospid 10673

    Est ce comme ca que je dois procéder? y a til qqch de plus intuitif?
    Je ne peux pas passer par un oradebug via le schemaname?


    Comment savoir si j'ai bien désactiver tous les traçages?

    MErci par avance pour votre aide

  2. #2
    Membre expert
    Avatar de bouyao
    Inscrit en
    Janvier 2005
    Messages
    1 778
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 778
    Points : 3 033
    Points
    3 033
    Par défaut
    et il ne faut pas oublier

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ORADEBUG EVENT 10046 TRACE NAME CONTEXT FOREVER, LEVEL 4
    Encore un de mes articles non encore terminé :
    http://mbouayoun.developpez.com/dump1/#L14.2

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 99
    Points : 46
    Points
    46
    Par défaut
    Citation Envoyé par bouyao
    et il ne faut pas oublier

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ORADEBUG EVENT 10046 TRACE NAME CONTEXT FOREVER, LEVEL 4
    Encore un de mes articles non encore terminé :
    http://mbouayoun.developpez.com/dump1/#L14.2
    C'est pas gentil de dire ça :'( je l'ai pourtant lu...

    Je te joins un screen de ce que je fais exactement et je ne retrouve aucun fichier de trace... Je précise que si je trace ma propre session ca marche nickel (merci à vos super tutoriels) mais je n'arrive pas à tracer une autre session que la mienne...

    Edit: je retire ce que j'ai dis ca marche enfin....
    Maintenant question bête pour tracer plusieurs sessions je dois faire ça?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    ORADEBUG SETOSPID 1
    ORADEBUG EVENT 10046 TRACE NAME CONTEXT FOREVER, LEVEL 4
     
    ORADEBUG SETOSPID 2
    ORADEBUG EVENT 10046 TRACE NAME CONTEXT FOREVER, LEVEL 4
     
    ORADEBUG SETOSPID 3
    ORADEBUG EVENT 10046 TRACE NAME CONTEXT FOREVER, LEVEL 4
    jusqu'à n ou il y a plus rapide?
    Existe-t-il une commande pour ensuite arrêter l'ensemble des tracages ou je fais un simple "oradebug event 10046 trace name context off" et ca stope tout?

  4. #4
    Membre expert
    Avatar de bouyao
    Inscrit en
    Janvier 2005
    Messages
    1 778
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 778
    Points : 3 033
    Points
    3 033
    Par défaut
    Le fichier trace ce trouve dans le repertoire udump
    pour trouver le fichier trace il suffit de lancer la commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    oradebug TRACEFILE_NAME
    EDIT : Pour Arrêter les traces Il faut lancer la commande pour chaque session

  5. #5
    Membre expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Points : 3 199
    Points
    3 199
    Par défaut
    Citation Envoyé par bouyao
    Encore un de mes articles non encore terminé :
    http://mbouayoun.developpez.com/dump1/#L14.2
    Sur les différentes façons et niveau de trace, mon article (http://leoanderson.developpez.com/tr...ssions-oracle/) présente différentes façon de tracer avec différents niveaux !

    Dans le cas présent, l'event 10046 activé en PL/SQL doit fonctionner (oradebug étant mono-session !)

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 99
    Points : 46
    Points
    46
    Par défaut
    Citation Envoyé par bouyao
    Le fichier trace ce trouve dans le repertoire udump
    pour trouver le fichier trace il suffit de lancer la commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    oradebug TRACEFILE_NAME
    EDIT : Pour Arrêter les traces Il faut lancer la commande pour chaque session
    Ca roule, ca marche nickel
    Par contre, comment savoir si j'ai oublié de "tuer" un traçage?

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 99
    Points : 46
    Points
    46
    Par défaut
    Citation Envoyé par LeoAnderson
    Sur les différentes façons et niveau de trace, mon article (http://leoanderson.developpez.com/tr...ssions-oracle/) présente différentes façon de tracer avec différents niveaux !

    Dans le cas présent, l'event 10046 activé en PL/SQL doit fonctionner (oradebug étant mono-session !)
    Mono-session? ce qui voudrait dire que je ne peux que tracer une session à la fois?

    Pourtant, j'ai fais la chose suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    ORADEBUG SETOSPID 20946
    ORADEBUG EVENT 10046 TRACE NAME CONTEXT FOREVER, LEVEL 1
     
    ORADEBUG SETOSPID 20755
    ORADEBUG EVENT 10046 TRACE NAME CONTEXT FOREVER, LEVEL 1
    Et en sortie, je récupère bien 2 fichiers, bench_ora_20946.trc et bench_ora_20755.trc.
    Après je suis loin d'être un spécialiste en Oracle, je viens de commencer y a 2jours, donc les fichiers de traçages sont ils cohérents, je ne sais pas?

  8. #8
    Membre expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Points : 3 199
    Points
    3 199
    Par défaut
    Et si vous vous rendez compte qu'il n'y a que la session du OS PID 20946 que vous voulez tracer, vous faites comment avec le oradebug ???? ;-)

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 99
    Points : 46
    Points
    46
    Par défaut
    Citation Envoyé par LeoAnderson
    Et si vous vous rendez compte qu'il n'y a que la session du OS PID 20946 que vous voulez tracer, vous faites comment avec le oradebug ???? ;-)
    heu pas compris la question
    si je souhaite tracer une seule session, je lance oradebug qu'une fois... je vois pas où se situe le problème que vous soulevez?

    Si vous pourriez m'expliquer, je suis preneur

  10. #10
    Membre expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Points : 3 199
    Points
    3 199
    Par défaut
    Vous savez que vous voulez surveiller l'activité de "TOTO" et "TITI"
    Vous faites 2 coups de oradebug. Puis "TITI" a fini l'activité à tracer mais pas "TOTO"

    Si vous utilisez le oradebug, vous ne pouvez pas dire "j'arrête TITI mais continue TOTO", alors que si vous appellez la fonction en PL/SQL vous le pouvez ! ;-)

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 99
    Points : 46
    Points
    46
    Par défaut
    Citation Envoyé par LeoAnderson
    Vous savez que vous voulez surveiller l'activité de "TOTO" et "TITI"
    Vous faites 2 coups de oradebug. Puis "TITI" a fini l'activité à tracer mais pas "TOTO"

    Si vous utilisez le oradebug, vous ne pouvez pas dire "j'arrête TITI mais continue TOTO", alors que si vous appellez la fonction en PL/SQL vous le pouvez ! ;-)
    ah ok, je vois nickel... je vais voir ce que je dois coder en PL/SQL dans ce cas...

    Petite question technique, je souhaite tracer toutes les sessions contenue dans un shéma appelé 'BENCHSPORT'.
    Pour le moment, je fais tout à la main, c'est à dire que je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT spid FROM v$process a, v$session b WHERE a.addr = b.paddr AND b.schemaname = 'SPORTBENCH';
    
    pour récupérer l'ensemble des SPID lié à ce shéma et ensuite à la main, je lance un par un les oradebug... donc pas tiptop.

    Existerait-il un moyen plus intuitif de lancer le tracage de session sur ce shema? Si oui, je veux bien savoir comment

  12. #12
    Membre expert
    Avatar de bouyao
    Inscrit en
    Janvier 2005
    Messages
    1 778
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 778
    Points : 3 033
    Points
    3 033
    Par défaut
    Citation Envoyé par LeoAnderson
    Vous savez que vous voulez surveiller l'activité de "TOTO" et "TITI"
    Vous faites 2 coups de oradebug. Puis "TITI" a fini l'activité à tracer mais pas "TOTO"

    Si vous utilisez le oradebug, vous ne pouvez pas dire "j'arrête TITI mais continue TOTO", alors que si vous appellez la fonction en PL/SQL vous le pouvez ! ;-)
    Avec Oradebug on peut.

  13. #13
    Membre expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Points : 3 199
    Points
    3 199
    Par défaut
    Citation Envoyé par alex75
    Existerait-il un moyen plus intuitif de lancer le tracage de session sur ce shema? Si oui, je veux bien savoir comment
    Le plus simple est de faire un trigger "AFTER LOGON ON DATABASE" qui se charge de faire des
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER SESSION SET SQL_TRACE=TRUE;
    Citation Envoyé par bouyao
    Avec Oradebug on peut.
    ça c'est de la réponse qui n'apporte rien où je ne m'y connais pas !!
    Même si c'était le cas, à quoi bon puisque sys.dbms_system.Set_ev le fait très bien ....

  14. #14
    Membre expert
    Avatar de bouyao
    Inscrit en
    Janvier 2005
    Messages
    1 778
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 778
    Points : 3 033
    Points
    3 033
    Par défaut
    1. dbms_system.SET_SQL_TRACE_IN_SESSION consiste à tracer juste le niveau 1 et pas les autres niveaux.
    2. dbms_system.Set_ev et Oradebug sont capable de tracer plusieurs niveaux mais ils sont tres dangereux (synonyme : A ne pas utiliser).
    3. Pour oradebug on peut tracer plusieurs sessions.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ORADEBUG SETOSPID spid1
    ORADEBUG EVENT 10046 TRACE NAME CONTEXT FOREVER, LEVEL
    ORADEBUG SETOSPID spid2
    ORADEBUG EVENT 10046 TRACE NAME CONTEXT FOREVER, LEVEL
    on a donc activer la trace de spid1 et spid2
    pour arrêter celui de spid1 et laisser spid2 il suffit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ORADEBUG SETOSPID spid1
    ORADEBUG EVENT 10046 TRACE NAME CONTEXT OFF
    la trace de spid1 sera arrêter mais pas celuis de spid2.

    Ma reponse ne te convient pas ?

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 99
    Points : 46
    Points
    46
    Par défaut
    Autre petite question:

    Je trace une première fois de la façon suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ORADEBUG SETOSPID spid1
    ORADEBUG EVENT 10046 TRACE NAME CONTEXT FOREVER, LEVEL 1
    ORADEBUG SETOSPID spid2
    ORADEBUG EVENT 10046 TRACE NAME CONTEXT FOREVER, LEVEL 1
    Et arrête le service comme ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ORADEBUG EVENT 10046 TRACE NAME CONTEXT OFF
    Je récupère bien 2 fichiers trc dans le udump .Par contre si je refais EXACTEMENT la même manip pour tracer à nouveau les spid1 et spid2, les fichiers de trace ne se mettent pas à jour... pourquoi?

  16. #16
    Membre expert
    Avatar de bouyao
    Inscrit en
    Janvier 2005
    Messages
    1 778
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 778
    Points : 3 033
    Points
    3 033
    Par défaut
    Quand tu utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ORADEBUG SETOSPID spid1
    Veut dire que tout les commandes qui suivent s'appliquent seulement au spid1

    et n'oubli pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    oradebug TRACEFILE_NAME
    pour trouver le nom du fichier trace.

Discussions similaires

  1. détecter plusieurs messages en même temps
    Par yannickrohel dans le forum Windows
    Réponses: 5
    Dernier message: 20/02/2006, 23h17
  2. Rendre visible / invisible plusieurs éléments en même temps
    Par Bluespike62 dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 23/01/2006, 17h43
  3. laisser cochés plusieurs TRadioButton en même temps.
    Par heider dans le forum Composants VCL
    Réponses: 5
    Dernier message: 25/12/2005, 14h15
  4. lecture de plusieurs port en même temps
    Par manaboko dans le forum Langage
    Réponses: 3
    Dernier message: 06/10/2005, 15h26
  5. Réponses: 9
    Dernier message: 17/04/2004, 16h32

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