Oracle FAQ Your Portal to the Oracle Knowledge Grid

Home -> Community -> Mailing Lists -> Oracle-L -> Re: ORA-01650, one idea

Re: ORA-01650, one idea

From: Juan Cachito Reyes Pacheco <>
Date: Tue, 17 Feb 2004 17:39:01 -0400
Message-ID: <005801c3f59e$7afaf1d0$>

If you set logging off the table and their index (and disable foreing keys to this table)?,
does it help some or not help.

Tell us if this improve your performance in some way. ALTER TABLE GRUPMONCLIE NOLOGGING /

ALTER INDEX GRUPMONCLIE REBUILD NOLOGGING / or drop indexes and rebuild them after

2) If your are deleting 99% of the table

you coul

create table y as select from x;

drop x

rename y to x;

Don't forget the full backup after this and to restore back the logging mode

Actually, more frequent commits can increase the likelihood of 1650s. When a rollback segment extends beyond optimal, one of the conditions for shrinkage is that two transactions find it over extended and request that it shrink to optimal. Here's a scenario that caused me problems. We scheduled a massive load over a weekend when no one else would be using the system. The load would commit every 100k rows. At the 5th iteration, the load would fail with a 1650. The commit signals a new transaction, so a new rbs was assigned after each commit. Tx1 used RBS1 and extended it. Tx2 used RBS2 and extended it, etc. By the time Tx5 came along, RBS1 - RBS4 had extended and consumed almost all the space in the tablespace. When Tx5 needed space, it could not grab any more. It needed to have space released from the other RBSs, but there were not other txs that could find the overextended rbs and request that they shrink.

In the case presented, it looks like you have many rbss. This could be the same problem, if there is not enough other activity. Of course, then you risk getting 1555s.

It is important to remember that deletes are not just table level, you also have indexes to deal with. If you have enough indexes, you could be generating more index undo that table undo.

Quick answer is to increase the size of the rbs tablespace.


Lee Lee wrote:

> You could separate your delete into smaller deletes:
> Delete 1 million rows, commit, delete another million,
> commit, ...
> -----Original Message-----
> From: []
> Sent: Tuesday, February 17, 2004 10:23 AM
> To:
> Subject: ORA-01650
> I need someone to clarify what I am seeing.
> Table contains approximately 6.6 million rows.
> Each row is no more than 400 bytes.
> Want to delete approximately 5 million rows.
> Getting the following error message:
> ORA-1650: unable to extend rollback segment RBS23 by
> 1536 in tablespace RBS
> The total size of the RBS tablespace is about 6GB!
> I do not understand why the RBS is "too small" to
> accommodate this DELETE.
> What, if anything, can be done other than adding
> another datafile to the tablespace.

Please see the official ORACLE-L FAQ:

To unsubscribe send email to: put 'unsubscribe' in the subject line.
Archives are at
FAQ is at

Please see the official ORACLE-L FAQ:
To unsubscribe send email to:
put 'unsubscribe' in the subject line.
Archives are at
FAQ is at
Received on Tue Feb 17 2004 - 15:39:01 CST

Original text of this message