Depends
If I needed to update 50MM records in oracle, and I was worried about rollback / undo segments, and I was worried about speed, I'd do an PL/SQL bulk update in batches of 50,000 records.
Of course, it took me about 3 days to figure out an acceptable method of easyness and speed. I'd then write a Perl scripts to generate the PL/SQL and run it, wrapped in some decent reporting. Which then turned it into a simple perl script that said:
ora_update.pl --target_table=emp --source_table=emp --tmp_table=tmp_data --from_field=source_data --to_field=dest_data --join_key=emp_idx
Then I'd never need to think about it again, at least until someone asks how I'd do it.
You get the idea.