RECRIAR TABLESPACE TEMPORARIA
O tamanho do segmento sempre será calculado pelo tamanho db_block_size da base.
select value from v$parameter where name='db_block_size';
VALUE
------
8192
calculo PARA OLTP
select (1024*1024)+8192*2 from dual;
(1024*1024)+8192*2
------------------
1064960
1 - SELECT property_value FROM database_properties WHERE property_name = 'DEFAULT_TEMP_TABLESPACE';
PROPERTY_VALUE
---------------
GRUPO_01
1 linha selecionada.
2- A tablespace que você quer recriar é a do passo 1.
Se for tem que criar uma nova tablespace e/ou alterar a tablespace default temporary.
Para criar uma tablespace temporária:
exemplos :
CREATE TEMPORARY TABLESPACE TEMP01 TEMPFILE '+DG_<DB_NAME>_TEMP' SIZE 1001M AUTOEXTEND ON NEXT 1064960 MAXSIZE UNLIMITED extent management local UNIFORM SIZE 1064960 segment space management MANUAL;
CREATE TEMPORARY TABLESPACE TEMP01_GRANDE TEMPFILE '+DG_<DB_NAME>_TEMP' SIZE 1001m AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED extent management local UNIFORM SIZE 100m segment space management MANUAL
Para alterar a default temporary
ALTER DATABASE DEFAULT TEMPORARY TABLESPACE <nome da tablespace temporary>;
exemplos :
ALTER DATABASE DEFAULT TEMPORARY TABLESPACE temp01;
ALTER DATABASE DEFAULT TEMPORARY TABLESPACE temp01_grande;
3- Se for RAC. Tem que matar todas as sessões em todos os nodes. Execute isso em todos os nodes.
Se não for RAC apenas uma vez.
select 'alter system kill session '||chr(39)||b.sid||','||B.SERIAL#||chr(39)||' immediate;'
FROM GV$SORT_USAGE A,GV$SESSION B
WHERE A.INST_ID=B.INST_ID
AND A.SESSION_NUM=SERIAL#
AND A.TABLESPACE='TEMP01_GRANDE'
/
4- APAGAR A TABLESPACE
DROP TABLESPACE <nome da tablespace temporaria> INCLUDING CONTENTS AND DATAFILES;
5- CRIAR A TABLESPACE TEMPORARIA CONFORME ITEM 2.
OBS. A TABLESPACE DEFAULT TEMPORARY pode fazer parte de um grupo de tablespace temporaria.
Você terá que retirar a tablespace que você quer matar do grupo.
Depois matar todas as sessões conforme item 3.
para retirar do group
ALTER TABLESPACE <nome da tablespace temporaria> TABLESPACE GROUP '';
ALTER TABLESPACE TEMP1 TABLESPACE GROUP '';
ALTER TABLESPACE TEMP2 TABLESPACE GROUP '';
Para colocar no group
ALTER TABLESPACE <nome da tablespace temporaria> TABLESPACE GROUP <nome do group>;
EXEMPLO
ALTER TABLESPACE TEMP1 TABLESPACE GROUP GROUP_01;
ALTER TABLESPACE TEMP2 TABLESPACE GROUP GROUP_01;
FACIL
Em quais casos se aplica recriar a tablespace temporaria ?
Ótimo post para quem está iniciando !