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


Quando eu tento criar uma tabela ou inserir uma linha em uma tabela, o erro: ORA-01552 é apresentado:

SQL> conn hr/hr
Connected.
SQL> set time on
15:30:43 SQL> create table t as select * from all_objects;
create table t as select * from all_objects
*
ERROR at line 1:
ORA-01552: cannot use system rollback segment for non-system tablespace 'USERS'



Este erro está ligado ao espaço da tablespace de undo, bem como ao estado do datafile ou tablespace.
Por exemplo se o tamanho da tablespace de undo já for atingido ou estiver cheio, ou se o datafile da tablespace de undo estiver offline poderá ocasionar este erro.

Vamos fazer algumas checagens para tentar identificar o problema.

Verifique o status da tablespace de undo:

SQL> select tablespace_name,status from dba_tablespaces;

TABLESPACE_NAME                STATUS
------------------------------ ---------
SYSTEM                         ONLINE
SYSAUX                         ONLINE
UNDOTBS1                       ONLINE
TEMP                           ONLINE
USERS                          ONLINE
EXAMPLE                        ONLINE
SOE                            ONLINE
TBS_TESTE                      ONLINE

8 rows selected.

SQL>

Certo, a tablespace está online!
Agora, verifique o espaço livre da tablespace de undo:

SQL> SELECT tablespace_name, sum((bytes/1024)/1024) free FROM DBA_FREE_SPACE group by tablespace_name;

TABLESPACE_NAME                      FREE
------------------------------ ----------
SYSAUX                            53.6875
UNDOTBS1                         307.6875
USERS                             19.3125
SYSTEM                              4.875
SOE                               84.8125
TBS_TESTE                        174.6875

6 rows selected.

SQL>

Se falando de espaço a tablespace de Undo não está com problemas.
Vamos continuar, verifique agora o status do datafile de undo:

SQL> col name format a40
select file#,status, name from v$datafile;

FILE# STATUS  NAME
---------- ------- ----------------------------------------
1 SYSTEM  /u01/oradata/orcl/system01.dbf
2 ONLINE  /u01/oradata/orcl/soe01.dbf
3 ONLINE  /u01/oradata/orcl/sysaux01.dbf
4 OFFLINE /u01/oradata/orcl/undotbs01.dbf
5 OFFLINE /u01/oradata/orcl/example01.dbf
6 ONLINE  /u01/oradata/orcl/users01.dbf
7 ONLINE  /u01/oradata/orcl/tbs_01.dbf

7 rows selected.

SQL>

Ai está o problema o datafile de undo está OFFLINE.
Agora vamos colocar o datafile online novamente:

SQL> alter database datafile '/u01/oradata/orcl/undotbs01.dbf' online;

Database altered.

SQL> col name format a40
select file#,status, name from v$datafile;SQL>

FILE# STATUS  NAME
---------- ------- ----------------------------------------
1 SYSTEM  /u01/oradata/orcl/system01.dbf
2 ONLINE  /u01/oradata/orcl/soe01.dbf
3 ONLINE  /u01/oradata/orcl/sysaux01.dbf
4 ONLINE  /u01/oradata/orcl/undotbs01.dbf
5 OFFLINE /u01/oradata/orcl/example01.dbf
6 ONLINE  /u01/oradata/orcl/users01.dbf
7 ONLINE  /u01/oradata/orcl/tbs_01.dbf

7 rows selected.

SQL>

Agora podemos criar a tabela novamente:

SQL> conn hr/hr
Connected.
SQL> set time on
15:57:19 SQL>  create table t as select * from all_objects;

Table created.

15:57:37 SQL>

Abraço,

Ronaldo

Nenhum comentário:

Postar um comentário