Ok, I have not done that for years but I started debuging around and here is what I found
The error message states:
Query Duration=1158 sec
With undo retention set to undo_retention=10800 that seems quite more than necessary.
So... either the undo tablespace is really small in comparisment to the transaction load (800M per 10800 sec - that's 3 hours - seems realistic to go over 800M for 3 hours)
or for any reason the unexpired undo extents in that specific segment gets reused (what can happen in 9.2)
I read the Metalink Note:269814.1 - really good one, which gives an idea how the algorithm works and mentions bugs 5475085 and 2900863 which seems to be more or less relevant for your case.
Based on that I feel (feel is the word, I cannot explain why) that it worths to start lowering UNDO_RETENTION until we do not see the result of
select UNXPSTEALCNT from v$undostat
comes close to 0.
So, try lowering UNDO_RETENTION say to 5000 and let's see if it will help

Cheers
Boris