|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||
|
Membre régulier
![]() Inscription : février 2005 Messages : 283 ![]() |
Bonjour,
Je suis confronté depuis quelques jours au rafraichissement d'une vue matérialisée posant problème. Je passe les détails, voici le sujet de mon post : Hier un refresh de VM sur une table de 10 million d'enregistrements à été lancé, ce matin le traitement était toujours en cours et plombait les performances de la base. Arrêt du traitement, 38000 blocks utilisés par les RBS, la transaction part en rollback, évidemment cette opération nécessite un peu de temps ... arrêt de la base, bien sur l'immediate ne passe pas (transaction en cours de rollback). Abort de la base, la session liée au rollback et DBWR étant en train de bosser je fais un kill -9 (après avoir attendu quelques minutes) des deux process. Startup de la base, Oracle effectue son crash recovery en 1h00 Code :
Je lance le startup et trois heurs plus tard, j'obtiens un succefully completed : Code :
A noter que le 'shuddown immediate' n'apparait pas encore dans l'alert.log Code :
Si vous avez déjà rencontré ce problème, je suis preneur ;-) Cdt, A.Personnat |
||||||
|
|
00
|
|
|
#2 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
c'est très simple, quoiqu'il arrive Oracle est obligé de faire un rollback. Si tu fais un abort, le rollback est lancé au démarrage.
cf fast_start_parallel_rollback |
|
|
00
|
|
|
#3 |
|
Membre régulier
![]() Inscription : février 2005 Messages : 283 ![]() |
Il me semblait que lorsqu'une base tombait (l'équivalent d'un abort), Oracle effectuait son rollback lors du crash recovery, ce qui explique la durée relativement longue de l'operation.
Et lorsque j'ai requêté sur la v$transaction je n'avais aucune transaction en cours, donc je ne vois pas ce qui bloque Oracle lorsque je lance un shutdown immediate (l'odre sql ne passe même pas dans l'alert.log) Curieux non ? mais bloquant tout de même ;-) |
|
|
00
|
|
|
#4 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
non, le recovery rejoue les redos mais le rollback est à part...
|
|
|
00
|
|
|
#5 |
|
Membre régulier
![]() Inscription : février 2005 Messages : 283 ![]() |
Mais dans ce cas, comment se fait il que je n'ai rien dans la v$transaction ?
Si tel était le cas, j'aurais le champ used_ublk indiquant le nombre de blocks à 'rollbacker' .. non ? |
|
|
00
|
|
|
#6 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
non ta transaction est terminé, c'est juste un déplacement de bloc...
|
|
|
00
|
|
|
#7 |
|
Membre régulier
![]() Inscription : février 2005 Messages : 283 ![]() |
Effectivement la transaction en rollback après kill de session n'est pas dans v$transaction mais dans v$fast_start_transaction ..
Domage cela m'aurait permis d'éviter quelques soucis mais bon le principal c'est de capitaliser et de ne pas refaire la même erreur deux fois ;-) En revanche je ne comprends pas lorsque tu dis c'est juste un déplacement de blocks, pourrais-tu stp developper un peu ? Merci, A.Personnat |
|
|
00
|
|
|
#8 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
quand tu modifies une donnée, les blocs originaux sont copiés dans les rollbacks avant d'être mis à jour dans le datafile. Quand tu fais un rollback alors il faut restaurer les blocs et faire la copie dans l'autre sens.
|
|
|
00
|
|
|
#9 |
|
Membre régulier
![]() Inscription : février 2005 Messages : 283 ![]() |
Je m'aperçois que j'ai souvent des problèmes de checkpoint not complete; j'ai rajouté des groups mais sans grand changement.
En fait j'ai le log_checkpoint_interval à 100000 ce qui me fait avec une taille de bloc OS à 512 (si tel est vraiment le cas) un checkpoint tous les 50Mo ce qui correspond à la taille de mon redo. Je crois que je devrais peut être diminuer ce paramètre non ? |
|
|
00
|
|
|
#10 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
le nombre de groupe ne change rien à la fréquence de switch, ton problème vient plus probablement de la taille des redos (trop petite).
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com