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

SQL Oracle Discussion :

Recuprer le process courant


Sujet :

SQL Oracle

  1. #1
    Membre chevronné
    Profil pro
    MOA
    Inscrit en
    Décembre 2002
    Messages
    1 028
    Détails du profil
    Informations personnelles :
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : MOA

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 028
    Points : 1 801
    Points
    1 801
    Par défaut Recuprer le process courant PAR JOB
    Bonjour,


    si une procédure stocké P est appelé par un job J. La procédure P appelle 2 processus : F1 et F2.

    P, F1 et F2 vont avoir tous les 3 le meme numéro de procésessus

    process
    Each process in an Oracle instance performs a specific job. By dividing the work of Oracle and database applications into several processes, multiple users and applications can connect to a single database instance simultaneously.
    http://download.oracle.com/docs/cd/B...htm#sthref4189


    Il y a une vue qui liste les processus v$process mais comment fais t'on pour connaitre le numéro de processus courant.
    Existe t-il une fonction d'un package de SYS qui renverrait le numéro du process courant ?

  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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    SQL> set linesize 100
    SQL> column program format a25
    SQL> select p.pid, p.spid, p.program, s.sid, s.program
      2  from v$process p, v$session s
      3  where p.addr = s.paddr
      4  and s.sid = (select sys_context('userenv', 'sid') from dual);
     
           PID SPID         PROGRAM                          SID PROGRAM
    ---------- ------------ ------------------------- ---------- -------------------------
            18 6137         oracle@pbell (TNS V1-V3)         153 sqlplus@pbell (TNS V1-V3)
     
    SQL>

  3. #3
    Membre chevronné
    Profil pro
    MOA
    Inscrit en
    Décembre 2002
    Messages
    1 028
    Détails du profil
    Informations personnelles :
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : MOA

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 028
    Points : 1 801
    Points
    1 801
    Par défaut
    merci pifor pour ta réponse.


    selon la documentation Oracle, syscontext sys_context('userenv', 'sid') renvoie le numéro de session à ne pas confondre avec le SESSION ID (The session number (different from the session ID).)
    http://download.oracle.com/docs/cd/B...htm#SQLRF06117

    Toujours selon la doc de Oracle
    V$SESSION.SID represente l'identifiant de session (Session identifier)
    http://download.oracle.com/docs/cd/B...htm#REFRN30223

    J'ai quelques doutes que cela va etre la bonne information que je vais récupérer. Lorsque 2 job vont etre lancé (par scott par exemple), ils risquent d'etre lancés avec le meme identifiant de session. Je ne vais donc pas pouvoir les identifiés.

    L'identifiant session retourné par sys_context('userenv', 'sid') risque de ne pas être assez fin. Avec ta méthode, on récupére certe le numéro de processus mais à partir d'un numéro de session.


    ENFIN bon, c'est ce que je pense MAIS je vais bien sur tester. N'ayant pas Oracle chez moi, je testerai dès lundi matin au boulot.

  4. #4
    Membre chevronné
    Profil pro
    MOA
    Inscrit en
    Décembre 2002
    Messages
    1 028
    Détails du profil
    Informations personnelles :
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : MOA

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 028
    Points : 1 801
    Points
    1 801
    Par défaut
    Lorsque j'exécute ma procédure via un job, malheureusement à chaque appel, je recupere toujours le meme PID (et bien sur le meme processus père SPID).

    Comment puis je avoir un identifiant unique par job ?


    SELECT p.pid
    INTO lvpid
    FROM sys.v_$process p, sys.v_$session s
    WHERE p.addr = s.paddr AND s.sid = (SELECT sys_context('userenv', 'sid')

Discussions similaires

  1. Réponses: 4
    Dernier message: 26/09/2008, 12h14
  2. Comment récuperer la SQLCMD de l'ID Process courant (suite)
    Par michel1234 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 21/01/2008, 11h36
  3. recupérer l'enregistrement courant
    Par ahmed_dev dans le forum Administration
    Réponses: 1
    Dernier message: 17/06/2006, 16h07
  4. [VB.NET] Recupérer saisie courante dans une Datagrid
    Par jojo-la-praline dans le forum Windows Forms
    Réponses: 1
    Dernier message: 26/04/2006, 21h36
  5. Recupération de l'heure courante
    Par Pe04 dans le forum Langage
    Réponses: 5
    Dernier message: 09/01/2006, 16h09

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