why arent you using undo tablespaces? are your rollback segments sized big enough for that job.

IS your code crap (i.e. commiting in the loop you are selecting from )