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 :

Vider la table TEMP


Sujet :

Administration Oracle

  1. #1
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    624
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 624
    Points : 69
    Points
    69
    Par défaut Vider la table TEMP
    Bonjour,


    j'ai lancé une proc sur ma base de données et celle-ci dure de plus en plus longtemps.

    Je me suis aperçu que la table TEMP (temp01.dbf) était à 99%, comment puis je faire pour la vider et permettre de libérer de l'espace afin que ma requête s'exécute plus rapidement.

    Merci

  2. #2
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et applicatif
    Inscrit en
    Novembre 2004
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et applicatif
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2004
    Messages : 27
    Points : 21
    Points
    21
    Par défaut
    Tu as lancé une requête qui prend du temps c'est ça ?

    Et si tu rajoutes des dbf à ton tablespace ?

  3. #3
    Membre confirmé
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2007
    Messages
    419
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

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

    Informations forums :
    Inscription : Novembre 2007
    Messages : 419
    Points : 616
    Points
    616
    Par défaut
    bonsoir,

    il faut reprendre les bases. quand on parle de .dbf, on parle donc d'un espace physique, un datafile, ou un tempfile dans ce cas plus probablement.
    voici quelques pistes :
    - le tablespace temporaire contient des objets... temporaires. plus ou moins temporaires : le résultat de tris qui ne tiennent pas en pga mais il peut aussi contenir des tables temporaires, des lobs temporaires, des curseurs ouverts... s'il n'y a pas d'ora 1652 dans l'alert.log, c'est qu'il est encore assez grand pour contenir ce qu'on lui demande. rajouter de l'espace ne réduira pas le temps d'exécution mais permettra à la requête d'aboutir si elle manque d'espace
    - c'est mieux de trier en mémoire (pga) plutôt que sur disque (tempfiles)
    -on ne vide pas un tempfile comme on vide une poubelle. si vous supprimez ce qu'oracle a fait pour votre requête, elle n'aboutira jamais. regardez ce que contient ce tempfile (v$sort_usage, joint avec v$session); vous constaterez peut-être que d'autres utilisateurs utilisent ce fichier en même temps que votre requête problématique.
    - si une requête prend trop de temps, c'est le premier réflexe à avoir, il faut la revoir, examiner son plan d'exécution, voir s'il a changé, arranger la requête elle même éventuellement, les chemins d'accès, vérifier l'exactitude des statistiques sur les tables et index. il y a sûrement une jointure très gourmande qui consomme des ressources.

    merci de nous donner plus de matière.
    une bonne habitude à prendre quand on poste un problème : version Oracle, requête, plan d'exécution, traces...
    bonne soirée

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 149
    Points : 52
    Points
    52
    Par défaut
    Bonjour ,
    J'en profite du sujet pour poser une question
    En effet je ne comprends pas pourquoi oracle dans certains cas le tablespace TEMP est rempli à 100% et la requête continue à tourner quand même(avec probablement une régression ...)
    Et parfois c'est une erreur ORA- qui se déclenche car le TEMP a explosé ?
    Pourquoi ce comportement différent ? Cela dépend de quoi au juste ?
    Merci pour vos explications.

  5. #5
    Membre confirmé
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2007
    Messages
    419
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

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

    Informations forums :
    Inscription : Novembre 2007
    Messages : 419
    Points : 616
    Points
    616
    Par défaut
    bonsoir,

    la requête qui tombe en ora-1652 est celle qui a besoin de plus d'espace que l'espace libre dans le TEMP. ce n'est pas forcément la plus consommatrice de toutes. une autre requête peut tourner depuis un moment, sans rencontrer l'ora-1652, car elle a utilisé tout l'espace de tri qui lui était nécessaire, mais s'il ne reste pas assez d'espace pour la requête 2, cette dernière tombe en erreur.
    le temp (de type temporaire) peut paraître full... car il ne se vide qu'au shutdown. la vue v$sort_segment montre le nombre de blocs total qui est la somme des blocs utilisés et des blocs libres. pendant le tri les blocs sont alloués puis sont marqués comme free, rendus au sort extent pool, quand ils ne sont plus nécessaires et ils peuvent alors être utilisés par un autre process.

    vous trouverez facilement des requêtes pour trouver quel est l'espace réellement disponible dans le temp et quelle query (et quelle session) utilise ce tablespace.

Discussions similaires

  1. cherche a vider plusieurs tables en meme temps?
    Par nenekes dans le forum Langage SQL
    Réponses: 10
    Dernier message: 01/02/2007, 18h58
  2. Vider une table MySQL suite à javascript:confirm()
    Par anutka dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 16/09/2005, 12h16
  3. comment vider une table de tous ses enregistrements ?
    Par bertrand_declerck dans le forum Bases de données
    Réponses: 3
    Dernier message: 29/07/2005, 10h19
  4. Vider une table a une fermeture subite
    Par mimosa7 dans le forum Access
    Réponses: 6
    Dernier message: 15/06/2005, 17h13
  5. comment vider mes tables a la fin
    Par djouahra.karim1 dans le forum Bases de données
    Réponses: 9
    Dernier message: 14/05/2005, 11h33

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