ORA-03113
End-of-file no canal (conexão morreu)
O ORA-03113 (“end-of-file on communication channel”) é um erro genérico e frustrante: ele apenas informa que a conexão com o banco foi interrompida de forma abrupta. Ele não diz o porquê.
A informação mais útil sobre este erro é a seguinte: na maioria das vezes, o ORA-03113 é o sintoma, não a doença. O que costuma acontecer é que o processo servidor que atendia a sua sessão morreu — e quando um processo morre, quem estava do outro lado recebe um “fim de arquivo” no canal de comunicação.
Por isso, o primeiro lugar a olhar não é a rede: é o alert log do banco, no exato horário do erro. É muito comum encontrar ali um ORA-00600 ou ORA-07445 que derrubou o processo.
O que significa
O processo servidor sumiu no meio da conversa — crash do servidor (ORA-600/7445!), kill, ou rede/firewall cortando.
Como o erro aparece
ERROR at line 1: ORA-03113: end-of-file on communication channel Process ID: 24518 Session ID: 245 Serial number: 33127
Passo a passo do diagnóstico consultas somente leitura
Vá direto ao alert log, no horário exato do erro
Procure por ORA-00600, ORA-07445, “terminating the instance” ou qualquer registro de incidente no mesmo minuto. Se encontrar, o ORA-03113 foi apenas a consequência — trate o erro encontrado.
Verifique se a instância continua no ar
SELECT instance_name, status, database_status FROM v$instance;
Se não houver nada no alert log, investigue a camada de rede
Quando o servidor não registra nada, a hipótese mais provável é que algo entre o cliente e o banco cortou a conexão — tipicamente um firewall com timeout de ociosidade.
Um sintoma clássico de firewall: a queda acontece sempre após o mesmo tempo de inatividade
Se as sessões caem sempre após 30 ou 60 minutos paradas, é quase certamente um dispositivo de rede encerrando conexões ociosas. A mitigação do lado do banco é o Dead Connection Detection:
Ativar keepalive no sqlnet.ora do servidor
SQLNET.EXPIRE_TIME = 10
Verifique também os limites do sistema operacional
Falta de memória (com o OOM killer derrubando processos) e limites de ulimit baixos também produzem esse quadro. Vale checar o dmesg do servidor no horário do incidente.
Ação imediata
SEMPRE olhe o alert do banco no mesmo horário: 3113 no cliente costuma ser sintoma de crash no servidor.
Correção definitiva
Tratar a causa no servidor (bug/patch) ou rede.
Como prevenir
Correlação cliente-servidor de horário (o OLAT cruza módulos por timeline).
Erros comuns — o que não fazer
- Tratar o ORA-03113 como “problema de rede” antes de olhar o alert log. Em ambientes de produção, é muito comum que ele esteja mascarando um erro interno do Oracle que derrubou o processo servidor.
- Ignorar a recorrência. Um ORA-03113 isolado pode ser um cliente que fechou abruptamente. Vários por dia, no mesmo horário ou no mesmo comando, indicam um problema estrutural que vai voltar.
- Aumentar timeouts sem entender a causa. Se o processo servidor está morrendo, nenhum ajuste de timeout vai resolver.
Perguntas frequentes
O que significa ORA-03113 end-of-file on communication channel?
Significa que a conexão entre o cliente e o banco foi encerrada de forma inesperada. Normalmente o processo servidor que atendia a sessão terminou de maneira anormal, mas também pode ser causado por dispositivos de rede que encerram conexões ociosas.
Onde devo procurar a causa do ORA-03113?
No alert log do banco de dados, no horário exato do erro. É frequente encontrar ali um ORA-00600 ou ORA-07445 que derrubou o processo servidor. Se o alert log não registrar nada, a investigação deve seguir para a camada de rede e para os limites do sistema operacional.