Skip to Main Content

Breadcrumb

Question and Answer

Tom Kyte

Thanks for the question.

Asked: July 10, 2000 - 3:02 pm UTC

Last updated: July 16, 2004 - 1:53 pm UTC

Version: 8.1.6

Viewed 1000+ times

You Asked

Solaris 2.6
Oralce 8.1.6

When runngin the initjvm.sql, I noticed that rollback segments were full.
From the alert.log, it looks like when 1 rollback segment is full, Oracle switches to another .
RBS are used up.
Is this normal behaviour of RBS ?
Anything lost or damages done ?
We have 4 rbs. What happens when the last one is full. Does it stop there? Or it wraps around ?

'Thread 1 cannot allocate new log, sequence 44' means log records are created faster than the log writer can
switch logfiles ?


ORA-1650: unable to extend rollback segment RBS04 by 16 in tablespace RBS

Failure to extend rollback segment 5 because of 1650 condition
FULL status of rollback segment 5 set.
Mon Jul 10 13:28:27 2000
Thread 1 cannot allocate new log, sequence 44
Checkpoint not complete
Current log# 1 seq# 43 mem# 0: /u02/oradata/tst8161/redo01a.dbf
Current log# 1 seq# 43 mem# 1: /u03/oradata/tst8161/redo01b.dbf
Thread 1 advanced to log sequence 44
Current log# 2 seq# 44 mem# 0: /u02/oradata/tst8161/redo02a.dbf
Current log# 2 seq# 44 mem# 1: /u03/oradata/tst8161/redo02b.dbf
Mon Jul 10 13:28:36 2000
FULL status of rollback segment 5 cleared.
Mon Jul 10 13:30:03 2000
ORA-1650: unable to extend rollback segment RBS02 by 16 in tablespace RBS

Failure to extend rollback segment 3 because of 1650 condition
FULL status of rollback segment 3 set.
FULL status of rollback segment 3 cleared.
Mon Jul 10 13:31:46 2000
Thread 1 advanced to log sequence 45
Current log# 3 seq# 45 mem# 0: /u02/oradata/tst8161/redo03a.dbf
Current log# 3 seq# 45 mem# 1: /u03/oradata/tst8161/redo03b.dbf
Mon Jul 10 13:32:25 2000
ORA-1650: unable to extend rollback segment RBS03 by 16 in tablespace RBS

Failure to extend rollback segment 4 because of 1650 condition
FULL status of rollback segment 4 set.
Mon Jul 10 13:32:56 2000
Thread 1 advanced to log sequence 46
Current log# 1 seq# 46 mem# 0: /u02/oradata/tst8161/redo01a.dbf
Current log# 1 seq# 46 mem# 1: /u03/oradata/tst8161/redo01b.dbf
Mon Jul 10 13:33:05 2000
FULL status of rollback segment 4 cleared.
Mon Jul 10 13:35:09 2000
Thread 1 advanced to log sequence 47
Current log# 2 seq# 47 mem# 0: /u02/oradata/tst8161/redo02a.dbf
Current log# 2 seq# 47 mem# 1: /u03/oradata/tst8161
/redo02b.dbf
Mon Jul 10 13:35:25 2000
ORA-1650: unable to extend rollback segment RBS04 by 16 in tablespace RBS

Failure to extend rollback segment 5 because of 1650 condition
FULL status of rollback segment 5 set.

Thank you.


and Tom said...

You have 2 issues you want to correct here. Issue one is:


'Thread 1 cannot allocate new log, sequence 44' . See
</code> http://asktom.oracle.com/pls/asktom/f?p=100:11:::::P11_QUESTION_ID:69012348056 <code>for the cause and the solution.

The other more troubling error (troubling because it prevents things from taking place whereas the cannot allocate new log just means they take longer to complete) is the
ORA-1650: unable to extend rollback segment RBS02 by 16
errors. That means whatever operation was being done at that point in time failed and was rolled back (if you got these during the run of initjvm -- it failed, you'll need to rerun it after correcting).

Having sufficient rollback is critical for the database. Don't shortchange it.

Start with at least a couple (5 say) rollback segments whose initial=next=1m and minextents=25, maxextents=150. I like to put each rollback segment into its own tablespace with its OWN autoextensible datafile. This allows each rollback segment to grow when needed (if the OS has room) and allows me to shrink any of the rollback segments back down to 25megs when I want to and shrink the corresponding datafile as well (i do this before backups for example). In this fashion, I let the rollback grow upto 150m (but no more -- really really huge transactions will still fail but I want them to -- you might not).

We do not switch to a new rollback segment when one fills up (that describes our behaviour with redo, not undo). We fail the transaction that was taking place and roll it back. This is an error you really don't want to see.




Rating

  (2 ratings)

Is this answer out of date? If it is, please let us know via a Comment

Comments

Mike, July 16, 2004 - 1:21 am UTC

ORA-1650: unable to extend rollback segment RBS05 by 125 in tablespace RBS

the high water mark of RBS05 is 1133976 KB.
Question: Did that transaction use all 1.1 GB segment?

Tom Kyte
July 16, 2004 - 11:04 am UTC

answer: who knows?


could it have? yes.
did it? insufficient data.
do i think it did? probably not.

A reader, July 16, 2004 - 11:08 am UTC

"could it have? yes.
did it? insufficient data.
do i think it did? probably not.
"

Sorry, What could be information you ware after for "insufficient data"

Tom Kyte
July 16, 2004 - 1:53 pm UTC

i wasn't after any -- you'd have to have queried v$transaction to see how much rbs it was using. too late now.