sexta-feira, 23 de outubro de 2009

[oracle][index error] ORA-08102: index key not found, obj# 27063, file 6, block 65802

Banco de dados: Oracle XE

Problema



Quando tentei apagar um registro com dados estranhos da base a seguinte mensagem me foi informada:


ORA-08102: index key not found, obj# 27063, file 6, block 65802


Causa



Pesquisando, descobri que esse erro é acontece devido ao índice estar corrompido no banco de dados.
Para descobrir qual o objeto em questão basta pesquisar na tabela de objetos especificando o numero do objeto corrompido, descrito na mensagem.


SELECT * from all_objects WHERE object_id=27063;


O resultado do select acima foi as informações do indice com o problema.


Solução



Solução 1


Para resolver o problema primeiramente tentei dar um rebuild no índice utilizando o seguinte comando:


ALTER INDEX index_name REBUILD;


Após a execução do rebuild tentei remover o registro mas não obtive sucesso.

Solução 2


Minha segunda abordagem foi apagar o índice mesmo, pois analisando o índice em questão verifiquei que era um índice auxiliar de FK, isso que dizer que o índice pode ser apagado e criado novamente.


DROP INDEX index_name;


Após apagar o índice foi possível remover o registro e depois disso recriei o índice com o script original.

Referencia:
http://forums.oracle.com/forums/thread.jspa?threadID=61877

Nenhum comentário: