undo_retention should be set longer than your longest open cursor. That's probably your longest running job/sql/plsql block.
Make the undo tablespace autoincrement, so you don't have to rerun your longest job when you get there.
If you have one huge job and everything else is small you'll have to keep one big undo tablespace. This is my preference since disks (even the real fast ones) are relatively cheap.
If you want to recover the space;
1) create a new undo tablespace
2) "alter system set undo_tablespace the_new_tablespace"
3) drop the old (don't worry, it won't drop till all the transactions are committed).
We hace actually an 8Gb undo tablespace an 3600 (yes I know is little little little (I'm just arriving to this place :-) defined for undo_retention.
The problem is we have some queries that fire ora-1555. Developer don't want, don't know blablabla review this processes and demand us to increase undo_retention.
select max(MAXQUERYLEN) from v$undostat;
That it's about 7 hours of retention.
I know this increasing affect directly to undo tablespace size , that will be increased from 8Gb to 15Gb using oracle's calculation method. Any other considerations to have in mind (I have to write an impact document :-)