Contournement erreur ora-08102 : clé d’index introuvable

Il y a quelques mois, j’ai rencontré une erreur « ORA-08102: clé d’index introuvable : obj# jjj, fichier kkk, bloc lll » dans une requête delete » sur une base Oracle 12.2.0.2.
A priori : il s’agit d’un index corrompu.
Cela peut être facilement corrigé en le recalculant.
Attention, il ne faut pas oublier le « online », sinon le problème peut subsister…

Effectivement, tout refonctionne correctement.

Quelques jours plus tard : le problème réapparait sur plusieurs tables du même schéma.
En approfondissant un peu, je remarque, par la requête suivante,  que le nombre d’entrées dans la table et dans la pk est différent :

Recherche dans « My Oracle Support » : ce problème apparait déjà en Oracle 7i.
Quelques correctifs sont testés mais le problème continue à réapparaitre régulièrement sur l’une ou l’autre table après les avoir appliqués.

Il est donc décidé de valider et corriger les index erronés après passage du traitement de création des lignes (donc avant le delete qui provoque l’erreur ORA-08102.
Pour cela, un petit script PL/SQL(toutes les tables concernées appartiennent au même schéma et leurs noms commencent de la meme façon) :

Depuis, des index erronés apparaissent environs une fois pas semaine mais sont immédiatement corrigés avant la détection de l’erreur…

 

About michelr

michel roba has written 1 post in this blog.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

%d blogueurs aiment cette page :