Admin Bd Ingres

  • June 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Admin Bd Ingres as PDF for free.

More details

  • Words: 18,067
  • Pages: 77
Ingres

Administration des bases de données CA-OpenIngres

Administration des bases de données CA-OpenIngres

Mars 2000

DMSI/Analyse/lcy/ le 11/10/2009

23241689.doc

Page1/77

Ingres

Administration des bases de données CA-OpenIngres

I. Présentation...........................................................................................................................................................................5 A. Les utilisateurs de CA-OpenIngres :................................................................................................................................5 1. L'administrateur système..............................................................................................................................................5 2. L'administrateur CA-OpenIngres.................................................................................................................................5 3. L'administrateur de bases de données...........................................................................................................................5 4. L'utilisateur final...........................................................................................................................................................6 B. Avertissement....................................................................................................................................................................7 C. Conventions......................................................................................................................................................................7 D. Bibliographie:..................................................................................................................................................................7 II. Gestion des utilisateurs et des profils................................................................................................................................8 A. Gestion des utilisateurs.....................................................................................................................................................8 1. Création d'un utilisateur................................................................................................................................................8 2. Modification d'un utilisateur.......................................................................................................................................10 3. Suppression d'un utilisateur........................................................................................................................................12 B. Gestion des profils..........................................................................................................................................................14 1. Création des profils.....................................................................................................................................................14 2. Modification d'un profil..............................................................................................................................................16 3. Suppression d'un profil ..............................................................................................................................................17 III. Gestion des bases de données..........................................................................................................................................19 A. Le dictionnaire des données...........................................................................................................................................19 1. Le dictionnaire global.................................................................................................................................................19 2. Le dictionnaire local...................................................................................................................................................19 B. Les catalogues................................................................................................................................................................20 1. Le catalogue système..................................................................................................................................................20 2. Le catalogue standard.................................................................................................................................................22 3. Le catalogue système étendu......................................................................................................................................24 C. Composition d'une base de données...............................................................................................................................25 D. Création d'une base de données.....................................................................................................................................26 1. Syntaxe.......................................................................................................................................................................26 2. Description..................................................................................................................................................................26 3. Exemple......................................................................................................................................................................27 4. Fonctionnement de createdb.......................................................................................................................................27 E. Suppression d'une base de données................................................................................................................................28 1. Syntaxe.......................................................................................................................................................................28 2. Description..................................................................................................................................................................28 F. Maintenance d'une base de données...............................................................................................................................28 IV. Gestion des données.........................................................................................................................................................29 A. Gestion des tables...........................................................................................................................................................29 1. Création des tables......................................................................................................................................................29 2. Modification des tables...............................................................................................................................................32 3. Suppression des tables................................................................................................................................................33 B. Gestion des vues.............................................................................................................................................................35 1. Création d'une vue......................................................................................................................................................35 2. Suppression d'une vue................................................................................................................................................36 C. Importation, exportation de données..............................................................................................................................37

DMSI/Analyse/lcy/ le 11/10/2009

23241689.doc

Page2/77

Ingres

Administration des bases de données CA-OpenIngres

1. La copie formatée.......................................................................................................................................................37 2. Copie binaire...............................................................................................................................................................43 D. Chargement, déchargement d'une base de données.......................................................................................................44 1. Présentation.................................................................................................................................................................44 2. Utilisation...................................................................................................................................................................44 3. La commande unloaddb..............................................................................................................................................44 4. La commande copydb.................................................................................................................................................46 V. Sécurité d'accès aux données............................................................................................................................................50 A. Principes de base............................................................................................................................................................50 1. Sécurité des bases de données....................................................................................................................................50 2. Sécurité des tables.......................................................................................................................................................50 B. Des droits pour QUI ?....................................................................................................................................................51 1. Gestion des groupes....................................................................................................................................................51 2. Gestion des rôles.........................................................................................................................................................52 3. Utilisation des droits liés aux groupes et rôles...........................................................................................................53 C. Quels droits, sur quelles entités ?...................................................................................................................................54 1. Principes.....................................................................................................................................................................54 2. Privilèges sur les bases de données............................................................................................................................56 3. Privilèges sur les tables et vues..................................................................................................................................59 4. Privilège sur les procédures bases de données...........................................................................................................62 5. Privilèges sur les événements bases de données.........................................................................................................63 6. Privilèges sur les rôles................................................................................................................................................65 D. Récapitulation des privilèges CA-OpenIngres...............................................................................................................66 VI. Sauvegarde, récupération...............................................................................................................................................68 A. Précaution d'usage.........................................................................................................................................................68 B. Sauvegarde statique........................................................................................................................................................68 1. La commande ckpdb...................................................................................................................................................68 2. Sauvegarde d'une base de données complète.............................................................................................................69 3. Sauvegarde de tables...................................................................................................................................................69 4. Sauvegarde en ligne / hors ligne.................................................................................................................................69 5. Verrouillage pour la sauvegarde.................................................................................................................................69 6. Suppression de sauvegarde anciennes........................................................................................................................69 C. Sauvegarde dynamique...................................................................................................................................................70 1. Lancement de la journalisation...................................................................................................................................70 2. Interruption de la journalisation..................................................................................................................................70 D. Utilisation de copydb, unloaddb....................................................................................................................................70 E. Restauration des bases de données.................................................................................................................................71 1. La commande rollforwarddb......................................................................................................................................71 VII. Utilitaires.........................................................................................................................................................................73 A. Accessdb.........................................................................................................................................................................73 1. Option Databases........................................................................................................................................................73 2. Option Locations........................................................................................................................................................74 3. Option Users...............................................................................................................................................................75 B. Infodb..............................................................................................................................................................................76 C. Ipm..................................................................................................................................................................................76 1. Surveillance du système de verrouillage....................................................................................................................76 2. Surveillance du système de connexion.......................................................................................................................76 3. Syntaxe.......................................................................................................................................................................76

DMSI/Analyse/lcy/ le 11/10/2009

23241689.doc

Page3/77

Ingres

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

Related Documents

Admin Bd Ingres
June 2020 0
Bd
November 2019 46
Bd
June 2020 27
Bd
November 2019 39
Bd
May 2020 34