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

Oracle Discussion :

[8.1.7.4] unable to allocate an extent in TEMP


Sujet :

Oracle

  1. #1
    Membre actif
    Inscrit en
    Décembre 2002
    Messages
    438
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 438
    Points : 218
    Points
    218
    Par défaut [8.1.7.4] unable to allocate an extent in TEMP
    Bonjour,

    Comme le titre l'indique, j'ai des problèmes de temporaire.

    Dans quel cas le temp est-il utilisé (sort, hash join...) ?
    Existe-t-il un moyen de connaitre les requêtes bouffeuses de temp ?
    Existe-t-il un moyen de connaître le temp consommé par une requête ?

    Merci par avance pour vos réponses,

  2. #2
    Membre averti Avatar de Wurlitzer
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    469
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 469
    Points : 408
    Points
    408
    Par défaut
    J'ai cette requete qui donne l'utilisation du TEMP a un instant donnée. Par contre je n'ai rien qui me permette de logguer l'utilisation du TEMP au cours de la journée. Si quelqu'un a ca, je suis preneur...

    A executer par l'utilisateur SYS
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    SELECT username username, SID SID, ktssoses session_addr,
           ktssosno session_num, prev_sql_addr sqladdr, prev_hash_value sqlhash,
           ktssotsn TABLESPACE,
           DECODE (ktssocnt, 0, 'PERMANENT', 1, 'TEMPORARY') CONTENTS,
           DECODE (ktssosegt,
                   1, 'SORT',
                   2, 'HASH',
                   3, 'DATA',
                   4, 'INDEX',
                   5, 'LOB_DATA',
                   6, 'LOB_INDEX',
                   'UNDEFINED'
                  ) segtype,
           ktssofno segfile#, ktssobno segblk#, ktssoexts extents,
           ktssoblks blocks, ktssorfno segrfno#
      FROM x$ktsso, v$session
     WHERE ktssoses = v$session.saddr
       AND ktssosno = v$session.serial#
       AND x$ktsso.inst_id = SYS_CONTEXT ('userenv', 'instance')

  3. #3
    Membre actif
    Inscrit en
    Décembre 2002
    Messages
    438
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 438
    Points : 218
    Points
    218
    Par défaut
    Merci Wurlitzer mais j'avais déjà ce type de requête.

    Malheuresement elle ne permet pas de voir le temp consommé après l'execution de la requête.

  4. #4
    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
    En 8.1.7, il a y moyen d'écrire un trigger servererror qui permet de savoir quelle est la requête qui a eu l'erreur (même si ce n'est pas forcément le "coupable" car il peut y avoir plusieurs requêtes concurrentes qui utilisent beaucoup d'espace temporaire):http://asktom.oracle.com/pls/asktom/f?p=100:11:0:::11_QUESTION_ID:374218170986#6821401045030

  5. #5
    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
    La vue V$SORT_USAGE devrait permettre de retrouver le code SQL lié à l'espace temporaire utilisé avec une requête du type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select sql_text, blocks 
    from v$sort_usage, v$sqlarea 
    where sqladdr= address;

    Mais les résultats ne sont pas fiables: la note Metalink 67534.1 dit que "ces colonnes (SQLADDR, HASH_VALUE) peuvent être incorrectes et qu'il ne faut pas s'appuyer dessus".

  6. #6
    Membre actif
    Inscrit en
    Décembre 2002
    Messages
    438
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 438
    Points : 218
    Points
    218
    Par défaut
    Merci pifor.

    En effet le SQLText ne correspond à rien. Même après avoir réexecuter la requête.

Discussions similaires

  1. Unable to allocate sufficient memory.
    Par azerty111 dans le forum Macro
    Réponses: 1
    Dernier message: 28/12/2009, 13h55
  2. [MySQL] Unable to allocate ?
    Par wehtam dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 07/06/2007, 18h02
  3. Tablespace et allocation d'extent
    Par Doctor Z dans le forum Oracle
    Réponses: 7
    Dernier message: 09/11/2004, 10h58
  4. unable to create INITIAL extent for segment in tablespace
    Par Ludolitaliano dans le forum Administration
    Réponses: 4
    Dernier message: 11/09/2003, 17h43

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