Chapitre VII Commandes Ingres au niveau Unix
  • Avertissement * 
  • VII-1 Introduction * 
  • VII-2 Commandes primaires sur les bases *
    • VII-2-1 createdb : * 
    • VII-2-2 destroydb : * 
    • VII-2-3 catalogdb : *
  • VII-3 Commandes d'outils écran *
    • VII-3-1 ingmenu : * 
    • VII-3-2 isql : * 
    • VII-3-3 sql : * 
    • VII-3-4 qbf : * 
    • VII-3-5 rbf : * 
    • VII-3-6 vifred : appel de Vifred, interface écran pour créer / modifier une grille *
  • VII-4 Commandes sur les bases * 
    • VII-4-1 Audit, sauvegarde, restauration *
      • VII-4-1-1 auditdb : * 
      • VII-4-1-2 ckpdb : * 
      • VII-4-1-3 rollforwarddb : * 
      • VII-4-1-4 alterdb : *
    • VII-4-2 Copie ou déchargement de base *
      • VII-4-2-1 copydb : * 
      • VII-4-2-2 unloaddb : *
    • VII-4-3 Statistiques * 
      • VII-4-3-1 optimizedb : * 
      • VII-4-3-2 statdump : *
    • VII-4-4 Réorganisation * 
      • VII-4-4-1 sysmod : * 
      • VII-4-4-2 verifydb : * 
      • VII-4-4-3 modifyfe : *
    • VII-4-5 Usage de rapport * 
      • VII-4-5-1 copyrep : * 
      • VII-4-5-2 sreport : * 
      • VII-4-5-3 report : *

Avertissement

Pour avoir une description complète des commandes Ingres il est conseillé de consulter la documentation en ligne par la commande oidoc ou de se reporter aux manuels OpenIngres.

Les commandes décrites ici sont regroupées par thèmes.

En ce qui concerne l'utilisation des supports magnétiques (bandes et cassettes) que certains exemples nécessitent, il est conseillé aux utilisateurs de consulter la brochure "Utilisation des bandes et cassettes au CIR" et, surtout, l'exploitation de chaque site : Unix ne vérifiant pas que l'usager d'un support en est bien propriétaire, de sérieuses précautions s'imposent.

Conventions

La syntaxe des options a été en partie francisée, voici les choix de traduction :

dbname nom_base (nom de base)

tablename nom_table (nom de table)

reportname rapport (nom de rapport)

username usager (nom d'usager)

Les conventions usuelles sont toujours valables : 

[ ] pour les options facultatives

{ } pour les options éventuellement multiples

| indique 2 ou plusieurs choix s'excluant mutuellement

+x | -x indique le choix de 2 options contraires

L'option -uusager permet à l'administrateur de la base ou au super-usager Ingres de lancer la commande au nom d'une autre personne : elle est presque toujours possible, et n'a pas été indiquée dans la syntaxe des commandes.

L'option -Ggroupe permet d'accéder à des données avec les permissions définies pour tout un groupe : elle n'est valide que si l'usager appartient au groupe indiqué. Elle est inutile si on a défini ce groupe par défaut, ce qu'on fera dans la pratique pour éviter d'avoir à s'en préoccuper.

L'option -Rrole permet un usage bien précis (avec mot de passe éventuel).



VII-1 Introduction

Une étude rapide des commandes et outils Ingres permet de distinguer :

  • des utilitaires d'outils écran :
ingmenu, isql, qbf, query, rbf, vifred

(on parlera aussi de sql, qui n'est pas un outil écran pleine page, mais dont les options sont également celles de isql)

  • des commandes d'administration des bases réservées à l'administrateur Ingres ou au propriétaire (DBA) de la base (sauf copydb, optimizedb et statdump, pour les tables propres à l'usager) : 
  • des commandes "primaires" sur les bases possédées : createdb, destroydb, catalogdb 
  • sauvegarde et restauration : auditdb, ckpdb, rollforwarddb, alterdb
  • copie ou déchargement : copydb, unloaddb 
  • statistiques : optimizedb, statdump 
  • réorganisation ("ménage") : sysmod, verifydb, modifyfe 
  • des commandes pour utilisations particulières : 
  • utilisation d'ordres sql dans un langage de programmation (Fortran ou C)
(esqlf, esqlc non traité : voir cours embedded SQL)
  • édition de rapports : copyrep, report, sreport
  • ABF : non traité (abf, imageapp, copyapp) 
  • form : non traité (compform, copyform, printform) 
  • graph (non disponible) (convgraph, copygraph) 
  • vision (non disponible) : génération d'applications ABF


VII-2 Commandes primaires sur les bases  
VII-2-1 createdb :
crée la base de nom "nom_base"; le créateur est l'administrateur (DBA) $ createdb [-p] nom_base [options_lieu]
-p  spécifie que la base est privée
options_lieu  permet de changer la localisation des fichiers systèmes (base, checkpoint, journal, dump)
VII-2-2 destroydb :  détruit la base de nom "nom_base"  $ destroydb [-p] nom_base
-p Ingres vous demandera de confirmer la destruction de la base 
VII-2-3 catalogdb : liste les bases que l'on possède, c'est un outil écran pleine page $ catalogdb

VII-3 Commandes d'outils écran  
VII-3-1 ingmenu :
permet d'accéder aux outils écran Ingres (dont sql interactif) $ ingmenu nom_base [-uusager] -Ggroupe]

VII-3-2 isql :

appel direct de sql interactif; les options doivent être cherchées parmi celles de la commande sql. $ isql [options] -Ggroupe -Rrole nom_base  Appel et signification des principales options :

les 4 premières permettent de modifier le format d'affichage des données selon leur type
 

-c met la largeur minimum pour imprimer les colonnes de type caractères à N; par défaut : 6
-ikn  même chose pour les entiers, avec k=1 (integer1), 2 (integer2), 4 (integer4); par défaut : 6 pour i1 et i2, 13 pour i4
-fkxM.N  k : 4 (float4) ou 8 (float8). 

x : 

E exponentiel
F flottant,
G et N flottant, sauf si largeur insuffisante pour le nombre qui est alors écrit sous forme exponentielle
-v change le séparateur de colonne en X;

par défaut, ce séparateur est la barre verticale (|)

-n met le mode modify pour les index à M; par défaut : ISAM
-l  bloque la base pour votre usage exclusif
+w|-w attend ou n'attend pas que la base soit libre; par défaut attend (-w)
+s|-s imprime | n'imprime pas les messages du moniteur, y compris les prompts
-xk gère le mode arithmétique (dépassement de capacité, division par 0)

k peut valoir :

f les exceptions sont des erreurs fatales, terminant la requête
w simple message d'avertissement
par défaut, les exceptions sont totalement ignorées

exemple : 

$ isql -c3 -i14 -i24 -i46 parcauto accès à la base parcauto avec une largeur minimale de colonne à 3 pour les caractères, 4 chiffres pour les entiers de type 1 et 2, 6 chiffres pour les entiers de type 4. VII-3-3 sql : appel du sql, interactif, mais ce n'est pas un outil écran pleine page  $ sql [options] [< nomentree] [> nomsortie] nom_base
nomentree : nom d'un fichier où l'on va lire les requêtes (analogue à isql + File + ReadFile + Go)
nomsortie :  nom d'un fichier où s'imprimeront les résultats (analogue à isql + Go + File)

Syntaxe : toutes les requêtes doivent être suivies de \g pour être exécutées : 

\g exécute la requête, 

\p l'imprime, 

\q quitte sql

exemple : 

$ sql -f4N7.2 -xw < req.sql > req.sortie parcauto On interroge la base parcauto avec le fichier de requêtes req.sql; les résultats iront dans le fichier req.sortie; les flottants (de type float4) seront édités sur une largeur minimale de 7 caractères dont 2 décimales (et 4 entiers); les erreurs provoqueront l'édition d'un message. VII-3-4 qbf : appel de Query-By-Forms, permettant des traitements de donnée par écrans $ qbf nom_base [-s] [-mmode] [-uusager] [[-f | -j | -t | -l] [querytarget]] [-Ggroupe]
-s -mmode  saute la phase "JoinDefinition" de QBF et place dans le menu de la fonction "mode" (retrieve, append, update, all);

si cette option est spécifiée, il faut aussi définir une cible ("querytarget") dans la ligne de commande

querytarget nom de cible, c'est à dire d'un QBFname, d'une JoinDef, ou d'une Table, sur laquelle on va travailler
-f -j -t -l indique que la cible est, respectivement, un QBFName, une JoinDef, une Table, ou doit être cherchée dans cet ordre;

s'il n'y a pas d'option pour querytarget, alors QBF cherchera une table et donnera une erreur s'il n'y a pas de table à ce nom;

si on indique l'option -t, la présentation sera en TableField, sinon la table sera présentée en SimpleField

exemple : utilisation de qbf sur la base parcauto en mode interrogation TableField sur la table commune.

$ qbf parcauto -mretrieve -t commune
 
VII-3-5 rbf :
appel de RBF, permettant de définir des rapports $ rbf [-s] [-uusager] [-r]|[-m[style]]  [-lmxline] nom_base [rapport|nom_table] [-Ggroupe]
-s les messages d'état, y compris le prompt, seront supprimés;
-r c'est un rapport qui est appelé, pas une table
-m[style]  c'est une table qui est appelée, pas un rapport; 

style : 

wrap, block, tabular (ex column), labels, indented

le mode par défaut est tabular si toutes les colonnes tiennent sur une page, sinon c'est wrap
-lmxline  longueur de ligne utilisée pour le rapport; par défaut, celle affectée au terminal (80 à 132c)
-uusager  l'administrateur de base peut se connecter sous le nom du propriétaire du rapport

exemple : 

$ rbf -mwrap parcauto foyer appel de rbf en mode wrap sur la table foyer de la base parcauto. VII-3-6 vifred : appel de Vifred, interface écran pour créer / modifier une grille

$ vifred nom_base [[-f | -t | -j] nom_objet] 

[-uusager] [-Ggroupe]

-f nom_objet  indique que nom_objet est le nom d'une grille existante, déjà créée par VIFRED; si nom_objet est spécifié sans argument, VIFRED présume que c'est le nom d'une grille existante
-t | -j  l'objet est une table ou une jointure
-uusager  l'administrateur de base peut se connecter sous le nom du propriétaire de la grille

exemple : 

$ vifred parcauto -t commune appel de vifred sur la table commune de la base parcauto.


VII-4 Commandes sur les bases  
VII-4-1 Audit, sauvegarde, restauration

VII-4-1-1 auditdb :

l'audit étant l'ensemble des informations stockées dans le journal, cette commande permet à l'usager de l'imprimer en tout ou partie $ auditdb [-bdate] [-edate] [-f] [-iusager] [-tnom_table] {nom_base}
-b imprime les transactions dont le commit a eu lieu après la date indiquée (date est de la forme : dd-mmm-yyyy :hh :mm :ss)
-e imprime les transactions ayant eu lieu avant la date indiquée
-f crée un fichier contenant les lignes ajoutées, détruites ou copiées, dans la table indiquée par -t
-i liste seulement les transactions de l'usager indiqué
-t  liste seulement les transactions sur la table spécifiée

Attention, si l'on ne précise pas le nom de base, l'audit est fait sur toutes celles possédées, ce qui prend un certain temps.

Les résultats d'un audit sont souvent volumineux et pas toujours très faciles à lire, il y a possibilité de les charger dans une table.

exemple : 

$ auditdb -b13-Apr-1991 -e05-May-1991 -tvehicule parcauto imprime le journal des transactions effectuées du 13 avril au 5 mai 1991 exclu sur la table vehicule de la base parcauto  VII-4-1-2 ckpdb : crée un point de reprise (checkpoint) pour une sauvegarde de la base indiquée (toutes celles possédées si aucun nom n'est indiqué) $ ckpdb [-d] [+j | -j] [ -mdevice] [+w | -w] [-v] {nom_base}
-d  détruit tous les fichiers point de reprise ou journal précédents
+j |- j  active | désactive la journalisation sur la base
-mdevice écrit le point de reprise directement sur le dérouleur spécifié
+w | -w attend/n'attend pas que la base soit libre
-v mode "verbose", commentant les opérations effectuées

exemple : 

$ ckpdb -d +j -m/dev/nrst0 parcauto fait une sauvegarde de parcauto sur cartouche en détruisant les anciens journaux ou point de reprise et en activant la journalisation. VII-4-1-3 rollforwarddb : permet de restaurer la (les) base(s) nommée(s) à partir de précédents points de reprise $ rollforwarddb [+c | -c] [+j | -j] [ -mdevice]

[+w | -w] [-v] [-bdate]

[-edate] {nom_base}

+c | -c restaure/ne restaure pas la base à partir du dernier point de reprise
+j | -j idem à partir du journal
-mdevice lit le point de reprise directement sur le dérouleur spécifié
-v mode "verbose", commentant les opérations effectuées

exemples :

$ rollforwarddb -v parcauto restaure la base parcauto en mode diagnostic, à partir du dernier point de reprise et du journal. Il est nécessaire que les deux soient sur disque ou de les y mettre si ce n'est pas le cas. $ rollforwarddb +c +j -m/dev/nrst0 parcauto restaure la base parcauto depuis un point de reprise sur cartouche, puis à partir du journal sur disque. VII-4-1-4 alterdb : permet d'arrêter la journalisation pour les bases indiquées $ alterdb -nojournaling -disable_journaling nom_base {nom_base}
-nojournaling arrêt en "off-line", sans usager connecté
-disable_journaling arrêt immédiat, même s'il y a des usagers connectés
VII-4-2 Copie ou déchargement de base

VII-4-2-1 copydb :

copie de base $ copydb [-c] -uusager -drepertoire nom_base {nom_table} crée deux fichiers de commandes SQL (copy.out et copy.in : attention, d'éventuels fichiers de ce nom dans le répertoire de lancement seraient détruits) permettant à un usager d'une base de copier (exporter et réimplanter) les données qu'il y possède (tables et objets associés : vues, accès, index, règles d'intégrité)

Utilisée par le DBA, cette commande permet de changer le nom de propriétaire d'une (ou plusieurs) table (pour une seule utiliser de préférence l'outil chown.table, développé au CIR)
 

-drepertoire donne un répertoire explicite pour les fichiers copy.in et copy.out
-c conversion des données dans un format portable : ASCII (option conseillée)

exemple : exportation sur cartouche des données de la base parcauto appartenant à l'usager st7 :

$ cd /serveur3/cir/iss/SAUVE 

$ rm * #on efface tous les fichiers du répertoire courant

$ copydb -c -ust7 parcauto #création des fichiers de commande sql copy.in et copy.out

$ sql parcauto < copy.out #création des fichiers de données 

$ tar cvf /dev/rst0 . #copie sur cassette des fichiers du répertoire courant

$ rm * #on efface tous les fichiers du répertoire courant

chargement depuis une cartouche des données sauvegardées, avec nouveau nom de propriétaire juju (indiqué dans la commande sql) :

/* IMPORTANT : avez vous vérifié que juju ne possède pas déjà un objet ayant le même nom que l'un de ceux qui vont être copiés ? Sinon il y a risque de destruction des données ...*/

$ cd /serveur3/cir/iss/SAUVE 

$ tar xvf /dev/rst0 #copie des fichiers de la cassette dans le répertoire courant 

$ sql -ujuju parcauto < copy.in #chargement des données

$ rm copy.*; rm *st7* #on efface les fichiers créés dans le répertoire courant

VII-4-2-2 unloaddb :
 

déchargement de base
  $ unloaddb [-c] [-d] nom_base
 
crée deux fichiers de commande Unix (scripts) unload.ing et reload.ing, ainsi que des fichiers de commande sql suffixés par .in et .out (d'éventuels fichiers de même nom dans le répertoire de lancement seraient détruits) pour décharger et recharger une base (conserve aussi les objets usager Ingres : rapports, tables système ...)

permet à son propriétaire (DBA) de transférer une base Ingres ou de la sauvegarder, pour tous les usagers, et tous les objets

-c conversion des données dans un format portable pour d'autres machines
-d indique un répertoire explicite où créer les fichiers
exemple : déchargement et rechargement de la base parcauto : $ cd /serveur3/cir/macchi/SAUVE

$ unloaddb parcauto #création des fichiers de commandes scripts

$ unload.ing #création des fichiers de données ASCII

$ chmod 777 * #accès sur les fichiers à tous les usagers, 

#nécessaire si un autre doit charger la base $ tar cvf /dev/rst0 #copie sur cassette des fichiers du répertoire courant

#changement de machine, ou destruction de la base parcauto 

# il est préférable de travailler dans un répertoire spécial, vide au départ 

$ mkdir SAUVE ; cd SAUVE 

$ tar xvf /dev/rst0 # copie des fichiers de la cassette dans le répertoire courant

$ createdb parcauto # création de la nouvelle base parcauto 

$ reload.ing # chargement des données dans parcauto
 

Pour changer le nom de propriétaire d'une base, il faut remplacer, partout dans le script reload.ing, le nom de l'ancien propriétaire par celui du nouveau, qui créera lui-même la nouvelle base
  VII-4-3 Statistiques

VII-4-3-1 optimizedb :
 

effectue les statistiques sur la base
  $ optimizedb [-zf fichier][-zk] [options ingres]

[-i fichier] [-zp] nom_base [{-rnom_table {-acolonne}}]

-zf indique que fichier contient toutes les options utilisées à cet appel d'optimizedb
-zk  statistiques seulement sur les clés et index secondaires
options ingres des options ingres peuvent être indiquées (voir options de isql) :

+U|-U -u -cN -tN -ikN -fkxM.N +w|-w -xk

-i fichier -zp  lit les statistiques dans fichier et les charge directement dans les tables système (voir option -o de statdump)
exemple :  $ optimizedb -zk parcauto effectue les statistiques sur les clés et index secondaires de toutes les tables de la base parcauto
  $ optimizedb parcauto -rfoyer -acprof effectue les statistiques sur la colonne cprof de la table foyer
  VII-4-3-2 statdump :
 
gère les statistiques 
  $ statdump [-zdl] [-zq] [-o fichier] nom_base [{-rnom_table {-acolonne}}]
-zdl détruit les statistiques
-zq imprime seulement des statistiques résumées (celles de "iistats", et pas celles de "iihistograms")
-o fichier envoie la sortie de statdump dans le fichier spécifié
exemple : impression des statistiques existantes sur toutes les colonnes de la table commune de la base parcauto $ statdump parcauto -rcommune
 
VII-4-4 Réorganisation
VII-4-4-1 sysmod :

réorganise les tables système indiquées, ou, à défaut, toute la base (permet d'accélérer les requêtes)

$ sysmod [+w|-w] nom_base [nom_table {,nom_table}]
+w | -w  attend/n'attend pas que la base soit libre, sysmod exigeant un usage exclusif
exemple :  $ sysmod -w parcauto iirelationiiindexes optimisation des tables système "iirelation" et "iiindexes" dans parcauto, mais seulement si la base n'est pas occupée.

VII-4-4-2 verifydb :

détruit ou liste les fichiers disque inutiles, les tables expirées ou temporaires

$ verifydb -mmode -sscope -ooperation [-n]  -mmode peut être : 
-mreport  n'exécute pas, donne le résultat des recherches
-mrun force l'exécution
-mruninteractive verifydb prévient l'usager et l'oblige à confirmer avant chaque action
-sscope peut-être :
-sdbname "nom_base" exécute sur la base nommée
-sdba exécute sur toutes les bases dont l'usager est administrateur
-n déconnecte le terminal et le fichier log
exemple :  $ verifydb -mrun -sdbname "parcauto" -opurge -n détruit dans parcauto les tables temporaires ou expirées.

VII-4-4-3 modifyfe :

modifie la structure de stockage des catalogues des interfaces Ingres (ABF, QBF, RBF, Vifred, OpenRoad) (sysmod sur les interfaces seules)
 

$ modifyfe nom_base [+w | -w]produit {,produit}
produit Ingres pour les produits Ingres de base (ABF, QBF, RBF, Vifred) 
OpenRoad pour les catalogues OpenRoad
VII-4-5 Usage de rapport
VII-4-5-1 copyrep :
 
copie dans un fichier texte les spécifications d'un rapport d'une base $ copyrep -f nom_base fichier rapport{,rapport} Avec sreport permet de copier un rapport d'une base dans une autre, ou de changer le propriétaire d'un rapport.
-f écrit le rapport dans le même format que l'opération Archive dans l'écran RBF du catalogue des rapports. Ce format ne permet plus de modifier le rapport par RBF
exemple :  $ copyrep parcauto vehpfoy.rw vehicule_par_foyer
 
copie les spécifications du rapport vehicule_par_foyer dans le fichier vehpfoy.rw
  VII-4-5-2 sreport :
 
insère dans une base un fichier texte (résultat de copyrep ou de l'option Archive de RBF)
  $ sreport nom_base fichier
 
exemple :  $ sreport parcauto vehpfoy.rw
 
copie, dans la base parcauto, du rapport vehicule_par_foyer sauvé dans le fichier vehpfoy.rw.
  VII-4-5-3 report :
 
active un rapport créé par les commandes sreport ou rbf
  $ report nom_base rapport|nom_table [ -ffichier ] [-s] [-lmxline] [-vpage]
-ffichier envoie le rapport dans fichier
-s  suppression des messages de statut
-lmxline donne la longueur maximale de ligne
-vpage donne le maximum de lignes dans une page
exemple : $ report parcauto vehicule_par_foyer -fvehfoy -l80 -v30
 
impression dans le fichier vehfoy des résultats du rapport vehicule_par_foyer de parcauto, qui seront édités avec une largeur de ligne de 80 colonnes et 30 lignes par page.

Exemple de résultats obtenus : fichier d'impression du rapport "vehicule_par_foyer" créé par la commande ci-dessus