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 :

undo tablespace se remplit


Sujet :

Oracle

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 083
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 083
    Points : 271
    Points
    271
    Par défaut undo tablespace se remplit
    Bonjour,
    j'ai lancé un chargement par SQLLDR pour remplir une table vide. Le tablespace UNDO se remplit et cela ne s'arrête pas. Pour quoi ? y'a-t-il une façon de l'mpecher ?
    merci de vos explications et de votre aide.

  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
    non, SQLLDR = INSERT = UNDO... c'est normal

  3. #3
    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
    Il faut utiliser l'option ROWS=n. Pour un chargement conventionel rows represente le nombres de lignes par commit.

  4. #4
    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
    non, rows=n = import de la structure uniquement

  5. #5
    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
    fred tu ne confond pas avec l'import

    On n'importe pas la structure avec le Loader

    Une autre méthode consiste a utiliser l'option direct qui ne se sert pas des UNDO

  6. #6
    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
    ha oui désolé

  7. #7
    Membre averti

    Inscrit en
    Septembre 2003
    Messages
    425
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 425
    Points : 398
    Points
    398
    Par défaut
    il existe une option dans sqlloader pour faire un commit apres x lignes, il suffit d'ajouter ROWS=[n]

    exemple sur un fichier de 15 lignes:
    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
    21
    22
    23
    sqlload USERID= /@mabase 
    CONTROL=/pgm/control.ctl 
    DATA=/pgm/data.dat 
    LOG=log.log BAD=bad.bad 
    DISCARD=dis.dis rows=1
     
    SQL*Loader: Release 9.2.0.3.0 
    Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.
     
    Point de validation (COMMIT) atteint - nombre d'enregis. logiques 2
    Point de validation (COMMIT) atteint - nombre d'enregis. logiques 3
    Point de validation (COMMIT) atteint - nombre d'enregis. logiques 4
    Point de validation (COMMIT) atteint - nombre d'enregis. logiques 5
    Point de validation (COMMIT) atteint - nombre d'enregis. logiques 6
    Point de validation (COMMIT) atteint - nombre d'enregis. logiques 7
    Point de validation (COMMIT) atteint - nombre d'enregis. logiques 8
    Point de validation (COMMIT) atteint - nombre d'enregis. logiques 9
    Point de validation (COMMIT) atteint - nombre d'enregis. logiques 10
    Point de validation (COMMIT) atteint - nombre d'enregis. logiques 11
    Point de validation (COMMIT) atteint - nombre d'enregis. logiques 12
    Point de validation (COMMIT) atteint - nombre d'enregis. logiques 13
    Point de validation (COMMIT) atteint - nombre d'enregis. logiques 14
    Point de validation (COMMIT) atteint - nombre d'enregis. logiques 15

  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
    C'est exactement ce que bouyao disait à 14h42 ! ;-)

  9. #9
    Membre éprouvé
    Inscrit en
    Avril 2006
    Messages
    1 024
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 1 024
    Points : 1 294
    Points
    1 294
    Par défaut
    Vous êtes sur que ça libère le UNDO de faire des commit ??

    Sinon y'a le mode DIRECT=TRUE, brutal, dangeureux, mais efficace....

  10. #10
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    178
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 178
    Points : 220
    Points
    220
    Par défaut
    Citation Envoyé par remi4444
    Vous êtes sur que ça libère le UNDO de faire des commit ??
    Oui car l'espace "utile" de l'UNDO est ce qui n'est pas encore commité et qui doit pouvoir annuler la transaction courante via un rollback. Donc des commit plus fréquents = des transactions plus petites = UNDO utilisé par chaque transaction inférieur... donc l'UNDO utilisé à un instant t reste nettement inférieur à l'UNDO utilisé par une grosse transaction.

    J'espère avoir été clair .

    Cordialement,

    rbaraer

  11. #11
    Membre éprouvé
    Inscrit en
    Avril 2006
    Messages
    1 024
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 1 024
    Points : 1 294
    Points
    1 294
    Par défaut
    et le flashback il va les chercher ou ses données ?????

  12. #12
    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
    Quelle type de flashback ?

  13. #13
    Membre éprouvé
    Inscrit en
    Avril 2006
    Messages
    1 024
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 1 024
    Points : 1 294
    Points
    1 294
    Par défaut
    En fait l'objet de ma remarque ne portait pas sur la méthode de flashback mais sur le fait qu'il me semblait bien que malgrés les commits, oracle conservait des données dans le tablespace UNDO précisément pour pouvoir éventuellement effectuer des flashbacks plus tard...

  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
    Citation Envoyé par rbaraer
    Oui car l'espace "utile" de l'UNDO est ce qui n'est pas encore commité et qui doit pouvoir annuler la transaction courante via un rollback. Donc des commit plus fréquents = des transactions plus petites = UNDO utilisé par chaque transaction inférieur... donc l'UNDO utilisé à un instant t reste nettement inférieur à l'UNDO utilisé par une grosse transaction.
    Non, les blocs undo libérés par un commit sont conservés jusqu'à ce que la durée undo_retention soit atteinte.

    C'est jsutement le fait de garder les blocs undo qui permet de limiter les erreurs snapshots too old

  15. #15
    Membre éprouvé
    Inscrit en
    Avril 2006
    Messages
    1 024
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 1 024
    Points : 1 294
    Points
    1 294
    Par défaut
    ok c'est bien mon avis aussi, croisement de messages....

  16. #16
    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
    Pour précision un Block undo est libére lorsque celui est commité. Jusque tout le monde est d'accord.
    SI le paramétre UNDO_RETENTION et de facon plus large si le UAM est utilisé alors ce bloc sera conservé dans le UNDO durant cette période sauf si Oracle a besoin de cette place il recycle quand même.
    Voila pourquoi il peut y avoir une Ora-1555 avec ce type de UNDO. Oracle ne vas pas bloquer les blocs UNDO et donc accessoirement le fonctionnement de l'instance Oracle pour assurer le UNDO RETENTION

  17. #17
    Membre averti

    Inscrit en
    Septembre 2003
    Messages
    425
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 425
    Points : 398
    Points
    398
    Par défaut
    Donc si je comprends bien,
    pour pouvoir faire des flashbacks à 10 min par exemple
    il ne suffit pas de parametrer undo_retention + undo_management = auto
    mais aussi de faire attention au volume des transactions même si la tablesapce UNDO est en AUTOEXTEND ?

    Donc peut on dire que 10 min de flashback sur une alimentation infocentre sera bien plus consommatrice en volume que sur une base transactionnelle pour un même volume de données. Les transactions étant plus consomatrice de UNDO ?

    J'ai peut être rien compris ?

  18. #18
    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
    ça dépend si on garantie ou pas ! ;-)
    Retention Guarantee

    To guarantee the success of long-running queries or Oracle Flashback operations, you can enable retention guarantee. If retention guarantee is enabled, the specified minimum undo retention is guaranteed; the database never overwrites unexpired undo data even if it means that transactions fail due to lack of space in the undo tablespace. If retention guarantee is not enabled, the database can overwrite unexpired undo when space is low, thus lowering the undo retention for the system. This option is disabled by default.

    WARNING:

    Enabling retention guarantee can cause multiple DML operations to fail. Use with caution.

    You enable retention guarantee by specifying the RETENTION GUARANTEE clause for the undo tablespace when you create it with either the CREATE DATABASE or CREATE UNDO TABLESPACE statement. Or, you can later specify this clause in an ALTER TABLESPACE statement. You disable retention guarantee with the RETENTION NOGUARANTEE clause.

    You can use the DBA_TABLESPACES view to determine the retention guarantee setting for the undo tablespace. A column named RETENTION contains a value of GUARANTEE, NOGUARANTEE, or NOT APPLY (used for tablespaces other than the undo tablespace)
    http://download-uk.oracle.com/docs/c...o.htm#ADMIN013

  19. #19
    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
    Léo , c'est uniquement à partir de la 10G

  20. #20
    Membre averti

    Inscrit en
    Septembre 2003
    Messages
    425
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 425
    Points : 398
    Points
    398
    Par défaut
    En 9i cela signifie que mon undo tablespace va grandir grandir ....

    Et il s'arrête quand il y a plus de place sur le disque ?

    PS : si j'ai mon TBS en AUTOEXTEND biensur

Discussions similaires

  1. [oracle9i-Linux] Comment vider un UNDO tablespace
    Par Loïck dans le forum Oracle
    Réponses: 8
    Dernier message: 03/12/2009, 13h53
  2. Drop undo tablespace
    Par nikeou dans le forum Administration
    Réponses: 37
    Dernier message: 31/01/2007, 14h06
  3. [eBs 11.5.9] Undo tablespace offline
    Par guigui_cwoco dans le forum Oracle
    Réponses: 7
    Dernier message: 14/12/2006, 10h23
  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