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 :

récupérer la requête qui a planté


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    81
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 81
    Par défaut récupérer la requête qui a planté
    Bonjour,

    j'aurais aimé savoir s'il était possible de récupérer les requêtes sql qui plantent.
    Je m'explique : nous avons une application qui se connecte à une base en 10G. Celle-ci envoie des requêtes sql et de temps en temps nous remontent des erreurs de type ora-1652 : unable to extend temp segment by 128 in tablespace TEMP. Pour connaitre la raison de cette erreur, j'aurais aimé retrouver la requête qui a généré cette erreur afin de l'étudier. Seulement je ne sais pas trop où chercher dans la base ou dans les logs oracle. Y aurait-il donc une possibilité de retrouver ces requêtes, via des procédures oracle ou autre chose ?

    J'espère avoir été clair quand à ma demande et j'espère que vous pourrez m'aider. Merci d'avance.

  2. #2
    Membre Expert Avatar de fatsora
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 103
    Par défaut
    Bonjour,

    Quelle est la taille du tablespace temporaire ?
    (Peut etre a augmenter )

    Ne pas négliger de voir les statistiques de PGA_AGGREGAT_TARGET
    avec la vue V$PGA_TARGET_ADVICE

    Une vue qui peut etre utile est v$TEMPSEG_USAGE permet de voir les requetes :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    select u.username, s.sql_text, u.extents, u.blocks
    from v$tempseg_usage u, v$sql s
    where s.address = u.sqladdr
    and s.hash_value = u.sqlhash;


    Sinon le fichier alert.log aussi est utile pour ca

    Un dernier élément est peut etre l'activation de trace ....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ALTER SYSTEM SET EVENTS '1652 trace name ERRORSTACK level 3';
    Quand c'est fini

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER system SET events '1652 trace name errorstack off ';

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    81
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 81
    Par défaut
    Alors déjà merci pour ta réponse rapide.
    en ce qui concerne le fichier alert.log, il n'a rien dedans à part l'erreur d'ORA-1652.

    Ensuite, je connaissais l'activation des traces mais je l'utiliserais seulement en dernier recours, vu que ce sont des erreurs que très peu souvent.

    La taille du tablespace est d'environ 8G. Donc certes il serait peut-être intéressant de l'augmenter, mais bon déjà il me semble bien imposant .. ^^

    Enfin, je ne connaissais pas les vues que tu as mentionné (V$PGA_TARGET_ADVICE, v$TEMPSEG_USAGE). Je vais les tester et voir ce que je pourrais en tirer. Je te tiendrais au courant pour cela.

    En tout cas encore merci.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    81
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 81
    Par défaut
    Re,
    alors en fait ce que j'aimerais exactement c'est retrouver une requête qui aurait pu être effectué dans un temps passé, par exemple ce matin entre 10h et 12h00.
    Est-il possible de trouver cela au sein de la base oracle, via une vue, une procédure à exécuté ou encore une fonction ?

  5. #5
    Expert confirmé
    Avatar de pachot
    Homme Profil pro
    Developer Advocate YugabyteDB
    Inscrit en
    Novembre 2007
    Messages
    1 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Developer Advocate YugabyteDB
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 822
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Une autre idée: utiliser les Resumable Space Allocation
    ALTER SESSION ENABLE RESUMABLE TIMEOUT 30;
    qui suspend la requête en question pendant 30 secondes, et un trigger 'AFTER SUSPEND'
    qui récupèrerait les infos nécessaires (à partir de V$RESUMABLE, V$SESSION, V$SQL, ...)

    cf: http://www.oracle-base.com/articles/...Allocation.php

    Cordialement,
    Franck.

  6. #6
    Membre Expert Avatar de fatsora
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 103
    Par défaut
    Citation Envoyé par panach91 Voir le message
    Re,
    alors en fait ce que j'aimerais exactement c'est retrouver une requête qui aurait pu être effectué dans un temps passé, par exemple ce matin entre 10h et 12h00.
    Est-il possible de trouver cela au sein de la base oracle, via une vue, une procédure à exécuté ou encore une fonction ?

    Peut etre AWR pour retourner en arriere les vues V$ ne permettent pas ce genre de requetes que tu cherches parce que si quelqu'un a lancé ces requetes lourdes apres 12h c'est plus visible...

    de plus ces requetes peuvent bien sortir du SHARED_POOL

    http://download.oracle.com/docs/cd/B...t.htm#BABDHAGF

Discussions similaires

  1. Réponses: 2
    Dernier message: 12/01/2011, 14h17
  2. Une requête qui se plante
    Par witch dans le forum Langage SQL
    Réponses: 6
    Dernier message: 24/07/2009, 09h31
  3. Récupérer les requêtes qui passent par ODBC
    Par Danger dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 13/07/2009, 14h13
  4. SimpleDataSet avec requête qui plante
    Par blond1888 dans le forum Bases de données
    Réponses: 4
    Dernier message: 09/02/2007, 16h22
  5. Réponses: 11
    Dernier message: 30/10/2006, 16h59

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