Kbase 18040: What Does ORACLE Error 1555 Mean?
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  15/10/2008 |
|
Status: Verified
GOAL:
What does ORACLE Error 1555 mean?
FACT(s) (Environment):
Oracle DataServer
Oracle
OpenEdge Category: Configuration
FIX:
If ORACLE is trying to roll back an uncommitted transaction (from its transaction table) and it fails the rollback segment is considered to be in a state that needs recovery.
ORACLE tries to always present a consistent representation of the transaction table. They will also try to return all the data as it exists when the cursor was opened. There are times when a cursor is open for a long period of time which can leave an opportunity for other users to perform additional updates to the database. In this case, when ORACLE begins to return the data from the original cursor, it will have to perform an 'undo' of all the other updates that were being made by the other users. In order to consistently present the data as it was ORACLE will use the information that is stored in the Rollback Segments. (This is similar to Progress' use of the bi file)
A possible problem is that the Rollback segments do get re-used. A good way to better understand this error is to look at this way:
The Rollback segment can be recycled when they are used to rebuild the 'view' of the transaction table where the original cursor was being used. If this information is "NO LONGER" available and the Transaction table cannot be presented clearly and consistently ORACLE will return the error 1555 "snapshot too old (rollback segment too small)".
When can this error occur:
1. If a cursor has been or is open for a long period of time it will
provide the opportunity for other users to update the database.
This will increase the consumption of the Rollback segments.
2. It could also occur when a large number of updates (for example:
inserts and deletes) are going on which will also increase the
number of writes to the Rollback segments. Once again increasing
the consumption of available space in the Rollback segments.
3. If there is a limited number of Rollback segments or the segments
are relatively small they will tend to be recycled more often.
Addressing the possible causes and which are the more reasonable to
fix?
1. Determining how long a cursor is open for is really controlled by
the application and this tends to be difficult to control and
remedy.
2. Restricting when other users can update the database is not a
viable solution.
3. Because, the first two resolutions tend to be more difficult and
less appealing this would leave the option of maintaining the
Rollback segments themselves. In order to maintain these
Rollback segments it would be necessary to "INCREASE THE SIZE
AND/OR NUMBER OF ROLLBACK SEGMENTS".
Error 1555 "snapshot too old (rollback segment too small)" is truly an ORACLE issue that needs to be resolved and maintained by ORACLE. If a customer is hitting this error they should discuss with ORACLE the reasons why they may see this error and then adjust the number and size of the Rollback segments accordingly. The issue is not caused by Progress.