Développement > Utilitaires > Vérifications > Base de données > Recherche index 

Il arrive que pour des raisons d'exploitation, certains index de la base de données du progiciel n'aient pas été créés correctement sur un dossier donné. Ceci peut être la cas, par exemple, si on manque de place à un moment donné dans le tablespace temporaire sous Oracle, soit durant la revalidation d'un dossier, soit lors du changement de structure d'une table. Ces erreurs d'exploitation, qui sont du domaine de la base de données, provoquent bien entendu des traces d'erreurs qui doivent normalement alerter la personne qui exploite la base de données.

Reste que de telles erreurs n'empêchent pas le progiciel de fonctionner, mais qu'elles peuvent provoquer de sérieux problèmes de temps de réponse. Aussi, cet utilitaire a été fait afin de permettre de vérifier, dans un cas de dégradation de temps de réponse, si les index qui devraient être présents le sont bien.

Les tests faits sont les suivants :

  • on vérifie tout d'abord (c'est le test principal, et c'est avant tout le résultat de ce test qui est important), que les index décrits dans le dictionnaire de données et non désactivés par le biais d'un code activité sont bien présents sur la base.
  • on donne la liste des index qui n'existent pas car la table est inative dans le dossier courant. Si cette liste n'est pas vide, cela n'est en aucun cas gênant. C'est généralement le cas sur le dossier racine où les tables fonctionnelles sont présentes dans le dictionnaire mais ne sont pas validées sur le dossier racine.
  • on donne la liste des index interne Adonix. Il s'agit des index sur les tables internes Adonix qui ne sont pas décrites dans le dictionnaire. Par exemple, sous Oracle , c'est le cas pour les index des tables SYSBLBK et SYSCLBK.
  • on donne la liste des index qui existent sans être décrits dans le dictionnaire de données. Cette liste n'est en général pas vide, mais cela n'est en aucun cas gênant en termes de temps de réponse. Par exemple, on peut y trouver des tables issues d'une précédente version majeure du progiciel qui n'ont pas été effacées automatiquement pour des raisons de sécurité, ou des index de tables désactivées par le biais d'un code activité (dans ce cas la table est tout de même crée vide).
  • on peut enfin trouver des index dont le nom n'est pas conforme aux règles de nommage utilisées par ADONIX (un index est appelé NOMTABLE_NOMINDEX). Ces index peuvent parfaitement être utilisés par d'autres programmes accédant directement à la base de données.

Cet utilitaire, qui crée un fichier de trace, fonctionne pour la base Oracle et la base SQL Server. Il détermine automatiquement le type de la base courante et l'indique dans le fichier trace.

Un récapitulatif des différents cas rencontrés et des nombres d'index correspondants est affiché à la fin du fichier de trace. Ce récapitulatif fait aussi apparaître le nombre d'index liés aux objets longs (Clob/Blob) dans le cas d'une base de données Oracle.

Gestion de l'écran

Le lancement se fait simplement en répondant Oui à la boîte de confirmation qui s'affiche. On obtient ensuite l'affichage d'une trace.

Un exemple de fichier trace généré est donné ci-dessous.

Exemple de trace créée par la fonction

 

Liste des index du dictionnaire non existants sous Oracle
********************************************************************************
Table       Index       Description
--------------------------------------------------------------------------------
AABREV      AAB1        MOT
ABANK       ABN0        CRY+BAN
--------------------------------------------------------------------------------

                                                                                                -

Liste des index internes adonix sous Oracle
********************************************************************************
Table Oracle             Index
--------------------------------------------------------------------------------
SYSBLBK                  SYSBLBK_IDX
SYSBLBK                  SYS_IL0000005817C00002$$
SYSCLBK                  SYSCLBK_IDX
SYSCLBK                  SYS_IL0000005821C00002$$
--------------------------------------------------------------------------------

                                                                                                -

Index Oracle non décrits dans le dictionnaire
********************************************************************************
Table Oracle             Index
--------------------------------------------------------------------------------
TRCABX3                  IDX_TRCABX3
ZZVPO1                   INDEXTXT2_VPO1
ZZVPO1                   ZZVPO_VPO01
ZZVPO1                   SYS_IL0000009573C00047$$
--------------------------------------------------------------------------------

                                                                                                -

Index Oracle non conformes aux normes adonix
********************************************************************************
Table Oracle             Index
--------------------------------------------------------------------------------
TRCABX3                  IDX_TRCABX3
--------------------------------------------------------------------------------

                                                                                                -

Nombre d'index décrits dans le dictionnaire                    396
Nombre d'index inexistants car code activité non actif      -    0      ->  396
Nombre d'index inexistants car tables inactives             -    0      ->  396
Nombre d'index du dictionnaire non existants                -    2      ->  394
Nombre d'index internes adonix                              +    4      ->  398
Nombre d'index Oracle non décrits dans le dictionnaire      +    4      ->  402
Nombre d'index pour les objets longs (Clob/Blob)            +    3      ->  405
                                                              -----
Nombre d'index trouvés dans la base Oracle                  =  405

                                                                                                -

Fin normale de trace 27/03/06 15:15:15

Remarque : Des index non décrits dans le dictionnaire ne sont pas une anomalie, mais sont signalés pour information. Aussi, Oracle crée des index internes sur toute table contenant des textes longs (clobs) ou des objets longs (blobs) comme des images.

Tâche batch

Cette fonction peut être lancée en batch, mais il n'existe pas de tâche standard dédiée à son lancement.

Messages d'erreur

Il n'y a pas de message d'erreur autre que les messages d'erreur génériques.

Tables mises en oeuvre

SEEREFERTTO Reportez-vous à la documentation de Mise en oeuvre