Ingres

Ingres jpp

Dans ce chapitre je vais essayer de présenter la base de données Ingres (prononcer INGRESS ! pour faire américain) avec son inévitable installation dans la version 10 OpenSource. 
L'installation sera réalisée sur une machine virtuelle (Centos-5.4 64bits sous KVM) dont l'installation est détaillée dans un autre article. 
Afin de rester dans des "normes" raisonnable une configuration analogue à celle utilisée pour Oracle 10g et Sybase 15 est utilisée, pour mémoire elle est constituée de :

  • 1 CPU
  • 1536 Mo de RAM
  • 3 disques de 16 Go 
    • un pour le système
    • un pour les données
    • un pour les log et les espaces temporaires

Les disques sont de "simples" partitions LVM sur un ensemble de disques montés en miroir (deux miroirs différents pour données et log). 
Cette configuration permettra de faire quelques comparaisons avec le mini-test défini dans cet article. 
La machine physique est différente mais sur un seul processeur c'est en gros équivalent (2,4Ghz contre 2,6). 
 

Ingres : installer (1)

Ingres : installer (1) jpp

Pré-requis : Après l'installation du système il est nécessaire (sauf si vous avez chosi KDE) d'installer KDEbase afin de disposer de "konsole", l'explication est toute simple : seul le terminal "konsole" de KDE permet, à ma connaissance, d'avoir le rendu "semi-graphique" utilisé par les outils Ingres, et surtout d'avoir accès aux "bonnes" touches de fonction exploitées par tous les outils de configuration de Ingres. 
J'installe aussi mon éditeur préféré "yum install vim-X11". 
Le logiciel a été téléchargé et installé dans /var/tmp/INSTALL : 
- ingres-10.0.0-122-NTPL-gpl-linux-ingbuild-x86_64.tgz (#60 Mo) 
Le "détarage" du fichier crée un répertoire du même nom comprenant : 
-rwxr-xr-x 1 ingres 50000    17847 avr 21 19:10 ingres_express_install.sh 
-rw-rw-r-- 1 ingres 50000 78571520 avr 21 19:50 ingres.tar 
-rwxr-xr-x 1 ingres 50000    13299 avr 21 19:10 install.sh 
-rw-r--r-- 1 ingres 50000    15238 avr 21 19:02 LICENSE 
-rw-r--r-- 1 ingres 50000    10636 avr 21 19:29 readme_a64_lnx_nptl.html 
-rw-rw-r-- 1 ingres 50000    28075 avr 21 19:29 readme.html 
L'installation étant parfois en mode texte, parfois en mode semi-graphique je vais essayer de "rendre" au mieux l'aspect des écrans, donc ici pas de belles images, que du texte ! 
Je me connecte dans une session X avec le user "root" (c'est comme cela depuis la version 2006r3) pour lancer l'installation dans une "konsole". 
Ne pas lancer le tentant "ingres_express_install.sh" car il ne réalise qu'une installation minimale avec les données dans le répertoire /opt/Ingres ce qui n'est pas le but visé. 
Il suffit de lancer "./install.sh". 
- Première question : "Please choose a location to install Ingres ", il faut indiquer le nom du répertoire d'installation du logiciel, ici "/opt/Ingres", ce répertoire sera ensuite "pointé" par la variable "II_SYSTEM". 
- Deuxième question "Please choose a user to install Ingres ", indiquer "ingres" puisque nous avons créé cet utilisateur. 
- On défile ensuite la licence GPL ... que l'on accepte ...

Please identify the type of terminal (or terminal emulation software) 
you are using by entering its Ingres termcap name (e.g. 'vt100f' for a 
VT100 with a function key pad).  If you do not know the termcap name for 
your terminal, press return to see a list of the available termcap names. 

Enter termcap name, or press return for a list:

Répondre ici "konsole", un menu semi-graphique s'affiche alors :

 INGBUILD - Ingres Installation Utility 
   ┌────────────────────────────────────────────────────────────────────────┐ 
   │        II_SYSTEM: /opt/Ingres                                          │ 
   │     Distribution: /var/tmp/INSTALL/ingres-10.0.0-122-NPTL-gpl-linux-in │ 
   └────────────────────────────────────────────────────────────────────────┘ 
    Custom  - Select this option in order to view the contents of the 
              distribution medium and/or select components for installation 
              on your system.  This option will also allow you to upgrade 
              an existing installation of INGRES products. 

    Package - Select predefined packages for installation on your system. 

    Help    - See more instructions on using this program. 

    To select a menu item, press ESC and type the name of the menu item. 

  CustomInstall  PackageInstall  Help  Quit  :

Choisir CustomInstall (Cu) l'écran suivant s'affiche :

INGBUILD  - Custom Install from Distribution Medium 

    Distribution: /var/tmp/INSTALL/ingres-10.0.0-122-NPTL-gpl-linux-ingbuild-x 
   ┌──────────────────────────────────────────────────────┬─────┬──────────┐ 
   │               Custom Component Options               │ Size│ Install? │ 
   ├──────────────────────────────────────────────────────┼─────┼──────────┤ 
   │Embedded SQL Precompilers                             │  23M│Yes       │ 
   │Ingres 32bit support                                  │  42M│Yes       │ 
   │INGRES 6.x Compatible Message Files                   │   4M│Yes       │ 
   │Ingres Intelligent DBMS                               │ 104M│Yes       │ 
   │Ingres DTP for Tuxedo                                 │  56M│Yes       │ 
   │Ingres Networking                                     │  66M│Yes       │ 
   │Ingres Object Management                              │ 879K│Yes       │ 
   │Ingres ODBC Driver                                    │  65M│Yes       │ 
   │Ingres Protocol Bridge                                │ 947K│Yes       │ 
   │Ingres C2 Security Auditing                           │  25K│Yes       │ 
   │Ingres Replicator                                     │   2M│Yes       │ 
   └──────────────────────────────────────────────────────┴─────┴──────────┘ 
    II_SYSTEM  : /opt/Ingres 
    To add or remove products from the list of products to be installed, 
    enter 'y' or 'n' in the 'Install?' column. 
  Install  ExpressInstall  GetInfo  Help  End 
 

Ici il faut vérifier que tout est à "Yes", puis choisir "Install" (F5), une "boite" affiche un petit récapitulatif :

 INGBUILD  - Custom Install from Distribution Medium 

    Distribution: /var/tmp/INSTALL/ingres-10.0.0-122-NPTL-gpl-linux-ingbuild-x 
   +------------------------------------------------------+-----+----------+ 
   |               Custom+-----------------------------------------------------+ 
   |=====================|Products selected: 16     Disk space required:   89M | 
   |Ingres ODBC Driver   | Support modules : 19                           100M | 
   |Ingres Protocol Bridg|                   --     Temporary storage  :   10M | 
   |Ingres C2 Security Au|                                                ---- | 
   |Ingres Replicator    |            Total: 35                           199M | 
   |Ingres Spatial Object|                                                     | 
   |Ingres Data Access Se|Do you want to proceed with the installation?        | 
   |Ingres Star Distribut+-------------+---------------------------------------+ 
   |Query and Reporting R|Yes          |Install all selected products          | 
   |Query and Reporting T|No           |Cancel requested installation          | 
   |Terminal Monitors    +-------------+---------------------------------------+ 
   |VisionPro                                             |  66M|Yes       | 
   +------------------------------------------------------+-----+----------+ 
    II_SYSTEM  : /opt/Ingres 
    To add or remove products from the list of products to be installed, 
    enter 'y' or 'n' in the 'Install?' column.

Il suffit de frapper "Entrée" sur le "Yes" présélectionné. 
L'écran s'anime pendant la vérification puis propose dans une nouvelle "boîte" : "Do you want to set up these products now", frapper "Entrée" sur le "Yes" présélectionné. 
Premier setup : "Setting up Application-By-Forms..." 
Se contenter d'appuyer sur entrée, un petit message de confirmation s'affiche : 

ING_ABFDIR configured as /opt/Ingres/ingres/abf 
Application-By-Forms setup complete. 
Press RETURN to continue: 
Il faut encore faire "Entrée" puis un écran "Setting up the Ingres Intelligent DBMS..." récapitule les paramètres de Ingres DBMS, frapper "y" et "Entrée" puis le message suivant s'affiche :

Ingres has the capability to guarantee integrity of all committed 
database transactions in the event of a system software failure or 
single storage device failure.  IMPORTANT NOTE: if a second storage 
device fails before recovery from an initial failure has taken place, 
committed transactions may be lost. 

If you intend to take advantage of this capability, you need to 
have at least two independent storage devices available (one in 
addition to the one Ingres is being installed on).  If you do not 
have two independent storage devices available, but would like to take 
advantage of this capability, you should not complete this setup 
procedure at this time. 
Do you want to continue this setup procedure? (y/n) [y]

Il s'agit d'un écran d'information au sujet du système de logging, ce type d'écran appairatra par la suite pour les phases importants. Ingres permet d'utiliser un "dual log" sur un disque différent pour augmenter la sécurité des données en cas d'incident sur un disque. Nous ne nous servirons pas de cette fonctionnalité. 
On frappe donc "y" et "Entrée" sans autre forme de procès et l'installeur génère la configuration par défaut. Celle-ci nous conviendra souvent. 
Please enter a valid installation code [II] 
Frapper "Entrée" 
Do you want instructions on configuring your storage locations? (y/n) [y] 
Les "locations" sont les répertoires où Ingres place les différentes catégories d'éléments (log, journal,bases de données, espace de travail ....) , la plupart de ces "locations" sont ensuite pointées par des variables de la forme "II_nom_variable",je préciserais ces éléments au passage, vous pouvez répondre "Y" et voir l'ensemble des conseils, ici je réponds "N". 
II_DATABASE 
Ici je désire que les données des bases soient placées dans le répertoire "/DATA/ingres", je réponds donc /DATA/ingres. 
Please enter the default location for the Ingres Checkpoint Files: 
[/opt/Ingres] 
Les fichiers de "checkpoint" ne sont pas volumineux, ils peuvent très bien être stockés à l'endroit proposé, un jeu de sous-répertoires sera créé, il convient donc de faire "Entrée".

  ---------------------------------------------------------------------- 
|                             *** WARNING ***                          | 
|  Do not store checkpoint, journal or dump files for a database on    | 
|  the same physical device as its data, or you will not be able to    | 
|  recover the data stored on that device if it fails.  Please verify  | 
|  that the default location you have entered for your                 | 
|  Ingres Checkpoint Files:                                            | 
|         /opt/Ingres                                                  | 
|  is on a different physical device from the default location you     | 
|  have entered for your database files:                               | 
|         /DATA/ingres                                                 | 
---------------------------------------------------------------------- 
Is the value you have entered for II_CHECKPOINT correct? (y/n)

Ce type de "warning" est affiché régulièrement afin de nous inciter à réfléchir à la sécurité de notre installation. Si nous sommes "bons" répondre "y" sans crainte. 

Please enter the default location for the Ingres Journal Files: 
[/opt/Ingres] 
Ici aussi nous pouvons prendre cette valeur par défaut. 

Please enter the default location for the Ingres Dump Files: 
[/opt/Ingres] 
Ici aussi nous pouvons prendre cette valeur par défaut. 

Please enter the default location for the Ingres Work Files: 
[/opt/Ingres] 
Ici nous voulons utiliser le même disque que le log, nous mettons donc le nom de notre répertoire réservé : "/LOG/ingtemp". 
Do you want to disable the backup transaction log? (y/n) [n] 
Il s'agit ici du fameux "Dual_log" dont nous n'avons pas besoin pour une machine de test, il n'en serait pas de même en production où il faudrait le positionner sur un autre disque physique que le log standard, nous répondons donc "Y". 

The default size for the Ingres transaction log is: 
           262144K bytes ( 256M bytes) 
Do you want to change the default transaction log size? (y/n) [n] 

Ici la taille proposée est de 256Mo, le log étant un buffer circulaire il est nécessaire de la positionner à une taille suffisante pour supporter la charge transactionnelle. Ici pour certains tests "lourds" il sera positionné à 4Go, répondons "n" pour pouvoir proposer une valeur différente. 
Please enter the desired transaction log size (in Megabytes): 4096 
Suivi de "Entrée" 
Please enter a location for the Ingres transaction log: 
[/opt/Ingres] 
Mettre ici le répertoire que nous avons prévu pour ceci : "/LOG/ingres".

You must now specify the number of CPUs (processors) in this machine 
so that Ingres may be set up for this server. If you do not know 
the exact number of CPUs, but know that this is a multi-cpu machine, 
enter a value of 2. 
The value you specify will be used to set the Ingres variable 
II_NUM_OF_PROCESSORS and possibly other configuration variables. 
Please enter the number of CPUs in this machine [1] Y

Ici, un seul CPU est prévu, il faut ensuite choisir le fuseau horaire (en deux étapes), première liste : 
            AFRICA 
              ASIA 
         AUSTRALIA 
       MIDDLE-EAST 
     NORTH-AMERICA 
    NORTH-ATLANTIC 
     SOUTH-AMERICA 
     SOUTH-PACIFIC 
    SOUTHEAST-ASIA 
        GMT-OFFSET 
Please enter one of the named regions: 

Saisir "NORTH-ATLANTIC" qui envoie sur l'écran suivant où nous choisirons "EUROPE-WESTERN", il faut ensuite valider cette configuration. 

The time zone you have selected is: 
        EUROPE-WESTERN (Western European Time Zone) 
If this is not the correct time zone, you will be given the opportunity to 
select another region. 
Is this time zone correct? (y/n) [y] 

La réponse est "y", sauf si l'on a fait n'importe quoi. Il faut ensuite choisir le jeu de caractères à utiliser pour les données : 

This setting must be assigned one of the following values: 
        UTF8         ALT        KOI8 
       PC857      ARABIC          CW 
     DOSASMO     ELOT437       GREEK 
      HEBREW    HPROMAN8    IBMPC437 
    IBMPC850    IBMPC866    IS885915 
    ISO88591    ISO88592    ISO88595 
    ISO88597    ISO88599    CSGB2312 
       CSGBK    CHINESET    CHINESES 
       CHTHP     CHTBIG5      CHTEUC 
    KANJIEUC      KOREAN    SHIFTJIS 
    PCHEBREW     SLAV852        THAI 
     WARABIC     WHEBREW     WIN1250 
     WIN1252     WIN1253       WTHAI 
Please enter a valid character set [ISO88591] 
J'aime bien le "ISO885915" que je spécifie. 

The character set you have selected is: 
        IS885915 (ISO-8859-15 (Latin 9)) 
Is this the character set you want to use? (y/n) [y] 
Répondre "y" évidemment. 

Cette "page" étant déjà très longue l'installation se poursuit sur une autre page.

Ingres : installer (2)

Ingres : installer (2) jpp

Installation Ingres suite. 
How many concurrent users do you want to support? [32] 
Répondre "Entrée", 32 pour des tests c'est déjà pas mal. L'initialisation proprement dite de la BDD commence alors par le LOG

The primary transaction log will now be created as an ordinary (buffered) 
system file.  For information on how to create a "raw", or unbuffered, 
transaction log, please refer to the Ingres Installation Guide, after 
completing this setup procedure. 

Creating a 1048576K byte transaction log file... 

0%          25%         50%         75%         100% 
||||||||||||||||||||||||||||||||||||

Cela dure quelques instants, le temps de formater 1Go sur le disque. 
Do you wish to associate date data type to refer to ingresdate ? (y/n) [y] 
Valider le "y". 
Do you need strict compliance to the ANSI/ISO standard? (y/n) [n] 
Valider le "n" cela déclenche l'installation proprement dite, les informations présentées ont été "raccourcies" :

Ingres/ingstart 
Checking host "com-ingres" for system resources required to run Ingres... 
Your system has sufficient resources to run Ingres. 
Starting your Ingres installation... 
Starting the Name Server... 
Allocating shared memory for Logging and Locking Systems... 
Starting the Recovery Server... 
..... 
  Creating DBMS System Catalogs . . . 
  Modifying DBMS System Catalogs . . . 
  Creating Database Database System Catalogs . . . 
  Modifying Database Database System Catalogs . . . 
  Creating Standard Catalog Interface . . . 
  Creating Front-end System Catalogs . . . 
...... 
This setup process can create and populate a demonstration database (demodb) 
which will be used by the Ingres demonstration applications. 
Do you want demodb to be created? (y/n) [y]

Répondre "y" et valider, nous disposerons ainsi d'une petite base de départ. 
..... 
la base "demo" s'installe 
...

 ... 
executing checkpoint to disk 
ending checkpoint to disk /opt/Ingres/ingres/ckp/default/demodb of 1 locations 
Shutting down the Ingres server... 
Ingres Intelligent DBMS setup complete. 
Refer to the Ingres Installation Guide for information about 
starting and using Ingres. 
Press RETURN to continue:

L'initialisation de la base est terminée on passe à la suite :

 Setting up Ingres Networking... 
..... 
If you do not need access to this Ingres server from other hosts, 
then you do not need to set up Ingres Networking. 
Do you want to continue this setup procedure? (y/n) [y]

Répondre "y" et valider

 Installation passwords offer the following advantages over user passwords: 
+ Remote users do not need login accounts on the server host. 
+ Installation passwords are independent of host login passwords. 
+ Installation passwords are not transmitted over the network in any 
  form, thus providing greater security than user passwords. 
+ User identity is always preserved. 
If you need more information about Ingres Networking authorization, 
please refer to the Ingres Connectivity Guide. 
Press RETURN to continue:

Comme d'habitude les conseils pour la suite, nous utiliserons un "Installation password". 
Do you want to create an installation password for this server? (y/n) 
Répondre "y" et valider. 
..... 
Enter installation password: 
On entre un beau mot de passe ... et on confirme, on le note pour ne pas l'oublier ! .

Installation password created.  The name server has been shut down. 
Ingres Networking has been successfully set up in this installation. 
You can now use the "ingstart" command to start your Ingres server. 
Refer to the Ingres Installation Guide for more information about 
starting and using Ingres. 
Press RETURN to continue:

En pressant "Return" on arrive sur la configuration "ODBC" : 
Enter the default ODBC configuration path [ /usr/local/etc ]: 
Valider sans remords 
The default ODBC configuration path is /usr/local/etc 
Is the path information correct? (y/n) [y] 
Répondre "y" et confirmer la réponse. 
The default ODBC configuration path is /usr/local/etc 
Is the path information correct? (y/n) [y] y 
Répondre "y" sans hésiter 

Is this always a read-only driver? (y/n) [n] 
Sur une machine de production répondre "y" sans hésiter, ici on laisse "n" et on confirme ce manquement à la sécurité, la réponse ne se fait pas attendre : 
Could not open from path /usr/local/etc. 
E_CL1904_SI_CANT_OPEN   SIfopen: Can't open file 
Cannot write to specified ODBC configuration path /usr/local/etc 
Writing instead to /opt/Ingres/ingres/files/odbcinst.ini. 
Successfully wrote ODBC configuration files 
An odbcinst.ini file has been created in the directory "/opt/Ingres/ingres/files". 
You may use the utility iiodbcadmn to create and manage 
ODBC data sources. 
See the Ingres Installation Guide for more information. 
Press RETURN to continue: 

C'était bien la peine ! On copiera ce fichier plus tard. 
Le setup de "Ingres Protocol Bridge..." se passe sans question --> Return. 
Le setup de "C2 Security Auditing" se passe sans encombres, il faut valider puis "Setting up Replicator" s'affiche, il faut là aussi valider et on enchaine sur :

Setting up the Ingres Data Access Server... 
This procedure will set up the following version of 
Ingres Data Access Server: 
        II 10.0.0 (a64.lnx/122)NPTL 
to run on local host: 
        com-ingres 
Do you want to continue this setup procedure? (y/n) [y] 
 


Répondre "y" et valider et on arrive sur la configuration data access server et de JDBC qui se passe sans autre question.

Executing Ingres JDBC driver properties generator utility... 
The JDBC driver properties file 'iijdbc.properties' was created in $II_SYSTEM/ingres/files directory 
Ingres Data Access Server has been successfully set up in this 
installation. Please adjust the startup count and check the listen address 
with the cbf utility. 
Press RETURN to continue:

On presse, encore, "Entrée" pour passer à la configuration (automatique) de "Ingres Star" à suivre de l'appui sur "Entrée".

INGBUILD  - Custom Install from Distribution Medium 
    Distribution: /var/tmp/INSTALL/ingres-10.0.0-122-NPTL-gpl-linux-ingbuild-x 
   +------------------------------------------------------+-----+----------+ 
   |               Custom Component Options               | Size| Install? | 
   |======================================================+=====+==========| 
   |Embedded SQL Precompilers                             |  23M|Ready     | 
   |Ingres 32bit support                                  |  42M|Ready     | 
   |INGRES 6.x Compatible Message Files                   |   4M|Ready     | 
   |Ingres Intelligent DBMS                               | 104M|Ready     | 
   |Ingres DTP for Tuxedo                                 |  56M|Ready     | 
   |Ingres Networking                                     |  66M|Ready     | 
   |Ingres Object Management                              | 879K|Ready     | 
   |Ingres ODBC Driver                                    |  65M|Ready     | 
   |Ingres Protocol Bridge                                | 947K|Ready     | 
   |Ingres C2 Security Auditing                           |  25K|Ready     | 
   |Ingres Replicator                                     |   2M|Ready     | 
   +------------------------------------------------------+-----+----------+ 
    II_SYSTEM  : /opt/Ingres  
 +----------------------------------------------------------------------------+ 
 | All installed products are now available for use.                          | 
 |                                                        [PRESS RETURN]      | 
 +----------------------------------------------------------------------------+


Le dernier appui sur "Entrée" avant l'appui sur "F3" pour sortir de l'installeur. 
Ensuite le démarrage normal du serveur Ingres est déclenché et se termine par : 

Starting the Visual DBA Remote Command Server... 
Ingres installation successfully started. 
Building the password validation program 'ingvalidpw'. 
Executable successfully installed. 

L'installation est terminée le répertoire /opt/Ingres/ingres contient : 
drwxrwxrwx  2 ingres ingres 4096 mai  3 16:57 abf 
drwxr-xr-x  2 ingres ingres 4096 mai  3 17:12 bin 
drwx------  3 ingres ingres 4096 mai  3 16:58 ckp 
drwxr-xr-x  5 ingres ingres 4096 avr 21 19:49 demo 
drwx------  3 ingres ingres 4096 mai  3 16:59 dmp 
drwxr-xr-x 16 ingres ingres 4096 mai  3 17:12 files 
drwxrwxrwx  3 ingres ingres 4096 avr 21 19:49 install 
drwx------  3 ingres ingres 4096 mai  3 16:59 jnl 
drwxr-xr-x  3 ingres ingres 4096 mai  3 16:57 lib 
drwxrwxrwx  3 ingres ingres 4096 mai  3 17:10 rep 
drwxr-xr-x 10 ingres ingres 4096 avr 21 19:49 sig 
drwxrwxr-x  3 ingres ingres 4096 avr 21 19:48 utility 
drwxr-xr-x  2 ingres ingres 4096 mai  3 17:04 vdba 
-rw-r--r--  1 ingres ingres   28 avr 21 19:28 version.rel 
Après cette installation épuisante un peu de repos avant de passer aux ajustements nécessaires à une utilisation "normale" de Ingres. 
 

Ingres : ajustements

Ingres : ajustements jpp

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 ...

Ingres : minitest

Ingres : minitest jpp

La table "habituelle" a été reconstituée à grans coups de "insert/select". Toutefois la syntaxe permettant de "décaler" vers le passé les dates "historiques" conservées en format "texte" AAAAMMJJ n'est pas évidente et forte consommatrice de CPU. 
Calcul des statistiques (optimizedb) (doc disponible) : 
optimizedb -utest -zu4096 -zv test -rxen_stat_v2 
ven mai  7 11:41:25 CEST 2010 
*** statistics for database test version: 01000 
*** table imp_xen rows:793466 pages:15561 overflow pages:15558 
*** column nbsecw of type decimal (length:10, scale:2, nullable) 
date:07-may-2010 10:41:28     unique values:801.000 
repetition factor:990.5942383     unique flag:N complete flag:0 
domain:0 histogram cells:1602 null count:0.0000000       value length:8 

*** statistics for database test version: 01000 
*** table imp_xen rows:793466 pages:15561 overflow pages:15558 
*** column nbsecr of type decimal (length:10, scale:2, nullable) 
........ 
*** statistics for database test version: 01000 
*** table xen_stat_v2 rows:13195433 pages:206183 overflow pages:206177 
*** column deltacpu of type decimal (length:10, scale:2, nullable) 
date:07-may-2010 10:43:00     unique values:61.000 
repetition factor:216318.5781250  unique flag:N complete flag:0 
domain:0 histogram cells:122 null count:0.0000000       value length:8 
ven mai  7 11:43:00 CEST 2010 
Soit un temps de 1 minute et 25 secondes. 
Création du premier index : 
sql -utest test <statv2_cre_idx.sql 
INGRES TERMINAL MONITOR Copyright 2010 Ingres Corporation 
Ingres Linux Version II 10.0.0 (a64.lnx/122)NPTL login 
Wed May  5 14:42:31 2010 
continue 
* * * * * * * * * /* SQL Startup File */ 
create index xen_stat_v2_i1 on xen_stat_v2 (DOMNOM, DATEC, HEUREC) ; 
Executing . . . 
(13147446 rows) 
continue 
Your SQL statement(s) have been committed. 
Ingres Version II 10.0.0 (a64.lnx/122)NPTL logout 
Wed May  5 14:44:30 2010 
Soit environ 1 minute 59 secondes. 
Création du second index : 
sql -utest test <statv2_cre_idx.sql 
INGRES TERMINAL MONITOR Copyright 2010 Ingres Corporation 
Ingres Linux Version II 10.0.0 (a64.lnx/122)NPTL login 
Wed May  5 14:47:34 2010 
continue 
* * * * * * * * * /* SQL Startup File */ 
create index xen_stat_v2_i2 on xen_stat_v2 (DATEC, DOMNOM, HEUREC) ; 
Executing . . . 
(13147446 rows) 
continue 
* 
Your SQL statement(s) have been committed. 
Ingres Version II 10.0.0 (a64.lnx/122)NPTL logout 
Wed May  5 14:49:50 2010 
Soit environ 2 minutes et 16 secondes. 
Comptages : 
1)    comptage "brut" 
sql -utest test <CNT_1.sql 
INGRES TERMINAL MONITOR Copyright 2010 Ingres Corporation 
Ingres Linux Version II 10.0.0 (a64.lnx/122)NPTL login 
Wed May  5 14:53:09 2010 
* * * * * * /* SQL Startup File */ 
select count(*) from xen_stat_v2 
Executing . . . 
┌─────────────┐ 
│col1         │ 
├─────────────┤ 
│     13147446│ 
└─────────────┘ 
(1 row) 
continue 
* 
Your SQL statement(s) have been committed. 
Ingres Version II 10.0.0 (a64.lnx/122)NPTL logout 
Wed May  5 14:53:25 2010 
Soit environ 16 secondes. 
2) Comptage group by 
sql -utest test <CNT_GRP_1.sql 
INGRES TERMINAL MONITOR Copyright 2010 Ingres Corporation 
Ingres Linux Version II 10.0.0 (a64.lnx/122)NPTL login 
Wed May  5 14:55:09 2010 
* * * * * * * * /* SQL Startup File */ 
select domnom,count(*) 
from xen_stat_v2 
group by domnom 
order by domnom 
Executing . . . 
┌────────────────┬─────────────┐ 
│domnom          │col2         │ 
├────────────────┼─────────────┤ 
│Domain-0        │      2512057│ 
│amdx2-2000      │       254925│ 
│amdx2-bi2003    │       255541│ 
...... 
│k2000-ora64     │      2333479│ 
│k2000-ora65     │       898205│ 
│k2000-ora66     │       862580│ 
└────────────────┴─────────────┘ 
(19 rows) 
continue 
* 
Your SQL statement(s) have been committed. 
Ingres Version II 10.0.0 (a64.lnx/122)NPTL logout 
Wed May  5 14:55:29 2010 
Soit environ 20 secondes. 
3) Comptage "group by" 
sql -utest test <CNT_GRP_2.sql                                      
INGRES TERMINAL MONITOR Copyright 2010 Ingres Corporation                        
Ingres Linux Version II 10.0.0 (a64.lnx/122)NPTL login                                            
Wed May  5 14:57:04 2010                                                                            
continue 
* * * * * * * * /* SQL Startup File */ 
select domnom,serveur,count(*) 
from xen_stat_v2 
group by domnom,serveur 
order by domnom,serveur 
Executing . . . 
┌────────────────┬────────────────┬─────────────┐ 
│domnom          │serveur         │col3         │ 
├────────────────┼────────────────┼─────────────┤ 
│Domain-0        │k2000           │      2305773│ 
...... 
│k2000-ora66     │k2000           │       862580│ 
└────────────────┴────────────────┴─────────────┘ 
(24 rows) 
continue 
* 
Your SQL statement(s) have been committed. 
Ingres Version II 10.0.0 (a64.lnx/122)NPTL logout 
Wed May  5 14:57:38 2010 
Soit environ 34 secondes. 
En bref la base de données est assez rapide et n'a pas à rougir devant les performances des autres bases existantes. La gestion des bases Ingres est très simple, beaucoup de bases utilisées dans l'industrie tournent sans aucun DBA qualifié. Si la base est bien installée (répartition et place disque) et paramétrée correctement (taille mémoire, log, espace temporaire, système de "lock") elle peut fonctionner des années quasiment sans intervention, cela n'empêche pas de sauvegarder les données ! 
Petit rappel sur l'outil "sql". 
L'outil "sql" utilisé pour les tests est l'outil "batch" de Ingres (il peut aussi être utilisé "à la main" bien sûr). 
La syntaxe SQL est assez standard, seuls quelques "trucs" peuvent gêner : 
- exécuter l'ordre SQL courant : il faut frapper "\g" pour lancer l'exécution ou "\p\g" pour lister l'ordre et l'exécuter. 
- quitter : il faut frapper "\q" 
Le prompt est marqué par un "*" exemple : 
* help\g 
Executing . . . 
Name                               Owner                              Type 
xen_stat_v2                        test                               table 
xen_stat_v2_i1                     test                               index 
xen_stat_v2_i2                     test                               index 
(3 rows) 
continue 
*\q 
Il faut le savoir ... pour la doc c'est ici. 
Rappel sur les "switchs" : 
Attention dans Ingres, les switchs de commande comme le "-u" dans "sql -utest" ne doivent pas être suivis d'un espace contrairement à beaucoup d'autres logiciels.