Bonjour,
J'ai un problème lors d'une boucle d'INSERT :
le tablespace UNDOTBS explose (plusieurs Go) alors que la table ne semble pas grossir.
Quelqu'un a-t-il une piste de reflexion ?
Merci
Bonjour,
J'ai un problème lors d'une boucle d'INSERT :
le tablespace UNDOTBS explose (plusieurs Go) alors que la table ne semble pas grossir.
Quelqu'un a-t-il une piste de reflexion ?
Merci
commit ?
sérieusement, il faudrait détailler un peu plus le contexte, la fameuse boucle, la configuration, la version ....
la table ne grossit pas tant qu'il n'y a pas de COMMIT en revanche le UNDO est utilisé pour le ROLLBACK. Tu peux faire des COMMIT plus souvent pour libérer de la place dans le UNDO
J'ai pensé au commit mais ce n'est pas ça
je vais demander plus de détail sur la config et le code
Comment retrouvez-vous l'espace utilisé par la table ?
Il se peut aussi que le segment de la table a assez d'espace libre. Pour retrouver l'espace libre dans une table, il faut utiliser DBMS_SPACE.
en fait le tablespace UNDOTBS est en autoextend illimité.
Dans cette transaction le disque est rempli jusqu'à saturation par accroissement de la taille dudit fichier.
c'est là le souci.
il cherche à assumer le undo_retention précisé. Comme il manque de place, il aggrandit le tablespace
si vous enlevez l'autoextend, en fonction de l'activité transcationnelle des autres, il est possible que la procédure aille à son terme
mais il est possible que non.
Je doute que de supprimer l'autoextend resolve le problème car il s'agit d'une boucle de quelques miliers d'INSERT qui provoque un accroissement de taille du TBS de plusieurs Go.
Quand vous mettez l'undo_retention à 4h, cela veut dire "tu fais ce que tu veux, tu te débrouilles comme tu veux, mais je veux que les données commitées ou non ne soient pas réutilisées dans l'undo dans les 4 h qui suivent leur enregistrement"
si le datafile est autoextend, il va s'en servir pour tenir l'undo_retention.
Si l'undo est plein (ce qui n'est pas votre cas puisqu'auto-extensible) il va alors commencer à réuiliser les plus anciens blocs commités, au risque de déclencher une ora-1555
maintenant, si vous voulez pas essayer, je vais pas vous y forcer; c'est vous quio avez le problème, pas moi !
ça peut régler le problème parce que si UNDOTBS est limité en taille le UNDO_RETENTION ne posera pas de problème et les blocs seront recyclés... si tu commits c'est pareil, les blocs sont recyclés après le undo_retention... fait une recherche j'ai répondu à un problème similaire il y a quelques minutes
Merci à tous de vos réponses attentives.
Je vais répercuter les infos et je reviendrais si le problème subsiste.
Mais si tu utilises une boucle tu ne peux pas juste faire un commit intermédiaire à la fin de ta boucle ?
Merci encore à tous pour vos réponses.
La modification du délai de rétention et l'augmentation de la fréquence des commits ont tous deux permis de débloquer la situation.
Encore merci.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager