Skip to Main Content

Oracle Database Discussions

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

cannot use system rollback segment for non-system tablespace

FlavioMesquitaOct 28 2018 — edited Nov 5 2018

Hi everyone,

I'm a student that installed Database 12C Enterprise R2 on a old laptop for practicing. I did a small schema and Iḿ trying to simulate the error-01555. For that i got one of the tables from my schema. The table has only two columns:

categ-table.png

For that I created a new undo_tablespace with a small size:

CREATE UNDO TABLESPACE UNDOPEQUENA DATAFILE '/u01/app/oracle/oradata/orcl/undopequena.dbf' SIZE 112 K

REUSE AUTOEXTEND OFF;

Altered the current tablespace for the new one:

ALTER SYSTEM SET UNDO\_TABLESPACE = 'UNDOPEQUENA' SCOPE = BOTH;

Created a new rollback segment:

CREATE PUBLIC ROLLBACK SEGMENT ROLLBACK\_MEUESQUEMA;

Put it online:

alter rollback segment ROLLBACK_MEUESQUEMA online;

Then i run this sql commands:

declare

A number;

cursor c is select cod\_categ from categ;

begin

open c;

loop

    fetch c into A;

    dbms\_lock.sleep(3);

    exit when c%notfound;

end loop;

close c;

commit;

end;

/

begin

for i in 1..1000 loop

update MEUESQUEMA.CATEG set cod_categ=cod_categ+1, descricao=rpad('info', 30);

commit;

end loop;

end;

/

But instead of the error ora-01555 , this message appears:

Error report -

ORA-01552: cannot use system rollback segment for non-system tablespace 'USERS'

ORA-06512: at line 3

01552. 00000 - "cannot use system rollback segment for non-system tablespace '%s'"

*Cause: Tried to use the system rollback segment for operations involving

       non-system tablespace. If this is a clone database then this will

       happen when attempting any data modification outside of the system

       tablespace. Only the system rollback segment can be online in a

       clone database.

*Action: Create one or more private/public segment(s), shutdown and then

       startup again. May need to modify the INIT.ORA parameter

       rollback\_segments to acquire private rollback segment. If this is

       a clone database being used for tablspace point in time recovery

       then this operation is not allowed.  If the non-system tablespace

       has AUTO segment space management, then create an undo tablespace.

So, if I did everything right, why it doesn't use the new rollback segment that i just created? Why it keeps looking for the system rollback segment?

I updated the file init.ora with the new undo_tablespace name=undopequena.

This post has been answered by Mark D Powell on Oct 29 2018
Jump to Answer
Comments
Post Details
Added on Oct 28 2018
14 comments
4,971 views