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 :

tablespace TEMP enorme 33 Go et plein a 100%


Sujet :

Administration Oracle

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    461
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 461
    Points : 283
    Points
    283
    Par défaut tablespace TEMP enorme 33 Go et plein a 100%
    Bonjour,
    J'ai une base en production avec un tablespace TEMP de type temporary gere localement enorme : 33 Go et plein a 100%. L'instance fait 55 Go. Cela me parait anormale. Lorsque je cherche a connaitre les utilisateurs qui utilisent ce tablespace, il y en a peu et ils n'utilisent geeralement qu'environ 15000 blocs. Quelqu'un a t'il deja rencontre ce probleme.
    Merci d'avance.

  2. #2
    En attente de confirmation mail
    Inscrit en
    Octobre 2006
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Est-ce que tu parles du fichier TEMP01.dbf ?
    Parce que si c'est le cas, je peux peut-être t'aider puisque nous rencontrons assez souvent ce problème au boulot. Ce qu'on fait, c'est qu'on supprime puis recrée simplement ce fichier de la manière suivante:
    - se connecter sous SQL*Plus en tant que "sys";
    - exécuter : ALTER DATABASE TEMPFILE '[chemin du fichier]\TEMP01.dbf' DROP INCLUDING DATAFILES;
    - exécuter : ALTER TABLESPACE TEMP ADD TEMPFILE '[chemin du fichier]\TEM01.dbf' SIZE 2000M REUSE AUTOEXTEND ON;

    Bon, ce n'est pas top puisque le problème fini par revenir quelques mois après. De plus, parfois ces 2 requêtes SQL ne sont pas suffisantes et nous sommes contraints de réinstaller la base entièrement...

    Si quelqu'un a une autre idée je suis preneuse...

  3. #3
    Membre expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Points : 3 199
    Points
    3 199
    Par défaut
    vous au moins, vous ne vous embêtez pas !!!!

    1. Savoir qui et pourquoi consomme du temp
    2. vérifier s'il n'y a pas des distinct utilsés à tort et à travers
    3. Si besoin, créer plusieurs temp pour identifier + finement les consommateurs

  4. #4
    Membre habitué
    Inscrit en
    Septembre 2006
    Messages
    142
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 142
    Points : 170
    Points
    170
    Par défaut
    Le tablespace temp est utilisé pour stocké les tri qui ne peuvent pas être complètement résaliser un mémoire, les données des tables temporay.

    L'espace du tablespace temp est marqué comme utilisé dans DBA Studio si à un moment il a été utilisé. Cela veux dire que l'instruction qui a utilisé le tablespace temp n'est plus forcement activite même si le tablespace est marqué comm occupé.

    Le problème est qu'il y a probable un requête qui consomme de manière abusive de l'espace temporaire.
    DBA ORACLE

  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 peut permettre de retrouver les requêtes qui utilisent l'espace temporaire. voir http://www.developpez.net/forums/sho...v%24sort_usage

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    461
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 461
    Points : 283
    Points
    283
    Par défaut tablespace TEMP enorme 33 Go et plein a 100% Répondre à la discussion
    Bonjour et merci de vos réponses.
    Lorsque je lance la requete donnee par Aline, je trouve soit aucun utilisateur, soit un utilisateur ayant pour la champ SPACE la valeur 29360128. Je suppose qu'il s'agit de blocks (8Ko surr le TBS). Mais ce qui est currieux, c'est que même lorsque je ne trouve aucun utilisateur avec la requete, je vois le TBS à 100% sur la console d'Entreprise Manager dans la section STOCKAGE -> ESPACES DISQUE LOGIQUE.
    Quelqu'un peu t'il m'expliquer la raison.

    Merci d'avance.

  7. #7
    Membre expert
    Avatar de bouyao
    Inscrit en
    Janvier 2005
    Messages
    1 778
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 778
    Points : 3 033
    Points
    3 033
    Par défaut
    Ce que je pense moi c'est que tu kill beaucoup les sessions

  8. #8
    Membre expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Points : 3 199
    Points
    3 199
    Par défaut
    Les blocks temp ne sont jamais désalloués même s'ils ne sont plus utilisés.
    Il n'y a qu'un stop/start de la base pour désallouer le temp.

  9. #9
    Rédacteur

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 320
    Points : 3 798
    Points
    3 798
    Par défaut
    il existe d'autres solution qui consiste à modifier les paramétres de storage , mais je ne sais pas si cela marche avec les Tempfiles ..

  10. #10
    Membre confirmé

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 487
    Points : 455
    Points
    455
    Par défaut
    Citation Envoyé par tibal
    Bonjour et merci de vos réponses.
    Lorsque je lance la requete donnee par Aline, je trouve soit aucun utilisateur, soit un utilisateur ayant pour la champ SPACE la valeur 29360128. Je suppose qu'il s'agit de blocks (8Ko surr le TBS). Mais ce qui est currieux, c'est que même lorsque je ne trouve aucun utilisateur avec la requete, je vois le TBS à 100% sur la console d'Entreprise Manager dans la section STOCKAGE -> ESPACES DISQUE LOGIQUE.
    Quelqu'un peu t'il m'expliquer la raison.

    Merci d'avance.

    Bon alors, on reprend tout au début.
    Ce que ma requête t'indique, n'a rien à voir avec la taille d'un bloc, on ne s'en préoccupe pas ici, mais au nombre d'extents aloué (et donc à l'espace utilisé).
    Pour savoir comment fonctionne ton tablespace:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    select tablespace_name, initial_extent,next_extent, allocation_type
    from DBA_Tablespaces 
    where tablespace_name='TEMP'
    J'immagine que tu as des valeurs par défaut, dans ce cas, tu as une allocation uniforme de blocs de 1M0 (1048576).

    Dans la requête que tu utilises, tu utilises donc 28Mo (ou 28 extents dans la plupart des cas).

    Le tablespace pour les tris doit être autoextensible jusqu'à 33 Go.

    donc tu dois trouver la session qui fait des tris de 33 Go et la tunner.
    Maintenant, en attendant, la seule solution est de créer un deuxième tablespace pour les tris et de dropper le premier (quand personne ne l'utilise évidément!).

  11. #11
    Membre expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Points : 3 199
    Points
    3 199
    Par défaut
    Citation Envoyé par aline
    donc tu dois trouver la session qui fait des tris de 33 Go et la tunner.
    Maintenant, en attendant, la seule solution est de créer un deuxième tablespace pour les tris et de dropper le premier (quand personne ne l'utilise évidément!).
    ou les 2 sessions concurrentes qui font 16.5 Go de tris
    ou les 4 sessions concurrentes qui font 8.25 Go de tris
    mais de toute façon, avec de tels volumes de tris, il faudrait être aveugle pour ne pas les voir !

    Sinon, pour isoler les schémas, créez 3~4 tablespaces TEMP et affectez-les à certains users afin de savoir déjà quels sont les comptes qui bouffent autant de temp (et si vous devez le dropper/recreer, l'impact sera moindre puisque seulement le 1/4 des utilisateurs sera impacté)

    [edit]
    une éventualité non négligeable est qu'un jour, un utilisateur a loupé sa requête et à necessité 33 Go mais depuis, il a corrigé le pbe et il n'y a plus besoin que de 28 Mo de temp !
    [/edit]

  12. #12
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    Ou la table triée à des NEXT très gros et ça surconsomme le TEMP pour rien

  13. #13
    Membre expert
    Avatar de bouyao
    Inscrit en
    Janvier 2005
    Messages
    1 778
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 778
    Points : 3 033
    Points
    3 033
    Par défaut
    Et le version Oracle ? ca nous aident a expliquer ton problème.

    Il y a des tablespace temporaire gérés dans le dictionnaire et d'autres non.

    des fois le temps de démarrage de la base est très long ( ca peut être 1h ou plus) car le process SMON essaye de vider la tablespace temporaire.

    ce temps est caluclé suivant la somme des extents et la taille du db_buffer.

    Il y a une astuce pour accelerer le demarrage de la base, il suffit de diminuer la taille de db_buffer dans le init.ora et de redemarrer la base.

    Par contre dans les nouvelles versions ce n'est pas pareil.

    Comme ta tablespace temporaire n'a pas été vidé, ca veut dire que le smon ne fait pas son travail chaque 2 heure. Dans certains versions ca vient d'un bug.
    dans les autres c'est souvent le fait d'interrompre les sessions qui font des tris, ce qui donne beaucoup de travail a SMON.

    des fois ca vient des verrous (enqueue). Car un enqueue TS (temporary segment) est acquis à chaque fois le SMON trouve un segmentà supprimer.

    Pour identifier si SMON est entrains de nettoyer, il faut vérifier le nombre de segments temporaire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select count(*) from db_extents where segment_type = 'TEMPORARY';
    si ce nombre s'accroit constamment, signifie que ce processes est entrain de mourir avant de nettoyer le segment temporaire.

    SMON crée un curseur pour trouver les segments temporaires à nettoyer, la requête est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select file#, block#, ts# from seg# where type#=3;
    A chaque candidat, une verification est effectué pour voir si le deteneur du segement temporaire est en vie. Sinon, l'enqueue TS est acqui et le segment est supprimé.

    il y'a une technique pour reveiller le smon. (c'es a vous de chercher).

  14. #14
    Membre expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Points : 3 199
    Points
    3 199
    Par défaut
    Comme ça ne s'invente pas et que ça ne doit pas être super documenté...
    A faire sous SQL*Plus

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        SELECT pid FROM v$process
        WHERE addr = 
        (
            SELECT paddr FROM v$bgprocess
            WHERE name = 'SMON'
        );
     
     
        ORADEBUG WAKEUP 6


    mais quand j'en ai eu besoin, smon dormait trop profondément ou quoi, il n'a jamais daigné se réveiller ! :S

  15. #15
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    6 c'est le PID résultant de la requête ?

    j'ai jamais eu à réveiller le SMON moi... il doit être suffisamment occupé pour pas s'endormir

  16. #16
    Membre expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Points : 3 199
    Points
    3 199
    Par défaut
    Citation Envoyé par Fred_D
    6 c'est le PID résultant de la requête ?
    oui !

    En général : 6 => 8i, 7 => 9i et 8 => 10g

  17. #17
    Membre confirmé

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 487
    Points : 455
    Points
    455
    Par défaut
    excellent!


    J'adore de plus en plus ce forum

  18. #18
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    c'est sûr que c'est plus sympa qu'auféminin.com

    Merci Leo

  19. #19
    Membre actif
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    461
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 461
    Points : 283
    Points
    283
    Par défaut tablespace TEMP enorme 33 Go et plein a 100% Répondre à la discussion
    Bonjour,
    Je n'ai pas trouvé l'utilisateur qui a fait grossir le tablespace temporaire (Oracle 9.2.0.7). Je sais que de gros traitement tournent qui doivent générer de gros tris. Ils doivent être à l'origine de la grande taille du TBS. Nous allons donc le supprimer puis le récreer.
    Merci de votre aide.

  20. #20
    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
    Une petite question en passant ou plutot une confirmation.

    Je suis en Oracle 9.2 quand je fais un backup (hot en l'ocurence mais je pense qu'en cold ca doit etre la meme chose).

    J'ai besoin de sauvegarder uniquement les datafiles ? Les temp files je ne suis pas obligé de les sauvegarder car je pourrais les recréer au moment de la restauration.

    En attendant que je fasse un test pour me rassurer. Pouvez vous me confirmer si c'est bien ca ?


    Merci,

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 4
    Dernier message: 21/05/2007, 15h51
  2. Vider la TABLESPACE TEMP 9.2
    Par charles_mourot dans le forum Oracle
    Réponses: 2
    Dernier message: 31/01/2007, 15h05
  3. tablespace temp full
    Par otaquet dans le forum Oracle
    Réponses: 4
    Dernier message: 20/12/2005, 06h19
  4. Tablespace TEMP : croissance éxagérée
    Par vanderbes dans le forum Oracle
    Réponses: 5
    Dernier message: 10/12/2005, 09h36
  5. [9i] Utilisation du tablespace TEMP
    Par Fabien Celaia dans le forum Oracle
    Réponses: 3
    Dernier message: 14/02/2005, 18h32

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