分类: Oracle
2008-04-09 21:27:18
ORA-01599 failed to acquire rollback segment (string), cache space is full (currently has (string) entries)
Cause: The amount statically allocated is not enough based on the value of the MAX_ROLLBACK_SEGMENTS parameter"
Specifies the maximum size of the rollback segment cache in the SGA.
The number specified signifies the maximum number of rollback segments
that can be kept online (that is, status of ONLINE) simultaneously by one instance.
SQL> select * from V$RESOURCE_LIMIT;
RESOURCE_NAME CURRENT_UTILIZATION MAX_UTILIZATION INITIAL_ALLOCATION LIMIT_VALUE
------------------------------ ------------------- --------------- -------------------- -----------
processes 11 13 150 150
sessions 14 18 170 170
enqueue_locks 9 13 2230 2230
enqueue_resources 9 9 968 UNLIMITED
ges_procs 0 0 0 0
ges_ress 0 0 0 UNLIMITED
ges_locks 0 0 0 UNLIMITED
ges_cache_ress 0 0 0 UNLIMITED
ges_reg_msgs 0 0 0 UNLIMITED
ges_big_msgs 0 0 0 UNLIMITED
ges_rsv_msgs 0 0 0 0
RESOURCE_NAME CURRENT_UTILIZATION MAX_UTILIZATION INITIAL_ALLOCATION LIMIT_VALUE
------------------------------ ------------------- --------------- -------------------- -----------
gcs_resources 0 0 35215 35215
gcs_shadows 0 0 35215 35215
dml_locks 0 3 748 UNLIMITED
temporary_table_locks 0 0 UNLIMITED UNLIMITED
transactions 0 4 187 UNLIMITED
branches 0 0 187 UNLIMITED
cmtcallbk 0 0 187 UNLIMITED
sort_segment_locks 0 1 UNLIMITED UNLIMITED
max_rollback_segments 11 11 38 38
max_shared_servers 0 0 20 20
parallel_max_servers 0 0 6 6
22 rows selected.
SQL> show parameter rollback
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
fast_start_parallel_rollback string LOW
max_rollback_segments integer 37
rollback_segments string
transactions_per_rollback_segment integer 5
SQL> alter system set max_rollback_segments=2 scope=spfile;
System altered.
SQL> startup force;
ORACLE instance started.
Total System Global Area 219223120 bytes
Fixed Size 451664 bytes
Variable Size 134217728 bytes
Database Buffers 83886080 bytes
Redo Buffers 667648 bytes
Database mounted.
Database opened.
SQL> select * from V$RESOURCE_LIMIT;
RESOURCE_NAME CURRENT_UTILIZATION MAX_UTILIZATION INITIAL_ALLOCATION LIMIT_VALUE
------------------------------ ------------------- --------------- -------------------- -----------
processes 11 13 150 150
sessions 14 15 170 170
enqueue_locks 9 14 2230 2230
enqueue_resources 9 9 968 UNLIMITED
ges_procs 0 0 0 0
ges_ress 0 0 0 UNLIMITED
ges_locks 0 0 0 UNLIMITED
ges_cache_ress 0 0 0 UNLIMITED
ges_reg_msgs 0 0 0 UNLIMITED
ges_big_msgs 0 0 0 UNLIMITED
ges_rsv_msgs 0 0 0 0
RESOURCE_NAME CURRENT_UTILIZATION MAX_UTILIZATION INITIAL_ALLOCATION LIMIT_VALUE
------------------------------ ------------------- --------------- -------------------- -----------
gcs_resources 0 0 35215 35215
gcs_shadows 0 0 35215 35215
dml_locks 0 2 748 UNLIMITED
temporary_table_locks 0 0 UNLIMITED UNLIMITED
transactions 0 4 187 UNLIMITED
branches 0 0 187 UNLIMITED
cmtcallbk 0 0 187 UNLIMITED
sort_segment_locks 0 1 UNLIMITED UNLIMITED
max_rollback_segments 3 3 3 3
max_shared_servers 0 0 20 20
parallel_max_servers 0 0 6 6
22 rows selected.
SQL> SELECT SEGMENT_NAME, STATUS FROM DBA_ROLLBACK_SEGS;
SEGMENT_NAME STATUS
------------------------------ ----------------
SYSTEM ONLINE
_SYSSMU1$ ONLINE
_SYSSMU2$ ONLINE
_SYSSMU3$ ONLINE
_SYSSMU4$ ONLINE
_SYSSMU5$ ONLINE
_SYSSMU6$ ONLINE
_SYSSMU7$ ONLINE
_SYSSMU8$ ONLINE
_SYSSMU9$ ONLINE
_SYSSMU10$ ONLINE
11 rows selected.
[oracle@jumper oracle]$ oerr ORA 01559
01559, 00000, "MAXEXTENTS for rollback segment must be greater than 1"
// *Cause: Specified MAXEXTENTS of less than 2 for rollback segment
// *Action: Specify larger MAXEXTENTS