ORA-01652
Não estendeu segmento temporário (TEMP cheia)
O ORA-01652 (“unable to extend temp segment by N in tablespace TEMP”) indica que uma operação precisou de espaço na tablespace temporária e não encontrou.
A tablespace TEMP é usada para ordenações (ORDER BY, GROUP BY), junções por hash, criação de índices, tabelas temporárias globais e operações que não cabem na memória (PGA). Quando o volume ultrapassa a memória disponível, o Oracle “derrama” para o disco — e é aí que a TEMP entra.
O reflexo natural é aumentar a TEMP. Mas antes vale a pergunta mais importante: por que uma consulta precisou de tanto espaço temporário? Muitas vezes o ORA-01652 é o sintoma de um plano de execução ruim, e aumentar a TEMP apenas adia o problema.
O que significa
Sort/hash/gtt sem espaço na tablespace temporária — query pesada, cartesian, ou TEMP subdimensionada.
Como o erro aparece
ORA-01652: unable to extend temp segment by 128 in tablespace TEMP
Passo a passo do diagnóstico consultas somente leitura
Descubra quem está consumindo a TEMP agora
SELECT s.sid, s.username, s.program, s.sql_id,
u.tablespace,
ROUND(u.blocks * ts.block_size / 1024 / 1024) AS mb_em_uso
FROM v$tempseg_usage u
JOIN v$session s ON s.saddr = u.session_addr
JOIN dba_tablespaces ts ON ts.tablespace_name = u.tablespace
ORDER BY u.blocks DESC;Veja o uso geral da tablespace temporária
SELECT tablespace_name,
ROUND(SUM(bytes)/1024/1024) AS mb_total,
COUNT(*) AS arquivos,
MAX(autoextensible) AS autoextend
FROM dba_temp_files
GROUP BY tablespace_name;Analise o SQL identificado antes de redimensionar
Com o sql_id obtido no primeiro passo, avalie o plano de execução. Procure por junções cartesianas, ordenações desnecessárias e junções por hash sobre volumes muito maiores do que o esperado — são as causas mais comuns de consumo excessivo de TEMP.
Se o consumo for legítimo, avalie o crescimento da TEMP
ALTER DATABASE TEMPFILE '/caminho/temp01.dbf' AUTOEXTEND ON NEXT 128M MAXSIZE 16G;
Ação imediata
Descubra QUEM consumiu a TEMP (não só aumente).
Correção definitiva
Otimizar a query (índice, evitar sort desnecessário, corrigir join); se workload legítimo, aumentar TEMP/autoextend.
Como prevenir
Alertas de uso de TEMP; resource manager para queries fugitivas.
Erros comuns — o que não fazer
- Aumentar a TEMP como primeira e única ação. Se a origem for um plano de execução ruim, você apenas troca um erro por uma consulta que consome dezenas de gigabytes e degrada todo o ambiente.
- Esperar que a TEMP “encolha” sozinha. O espaço alocado dentro do tempfile continua reservado para reuso; o tamanho do arquivo não diminui automaticamente.
- Esquecer que uma única consulta problemática pode consumir toda a TEMP e causar ORA-01652 em outras sessões — o usuário que reporta o erro raramente é o culpado.
Perguntas frequentes
O que causa o erro ORA-01652?
Uma operação que precisa de espaço temporário — ordenação, junção por hash, criação de índice ou tabela temporária — não encontrou espaço livre na tablespace TEMP. A causa pode ser uma TEMP subdimensionada ou, mais frequentemente, uma consulta com plano de execução ineficiente.
Só aumentar a tablespace TEMP resolve o ORA-01652?
Nem sempre. Se a origem for uma consulta com plano ruim, aumentar a TEMP apenas adia o problema. O recomendado é identificar primeiro qual sessão e qual SQL consumiram o espaço, e só então decidir entre otimizar a consulta ou redimensionar a tablespace.