Bonjour,
j'ai un dépassement de UNDO, comment ça se passe ? Si je fais pleins d'insert/update/delete dans une session oracle peut le remplir avant un commit ou rollback ?
Bonjour,
j'ai un dépassement de UNDO, comment ça se passe ? Si je fais pleins d'insert/update/delete dans une session oracle peut le remplir avant un commit ou rollback ?
Oui : C'est exactement cela.
Quand on fait des modifs sur des tables oracle (donc Insert/update/Delete), Oracle modifie les tables, mais il écrit dans le tablespace Undo la version d'origine... ou en tout cas les informations nécessaires pour reconstituer la version d'origine.
Et ça peut prendre beaucoup de place !
Tu peux nous donner le message d'erreur?
Bah en fait je crois qu'on a 16go d'alloue au undo le lancement d'un traitement fait que pour les perds ils l'ont doublé sur 32go mais d'après eux avec 16go on devrait avoir assez.
On traite pas mal de données le traitement fait pas mal de maj de plusieurs tables je pourrais pas dire combien mais beaucoup.
Je vois pas trop quoi faire pour régler le soucis si j'ai 1 million dinsert a faire je vois pas comment je peux faire autrement ..
C'est beaucoup de merge inserts update et des délete where
Je ne suis pas un spécialiste de l'Undo mais, 32 Goc'est ENORME! Je ne pense pas qu'il faille augmenter cette taille indéfiniment, le problème me semble ailleurs.
Que donne la commande suivante?
Une solution, mais certains vont hurler, serait de casser ta grosse transaction en transactions plus petites SI et uniquement SI c'est possible!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 SQL> show parameter undo NAME TYPE VALUE ------------------------------------ ----------- ------ temp_undo_enabled boolean FALSE undo_management string AUTO undo_retention integer 900 undo_tablespace string UNDOTBS2
Par exemple si la transaction suivante consomme 25Go:
INSERT 1 000 000 de lignes
UPDATE 10 000 000 de lignes
COMMIT
est-il possible de faire à la place deux transactions pour gérer moins de Undo?
INSERT 1 000 000 de lignes
COMMIT
UPDATE 10 000 000 de lignes
COMMIT
ça met :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 NAME TYPE VALUE -------------------------------------------------- ----------- ---------------------------------------------------------------------------------------------------- undo_management string AUTO undo_retention integer 900 undo_tablespace string UNDOTBS1
Partager