OLATOracle Log Analysis Tool Abrir a ferramenta
AtençãoEspaço/Undo

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.

Erros relacionados (Espaço/Undo)

Vinicius Gabriel Lana

Vinicius Gabriel Lana

Sócio & CTO na MigraTI Soluções em TI · 8 anos como DBA (Oracle, SQL Server, PostgreSQL, MySQL)