Oracle update undo, updates masivos que pueden generar problemas con el UNDO

No es la primera vez que me veo en la necesidad de ejecutar un DML que actualiza relamente muchos rows, esto puede ser un problema porque el tablespace UNDO no es infinito (ni debe serlo).

Recientemente he tenido que ejecutar un update:

Source   
UPDATE TABLON_TA_ELECT_PILOTO SET CD_PS_TP_VIA = 'CALLE' WHERE CD_PS_TP_VIA IS NULL;
commit;

Que actualizaba casi 4 millones de rows, claro el UNDO reventó.

La solución, para este caso, pasó por:

Source   
UPDATE TABLON_TA_ELECT_PILOTO SET CD_PS_TP_VIA = 'CALLE' WHERE CD_PS_TP_VIA IS NULL AND rownum<10000;
commit;

El seudo campo rownum se puede usar perfectamente en estos casos.

Deja un comentario