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 TEMPORIA 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 ''; EXEMPLO 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 !