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