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 :

[oracle9i-Linux] Comment vider un UNDO tablespace


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 33
    Par défaut [oracle9i-Linux] Comment vider un UNDO tablespace
    Bonjour à tous,
    J'ai un UNDO tablespace qui a atteint les 6 gigas.
    Comment faire pour en vider le contenu afin de libérer de la place sur le serveur ?
    Je pensais (à tord visiblement) qu'en arrêtant et redémarrant la base cela se ferait tout seul ....
    Merci à vous de me répondre[/b]

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    il faut le recréer :/ (créer un nouveau, changer le paramétre undo_tablespace, redémarrer la base et droper le gros undo)

    Mais réduire la taille du UNDO ne t'aidera probablement pas de toute façon, si il a atteint cette taille c'est que celle-ci est nécessaire et il l'atteindra donc à nouveau

  3. #3
    Rédacteur

    Inscrit en
    Septembre 2004
    Messages
    626
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 626
    Par défaut
    Je suis d'accord avec Orafrance sur le principe mais je ne crois pas qu'il soit nécessaire de rédémarrer la base.


    Cf. http://asktom.oracle.com/pls/ask/f?p...16201745120691


    Laly.
    In the heart of the truly greats, perfection is never achieved but endlessly pursued.

    Mon article sur les fonctions analytiques d'Oracle (calcul de moyennes mobiles, de quartiles et bien d'autres...)

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    exact sauf que les manipulations sur le UNDO sont assez... sensibles

    http://www.developpez.net/forums/viewtopic.php?t=274005

  5. #5
    Rédacteur

    Inscrit en
    Septembre 2004
    Messages
    626
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 626
    Par défaut
    OK merci pour la précision Orafrance.


    Laly.
    In the heart of the truly greats, perfection is never achieved but endlessly pursued.

    Mon article sur les fonctions analytiques d'Oracle (calcul de moyennes mobiles, de quartiles et bien d'autres...)

  6. #6
    Membre éclairé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2004
    Messages
    319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 319
    Par défaut
    Pour info, il existe un bug sur le tablespace undo à partir de la version 9.2.0.2. Bug n°2660394 corrigé avec la version 9.2.0.5 voir note dans metalink n°271119.1
    pour ceux qui n'aurait pas acces à Metalink:

    The information in this article applies to:
    Oracle Server - Enterprise Edition - Version: 9.2.0.2
    This problem can occur on any platform.

    Symptoms
    Undo tablespace continues to increase in size.
    Cause
    + The undo tablespace has Autoextend On specified.

    + The Logic used by AUM is :

    1) A new extent will be allocated from the undo tablespace.
    2) If failed, try stealing an expired extent from another undo segment. This
    involves shrinking from the other segment and adding to the current undo
    segment.
    3) If failed, try reuse an unexpired extent from the current undo segment.
    4) If failed, try stealing an unexpired extent from another undo segment.
    5) If all failed, report an "Out-Of-Space" error.

    + Current AUM segment extend algorithm will grow the segment before trying to
    reuse expired extents of other segments. If it is an extensible undo tablespace,
    the tablespace may continue to grow.

    + Though Ideally it should, perform auto extension of the undo tablespace only
    after the stealing of expired extents but before stealing unexpired extents.

    + This problem is documented in Bug 2660394 which is fixed in 9.2.0.5

    Fix
    + Use the following query to find if EXPIRED EXTENTS of other segments are used or not:

    select sum(EXPSTEALCNT), sum(EXPBLKRELCNT), sum(EXPBLKREUCNT) from v$undostat;

    A output of '0' for sum(EXPBLKREUCNT) confirms that expired extents of other segments are not used

    + Use following query to find out the HWM of all the undo segments:

    select n.name,extents,rssize/(1024*1024) rssize_MB,
    hwmsize/(1024*1024) hwmsize_MB
    from v$rollstat s,v$rollname n
    where s.usn = n.usn
    /

    + You have 2 options to workaround / solve this problem:

    1st ---> To workaround it

    - Stop the autoextend on the tablespace

    2nd ---> Apply the patchset 9.2.0.5.0 for a permanent solution.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 33
    Par défaut
    Voici la bonne nouvelle :
    J'ai réussi à vider mon undo tablespace en lançant le script suivant, qui fonctionne très bien (je l'ai fait sur 3 serveurs différents et le résultat est OK) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    CREATE UNDO TABLESPACE UNDOTBS2 DATAFILE ‘/vol1/oracle/oradata/oracle1/undotbs02.dbf’ SIZE 50 M AUTOEXTEND OFF ;
    ALTER SYSTEM SET undo_tablespace = UNDOTBS2 ; 
    DROP TABLESPACE undotbs1 INCLUDING CONTENTS AND DATAFILES ;
    CREATE UNDO TABLESPACE UNDOTBS1 DATAFILE ‘/vol1/oracle/oradata/oracle1/undotbs01.dbf’ SIZE 500 M AUTOEXTEND ON NEXT 5 M ;
    ALTER SYSTEM SET undo_tablespace = UNDOTBS1 ; 
    DROP TABLESPACE undotbs2 INCLUDING CONTENTS AND DATAFILES ;
    Pour info, il n'est pas necessaire de faire un stop et start de la base, tout du moins si on execute scupuleusement les lignes de commandes que j'indique.

    Encore merci de votre aide ....

  8. #8
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Argentine

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 173
    Par défaut
    salut, je suis tombé sur ce post par une recherche google, et cela a résolu mon problème.

    Je me permets d'ajouter un truc, certes relevant ridiculement du détail, mais si vous avez ouvert OEM et ouvert la fenêtre du UNDOTBS01, celle où on peut changer autoextend, et bien la requête ne supprime que le tablespace pas le datafile (probablement dû au lock du fichier)

    Donc le reste de la requête plante, il faut débloquer le fichier et le supprimer à la main puis lancer le reste du cmd.

    a+

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 198
    Par défaut
    Bonjour,

    la permutation du script avec ALTER system pour changer l'undo_tablespace :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    undo_tablespace = UNDOTBS2
    puis revenir à l'ancien nom de fichier

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    undo_tablespace = UNDOTBS1
    je ne vois pas ce que ca apporte ?

    est ce vraiement important de revenir au nom de fichier original ??

    merci d'avance

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 05/05/2009, 10h20
  2. [vb.net] Comment vider un buffer ?
    Par mdc dans le forum Windows Forms
    Réponses: 4
    Dernier message: 16/12/2003, 15h43
  3. comment vider un schema
    Par otb82 dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 20/10/2003, 13h36
  4. comment vider une chaine de caractère
    Par gaut dans le forum C
    Réponses: 13
    Dernier message: 12/09/2003, 11h30
  5. Comment vider un dossier ?
    Par Zinoc dans le forum C++Builder
    Réponses: 3
    Dernier message: 25/06/2002, 14h14

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