there is excellent site [url][/url] with really genious solutions for ORA-01555.

One of solutions is to have a process to put uncommited transaction into EVERY rollback segment: that prevents oracle from rolling onto old rollback entries required by a query.

It makes sense to look close to erro message: SNAPSHOT TOO OLD. It really means the most ugly reason for this error: no one can predict how long to keep old undo records.