Ingres : ajustements

Avant les quelques ajustements nécessaires à une utilisation agréable une petite explication sur les "locations". 
Les "locations" sont pour Ingres des espaces disques où peuvent être installées des bases de données ou des parties de bases de données, pour Oracle on utilise le mot "tablespace". Dans ces locations, pour chaque base, Ingres crée un répertoire portant le nom de la base. Un fichier (au sens OS) est ensuite créé pour la plupart des objets de base de données (tables, index ...). 
Toute base a, au moins, une location ou créer les bases "iidbdb" et "imadb". 
- iidbdb = "base des bases", c'est le catalogue général de Ingres. 
- imadb  = base contenant essentiellement des éléments liés à la performance. 

Variables "système" à mettre en place impérativement : 
II_SYSTEM mettre à '/opt/Ingres' 
II_INSTALLATION mettre à II 
PATH y ajouter $II_SYSTEM'/ingres/bin' et $II_SYSTEM'/ingres/lib' 
LD_LIBRARY_PATH y ajouter $II_SYSTEM'/ingres/lib' 
INGRES_TERM à mettre à "vt220" 
TERM à mettre à "vt220", on dispose alors d'un aspect et de fonctionnalités correctes dans une "konsole" pour les utilitaires "semi-graphiques" qui font le délice des amateurs. 
Un petit script à placer par exemple dans le fichier /etc/default/ingres et lancé par "source /etc/default/ingres" dans son ".bashrc" favori, un tel script est fourni en fichier attaché.

Ne pas oublier d'utiliser le "bon" type de terminal (pour moi "konsole") et forcer "TERM" et "INGRES_TERM" à "vt220". Mettre cela dans votre profil. 

Les utilitaires : 
- ingstart       sert a démarrer la base 
- ingstop       sert à stopper la base, possède quelque switchs d'usage courant "-force, -immediate, -kill" et d'autres à découvrir en tapant "ingstop -h". 
- ingstatus     permet de voir les process "Ingres" et leur état 
- cbf               très important, sert à gérer les paramètres de la base. 
- accessdb   qui permet de gérer bases, locations et utilisateurs 

Ceci dit penchons nous sur quelques scripts qui facilitent la vie :

  • Script de connexion 
    Le script proposé "ingres" est en à installer dans /etc/default et est "sourcé" dans les scripts de connexion des utilisateurs (ou exécuté par . /etc/default/ingres ) 
    Ce script est par ailleurs utilisé dans les scripts de démarrage proposés. 
    Afficher ce script.
  • Script de démarrage (automatique) 
    Le script proposé est en deux parties : 
    Un script coté "ingres" : start_stop à installer dans $II_SYSTEM/ingres 
    Afficher ce script. 
    Un script coté "système" : ingres_cmd à installer dans /etc/init.d avec les bons liens qui se contente d'appeler le script "ingres" 
    Afficher ce script.
  • NB : les fichiers attachés doivent être renommés en supprimant de suffixe ".txt"

Compléments de configuration : 
La partie essentielle est la configuration des caches. Ingres permet de créer des bases avec différentes tailles de page (une taille est à choisir pour la valeur par défaut), on peut même avoir des tables avec des tailles différentes dans la même base. 
Ici nous prendrons des pages de 8K pour se comparer aux autres bases déjà testées "à armes égales". 

Petit tour dans "cbf" qui a la "gueule" habituelle.

CBF - Configuration-By-Forms 
               Host: com-ingres 
          II_SYSTEM: /opt/Ingres 
    II_INSTALLATION: II 
   ┌────────────────────────┬────────────────────────┬───────────────┐ 
   │System Component        │Configuration Name      │Startup Count  │ 
   ├────────────────────────┼────────────────────────┼───────────────┤ 
   │Name Server             │(default)               │1              │ 
   │DBMS Server             │(default)               │1              │ 
   │Star Server             │(default)               │0              │ 
   │Locking System          │(default)               │1              │ 
   │Logging System          │(default)               │1              │ 
   │Transaction Log         │II_LOG_FILE             │1              │ 
   │Transaction Log         │II_DUAL_LOG             │0              │ 
   │Recovery Server         │(default)               │1              │ 
   │Archiver Process        │(not configurable)      │1              │ 
   │Remote Command          │(not configurable)      │1              │ 
   │Security                │(default)               │1              │ 
   └────────────────────────┴────────────────────────┴───────────────┘ 
  Configure(1)  EditCount(2)  Duplicate(3)  ChangeLog(8)  >

On commence par mettre à zero de "Startup count" de "Star Server" en : 
- se positionnant sur la bonne ligne 
- appuyant sur "F1" pour aller dans la zone de commandes 
- Frappant "Ed" pour EditCount 
On obtient alors une zone de saisie pour la variable concernée : ┌────────────────────────────────────────────────────────────────────────────┐ 
│ Please enter the number of copies of the selected component you want to    │ 
│ execute at startup:                                                        │ 
│                                                                             └────────────────────────────────────────────────────────────────────────────┘ 
On peut alors entrer la valeur souhaitée (ici 0) suivie de "Entrée". 
Toutes les actions s'exécutent, après affichage de la liste, selon le même principe : 
- se positionnr sur l'élément à modifier 
- appuyer sur "F1" 
- frapper le début de la fonction à exécuter 
- réaliser son rêve, frapper "Entrée". 
Pour configurer le "DBMS Server" : 
- se positionner sur la ligne "DBMS Server" 
- Frapper sur "F1" 
- Frapper "co" pour "configure" 
- accéder à la liste des valeurs de configuration 
La liste peut être parcourue, un appui sur "F2" donne accès à une aide dont on sort par "F3". 
Dans cette liste on remarque la variable "connect_limit" positionnée à 32 si vous avez bien suivi la configuration 
de départ. Ce qui nous intéresse dans un premirr temps est le "default_pagesize" magnifiquement déjà positionné 
à 8K. 
On va vérifier la taille des caches, "F1" puis saisir "cache" on voit alors que les caches de 2k et 8K sont "on", on 
se positionne sur le cache "8K", un petit coup de "F1" puis configure nous amène :

   ┌──────────────────────────────────────────────────────────────┐ 
   │                  DBMS Cache Parameters for 8k Buffers        │ 
   ├────────────────────┬────────────────────┬────────────────────┤ 
   │Name                │Value               │Units               │ 
   ├────────────────────┼────────────────────┼────────────────────┤ 
   │cache_guideline     │medium              │                    │ 
   │dmf_group_size      │8                   │data pages          │ 
   │dmf_separate        │OFF                 │boolean             │ 
   │dmf_write_behind    │ON                  │boolean             │ 
   │                    │                    │                    │ 
   └────────────────────┴────────────────────┴────────────────────┘ 
       Edit(2)  Derived(5)  Restore(6)  ChangeLog(8)  Help(PF2)  >

Un petit coup de "Derived" sur "cache_guideline" nous affiche le détail de la mémoire affectée :

   ┌────────────────────────────────────────────────────────────────────────┐ 
   │                  Derived DBMS Cache Parameters for 8k                  │ 
   ├────────────────────┬────────────────────┬────────────────────┬─────────┤ 
   │Name                │Value               │Units               │Protected│ 
   ├────────────────────┼────────────────────┼────────────────────┼─────────┤ 
   │dmf_cache_size      │24000               │data pages          │no       │ 
   │dmf_free_limit      │750                 │data pages          │no       │ 
   │dmf_group_count     │750                 │group buffers       │no       │ 
   │dmf_memory          │245760000           │bytes               │no       │ 
   │dmf_modify_limit    │18000               │data pages          │no       │ 
   │dmf_wb_end          │7200                │data pages          │no       │ 
   └────────────────────┴────────────────────┴────────────────────┴─────────┘ 
 

J'ai "forcé" le "dmf_cache_size à 24000 et je force dmf_free_limit et dmf_group_count à 2400 pour affecter un peu plus de mémoire aux buffers. Je ne touche pas aux autres valeurs. 
Les autres valeurs fixées par défaut ne doivent pas être modifiées sans un besoin précis (machines de production) et des avis "autorisés" sous peine de manque de performance, l'utilisation de la touche "F2" permet de se documenter sur les variables. 
Après notre petit "bricolage" on sort de ces modifications par "F3" et cbf nous propose de sauvegarder nos mises à jour, nous restons positionnés sur "Yes" et l'appui sur "Entrée" sauvegarde le tout. Un appui sur "F4" nous permet de sortir définitevement de cbf. Il ne nous reste plus qu'à appliquer nos modifications : 
"ingstop -immediate"   cela rappelle le "shutdown immediate;" de Oracle ? 
Puis : 
"ingstart" 
Et c'est Parti ...