Yes as U said
If on one side a query is executed and simultaneously a DML is happening at the same time. THEN the user doing the DML action gives a commit in between while the query is still executing on the other side then on the query side U get this message SNAPSHOT TOO OLD
Suggestion :
Alter system set UNDO_retention 900 ;
or give a large value for undo retention ie. the undo block will be kept in the memory until 900 microseconds even after the commit transaction on the same table so that the query ends within that.