Vous êtes sur la page 1sur 114

Université Abdelmalek Essaâdi

Ecole Nationale des Sciences Appliquées


de Tétouan

Administration des bases de


données
Année Universitaire 2020/2021

Pr. Mesmoudi Yasser


Introduction
Motivation

Stocker des
informations

Proposition
des SGBD

SGBDR
Oracle

3
Plan

Gestion des structures de Audit et


Architecture d’une base de Sauvegarde/Récupération
données stockage
d’une BD

01 02 03 04 05 06

Généralités sur Oracle


Gestion de l’instance Administration de la
sécurité utilisateur
1

Généralités sur ORACLE


La société Oracle

Oracle est une entreprise américaine créée en 1977 par Larry Ellison.
Ses produits phares sont Oracle Database (un système de gestion de base
de données), Oracle Weblogic Server (un serveur d'applications), Oracle E-
Business Suite (un progiciel de gestion intégré) et Oracle Cloud
Infrastructure (une offre de Cloud Computing).
En 2019, Oracle était la deuxième plus grande entreprise de logiciels en
termes de chiffre d'affaires et de capitalisation boursière.

Réf: https://fr.wikipedia.org/wiki/Oracle_(entreprise)
SGBDR Oracle

• Le système de gestion de base de données relationnelle (SGBDR) Oracle fournit


une approche ouverte, complète et intégrée de la gestion des informations.

• Le plus populaire et le plus performant du marché, il est capable de gérer de


manière fiable une grande quantité de données dans un environnement
multiutilisateur, permettant ainsi à de nombreux utilisateurs d'accéder
simultanément aux mêmes données tout en bénéficiant de performances
élevées.

• Il empêche les accès non autorisés et fournit des solutions efficaces pour la
récupération des données après incident.
Quelques vérsions
Depuis 1977 la société Oracle a offert son SGBD sous différentes versions,
chacune apporte des améliorations à la précédente et offre d’autres
nouvelles fonctionnalités. Les versions les plus récentes et les plus utilisées
sont:
• 8i & 9i: le i fait référence à Internet, depuis la version 8i la société
intègre des outils Internet à son SGBD.
• 10 g & 11g: le g fait référence aux Grid Computing qui est une
architecture qui permet un accès flexible et une allocation dynamique
de ressources tel que les processeurs le stockage les base de donnée
et les applications. Dans ces versions oracle exploite cette
architecture pour rendre son SGBD plus robuste et plus performant.
• 12 c, 18c & 19c: le c fait référence au Cloud Computing qui est une
architecture qui rend l’accès aux ressources telle que les processeurs ,
le stockage les bases de données et les applcations; par des services
accessible via internet. Dans cette version, les base de données
peuvent désormais être accessible en tant que service.
Les éditions

Oracle offre ces produits sous différentes éditions:


• Entreprise: comprend toutes les fonctionnalités du produit
• Standard: basique, limitations apportées aux fonctionnalités et sur le
nombre de processeurs (4 maximum)
• Personnalisée: uniquement sur Windows, destinée aux développeurs.
• Express: gratuite, fonctionne sur des machines à 1 processeur
• Autres: Standard Edition one, Lite Edition…
Oracle Vs autres SGBD
relationnels
Oracle est bien plus qu'un moteur de base de données et il offre des fonctionnalités qui permettent de
réels gains de productivité, à condition de connaître leur existence et de savoir s'en servir.
Comme a mentionner Thomas Kyte dans son livre (*), il ne sert à rien de payer une licence Oracle pour
faire du SQL standard. Cela est un réel gâchis car on se prive de multiples fonctionnalités qui font gagner de
l'argent et du temps. Parmi celles-ci, on trouve:

• PL/SQL : un véritable langage de programmation, avec un compilateur optimisant, orienté objet


• Sécurité: L’authentification utilisateur est réalisée dans Oracle en spécifiant des rôles globaux en plus du nom
d’utilisateur et du mot de passe.
• Architecture : Oracle dispose de fonctionnalités de stockage très étendues. Oracle prend en charge les
tablespace, synonym, packages. les tables temporaires sont persistantes d’une session à l’autre. La table
temporaire doit être explicitement supprimée par l’utilisateur
• RMAN: un véritable outil de backup à chaud / à froid livré en standard
• Oracle Enterprise Manager : une interface web d’administration avancée.
• Et plus encore ..

*"Expert Oracle Database Architecture: 9i and 10g Programming Techniques and Solutions" (ISBN-10 : 1590595300, feuilletable en ligne sur Amazon)
Rôles d’un DBA

Les principaux rôles d’un DBA sont:


• Installation, configuration, upgrade et Migration
• Backup and Recovery
• Database security
• Storage and Capacity Planning
• Performance monitoring and Tuning
• Troubelshouting
• High Availability
Formations et certification Oracle

Il existent 3 niveau de formations à l’administration des bases de données


sous Oracle:
• DBA I: L’administration de la base de données
• DBA II: Sauvegarde et restauration avec ASM
• Tuning: Performance et optimisation
2

Architecture d’une base de données


C’est quoi une base de données?

• Une base de données est un ensemble structuré d’éléments


d’information agencés sous forme de table, dans lesquels les données sont
organisées selon certains critères en vue de permettre leur exploitation.
Ces données sont utilisées par des programmes et par des utilisateurs
différents.
• Elle permet de mettre les données à disposition des clients (Utilisateurs
ou programmes) pour une consultation, une saisie ou bien une mise à jour
tout en s’assurant des droits d’accès à ces derniers.
• Une base de données peut être locale c’est-à-dire utilisable sur une
machine par un utilisateur ou bien répartie, c’est-à-dire stocké sur des
machines distantes et accessible via un réseau.
Se connecter à un serveur Oracle

• Un utilisateur de base de données peut se connecter à un serveur Oracle de trois


manières:
1. Locale : L'utilisateur se connecte au système d'exploitation qui exécute l'instance
Oracle et démarre une application ou un outil qui accède à la base de données stockée
sur ce système.
2. Client/serveur: L'utilisateur démarre l'application ou l'outil sur un ordinateur local, et
il se connecte via un réseau à l'ordinateur qui exécute la base Oracle.
3. Multi-tiers: L'utilisateur accède à un serveur d'applications à l'aide d'un outil
(navigateur Web, par exemple) exécuté sur l'ordinateur local (client). Le serveur
d'applications interagit alors avec un serveur de base de données back-end pour le
compte du client
Architecture d’un serveur de base de
données Oracle
Serveur de base de données Oracle
Types d’ Instance d’une base de données
Connexion à une instance de base de données

Lorsqu’un utilisateur est connecté à une machine sur laquelle réside un Serveur
Oracle, deux processus supplémentaire sont invoqués :
• Le processus utilisateur (client): est créé pour chaque programme exécuté par
un utilisateur
• Le processus serveur: est chargé de la communication entre la SGA et le
processus utilisateur.
Une connexion est une voie de communication entre un processus utilisateur et une
instance Oracle Database. Elle est établie à l'aide des mécanismes de communication
interprocessus disponible ( locale et via le réseau)
Une connexion spécifique entre un utilisateur et un serveur Oracle est appelé
une Session. La session démarre lorsque la connexion de l'utilisateur est validée par le
serveur Oracle et se termine lorsqu'il se déconnecte ou lorsqu'une fin de connexion
prématurée se produit.
Structures mémoires d’une base de données
Zone de mémoire partagée

La zone de mémoire partagée (Shared Pool) est une portion de la mémoire


SGA qui contient:
• le cache library
• le cache du dictionnaire de données
• le cache des résultats d'interrogations SQL
• le cache des résultats de fonctions PL/SQL
• Des mémoires tampons pour les messages d'exécution en parallèle
• Des structures de contrôle.
Cache Tampon de base de données

Le cache de tampons (buffer cache) de la base de données est la partie de


la mémoire SGA qui contient les images de blocs lues à partir des fichiers
de données ou construites dynamiquement pour satisfaire au modèle de
cohérence en lecture.
Son accès est partagé par tous les utilisateurs connectés simultanément à
l'instance.
Tampon de journalisation

Le tampon de journalisation (redo log buffer) est une mémoire tampon


réutilisable située dans la mémoire SGA qui contient des informations sur
les modifications effectuées dans la base. Ces informations sont stockées
sous la forme d'entrées de journalisation.
Celles-ci contiennent les informations nécessaires à l'annulation (redo)
des modifications apportées à la base par des opérations LMD (langage
de manipulation de données), LDD (langage de définition de données).
Elles sont utilisées pour la récupération de la base.
Large Pool

L'administrateur de base de données peut configurer une zone de mémoire


facultative appelée LARGE POOL pour allouer des zones de mémoire de grande
taille aux éléments suivants :
• Mémoire de session pour le serveur partagé et l'interface Oracle XA
(lorsque les transactions interagissent avec plusieurs bases de données)
• Processus serveur d'E/S
• Opérations de sauvegarde et de restauration d'Oracle Database
• Opérations Parallel Query
Zone mémoire Java et Streams

La zone de mémoire Java est utilisée pour l'ensemble du code Java et des données
propres à la session dans la JVM (Java Virtual Machine).
Elle est utilisée de différentes manières, en fonction du mode d'exécution d'Oracle
Database.
La zone de mémoire Streams est utilisée par Oracle Streams exclusivement. Elle
contient les messages en file d'attente tampon et fournit la mémoire nécessaire
aux processus Oracle Streams de capture et d'application des modifications.
La mémoire PGA

La mémoire PGA (Program Global Area) est une zone de mémoire contenant des données et des
informations de contrôle pour un processus serveur. Chaque PGA contient un espace de pile. Dans un
environnement avec serveur dédié, chaque utilisateur qui se connecte à l'instance de base de données
comporte un processus serveur distinct. Pour ce type de connexion, la mémoire PGA contient une
subdivision de mémoire connue sous le nom de zone UGA (User Global Area). La mémoire UGA comprend
les éléments suivants :
Une zone de curseurs pour stocker les informations d'exécution sur les curseurs.
Une zone de mémoire de session utilisateur pour des informations concernant une session.
Des zones de travail SQL pour le traitement des instructions SQL :
Une zone de tri pour les fonctions qui classent les données telles que ORDER BY et GROUP
BY.
Une zone de hachage pour exécuter les jointures de hachage entre les tables.
Une zone avec
Dans un environnement de création d'index plusieurs
serveur partagé, bitmap commune aux data
clients partagent warehouses
un même utilisée
processus pour la
serveur.
création
Dans ce modèle, d'indexUGA
la mémoire bitmap.
est transférée dans la mémoire SGA (dans la zone de mémoire partagée
Une
ou dans la zone dezone de fusion
mémoire LARGEd'index
POOL sibitmap
elle estutilisée pour définir
configurée), de sortelesque
plans d'exécution
la mémoire PGAbasés sur un
contient
index bitmap.
uniquement l'espace de pile.
Structure des processus

Instance

Adresse IP
Port
SID
D'autres processus en arrière-plan sont disponibles pour les
configurations plus avancées (RAC, par exemple). Pour plus
d'informations, consultez la vue V$BGPROCES
Processus DBWn(Database Writer)

Les processus Database Writer écrivent le contenu des tampons dans des
fichiers de données.
Ils sont chargés de transférer sur disque le contenu des tampons modifiés
("dirty") du cache de tampons de la base de données.
Un seul processus Database Writer (DBW0) est suffisant pour la plupart
des systèmes, mais vous pouvez en configurer d'autres pour optimiser les
performances d'écriture dans un système qui modifie les données de
manière intensive.
Processus LGWR(Log Writer)

Le processus Log Writer (LGWR) est chargé de gérer la mémoire tampon


de journalisation (redo log buffer) en écrivant ses entrées dans un fichier
de journalisation sur le disque. Il écrit toutes les entrées de journalisation
qui ont été copiées dans le tampon depuis la dernière opération d'écriture
Le tampon de journalisation est réutilisable. Une fois que le processus
LGWR a écrit son contenu dans un fichier de journalisation sur le disque, il
peut recevoir de nouvelles données provenant des processus serveur.
Processus CKPT(Checkpoint)

Un point de reprise(checkpoint) est une structure de données qui définit


un numéro SCN (System Change Number) dans le thread de journalisation
d'une base. Les points de reprise sont enregistrés dans le fichier de
contrôle et dans chaque en-tête de fichier de données. Ils sont essentiels
pour le processus de récupération.
Quand un point de reprise est créé, Oracle Database doit mettre à jour les
en-têtes de tous les fichiers de données pour actualiser les informations
correspondantes. Cette opération est effectuée par le processus CKPT.
Processus SMON(System Monitor)

Si nécessaire, le processus SMON (System Monitor) se charge d'effectuer


la récupération des données au démarrage de l'instance. Il assure
également le nettoyage des segments temporaires qui ne sont plus utilisés.
Si des transactions terminées ont été ignorées pendant la récupération
d'instance à cause d'erreurs liées aux fichiers ou d'erreurs de mise hors
ligne (offline), le processus SMON les récupère quand le tablespace ou le
fichier correspondant est remis en ligne (online).
Processus PMON(Process Monitor)

Le processus PMON assure la récupération des processus utilisateur qui


ont échoué. Il est chargé de nettoyer le cache de tampons de la base de
données et de libérer les ressources bloquées par les processus utilisateur
en échec.
PMON vérifie périodiquement le statut des processus répartiteur et des
processus serveur, et les redémarre s'ils se sont arrêtés
Processus RECO(Recoverer)

RECO (Recoverer) est un processus en arrière-plan qui est utilisé dans une
configuration de base de données distribuée pour résoudre
automatiquement les échecs impliquant des transactions distribuées
Le processus RECO d'une instance se connecte automatiquement aux
autres bases de données impliquées dans une transaction distribuée
équivoque. Quand le processus RECO rétablit la connexion entre les
serveurs de base de données concernés, il résout automatiquement les
transactions équivoques et supprime de chaque table des transactions en
attente les lignes correspondant aux transactions équivoques résolues
Processus ARCn(Archiver)

Les processus d'archivage ARCn copient les fichiers de journalisation


(fichiers redo log) sur le périphérique de stockage désigné après un
changement de fichier de journalisation. Ils interviennent uniquement
lorsque la base de données est en mode ARCHIVELOG et que l'archivage
automatique est activé.
3

Gestion de l’instance
Structure de gestion

Les trois principaux composants de la structure de gestion de base de données


Oracle sont les suivants :

1. Instance de base de données.


2. Processus d'écoute (listener) permettant les connexions à la base de
données.
3. Interface de gestion, qu'il s'agisse d'un agent de gestion qui s'exécute sur
le serveur de base de données ou de l'interface Oracle Enterprise
Manager Database Control autonome. Cette interface est également
appelée Database Console.
Démarrer et Arrêter Database control

Oracle fournit une console de gestion autonome appelée Database Control.


Chaque base de données gérée à l'aide de cette console comprend une
installation Database Control distincte
A partir d'une console Database Control, vous ne pouvez gérer qu'une seule base.
Pour le faire il faut démarrer le processus dbconsole à l’aide de la commande :
emctl start dbconsole

Pour arrêter database control il suffit de lancer la commande :


emctl stop dbconsole
Oracle Entreprise Manager

Enterprise Manager fournit une interface graphique permettant d'effectuer


presque toutes les tâches dont vous êtes chargé en tant qu'administrateur de
base de données (DBA).
Pour accéder à dbconsole, vous devez donc entrer une URL de la forme suivante:
http://nom_machine(adresse_ip):port/em.
Dans notre cas nous utiliserons le lien suivant:
http://oracle.uae.ac.ma:1158/em
Pour se connecter à Database Control il faut utiliser un utilisateur autorisé à
accèder tel que SYSTEM, SYSMAN ou bien SYS
Accueil de OEM
Autres outils oracle

Outre Enterprise Manager, vous pouvez utiliser SQL*Plus et SQL Developer pour
exécuter des instructions SQL. Ces outils vous permettent d'effectuer un grand
nombre d'opérations de gestion de base de données, ainsi que de sélectionner,
d'insérer, de mettre à jour ou de supprimer des données dans la base.
• SQL*Plus est un programme en mode ligne de commande qui permet de:
• Effectuer des opérations de gestion de BD
• Exécuter des instructions SQL et PL/SQL pour interroger une BD

• SQL Developer est une interface graphique qui permet de:


• Gérer l’instance Oracle Database
• Prendre en charge le développement en SQL et PL/SQL
Processus d’écoute (Listner)

Le processus d'écoute Oracle Net (ou simplement le processus d'écoute) est la


passerelle vers l'instance Oracle pour toutes les connexions utilisateur non locales.
Un même processus d'écoute peut gérer plusieurs instances de base de données
et des milliers de connexions client.
Enterprise Manager est l'un des moyens permettant d'accéder à ce processus.
Paramètres d’initialisation

Les paramètres d'initialisation constituent le moyen le plus puissant pour


optimiser les performances du système. Ils sont de deux types: paramètres de
base et paramètres avancés.
Dans la plupart des cas, il suffit de définir et régler les 30 paramètres de base
pour obtenir des performances satisfaisantes de la base de données
Le terme "paramètre de base" désigne un paramètre que vous pouvez avoir à
définir pour assurer les bonnes performances de la base de données. Tous les
autres paramètres sont considérés comme des paramètres avancés.
Fichiers de paramètres d’initialisation

Lorsque une instance est démarrée, un fichier de paramètres d'initialisation est


lu. Il existe deux types de fichier de paramètres :
• Fichier de paramètres serveur (SPFILE):Il s'agit du type de fichier de
paramètres d'initialisation préféré. Ce fichier binaire est accessible en lecture et
en écriture par le serveur de base de données et il ne doit pas être modifié
manuellement. Le nom par défaut de ce fichier (recherché automatiquement
au démarrage) est spfile<SID>.ora
• Fichier de paramètres d'initialisation au format texte:Ce type de fichier de
paramètres d'initialisation peut être lu par le serveur de base de données, mais
il n'est pas accessible en écriture par le serveur. Le nom par défaut de ce fichier
(recherché automatiquement au démarrage si aucun fichier SPFILE n'est
trouvé) est init<SID>.ora.
Exemples

Quelques exemples de paramètres d’initialisation:

Paramètre Signification
CONTROL_FILES Un ou plusieurs noms de fichier de contrôle
DB_FILES Nombre maximal de fichiers de BD
PROCESSES Nombre maximal de processus utilisateur du système
d’exploitation pouvant se connecter simultanément
DB_BLOCK_SIZE Taille (en octets) d'un bloc de base de données Oracle.
DB_CACHE_SIZE Taille du cache de tampons
PGA_AGGREGATE_TARGET Quantité de mémoire PGA allouée à tous les processus
serveur
SHARED_POOL_SIZE Taille de la zone de mémoire partagée (en octet)
UNDO_MANAGEMENT Mode de gestion du volume d'annulation à utiliser
Exemples

PGA_ AGGREGATE _TARGET

DB_CACHE
LOG_BUFFER
SHARED_POOL_SIZE _SIZE
Ta

LARGE_POOL_SIZE JAVA_POOL STREAMS_


_SIZ POOL_SIZ

SGA_TARGET Taille totale de tous les composants SGA


MEMORY_TARGET Mémoire totale utilisable à l’échelle du système
Types de valeurs des paramètres d’initialisation

Types de valeur des paramètres d'initialisation


Le serveur de base de données Oracle reconnaît les types de valeur suivants pour
les paramètres d'initialisation:
• Boolean ; String; Integer; Parameter file; Reserved; Big Integer
Valeurs des paramètres dérivés
Certains paramètres d'initialisation sont dérivés, c'est-à-dire que leurs valeurs sont
calculées à partir des valeurs d'autres paramètres. Normalement, vous ne devez pas
modifier les valeurs des paramètres dérivés. (Si vous le faites, la valeur que vous
indiquez remplace la valeur calculée)
Valeurs des paramètres dépendants du système d'exploitation
Les valeurs ou fourchettes de valeurs valides de certains paramètres
d'initialisation dépendent du système d'exploitation hôte.
Par exemple:
le paramètre DB_FILE_MULTIBLOCK_READ_COUNT définit le nombre maximal de
blocs lus en une seule opération d'E/S pendant une analyse séquentielle.
Sa valeur dépend de la plate-forme utilisée. La taille de ces blocs (définie par le
DB_BLOCK_SIZE) a une valeur par défaut qui dépend du système d'exploitation.
Utiliser SQl*Plus pour afficher des paramètres d’initialisation

Pour avoir les informations sur les différentes paramètres, il suffit d’interroger
la vue du dictionnaire de données V$PARAMETER:

On peut également afficher les détails des paramètres à l’aide de la commande


SHOW PARAMETER [paramètre], comme on peut afficher tous les paramètre qui
contient une chaîne de caractère:
Modifier les valeurs des paramètres d’initialisation

Les paramètres d'initialisation sont de deux types:


Les paramètres statiques:
• Affectent l'instance ou la base de données entière
• Ils ne peuvent être modifié que dans le fichier de paramètres init.ora ou le
fichier SPFILE
• Un redémarrage de l’instance est nécessaire pour que les modifications
prennent effet.
• On ne peut pas les modifier pour l’instance en cours.
Les paramètres dynamiques:
• Ils peuvent être modifié pendant que la base de données est en ligne.
• Les modifications peuvent être effectuées sur deux niveaux:
• Session: affectent uniquement une session utilisateur et expirent à la
fin de celle-ci.
• Système: affectent l'ensemble de la base de données et toutes les
sessions.
Exemple de modification de valeurs

1. Un exemple de modification d’un paramètre de niveau session (date ):

Toutes les interrogations portant sur des dates afficheront donc les dates dans ce
format

2. On peut modifier le nombre maximal de tentatives de connexion infructueuses au


bout duquel la connexion est abandonnée. on indique explicitement que la
modification ne doit être effectuée que dans le fichier de paramètres serveur.

Lorsque le nombre d'échecs de connexion précisé est atteint, la connexion est


automatiquement abandonnée par le processus serveur. Comme il ne s'agit pas d'un
paramètre dynamique, sa modification ne prend effet qu'après le redémarrage de
l'instance de base de données Oracle.
Questions

1- Entreprise Manager Database Control peut être utilisé pour gérer plusieurs
bases de données simultanément:
• Vrai
• Faux

2- Les paramètres d’initialisation sont majoritairement dynamiques et vous


pouvez les modifier sans arrêter l’instance:
• Vrai
• Faux
Les étapes de démarrage d’une BD Oracle

Une base de données évolue entre quatre états:

• SHUTDOWN: Base fermée, aucun processus n'est présent et aucune zone


mémoire n'est réservée. le SGBD n'est pas actif sur le système.
• NOMOUNT: Instance démarrée, cet état est spécifique à la création. Les
fichiers de contrôle ne sont pas ouverts, mais des processus sont présents et la
mémoire partagée (SGA) est réservée.
• MOUNT: Instance démarrée et les fichiers de contrôle sont ouverts, ici
l'instance peut être considérée comme en utilisation pour l'administrateur seul,
aucun autre utilisateur ne peut se connecter, mais toutes les opérations sont
déjà possibles.
• OPEN: L’instance est accessible à l'utilisateur. Nous trouvons ici le mode de
fonctionnement « normal » d'une base de données.
Démarrage d’une BD en mode NOMOUNT

En règle générale, une instance est démarrée uniquement en mode NOMOUNT


au cours de la création de la base de données, pendant la regénération des
fichiers de contrôle ou dans certains scénarios de sauvegarde et de récupération.

Le démarrage d'une instance inclut les opérations suivantes:


• Recherche dans $ORACLE_HOME/dbs d'un fichier portant un nom particulier,
dans l'ordre suivant:
1.Recherchez spfile<SID>.ora.
2.Si spfile<SID>.ora est introuvable, recherchez spfile.ora.
3.Si spfile.ora est introuvable, recherchez init<SID>.ora. Il s'agit du fichier
qui contient les paramètres d'initialisation de l'instance.
• Allocation de la mémoire SGA
• Démarrage des processus en arrière-plan
• Ouverture du fichier alert_<SID>.log et des fichiers trace
Démarrage d’une BD en mode MOUNT

Une fois l'instance démarrée, on peut procéder au montage de la base qui permet
à Oracle de trouver et lire les fichiers de contrôle afin de connaitre la localisation
des fichiers de données et des fichiers de journalisation.

Le montage d'une base de données inclut les opérations suivantes:


• Associer une base de données à une instance démarrée précédemment;
• Localiser et ouvrir tous les fichiers de contrôle indiqués dans le fichier de
paramètres;
• Lire les fichiers de contrôle pour obtenir les noms et les statuts des fichiers de
données et des fichiers de journalisation en ligne (mais l'existence de ces
fichiers n'est pas vérifiée à ce stade).
Le mode MOUNT est utile pour les opérations de maintenance particulières:
• Renommer des fichiers de données;
• Activer et désactiver les options d'archivage des fichiers
de journalisation en ligne;
• Procéder à une récupération complète
de la base de données.
Démarrage d’une BD en mode OPEN

Lorsqu'une base de données est en mode de fonctionnement normal, une


instance est démarrée, et la base est montée et ouverte.
N'importe quel utilisateur valide peut se connecter à celle-ci et effectuer des
opérations standard d'accès aux données.

L'ouverture de la base de données inclut les opérations suivantes:


• Ouverture des fichiers de données;
• Ouverture des fichiers de journalisation en ligne (online redo logs).
Les modes d’arrêt d’une BD Oracle

Ils existent quatre modes d’arrêt d’une base de données Oracle:

• ABORT: effectue des tâches minimales avant l'arrêt. Il requiert une opération
de récupération avant le démarrage. Il est utilisé qu'en cas d'urgence, et si
aucun autre mode d'arrêt ne fonctionne.
• IMMEDIATE: est l'option la plus fréquemment utilisée. la base de données
Oracle est fermée proprement et assez rapidement selon les transactions en
cours dans la base.
• TRANSACTIONAL: est un mode d'arrêt utilisé pour éviter des pertes de
données sur des transactions en cours. Il attend la fin de toutes les transactions
en cours en interdisant toute nouvelle transaction. Ce mode d'arrêt peut être
long.
• NORMAL: est le mode d'arrêt par défaut si aucun mode n'est précisé. C'est le
plus long car Oracle attend que l’ensemble des utilisateurs soit déconnecté
pour fermer la base de données.
SHUTDOWN NORMAL

Shutdown Normal est le mode d'arrêt par défaut si aucun mode n'est précisé.
C'est le plus long car Oracle attend que l’ensemble des utilisateurs soit
déconnecté pour fermer la base de données. Ce mode a lieu dans les conditions
suivantes:

• Attente de déconnexion des utilisateurs,


• Aucune nouvelle connexion ne peut être établie,
• Les Redo Log Buffers sont écrits sur disques,
• Processus d'arrière-plans sont arrêtés,
• La mémoire SGA libérée,
• La base de données est fermée,
• La base de données est démontée,
• L'instance est arrêtée,
• Le démarrage suivant ne nécessite pas de récupération d'instance.
SHUTDOWN TRANSACTIONAL

Un arrêt en mode TRANSACTIONAL évite aux clients de perdre des données,


notamment les résultats des activités en cours. Ce mode d’arrêt de la base de
données s'accompagne des conditions suivantes:

• Les nouvelles transactions sont interdites,


• Les utilisateurs sont déconnectés à la fin de la transaction,
• La base de données est fermée,
• La base de données est démontée,
• L'instance est arrêtée,
• Le démarrage suivant ne nécessite pas de récupération d'instance.
SHUTDOWN IMMEDIATE

Un arrêt en mode IMMEDIATE est le mode d'arrêt le plus utilisé, notamment dans
les scripts, la base de données Oracle est fermée proprement et assez rapidement
selon les transactions en cours dans la base. Ce mode d’arrêt de la base de
données s'accompagne des conditions suivantes:

• Les transactions non validées actives sont annulées (ROLLBACK),


• Les utilisateurs sont déconnectés,
• La base de données est fermée,
• La base de données est démontée,
• L'instance est arrêtée,
• Le démarrage suivant ne nécessite pas de récupération d'instance.
SHUTDOWN ABORT

Le mode d'arrêt Abort est utilisé qu'en cas d'urgence, et si aucun autre mode
d'arrêt ne fonctionne. Ce mode d’arrêt de la base de données s'accompagne des
conditions suivantes :

• les transactions sont interrompues,


• L'instance est arrêtée sans fermeture des fichiers,
• Les Redo log buffers ne sont pas écrits sur le disque,
• Les utilisateurs sont déconnectés,
• La base de données n'est ni fermée, ni démontée,
• Le démarrage suivant nécessite au préalable la récupération de l'instance.
5

Administration de la sécurité utilisateur


Terminologie

Les termes suivants nous aiderons à mieux comprendre l’administration des utilisateurs de
base de données:

• Un compte utilisateur: constitue un moyen d'organiser l'appartenance des objets


de base de données et l'accès à ces objets.
• Un mot de passe: est un mode d'authentification par la base de données Oracle.
• Un privilège: est le droit d'exécuter un type particulier d'instruction SQL ou
d'accéder à l'objet d'un autre utilisateur.
• Un rôle: est un groupe nommé de privilèges liés qui sont accordés à des utilisateurs
ou à d'autres rôles.
• Un profil :impose un ensemble nommé de limites concernant l'utilisation de la base
de données et les ressources des instances. Il permet de gérer le statut des comptes et
les règles relatives aux mots de passe.
• Un quota: est une allocation d'espace dans un tablespace donné. Il constitue l'un
des moyens permettant de contrôler l'utilisation des ressources par les utilisateurs
Comptes utilisateur de base de données

Pour pouvoir accéder aux données, on doit se connecter via un compte utilisateur qui aura certains
privilèges et une certaine visibilité de la base de données. A chaque utilisateur de la base est associé un
compte unique.
Chaque compte utilisateur comporte les éléments importants suivants :
• Un nom utilisateur unique: Les noms utilisateur ne peuvent pas dépasser 30 caractères, ne
doivent pas contenir de caractères spéciaux et doivent commencer par une lettre.
• Une méthode d'authentification : La méthode la plus courante est l'authentification par mot de
passe, mais Oracle Database 11g prend en charge des méthodes d'authentification globales et
externes (notamment par biométrie, par certificat et par système tiers).
• Un tablespace par défaut : Il s'agit de l'emplacement dans lequel l'utilisateur crée des objets s'il
n'indique pas un autre tablespace. Notez que le fait qu'un utilisateur dispose d'un tablespace par
défaut n'implique pas qu'il bénéficie du privilège permettant de créer des objets dans ce
tablespace, ni qu'il dispose d'un quota d'espace dans ce tablespace. En effet, les privilèges et les
quotas sont accordés séparément.
• Un tablespace temporaire : Il s'agit de l'emplacement dans lequel l'instance crée les objets
temporaires (tris ou tables) pour le compte de l'utilisateur. Aucun quota n'est appliqué aux
tablespaces temporaires.
• Un profil utilisateur: sera détailler par la suite dans ce cours.
• Un statut de compte: fait référence aux statut du compte de l’utilisateur est-ce-qu’il est
verrouillé ou non, expiré ou non etc.
Schéma de base de données

• La base de données ORACLE comporte des schémas dans lesquels on retrouve


des objets tel que:
• Tables,
• Vues,
• Index,
• Procédures, ...

• Un SCHEMA permet de segmenter la base et de mieux gérer les privilèges.

• A chaque création d’un utilisateur correspond la création d’un schéma de


même nom:

Un compte utilisateur = Un schéma de BDD


Comptes d’administration prédéfinis

Il existe 2 utilisateurs par défaut sur toute base Oracle :


• l'utilisateur SYS: propriétaire des tables et des vues du dictionnaire de données.
• l'utilisateur SYSTEM : qui a simplement le droit de consultation de ces objets.

Ces 2 utilisateurs ont par défaut le rôle DBA, ce qui veut dire qu'ils ont accès à tous les objets
de tous les autres utilisateurs de la base, et qu'ils ont le droit d'exécuter certaines
commandes d'exploitation et d'administration.

Tout utilisateur qui dispose du privilège SYSDBA peut se connecter au compte SYS à l'aide de
la clause AS SYSDBA. Seuls les utilisateurs bénéficiant du privilège SYSDBA, SYSOPER ou
SYSASM sont autorisés à démarrer et arrêter les instances

Un DBA peut créer des utilisateurs en utilisant la requête CREATE USER.


Lorsqu’un utilisateur est créé, il ne possède aucun privilège. Le DBA doit lui donner des
privilèges souhaités .
Création d’un utilisateur

Avant de créer un utilisateur, il faut tenir en compte plusieurs paramètres:

• Le nom de l’utilisateur
• Le mécanisme d’authentification
• Tablespace: Identifiez les tablespaces dans lesquels l’utilisateur stockera
ses objets
• Quotas: décider des quotas pour chaque tablespace

Après avoir décidé les paramètres cités précédemment, l’administrateur peut


ainsi créer l’utilisateur et lui affecter des privilèges et des rôles ultérieurement.

La création peut se faire via:


• une commande SQL qui peut être exécuter via n’importe quel outils.
• L’assistant de création d’utilisateur d’Oracle Entrprise Manager.
Création via SQL

La requête suivante peut être exécutée dans n’importe quel outils tels que SQL*PLUS,
SQLDevelopper ou en ligne de commande :
CREATE USER YASSER IDENTIFIED BY
MESMOUDI2020
DEFAULT TABLESPACE data01
TEMPORARY TABLESPACE temp
QUOTA 15M on data01
PASSWORD EXPIRE
ACCOUNT UNLOK;
• IDENTIFIED:Cette clause indique la manière dont l'utilisateur sera identifié ( par l'OS ou par Oracle).
• DEFAULT TABLESPACE: Indique le Tablespace dans lequel les objets de l'utilisateur seront crées.
• TEMPORARY TABLESPACE: Indique le Tablespace dans lequel les tris par exemple seront effectués pour
cet utilisateur.
• QUOTA: Limite d'espace attribué à l'utilisateur sur un Tablespace.
• PASSWORD EXPIRE: Permet de forcer un changement de mot de passe à la première connexion de
l'utilisateur.
• ACCOUNT LOCK / UNLOCK: Permet de verrouiller ou déverrouiller le compte utilisateur.
Création via OEM

Une fois connecté sur OEM, rendez-vous sur l’onglet serveur. Cliquez sur le lien
Utilisateurs puis sur le bouton créer. L’interface de création d’utilisateur ci-dessous
s’affiche et assiste l’administrateur en lui demandant d’introduire les différentes
informations correspondantes:

N.B: vous pouvez effectuer l’affectation des rôles et des privilèges ainsi que
l’application des quotas aux tablespaces durant la création de l’utilisateur en
interrogeant les onglets correspondants.
Authentification des utilisateurs

Lors de la création de l’utilisateur, l’administrateur doit décider de la technique


d'authentification à utiliser, laquelle pourra être modifiée ultérieurement :

Mot de passe: L'authentification par mot de passe est aussi appelée


authentification par la base de données Oracle. Chaque utilisateur créé reçoit un
mot de passe qu'il devra saisir lors de chaque connexion.
Externe: Cette option utilise une méthode d’authentification extérieure à la BD
Oracle. Avec ce mode, la base utilise le système d’exploitation. On ajoute l’option
EXTERNALLY après le mot de passe. Ce mode nécessitera la configuration de
quelques paramètres Oracle avant de pouvoir fonctionner correctement.
Global: Avec l’option Oracle Advanced Security, ce mode d’authentification
permet d’identifier les utilisateur via Oracle Internet Directory.
Modification d’un compte utilisateur

La clause ALTER USER permet de modifier les différents paramètres du compte


d’un utilisateur comme:

• Forcer le changement du mot de passe:


• ALTER USER YASSER PASSWORD EXPIRE;
• Suppression du QUOTA
• ALTER USER YASSER QUOTA 0 ON data;
• les données existantes restent , mais plus possible d'en insérer
d'autres.
• Interdiction temporaire de connexion:
• ALTER USER YASSER ACCOUNT LOCK ;
• Appliquer un QUOTA illimité:
• ALTER USER YASSER QUOTA UNLIMITED ON data01;

Comme la création , la modification peut être faite à via Oracle Entreprise


Manage.
Suppression d’un compte utilisateur

La clause DROP USER permet de supprimer un utilisateur:

DROP USER YASSER

• L’option CASCADE permet de supprimer tous les objets du schéma puis


supprime l’utilisateur, exemple:

• DROP USER YASSER CASCADE;

Rq: impossible de supprimer un utilisateur connecté


Informations sur les utilisateurs

Pour pouvoir consulter les informations sur les utilisateurs, il suffit d’interroger
les vues: DBA_USERS et DBA_TS_QUOTAS

• Exemple:

Select username, default_tablespace, temporary_tablespace


from dba_users
where username = ‘YASSER';

select * from dba_ts_quotas


where username= ‘YASSER';

Ces informations sont aussi consultables via Oracle Entreprise Manage.


Rôles & privilèges
Ces concepts sont mis en oeuvre pour protéger les données en accordant (ou retirant) des
privilèges à un utilisateur ou à un groupe d'utilisateurs
Un rôle est un regroupement de privilèges. Une fois créé il peut être assigné à un utilisateur ou
à un autre rôle
On nomme privilège le droit d'exécuter un type particulier d'instruction SQL ou d'accéder à
l'objet d'un autre utilisateur. La base de données Oracle permet de contrôler les opérations que
les utilisateurs peuvent effectuer ou non au sein de la base. Ils sont répartis en deux catégorie:
• Privilèges système: Chaque privilège système autorise un utilisateur à effectuer une
certaine opération de base de données ou une certaine classe d'opérations. Par exemple,
le privilège permettant de créer des tablespaces est un privilège système. Les privilèges
système peuvent être accordés par l'administrateur ou par quelqu'un à qui la permission
d'administrer ces privilèges a été accordée explicitement.
• Privilèges objet: Les privilèges objet permettent à un utilisateur d'effectuer une
action particulière sur un objet spécifique, tel qu'une table, une vue, une séquence, une
procédure, une fonction ou un package. Sans permission spécifique, les utilisateurs ne
peuvent accéder qu'à leurs propres objets. Les privilèges objet peuvent être octroyés par
le propriétaire d'un objet, par l'administrateur, ou par un utilisateur auquel la permission
d'accorder des privilèges sur l'objet a été attribuée explicitement
Accorder des privilèges système

Lorsqu'un utilisateur est créé avec l'instruction CREATE USER, il ne dispose encore d'aucun droit
car aucun privilège ne lui a encore été assigné. Il ne peut même pas se connecter à la base.
Il faut donc lui assigner les privilèges nécessaires.
Pour lui assigner ces privilèges de niveau système il faut utiliser l'instruction GRANT dont voici la
syntaxe:

systeme_privilege représente un privilège système


role représente un rôle préalablement créé
ALL PRIVILEGES représente tous les privilèges système (à l'exception de SELECT ANY DICTIONARY)
user représente le nom de l'utilisateur qui doit bénéficier du privilège
PUBLIC assigne le privilège à tous les utilisateurs
WITH ADMIN OPTION assigne à l'utilisateur le droit d'assigner, de retirer, de modifier et de
supprimer à son tour les privilèges du rôle reçus
Exemples

1. Pour que l'utilisateur puisse simplement se connecter à la base, il doit bénéficier du


privilège système CREATE SESSION:
GRANT CREATE SESSION TO YASSER
2. Ensuite il faut lui assigner des droits de création de table via le privilège CREATE TABLE
GRANT CREATE TABLE TO YASSER
Et il en va de même pour tous les autres privilèges qui lui sont assignés. On peut assigner
plusieurs privilèges au sein d’une même commande:
GRANT
CREATE SESSION,
CREATE TABLE,
CREATE VIEW
TO YASSER;
Accorder des privilèges Objet
Pour lui assigner ces privilèges de niveau objeti, l faut utiliser l'instruction GRANT dont voici la
syntaxe:

object_privilege représente un privilège objet


role représente un rôle préalablement créé
ALL PRIVILEGES représente tous les privilèges
assignés à l'exécuteur de l'instruction
column représente le nom de colonne d'une table
schema représente le nom d'un schéma
object représente le nom d'un objet du schéma
directory_name représente le nom d'une directory
JAVA SOURCE représente le nom d'une source Java
JAVA RESOURCE représente le nom d'une ressource Java
WITH GRANT OPTION assigne à l'utilisateur le droit d'assigner à son tour le privilège reçu à un
autre utilisateur
(WITH GRANT OPTION s'applique à un utilisateur ou à PUBLIC, mais pas à un rôle)
WITH HIERARCHY OPTION assigne le privilèges aux sous-objets
Exemples

1. Pour assigner à l'utilisateur MOHAMED le droit de sélectionner, insérer, modifier et


supprimer des lignes dans la table EMPLOYEE de l'utilisateur YASSER:
GRANT
SELECT ,
INSERT ,
UPDATE ,
DELETE
ON YASSER.EMPLOYEE
TO MOHAMED;
2. Une liste de colonnes peut être indiquée dans l'instruction afin de restreindre davantage
les droits sur une table

GRANT
UPDATE (JOB, DATE_ENTREE),
ON YASSER.EMPLOYEE
TO MOHAMED;
L'utilisateur MOHAMED peut modifier la table EMPLOYEE mais uniquement
les colonnes JOB et DATE_ENTREE.
Révoquer des privilèges système
Les privilèges système qui ont été assignés à des utilisateurs ou à des rôles peuvent être retirés
avec l'instruction REVOKE:

Les arguments sont identiques à ceux décrits pour l'instruction GRANT

Les utilisateurs disposant de l'option ADMIN OPTION pour un privilège système peuvent révoquer
ce privilège pour tout autre utilisateur de la base de données.
L'utilisateur disposant du rôle DBA peut révoquer les privilèges CONNECT, RESOURCE, DBA ou tout
autre privilège système ou rôle.

N.B: Retirer des privilèges à un utilisateur ne supprime pas son schéma ni les objets qu'il
contient
Exemples
Cette image illustre le scénario suivant:

1. Le DBA octroie le privilège système CREATE TABLE à Joe avec l'option ADMIN OPTION
2. Joe crée une table.
3. Joe accorde le privilège système CREATE TABLE à Emily.
4. Emily crée une table.
5. Le DBA révoque le privilège système CREATE TABLE pour Joe.

Résultat: La table créée par Joe existe toujours, mais Joe ne peut plus en créer d'autres. La table
d'Emily existe toujours et Emily conserve le privilège système CREATE TABLE.
Révoquer des privilèges objet
Les privilèges objet qui ont été assignés à des utilisateurs ou à des rôles peuvent être retirés
avec l'instruction REVOKE :

Les arguments sont identiques à ceux décrits


pour l'instruction GRANT à part:

CASCADE CONSTRAINTS (applicable uniquement


pour révoquer des privilèges REFERENCES)
supprime toutes les contraintes d'intégrité référentielles
définies par l'utilisateur
FORCE retire le privilège EXECUTE sur les types objet

Pour pouvoir supprimer un privilège, il faut en avoir reçu l'autorisation avec l'option ADMIN
OPTION.
L'utilisateur disposant du rôle DBA ne peut pas retirer de privilèges qu'il n'a pas accordé
Exemples
Cette image illustre le scénario suivant:

1. Joe reçoit le privilège objet SELECT sur la table EMPLOYEES, avec l'option GRANT OPTION.
2. Joe accorde à Emily le privilège SELECT sur la table EMPLOYEES.
3. Le privilège SELECT de Joe est révoqué.

Résultat: Cette révocation est répercutée sur Emily.


Informations sur les privilèges

Pour pouvoir consulter les informations sur les privilèges système, il suffit
d’interroger des vues comme : DBA_SYS_PRIVS et SESSION_PRIVS

Pour pouvoir consulter les informations sur les privilèges objet, il suffit
d’interroger des vues comme : DBA_TAB_PRIVS, USER_TAB_PRIVS et
DBA_COL_PRIVS

• Exemple:
Select * from DBA_SYS_PRIVS;
Select * from SESSION_PRIVS;
Select * from DBA_TAB_PRIVS;
Select * from USER_TAB_PRIVS;
select owner, table_name, column_name from DBA_COL_PRIVS;

Ces informations sont aussi consultables via Oracle Entreprise Manage.


Principes généraux appliqués aux privilèges
• Un utilisateur possède automatiquement tous les privilèges sur un objet qui lui
appartient,
• Un utilisateur ne peut pas donner plus de privilèges qu'il n'en a reçu,
• s'il n'a pas reçu le privilège avec l'option WITH GRANT OPTION, un utilisateur ne
peux pas assigner à son tour ce même privilège,
• Un utilisateur munis des droits DBA ne pourra pas accorder de privilèges sur un
objet qui ne lui appartient pas
• Pour pouvoir mettre à jour ou supprimer des lignes d'une table, les privilèges
UPDATE ET DELETE ne suffisent pas. Le privilège SELECT est nécessaire
Création de rôle

Si l'on prend l'exemple de plusieurs utilisateurs travaillant au même service, ils doivent recevoir
un certain nombre de privilèges sur un certain nombre d'objets. Le DBA doit leur attribuer des
privilèges identiques. C'est pourquoi il est souhaitable de pouvoir regrouper des privilèges
identiques dans un même ensemble. Cet ensemble s'appelle un rôle et se créé avec
l'instruction CREATE ROLE

role représente le nom du rôle


NOT IDENTIFIED (défaut) indique qu'aucun mot de passe n'est nécessaire pour activer le rôle
IDENTIFIED BY password indique qu'un mot de passe est nécessaire pour activer le rôle
IDENTIFIED USING package indique qu'un package va être utilisé pour fixer les droits de
l'utilisateur
IDENTIFIED EXTERNALLY indique que l'autorisation provient d'une source externe (S.E.)
IDENTIFIED GLOBALLY pour un user GLOBAL géré par exemple par Enterprise Directory Service
Exemples

1. Lorsque le rôle est créé, il ne contient rien et il faut l'alimenter à l'aide d'instructions
GRANT:
CREATE ROLE magasin;

GRANT SELECT, INSERT, UPDATE, DELETE ON SCH.EMPLOYEE TO magasin


GRANT SELECT, INSERT, UPDATE, DELETE ON SCH.DEPOT TO magasin
GRANT SELECT, INSERT, UPDATE, DELETE ON SCH.FOURNISSEUR TO magasin
2. Une fois le rôle créé, il peut être assigné à un utilisateur ou à un autre rôle:
GRANT magasin TO YASSER;
Rôles prédéfinies
Il existe plusieurs rôles qui sont définis automatiquement lors de la création de la bases de
données. Trois rôles existent en standard:
• CONNECT: Ce rôle permet l'ouverture (CREATE SESSION) d'une session.

• RESOURCE: Ce rôle permet de créer des types, tables, clusters, opérateurs, séquences,
index et des procédures.

N.B: Le rôle RESOURCE accorde un privilège UNLIMITED QUOTA à l'utilisateur est n'est
donc à assigner qu'en connaissance de cause
• DBA: La liste des privilèges assignés au rôle DBA est trop longue du fait que ce rôle est
octroyé aux utilisateurs ayant des droits d'administration de la base. On peut la consulter via
la commande: select * from DBA_SYS_PRIVS where grantee='DBA‘
D'une façon générale, il est fortement déconseillé d'utiliser ces rôles standards car ils
accordent trop de droits aux utilisateurs
Informations sur les rôles

Pour pouvoir consulter tous les rôles de la BD il suffit de consulter la vue:


DBA_ROLES

La liste des rôles assignés à un utilisateur s'obtient via les vues: DBA_ROLE_PRIVS,
USER_ROLE_PRIVS

La liste des rôles assignés à l'utilisateur au cours de sa session est visible via la
vue SESSION_ROLES

• Exemple:

Select * from DBA_ROLES;


Select * from DBA_ROLE_PRIVS where grantee=‘SCOTT’;
Select * SESSION_ROLES;

Ces informations sont aussi consultables via Oracle Entreprise Manage.


Principes généraux appliqués aux rôles

• Les privilèges sont accordés aux rôles (et révoqués) comme si le rôle était un
utilisateur.
• Un rôle peut être constitué de privilèges système et objet.
• Un rôle peut être activé ou désactivé pour chaque utilisateur auquel il est accordé.
• Les rôles sont accordés aux utilisateurs ou à d'autres rôles (et révoqués de la même
manière) comme s'il s'agissait de privilèges système
• L'activation d'un rôle peut nécessiter un mot de passe
• Les rôles n'appartiennent à personne et ne résident dans aucun schéma
5

Administration de la sécurité utilisateur


Terminologie

Les termes suivants nous aiderons à mieux comprendre l’administration des utilisateurs de
base de données:

• Un compte utilisateur: constitue un moyen d'organiser l'appartenance des objets


de base de données et l'accès à ces objets.
• Un mot de passe: est un mode d'authentification par la base de données Oracle.
• Un privilège: est le droit d'exécuter un type particulier d'instruction SQL ou
d'accéder à l'objet d'un autre utilisateur.
• Un rôle: est un groupe nommé de privilèges liés qui sont accordés à des utilisateurs
ou à d'autres rôles.
• Un profil :impose un ensemble nommé de limites concernant l'utilisation de la base
de données et les ressources des instances. Il permet de gérer le statut des comptes et
les règles relatives aux mots de passe.
• Un quota: est une allocation d'espace dans un tablespace donné. Il constitue l'un
des moyens permettant de contrôler l'utilisation des ressources par les utilisateurs
Comptes utilisateur de base de données

Pour pouvoir accéder aux données, on doit se connecter via un compte utilisateur qui aura certains
privilèges et une certaine visibilité de la base de données. A chaque utilisateur de la base est associé un
compte unique.
Chaque compte utilisateur comporte les éléments importants suivants :
• Un nom utilisateur unique: Les noms utilisateur ne peuvent pas dépasser 30 caractères, ne
doivent pas contenir de caractères spéciaux et doivent commencer par une lettre.
• Une méthode d'authentification : La méthode la plus courante est l'authentification par mot de
passe, mais Oracle Database 11g prend en charge des méthodes d'authentification globales et
externes (notamment par biométrie, par certificat et par système tiers).
• Un tablespace par défaut : Il s'agit de l'emplacement dans lequel l'utilisateur crée des objets s'il
n'indique pas un autre tablespace. Notez que le fait qu'un utilisateur dispose d'un tablespace par
défaut n'implique pas qu'il bénéficie du privilège permettant de créer des objets dans ce
tablespace, ni qu'il dispose d'un quota d'espace dans ce tablespace. En effet, les privilèges et les
quotas sont accordés séparément.
• Un tablespace temporaire : Il s'agit de l'emplacement dans lequel l'instance crée les objets
temporaires (tris ou tables) pour le compte de l'utilisateur. Aucun quota n'est appliqué aux
tablespaces temporaires.
• Un profil utilisateur: sera détailler par la suite dans ce cours.
• Un statut de compte: fait référence aux statut du compte de l’utilisateur est-ce-qu’il est
verrouillé ou non, expiré ou non etc.
Schéma de base de données

• La base de données ORACLE comporte des schémas dans lesquels on retrouve


des objets tel que:
• Tables,
• Vues,
• Index,
• Procédures, ...

• Un SCHEMA permet de segmenter la base et de mieux gérer les privilèges.

• A chaque création d’un utilisateur correspond la création d’un schéma de


même nom:

Un compte utilisateur = Un schéma de BDD


Comptes d’administration prédéfinis

Il existe 2 utilisateurs par défaut sur toute base Oracle :


• l'utilisateur SYS: propriétaire des tables et des vues du dictionnaire de données.
• l'utilisateur SYSTEM : qui a simplement le droit de consultation de ces objets.

Ces 2 utilisateurs ont par défaut le rôle DBA, ce qui veut dire qu'ils ont accès à tous les objets
de tous les autres utilisateurs de la base, et qu'ils ont le droit d'exécuter certaines
commandes d'exploitation et d'administration.

Tout utilisateur qui dispose du privilège SYSDBA peut se connecter au compte SYS à l'aide de
la clause AS SYSDBA. Seuls les utilisateurs bénéficiant du privilège SYSDBA, SYSOPER ou
SYSASM sont autorisés à démarrer et arrêter les instances

Un DBA peut créer des utilisateurs en utilisant la requête CREATE USER.


Lorsqu’un utilisateur est créé, il ne possède aucun privilège. Le DBA doit lui donner des
privilèges souhaités .
Création d’un utilisateur

Avant de créer un utilisateur, il faut tenir en compte plusieurs paramètres:

• Le nom de l’utilisateur
• Le mécanisme d’authentification
• Tablespace: Identifiez les tablespaces dans lesquels l’utilisateur stockera
ses objets
• Quotas: décider des quotas pour chaque tablespace

Après avoir décidé les paramètres cités précédemment, l’administrateur peut


ainsi créer l’utilisateur et lui affecter des privilèges et des rôles ultérieurement.

La création peut se faire via:


• une commande SQL qui peut être exécuter via n’importe quel outils.
• L’assistant de création d’utilisateur d’Oracle Entrprise Manager.
Création via SQL

La requête suivante peut être exécutée dans n’importe quel outils tels que SQL*PLUS,
SQLDevelopper ou en ligne de commande :
CREATE USER YASSER IDENTIFIED BY
MESMOUDI2020
DEFAULT TABLESPACE data01
TEMPORARY TABLESPACE temp
QUOTA 15M on data01
PASSWORD EXPIRE
ACCOUNT UNLOK;
• IDENTIFIED:Cette clause indique la manière dont l'utilisateur sera identifié ( par l'OS ou par Oracle).
• DEFAULT TABLESPACE: Indique le Tablespace dans lequel les objets de l'utilisateur seront crées.
• TEMPORARY TABLESPACE: Indique le Tablespace dans lequel les tris par exemple seront effectués pour
cet utilisateur.
• QUOTA: Limite d'espace attribué à l'utilisateur sur un Tablespace.
• PASSWORD EXPIRE: Permet de forcer un changement de mot de passe à la première connexion de
l'utilisateur.
• ACCOUNT LOCK / UNLOCK: Permet de verrouiller ou déverrouiller le compte utilisateur.
Création via OEM

Une fois connecté sur OEM, rendez-vous sur l’onglet serveur. Cliquez sur le lien
Utilisateurs puis sur le bouton créer. L’interface de création d’utilisateur ci-dessous
s’affiche et assiste l’administrateur en lui demandant d’introduire les différentes
informations correspondantes:

N.B: vous pouvez effectuer l’affectation des rôles et des privilèges ainsi que
l’application des quotas aux tablespaces durant la création de l’utilisateur en
interrogeant les onglets correspondants.
Authentification des utilisateurs

Lors de la création de l’utilisateur, l’administrateur doit décider de la technique


d'authentification à utiliser, laquelle pourra être modifiée ultérieurement :

Mot de passe: L'authentification par mot de passe est aussi appelée


authentification par la base de données Oracle. Chaque utilisateur créé reçoit un
mot de passe qu'il devra saisir lors de chaque connexion.
Externe: Cette option utilise une méthode d’authentification extérieure à la BD
Oracle. Avec ce mode, la base utilise le système d’exploitation. On ajoute l’option
EXTERNALLY après le mot de passe. Ce mode nécessitera la configuration de
quelques paramètres Oracle avant de pouvoir fonctionner correctement.
Global: Avec l’option Oracle Advanced Security, ce mode d’authentification
permet d’identifier les utilisateur via Oracle Internet Directory.
Modification d’un compte utilisateur

La clause ALTER USER permet de modifier les différents paramètres du compte


d’un utilisateur comme:

• Forcer le changement du mot de passe:


• ALTER USER YASSER PASSWORD EXPIRE;
• Suppression du QUOTA
• ALTER USER YASSER QUOTA 0 ON data;
• les données existantes restent , mais plus possible d'en insérer
d'autres.
• Interdiction temporaire de connexion:
• ALTER USER YASSER ACCOUNT LOCK ;
• Appliquer un QUOTA illimité:
• ALTER USER YASSER QUOTA UNLIMITED ON data01;

Comme la création , la modification peut être faite à via Oracle Entreprise


Manage.
Suppression d’un compte utilisateur

La clause DROP USER permet de supprimer un utilisateur:

DROP USER YASSER

• L’option CASCADE permet de supprimer tous les objets du schéma puis


supprime l’utilisateur, exemple:

• DROP USER YASSER CASCADE;

Rq: impossible de supprimer un utilisateur connecté


Informations sur les utilisateurs

Pour pouvoir consulter les informations sur les utilisateurs, il suffit d’interroger
les vues: DBA_USERS et DBA_TS_QUOTAS

• Exemple:

Select username, default_tablespace, temporary_tablespace


from dba_users
where username = ‘YASSER';

select * from dba_ts_quotas


where username= ‘YASSER';

Ces informations sont aussi consultables via Oracle Entreprise Manage.


Rôles & privilèges
Ces concepts sont mis en oeuvre pour protéger les données en accordant (ou retirant) des
privilèges à un utilisateur ou à un groupe d'utilisateurs
Un rôle est un regroupement de privilèges. Une fois créé il peut être assigné à un utilisateur ou
à un autre rôle
On nomme privilège le droit d'exécuter un type particulier d'instruction SQL ou d'accéder à
l'objet d'un autre utilisateur. La base de données Oracle permet de contrôler les opérations que
les utilisateurs peuvent effectuer ou non au sein de la base. Ils sont répartis en deux catégorie:
• Privilèges système: Chaque privilège système autorise un utilisateur à effectuer une
certaine opération de base de données ou une certaine classe d'opérations. Par exemple,
le privilège permettant de créer des tablespaces est un privilège système. Les privilèges
système peuvent être accordés par l'administrateur ou par quelqu'un à qui la permission
d'administrer ces privilèges a été accordée explicitement.
• Privilèges objet: Les privilèges objet permettent à un utilisateur d'effectuer une
action particulière sur un objet spécifique, tel qu'une table, une vue, une séquence, une
procédure, une fonction ou un package. Sans permission spécifique, les utilisateurs ne
peuvent accéder qu'à leurs propres objets. Les privilèges objet peuvent être octroyés par
le propriétaire d'un objet, par l'administrateur, ou par un utilisateur auquel la permission
d'accorder des privilèges sur l'objet a été attribuée explicitement
Accorder des privilèges système

Lorsqu'un utilisateur est créé avec l'instruction CREATE USER, il ne dispose encore d'aucun droit
car aucun privilège ne lui a encore été assigné. Il ne peut même pas se connecter à la base.
Il faut donc lui assigner les privilèges nécessaires.
Pour lui assigner ces privilèges de niveau système il faut utiliser l'instruction GRANT dont voici la
syntaxe:

systeme_privilege représente un privilège système


role représente un rôle préalablement créé
ALL PRIVILEGES représente tous les privilèges système (à l'exception de SELECT ANY DICTIONARY)
user représente le nom de l'utilisateur qui doit bénéficier du privilège
PUBLIC assigne le privilège à tous les utilisateurs
WITH ADMIN OPTION assigne à l'utilisateur le droit d'assigner, de retirer, de modifier et de
supprimer à son tour les privilèges du rôle reçus
Exemples

1. Pour que l'utilisateur puisse simplement se connecter à la base, il doit bénéficier du


privilège système CREATE SESSION:
GRANT CREATE SESSION TO YASSER
2. Ensuite il faut lui assigner des droits de création de table via le privilège CREATE TABLE
GRANT CREATE TABLE TO YASSER
Et il en va de même pour tous les autres privilèges qui lui sont assignés. On peut assigner
plusieurs privilèges au sein d’une même commande:
GRANT
CREATE SESSION,
CREATE TABLE,
CREATE VIEW
TO YASSER;
Accorder des privilèges Objet
Pour lui assigner ces privilèges de niveau objeti, l faut utiliser l'instruction GRANT dont voici la
syntaxe:

object_privilege représente un privilège objet


role représente un rôle préalablement créé
ALL PRIVILEGES représente tous les privilèges
assignés à l'exécuteur de l'instruction
column représente le nom de colonne d'une table
schema représente le nom d'un schéma
object représente le nom d'un objet du schéma
directory_name représente le nom d'une directory
JAVA SOURCE représente le nom d'une source Java
JAVA RESOURCE représente le nom d'une ressource Java
WITH GRANT OPTION assigne à l'utilisateur le droit d'assigner à son tour le privilège reçu à un
autre utilisateur
(WITH GRANT OPTION s'applique à un utilisateur ou à PUBLIC, mais pas à un rôle)
WITH HIERARCHY OPTION assigne le privilèges aux sous-objets
Exemples

1. Pour assigner à l'utilisateur MOHAMED le droit de sélectionner, insérer, modifier et


supprimer des lignes dans la table EMPLOYEE de l'utilisateur YASSER:
GRANT
SELECT ,
INSERT ,
UPDATE ,
DELETE
ON YASSER.EMPLOYEE
TO MOHAMED;
2. Une liste de colonnes peut être indiquée dans l'instruction afin de restreindre davantage
les droits sur une table

GRANT
UPDATE (JOB, DATE_ENTREE),
ON YASSER.EMPLOYEE
TO MOHAMED;
L'utilisateur MOHAMED peut modifier la table EMPLOYEE mais uniquement
les colonnes JOB et DATE_ENTREE.
Révoquer des privilèges système
Les privilèges système qui ont été assignés à des utilisateurs ou à des rôles peuvent être retirés
avec l'instruction REVOKE:

Les arguments sont identiques à ceux décrits pour l'instruction GRANT

Les utilisateurs disposant de l'option ADMIN OPTION pour un privilège système peuvent révoquer
ce privilège pour tout autre utilisateur de la base de données.
L'utilisateur disposant du rôle DBA peut révoquer les privilèges CONNECT, RESOURCE, DBA ou tout
autre privilège système ou rôle.

N.B: Retirer des privilèges à un utilisateur ne supprime pas son schéma ni les objets qu'il
contient
Exemples
Cette image illustre le scénario suivant:

1. Le DBA octroie le privilège système CREATE TABLE à Joe avec l'option ADMIN OPTION
2. Joe crée une table.
3. Joe accorde le privilège système CREATE TABLE à Emily.
4. Emily crée une table.
5. Le DBA révoque le privilège système CREATE TABLE pour Joe.

Résultat: La table créée par Joe existe toujours, mais Joe ne peut plus en créer d'autres. La table
d'Emily existe toujours et Emily conserve le privilège système CREATE TABLE.
Révoquer des privilèges objet
Les privilèges objet qui ont été assignés à des utilisateurs ou à des rôles peuvent être retirés
avec l'instruction REVOKE :

Les arguments sont identiques à ceux décrits


pour l'instruction GRANT à part:

CASCADE CONSTRAINTS (applicable uniquement


pour révoquer des privilèges REFERENCES)
supprime toutes les contraintes d'intégrité référentielles
définies par l'utilisateur
FORCE retire le privilège EXECUTE sur les types objet

Pour pouvoir supprimer un privilège, il faut en avoir reçu l'autorisation avec l'option ADMIN
OPTION.
L'utilisateur disposant du rôle DBA ne peut pas retirer de privilèges qu'il n'a pas accordé
Exemples
Cette image illustre le scénario suivant:

1. Joe reçoit le privilège objet SELECT sur la table EMPLOYEES, avec l'option GRANT OPTION.
2. Joe accorde à Emily le privilège SELECT sur la table EMPLOYEES.
3. Le privilège SELECT de Joe est révoqué.

Résultat: Cette révocation est répercutée sur Emily.


Informations sur les privilèges

Pour pouvoir consulter les informations sur les privilèges système, il suffit
d’interroger des vues comme : DBA_SYS_PRIVS et SESSION_PRIVS

Pour pouvoir consulter les informations sur les privilèges objet, il suffit
d’interroger des vues comme : DBA_TAB_PRIVS, USER_TAB_PRIVS et
DBA_COL_PRIVS

• Exemple:
Select * from DBA_SYS_PRIVS;
Select * from SESSION_PRIVS;
Select * from DBA_TAB_PRIVS;
Select * from USER_TAB_PRIVS;
select owner, table_name, column_name from DBA_COL_PRIVS;

Ces informations sont aussi consultables via Oracle Entreprise Manage.


Principes généraux appliqués aux privilèges
• Un utilisateur possède automatiquement tous les privilèges sur un objet qui lui
appartient,
• Un utilisateur ne peut pas donner plus de privilèges qu'il n'en a reçu,
• s'il n'a pas reçu le privilège avec l'option WITH GRANT OPTION, un utilisateur ne
peux pas assigner à son tour ce même privilège,
• Un utilisateur munis des droits DBA ne pourra pas accorder de privilèges sur un
objet qui ne lui appartient pas
• Pour pouvoir mettre à jour ou supprimer des lignes d'une table, les privilèges
UPDATE ET DELETE ne suffisent pas. Le privilège SELECT est nécessaire
Création de rôle

Si l'on prend l'exemple de plusieurs utilisateurs travaillant au même service, ils doivent recevoir
un certain nombre de privilèges sur un certain nombre d'objets. Le DBA doit leur attribuer des
privilèges identiques. C'est pourquoi il est souhaitable de pouvoir regrouper des privilèges
identiques dans un même ensemble. Cet ensemble s'appelle un rôle et se créé avec
l'instruction CREATE ROLE

role représente le nom du rôle


NOT IDENTIFIED (défaut) indique qu'aucun mot de passe n'est nécessaire pour activer le rôle
IDENTIFIED BY password indique qu'un mot de passe est nécessaire pour activer le rôle
IDENTIFIED USING package indique qu'un package va être utilisé pour fixer les droits de
l'utilisateur
IDENTIFIED EXTERNALLY indique que l'autorisation provient d'une source externe (S.E.)
IDENTIFIED GLOBALLY pour un user GLOBAL géré par exemple par Enterprise Directory Service
Exemples

1. Lorsque le rôle est créé, il ne contient rien et il faut l'alimenter à l'aide d'instructions
GRANT:
CREATE ROLE magasin;

GRANT SELECT, INSERT, UPDATE, DELETE ON SCH.EMPLOYEE TO magasin


GRANT SELECT, INSERT, UPDATE, DELETE ON SCH.DEPOT TO magasin
GRANT SELECT, INSERT, UPDATE, DELETE ON SCH.FOURNISSEUR TO magasin
2. Une fois le rôle créé, il peut être assigné à un utilisateur ou à un autre rôle:
GRANT magasin TO YASSER;
Rôles prédéfinies
Il existe plusieurs rôles qui sont définis automatiquement lors de la création de la bases de
données. Trois rôles existent en standard:
• CONNECT: Ce rôle permet l'ouverture (CREATE SESSION) d'une session.

• RESOURCE: Ce rôle permet de créer des types, tables, clusters, opérateurs, séquences,
index et des procédures.

N.B: Le rôle RESOURCE accorde un privilège UNLIMITED QUOTA à l'utilisateur est n'est
donc à assigner qu'en connaissance de cause
• DBA: La liste des privilèges assignés au rôle DBA est trop longue du fait que ce rôle est
octroyé aux utilisateurs ayant des droits d'administration de la base. On peut la consulter via
la commande: select * from DBA_SYS_PRIVS where grantee='DBA‘
D'une façon générale, il est fortement déconseillé d'utiliser ces rôles standards car ils
accordent trop de droits aux utilisateurs
Informations sur les rôles

Pour pouvoir consulter tous les rôles de la BD il suffit de consulter la vue:


DBA_ROLES

La liste des rôles assignés à un utilisateur s'obtient via les vues: DBA_ROLE_PRIVS,
USER_ROLE_PRIVS

La liste des rôles assignés à l'utilisateur au cours de sa session est visible via la
vue SESSION_ROLES

• Exemple:

Select * from DBA_ROLES;


Select * from DBA_ROLE_PRIVS where grantee=‘SCOTT’;
Select * SESSION_ROLES;

Ces informations sont aussi consultables via Oracle Entreprise Manage.


Principes généraux appliqués aux rôles

• Les privilèges sont accordés aux rôles (et révoqués) comme si le rôle était un
utilisateur.
• Un rôle peut être constitué de privilèges système et objet.
• Un rôle peut être activé ou désactivé pour chaque utilisateur auquel il est accordé.
• Les rôles sont accordés aux utilisateurs ou à d'autres rôles (et révoqués de la même
manière) comme s'il s'agissait de privilèges système
• L'activation d'un rôle peut nécessiter un mot de passe
• Les rôles n'appartiennent à personne et ne résident dans aucun schéma

Vous aimerez peut-être aussi