OLATOracle Log Analysis Tool Abrir a ferramenta
CríticoEspaço/Undo

ORA-00257

Archiver travado — banco suspenso

O ORA-00257 (“archiver error. Connect internal only, until freed”) é uma das poucas situações em que o banco de dados, mesmo estando de pé, para de aceitar transações. Por isso ele costuma virar incidente crítico em minutos.

O mecanismo é simples: quando o banco está em ARCHIVELOG, cada redo log precisa ser arquivado antes de poder ser reutilizado. Se o destino do archive (normalmente a Fast Recovery Area) fica sem espaço, o processo ARCn não consegue arquivar, os redo logs não podem ser reciclados — e qualquer transação que precise gerar redo simplesmente fica travada esperando.

Ou seja: o banco não caiu, mas parou. A prioridade número um é liberar espaço no destino de archive.

O que significa

Sem espaço para gravar archive (FRA cheia ou destino lotado/indisponível). Novas transações FICAM TRAVADAS até liberar.

Como o erro aparece

ORA-00257: archiver error. Connect internal only, until freed.

Passo a passo do diagnóstico consultas somente leitura

Confirme a ocupação da Fast Recovery Area

SELECT name,
       space_limit/1024/1024/1024  AS limite_gb,
       space_used /1024/1024/1024  AS usado_gb,
       ROUND(space_used/space_limit*100,1) AS pct_uso
  FROM v$recovery_file_dest;

Descubra o que está ocupando o espaço

Este passo evita o erro clássico de sair apagando archive quando o vilão é outro (flashback logs, por exemplo, costumam surpreender):

Ocupação por tipo de arquivo

SELECT file_type,
       percent_space_used  AS pct_usado,
       percent_space_reclaimable AS pct_recuperavel,
       number_of_files AS qtd
  FROM v$recovery_area_usage
 ORDER BY percent_space_used DESC;

Verifique se algum destino de archive está com erro

SELECT dest_id, status, binding, error
  FROM v$archive_dest
 WHERE status <> 'INACTIVE';

Libere espaço da forma correta — via RMAN

RMAN> BACKUP ARCHIVELOG ALL DELETE INPUT;

Se o backup já existe e você só precisa liberar espaço

A cláusula BACKED UP 1 TIMES é a trava de segurança aqui: ela restringe a exclusão ao que comprovadamente já tem backup. Ainda assim, se você tiver Data Guard, confirme antes que o standby já aplicou esses archives — “ter backup” não significa “já foi aplicado no standby”. Rodar LIST ARCHIVELOG ALL; antes ajuda a ver o que será afetado.

Comando de exclusão (revise o filtro antes de executar)

RMAN> DELETE ARCHIVELOG ALL BACKED UP 1 TIMES TO DISK COMPLETED BEFORE 'SYSDATE-1';

Ação imediata

URGENTE: libere espaço de archive agora — o banco está efetivamente parado para escrita.

Correção definitiva

RMAN: BACKUP ARCHIVELOG ALL DELETE INPUT (ou DELETE ARCHIVELOG já backupeados); aumentar DB_RECOVERY_FILE_DEST_SIZE; corrigir destino indisponível.

Como prevenir

Backup de archive frequente + alerta em 80% da FRA; nunca deletar archive no SO sem crosscheck.

Erros comuns — o que não fazer

  • Apagar os archives pelo sistema operacional (rm). É o erro mais grave e mais comum nesse cenário. Você perde a capacidade de recuperar o banco no intervalo apagado, e o RMAN continua achando que os arquivos existem (só descobrindo no dia em que você precisar restaurar). Se precisar mesmo, use RMAN — ele mantém o catálogo consistente.
  • Apagar archive que o standby ainda não aplicou. Em ambientes com Data Guard, isso quebra a replicação e obriga a um trabalho manual de recuperação do gap. Configure a política: CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON ALL STANDBY;
  • Apenas aumentar o DB_RECOVERY_FILE_DEST_SIZE e considerar resolvido. Isso compra tempo, mas se não existe uma rotina de backup que expurgue archives, o problema volta — normalmente no pior momento.
  • Esquecer de verificar se a rotina de backup parou de rodar. Muitas vezes o ORA-00257 é apenas o sintoma; a causa é um job de backup que falha silenciosamente há dias.

Perguntas frequentes

O que significa o erro ORA-00257 no Oracle?

Significa que o processo de arquivamento (ARCn) não conseguiu gravar o archive log, normalmente porque o destino ou a Fast Recovery Area está sem espaço. Como os redo logs não podem ser reciclados, o banco suspende novas transações até que o espaço seja liberado.

O banco fica indisponível com ORA-00257?

Na prática, sim para gravação. A instância continua no ar e conexões administrativas funcionam, mas transações que precisem gerar redo ficam travadas até que haja espaço para arquivar.

Posso apagar os arquivos de archive log manualmente para resolver?

Não é recomendado. Apagar pelo sistema operacional compromete a capacidade de recuperação e deixa o catálogo do RMAN inconsistente. O correto é usar o RMAN para fazer backup e liberar os arquivos, respeitando a política de retenção e eventuais standbys.

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)