About Me

Database and GIS Consultant.

Wednesday, September 26, 2007

Failure to Extend Rollback Segment

Environment: Oracle 9.2.0.7 EE, 32bit, Windows 2003 Enterprise
Server.

Problem: Transaction (bulk load) hangs and getting below error in the alert.log

Thread 1 advanced to log sequence 1234
Current log# 1 seq# 1234 mem# 0: D:\ORACLE\ORADATA\LOG1.ORA
Wed Sep 25 21:06:06 2007
Failure to extend rollback segment 19 because of 1000 conditionFULL status of
rollback segment 19 set.
Wed Sep 25 21:06:20 2007
SMON: FULL status of rollback segment 19 cleared.

I have seen various reasons and scenarios (like insufficient disk space for RBS/UNDO tablespace/datafiles to grow, or hitting maxsize limitation for datafiles, max extents reached, ORA-1555 the famous "snapshot too old" error, etc) causing failure of a rollback (undo) segment. But this is the first time I came across a RBS failure which is slightly different the usual.

The database is in AUTOMATIC undo management mode

NAME                    TYPE        VALUE
----------------------- ----------- ---------
undo_management         string      AUTO
undo_retention          integer     10800
undo_suppress_errors    boolean     FALSE
undo_tablespace         string      UNDOTBS1


Solution: After trying various options, attempts and looking the alert log message under the microscope, I came to know that the reason for the error is ORA-01000 (as the error in the alert.log says "because of 1000", so DBAs are expected to assume it is ORA-01000 error, go figure!). Here is what Oracle documentation say about this error:

ORA-01000 maximum open cursors exceeded

Cause: A host language program attempted to open too many cursors. The initialization parameter OPEN_CURSORS determines the maximum number of
cursors per user.

Action: Modify the program to use fewer cursors. If this error occurs often, shut down Oracle, increase the value of OPEN_CURSORS, and then restart Oracle.

After changing the OPEN_CURSORS parameter (from 300) to 2000 and restarting the database, the bulk load went fine.

Did anyone had this problem? welcome to share your thoughts..