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 :

Killer une session fantôme


Sujet :

Administration Oracle

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Octobre 2013
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Octobre 2013
    Messages : 5
    Points : 1
    Points
    1
    Par défaut Killer une session fantôme
    Bonjour,

    Voici mon problème :
    Je veux modifier ma table par l'ajout d'une nouvelle colonne mais je tombe sur une erreur ORA-00054.
    Avec la requête suivante, je vois les objets lockés ainsi que la session qui lock (SESSION_ID) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT OBJECT_ID , SESSION_ID,ORACLE_USERNAME, OBJECT_NAME  
    FROM V$LOCKED_OBJECT VLO INNER JOIN dba_objects DO ON VLO.object_id = DO.object_id 
    where owner='mon schéma';
    Effectivement ma table apparaît. Je vais chercher dans la table v$session le SERIAL correspondant à la session que j'ai trouvé pour faire un kill.

    Le problème c'est que dans la table v$session je n'ai pas de SID correspondant au SESSION_ID remonté par ma première requête.
    Je me retrouve avec une session fantôme.

    Ma question est donc comment killer cette session fantôme afin de que je puisse faire ma modification de table.

    Merci

  2. #2
    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
    Et vous la trouvez dans gv_$session ?

  3. #3
    Membre averti
    Inscrit en
    Novembre 2002
    Messages
    549
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 549
    Points : 436
    Points
    436
    Par défaut
    Bonjour, pour retrouver ta 'session fantome' :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    --spid fantome si la session a été killée
    select spid, program
    from v$process where program != 'PSEUDO'
    and addr not in
    (select paddr from v$session);
    ensuite kill du process à faire au niveau OS
    PpPool

  4. #4
    Nouveau Candidat au Club
    Inscrit en
    Octobre 2013
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Octobre 2013
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par mnitu Voir le message
    Et vous la trouvez dans gv_$session ?
    Non je n'ai pas la session non plus dans cette table

  5. #5
    Nouveau Candidat au Club
    Inscrit en
    Octobre 2013
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Octobre 2013
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par PpPool Voir le message
    Bonjour, pour retrouver ta 'session fantome' :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    --spid fantome si la session a été killée
    select spid, program
    from v$process where program != 'PSEUDO'
    and addr not in
    (select paddr from v$session);
    ensuite kill du process à faire au niveau OS
    J'ai testé la requête, dans mon cas elle me ramène 2 SPID. Par contre comment killer ces process sous l'OS, le traitement ayant locké les objets n'est pas forcement sur le serveur de base de données ?

    Merci

  6. #6
    Nouveau Candidat au Club
    Inscrit en
    Octobre 2013
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Octobre 2013
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Je rajouterais un autre point.

    Dans un autre cas, j'ai pu identifier la session qui bloquait mon objet. J'ai donc
    utilisé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ALTER SYSTEM KILL SESSION 'SID, SERIAL' IMMEDIATE
    Si la session est bien killée et n'apparaît plus dans la table v$session, j'ai toujours l'objet locké !

    Comment alors libérer l'objet pour ne plus avoir l'erreur ORA-00054?
    Merci

  7. #7
    Nouveau Candidat au Club
    Inscrit en
    Octobre 2013
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Octobre 2013
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par fafa65 Voir le message
    J'ai testé la requête, dans mon cas elle me ramène 2 SPID. Par contre comment killer ces process sous l'OS, le traitement ayant locké les objets n'est pas forcement sur le serveur de base de données ?

    Merci
    Il faut utiliser sous dos la commande orakill ?

    Si c'est le cas cela ne m'a pas libéré mon objet.

Discussions similaires

  1. Réponses: 0
    Dernier message: 13/09/2012, 17h51
  2. killer une session à partir d'une autre
    Par alexxxx69 dans le forum ASP.NET MVC
    Réponses: 0
    Dernier message: 16/11/2011, 09h48
  3. droit pour killer une session
    Par pseudobidon57 dans le forum Administration
    Réponses: 4
    Dernier message: 13/06/2007, 15h43
  4. killer une session
    Par sky_perrinos dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 10/04/2007, 16h03
  5. Killer une session Oracle
    Par charles_mourot dans le forum Oracle
    Réponses: 2
    Dernier message: 06/10/2006, 13h29

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