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
DMSI/Analyse/lcy/ le 11/10/2009
Administration des bases de données CA-OpenIngres
23241689.doc
Page4/77
Ingres
I.
Administration des bases de données CA-OpenIngres
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
B.
Administration des bases de données CA-OpenIngres
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 Gras Italique [] {} |
Utilisation Indique les mots clefs, les symboles et la ponctuation qui doivent être saisis comme précisé. 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 CAOpenIngres 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
II.
Administration des bases de données CA-OpenIngres
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 à CAOpenIngres.
limiting_security_label Autorise un administrateur à diminuer le label de sécurité maximal avec lequel les utilisateurs peuvent se connecter à CAOpenIngres. 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
DMSI/Analyse/lcy/ le 11/10/2009
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.
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 à CAOpenIngres.
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 à CAOpenIngres. 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 à CAOpenIngres. 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, CAOpenIngres 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 à CAOpenIngres. 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
III.
Administration des bases de données CA-OpenIngres
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 vue dans le catalogue standard
Spécifique à iidbdb
iiattribute
Décrit les caractéristiques de chaque attribut d'une table
iidatabase
X
iidbdepends X
iidevices
Décrit les privilèges bases de données pour chaque base de données. Décrit les locations aditionnelles d'un table.
iievents
iiextend 1
Décrit les caractéristiques propres à chaque base de données d'une installation Décrit les liens entre les vues et les tables dont elles dépendent
iidbpriv
iievent
Description
Informations sur les événements bases de données. X
Définit les extensions aux locations de données
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 vue dans le catalogue standard
Spécifique à iidbdb
Description
d'une base de données. iihistogram
iihistograms
Contient les histogrammes 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
iiprocedure
iiprocedures
iiprofile
iiprofiles
collectés
par
le
Indique la localisation physique et l'utilisation de chaque location. Information sur les procédures bases de données
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
iirole iirule
Décrit chaque table de la base de données. X
iirules
Chaque occurrence décrit un rôle. 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 iiuser
Contient la représentation interne des textes des vues, protections (privilèges) et intégrités. iiusers
iiusergroup iixdbdepends
DMSI/Analyse/lcy/ le 11/10/2009
X
Définit pour une installation, les utilisateurs et leurs privilèges de niveau SGBD.
X
Contient pour chaque groupe, la liste des utilisateurs membres. Table d'index utilisée pour retrouver les enregistrements qui référencent un objet dépendant dans le catalogue iidbdepends.
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)
2
Type
Vue définie à partir de
Description
iialt_columns
Vue
iirelation iiattribute
Contient une entrée pour chaque attribut participant à une clef
iiaudittables
Vue
iirelation iigw06_relation
Fournit la liste des noms de fichiers d'audit pour chaque table.
iicolumns
Vue
iirelation iiattribute iidefault
Contient une entrée pour chaque colonne de tout objet de la base de données.
iiconstraint_indexes
Vue
iiintegrity iirelation iidbdepends
Contient une entrée pour chaque contrainte portant sur un index
iiconstraints
Vue
iiintegrity iirelation iiqrytext
Contient les informations sur toutes les contraintes
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
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 iiqrytext
Contient la description des événements bases de données.
iifile_info
Vue
iirelation iidevices
Cette vue établit la correspondance entre les noms de tables ou index et les noms de fichiers.
iihistograms
Vue
iirelation iiattribute iihistogram
Contient pour chaque colonne, les informations sur l'histogramme créé par optimizedb et utilisées par l'optimiseur.
iiindex_columns
Vue
iirelation iiattribute
Une entrée pour chaque colonne faisant partie d'une clef primaire.
Décrit les principales caractéristiques de DBMS.
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 à partir de
Description
iiindexes
Vue
iirelation iiindex
Chaque table pour laquelle table_type vaut "I" dans iitables a au moins une entrée dans cette vue.
iiintegrities
Vue
iirelation iiqrytext iiintegrity
Contient une ou plusieurs entrées pour chaque intégrité définie sur une table; En 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 iirelation iiattribute iikey
Contient les informations sur les clefs.
iimulti_locations
Vue
iirelation iidevices
Pour les tables localisées sur plusieurs 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 iiprotect
Contient une ou plusieurs entrées pour 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
iiprocedures
Vue
iiqrytext iiprocedure
Contient une ou plusieurs entrée pour chaque 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 iirelation iidbdepends
Contient les informations sur les contraintes de référence.
iiregistrations
Vue
iirelation iiqrytext
Enregistre le texte de chaque commande register.
iirules
Vue
iirelation iirule iiqrytext
Contient un enregistrement pour chaque règle définie dans la base de données.
DMSI/Analyse/lcy/ le 11/10/2009
Contient des informations sur les privileges définis dans une base de données.
23241689.doc
Page23/77
Ingres
Administration des bases de données CA-OpenIngres
Nom ()
Type
Vue définie à partir de
Description
iisecurity_alarms
Vue
iirelation iiqrytext iisecalarm iievent
Contient des informations sur les alarmes de sécurité crées sur les tables.
iistats
Vue
iirelation iiattribute iistatistics
Contient une entrée pour chaque colonne ayant des statistiques.
iisynonyms
Vue
iirelation iisynonym
Contient des informations sur les synonymes 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 iiqrytext
Cette vue contient une ou plusieurs entrées 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
C.
Administration des bases de données CA-OpenIngres
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.
F.
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.
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
IV.
Administration des bases de données CA-OpenIngres
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 unique
Description 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
continue permet à la commande copy de continuer son 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 into) : EXPORT char(0) Stocké comme un string de longueur fixe (complété par des blancs si nécessaire). Pour des données de type caractère, la longueur du string est la même que celle de la colonne char(0)delim Complété à la longueur de la colonne. Le délimiteur est inséré immédiatement après la valeur. Dans ce cas, le délimiteur espace n'est pas admis. char(n) n de 1 Stocké comme un string de à 2000 longueur n. cn Stocké comme un string de longueur n. date Stocké au format date decimal Stocké au format décimal dn Ce format est appelé "dummy column". Au lieu d'insérer une valeur dans le fichier, la commande copy insère le nom de la colonne n 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 précision. float4 Stocké comme float simple précision. integer Stocké comme entier de 4 octets. integer1 Stocké comme entier de 1 octet. money Stocké au format monnaie smallint varchar(0)
Stocké comme entier de 2 octets. Stocké comme string de longueur variable précédé de 5 caractères contenant la longueur. vchar(0) Même effet que le précédent. Ne donne pas la longueur. varchar(n) n Stocké comme string de longueur de 1 à 2000 fixe précédé de 5 caractères contenant la longueur. Si 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
Stockage dans la table (copy from) : IMPORT Lu comme chaîne de caractères de longueur variable terminée par la première virgule, tabulation ou fin de ligne rencontrée. Lu comme chaîne de caractères de longueur variable terminée par le caractère spécifié. Lu comme string de longueur n. Lu comme string de longueur n. Lu comme attribut de type date. Lu comme donnée décimale. Lu comme une chaîne de caractères de la longueur indiquée. La valeur est ignorée. n précise le nombre d'octets à ignorer.
Lu comme float double précision Lu comme float simple précision. Lu comme entier de 4 octets. Lu comme entier de 1 octet. Lu comme attribut de type monnaie. Lu comme entier de 2 octets. Lu comme string de longueur variable précédé de 5 caractères contenant la longueur. Même effet que le précédent. Ne donne pas la longueur. Lu comme string de longueur fixe précédé de 5 caractères contenant la longueur.
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. 1.2.1.
Exemple de chargement : Importation 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. 1.3.1.
Exemple de déchargement : Exportation 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 : → Etape 2 :
exécution de la commande pour créer les scripts 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 unload.ing copy.out reload.ing copy.in
DMSI/Analyse/lcy/ le 11/10/2009
Contenu du fichier Commandes du système d'exploitation invoquant le terminal moniteur afin d'exécuter le script copy.out Commandes copy permettant de copier les catalogues système et les objets des utilisateurs Commandes du système d'exploitation invoquant le terminal moniteur afin d'exécuter le script copy.in Contient les commandes pour détruire, créer et copier les catalogues système et les objets des utilisateurs
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
DMSI/Analyse/lcy/ le 11/10/2009
23241689.doc
Page49/77
Ingres
V.
Administration des bases de données CA-OpenIngres
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 CAOpenIngres 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: Base de donnée Tables Procédures Evénement base de donnée Rôles 1.
Commentaire Contrôlent l'accès aux ressources d'une base de données Contrôlent les accès aux tables et vues Définissent qui peut exécuter des procédures bases de données individuelles Définissent qui peut émettre ou s'enregistrer pour recevoir des événements bases de données Contrôlent l'accès aux rôles
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
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
all
récapitule les droits select, insert, update, delete et references
X
X
X
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.
permit_user
Identifiant d’autorisation à qui le droit est accordé.
text_segment
Texte de grant.
DMSI/Analyse/lcy/ le 11/10/2009
T pour table, V pour vue, P pour procédure et E pour événement base de données.
la
commande
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
D.
Administration des bases de données CA-OpenIngres
Récapitulation des privilèges CA-OpenIngres. Niveau de privilège
SGBD
Type de privilèges
Accès au SGBD
Accès aux rôles
Base de données
createdb trace security operator maintain_locations auditor maintain_audit maintain_users role
access create procedure create table db_admin lockmode Accès à une base de query_io_limit query_row_limit données update_syscat select_syscat connect_time_limit idle_time_limit session_priority table_statistics Exécution des execute procédures
Traitements Exploitation événements
Données
Privilèges
des raise register
select insert Accès aux tables et delete aux vues update copy_into copy_from references
DMSI/Analyse/lcy/ le 11/10/2009
23241689.doc
Commande d’attribution
Bénéficiaire
Visualisation des droits
create user , profil, role alter user , profil, role
user profil role
-
grant
user public
vue iirolegrants de la base iidbdb
grant
role user group public
vue iidbprivileges de la base cible
grant
idem
grant
idem
grant
idem
Page66/77
utilitaire accessdb vue iiusers de la base iidbdb
Dans la base cible : - vue iipermits - help permit on procedure Dans la base cible : - vue iipermits - help permit on dbevent Dans la base cible : - vue iipermits - help permit on table|view
Ingres
DMSI/Analyse/lcy/ le 11/10/2009
Administration des bases de données CA-OpenIngres
23241689.doc
Page67/77
Ingres
VI.
Administration des bases de données CA-OpenIngres
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 base de données Fichiers de données (tables et index) Dictionnaire de données Fichiers checkpoint Fichiers journaux Fichiers dump Fichiers de travail 3.
Possibilité d'utilisation de locations alternatives OUI
Possibilité d'utilisation d'extensions multiples OUI
Possibilité de changer de location
NON OUI OUI OUI OUI
NON NON NON NON OUI
NON NON (4) NON (4) NON (4) NON (4)
OUI
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. → → → → → 3.
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. 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