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 :

L'undo tablespace reste à 99% d'occupation


Sujet :

Oracle

  1. #1
    Membre du Club
    Inscrit en
    Janvier 2007
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 127
    Points : 49
    Points
    49
    Par défaut L'undo tablespace reste à 99% d'occupation
    Bonjour,
    En oracle 9.2.0.5 sur AIX 5.3, nous avons une instance dont l'undo rétention est de 900 s., et systématiquement au moindre traitement il arrive à 99% de remplissage , on a beau agrandir l'espace disque, il réutilise la totalité.
    Avez vous une explication qui me permettrait de comprendre pourquoi il ne "shrink" pas.

    Merci

  2. #2
    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
    est-ce qu'il est en autoextend ? Quel est la taille du INITIAL ? Comment vérifies tu le remplissage ? Est-ce que tu as des erreurs de UNDO trop petit ? Quelle est sa taille ?

  3. #3
    Membre du Club
    Inscrit en
    Janvier 2007
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 127
    Points : 49
    Points
    49
    Par défaut
    Oui il est en autoextend, l'initial fait 65536k, le control d'espace se fait par une requete recoupant dba_free_space et dba_datafiles comme suit
    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 nvl(b.tablespace_name,                        
                 nvl(a.tablespace_name,'UNKOWN')) name,  
           kbytes_alloc kbytes,                          
           kbytes_alloc-nvl(kbytes_free,0) used,         
           nvl(kbytes_free,0) free,                      
           ((kbytes_alloc-nvl(kbytes_free,0))/           
                              kbytes_alloc)*100 pct_used,
           nvl(largest,0) largest                        
    from ( select sum(bytes)/1024 Kbytes_free,           
                  max(bytes)/1024 largest,               
                  tablespace_name                        
           from  sys.dba_free_space                      
           group by tablespace_name ) a,                 
         ( select sum(bytes)/1024 Kbytes_alloc,          
                  tablespace_name                        
           from sys.dba_data_files                       
           group by tablespace_name )b                   
    where a.tablespace_name (+) = b.tablespace_name      
    order by 1 
    /
    Il n'y a pas d'erreur dans la log, mais il semble ne jamais libérer la place prise et grossit continuellement.
    Pour info l'instance n'est jamais arrétée

  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
    Peut-être qu'il faudrait quand même spécifier une taille maximale pour le tablespace. Il y avait un bug à ce sujet en 9.2.0.4 mais corrigé en 9.2.0.5 (Bug 2660394 Auto extensible undo tablespace may grow before reusing expired extents).

    Est-ce que vous avez des transactions dont la durée dépasse votre valeur de undo_retention soit 15 minutes ? Que donne la requête suivante qui calcule le nombre de blocs d'undo utilisé par toutes les transactions en cours d'exécution:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT sum(used_ublk) from v$transaction;

  5. #5
    Membre du Club
    Inscrit en
    Janvier 2007
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 127
    Points : 49
    Points
    49
    Par défaut
    Désolé, j'avais confondu le niveau de release avec ma base de recette, celle où j'ai le problème est bien en 9.2.0.4, ce qui correspond au bug référencé par Oracle.
    Sinon la requette sur v$transaction = 10, je n'ai pas de transaction plus longue que le temps d'undo.

    De savoir qu'il s'agit d'un problème connu, car je n'arrivais pas à comprendre pourquoi.
    En attendant de migrer vers 9.2.0.5, existe t-il un moyen de forcer la libération des extents ?
    Merci

  6. #6
    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
    Modifier le(s) datafile(s) de l'undo tablespace pour les mettre en AUTOEXTEND OFF devrait forcer Oracle à libérer les extents: http://download-uk.oracle.com/docs/c...files.htm#7426

  7. #7
    Membre du Club
    Inscrit en
    Janvier 2007
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 127
    Points : 49
    Points
    49
    Par défaut
    Le tablespace UNDO est en autoextent depuis logtemps mais cela n'a rien changé.
    Je cherche une commande qui force la libération des extents

  8. #8
    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
    Il faut mettre les datafiles en AUTOEXTEND OFF et non ON pour forcer Oracle à libérer les extents: dans la requête suivante, il faut que la colonne AUTOEXTENSIBLE soit à NO pour les datafiles de l'undo tablespace:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    select file_name, tablespace_name, autoextensible 
    from dba_data_files;

  9. #9
    Membre du Club
    Inscrit en
    Janvier 2007
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 127
    Points : 49
    Points
    49
    Par défaut
    Merci de votre aide.
    Je vais le repasser en autoextend OFF.
    je pensais bien faire en le plaçant à ON, car je craignais le plantage.

    Si je suis sur qu'il libère ses vieux extents plutôt que d'aller jusqu'au plantage par manque de place, je suis rassuré....

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

Discussions similaires

  1. occupation UNDO tablespace
    Par ducho dans le forum Administration
    Réponses: 2
    Dernier message: 12/09/2011, 16h14
  2. [oracle9i-Linux] Comment vider un UNDO tablespace
    Par Loïck dans le forum Oracle
    Réponses: 8
    Dernier message: 03/12/2009, 13h53
  3. undo tablespace se remplit
    Par big1 dans le forum Oracle
    Réponses: 29
    Dernier message: 11/10/2006, 13h32
  4. Réponses: 8
    Dernier message: 04/10/2005, 19h27
  5. [ORACLE 9i] UNDO tablespace perdu
    Par prolice dans le forum Oracle
    Réponses: 12
    Dernier message: 16/03/2005, 18h34

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