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:
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:
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.