Those snapshot too old errors, which are undo tbs related can be solved most of the time by increasing the size and retention.. Size and retention should be aligned, and those types of actions depend on the environment's undo workload. If we have enough space, we can increase it aggressively.
Also, let's take a look at the list below.
Ref:
http://ermanarslan.blogspot.com/2014/05/rdbms-unusual-ora-01555.htmlPossible fixes;
1. Increase size of rollback segment which will reduce the likelihood of overwriting rollback information that is needed.
2. Reduce the number of commits.
3. Run the processing against a range of data rather than the whole table.
4. Add additional rollback segments. This will allow the updates etc. to be spread across more rollback segments thereby reducing the chances of overwriting required rollback information.
5. If fetching across commits, the code can be changed so that this is not done.
6. Ensure that the outer select does not revisit the same block at different times during the processing. This can be achieved by : - Using a full table scan rather than an index lookup - Introducing a dummy sort so that we retrieve all the data, sort it and then sequentially visit these data blocks. Note that: This is only applicable if the reason is the rollback information