quarta-feira, 14 de janeiro de 2015

Como limpar a Tablespace Temporária [Oracle];

Já devem ter passado por situações em que fosse necessário limpar a Tablespace TEMP.

Caso você tenha tentado efetuar um DROP para depois recriar a Tablespace TEMP, com certeza o seguinte erro retornou:

SQL> DROP TABLESPACE temp;
drop tablespace temp
*
ERROR at line 1:
ORA-12906: cannot drop default temporary tablespace

Por segurança do próprio Oracle, não conseguimos remover essa Tablespace, ao menos que tenhamos uma outra por default.

Ok...
Para começarmos, o primeiro passo é criar uma outra Tablespace temporária - TEMP2

--Obs: caso não saiba o local do diretório, verificar nas
--views V$TEMPFILE ou DBA_TEMP_FILES.
CREATE TEMPORARY TABLESPACE TEMP2
TEMPFILE 'C:\ORACLE\ORADATA\SW92\TEMP2.DBF' SIZE 500m REUSE
AUTOEXTEND ON NEXT 100M MAXSIZE unlimited
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M;

--Alteramos para default a nova tablespace recém criada (TEMP2).  
ALTER DATABASE DEFAULT TEMPORARY TABLESPACE TEMP2;

--Efetuamos um DROP na antiga Tablespace (No meu caso era a TEMP).
DROP TABLESPACE TEMP including contents and datafiles;

Agora caso queira deixar a Tablespace Temporária com o mesmo nome que antes, será necessário efetuar os passos abaixo.

--Criar uma outra Tablespace Temporária
CREATE TEMPORARY TABLESPACE TEMP
TEMPFILE 'C:\ORACLE\ORADATA\SW92\TEMP.DBF' SIZE 500m REUSE 
AUTOEXTEND ON NEXT 100M MAXSIZE unlimited 
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M;

--Alterar para default
ALTER DATABASE DEFAULT TEMPORARY TABLESPACE TEMP;

--Remover a outra Tablespace temporária.
DROP TABLESPACE TEMP2 including contents and datafiles;


Att,
Bruno Duarte.

Nenhum comentário:

Postar um comentário