Sie sind auf Seite 1von 77

Ingres Administration des bases de données CA-OpenIngres

Administration des bases de


données CA-OpenIngres

Mars 2000

DMSI/Analyse/lcy/ le 11/10/2009 23241689.doc Page1/77


Ingres Administration des bases de données CA-OpenIngres

I. Présentation...........................................................................................................................................................................5

A. Les utilisateurs de CA-OpenIngres :................................................................................................................................5


1. L'administrateur système..............................................................................................................................................5
2. L'administrateur CA-OpenIngres.................................................................................................................................5
3. L'administrateur de bases de données...........................................................................................................................5
4. L'utilisateur final...........................................................................................................................................................6
B. Avertissement....................................................................................................................................................................7
C. Conventions......................................................................................................................................................................7
D. Bibliographie:..................................................................................................................................................................7

II. Gestion des utilisateurs et des profils................................................................................................................................8

A. Gestion des utilisateurs.....................................................................................................................................................8


1. Création d'un utilisateur................................................................................................................................................8
2. Modification d'un utilisateur.......................................................................................................................................10
3. Suppression d'un utilisateur........................................................................................................................................12
B. Gestion des profils..........................................................................................................................................................14
1. Création des profils.....................................................................................................................................................14
2. Modification d'un profil..............................................................................................................................................16
3. Suppression d'un profil ..............................................................................................................................................17

III. Gestion des bases de données..........................................................................................................................................19

A. Le dictionnaire des données...........................................................................................................................................19


1. Le dictionnaire global.................................................................................................................................................19
2. Le dictionnaire local...................................................................................................................................................19
B. Les catalogues................................................................................................................................................................20
1. Le catalogue système..................................................................................................................................................20
2. Le catalogue standard.................................................................................................................................................22
3. Le catalogue système étendu......................................................................................................................................24
C. Composition d'une base de données...............................................................................................................................25
D. Création d'une base de données.....................................................................................................................................26
1. Syntaxe.......................................................................................................................................................................26
2. Description..................................................................................................................................................................26
3. Exemple......................................................................................................................................................................27
4. Fonctionnement de createdb.......................................................................................................................................27
E. Suppression d'une base de données................................................................................................................................28
1. Syntaxe.......................................................................................................................................................................28
2. Description..................................................................................................................................................................28
F. Maintenance d'une base de données...............................................................................................................................28

IV. Gestion des données.........................................................................................................................................................29

A. Gestion des tables...........................................................................................................................................................29


1. Création des tables......................................................................................................................................................29
2. Modification des tables...............................................................................................................................................32
3. Suppression des tables................................................................................................................................................33
B. Gestion des vues.............................................................................................................................................................35
1. Création d'une vue......................................................................................................................................................35
2. Suppression d'une vue................................................................................................................................................36
C. Importation, exportation de données..............................................................................................................................37

DMSI/Analyse/lcy/ le 11/10/2009 23241689.doc Page2/77


Ingres Administration des bases de données CA-OpenIngres

1. La copie formatée.......................................................................................................................................................37
2. Copie binaire...............................................................................................................................................................43
D. Chargement, déchargement d'une base de données.......................................................................................................44
1. Présentation.................................................................................................................................................................44
2. Utilisation...................................................................................................................................................................44
3. La commande unloaddb..............................................................................................................................................44
4. La commande copydb.................................................................................................................................................46

V. Sécurité d'accès aux données............................................................................................................................................50

A. Principes de base............................................................................................................................................................50
1. Sécurité des bases de données....................................................................................................................................50
2. Sécurité des tables.......................................................................................................................................................50
B. Des droits pour QUI ?....................................................................................................................................................51
1. Gestion des groupes....................................................................................................................................................51
2. Gestion des rôles.........................................................................................................................................................52
3. Utilisation des droits liés aux groupes et rôles...........................................................................................................53
C. Quels droits, sur quelles entités ?...................................................................................................................................54
1. Principes.....................................................................................................................................................................54
2. Privilèges sur les bases de données............................................................................................................................56
3. Privilèges sur les tables et vues..................................................................................................................................59
4. Privilège sur les procédures bases de données...........................................................................................................62
5. Privilèges sur les événements bases de données.........................................................................................................63
6. Privilèges sur les rôles................................................................................................................................................65
D. Récapitulation des privilèges CA-OpenIngres...............................................................................................................66

VI. Sauvegarde, récupération...............................................................................................................................................68

A. Précaution d'usage.........................................................................................................................................................68
B. Sauvegarde statique........................................................................................................................................................68
1. La commande ckpdb...................................................................................................................................................68
2. Sauvegarde d'une base de données complète.............................................................................................................69
3. Sauvegarde de tables...................................................................................................................................................69
4. Sauvegarde en ligne / hors ligne.................................................................................................................................69
5. Verrouillage pour la sauvegarde.................................................................................................................................69
6. Suppression de sauvegarde anciennes........................................................................................................................69
C. Sauvegarde dynamique...................................................................................................................................................70
1. Lancement de la journalisation...................................................................................................................................70
2. Interruption de la journalisation..................................................................................................................................70
D. Utilisation de copydb, unloaddb....................................................................................................................................70
E. Restauration des bases de données.................................................................................................................................71
1. La commande rollforwarddb......................................................................................................................................71

VII. Utilitaires.........................................................................................................................................................................73

A. Accessdb.........................................................................................................................................................................73
1. Option Databases........................................................................................................................................................73
2. Option Locations........................................................................................................................................................74
3. Option Users...............................................................................................................................................................75
B. Infodb..............................................................................................................................................................................76
C. Ipm..................................................................................................................................................................................76
1. Surveillance du système de verrouillage....................................................................................................................76
2. Surveillance du système de connexion.......................................................................................................................76
3. Syntaxe.......................................................................................................................................................................76

DMSI/Analyse/lcy/ le 11/10/2009 23241689.doc Page3/77


Ingres Administration des bases de données CA-OpenIngres

DMSI/Analyse/lcy/ le 11/10/2009 23241689.doc Page4/77


Ingres Administration des bases de données CA-OpenIngres

I. Présentation
Avant d'indiquer à quel type de lecteurs s'adresse ce document, il est indispensable de préciser les
différentes catégories d'utilisateurs de CA-OpenIngres. Le raisonnement présenté ci-dessous peut
s'appliquer à n'importe quel SGBD.

A. Les utilisateurs de CA-OpenIngres :


Quatre catégories d'utilisateurs sont couramment présentées dans le monde des SGBD :
→ l'administrateur système
→ l'administrateur CA-OpenIngres
→ l'administrateur de bases de données (DBA)
→ l'utilisateur final.

1. L'administrateur système
Il configure le système d'exploitation sous lequel CA-OpenIngres est installé. Il est propriétaire
du compte système (root) qui attribue les permissions autorisées par le système d'exploitation. Il
travaille en collaboration avec l'administrateur CA-OpenIngres.

2. L'administrateur CA-OpenIngres
Il est propriétaire du compte ingres qui fournit les permissions nécessaires à l'installation et la
maintenance de CA-OpenIngres. Il est responsable de ces opérations.
Rôle :
→ Installation de CA-OpenIngres
→ Définition des variables d'environnement
→ Autorisation d'accès aux utilisateurs grâce au privilège security
→ Démarrage, arrêt et gestion des serveurs
→ Maintenance des sessions utilisateurs connectées à un serveur
→ Arrêt de tout ou partie de l'installation si une maintenance système est nécessaire;
redémarrage de l'installation.
Certaines de ces tâches sont présentées dans ce document car elles peuvent agir sur les
opérations du DBA.

3. L'administrateur de bases de données


Tout utilisateur créateur d'une base de données en devient l'administrateur (DBA). Le nombre de
DBA d'un site n'est pas limité. Pour créer une base de données, l'utilisateur doit y être autorisé
par le privilège createdb. Ce privilège est accordé par les commandes SQL create | alter user
ou à l'aide de l'utilitaire accessdb. Le DBA détermine qui peut accéder à la base de données et à
ses objets et peut attribuer des droits à d'autres usagers sur les tables, vues et procédures.
Un utilisateur ayant le privilège security (habituellement réservé au DBA et à l'administrateur
CA-OpenIngres) peut accéder aux objets d'une base créée par un autre en utilisant le flag –u dans
les commandes du système d'exploitation. Cela l'autorise temporairement à se substituer à
l'utilisateur spécifié.
Rôle :
→ Crée et détruit des bases de données.

DMSI/Analyse/lcy/ le 11/10/2009 23241689.doc Page5/77


Ingres Administration des bases de données CA-OpenIngres

→ Définit des locations alternatives pour les fichiers des bases de données.
→ Gère les objets des bases de données publiques.
→ Gère l'accès des utilisateurs aux données par l'attribution de droits sur les tables, vues et
procédures.
→ Maintient la performance de la base de données et des requêtes.
→ Gère le système de verrouillage pour maximiser la concurrence.
→ Sauvegarde et restaure la base de données.

4. L'utilisateur final
Il s'agit de tout utilisateur de CA-OpenIngres ne disposant pas de privilèges particuliers. Il peut
s'agir d'un développeur expérimenté comme d'un opérateur de saisie sans compétence
informatique.
Possibilités :
→ Utilise des bases de données dont l'accès lui a été autorisé.
→ Crée des objets dans une base de données à laquelle il accède.
→ Accède aux tables, vues et procédures auxquelles d'autres utilisateurs lui ont donné accès. Il
n'a pas besoin de permissions spécifiques pour accéder à d'autres objets (forms, graphs,
reports, etc.); il ne peut accéder aux données qui utilisent ces objets que s'il dispose de
permissions sur les tables dont ces objets dépendent.

DMSI/Analyse/lcy/ le 11/10/2009 23241689.doc Page6/77


Ingres Administration des bases de données CA-OpenIngres

B. Avertissement
Ce document est avant tout destiné aux administrateurs de bases de données CA-OpenIngres. Il y a
dans certains cas un recouvrement de responsabilités entre l'administrateur de bases de données et
l'administrateur CA-OpenIngres. Certaines actions décrites dans ce document nécessitent une étroite
collaboration entre les personnes assurant ces deux fonctions.

C. Conventions
Les commandes exécutées sous système d'exploitation sont présentées avec la syntaxe valable sous
UNIX. Si nécessaire, le type de shell utilisé est précisé.
Conventions typographiques

Convention Utilisation
Gras Indique les mots clefs, les symboles et la
ponctuation qui doivent être saisis comme
précisé.
Italique Représente un nom de variable que vous
devez remplacer par une valeur adaptée.
[] Utilisé pour encadrer les listes d'options.
{} Utilisé pour encadrer les listes d'options qui
peuvent être répétées autant de fois que
nécessaire.
| Utilisé pour séparer les éléments d'une liste.
Vous devez choisir l'un des éléments de la
liste.

Le mot ingres (en minuscules, gras) fait référence au compte ingres dont l'administrateur CA-
OpenIngres est le propriétaire.

D. Bibliographie:
Ce support de cours récapitule l'essentiel du cours "Administration des données Ingres" réalisé par
Computer Associates. Les ouvrages cités ci-dessous ont également été utilisés.

→ CA-OPEN INGRES (EYROLLES)


→ CA-OpenIngres: Database Administrator's Guide (Computer Associates)
→ CA-OpenIngres: SQL Reference Guide (Computer Associates)
→ CA-OpenIngres: System Reference Guide (Computer Associates)

DMSI/Analyse/lcy/ le 11/10/2009 23241689.doc Page7/77


Ingres Administration des bases de données CA-OpenIngres

II. Gestion des utilisateurs et des profils

A. Gestion des utilisateurs


La gestion des utilisateurs comporte la création, la modification et la suppression des utilisateurs.
Ces opérations peuvent être effectuées à l'aide de commandes SQL présentées dans ce paragraphe,
mais également grâce à l'utilitaire accessdb (voir §A).

1. Création d'un utilisateur

1.1. Description
La commande SQL create user permet de définir un nouvel utilisateur et de donner une
valeur à un certain nombre de paramètres qui seront précisés dans le §.1.3

1.2. Permissions
Pour exécuter cette commande, vous devez utiliser une session connectée à la base de données
iidbdb (voir § 1). Le tableau suivant précise le privilège requis pour chaque action.

Action Privilège requis


Changement de son mot de passe Aucun
Changement des attributs de security_audit maintain_audit
Changement de limiting_security _label security
Autres modifications maintain_user

1.3. Syntaxe
create user nom_user
[with with_liste {, with_liste}]

with_liste = noprivileges | privileges = (priv {, priv})


| nogroup | group = default_group (voir § 1)
| security_audit = (audit_opt {, audit_opt})
| noexpire_date | expire_date = 'expire_date'
| limiting_security_label = 'security_label' | nolimiting_security _label
| default_privileges = (priv {,priv}) | all | nodefault_privileges
| noprofile | profile = nom_profile
| nopassword | password = 'mot_passe'
| external_password

DMSI/Analyse/lcy/ le 11/10/2009 23241689.doc Page8/77


Ingres Administration des bases de données CA-OpenIngres

Paramètre Description
group Définit le groupe auquel appartient l'utilisateur. Le groupe doit
exister. Dans le cas contraire, CA-OpenIngres ne le crée pas. La
valeur par défaut de ce paramètre est nogroup
privileges Ces privilèges ne seront pas actifs lors de la connexion mais ils
pourront être activés par la commande SET SESSION
PRIVILEGES =. Les valeurs possibles sont :
createdb : autorise l'utilisateur à créer des bases de données.
trace : permet à l'utilisateur d'utiliser les modes trace et
débogage.
security : autorise l'utilisateur à exécuter les fonctions de
sécurité.
operator : l'utilisateur peut réaliser des opérations de sauvegarde
et de maintenance.
maintain_locations : autorise l'utilisateur à créer et modifier les
caractéristiques des locations des bases de données et fichiers.
auditor : autorise l'utilisateur à créer et interroger les audits
maintain_audit : autorise l'utilisateur à modifier la valeur du
paramètre security_audit d'un utilisateur ou d'un profil.
maintain_users : autorise l'utilisateur à utiliser les fonctions de
gestion des utilisateurs, profils, groupes, rôles
Ces privilèges s'appliquent aux utilisateurs quelle que soit la base
de données à laquelle ils se connectent. La valeur par défaut est
noprivileges.
expire_date Permet de spécifier une date optionnelle d'expiration du compte.
Si la date est atteinte, l'utilisateur ne peut plus se connecter. La
valeur par défaut est noexpire_date.
password Permet à un utilisateur de modifier son mot de passe. Les
utilisateurs ayant le privilege maintain_users peuvent modifier
tout mot de passe. La valeur par défaut est nopassword.
external_password Autorise une authentification de mot de passe externe à CA-
OpenIngres.
limiting_security_label Autorise un administrateur à diminuer le label de sécurité
maximal avec lequel les utilisateurs peuvent se connecter à CA-
OpenIngres. Si un label de sécurité limite est spécifié, lorsque
l'utilisateur se connecte à CA-OpenIngres, le DBMS s'assure que
le label de sécurité de la session est inférieur à la limite. La
valeur par défaut est nolimiting_security_label
default_privileges Définit les privilèges initialement actifs lors de la connexion à
CA-OpenIngres. Ils doivent être un sous-ensemble de tous les
privilèges accordés à l'utilisateur.

DMSI/Analyse/lcy/ le 11/10/2009 23241689.doc Page9/77


Ingres Administration des bases de données CA-OpenIngres

Paramètre Description
nodefault_privileges Spécifie que la session démarre sans privilège actif. Supprime les
privilèges par défaut.
profile Permet d'attribuer un profil à un utilisateur. Pour attribuer le
profil par défaut, utiliser noprofile.
security audit Les valeurs possibles sont :
(all_events) : toutes les activités de l'utilisateur sont auditées
(default_events) : seul l'audit de sécurité par défaut est réalisé.
celui-ci est défini par la commande enable security_audit
type_audit.
(query_text) : l'audit portera sur le texte des requêtes de
l'utilisateur. Il faut pour cela que le type d'audit query_text ait été
validé par la commande enable security_audit

1.4. Verrouillage
Cette commande verrouille des pages dans le catalogue système iiuser.

1.5. Exemple
Créer l’utilisateur dupond du groupe stage. Il a par défaut le privilèges security et peut
obtenir le privilège createdb.
create user dupond
with privileges = (createdb, security ),
default_privileges = (security),
group = stage

2. Modification d'un utilisateur

2.1. Description
La commande alter user permet de modifier les caractéristiques d'un utilisateur existant.

2.2. Permissions
Les contraintes d'exécution sont identiques à celles de la commande create user.

2.3. Syntaxe
alter user nom_user
[add privileges (priv {, priv}) | drop privileges (priv {, priv})]
[with with_liste {, with_liste}]

with_liste = noprivileges | privileges = (priv {, priv})


| nogroup | group = default_group

DMSI/Analyse/lcy/ le 11/10/2009 23241689.doc Page10/77


Ingres Administration des bases de données CA-OpenIngres

| security_audit = (audit_opt {, audit_opt})


| noexpire_date | expire_date = 'expire_date'
| limiting_security_label = 'security_label' | nolimiting_security_label
| default_privileges = (priv {,priv}) | all | nodefault_privileges
| noprofile | profile = nom_profile
| nopassword | password = 'mot_passe'
| external_password
| oldpassword = 'oldpassword'
Les paramètres de cette commande sont très voisins de ceux de la commande create user. Les
compléments concernent le mot de passe, l'ajout et la suppression de privilèges comme
indiqué dans le tableau suivant :

Paramètre Description
Group Définit le groupe auquel appartient l'utilisateur. Le groupe doit
exister. Dans le cas contraire, CA-OpenIngres ne le crée pas. La
valeur par défaut de ce paramètre est nogroup
Privileges Voir privileges page 9. Les privilèges déclarés ici vont se substituer
à ceux mis en place par la commande create .
Expire_date Permet de spécifier une date optionnelle d'expiration du compte. Si
la date est atteinte, l'utilisateur ne peut plus se connecter. La valeur
par défaut est noexpire_date.
Password Permet à un utilisateur de modifier son mot de passe. Si la clause
oldpassword est absente ou non valide, le mot de passe est
inchangé.Les utilisateurs ayant le privilege maintain_users peuvent
modifier tout mot de passe. La valeur par défaut est nopassword.
External_password Autorise une authentification de mot de passe externe à CA-
OpenIngres.
Oldpassword Permet de préciser l'ancien mot de passe de l'utilisateur. Cette clause
est indispensable pour effectuer la modification de mot de passe.
Limiting_security_label Autorise un administrateur à diminuer le label de sécurité maximal
avec lequel les utilisateurs peuvent se connecter à CA-OpenIngres.
Si un label de sécurité limite est spécifié, lorsque l'utilisateur se
connecte à CA-OpenIngres, le DBMS s'assure que le label de
sécurité de la session est inférieur à la limite. La valeur par défaut
est nolimiting_security_label
Add_privileges Permet de compléter la liste des privilèges attribués à un utilisateur.
Cette clause s'emploie à l'exclusion des clauses drop_privileges et
privileges=
Drop_privileges Permet de supprimer des privilèges attribués à un utilisateur. Cette
clause s'emploie à l'exclusion des clauses add_privileges et
privileges=

DMSI/Analyse/lcy/ le 11/10/2009 23241689.doc Page11/77


Ingres Administration des bases de données CA-OpenIngres

Paramètre Description
Default_privileges Définit les privilèges initialement actifs lors de la connexion à CA-
OpenIngres. Ils doivent être un sous-ensemble de tous les privilèges
accordés à l'utilisateur.
Nodefault_privileges Spécifie que la session démarre sans privilège actif. Supprime les
privilèges par défaut.
profile Permet d'attribuer un profil à un utilisateur. Pour attribuer le profil
par défaut, utiliser noprofile.
security audit Les valeurs possibles sont :
(all_events) : toutes les activités de l'utilisateur sont auditées
(default_events) : seul l'audit de sécurité par défaut est réalisé.
celui-ci est défini par la commande enable security_audit
type_audit.
(query_text) : l'audit portera sur le texte des requêtes de
l'utilisateur. Il faut pour cela que le type d'audit query_text ait été
validé par la commande enable security_audit

2.4. Verrouillage
Cette commande verrouille des pages dans le catalogue système iiuser.

2.5. Exemples
Remplacer les privilèges de l’utilisateur dupond. Il doit disposer par défaut du privilège
security et pouvoir obtenir le privilège createdb.
alter user dupond
with privileges = (createdb, security ),
default_privileges = (security)

Compléter les privilèges ‘potentiels’ de l’utilisateur dupond. Il doit pouvoir obtenir le


privilège maintain_users.
alter user dupond
add privileges (maintain_users)

3. Suppression d'un utilisateur

3.1. Description
Cette commande permet de supprimer un utilisateur existant. Il n'est pas possible de
supprimer un utilisateur propriétaire de bases de données. Si l'utilisateur est propriétaire
d'objets, ceux-ci ne sont pas supprimés.

DMSI/Analyse/lcy/ le 11/10/2009 23241689.doc Page12/77


Ingres Administration des bases de données CA-OpenIngres

3.2. Permissions
Pour exécuter cette commande, il faut disposer du privilège security et travailler dans une
session connectée à iidbdb.

3.3. Syntaxe
drop user nom_user

3.4. Verrouillage
Cette commande verrouille des pages dans le catalogue système iiuser de iidbdb.

3.5. Exemple
Supprimer l’utilisateur dupond
drop user dupond

DMSI/Analyse/lcy/ le 11/10/2009 23241689.doc Page13/77


Ingres Administration des bases de données CA-OpenIngres

B. Gestion des profils


Un profil est un ensemble de caractéristiques qui peuvent être appliquées à un utilisateur ou un
ensemble d'utilisateurs. Un profil comprend :
→ Des privilèges
→ Des privilèges par défaut
→ Un groupe par défaut
→ Des attributs d'audit de sécurité
→ Un date d'expiration
→ Un label de sécurité

Chaque utilisateur peut se voir attribuer un profil qui lui fournit les attributs par défaut. Un profil
par défaut, modifiable par l'administrateur de CA-OpenIngres est créé pendant l'installation. Il
détermine les attributs par défaut d'un utilisateur quand aucun profil ne lui est donné. Le profil par
défaut initial est :
→ noprivileges
→ nodefault_privileges
→ nolimiting_security_label
→ noexpire_date
→ nogroup
→ nosecurity_audit

1. Création des profils

1.1. Description
Cette commande permet de créer un nouveau profil qui pourra être utilisé lors de la création
des utilisateurs.

1.2. Permissions
Documentation erronée. L’utilisateur doit être connecté à iidbdb.

1.3. Syntaxe
create profile nom_profil
[with with_liste {, with_liste}]

with_liste = noprivileges | privileges = (priv {, priv})


| nogroup | group = nom_default_group
| security_audit = (audit_opt {, audit_opt})
| noexpire_date | expire_date = 'expire_date'
| default_privileges = (priv {,priv}) | all | nodefault_privileges
| limiting_security_label = 'security_label' | nolimiting_security _label

DMSI/Analyse/lcy/ le 11/10/2009 23241689.doc Page14/77


Ingres Administration des bases de données CA-OpenIngres

Paramètre Description
Group Définit le groupe par défaut pour les utilisateurs ayant ce profile. Le
groupe doit exister. La valeur par défaut de ce paramètre est
nogroup
Privileges Voir privileges page 9
Expire_date Permet de spécifier une date optionnelle d'expiration du compte. Si
la date est atteinte, l'utilisateur ne peut plus se connecter. La valeur
par défaut est noexpire_date.
Limiting_security_label Autorise un administrateur à diminuer le label de sécurité maximal
avec lequel les utilisateurs peuvent se connecter à CA-OpenIngres.
Si un label de sécurité limite est spécifié, lorsque l'utilisateur se
connecte à CA-OpenIngres, le DBMS s'assure que le label de
sécurité de la session est inférieur à la limite. La valeur par défaut
est nolimiting_security_label
Default_privileges Définit les privilèges initialement actif lors de la connexion à CA-
OpenIngres. Ils doivent être un sous-ensemble de tous les privilèges
accordés à l'utilisateur.
Nodefault_privileges Spécifie que la sesssion démarre sans privilège actif. Supprime les
privilèges par défaut.
Security_audit Les valeurs possibles sont :
(all_events) : toutes les activités de l'utilisateur sont auditées
(default_events) : seul l'audit de sécurité par défaut est réalisé.
celui-ci est défini par la commande enable security_audit
type_audit.
(query_text) : l'audit portera sur le texte des requêtes de
l'utilisateur. Il faut pour cela que le type d'audit query_text ait été
validé par la commande enable security_audit

1.4. Verrouillage
Cette commande pose un verrou exclusif sur le catalogue système iiprofile.

1.5. Exemple
Créer le profil stagiaire. Les utilisateurs qui disposeront de ce profil appartiendront par défaut
au groupe stage et disposeront par défaut du privilège createdb.
create profile stagiaire
with group = stage,
privileges = (createdb),
default_privileges= (createdb)

DMSI/Analyse/lcy/ le 11/10/2009 23241689.doc Page15/77


Ingres Administration des bases de données CA-OpenIngres

2. Modification d'un profil

2.1. Description
Cette commande permet de modifier les paramètres d'un profil existant et également de
compléter ou supprimer les privilèges dont il dispose.

2.2. Permissions
Cette commande ne peut être exécutée que par un utilisateur connecté à iidbdb et ayant le
privilège maintain_users. Pour certaines options, d'autres privilèges sont requis, comme
indiqué dans la table ci-dessous :

Action Privilège requis


Tout changement maintain_users
Modification du paramètre security_audit maintain_audit
Modification du paramètre limiting_security_label security

2.3. Syntaxe
alter [default] profile [nom_profil]
[add privileges (priv {, priv}) | drop privileges (priv {, priv})]
[with with_liste {, with_liste}]
with_liste = noprivileges | privileges = (priv {, priv})
| nogroup | group = default_group
| security_audit = (audit_opt {, audit_opt})
| noexpire_date | expire_date = 'expire_date'
| default_privileges = (priv {,priv}) | all | nodefault_privileges
| limiting_security_label = 'security_label' | nolimiting_security _label

Paramètre Description
add_privileges Permet de compléter la liste des privilèges attribués à un profil.
Cette clause s'emploie à l'exclusion des clauses drop_privileges
et privileges=
drop_privileges Permet de supprimer des privilèges attribués à un profil. Cette
clause s'emploie à l'exclusion des clauses add_privileges et
privileges=

DMSI/Analyse/lcy/ le 11/10/2009 23241689.doc Page16/77


Ingres Administration des bases de données CA-OpenIngres

Paramètre Description
group Définit le groupe par défaut auquel appartiennent les utilisateurs
ayant ce profil. Le groupe doit exister. Dans le cas contraire, CA-
OpenIngres ne le crée pas. La valeur par défaut de ce paramètre
est nogroup
privileges Voir privileges page 9.
expire_date Permet de spécifier une date optionnelle d'expiration du compte.
Si la date est atteinte, l'utilisateur ne peut plus se connecter. La
valeur par défaut est noexpire_date.
limiting_security_label Autorise un administrateur à diminuer le label de sécurité
maximal avec lequel les utilisateurs peuvent se connecter à CA-
OpenIngres. Si un label de sécurité limite est spécifié, lorsque
l'utilisateur se connecte à CA-OpenIngres, le DBMS s'assure que
le label de sécurité de la session est inférieur à la limite. La
valeur par défaut est nolimiting_security_label
default_privileges Définit les privilèges initialement actif lors de la connection à
CA-OpenIngres. Ils doivent être un sous-ensemble de tous les
privilèges accordés à l'utilisateur.
nodefault_privileges Spécifie que la sesssion démarre sans privilège actif. Supprime
les privilèges par défaut.
security_audit Les valeurs possibles sont :
(all_events) : toutes les activités de l'utilisateur sont auditées
(default_events) : seul l'audit de sécurité par défaut est réalisé.
celui-ci est défini par la commande enable security_audit
type_audit.
(query_text) : l'audit portera sur le texte des requêtes de
l'utilisateur. Il faut pour cela que le type d'audit query_text ait été
validé par la commande enable security_audit

2.4. Verrouillage
Cette commande pose un verrou exclusif sur iiprofile.

2.5. Exemple
Modifier le profil stagiaire. Il n’appartient plus au groupe stage.
alter profile stagiaire
with nogroup

3. Suppression d'un profil

3.1. Description
Cette commande permet de supprimer un profil utilisateur tout en tenant compte de l'existence
d'utilisateurs ayant ce profil.

DMSI/Analyse/lcy/ le 11/10/2009 23241689.doc Page17/77


Ingres Administration des bases de données CA-OpenIngres

3.2. Permissions
Cette commande ne peut être exécutée que par un utilisateur ayant le privilège maintain_user
et connecté à la base de données iidbdb.

3.3. Syntaxe
drop profile nom_profil [cascade | restrict]

Paramètre Description
cascade On attribue le profil par défaut aux utilisateurs ayant le profil
supprimé.
restrict C'est la clause par défaut. Si un utilisateur a ce profil, celui-ci
n'est pas supprimé.

3.4. Verrouillage
Cette commande verrouille iiprofile.

3.5. Exemple
Supprimer le profil stagiaire à condition qu’il ne soit attribué à aucun utilisateur.
drop profile stagiaire restrict

DMSI/Analyse/lcy/ le 11/10/2009 23241689.doc Page18/77


Ingres Administration des bases de données CA-OpenIngres

III. Gestion des bases de données


La gestion des bases de données comporte les opérations nécessaires à la création, la suppression et la
maintenance d'une base de données. Ce chapitre décrira auparavant le dictionnaire de données, les
catalogues et la composition d'une base de données.

A. Le dictionnaire des données


Le dictionnaire des données de CA-OpenIngres décrit l'ensemble des informations manipulées par
le système. Il est organisé sous forme de tables et de vues ce qui permet à tout utilisateur autorisé
d'y accéder grâce au langage SQL.
On distingue deux sortes de dictionnaires: global ou local

1. Le dictionnaire global
Il offre une vision d'ensemble des bases installées sous le système. Les informations de ce
dictionnaire sont stockées dans la base de données iidbdb créée lors de l'installation. iidbdb est
la base de données des bases de données, également appelée master base.
Le tableau suivant liste les tables spécifiques au dictionnaire global (elles n'existent donc que
dans iidbdb. Il s'agit donc d'un extrait du tableau présenté au § 1.

Table Description
iidatabase Décrit les caractéristiques propres à chaque base de données d'une
installation
iidbpriv Décrit les privilèges bases de données pour toutes les bases de données.
iiextend Définit les extensions aux locations de données d'une base de données.
iilocations Indique la localisation physique et l'utilisation de chaque location.
iiprofile Décrit les profils existants
iirole Chaque occurrence décrit un rôle.
iiuser Définit pour une installation, les utilisateurs et leurs privilèges.
iiusergroup Contient pour chaque groupe, la liste des utilisateurs membres.

2. Le dictionnaire local
Un dictionnaire local est propre à chaque base de données. Il est créé au même moment que la
base de données concernée. La constitution de chaque dictionnaire local est similaire à celle du
dictionnaire global iidbdb. Ainsi, chaque base de données dispose de son autonomie par le biais
d'un dictionnaire qui stocke uniquement ses objets.

DMSI/Analyse/lcy/ le 11/10/2009 23241689.doc Page19/77


Ingres Administration des bases de données CA-OpenIngres

B. Les catalogues
La notion de catalogue est une autre façon de présenter le dictionnaire de données. Ce paragraphe
liste et décrit sommairement le catalogue système, l'interface du catalogue standard et l'extension du
catalogue système.
La description de ces catalogues ne doit pas être prise à la lettre car ils ne sont pas supportés par
CA-OpenIngres et sont régulièrement soumis à des modifications.
Les catalogues système sont des tables qui stockent l'information nécessaire à CA-OpenIngres. Ils
peuvent être exploités par des programmes de consultation mais ne doivent pas faire l'objet de mise
à jour. Pour interroger le catalogue système, il est recommandé de consulter l'interface du catalogue
standard.
L'interface du catalogue standard est un ensemble de tables et de vues définies à partir du catalogue
système.
La commande help table | view permet d'afficher le format des tables ou vues des catalogues.

1. Le catalogue système
Il est composé des tables qui stockent des informations utiles pour le noyau de CA-OpenIngres.
Ces tables ne peuvent être mises à jour que par le noyau.
Dans de nombreux cas, l'information présente dans ces tables est codifiée. L'administrateur aura
une meilleure lisibilité en accédant à une vue du catalogue standard. Le nom de la vue
correspond alors au pluriel du nom de la table.
Le tableau ci-dessous décrit succinctement les tables du catalogue système en précisant celles qui
n'existent que dans la base de données iidbdb ainsi que la correspondance directe avec une vue
du catalogue standard.

Table (1) Nom de la Spécifique Description


vue dans le à iidbdb
catalogue
standard
iiattribute Décrit les caractéristiques de chaque attribut d'une
table
iidatabase X Décrit les caractéristiques propres à chaque base de
données d'une installation
iidbdepends Décrit les liens entre les vues et les tables dont
elles dépendent
iidbpriv X Décrit les privilèges bases de données pour chaque
base de données.
iidevices Décrit les locations aditionnelles d'un table.
iievent iievents Informations sur les événements bases de données.
iiextend X Définit les extensions aux locations de données

1
Les éléments les plus importants sont grisés.

DMSI/Analyse/lcy/ le 11/10/2009 23241689.doc Page20/77


Ingres Administration des bases de données CA-OpenIngres

Table () Nom de la Spécifique Description


vue dans le à iidbdb
catalogue
standard
d'une base de données.
iihistogram iihistograms Contient les histogrammes collectés par le
programme optimizedb.
iiindex iiindexes Décrit tous les index d'une table
iiintegrity iiintegrities Contient les informations sur les contraintes
d'intégrité appliquées aux tables.
iilocations X Indique la localisation physique et l'utilisation de
chaque location.
iiprocedure iiprocedures Information sur les procédures bases de données
iiprofile iiprofiles X Décrit chaque profil.
iiprotect Informations sur les protections appliquées aux
tables
iiqrytext Contient le texte des vues, protections (privilèges)
et intégrités
iirel_idx Table d'index qui référence iirelation par le nom de
table et le propriétaire.
iirelation iitables Décrit chaque table de la base de données.
iirole X Chaque occurrence décrit un rôle.
iirule iirules Informations sur les règles de la base de données
iischema Contient les noms de schémas de base de données,
leur propriétaire et leur identifiant.
iistatistics Contient les statistiques sur la base de données,
collectées par le programme optimizedb.
iisynonym iisynonyms Informations sur les synonymes définis pour les
tables, vues et index.
iitree Contient la représentation interne des textes des
vues, protections (privilèges) et intégrités.
iiuser iiusers X Définit pour une installation, les utilisateurs et
leurs privilèges de niveau SGBD.
iiusergroup X Contient pour chaque groupe, la liste des
utilisateurs membres.
iixdbdepends Table d'index utilisée pour retrouver les
enregistrements qui référencent un objet dépendant
dans le catalogue iidbdepends.

DMSI/Analyse/lcy/ le 11/10/2009 23241689.doc Page21/77


Ingres Administration des bases de données CA-OpenIngres

2. Le catalogue standard
Tous les utilisateurs d'une base de données peuvent accéder à l'interface du catalogue standard.
Seuls les utilisateurs privilégiés peuvent le mettre à jour.

Nom (2) Type Vue définie à Description


partir de
iialt_columns Vue iirelation Contient une entrée pour chaque attribut
iiattribute participant à une clef
iiaudittables Vue iirelation Fournit la liste des noms de fichiers d'audit
iigw06_relation pour chaque table.
iicolumns Vue iirelation Contient une entrée pour chaque colonne de
iiattribute tout objet de la base de données.
iidefault
iiconstraint_indexes Vue iiintegrity Contient une entrée pour chaque contrainte
iirelation portant sur un index
iidbdepends
iiconstraints Vue iiintegrity Contient les informations sur toutes les
iirelation contraintes
iiqrytext
iidb_comments Vue iirelation Contient les commentaires (longs et courts)
iidbms_comment saisis lors de la définition des tables, vues et
index.
iidb_subcomments Vue iirelation Contient les commentaires pour chaque
iidbms_comment colonne.
iiattribute
iidbcapabilities Table Décrit les principales caractéristiques de
DBMS.
iidbconstants Vue Constantes de la Donne le nom de l'utilisateur et le nom du
session dba de la base de données.
iidbprivileges Vue iidbpriv Décrit les privilèges accordés pour chaque
base de données.
iievents Vue iievent Contient la description des événements bases
iiqrytext de données.
iifile_info Vue iirelation Cette vue établit la correspondance entre les
iidevices noms de tables ou index et les noms de
fichiers.
iihistograms Vue iirelation Contient pour chaque colonne, les
iiattribute informations sur l'histogramme créé par
iihistogram optimizedb et utilisées par l'optimiseur.
iiindex_columns Vue iirelation Une entrée pour chaque colonne faisant
iiattribute partie d'une clef primaire.
2
Les éléments les plus importants sont grisés

DMSI/Analyse/lcy/ le 11/10/2009 23241689.doc Page22/77


Ingres Administration des bases de données CA-OpenIngres

Nom () Type Vue définie à Description


partir de
iiindexes Vue iirelation Chaque table pour laquelle table_type vaut
iiindex "I" dans iitables a au moins une entrée dans
cette vue.
iiintegrities Vue iirelation Contient une ou plusieurs entrées pour
iiqrytext chaque intégrité définie sur une table; En
iiintegrity effet, il y aura plusieurs entrées si le texte de
définition de l'intégrité contient plus de 240
caractères.
iikeys Vue iiintegrity Contient les informations sur les clefs.
iirelation
iiattribute
iikey
iimulti_locations Vue iirelation Pour les tables localisées sur plusieurs
iidevices volumes, cette vue contient une entrée pour
chaque localisation supplémentaire. La
première localisation d'une table peut être
connue grâce à iitables.
iipermits Vue iiqrytext Contient une ou plusieurs entrées pour
iiprotect chaque permission définie. En effet, il y aura
plusieurs entrées si le texte de définition de la
permission contient plus de 240 caractères.
iiphysical_tables Vue iirelation Cette vue sera supprimée de la prochaine
version. Une entrée pour les éléments de
iitables pour lesquels table_type vaut 'T'
(table) ou 'I' (index).
iipriv Table Contient des informations sur les privileges
définis dans une base de données.
iiprocedures Vue iiqrytext Contient une ou plusieurs entrée pour chaque
iiprocedure procédure base de données. En effet, il y aura
plusieurs entrées si le texte de définition de la
procédure contient plus de 240 caractères. La
création de certaine contraintes génère
automatiquement des procédures.
iiprofiles Vue iiprofile Décrit les caractéristiques de chaque profil.
iiref_constraints Vue iiintegrity Contient les informations sur les contraintes
iirelation de référence.
iidbdepends
iiregistrations Vue iirelation Enregistre le texte de chaque commande
iiqrytext register.
iirules Vue iirelation Contient un enregistrement pour chaque règle
iirule définie dans la base de données.
iiqrytext

DMSI/Analyse/lcy/ le 11/10/2009 23241689.doc Page23/77


Ingres Administration des bases de données CA-OpenIngres

Nom () Type Vue définie à Description


partir de
iisecurity_alarms Vue iirelation Contient des informations sur les alarmes de
iiqrytext sécurité crées sur les tables.
iisecalarm
iievent
iistats Vue iirelation Contient une entrée pour chaque colonne
iiattribute ayant des statistiques.
iistatistics
iisynonyms Vue iirelation Contient des informations sur les synonymes
iisynonym définis pour la base de données. Une entrée
est créée lors de la commande create
synonym. Une entrée est supprimée lors
d'une commande drop synonym ou
lorsqu'une commande drop table | view |
index supprime un élément à partir duquel un
synonyme a été crée.
iitables Vue iirelation Cette vue contient une entrée pour chaque
objet pouvant être interrogé dans la base de
données (table, vue ou index). Certaines
colonnes n'ont de contenu que pour les tables
et index. Certaines colonnes sont utilisées par
le serveur DBMS.
iiusers Vue iiuser Décrit les privilèges au niveau du SGBD
ainsi que l'appartenance à un groupe et un
profil pour chaque utilisateur.
iiviews Vue iirelation Cette vue contient une ou plusieurs entrées
iiqrytext pour chaque vue définie dans la base de
données. En effet, il y aura plusieurs entrées
si le texte de définition de la vue contient
plus de 240 caractères.

3. Le catalogue système étendu


Le catalogue système est étendu pour décrire les objets créés par les différentes interfaces
utilisateurs (ABF, RBF, VIGRAPH, VIFRED, VISION, OpenRoad). A chaque interface
correspond un ensemble de tables créées par défaut lors de la création d'une base de données.

DMSI/Analyse/lcy/ le 11/10/2009 23241689.doc Page24/77


Ingres Administration des bases de données CA-OpenIngres

C. Composition d'une base de données


Chaque base de données contient un fichier de configuration, des fichiers de données, des fichiers
de checkpoint, de journalisation, de dump et de travail. Au cours de l'installation, des locations par
défaut sont établies pour chaque type de fichier.
Ces fichiers sont décrits dans la table ci-dessous.
Fichiers Description
Fichiers de données - Tables de données et d'index créées par vous ou d'autres usagers.
– Tables du catalogue système de la base
Le nom de fichier de chaque table est généré automatiquement par un
algorithme de CA-OpenIngres. La correspondance entre le nom de fichier
et le nom de table est donnée par la vue iifile_info (voir § 1)
Fichiers checkpoint Contient une copie statique de la base de données complète. Un fichier
checkpoint est créé à chaque commande ckpdb.
Fichiers journaux Contient l'enregistrement de chaque modification réalisée sur une table
journalisée. Les fichiers journaux et checkpoint sont utilisés pour restaurer
la base de données.
Fichier dump Contient l'enregistrement des modifications survenue sur la base de
données pendant l'exécution d'un checkpoint en ligne.
Fichiers de travail Fichiers de travail créés par le système lors de l'exécution par exemple de
tri multi-locations ou lors de la création de tables temporaires.

Le fichier de configuration contient des informations d'administration de la base de données. Il est


possible de le consulter à l'aide de l'utilitaire infodb présenté au paragraphe B. Le nom du fichier de
configuration est toujours le même : aaaaaaaa.cnf.

DMSI/Analyse/lcy/ le 11/10/2009 23241689.doc Page25/77


Ingres Administration des bases de données CA-OpenIngres

D. Création d'une base de données


La possibilité de créer une base de données est soumise à l'autorisation de l'administrateur système.
Seuls les utilisateurs ayant le privilège createdb pourront exécuter la commande de création.
Un utilisateur peut créer autant de bases de données que le système peut en supporter.
Le nom d'une base de données doit être unique pour une installation. Il est limité à 32 caractères
alphabétiques ainsi que le caractère souligné (sauf pour le premier caractère). L'unicité du nom est
contrôlée sur les 24 premiers caractères.

1. Syntaxe
createdb dbname [-dlocationname] [-clocationname] [-jlocationname] [-blocationname] [-
wlocationname] [-f product] [-llanguage] [-p] [-S] [-uusername]

2. Description
La commande createdb crée une nouvelle base de données. L'utilisateur qui la crée en devient
administrateur (DBA).
Le tableau ci-dessous décrit les paramètres de la commande.
Paramètre Description
dbname Nom de la base de données
-dlocationname Précise la location des fichiers de données. La location par défaut est celle
pointée par la variable II_DATABASE. 3
-clocationname Précise la location des fichiers checkpoint. La location par défaut est celle
pointée par la variable II_CHECKPOINT.
-jlocationname Précise la location des fichiers journaux. La location par défaut est celle
pointée par la variable II_JOURNAL.
-blocationname Précise la location des fichiers dump. La location par défaut est celle pointée
par la variable II_DUMP.
-wlocationname Précise la location des fichiers de travail. La location par défaut est celle
pointée par la variable II_WORK.
-f product Permet de préciser les catalogues qui doivent être créés. Les valeurs
possibles sont : ingres, ingres/dbd, vision, windows_4gl, and nofeclients
(aucun catalogue) Par défaut, tous les catalogues sont créés.
-llanguage Permet de préciser un jeu de caractères utilisés et définit ainsi l'ordre de tri
alphabétique. Les valeurs possibles sont multi et spanish (l'ordre de tri
correspondant est présenté dans le system reference guide) ou tout nom de
fichier élaboré avec l'utilitaire aducompile. Si aucune valeur n'est précisée
pour ce paramètre, la valeur par défaut est celle précisée par la variable
II_COLLATION. En absence de celle-ci, c'est le jeu de caractères ASCII ou
EBCDIC présent sur la machine qui s'applique.
-p Permet de créer une base de données privée. Seuls le DBA et les utilisateurs
nommément désignés pourront y accéder. Par défaut, une base de données
3
Le contenu des variables de niveau installation peut être obtenu par la commande système ingprenv. Pour les variables de
niveau session, utiliser la commande système env.

DMSI/Analyse/lcy/ le 11/10/2009 23241689.doc Page26/77


Ingres Administration des bases de données CA-OpenIngres

Paramètre Description
est publique mais l'accès aux tables doit être explicitement accordé.
-S Ce paramètre n'est utilisé que pour la création de la base iidbdb. Seul un
utilisateur privilégié peut l'employer.
-uusername Précise l'utilisateur effectif de la session. Ce paramètre permet à un
utilisateur autorisé de créer une base de données en se substituant à
l'utilisateur username qui en sera le DBA.

3. Exemple
Créer la base de données dbdupond dont le DBA sera l’utilisateur dupond.
createdb dbdupond –udupond
Créer la base de données mabase dont vous êtes administrateur.
createdb mabase

4. Fonctionnement de createdb
A l'exécution de la commande, les opérations suivantes sont réalisées :
→ Mise à jour du catalogue système de iidbdb.
→ Création d'un nouveau répertoire portant le nom de la base dans la location prévue pour la
base. La location par défaut est II_DATABASE/ingres/data/default.
→ Copie du fichier de configuration (aaaaaaaa.cnf) et des tables du noyau du catalogue système
de la base (aaaaaaax.t00, x prenant les valeurs de b jusqu'à e) dans le nouveau répertoire.
→ Création et modification du catalogue système.
→ Création du catalogue standard.
→ Création de l'extension utilisateur du catalogue système.
→ Attribution du droit select pour public sur le catalogue système.

Sachant que la variable II_DATABASE vaut : /baseingres, l’arborescence de stockage des


fichiers des bases de données est représentée par le graphique ci-dessous.

DMSI/Analyse/lcy/ le 11/10/2009 23241689.doc Page27/77


Ingres Administration des bases de données CA-OpenIngres

E. Suppression d'une base de données

1. Syntaxe
destroydb dbname
[-p] [-l] [-uusername]

2. Description
La commande destroydb supprime une base de données existante. Le répertoire de la base et
tous les fichiers qu'il contient sont détruits. Cette commande ne permet pas de détruire la base
iidbdb. Seuls le DBA et l'administrateur système CA-OpenIngres peuvent exécuter cette
commande. Le tableau qui suit décrit les paramètres de la commande.
Paramètre Description
dbname Nom de la base de données
-p Impose une demande de confirmation de destruction. Il est conseillé de faire
un alias de cette commande pour y inclure cette option.
-l Permet d'obtenir un message d'erreur si la base est en cours d'utilisation.
-uusername Précise l'utilisateur effectif de la session. Ce paramètre permet à un
utilisateur autorisé de supprimer une base de données en se substituant à
l'utilisateur username.

F. Maintenance d'une base de données


La commande verifydb dont la syntaxe, particulièrement complète, ne sera pas donnée ici permet
d'effectuer les principales opérations de maintenance d'une base de données. On distingue
essentiellement :
→ Destruction ou détection dans la (les) base(s) précisée(s)
des fichiers inutiles,
des tables périmées,
des tables temporaires.
→ Suppression, dans le catalogue système, de toutes références à une table précisée.

Selon les paramètres utilisés, la commande rend compte de son exécution à l'écran mais également
dans le fichier iivdb.log.

DMSI/Analyse/lcy/ le 11/10/2009 23241689.doc Page28/77


Ingres Administration des bases de données CA-OpenIngres

IV. Gestion des données


Ce chapitre traite des commandes qui permettent de gérer les données et leurs structures.
La gestion des structures de données sera montrée par la gestion des tables (création, modification,
suppression) et des vues. La création des tables mettra en évidence la prise en compte des contraintes
d'intégrité des données.
La gestion des données abordera les opérations d'importation, d'exportation mais également le
chargement et déchargement de tout ou partie d'une base de données.

A. Gestion des tables

1. Création des tables


La commande create table permet de créer une table d'une base de données. Il existe également
une commande de création d'une table contenant les données issues d'une autre table (create
table … as select …). Cette commande ne sera pas présentée.
Create table offre une syntaxe particulièrement complète (20 pages de documentation SQL) qui
permet bien sûr de spécifier les colonnes, de mettre en place des contraintes d'intégrité au niveau
de la table ou des colonnes et de préciser des éléments d'administration tels que la localisation, la
duplication et la journalisation. De plus, la possibilité de créer une table contenant des
informations issues d'une autre table ainsi que la possibilité par modify de changer la structure
d'une table, proposent à l'administrateur d'intervenir sur les structures physiques des tables dans
un souci d'optimisation des performances.
La syntaxe de create table sera donc présentée ici de façon succincte.

1.1. Syntaxe
create table nom_table
(
specif_col {,specif_col}
[, [constraint nom_contrainte] cont_table {, [constraint nom_contrainte] cont_table }]
)
[with clause_with]

1.1.1. Définition des attributs


specif_col Permet de préciser toutes les caractéristiques d’une colonne: le nom et le type
de données sont complétés éventuellement par trois clauses qui permettent de
traiter les valeurs nulles, les valeurs par défaut ainsi que les contraintes
d'intégrité pour une colonne.

DMSI/Analyse/lcy/ le 11/10/2009 23241689.doc Page29/77


Ingres Administration des bases de données CA-OpenIngres

specif_col a la syntaxe suivante


nom_col type_donnée
[[with] default valeur | with default | not default]
[with null | not null]
[ [constraint nom_contrainte] cont_col {, [constraint nom_contrainte] cont_col }]

cont_col Par opposition aux contraintes de niveau table, celles-ci font partie de la
définition d'un attribut et ne concernent donc que celui-ci. Les valeurs
possibles sont présentées dans le tableau qui suit.
type_donnée Tous les types de données reconnus par CA-OpenIngres.

Contrainte Description
unique Gère l'unicité de chaque valeur de l'attribut dans la table
primary key L'attribut est clef primaire. L'unicité est gérée et l'attribut
peut être référencé par une autre table.
references nom_table [(col)] L'attribut fait référence à la colonne de la table indiquée
check (spécification) Permet de spécifier un contrôle de validité pour une
occurrence de l'attribut. spécification doit être un prédicat.

Il est recommandé de nommer les contraintes. Leur nom et leur type (U : unicité, P :
primaire, C : contrôle, R : références) sont stockés dans iiconstraints qui peut être
consultée. La commande SQL alter table permet d'ajouter ou supprimer des contraintes de
niveau table.

1.1.2. Contraintes d'intégrité pour la table


cont_table Il s'agit de contraintes d'intégrité qui concernent l'ensemble de la table. On
constate qu'elles peuvent être nommées et que leur définition suit la liste des
attributs. Les valeurs possibles sont commentées dans le tableau ci-dessous.

Contrainte Description
unique (nom_col {, nom_col}) Gère l'unicité pour le groupe de valeur des
colonnes indiquées
primary key (nom_col {, nom_col}) Le groupe de colonnes constitue la clef primaire
de la table. L'unicité du groupe de colonnes est
gérée mais de plus, la clef primaire peut être
référencée par une autre table.
foreign key (nom_col {, nom_col}) Les colonnes précisées après foreign key
references nom_table [(nom_col {, constituent une clef étrangère et font référence
nom_col})] aux attributs et à la table spécifiée.

DMSI/Analyse/lcy/ le 11/10/2009 23241689.doc Page30/77


Ingres Administration des bases de données CA-OpenIngres

Contrainte Description
check (specif_controle) Permet de spécifier un contrôle de validité pour
une occurence de la table. Exemple : budget >
depense

1.1.3. La clause with


clause_with Cette clause est une liste de valeurs séparées par une virgule. Le tableau
suivant présente les valeurs possibles. Les options additionnelles utilisables
lors de la création d'une table tout en recopiant les données d'une autre ne
seront pas présentées.

Option with Description


location = (nom_location {, Permet de préciser dans quelle(s) location(s) la table
nom_location}) sera créée. Les locations doivent exister et la base de
données doit avoir été étendue aux zones
correspondantes. Si cette option n'est pas précisée, la
table est crée dans la location par défaut de la base.
[no]journaling Permet de valider ou d'inhiber la journalisation. La
journalisation permet de garder la trace de tous les
changements effectués sur une table depuis la dernière
commande ckpdb (voir page 68).
[no]duplicates duplicates : la table accepte des enregistrements
identiques.
noduplicates : le système contrôlera l'unicité de chaque
occurrence dans la table.
Cette option ne concerne pas les tables de structure
HEAP.
label_granularity = table | Ce paramètre n'est actif que pour les installations
row | system_default d'Ingres homologuées au niveau de sécurité B1. Il
permet de définir si le label de sécurité sera la valeur
système (valeur par défaut) ou valable pour l'ensemble
de la table ou propre à chaque enregistrement
security_audit = (option_audit Les options possibles sont table, row ou norow. Permet
{, option_audit}) de préciser si un événement d'audit sera généré pour
des opérations concernant la table ou les
enregistrements de la table.
security_audit_key = Permet de spécifier l'attribut servant d'identifiant dans
(colonne) le fichier audit (Exemple, le N° d'employé)

1.2. Description
La table créée a par défaut la structure HEAP. Pour obtenir une autre structure, il est possible
d'utiliser les options de la clause with.
Une table contient au maximum 300 attributs. La taille maximale d'un enregistrement est de
2008 octets pour des pages de 2048 octets.
Certains types de données ont une taille réelle plus grande que la taille déclarée :

DMSI/Analyse/lcy/ le 11/10/2009 23241689.doc Page31/77


Ingres Administration des bases de données CA-OpenIngres

varchar (x) x + 2 octets


text (x) x + 2 octets
… with null + 1 octet

1.3. Exemple
Créer les tables nécessaires au MLD relationnel suivant en tenant compte des clefs étrangères
et primaires.
COMMANDE (numero, date_creation, date_livraison)
PRODUIT (nom, qte_dispo)
COMMANDER (num_commande, nom_produit, qte)
La quantité commandée doit être positive. La date de livraison peut être saisie plusieurs jours
après la création de la commande. Elle doit être postérieure à la date de création.
Toutes les contraintes doivent être nommées.

create table commande


(
numero i4 not null constraint idcommande primary key,
date_creation date,
date_livraison date,
constraint ckcomparedates check (date_livraison is null or date_livraison >= date_creation)
)
create table produit
(
nom char(10) not null constraint idmatiere primary key,
qte_dispo i1
)
create table commander
(
num_commande i4 not null constraint fkcommande references commande,
nom_produit char(10) not null constraint fkproduit references produit (nom),
constraint idcommander primary key (num_commande, nom_produit)
)

2. Modification des tables


Ce paragraphe ne traitera que la possibilité d'ajouter ou supprimer des contraintes à une table. La
commande modify qui concerne les structures de stockage fera l'objet d'un autre cours.
La commande alter table permet d'ajouter ou supprimer des contraintes à la table indiquée.

DMSI/Analyse/lcy/ le 11/10/2009 23241689.doc Page32/77


Ingres Administration des bases de données CA-OpenIngres

2.1. Syntaxe
alter table nom_table
add [constraint nom_contrainte] spécif_contrainte |
drop constraint nom_contrainte restrict | cascade
REMARQUE : une contrainte ne peut être supprimée qu’en la désignant par son nom. Si la
contrainte n’a pas été nommée lors de sa création, il est possible de la supprimer malgré tout
en recherchant dans le catalogue iiconstraint le nom attribué automatiquement par le système.

2.2. Description
Pour l'ajout de contraintes, les valeurs de spécif_contrainte respectent la syntaxe vue pour
create table.
La suppression d'une contrainte nécessite de connaître le nom qui lui a été attribué lors de la
création. Le comportement de la commande est différent selon l'option restrict ou cascade.
restrict
La commande s'interrompt si une contrainte dépend de celle supprimée.
cascade
La commande supprime la contrainte ainsi que celles qui en dépendent. Exemple, la
suppression d’une contrainte de clef primaire entraînera celle des contraintes de clef
étrangères.

2.3. Exemple
Supprimer la contrainte ckcomparedates de la table commande.
alter table commande
drop constraint ckcomparedates restrict

3. Suppression des tables


La suppression de tables s'effectue à l'aide de la commande drop qui concerne également les
vues et les index.

3.1. Syntaxe
drop [type_objet] nom_objet {, nom_objet}

Les valeurs de type_objet sont : table | view | index


nom_objet : nom de la table, la vue ou l'index.

3.2. Description
La commande drop supprime de la base de données les éléments spécifiés. Les synonymes et
commentaires associés sont également supprimés. Si l'objet supprimé est une table, les index,
vues, privilèges et intégrités qui en dépendent sont supprimés automatiquement.

DMSI/Analyse/lcy/ le 11/10/2009 23241689.doc Page33/77


Ingres Administration des bases de données CA-OpenIngres

Si le type d'objet est précisé, le système contrôle que le nom de l'objet appartient bien à ce
type. Si plusieurs éléments sont listés, seuls ceux de ce type seront supprimés.
Pour supprimer des éléments de type différent, il suffit de ne pas préciser le type d'objet.

3.3. Permissions
Seul le propriétaire de l'objet peut le supprimer.

3.4. Verrouillage
La commande drop pose un verrou exclusif sur la table spécifiée.

3.5. Exemple
Supprimer la table instructeur
drop instructeur

DMSI/Analyse/lcy/ le 11/10/2009 23241689.doc Page34/77


Ingres Administration des bases de données CA-OpenIngres

B. Gestion des vues


La gestion des vues comporte leur création et leur suppression. La modification d'une vue n'est pas
possible.
Définir une vue correspond à définir une table virtuelle. Alors que l'existence physique d'une table
se matérialise par une structure et des données, l'existence physique d'une vue se matérialise par le
texte de sa définition.

1. Création d'une vue

1.1. Syntaxe
create view nom_vue
[(nom_colonne {, nom_colonne})]
as commande_select
[with check option]

commande_select: offre toutes les possibilités de la commande select.

1.2. Description
La commande create view utilise la commande select pour définir le contenu de la table
virtuelle. La définition de la vue est mémorisée dans les catalogues (iiviews du catalogue
standard). Lorsque la vue est utilisée dans une commande SQL, celle-ci opère sur les tables
désignées. Lorsqu'une vue ou une table utilisées dans la définition d'une vue sont supprimées,
la vue est supprimée.
Pour une consultation, une vue est utilisée de la même façon qu'une table. Par contre, les
opérations de modification, ajout, et suppression d'occurrences d'une vue sont soumises à des
contraintes strictes. Elles ne peuvent s'effectuer que si la vue remplit toutes les conditions
suivantes :
→ La vue est basée sur une seule table ou vue qui peut être mise à jour.
→ Tous ses attributs se réfèrent aux attributs de la table ou vue (les fonctions agrégats et les
formules dérivées ne sont pas autorisées).
→ La commande select n'emploie pas les clauses distinct, group by, union, et having.
De plus, l'ajout d'occurrences est impossible si des attributs (de la table) dont la saisie est
obligatoire ne sont pas employés dans la définition de la vue.

1.3. La clause with check option


Cette clause empêche d'effectuer un ajout ou une modification qui ne respecterait pas la
clause where de définition de la vue.

DMSI/Analyse/lcy/ le 11/10/2009 23241689.doc Page35/77


Ingres Administration des bases de données CA-OpenIngres

Exemple :
create view ma_vue
as select *
from ma_table
where ma_colonne = 10
with check option;

La modification "update ma_vue set ma_colonne = 5" sera rejetée car elle ne respecte pas la
clause where (ma_colonne = 10).

1.4. Permissions
Le créateur d'une vue doit avoir tous les privilèges requis pour exécuter la clause select de
définition de la vue.

1.5. Verrouillage
La commande create view pose des verrous exclusifs sur les tables intervenant dans sa
définition.

1.6. Exemple
Créer la vue commandes. Elle reprend tous les attributs des tables commande, produit et
commander sans redondance.
create view commandes (commande, creation, livraison, produit, qte_dispo, qte_cde)
as select numero, date_creation, date_livraison, nom, qte_dispo, qte
from commande, produit, commander
where numero = num_commande
and nom = nom_produit

2. Suppression d'une vue


La suppression d'une vue s'effectue à l'aide de la commande drop (voir § 3).

DMSI/Analyse/lcy/ le 11/10/2009 23241689.doc Page36/77


Ingres Administration des bases de données CA-OpenIngres

C. Importation, exportation de données


L'importation et l'exportation de données entre un fichier et une table peut s'effectuer de deux
façons : la copie formatée qui respecte le format défini pour la table et la copie binaire, plus
rapide, qui transfère les données octet par octet.
Qu'il s'agisse d'une copie binaire ou formatée, lors du chargement (importation) d'une table, la copie
peut être de type "incrémental" ou de type "bulk".
Dans le cas d'une copie de type "incrémental", les données sont ajoutées dans la table par la
commande insert. C'est le type de transfert le moins performant.
Quand certaines conditions sont remplies, le système choisi automatiquement une "bulk copie". Ce
transfert, le plus performant, est optimisé en matière de transactions. Les conditions à remplir
concernent la table à charger :
→ table non journalisée, sans index secondaire
→ la table est soit
→ de structure HEAP
→ d'une autre structure, mais vide et de moins de 18 pages.

1. La copie formatée

1.1. La commande copy


Cette commande permet de charger dans une table le contenu d'un fichier externe
(importation) ou de décharger une table dans un fichier externe (exportation).

1.1.1. Syntaxe
copy [table] tablename
([columnname = format [with null [(value)]]
{,columnname = format [with null [(value)]]}])
into | from 'filename'
[with with_clause {,with_clause}]
Le fichier (en entrée ou en sortie) peut être de format fixe ou variable.

1.1.2. La clause with


Cette clause facultative est constituée du mot with suivit de l'un ou plus des éléments
suivants, séparés par une virgule.

Valeur Description
on_error = terminate | continue permet à la commande copy de continuer son
continue exécution même en cas d'erreur de conversion.
terminate est l'option par défaut.

DMSI/Analyse/lcy/ le 11/10/2009 23241689.doc Page37/77


Ingres Administration des bases de données CA-OpenIngres

Valeur Description
error_count = n précise le nombre d'erreurs à utiliser avec l'option
on_error = terminate.
1 est la valeur par défaut.
rollback = enabled | disabled n'a de sens qu'en import.
enabled permet de n'importer aucun des
enregistrements si la commande copy s'interrompt.
disabled permet d'importer une partie des
enregistrements même si une erreur intervient.
enabled est l'option par défaut.
log = 'filename' permet de récupérer les enregistrements ayant posé
problème.
à utiliser avec l'option on_error = continue.

Il existe d'autres options qui ne sont valables que dans le cas d'un "bulk copy"
formats :
Ce paragraphe décrit les principaux formats utilisables dans la commande copy ainsi que le
comportement qui en résulte dans le cas d'un copy into ou copy from. Pour plus de
précision (autres formats, conversion, nombre de décimales …) consultez le SQL
Reference Guide .

DMSI/Analyse/lcy/ le 11/10/2009 23241689.doc Page38/77


Ingres Administration des bases de données CA-OpenIngres

Format Stockage dans le fichier (copy Stockage dans la table (copy


into) : EXPORT from) : IMPORT
char(0) Stocké comme un string de Lu comme chaîne de caractères de
longueur fixe (complété par des longueur variable terminée par la
blancs si nécessaire). Pour des première virgule, tabulation ou fin
données de type caractère, la de ligne rencontrée.
longueur du string est la même que
celle de la colonne
char(0)delim Complété à la longueur de la Lu comme chaîne de caractères de
colonne. Le délimiteur est inséré longueur variable terminée par le
immédiatement après la valeur. caractère spécifié.
Dans ce cas, le délimiteur espace
n'est pas admis.
char(n) n de 1 Stocké comme un string de Lu comme string de longueur n.
à 2000 longueur n.
cn Stocké comme un string de Lu comme string de longueur n.
longueur n.
date Stocké au format date Lu comme attribut de type date.
decimal Stocké au format décimal Lu comme donnée décimale.
dn Ce format est appelé "dummy Lu comme une chaîne de caractères
column". Au lieu d'insérer une de la longueur indiquée. La valeur
valeur dans le fichier, la commande est ignorée. n précise le nombre
copy insère le nom de la colonne n d'octets à ignorer.
fois. Par exemple, si vous indiquez
x=d3, le nom de colonne "x" est
inséré trois fois. Il est possible
d'indiquer un délimiteur comme
nom de colonne; exemple nl=d1
float Stocké comme float double Lu comme float double précision
précision.
float4 Stocké comme float simple Lu comme float simple précision.
précision.
integer Stocké comme entier de 4 octets. Lu comme entier de 4 octets.
integer1 Stocké comme entier de 1 octet. Lu comme entier de 1 octet.
money Stocké au format monnaie Lu comme attribut de type
monnaie.
smallint Stocké comme entier de 2 octets. Lu comme entier de 2 octets.
varchar(0) Stocké comme string de longueur Lu comme string de longueur
variable précédé de 5 caractères variable précédé de 5 caractères
contenant la longueur. contenant la longueur.
vchar(0) Même effet que le précédent. Ne Même effet que le précédent. Ne
donne pas la longueur. donne pas la longueur.
varchar(n) n Stocké comme string de longueur Lu comme string de longueur fixe
de 1 à 2000 fixe précédé de 5 caractères précédé de 5 caractères contenant la
contenant la longueur. Si longueur.
nécessaire, la valeur est complétée
par des caractères null jusqu'à la
longueur indiquée.

DMSI/Analyse/lcy/ le 11/10/2009 23241689.doc Page39/77


Ingres Administration des bases de données CA-OpenIngres

1.1.3. Les délimiteurs


En import, la commande copy reconnaît par défaut les délimiteurs suivants :
→ comma (virgule)
→ nl (new line)
→ tab
Il faut éviter le séparateur comma s’il intervient pour délimiter les nombres décimaux.
En export, le délimiteur doit être spécifié.
→ pas de délimiteur par défaut.

Liste des délimiteurs reconnus :


→ comma (virgule)
→ nl (new line)
→ tab
→ sp (espace)
→ colon (:)
→ dash (-)
→ lparen, rparen (parenthèse droite ou gauche)
→ caractère quelconque (syntaxe particulière à respecter)

1.1.4. La clause with null


En exportation (copy into), cette clause permet d'attribuer une valeur de substitution à une
donnée non renseignée et dont la colonne est définie avec la clause with null.

Pour un copy from (import), la chaîne de caractères (value) est interprétée comme une
valeur nulle dans la table.

→ obligatoire en export s'il existe des valeurs nulles.

1.2. Exemple de chargement : Importation

1.2.1. Import à partir d'un fichier de format fixe


Structure du fichier en entrée :

b1Dudragnebbbb$125000.00etudesbbbbNEN/Abbbbb27-nov-1978b3
12Steinerbbbbb$680000.00adminbbbbbNODudragne27-nov-1978b2

DMSI/Analyse/lcy/ le 11/10/2009 23241689.doc Page40/77


Ingres Administration des bases de données CA-OpenIngres

Syntaxe de l'ordre copy :


copy table emp (
mat = char(2),
nom = char(8),
salaire = char(14),
dept = char(10),
xxx = d2,
mgr = char(8) with null ('N/A'),
dat_entree = char(11),
nb_enf = char(2),
nl = d1)
from 'fichier1'

1.2.2. Import à partir d'un fichier de format variable.

Structure du fichier en entrée :

1,Dudragne,$125000.00,etudes,NE,N/A,27-nov-1978,3
12,Steiner,$680000.00,admin,NO,Dudragne,27-nov-1978,2

Syntaxe de l'ordre copy

copy table emp (


mat = vchar(0)comma,
nom = vchar(0) comma,
salaire = vchar(0) comma,
dept = vchar(0) comma,
xxx = d0,
mgr = vchar(0) comma with null ('N/A'),
dat_entree = vchar(0) comma,
nb_enf = vchar(0)nl)
from 'fichier1')

1.3. Exemple de déchargement : Exportation

1.3.1. Exportation dans un fichier de format fixe.

DMSI/Analyse/lcy/ le 11/10/2009 23241689.doc Page41/77


Ingres Administration des bases de données CA-OpenIngres

Syntaxe de l'ordre copy :

copy table emp (


mat = char(2),
nom = char(8),
salaire = char(14),
dept = char(10),
mgr = char(8) with null ('N/A'),
dat_entree = char(11),
nb_enf = char(2),
nl = d1)
into 'fichier1'

Structure du fichier en sortie :

b1Dudragnebbbb$125000.00etudesbbbbNEN/Abbbbb27-nov-1978b3
12Steinerbbbbb$680000.00adminbbbbbNODudragne27-nov-1978b2

1.3.2. Exportation dans un fichier de format variable

Syntaxe de l'ordre copy :

copy table emp (


mat = vchar(0)comma,
nom = vchar(0)comma,
salaire = vchar(0)comma,
dept = vchar(0)comma,
mgr = vchar(0)comma with null ('N/A'),
dat_entree = vchar(0)comma,
nb_enf = vchar(0)nl)
into 'fichier1'

Structure du fichier en sortie :

1,Dudragne,$125000.00,etudes,N/A,27-nov-1978,3
12,Steiner,$680000.00,admin,Dudragne,27-nov-1978,2

DMSI/Analyse/lcy/ le 11/10/2009 23241689.doc Page42/77


Ingres Administration des bases de données CA-OpenIngres

2. Copie binaire

2.1. Syntaxe :
copy [table] nomtable () from | into 'filename'
→ Les parenthèses sont obligatoires.
→ Copie toutes les colonnes en format binaire.
→ Non portable.
→ Pour charger les données d'un fichier issu d'une copie binaire, il faut utiliser une copie
binaire.

2.2. Exemple
Efectuer la copie binaire de la table matable vers le fichier monfichier du répertoire courant.
copy matable () into ‘monfichier.dat’

DMSI/Analyse/lcy/ le 11/10/2009 23241689.doc Page43/77


Ingres Administration des bases de données CA-OpenIngres

D. Chargement, déchargement d'une base de données

1. Présentation
Ce paragraphe explique comment décharger et recharger une base de données ou les tables
sélectionnées à l'aide des commandes unloaddb et copydb. Il existe également des commandes
particulières pour copier des objets particuliers tels que les procédures, tables, forms,
applications, reports. Ces commandes ne seront pas traitées dans ce document.

Unloaddb et copydb sont lancées depuis le système d'exploitation et génèrent des scripts qui
permettent de :
→ décharger une base de données complète vers des fichiers externes au format binaire ou
ASCII,
→ copier les tables sélectionnées ou toutes les tables, vues et procédures dont vous êtes
propriétaire vers des fichiers externes au format binaire ou ASCII,
→ recharger la base de données ou les objets à partir de ces fichiers.

Ces deux commandes procèdent en deux étapes :


→ Etape 1 : exécution de la commande pour créer les scripts
→ Etape 2 : exécution des scripts pour décharger puis recharger la BD.

Conditions
→ unloaddb être administrateur de la base ou avoir le privilège security
→ copydb tout utilisateur propriétaire des tables, vues ou procédures copiées.

2. Utilisation
Ces commandes sont utilisées le plus fréquemment pour transférer tout ou partie d'une base de
données vers une autre installation, quelque soit le système d'exploitation.
Ces commandes peuvent également servir à
→ transférer tout ou partie d'une BD vers une autre de la même installation
→ documenter la BD. En effet, les scripts générés peuvent servir de documentation (modèle
physique de données : MPD)
→ faire des copies statiques de la BD dans un but de récupération
→ archiver des données que vous voulez purger ou recharger plus tard.

3. La commande unloaddb
Cette commande permet de décharger puis recharger une BD complète. Elle peut aussi ne
concerner que les objets d'un propriétaire précis.
Condition être administrateur de la base ou avoir le privilège security

Unloaddb concerne tous les objets et catalogues système de la BD incluant :


→ tables,
→ vues,
→ procédures

DMSI/Analyse/lcy/ le 11/10/2009 23241689.doc Page44/77


Ingres Administration des bases de données CA-OpenIngres

→ forms
→ reports
→ graphs
→ définitions ABF
→ joindefs
→ QBFnames
→ permissions, intégrités et index
→ règles
→ événement BD
→ commentaires,
→ synonymes
et dans le cas de la iidbdb
→ groupes,
→ rôles
→ privilèges bases de données
→ événements

3.1. Syntaxe
unloaddb dbname [-c] [-ddirname] [-source= dirname] [-dest= dirname] [-uusername]
[-Ggroupid]

-c permet de générer une copie au format ASCII. Il faut utiliser ce flag si la


compatibilité binaire n'est pas assurée entre les opérations de chargement et
déchargement.
-source Source du rechargement. Permet de préciser le répertoire à partir duquel la BD
sera rechargée. Le fichier de commandes copy.in effectue des importations (par
copy) à partir des fichiers de ce répertoire.
-dest Destination du déchargement. Répertoire dans lequel la base sera déchargée. Le
fichier de commande copy.out effectue des exportations (par copy) vers ce
répertoire.
-ddirname permet d'indiquer le répertoire d'accueil des 4 fichiers présentés ci-dessous.

3.2. Fonctionnement de unloaddb


L'exécution de unloaddb provoque la création des fichiers décrits ci-dessous.
Fichiers générés Contenu du fichier
unload.ing Commandes du système d'exploitation invoquant le terminal moniteur
afin d'exécuter le script copy.out
copy.out Commandes copy permettant de copier les catalogues système et les
objets des utilisateurs
reload.ing Commandes du système d'exploitation invoquant le terminal moniteur
afin d'exécuter le script copy.in
copy.in Contient les commandes pour détruire, créer et copier les catalogues
système et les objets des utilisateurs

DMSI/Analyse/lcy/ le 11/10/2009 23241689.doc Page45/77


Ingres Administration des bases de données CA-OpenIngres

Unloaddb détruit les catalogues système étendus et les recrée avant de charger les données,
ceci pour s'assurer que les données sont chargées dans des catalogues système identiques à
ceux d'origine.

3.3. Virgule flottante


Dans les fichiers unload.ing et reload.ing, la spécification de virgule flottante donne par
défaut le maximum de précision et de longueur (-f8F79.38). Pour diminuer la longueur ou la
précision, il suffit de modifier ces deux fichiers. Dans le cas contraire, les zéros non
significatifs occuperont de l'espace disque.

3.4. Verrous
Lors de l'exécution de la commande unloaddb ou du fichier de commandes unload.ing, le
système pose des verrous partagés sur les catalogues système et les tables concernées.
Lors de l'exécution du fichier de commandes reload.ing, le système pose des verrous
exclusifs sur les catalogues système et les tables concernées.

3.5. Base de données incohérente (inconsistent)


Lors de unloaddb, la BD peut devenir incohérente pour deux raisons essentielles :
→ la base n'ayant pas de verrous exclusifs pendant l'exécution de unloaddb ou unload.ing,
un utilisateur peut modifier la structure des tables qui ne sont pas verrouillées.
→ un utilisateur peut aussi modifier la structure de tables entre unloaddb et unload.ing.

Si une table est supprimée pendant cet intervalle de temps, un message d'erreur est généré.

Certains changements peuvent être faits par un utilisateur sans générer de message d'erreur :
→ ajout ou suppression d'enregistrements dans une table
→ ajout de tables

Pour assurer la cohérence de la base pendant son déchargement, verrouillez la de façon


exclusive.

3.6. Exemple : changement du propriétaire d'une BD


→ Exécuter unloaddb
→ Exécuter unload.ing
→ Détruire la base de données destroydb
→ Recréer la BD pour le compte du nouveau propriétaire createdb –u
→ Editer le fichier copy.in : recherchez les lignes comportant "set session authorization
ancien_propriétaire" et remplacez ancien_propriétaire par le nouveau nom.
→ Exécuter reload.ing
→ Exécuter la commande sysmod (cette commande modifie les tables système de la base
pour optimiser les accès.

4. La commande copydb
Cette commande permet à tout utilisateur de copier :

DMSI/Analyse/lcy/ le 11/10/2009 23241689.doc Page46/77


Ingres Administration des bases de données CA-OpenIngres

→ des tables et vues d'une BD


→ tous les objets (tables, vues, procédures) dont l'utilisateur est propriétaire.

Ce que va copier copydb dépend de la syntaxe de la commande :


→ si un nom de table est précisé, la copie porte sur les tables, vues précisées dont l'utilisateur est
propriétaire ainsi que sur les index, intégrités, événements, permissions et règles associés.
→ dans le cas contraire, la copie concerne toutes les tables, vues et procédures dont l'utilisateur
est propriétaire ainsi que sur les index, intégrités, événements, permissions et règles associés.

4.1. Syntaxe
copydb dbname [tablename {tablename}] [-c] [-ddirname] [-source= dirname] [-dest=
dirname]
[-uusername] [-Ggroupid]

-c permet de générer une copie au format ASCII. Il faut utiliser ce flag si la


compatibilité binaire n'est pas assurée entre les opérations de chargement et
déchargement.
-source permet de préciser le répertoire à partir duquel la BD sera rechargée. Le fichier de
commandes copy.in effectue des importations (par copy) à partir des fichiers de
ce répertoire.
-dest répertoire dans lequel la base sera déchargée. Le fichier de commande copy.out
effectue des exportations (par copy) vers ce répertoire.
-ddirname permet d'indiquer le répertoire d'accueil des 2 scripts présentés ci-dessous.

4.2. Fonctionnement de copydb


Pour copier toutes les tables, vues et procédures dont vous êtes propriétaire dans une BD,
exécutez la commande suivante depuis le prompt :
copydb dbname
Cette commande génère deux scripts
→ copy.out qui contient les commandes SQL pour copier vos tables vers des fichiers du
système d'exploitation,
→ copy.in qui contient les commandes SQL pour recréer vos tables, vues, procédures, les
index, permissions, intégrités, événements et règles associés ainsi que les données des
tables, depuis les fichiers vers la base de données.

Pour exporter les tables de votre base de données, exécutez le script copy.out. Pour les
importer dans la BD d'origine ou une autre, exécutez le script copy.in.

4.3. Les scripts copy.in et copy.out


Le script copy.out contient une commande de copie pour chaque table à copier.
Le script copy.in contient une commande de copie pour chacune de vos tables vues et
procédures si vous n'avez pas spécifié de tables particulières lors du copydb. Le rechargement
s'effectue dans l'ordre suivant :

DMSI/Analyse/lcy/ le 11/10/2009 23241689.doc Page47/77


Ingres Administration des bases de données CA-OpenIngres

→ Utilisateurs, groupes et rôles (uniquement dans le cas d'un rechargement de iidbdb),


→ Tables. Les commandes alter table sont utilisées si nécessaire ultérieurement pour les
intégrités de référence.
→ Données.
→ Permissions. Les permissions sont recréées dans le même ordre qu'à l'origine. Elles
peuvent être celles du propriétaire de la table ou celles d'autres propriétaires (en fonction
de la clause with grant option).
→ Les index, autres modifications et intégrités.
→ Les vues et leurs permissions. Comme pour les tables, elles sont recréées dans le même
ordre qu'à l'origine.
→ Les événements alerte et leur permissions.
→ Les procédures BD et leurs permissions. Les procédures dépendent de tables, vues,
événement et synonymes. Elles peuvent également faire référence à d'autres procédures.
Pour réaliser le rechargement des procédures, copydb utilise deux fois le catalogue
iiprocedures.
→ Les règles.
→ Les commentaires sont générés par la commande comment on.

Si vous précisez une table ou vue particulière, le script copy.in ne contiendra que les
commandes de création de l'objet concerné.

4.4. Virgule flottante


La spécification par défaut est de 10 positions et 3 décimales. Si vos données demandent une
plus grande précision, vous pouvez modifier le masque de précision en utilisant le flag –f avec
la commande sql lors de l'exécution des scripts copy.out et copy.in.

4.5. Verrous
Lors de l'exécution de la commande copydb ou du script copy.out, le système pose des
verrous partagés sur les tables concernées.
Lors de l'exécution du script copy.in, le système pose des verrous exclusifs sur tables
concernées.

4.6. Base de données inconsistante


Lors de copydb, la BD peut devenir inconsistante pour deux raisons essentielles :
→ Puisque des verrous partagés sont posés sur les tables copiées pendant l'exécution de
copydb et copy.out, un utilisateur peut exécuter un alter table sur les tables qui ne sont
pas verrouillées.
→ un utilisateur peut aussi modifier la structure de tables entre copy.out et copy.in.

Si une table est supprimée pendant cet intervalle de temps, un message d'erreur est généré.
Certains changements peuvent être faits par un utilisateur sans générer de message d'erreur :
→ ajout ou suppression d'enregistrements dans une table
→ ajout de tables

DMSI/Analyse/lcy/ le 11/10/2009 23241689.doc Page48/77


Ingres Administration des bases de données CA-OpenIngres

Pour assurer la cohérence des tables copiées, verrouillez les de façon exclusive pendant leur
copie. Pour cela, ajoutez le flag –l pour exécuter le script copy.out :
sql –l dbname < copy.out

4.7. Exemple : changement du nom d'une table


Exécutez la commande
copydb –uusername dbname tablename
Exécutez la commande
sql –uusername dbname < copy.out
Editez le fichier copy.in
Ajoutez la commande
drop tablename
Modifiez le nom de la table dans toutes les commandes
create table tablename
copy table tablename
Exécutez la commande
sql –uusername dbname <copy.in

DMSI/Analyse/lcy/ le 11/10/2009 23241689.doc Page49/77


Ingres Administration des bases de données CA-OpenIngres

V. Sécurité d'accès aux données


Ce chapitre traite de la sécurité des accès aux bases de données. Afin de constater de quelle façon CA-
OpenIngres gère cette sécurité, il est nécessaire de se poser 4 questions :
→ à qui attribue-t-on des droits ?
→ sur quels objets peut on avoir des droits ?
→ quels droits peut on attribuer ?
→ comment attribuer des droits ?

Ce chapitre répondra successivement à ces quatre questions après avoir présenté les principes de base
retenus par CA-OpenIngres.

A. Principes de base

1. Sécurité des bases de données


Par défaut, une base de données est PUBLIQUE. Cela signifie que :
→ tout utilisateur peut s'y connecter
→ un utilisateur peut créer n'importe quel type d'objets (tables, vues, grilles d'écran...)
Une base de données peut être déclarée privée au moment de sa création (voir § D page 26) ou
par modification de son statut initial grâce à l'utilitaire accessdb. Dans ces conditions, seuls les
utilisateurs habilités peuvent s'y connecter. Les utilisateurs habilités sont :
→ les utilisateurs qui disposent du privilège security (ils accèdent à la base de données en
utilisant le flag –u)
→ les utilisateurs à qui l'accès a été accordé :
→ par l'utilitaire accessdb
→ par l'attribution du privilège base de données "access" (voir §2)

2. Sécurité des tables


Par défaut, une table est PRIVEE à sa création. Seul le créateur propriétaire dispose du droit de
manipulation des données de cette table.
Le propriétaire peut accorder des droits d'accès aux autres utilisateurs. Si ces droits sont accordés
avec la clause "with grant option", les utilisateurs déclarés seront également en mesure
d'accorder des droits sur cette table.
 Dans une base de données, un nom de table est préfixé par le nom du créateur.

DMSI/Analyse/lcy/ le 11/10/2009 23241689.doc Page50/77


Ingres Administration des bases de données CA-OpenIngres

B. Des droits pour QUI ?


Les droits ou privilèges sont attribués à des éléments qualifiés "identifiants d'autorisations". Il
s'agit des éléments suivants :
→ public: tous les utilisateurs,
→ user : un utilisateur
→ group : un ensemble d'utilisateurs,
→ role : un comportement applicatif.

La définition de groupes et rôles n'est possible qu'avec le module optionnel "gestionnaire de


connaissances".
Un groupe est utilisé pour appliquer des droits à un ensemble d'utilisateurs qui lui sont associés.
Un rôle est utilisé pour associer des droits et une application. Un rôle dispense l'administrateur
d'attribuer des droits à chaque utilisateur d'une application.

1. Gestion des groupes

1.1. Création des groupes


Condition : avoir le privilège maintain_user
être connecté à la base de données iidbdb.
create group group_id {, group_id}
[with users = (user_id {, user_id})]

Remarque : un groupe peut donc être créé sans utilisateurs. la commande de création des
utilisateurs permet de les associer à un groupe par défaut.

1.2. Maintenance des groupes


Condition : avoir le privilège security
être connecté à la base de données iidbdb.
Verrouillage
Les commandes alter group et drop group verrouillent des pages du catalogue iiusergroup
de iidbdb. Les sessions en attente de connexion doivent attendre la libération des verrous.

Ajout d'utilisateurs à un groupe


alter group group_id {, group_id}
add users (user_id {, user_id})

Suppression d'utilisateurs d'un groupe


alter group group_id {, group_id}
drop users (user_id {, user_id}) | drop all

DMSI/Analyse/lcy/ le 11/10/2009 23241689.doc Page51/77


Ingres Administration des bases de données CA-OpenIngres

Destruction d'un groupe


Le groupe à supprimer doit être vide.
drop group group_id {, group_id}

2. Gestion des rôles

2.1. Création des rôles


Condition : avoir le privilège maintain_user
être connecté à la base de données iidbdb.
Verrouillage
Cette commande verrouille des pages du catalogue iirole de iidbdb. Les sessions en attente
de connexion doivent attendre la libération des verrous.
create role role_id {, role_id}
[with with_option {, with_option}]

with_option =
nopasswd | passwd = 'mot_passe_role' | external_password
| noprivileges | privileges = (priv {, priv})
| nosecurity_audit | security _audit = (opt {, opt})
| nolimiting_security label | limiting_security_label = 'label'
La description de with_option et des privilèges est identique à celle de la création des
utilisateurs. Se référer au tableau page 9.
Lors de la création du rôle, un privilège d'accès à ce rôle est attribué implicitement à
l'utilisateur qui l'a créé.

2.2. Maintenance des rôles


Condition : avoir le privilège maintain_user
être connecté à la base de données iidbdb.

Modification d'un rôle


alter role role_id {, role_id}
[add privileges (priv {, priv}) | drop privileges (priv {, priv})]
[with with_option {, with_option}]

with_option =
nopasswd | passwd = 'mot_passe_role' | external_password
| noprivileges | privileges = (priv {, priv})

DMSI/Analyse/lcy/ le 11/10/2009 23241689.doc Page52/77


Ingres Administration des bases de données CA-OpenIngres

| nosecurity_audit | security _audit = (opt {, opt})


| nolimiting_security label | limiting_security_label = 'label'

La description de with_option et des privilèges est identique à celle de la création des


utilisateurs. Se référer au tableau page 9.
Chaque clause add_privileges, drop_privilgeges et privileges = s'emploie à l'exclusion des 2
autres.
Destruction de rôles
drop role role_id {, role_id}

Si l'un ou plusieurs identifiants de rôle sont inexistants, le système retourne un code d'erreur
pour chacun d'entre eux mais les rôles existants sont effectivement supprimés.
Les sessions qui utilisent un rôle supprimé continuent de disposer des privilèges liés à ce rôle
jusqu'à leur déconnexion.

3. Utilisation des droits liés aux groupes et rôles

3.1. Utilisation des droits liés aux groupes


Lorsqu'un utilisateur appartient à un groupe, il pourra bénéficier des droits liés à ce groupe en
utilisant le flag –G dans sa commande d'accès à la base de données.
Exemple : isql dbname –Ggroup_id
Lorsque ce flag n'est pas utilisé, l'usager bénéficie des droits liés à son nom d'utilisateur ou au
groupe auquel il appartient par défaut (spécifié dans la commande create user).
L'utilisateur peut également obtenir les privilèges associés à un groupe en utilisant la
commande connect.

3.2. Utilisation des droits liés aux rôles


Un utilisateur n'appartient pas à un rôle. Par contre, il peut obtenir les droits liés à ce rôle lors
de son accès à la base de données par la commande :
isql dbname –Rrole_id à condition qu'il ait obtenu le droit d'accéder à ce rôle (voir § 6)
Dans le cas ou un mot de passe a été attribué au rôle, la saisie en sera imposé à l'utilisateur. Le
système contrôle que l'utilisateur a obtenu le privilège d'accès au rôle.
Il est également possible d'associer les privilèges du rôle à ceux de la session en utilisant le
flag –R de la commande connect qui n'existe pas en ISQL mais permet à une application de
se connecter à une base de données de la même façon que depuis le système d'exploitation.

DMSI/Analyse/lcy/ le 11/10/2009 23241689.doc Page53/77


Ingres Administration des bases de données CA-OpenIngres

C. Quels droits, sur quelles entités ?


Les différents droits peuvent être classés en fonction des objets qu'ils affectent :

Les privilèges de type: Commentaire


Base de donnée Contrôlent l'accès aux ressources d'une base de données
Tables Contrôlent les accès aux tables et vues
Procédures Définissent qui peut exécuter des procédures bases de données
individuelles
Evénement base de Définissent qui peut émettre ou s'enregistrer pour recevoir des
donnée événements bases de données
Rôles Contrôlent l'accès aux rôles

1. Principes

1.1. Attribution des droits


L'attribution de droits se fait par la commande SQL grant exécutée depuis une session
connectée à la base de données concernée.
Condition : la session doit disposer du privilège qu'elle attribue.
La syntaxe de la commande grant est adaptée à tous les types de privilèges existants, donc
relativement complexe. Elle est présentée dans ce paragraphe puis, dans un souci de
simplification, les paragraphes qui suivent présenteront la syntaxe de cette commande adaptée
à chaque type de privilège ainsi qu'un exemple d'utilisation.

grant priv {, priv} | all [privileges] | role {, role}


[excluding (columnname {, columnname})]
[on [type_objet] object_name {, object_name}]
to public | [type_id_autorisation] id_autorisation {, id_autorisation }
[with grant option]

Le tableau suivant récapitule les différentes possibilités offertes.


Attribuer des privilèges, tous les privilèges, des rôles
sur tables, vues, procédures, événements base de données (en excluant
certains attributs), base de données
à public, group, role ou user spécifié.

1.2. Suppression des droits


La suppression des droits s'effectue par la commande SQL revoke exécutée depuis une
session connecté à la base de données concernée.

DMSI/Analyse/lcy/ le 11/10/2009 23241689.doc Page54/77


Ingres Administration des bases de données CA-OpenIngres

Condition : avoir accordé soit même ce droit.


La syntaxe générale de revoke est donnée dans ce paragraphe. Les paragraphes qui suivent
présentent une syntaxe adaptée à chaque type de privilège.
revoke [grant option for]
all [privileges] | priv {, priv} | role {, role}
[on [object_type] object_name {, object_name} | current installation]
from public | [type_id_autorisation] id_autorisation {, id_autorisation }
[cascade | restrict]

1.3. Visualisation des droits


Nous avons vus que les droits étaient attribués à des identifiants d'autorisation: utilisateurs,
groupe, rôle ou public (tous). En conséquence, pour qu'un utilisateur puisse constater les
droits dont il dispose, il est indispensable qu'il ait connaissance de son appartenance à un
identifiant d'autorisation. Cette information peut être obtenue par la fonction dbmsinfo.

Fonction dbmsinfo
Il s'agit d'une fonction SQL qui renvoie une chaîne de caractères contenant des informations
sur la session courante. La syntaxe SQL est la suivante :

select dbmsinfo ('nom_requete')

nom_requete correspond à une liste de plus de 50 valeurs, complétée par l'extension du


gestionnaire de connaissances. Les valeurs qui nous intéressent ici sont group, role, username.

select dbmsinfo ('group') liste les groupes auxquels l'utilisateur appartient


select dbmsinfo ('role') liste les rôles auxquels l'utilisateur appartient
select dbmsinfo ('username') nom de l'utilisateur courant

Ayant connaissance de son appartenance à différents groupes ou rôles, l'utilisateur pourra


visualiser les droits qui lui sont accordés.

DMSI/Analyse/lcy/ le 11/10/2009 23241689.doc Page55/77


Ingres Administration des bases de données CA-OpenIngres

2. Privilèges sur les bases de données


Ces privilèges permettent de contrôler la consommation de ressources processeur.
Les privilèges bases de données effectifs pour une session sont déterminés par la valeur des
privilèges accordés aux différents identifiants d'autorisations actifs lors de cette session selon la
hiérarchie ci-dessous

niveau le plus haut


role
user
group
public
niveau le plus bas

Ainsi, si pour le privilège access, des droits différents ont été attribués à public, group, user ou
role actifs pour la session, les droits qui s'appliquent sont ceux de "role".

Privilèges sur les bases de données

Privilège Description
[no]access Droit de connexion à la base de données spécifiée
[no]create_procedure Droit de créer des procédures bases de données pour la base de
données spécifiée
[no]create_table Droit de créer des tables dans la base de données spécifiée
[no]db_admin Attribue des privilèges bases de données sans limite pour la base de
données spécifiée ainsi que la possibilité de se substituer à un autre
utilisateur (par le flag –u). Une session qui a ce privilège ne dispose
pas de tous les droits du DBA; certains utilitaires ne peuvent être
utilisés que par le DBA. Le DBA et les utilisateurs ayant le privilège
SGBD "security" ont par défaut le privilège db_admin. Tous les
autres utilisateurs ont par défaut nodb_admin.
[no]lockmode droit d'utiliser la commande set lockmode
[no]query_io_limit Ce privilège précise le nombre maximal de requêtes d'entrée/sortie
pour une requête simple sur le base de données spécifiée. Ce nombre
doit être un entier positif ou nul. Noquery_io_limit est la valeur par
défaut; elle supprime cette limite.
[no]query_row_limit Nombre entier positif qui spécifie le maximum d'occurrences renvoyé
par une requête simple sur la base de données spécifiée.
Noquery_row_limit est la valeur par défaut; elle supprime cette
limite.
update-syscat Droit de mise à jour sur le catalogue système de la iidbdb.
select_syscat Autorise la session à interroger le catalogue système. Lors d'une
connexion à iidbdb, cela inclue les tables spécifiques au dictionnaire

DMSI/Analyse/lcy/ le 11/10/2009 23241689.doc Page56/77


Ingres Administration des bases de données CA-OpenIngres

Privilège Description
global (voir § 1)
[no]connect_time_lim Limite le temps de connexion d'une session. La valeur par défaut est
it [no]connect_time_limit. Le temps de connexion est contrôlé
périodiquement par le DBMS. Si la limite est atteinte pour une
session, celle-ci est déconnectée et un rollback est effectué sur toutes
les transactions en cours. L'unité utilisée pour ce paramètre est la
seconde. La plage de valeurs possibles va de 1 seconde à 130 ans.
[no]idle_time_limit Limite le temps d'inactivité d'une session. La valeur par défaut est
[no]idle_time_limit. Le temps d'inactivité est contrôlé
périodiquement par le DBMS. Si la limite est atteinte pour une
session, celle-ci est déconnectée et un rollback est effectué sur toutes
les transactions en cours. L'unité utilisée pour ce paramètre est la
seconde. La plage de valeurs possibles va de 1 seconde à 130 ans.
[no]session_priority Autorise une session à changer son degré de priorité jusqu'à la limite
spécifiée.
table_statistics Autorise l'utilisateur à visualiser (par SQL ou statdump) et créer (par
optimizedb) la table des statistiques base de données. Si ces
statistiques existent dans le catalogue de la base de données, le DBMS
les utilise automatiquement lors du traitement des requêtes même si
l'utilisateur ne dispose pas du privilège table_statistics.

2.1. Attribution des droits


La commande grant doit être exécutée depuis une session connectée à iidbdb.
Condition : être DBA de la base de données
ou avoir le privilège security.
Les privilèges bases de données sont évalués lors de la connexion. Leur modification n'affecte
pas les sessions en cours.
grant priv {, priv} | all [privileges]
on database nombase | current installation
to public | [type_id_autorisation] id_autorisation {, id_autorisation }

Exemple : limiter à 100 le nombre d'enregistrement ramenés par une requête sur la base de
données viticole par les personnes du groupe ua197.
grant query_row_limit 100
on database viticole
to group ua197

2.2. Suppression des droits


La suppression des droits s'effectue par la commande SQL revoke exécutée depuis une
session connecté à la base de données iidbdb.
Condition : être DBA de la base concernée ou avoir le privilège security.

DMSI/Analyse/lcy/ le 11/10/2009 23241689.doc Page57/77


Ingres Administration des bases de données CA-OpenIngres

revoke dbpriv on database dnname


from public | [type_id_autorisation] id_autorisation {, id_autorisation }

Remarque : il y a trois états possibles pour un privilège :


Y privilège accordé
N privilège refusé
U privilège indéfini (c’est l’état initial ou après révocation)
La commande grant positionne le privilège à Y ou N selon le cas.
La commande revoke transforme l'état précédent en U.
Exemples :
grant create_table on database viti to user1
Le privilège create_table passe à Y

revoke create_table on database viti from user1


Le privilège create_table passe à U

grant nocreate_table on database viti to user1


Le privilège create_table passe à N

2.3. Visualisation des droits


Une session possède-t-elle des privilèges bases de données ?
select dbmsinfo ('priv')
Les valeurs possibles pour priv sont : group, role, query_io_limit, query_row_limit,
create_table, create_procedure, lockmode, db_admin, update_syscat, security_priv.

Sous iidbdb, la liste des privilèges accordés est obtenue par :


select * from iidbprivilèges
Cette requête peut être complétée par des critères de recherche.

DMSI/Analyse/lcy/ le 11/10/2009 23241689.doc Page58/77


Ingres Administration des bases de données CA-OpenIngres

3. Privilèges sur les tables et vues


Concerne
Privilège Commentaire Tables Colonnes Vues
select droit de consulter les occurrences X X
insert droit d'ajouter des occurrences X X
delete droit de supprimer des occurrences X X
update droit de modifier les occurences existantes X X X
copy_into droit d'exporter des données X
copy_from droit d'importer les données X
references droit de créer des contraintes de référence X X
all récapitule les droits select, insert, update,
delete et references

Tables : par défaut, seul le propriétaire d'une table a des droits sur elle. Il peut accorder des
droits aux identifiants d'autorisations vus au § B.
Vues : les vues pouvant être définies à partir de plusieurs tables, l'attribution de droits sur
une vue ne peut se faire qu'en respectant l'une des contraintes suivantes :
pour accorder l'un des 4 droits sur une vue,
→ Le propriétaire de la vue doit être propriétaire de toutes les tables et vues utilisées dans la
définition de cette vue.
OU
→ Le propriétaire de la vue doit avoir obtenu l'autorisation d'attribuer le droit correspondant
pour toutes les tables et vues utilisées dans la définition de cette vue.
OU
→ L'autorisation d'accorder le droit correspondant doit avoir été donné à l'identifiant
d'autorisation "public" pour toutes les tables et vues utilisées dans la définition de cette vue
Remarque : l'autorisation d'accorder des droits est donnée à un identifiant d'autorisation par
l'option "with grant option" de la commande SQL "grant".

3.1. Attribution des droits


grant priv {, priv} | all [privileges]
[excluding (columnname {, columnname})]
on [table] | object_name {, object_name}
to public | [type_id_autorisation] id_autorisation {, id_autorisation }
[with grant option]

Remarques
Les privilèges references et copy ne s'appliquent qu'aux tables.

DMSI/Analyse/lcy/ le 11/10/2009 23241689.doc Page59/77


Ingres Administration des bases de données CA-OpenIngres

type_id_autorisation: le type d'identifiant d'autorisation (group, role, user ) est facultatif.


La clause with grant option autorise l'identifiant d'autorisation désigné à attribuer lui même
ces privilèges à d'autres l'identifiants d'autorisations.
Les privilèges sur les objets sont évalués lors de l'exécution de l'ordre SQL.

Exemple
grant select, update (nomcru)
on table vins
to ing1, ing2
Commentaire : pour exécuter un update, l'utilisateur doit également avoir le privilège select.
Cas particulier : la syntaxe de grant ne permet pas d'attribuer des droits de lecture sur une
partie des occurrences d'une table. Une solution consiste à créer une vue sur la portion de
table concernée et de définir les droits de lecture sur cette vue.

3.2. Suppression des droits


revoke [grant option for]
all [privileges] | priv {, priv}
[on [table] object_name {, object_name} | current installation]
from public | [type_id_autorisation] id_autorisation {, id_autorisation }
cascade | restrict
cascade ou restrict permettent de traiter les dépendances entre privilèges.

3.3. Visualisation des droits


La vue iipermits du catalogue standard récapitule l’ensemble des droits accordés par la
commande grant. Elle est composée essentiellement des attributs présentés ci-dessous.
Attribut Description Remarque
object_name Nom de l’objet sur lequel le
droit est attribué.
object_owner Propriétaire de l’objet
permit_grantor Identifiant d’autorisation qui
a accordé le droit.
object_type Type d’objet. T pour table, V pour vue, P pour procédure
et E pour événement base de données.
permit_user Identifiant d’autorisation à
qui le droit est accordé.
text_segment Texte de la commande
grant.

DMSI/Analyse/lcy/ le 11/10/2009 23241689.doc Page60/77


Ingres Administration des bases de données CA-OpenIngres

La commande :
select * from iipermits
permet donc de visualiser l’intégralité des droits accordés. Elle peut être complétée par des
clauses de restriction (where …) pour faire des recherches plus ciblées.

La commande :
help permit on table | view * | object_name {, object_name}
exploite le catalogue iipermits afin de ne montrer que les droits accordés à l’utilisateur.

DMSI/Analyse/lcy/ le 11/10/2009 23241689.doc Page61/77


Ingres Administration des bases de données CA-OpenIngres

4. Privilège sur les procédures bases de données

Privilège Description
execute droit d'exécuter la procédure base de données spécifiée.

L'attribution de ce privilège ne peut se faire que sous certaines conditions.

4.1. Attribution des droits


grant execute
on [procedure] nom_procedure {, nom_procedure}
to public | [type_id_autorisation] id_autorisation {, id_autorisation }
[with grant option]

4.2. Suppression des droits

revoke [grant option for]


all [privileges] | priv {, priv}
[on [procedure] object_name {, object_name} | current installation]
from public | [type_id_autorisation] id_autorisation {, id_autorisation }
[cascade | restrict]

cascade ou restrict permettent de traiter les dépendances entre privilèges.

4.3. Visualisation des droits


La description de la vue iipermits figure au paragraphe 3.3.
La commande :
select * from iipermits
permet de visualiser l’intégralité des droits accordés. Elle peut être complétée par des clauses
de restriction (where …) pour faire des recherches plus ciblées.

La commande :
help permit on procedure object_name {, object_name}
exploite le catalogue iipermits afin de ne montrer que les droits accordés à l’utilisateur.

DMSI/Analyse/lcy/ le 11/10/2009 23241689.doc Page62/77


Ingres Administration des bases de données CA-OpenIngres

5. Privilèges sur les événements bases de données


Les événements bases de données (dbevents) permettent à une application ou au SGBD de
notifier à une autre application qu’un événement particulier vient de se produire. De nombreuses
commandes SQL sont associées aux dbevents. Les principales sont présentées ci-dessous.
Un dbevent doit être créé afin de pouvoir le désigner par son nom (create dbevent).
Un dbevent est généré par l’exécution de la commande raise dbevent.
Lorsqu’une application souhaite recevoir des dbevents, elle doit le déclarer par la commande
register dbevent.
L’obtention des dbevents et de leurs informations associées s’effectue par les commandes get
dbevent et inquire_sql.
Exemple d’utilisation : lors de la mise à jour d’une table d’inventaire de stock, une procédure
de contrôle de seuil minimum peut être déclenchée. Si le stock a atteint un niveau inférieur au
seuil minimum, la procédure peut émettre le dbevent seuil_mini_atteint. L’application qui
recevra cet événement et ses paramètres pourra déclencher un ordre d’achat de la pièce
concernée.
Les privilèges qui doivent être accordés aux identifiants d’autorisation sont raise et register.

Privilège Description
raise autorise l’identifiant d’autorisation à émettre l'événement base de données spécifié
donc à exécuter la commande raise dbevent.
register autorise l'identifiant d'autorisation désigné à se déclarer susceptible de recevoir
l'événement base de données spécifié donc à exécuter la commande register
dbevent.

5.1. Attribution des droits


grant nom_privilege {, nom_privilege}
on [dbevent] nom_evenement
to public | [type_id_autorisation] id_autorisation {, id_autorisation }
[with grant option]

Exemple: autoriser le rôle "gestionnaire_stock" à émettre et s'enregistrer pour la réception de


l'événement base de donnée "seuil_mini_stock"
grant register, raise
on dbevent seuil_mini_stock
to role gestionnaire_stock

DMSI/Analyse/lcy/ le 11/10/2009 23241689.doc Page63/77


Ingres Administration des bases de données CA-OpenIngres

5.2. Suppression des droits

revoke [grant option for]


all [privileges] | priv {, priv}
[on [dbevent] object_name {, object_name} | current installation]
from public | [type_id_autorisation] id_autorisation {, id_autorisation }
[cascade | restrict]

cascade ou restrict permettent de traiter les dépendances entre privilèges.

5.3. Visualisation des droits


La description de la vue iipermits figure au paragraphe 3.3.
La commande :
select * from iipermits
permet de visualiser l’intégralité des droits accordés. Elle peut être complétée par des clauses
de restriction (where …) pour faire des recherches plus ciblées.

La commande :
help permit on dbevent object_name {, object_name}
exploite le catalogue iipermits afin de ne montrer que les droits accordés à l’utilisateur.

DMSI/Analyse/lcy/ le 11/10/2009 23241689.doc Page64/77


Ingres Administration des bases de données CA-OpenIngres

6. Privilèges sur les rôles


Un rôle est l'un des quatre identifiants d'autorisation vus au paragraphe B. Mais il s'agit
également d'un privilège qui peut être accordé à "user" ou "public" et qui leur donne ainsi les
privilèges accordés à ce rôle s'ils exécutent la commande :
isql dbname –Rrole_id

6.1. Attribution des droits


grant nom_role {, nom_role}
to nom_user {, nom_user} | public
Exemple : autorisation à l'utilisateur "dupond" d'accéder au rôle "gestionnaire_stock".
grant gestionnaire_stock
to dupond

DMSI/Analyse/lcy/ le 11/10/2009 23241689.doc Page65/77


Ingres Administration des bases de données CA-OpenIngres

D. Récapitulation des privilèges CA-OpenIngres.

Niveau de privilège Type de privilèges Privilèges Commande d’attribution Bénéficiaire Visualisation des droits
createdb
trace
security
user
Accès au SGBD operator create user , profil, role
profil
- utilitaire accessdb
SGBD maintain_locations alter user , profil, role - vue iiusers de la base iidbdb
role
auditor
maintain_audit
maintain_users
Accès aux rôles role user
grant vue iirolegrants de la base iidbdb
public
access
create procedure
create table
db_admin
lockmode
role
Accès à une base de query_io_limit user
Base de données données query_row_limit grant vue iidbprivileges de la base cible
group
update_syscat
public
select_syscat
connect_time_limit
idle_time_limit
session_priority
table_statistics
Exécution des execute Dans la base cible :
procédures grant idem - vue iipermits
Traitements - help permit on procedure
Exploitation des raise Dans la base cible :
événements register grant idem - vue iipermits
- help permit on dbevent
select
insert Dans la base cible :
Accès aux tables et delete - vue iipermits
Données aux vues grant idem
update - help permit on table|view
copy_into copy_from
references

DMSI/Analyse/lcy/ le 11/10/2009 23241689.doc Page66/77


Ingres Administration des bases de données CA-OpenIngres

DMSI/Analyse/lcy/ le 11/10/2009 23241689.doc Page67/77


Ingres Administration des bases de données CA-OpenIngres

VI. Sauvegarde, récupération


Les bases de données ou les tables peuvent être endommagées accidentellement par des défaillances
techniques ou des erreurs humaines. Une panne disque, un défaut d'alimentation, une erreur ou un arrêt
du système d'exploitation sont des causes de destruction totale ou partielle. Il est donc important de
sauvegarder régulièrement une base de données afin de pouvoir restaurer les données si nécessaire.
Ce chapitre présente différentes méthodes de sauvegarde et restauration. Ces méthodes utilisent :
→ les checkpoints et journaux pour sauvegarder une base ou des tables
→ la commande unloaddb pour sauvegarder une base de données
→ la commande copydb pour sauvegarder des tables ou les objets dont vous êtes propriétaire
→ la commande rollforwarddb pour restaurer une base ou les tables choisies à partir des
checkpoints et des journaux.
CA-OpenIngres offre la possibilité de réaliser des restaurations complètes ou partielles afin de
s'adapter aux possibilités de sauvegarde. Le principal objectif des restaurations partielles est de
diminuer le temps de restauration en ne traitant que les données endommagées.

A. Précaution d'usage
L'administrateur doit s'assurer que les données à sauvegarder sont accessibles avant toute opération
de sauvegarde. De cette vérification préalable dépend le succès d'une éventuelle restauration. Pour
cela, l'administrateur dispose de plusieurs possibilités :
→ la commande sysmod pour le catalogue système et la commande modify pour les tables
utilisateur
→ toute commande permettant d'accéder à l'ensemble des enregistrements d'une table (exemple :
select sans clause de restriction)
→ la commande verifydb –mreport –otable nomtable qui permet de contrôler l'intégrité des
tables spécifiées. Si une inconsistance est détectée, le système donne des recommandations pour
la résoudre.
Si des enregistrements d'une table ne sont pas accessibles, vous recevrez un message d'erreur. Dans
ce cas, vous devrez restaurer la table avec une version précédente avant d'envisager une nouvelle
sauvegarde.

B. Sauvegarde statique
Une sauvegarde statique correspond à l'enregistrement de l'état des données au moment de la
sauvegarde. Une éventuelle restauration à partir de cette sauvegarde ne tiendra aucun compte des
évolutions intervenues entre temps. La commande ckpdb (checkpoint) permet d'effectuer une telle
opération. En l'associant au système de journalisation, il est possible d'obtenir des sauvegardes
dynamiques (voir $ C)

1. La commande ckpdb
Cette commande permet de sauvegarder tout ou partie d'une base de données. La commande crée
les fichiers checkpoint et copie dans le fichier dump les enregistrement du fichier log
correspondant aux modifications survenues pendant l'exécution du checkpoint. La procédure de
restauration prend en compte ces fichiers dump pour reconstituer une base de données
sauvegardée en ligne (voir $ 4).

DMSI/Analyse/lcy/ le 11/10/2009 23241689.doc Page68/77


Ingres Administration des bases de données CA-OpenIngres

Les différents paramètres présents dans la syntaxe ci-dessous sont illustrés dans les paragraphes
qui suivent.
ckpdb dbname [-d] [+j | -j] [-l] [-mdevice] [-table=tablename {, tablename}] [-v] [+w | -w] [-
uusername] [-help]
→ -table permet de limiter la sauvegarde aux tables spécifiées
→ -m permet de préciser le support de sauvegarde (la commande utilisée lors de la restauration
devra tenir compte de l'utilisation de ce paramètre)

2. Sauvegarde d'une base de données complète


Depuis le système d'exploitation, exécutez la commande :
ckpdb dbname
A chaque exécution de cette commande, de nouveaux fichiers de "checkpoint" sont créés pour la
base de données concernée.
Cette commande n'affecte pas l'état de la journalisation.

3. Sauvegarde de tables
Depuis le système d'exploitation, exécutez la commande :
ckpdb dbname [-table=tablename {, tablename}]

4. Sauvegarde en ligne / hors ligne


Une sauvegarde est qualifiée "en ligne" lorsque les utilisateurs continuent de travailler avec la
base de données. C'est la situation par défaut lors d'une sauvegarde.
Pour réaliser une sauvegarde hors ligne il faut utiliser le paramètre –l de la façon suivante :
ckpdb –l dbname
Dans ce cas, le paramètre w (wait) permet de demander d'attendre la libération de la base de
données (+w). Si vous spécifiez –w, un message d'erreur est retourné en cas d'occupation de la
base de données.

5. Verrouillage pour la sauvegarde


Par défaut, la procédure ckpdb ne pose pas de verrous exclusifs sur la base de données. Les
utilisateurs autorisés continuent à travailler en ligne, les transactions en cours sont placés dans
les fichiers dump.
Il y a deux cas pour lesquels la commande ckpdb doit poser un verrou exclusif sur la base de
données. Il faut pour cela que l'un des paramètres suivants soit utilisé :
-l pour réaliser une sauvegarde hors ligne
+j ou –j pour valider ou inhiber la journalisation.

6. Suppression de sauvegarde anciennes


Le paramètre –d permet supprimer la précédente version de sauvegarde après en avoir réalisé
une nouvelle.
ckpdb –d dbname

DMSI/Analyse/lcy/ le 11/10/2009 23241689.doc Page69/77


Ingres Administration des bases de données CA-OpenIngres

L'utilisation de ce paramètre permet de supprimer jusqu'à 16 versions antérieures de sauvegarde.


Au delà de ce nombre, utilisez les commandes du système d'exploitation.

C. Sauvegarde dynamique
Par opposition à la sauvegarde statique qui photographie les données à un instant précis, la
sauvegarde dynamique prend en compte l'évolution des données depuis la sauvegarde statique. Cela
n'est possible qu'à condition de conserver dans des journaux les opérations (transactions) effectuées
sur les données depuis la sauvegarde statique.
Les journaux gardent la trace de toutes les modifications faites sur les tables "journalisées" depuis la
dernière commande ckpdb.
Lorsque la base de données est "journalisée", vous devez :
→ faire des sauvegardes régulières pour minimiser le temps de recouvrement,
→ vérifier régulièrement la qualité des données journalisées par un audit de la base.

1. Lancement de la journalisation
La journalisation peut concerner une base de données complète (option recommandée) ou des
tables.
ckpdb +j dbname
set journaling valide la journalisation de toutes les activités liées à la base.
Toutes les tables de la base sont alors crées avec l'option "with journaling" et leur journalisation
est immédiate.
Si vous choisissez de ne journaliser qu'une partie des tables de la base, vous devez vous assurer
que cet partie forme un tout cohérent. Par exemple, toutes les tables intervenant dans la
définition d'une vue doivent être journalisées.

2. Interruption de la journalisation
Pour une table :
set nojournaling on tablename
Pour la base de données complète, l'une de ces commandes peut convenir :
alterdb dbname –disable_journaling
ckpdb -j

D. Utilisation de copydb, unloaddb


La commande copydb vue au $4 peut être utilisée pour enregistrer les tables dont vous êtes
propriétaire.
Rappel : si la commande copydb spécifie une liste de tables, seules celles-ci seront enregistrées;
dans le cas contraire, toutes les tables, vues et procédures dont vous êtes propriétaire sont
concernées.
L'utilisation de copydb est plutôt réservée aux utilisateurs non administrateurs.

DMSI/Analyse/lcy/ le 11/10/2009 23241689.doc Page70/77


Ingres Administration des bases de données CA-OpenIngres

De même, la commande unloaddb vue au $3 peut être considérée comme outil de sauvegarde dans
la mesure ou elle permet de générer un script de copie qui peut être utilisé pour recréer tout ou
partie de la base de données.

E. Restauration des bases de données


Les possibilités de restauration concernent la base de données complète qu'elle soit "journalisée" ou
non ou les tables choisies.
La commande rollforwarddb permet de réaliser ces opérations.

1. La commande rollforwarddb
Cette commande permet de restaurer une base de données si vous disposez d'une sauvegarde
avec ou sans journalisation. L'exécution de cette commande écrase le contenu actuel de la base
de données et le remplace par les informations enregistrées. Pour prévenir tout risque d'erreur, la
base de données est verroulliée, ce qui impose qu'elle ne soit pas en cours d'utilisation.
Si la dernière sauvegarde a été réalisée en ligne, rollforwarddb :
→ restaure la base à partir de la location de sauvegarde vers la location de données,
→ utilise les enregistrements du journal des transaction mémorisés dans la location dump (ces
enregistrements décrivent les transactions qui étaient en cours au moment de la sauvegarde).
La base retrouve ainsi l'état qu'elle avait au début de la sauvegarde.
→ applique, s'il existe, le journal des transactions réalisées depuis la dernière sauvegarde.

La syntaxe partielle de la commande est décrite ci-dessous


rollforwarddb dbname
[+c | -c] [+j | -j] [-mdevice:]
[#c[n]] [+w | -w] [-v] [-uusername] [-help] [-statistics]
[-table = tablename {, tablename}]
Pour exécuter cette commande, il faut être DBA de la base ou disposer du privilège operator.
Le tableau suivant définit les paramètres utilisés.

Paramètre Description
+c | -c Restaurer / ne pas restaurer la base de données à partir de la dernière
sauvegarde. (-c est utilisé probablement pour obtenir la liste des éléments de
la sauvegarde). La valeur par défaut est +c. L'option +c doit être précisée pour
une restauration à partir d'une sauvegarde effectuée avec l'option –m
(précisant le support).
+j | -j Restaurer à l'aide de la journalisation ou non. Par défaut : +j
-mdevice Permet de préciser le périphérique supportant la sauvegarde
#c[n] Permet d'effectuer la restauration à partir d'une ancienne sauvegarde. Le
numéro (n) de sauvegarde doit être valide. La commande infodb permet de
connaître les sauvegardes valides.
+w | -w Permet d'attendre ou non la libération de la base. –w est la valeur par défaut.

DMSI/Analyse/lcy/ le 11/10/2009 23241689.doc Page71/77


Ingres Administration des bases de données CA-OpenIngres

Paramètre Description
-v Permet d'obtenir un compte rendu des opérations exécutées
-statistics Permet d'obtenir des statistiques sur la commande.

DMSI/Analyse/lcy/ le 11/10/2009 23241689.doc Page72/77


Ingres Administration des bases de données CA-OpenIngres

VII. Utilitaires
Un certain nombre d'outils maintenus par CA-OpenIngres permettent de faciliter les tâches
d'administration. Ce chapitre présente les principaux utilisés.

A. Accessdb
Cet utilitaire permet de faciliter:
- la consultation de la liste des bases de données
- la gestion des locations
- la gestion des utilisateurs

L'accès à cet utilitaire est réservé à l'administrateur CA-OpenIngres ou à tout utilisateur ayant l'un
des trois privilèges :
- security
- maintain_locations
- maintain_users
Les fonctions réalisées à l'aide de cet utilitaire peuvent être effectuées à l'aide de commandes SQL.

Fenêtre de présentation de ACCESSDB

1. Option Databases
Cette option permet de visualiser la liste des bases de données. Les actions possibles sont pour la
base de données sélectionnée sont indiquées ci-dessous.

DMSI/Analyse/lcy/ le 11/10/2009 23241689.doc Page73/77


Ingres Administration des bases de données CA-OpenIngres

Utilitaire Accessdb. Option Databases

- Access : permet de constater le mode d'accès par défaut (private ou public) et d'attribuer ou
supprimer le droit d'accès d'un utilisateur
- Extend : donne la liste des locations par défaut et permet de définir des locations
supplémentaires à conditions qu'elles aient été créées auparavant.

2. Option Locations
Cette option permet de gérer les locations (visualisation, création, modification, suppression de
locations inutilisées).

Utilitaire Accessdb. Option Locations

DMSI/Analyse/lcy/ le 11/10/2009 23241689.doc Page74/77


Ingres Administration des bases de données CA-OpenIngres

Une location est un nom logique (location name) qui désigne une structure de répertoires sur
disque contenant les différents types de fichiers d'une base de données. Dans la liste des
locations par défaut présentée ci-dessus, cette structure de répertoires (colonne area) est précisée
par le contenu d'une variable de niveau installation.
Exemple: la location de nom ii_database désigne le répertoire contenant les bases de données :
II_DATABASE/ingres/data/default. La racine de ce répertoire est définie par la variable
II_DATABASE.
Un utilisateur autorisé a la possibilité de créer des locations alternatives (en prévision d'une
modification de location par défaut), d'ajouter ou de changer des locations. Toutefois, ces
possibilités sont restreintes selon le tableau suivant :

Types de fichiers d'une Possibilité Possibilité Possibilité de


base de données d'utilisation de d'utilisation changer de location
locations d'extensions
alternatives multiples
Fichiers de données OUI OUI OUI
(tables et index)
Dictionnaire de données NON NON NON
Fichiers checkpoint OUI NON NON (4)
Fichiers journaux OUI NON NON (4)
Fichiers dump OUI NON NON (4)
Fichiers de travail OUI OUI NON (4)

3. Option Users
Cette option permet de
- définir de nouveaux utilisateurs et leur attribuer des privilèges
- visualiser, modifier les caractéristiques d'un utilisateur
- supprimer un utilisateur
- générer le script SQL de création de tous les utilisateurs.

4
Pour changer la location de ces fichiers, on peut utiliser l'utilitaire relocatedb ou décharger la base (unloaddb) puis la
recréer avec d'autres locations

DMSI/Analyse/lcy/ le 11/10/2009 23241689.doc Page75/77


Ingres Administration des bases de données CA-OpenIngres

B. Infodb
Cet utilitaire permet de consulter des informations sur le statut de la base de données, l’historique
des sauvegardes et journalisation ainsi que sur les localisations. Ces informations sont extraites du
fichier de configuration de la base de données : aaaaaaaa.cnf
L’accès à l’utilitaire infodb est réservé aux utilisateurs ayant le privilège security .
commande >infodb [–uusername] [dbname]
–uusername permet de demander les informations sur toutes les bases de données auxquelles
"username" a accès.
dbname permet de spécifier la base de données concernée. Si ce paramètre n'est pas précisé,
infodb concernera toutes les bases de données.

Les informations obtenues sont regroupées en 6 sections.


- Informations générales,
- informations de journalisation,
- informations relatives au dump,
- informations relatives aux journaux des checkpoints,
- informations relatives aux dump des checkpoints,
- informations relatives aux localisations.

C. Ipm
Ipm (Interactive Performance Monitor) est un utilitaire qui regroupe en un outil unique les
utilitaires lockstat, logstat, iimonitor et iinamu.
Ipm permet de mettre en évidence différents aspects de l’utilisation d’une installation. Il peut être
utilisé pour voir les activités d’un serveur, examiner les systèmes de connexion et de verrouillage et
réaliser des actions sur les serveurs actifs.

1. Surveillance du système de verrouillage


→ Visualisation des tables et pages verrouillées
→ Visualisation des détenteurs de verrous
→ Résolution de problèmes de verrouillage

2. Surveillance du système de connexion


→ Visualisation de statistiques sur les connexions
→ Affichage des processus acceptant les connexions
→ Affichage des bases de données qui exécutent des transactions
→ Affichage des transactions actives
→ Interruption des serveurs ou de sessions.

3. Syntaxe
Ipm options

DMSI/Analyse/lcy/ le 11/10/2009 23241689.doc Page76/77


Ingres Administration des bases de données CA-OpenIngres

Les options possibles sont décrites dans le tableau ci-dessous.


Option Description
-ddbname Les informations visualisées ne concerneront que la base spécifiée
-s Affiche également la liste des objets qui n’ont pas de verrous
-l Affiche tous les types de ressources (page, table, base de données etc…)
-ltyperessource N’affiche que les ressources du type précisé.
-t Permet de spécifier une table particulière
-rseconds Permet de préciser le délai de rafraîchissement des informations

DMSI/Analyse/lcy/ le 11/10/2009 23241689.doc Page77/77

Das könnte Ihnen auch gefallen