ORA-00257
Archiver travado — banco suspenso
⚠ Pontos de atenção antes de executar
Evite apagar archives pelo sistema operacional (rm): além de comprometer a capacidade de recuperação no intervalo apagado, o RMAN continua registrando os arquivos como existentes — e você só descobre no dia do restore. Havendo Data Guard, apagar archive ainda não aplicado no standby quebra a replicação; nesse caso, o recomendável é configurar a política do RMAN para respeitar o standby (CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON ALL STANDBY).
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_SIZEe 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.