ORA-08103
Objeto não existe mais (corrupção lógica)
O que significa
O bloco lido pertence a outro objeto ou tem data_object_id inesperado — corrupção lógica, frequentemente após recover de operação NOLOGGING, bug ou objeto truncado/dropado durante a leitura.
Ação imediata
Reexecute a query: se persistir com o mesmo objeto, trate como corrupção; se sumiu, pode ter sido DDL concorrente.
Como diagnosticar somente leitura — seguro de executar
ANALYZE TABLE ... VALIDATE STRUCTURE CASCADE; dbv no datafile; verificar se houve carga NOLOGGING + recover (V$DATAFILE.UNRECOVERABLE_TIME).
Correção definitiva
Recriar o objeto a partir de fonte confiável (export/CTAS do que for legível) ou restore/recover; MOS tem notas de diagnóstico por cenário.
Como prevenir
FORCE LOGGING (obrigatório com standby); evitar NOLOGGING sem backup imediato.
Regras de ouro antes de agir
- Preserve o estado atual. Antes de qualquer reparo, copie os arquivos como estão (datafiles, controlfiles, redo) — é a sua única volta se algo der errado.
- Diagnostique antes de executar. As consultas desta página são somente leitura; rode-as primeiro e entenda o cenário antes de qualquer comando que altere o ambiente.
- Teste fora de produção sempre que possível, e tenha um plano de rollback.
- Em corrupção, recovery ou ORA-600: abra um SR no Suporte Oracle. Tentativa e erro nesses cenários costuma transformar um problema recuperável em perda de dados.