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 :

Sessions à l'état KILLED


Sujet :

Administration Oracle

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Août 2009
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur décisionnel

    Informations forums :
    Inscription : Août 2009
    Messages : 19
    Points : 16
    Points
    16
    Par défaut Sessions à l'état KILLED
    Bonjour,

    Nous avons un job qui, pour résumer, kill les sessions de la veille.
    le pb est que j'ai 3 sessions qui restent à l'état KILLED dans V$SESSION.

    Comment se fait-il que ces sessions soient toujours visibles ?
    Y a-t-il un moyen de les "purger" ?

    Merci d'avance.

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 897
    Points : 53 135
    Points
    53 135
    Billets dans le blog
    6
    Par défaut
    Un KILL sur une session impose un ROLLBACK de la transaction. Cela signifie que tout le travail entamé doit être défait. Oracle va donc jouer le journal "à l'envers" (undo) pour replacer les "images avant" des données en mémoire.
    Ceci peut donc prendre du temps, d'autant plus de temps que vous avez beaucoup de données...

    Ceci dit, avoir un job qui "KILL" automatiquement des sessions, révèle généralement un grand désordre dans la conception de votre bases de données et de son implémentation... C'est généralement le signe d'une incompréhension du fonctionnement d'un SGBDR, voire d'une incompétence !

    la question est donc, comment et pourquoi en êtes vous arrivée là ?

    A +

  3. #3
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 388
    Points
    18 388
    Par défaut
    Sur des bases OLAP c'est assez courant de tuer toutes les sessions utilisateurs en début de soirée pour que les traitements de la nuit ne soient pas impactés par une requête consommatrice (si ce n'est foireuse) qui aurait pu être oubliée par quelqu'un.

    Ça garantit que la disponibilité des ressources.

  4. #4
    Membre à l'essai
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Août 2009
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur décisionnel

    Informations forums :
    Inscription : Août 2009
    Messages : 19
    Points : 16
    Points
    16
    Par défaut
    Citation Envoyé par SQLpro Voir le message
    Un KILL sur une session impose un ROLLBACK de la transaction. Cela signifie que tout le travail entamé doit être défait. Oracle va donc jouer le journal "à l'envers" (undo) pour replacer les "images avant" des données en mémoire.
    Ceci peut donc prendre du temps, d'autant plus de temps que vous avez beaucoup de données...

    Ceci dit, avoir un job qui "KILL" automatiquement des sessions, révèle généralement un grand désordre dans la conception de votre bases de données et de son implémentation... C'est généralement le signe d'une incompréhension du fonctionnement d'un SGBDR, voire d'une incompétence !

    la question est donc, comment et pourquoi en êtes vous arrivée là ?

    A +
    Salut,

    je voulais juste savoir s'il était possible de forcer le kill.

    ... grand désordre dans la conception ... incompréhension du fonctionnement d'un SGBDR ... incompétence ... c'est dur !!!

    pour en revenir aux sessions à killer, nous avons donc un serveur applicatif qui se connecte à notre BDD.
    Le fait est qu'il nous arrive de devoir killer des sessions (par exemple utilisateur qui ne quitte pas proprement l'appli ...)


    Nous sommes une équipe de 5 personnes, et on prend tout en charge (maintenance, projets, installation serveur, haute dispo, etc...).
    on fait donc en fonction de nos connaissances et/ou compétences, car on en a quand même

  5. #5
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 461
    Points : 8 079
    Points
    8 079
    Par défaut
    Pour essayer d'éviter les cas où une session d'un utilisateur qui ne s'est pas déconnecté proprement persiste en base, vous pouvez ajouter dans le sqlnet.ora du serveur le paramètre : SQLNET.EXPIRE_TIME=10, plus un petit redémarrage du listener.
    Ceci est censé tuer les sessions orphelines qui ne répondent plus depuis 10 minutes (mais ne résoudra probablement pas le cas des anciennes sessions déjà dans cet état).

    Il peut par ailleurs y avoir des circonstances particulières dans lesquelles effectivement des sessions en statut KILLED persistent anormalement pendant des heures, voire des jours.
    On doit alors les tuer explicitement au niveau de l'OS pour réussir à libérer les ressources.

    Sous Linux par exemple, il faut récupérer le SPID dans V$PROCESS et faire un kill -9 de ce processus.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT    p.program, p.spid, s.saddr, s.sid, s.serial#, s.username,    s.osuser, s.machine, s.program, s.logon_time, s.status 
    FROM v$session s, v$process p
    WHERE s.paddr = p.addr
    AND s.sid =&SID;

  6. #6
    Membre émérite
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    1 998
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 1 998
    Points : 2 501
    Points
    2 501
    Par défaut
    Citation Envoyé par maikeul;
    ... grand désordre dans la conception ... incompréhension du fonctionnement d'un SGBDR ... incompétence ... c'est dur !!!
    Laisse, il est toujours comme ça, certaines personnes ont un mauvais relationnel.
    En revanche ce que dit Pomalaix est plus intéressant :-)

  7. #7
    Membre actif

    Profil pro
    Administrateur de base de données
    Inscrit en
    Septembre 2008
    Messages
    169
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Septembre 2008
    Messages : 169
    Points : 267
    Points
    267
    Par défaut
    pour la defense le mikeul. Je pense aussi qu'il y a bien plus de gain a faire des application bien conçu qu'a tenter de recoller les morceaux a posteriori. Mais souvent dans notre métier nous subissons de mauvais choix en bout de chaine. Arrêter les applications avant de tenter de killer les sessions est un début. Mais il faudrait étudier chaque requete qui doit être killée car il faudrait les éviter en amon. Elle ont probablement consomées beaucoup de ressource tout au long de la journée.

Discussions similaires

  1. [EJB3] Stateless Bean session avec état ?
    Par Invité dans le forum Java EE
    Réponses: 4
    Dernier message: 08/11/2010, 21h42
  2. Réponses: 7
    Dernier message: 24/05/2009, 18h49
  3. [EJB2.1] comment deployer EJB session sans état
    Par Bba_M dans le forum Java EE
    Réponses: 5
    Dernier message: 06/11/2006, 20h28
  4. Réponses: 2
    Dernier message: 29/03/2006, 11h39
  5. Réponses: 3
    Dernier message: 09/02/2006, 12h26

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