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

PL/SQL Oracle Discussion :

Procédure en cours d'éxécution depuis plus de 4 jours


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2018
    Messages
    481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2018
    Messages : 481
    Par défaut Procédure en cours d'éxécution depuis plus de 4 jours
    Bonjour à tous,

    j'ai un job qui est en train de s’exécuter depuis 4 jours,

    sachant que ce denier contient une procédure qui fait appelle à d'autres procédures et fonctions
    j'ai ce code dans toutes les procédures et fonctions

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    EXCEPTION WHEN OTHERS THEN
         code_erreur := SQLCODE;
         msg_erreur   := substr(SQLERRM(SQLCODE),1,100);
         INSERT INTO ERROSQL(nomtable,codeerreur,erreur,date_erreur) VALUES ($$PLSQL_UNIT,code_erreur,msg_erreur,sysdate);
         COMMIT;
    mais il y a aucune erreur a signaler jusqu'à présent

    aussi j'ai vérifier les locked object il n y a rien aussi !!

    je vous prie de m'orienter quand à la détection de cette anomalie

    merci à vous

  2. #2
    Membre très actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2018
    Messages
    481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2018
    Messages : 481
    Par défaut
    comment on peut arrêter une procédure en cours d’exécution ?

  3. #3
    Membre très actif
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2014
    Messages
    261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Août 2014
    Messages : 261
    Par défaut
    Bonjour,

    Je vous invite tout d'abord à identifier le SID de la session faisant tourner votre procédure stockée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    select S.USERNAME, s.sid, s.osuser, t.sql_id, sql_text
    from v$sqltext_with_newlines t,V$SESSION s
    where t.address =s.sql_address
    and t.hash_value = s.sql_hash_value
    and s.status = 'ACTIVE'
    and s.username <> 'SYSTEM'
    order by s.sid,t.piece
    ;
    Ensuite retrouver le SERIAL# liè à votre SID :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    select *
    from v$session
    where sid = {Votre SID de session longue};
    Puis killez votre session :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER SYSTEM KILL SESSION 'SID,#SERIAL';
    Si vous êtes dans l'urgence, y a pas 30 000 solutions malheureusement

    Pour le problème d'origine, voir pourquoi cela met autant de temps, il nous faudrait peut-être le code de votre SP (pensez à anonymiser si besoin)

    Bisous bisous

  4. #4
    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
    Par défaut
    En passant, il faut se méfier du critère V$SESSION.STATUS='ACTIVE'

    ACTIVE signifie que la session est actuellement en train de consommer du CPU sur le serveur Oracle.
    Or une session "en train de travailler" au sens fonctionnel de la chose n'est pas forcément, à cet instant précis, en train de consommer du CPU.
    Le statut d'une session peut passer de ACTIVE à INACTIVE d'une milliseconde à l'autre durant l'exécution d'une instruction, et il faut donc tomber au bon moment.
    Donc soit il faut éviter ce critère, soit répéter plusieurs fois la requête dans V$SESSION pour plus de certitude.

    (J'en ai peut-être déjà parlé ici : si on fait par exemple un simple SELECT * sur une grosse table, qui dure plusieurs secondes, on va constater que le statut de la session est INACTIVE 95% du temps, car elle passe son temps essentiellement en échanges sur le réseau, ce qui n'est pas considéré comme ACTIVE).

    En revanche, si V$SESSION.SQL_ADDRESS est non nul, cela indique plus fiablement que la session est en train de faire quelque chose, même hors CPU.

Discussions similaires

  1. GitHub victime d’une attaque DDoS depuis plus de 5 jours
    Par Amine Horseman dans le forum Sécurité
    Réponses: 2
    Dernier message: 04/04/2015, 23h47
  2. Réponses: 7
    Dernier message: 27/08/2008, 11h53
  3. Rafraichir une Frame en cours d'éxécution
    Par Tandric dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 25/03/2006, 06h51
  4. Tester si une procedure est en cours d'éxécution
    Par tipiweb dans le forum Langage
    Réponses: 3
    Dernier message: 27/07/2005, 14h34
  5. [Systeme] Processus en cours d'éxécution
    Par adiGuba dans le forum POSIX
    Réponses: 13
    Dernier message: 16/02/2003, 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