Vous êtes sur la page 1sur 71

Chapitre 

:  Structure Logique de la BD
TableSpace, Users, Schémas, Profils, Rôles 
et Privilèges

Filières : Mastère GLDRA &Ingénieur GL
Pr. Chiheb CHAIEB©

11/04/2021 Pr. Chiheb CHAIEB © 1
Les TableSpaces ‐ Définition

 Une base de données est constituée d’une ou plusieurs unités


logiques de stockage appelées tablespaces qui comportent des
DataFiles où toutes les données(Système et users) sont stockées
 Un tablespace regroupe un ou plusieurs schémas utilisateurs
 Un tablespace est constitué logiquement de segments.
 Un segment constitue l'espace nécessaire occupé par une table
(ou autre objet DB occupant l'espace comme les index)
 Le segment est à son tour composé logiquement d’un
ensemble d’extensions. Tandis qu’une extension est un
ensemble contigu de blocs de données.
 Un tablespace dispose d’un ou plusieurs fichiers de données.
Un fichier data ne peut appartenir qu’à un seul tablespace.
Tablespace Segments Extensions Bloc
11/04/2021 Pr. Chiheb CHAIEB © 2
Les TableSpaces ‐ Motivations

L'administrateur doit créer plusieurs tablespaces pour :


 Répartir les segments sur plusieurs disques pour améliorer le
temps de réponse
 Organiser les données en unités logiques, chacune contenant
les données d'une application (user) particulière
 Faciliter les opérations de sauvegarde et de restauration
 Contrôler la disponibilité des données : Online/Offline
 Gérer l'espace d'allocation des segments de données en
imposant pour les utilisateurs des quotas d'espace disque sur le
tablespace.

11/04/2021 Pr. Chiheb CHAIEB © 3
TableSpace System

 Tablespace System
Au moins un, qui est créé au moment de la création de la base
et regroupant les premiers fichiers de la base. Ce tablespace
contient initialement le dictionnaire de données et des index et
ne peut pas être supprimé ni mis hors ligne, les fichiers qui le
constituent non plus.
 Tablespace SysAux : inclut les données utilisées par certains
composants de la base de données.
 Il est vivement conseillé de Créer :
 des tablespaces permanents pour orienter les données
utilisateurs vers eux.
 au moins un tablespace d’annulation (UNDO TABLESPACE).
 Au moins un tablespace temporaire.
11/04/2021 Pr. Chiheb CHAIEB © 4
Types de TableSpaces

Trois types de Tablespace


 Tablepsace Permanent pour le stockage des objets (tables,
index etc.) des utilisateurs. Ce type de tablespace est créé
avant la création des utilisateurs, et peut avoir une taille
initiale qui peut être augmentée. Le DBA crée la table
espace et peut à tout moment le modifier, le mettre hors
service, le sauvegarder et le restaurer.
 Tablespace temporaire : inclut les segments temporaires
permettant le stockage de données volumineuses
résultantes d’opérations lourdes, notamment les tri, des
calculs intermédiaires , stockage temporaires etc.
 Tablespaces Undo
utilisé uniquement pour stocker les informations
d’annulations, et donc uniquement des segments d’annulation
11/04/2021 Pr. Chiheb CHAIEB © 5
Syntaxe de création de Base 

 Create [Big File ] TableSpace nomTS Data File 


‘Chemin/nomDataFile’ Size n K|M  [type d’Extension] 

11/04/2021 Pr. Chiheb CHAIEB © 6
Data File des TableSpaces

 Les données sont physiquement stockées dans des data files 
affectés  aux  tablespaces.  Un  tablespace  (Permanent, 
annulation  ou  temporaire)  peut  comporter  un  ou  plusieurs 
data files selon son type: bigFile ou smallFile
 Un tablespace BIGFILE comporte un seul et unique fichier de 
données.  Ce  fichier  peut  être  volumineux,  avec  une  taille 
allant jusqu’à 2^32 blocs, soit plus de 4 milliards de blocs. Le 
TS system ne peuvent être de ce type, 
 Le  tablespace  par  défaut  désormais  appelé  tablespace 
SMALLFILE, qui est composé de 1 ou de plusieurs fichiers de 
données (jusqu’à 1022 fichiers, chacun ayant 2^22 blocs, soit 
plus de 4 millions de blocs).

11/04/2021 Pr. Chiheb CHAIEB © 7
Gestion de l'extension des Tablespaces 
Permanents

 Le tablespace augmente de taille en recevant les données


dans ses data files qui atteignent leurs tailles (de création
spécifiée par le size du dataFile correspondant.
 Une fois la taille indiquée par le size est atteinte on dit que le
dataFile est saturé. Pour stocker des nouvelles data le
tablespace doit s’octroyer de l’espace supplémentaire
automatiquement ou manuellement selon le type de sa
stratégie d’extension indiquée par le paramètre : Autoextend
On ou Off.

11/04/2021 Pr. Chiheb CHAIEB © 8
Gestion de l'extension des Tablespaces 
Permanents

 L'option Autoextend On permet de définir une stratégie


d’allocation automatique de l’espace supplémentaire allant
de size à maxsize et ceci par des séries de blocs (extent).
 Pour ce type d’extension le paramètre maxsize sera spécifié
 Le paramètre MAXSIZE détermine la taille maximale que le
fichier peut atteindre par les incréments. Ceci valable pour
l’extension automatiue (Autoextend On). MAXSIZE peut avoir
la valeur UNLIMITED, ainsi le fichier peut s’étendre jusqu’à la
limite du disque dur.
 Syntaxe : Create BigFile tablespace TS_Name datafile
‘../DfName.dbf' size 128 M Autoextend on maxSize 512M.

11/04/2021 Pr. Chiheb CHAIEB © 9
Gestion de l'extension des Tablespaces 
Permanents

 Si l’option Autoextend Off est choisie, une intervention


manuelle pour augmenter l'espace alloué au tablespcae doit
être réalisée (redimensionnement du data file ou l'ajout d'un
nouveau datafile) une fois le(s) dataFile(s) sont saturés.
 Pas de maxsize si l'extension AuteoExtend est à off.

Syntaxe : 
Create tablespace TS_Name datafile ‘../DfName,dbf'   size 512M  
autoextend off

11/04/2021 Pr. Chiheb CHAIEB © 10
Gestion de l'entension Automatique : 
AutoExtend ON

 L'allocation d'un nouveau espace de stockage au tablespace


dépend de la nature de l'extension du data file, deux façons
de gérer les extents:
• La gestion par dictionnaire (versions anciennes) : les
informations relatives à l'allocation d'espace sont
enregistrées dans le dictionnaire de données : Extent
Management Dictionary
 La gestion locale (dite locally managed) qui stocke toutes les
informations de stockage en entête du tablespace à partir de
la version 9i, qui est actuellement utilisée dans les versions
récentes 9i, 10g, 11g et 12C… : Extent Managment local

11/04/2021 Pr. Chiheb CHAIEB © 11
Gestion de l'entension Automatique : 
AutoExtend On
Allocation locale : Extent Managment local
 Il existe deux façons de gérer les extents en mode local :
UNIFORM SIZE et AUTOALLOCATE.
 Le mode UNIFORM SIZE impose à Oracle de créer des extents
de taille identique : extent management local uniform size n
K|M
 Syntaxe :
Create tablespace TS_Name datafile ‘../DfName,dbf' size 256 M
Autoextend On MaxSize 1028 M extent management local
uniform size 64K;

11/04/2021 Chaieb Chiheb  © 12
Gestion de l'entension Automatique des 
Tablespaces Permanents
p
AUTOALLOCATE ‐ signifie que les tailles d’extensions sont gérées
par Oracle qui choisira la prochaine taille optimale pour les
extensions commençant par 64 Ko (ou next N). Au fur et à
mesure que les segments se développent et que de plus en plus
d’extensions sont nécessaires, Oracle commencera à allouer des
tailles de plus en plus grandes: Autoextend On extent
management local autoallocate next n K Maxsize …; (en
commençant par n K )
 Choix de l’allocation : On préfère généralement conserver de
tables des grande production dans des tablespaces de taille
UNIFORME et des tables plus petites ou des tables dans des
environnements non gérés dans des tablespaces
AUTOALLOCATE
11/04/2021 Pr. Chiheb CHAIEB © 13
Exemples de Création des Tablespace 
Permanents

 Create tablespace BigFile TS_GPAO datafile 
'oracleHome/Oradata/f_GPAO' size 128 M autoextend on
maxsize 400M  extent management local uniform size  64K;

 Create tablespace ts_HR datafile '../f_rh.dbf'   size 512 M
autoextend on  maxsize 2048m  next 16K extent management local 
autoAllocate;  

 Create bigfile tablespace TS_GMAO datafile 
'../oradata/orlc/data.dbf' size 10M autoextend off

11/04/2021 Pr. Chiheb CHAIEB © 14
Création des Tablespaces Temporaires Undo

 Tablespace Temporaire
 create temporary tablespace temp_TS
tempfile '/dbf1/f_temp01.dbf'  size 32m autoextend on 
next 32m maxsize 2048m  extent management local;
 Undo tablespace
 create undo tablespace ts_undo datafile '/dbf/undo.dbf'
size 100M autoextend off.

11/04/2021 Pr. Chiheb CHAIEB © 15
Extension des tablespaces permanents

 Une fois le tablespace atteint son seuil maximum d’espace


disque, il faut l’étendre. En effet, la taille d’un tablespace est la
somme des tailles de ses fichiers. Si tous ses fichiers atteignent
la taille MAXSIZE, ou même SIZE (s’ils ne sont pas auto‐
extensibles), alors il faudrait étendre le tablespace
manuellement. Pour ce, il existe deux solutions :
1. Redimensionner un des fichiers du tablespace. Par 
exemple ici, nous allons étendre le fichier f_GPAO.dbf qui a 
déjà atteint les 400M en le redimensionnant. Pour ce faire 
utiliser la requête :
ALTER DATABASE DATAFILE ‘oracleHome/Oradata/f_GPAO.dbf’ 
RESIZE 700M; 

11/04/2021 Pr. Chiheb CHAIEB © 16
Extension des tablespaces permanents

2. Ajouter un nouveau fichier de données au tablespace : 
ALTER TABLESPACE TSfact ADD DATAFILE  ‘..\oradata\fact2.dbf’
SIZE 100M AUTOEXTEND OFF;
NB : Extension du Bigfile Tablespace
 Pour étendre un tablespace BIGFILE, c’est une requête ALTER 
TABLESPACE qu’il faut exécuter : 
ALTER TABLESPACE grh RESIZE 1G; 
Naturellement, un tablespace BIGFILE ne peut être étendu que via 
cette méthode, soit étendre son fichier de données (resize) avec 
une commande Alter DataBase …..

11/04/2021 Pr. Chiheb CHAIEB © 17
Les Tablespaces Par défaut de la BD

 Une base de données a toujours un tablespace permanent par 
défaut et un autre temporaire par défaut. 
 Pour définir un tablespace permanent par défaut  pour la BD:           
Alter database default tablespace ts_default';
 Pour définir un tablespace TEMPORARY par défaut pour la BD:
Alter database default temporary tablespace 'temp';
 En créant un user sans l'affecter sur un tablespace, il sera affecté 
sur le tablespace par défaut de la base de données. 
 Un objet créé par un user est affecté sur son tablespace par 
défaut à défaut de l'indication du tablespace.
 En cas de modification du tablespace (Permanent/temporaire) 
par défaut, tous les utilisateurs affectés à ce tablespace sont 
réaffectés au nouveau tablespace par défaut.
11/04/2021 Pr. Chiheb CHAIEB © 18
Les Tablespaces Par défaut de la BD
 SELECT PROPERTY_NAME, PROPERTY_VALUE  FROM 
DATABASE_PROPERTIES  WHERE PROPERTY_NAME IN 
('DEFAULT_PERMANENT_TABLESPACE','DEFAULT_TEMP_TABLESP
ACE'); 

 NB : une table est créée sur un tablespace ( à défaut sur le TS par 
défaut) 
 Create table test (,,,,,,,,,,,) tablespace nomTS
 Pour afficher le TS d'une table :
 select tablespace_name from user_tables/dba_tables
where table_name = 'TEST';

11/04/2021 Pr. Chiheb CHAIEB © 19
L'espace libre et utilisé :                       
PctFree ‐ PctUsed 
 PctFree% : pourcentage d'espace libre laissé dans un bloc avant sa
saturation totale, cet espace sera réservée aux mises à jour de
données existantes dans le bloc pour éviter leur migration.
 PctUsed% indique le pourcentage d'espace utilisé au dessus duquel
le bloc n'est plus libre,
 La FREELIST contient la liste des blocs libres dans lesquels Oracle
peut écrire des données. Un bloc sort de la freelist dès qu'il est
rempli à plus de PCTUSED %. Il y retourne dès que le niveau
redescend en dessous de PCTUSED : en cas de DELETE de lignes ou
d'UPDATE avec des valeurs plus petites.

11/04/2021 Pr. Chiheb CHAIEB © 20
L'espace libre et utilisé :                       
PctFree ‐ PctUsed 
 Donc, si le PCTFREE est trop grand, on réserve trop d'espace aux
UPDATE et on perd de l'espace. S'il est trop petit on augmente le
risque de lignes migrées.
 Si le PCTUSED est trop grand, Oracle perd beaucoup de temps dans
la gestion de la freelist mais si il est trop petit l'espace disque est
une nouvelle fois perdu puisque le bloc n'est pas considéré comme
libre pour l'écriture de données.

11/04/2021 Pr. Chiheb CHAIEB © 21
L'espace libre et utilisé PctFree ‐
PctUsed 
 La valeur par défaut pour PCTFREE est de 10%., sinon un
nombre entier (entre 0 et 99 inclus), à condition que la
somme de PCTFREE et PCTUSED ne dépasse pas 100.
 Un plus grand PCTFREE a les effets suivants:
 Réserve plus de place pour les futures MAJ des lignes de
table existantes
 Peut nécessiter plus de blocs pour la même quantité de
données insérées (insérer moins de lignes pour chaque
bloc)
 Peut améliorer les performances de mise à jour, car Oracle
n'a pas besoin de chaîner les éléments de ligne aussi
souvent, voire jamais
 Un grand PCTFREE convient, par exemple, aux segments
fréquemment mis à jour.Pr. Chiheb CHAIEB ©
11/04/2021 22
L'espace libre et utilisé PctFree ‐
PctUsed 
 Un PCTFREE plus petit a les effets suivants:
 Réserve moins de place aux mises à jour pour étendre les
lignes de table existantes
 Permet aux inserts de remplir le bloc plus complètement
 Peut économiser de l'espace, car le total des données
d'une table ou d'un index est stocké dans moins de blocs
(plus de lignes ou d'entrées pour chaque bloc)
 Un petit fichier PCTFREE peut convenir, par exemple, à un
segment rarement modifié.
 Plus la différence entre 100 et la somme de PCTFREE et de
PCTUSED est petite (comme dans PCTUSED de 75, PCTFREE de
20), plus l’utilisation de l’espace est efficace, pour un coût en
performances moindre.
11/04/2021 Pr. Chiheb CHAIEB © 23
L'espace libre et utilisé PctFree ‐
PctUsed 
 Un plus petit PCTUSED a les effets suivants:
 Réduit les coûts de traitement induits par les instructions
UPDATE et DELETE pour déplacer un bloc vers la liste
disponible lorsqu'il est tombé en dessous de ce
pourcentage d'utilisation
 Augmente l'espace inutilisé dans une base de données
 Un plus gros PCTUSED a les effets suivants:
 Améliore l'efficacité de l'espace
 Augmente les coûts de traitement pendant INSERT et
UPDATE
 Par défaut le PCTUSED est de 40

11/04/2021 Pr. Chiheb CHAIEB © 24
Modifications des TableSpaces 

Renommer un data file d'un tablespace
lorsqu’un disque est saturé, on peut avoir besoin de 
déplacer un ou plusieurs fichiers de données vers un autre 
disque. Pour renommer ou déplacer un fichier, deux 
méthodes : 
1. Le tablespace concerné doit être mis en OFFLINE. 
Ensuite le fichier est déplacé par l'Os, et exécuter la 
requête ALTER TABLESPACE:
 Alter tablespace nom_tablespace rename datafile
'd:/oraclehome/oradata/nomfichier1' to 
'e:/oraclehome/oradata/nomfichier2‘;

11/04/2021 Pr. Chiheb CHAIEB © 25
Modifications des TableSpaces 

2. Démarrer la base de données en mode 
MOUNT,  déplacer le fichier avec l'OS et 
exécuter la requête ALTER DATABASE :
SQL> SHUTDOWN IMMEDIATE; 
SQL> STARTUP MOUNT 
‐‐ DEPLACER LE FICHIER VIA LE SYSTEME D’EXPLOITATION 
SQL> ALTER DATABASE 
RENAME FILE ‘H:\oradata\grh\grh.dbf’ to 
‘K:\oradata\grh\grh.dbf’; 
SQL> ALTER DATABASE OPEN; 

11/04/2021 Pr. Chiheb CHAIEB © 26
Modifications des TableSpaces 
Modifier le statut d'un tablespace
Alter  table  espace  nom_tablespace offline  [normal| 
immediate] ;
Alter tablespace nomtablespace online; 
Alter tablespace nom_tablespace read only | read write
Supprimer un tablespace : 
DROP  TABLESPACE  nom_tblspc [INCLUDING  CONTENTS 
[AND DATAFILES] CASCADE CONSTRAINTS] 
Le  mot  clé  INCLUDING  CONTENTS  est  obligatoire  si  le 
tablespace contient des tables/indexes. Ce mot clé force la 
suppression  de  ses  segments.  Le  mot  clé  AND  DATAFILES 
sert à supprimer les fichiers physiques aussi. Finalement, le 
mot  clé  CASCADE  CONSTRAINTS  permet  de  supprimer  les 
contraintes d’intégrité.
11/04/2021 Pr. Chiheb CHAIEB © 27
Informations sur les TableSpaces 
 Le dictionnaire de données inclut des vues qui fournissent des 
informations sur les structures logiques et physiques de 
stockage telles que :
 Les tablespaces permanents (DBA_TABLESPACES), 
 Les Tablespaces temporaires (DBA_TEMP_FILES)
 les fichiers de données (DBA_DATA_FILES),
 les segments et les extensions (DBA_SEGMENTS et 
DBA_EXTENTS). 
 Les quotas de chaque user sur les tablespaces auxquels il a 
droit (DBA_TS_QUOTAS)
 DBA_TABLESPACE_USAGE_METRICS : espace occupé par les 
tablespace
(TABLESPACE_NAME TABLESPACE_SIZE USED_SPACEUSED_P
ERCENT)
11/04/2021 Pr. Chiheb CHAIEB © 28
Gestion des Schémas Utilisateurs –
Profiles – Rôles–Privilèges 

11/04/2021 Pr. Chiheb CHAIEB © 29
Gestion des Utilisateurs de la BD  

 La gestion des utilisateurs est l’une des tâches les plus


basiques d’un administrateur.
 Lorsqu’on crée un utilisateur, on lui donne un nom de compte
(login) et on l’identifie par un mot de passe. On lui affecte un
tablespace par défaut, qui contiendra les segments qu’il
créera , et un tablespace temporaire qui contiendra les
segments temporaires utilisés lors des opérations couteuses
en termes d’espace mémoire.
 L’administrateur attribue aussi un profil à l’utilisateur, ce qui
revient à lui limiter certaines ressources système et lui
imposer une politique de gestion de mots de passe.
 Finalement, on lui attribuera des privilèges que ce soit
directement via un(des) rôle(s) incluant l’ensemble des
privilèges qu’il lui faut. Pr. Chiheb CHAIEB ©
11/04/2021 30
Les schémas et les utilisateurs  de la BD 

 Un schéma est une collection d'objets de base de


données appartenant à un utilisateur de la base ( qui est
identifié par un log/pwd) et ayant un espace de stockage
sur le tablespace,
 Un schéma correspond à un seul utilisateur , un
utilisateur lui correspond un seul schéma .
 Les objets de schéma sont les structures logiques qui
font directement référence aux données de la base
comme les tables, les vues, les séquences, les
procédures stockées, les synonymes, les index, des
clusters et des liens de base de données.
 En général, les objets de schéma incluent tout ce que
l'application crée dansPr. Chiheb CHAIEB ©
11/04/2021
la base de données 31
La Gestion des utilisateurs  

Création d'un utilisateur 
Pour créer un utilisateur, nous  spécifions un nom, 
un mot de passe, un tablespace permanent par 
défaut , un tablespace temporaire par défaut  , 
un profile et un quota sur le tablespace.
 create user nom_user identified by pwd_user
[default tablespace nom_tablespaceDF ] 
[temporary tablespace nom_tablespace_temp] 
[quota unlimited | entier  on nom_tablespace]  
[password expire] [account unlock|lock]
[PROFILE nom_prof] ;
11/04/2021 Pr. Chiheb CHAIEB © 32
La gestion des utilisateurs  

 L’utilisateur stocke par défaut ses segments dans


son tablespace par défaut et utilise un tablespace
temporaire (par défaut) pour la création de
segments temporaires.
 La clause QUOTA permet, comme son nom l’indique,
de définir un quota d’espace disque à ne pas
dépasser sur un certain tablespace nom_TS indiqué
(qui peut être autre que son default tablespace)
 Un utilisateur peut avoir accès sur un ou plusieurs
tablespace mais il a toujours un seul default
tablespace.
 Lors de la création d'un objet , ce dernier est créé sur
le tablespace par défaut si on le spécifie pas dans
11/04/2021
l'ordre create, Pr. Chiheb CHAIEB © 33
La gestion des utilisateurs  

 A partir de la version 11g, le pwd est sensible à la 
casse
 La clause PROFILE permet d’attribuer à l’utilisateur 
un profile nom_prof. 
 Un profil est un objet qui définit deux composantes :  
1. des limitations sur les ressources système tel que le 
CPU, la mémoire vive etc. et
2. Une politique de gestion de mot de passe

11/04/2021 Pr. Chiheb CHAIEB © 34
Modification des utilisateurs

 Modification d’un utilisateur
 alter user nom_user [identified by user_pwd_new] 
[default tablespace nom_tablespace]  [temporary
tablespace nom_tablespace] [quota n on tablespace]
[account lock|unlock] [profile nompProfil]
 Suppression utilisateur
Pour supprimer un utilisateur nous exécutions la 
commande suivante : 
 Drop user nom_user [cascade]
L'option cascade supprime tous les objets utilisateur 
avant sa suppression. 
11/04/2021 Pr. Chiheb CHAIEB © 35
Déconnecter un utilisateur de la session

 ALTER SYSTEM KILL SESSION 'N° de session, N° serie' 


Immediate; 
 Qui est actuellement connecté ?
 SELECT SID, SERIAL#, USERNAME, STATUS  FROM V$SESSION;

 ALTER SYSTEM DISCONNECT SESSION  '150,17'  IMMEDIATE ;
 Il est possible de déconnecter une session après sa transaction 
(s’il y a lieu). Dans ce cas, il faut changer IMMEDIATE par 
POST_TRANSACTION.
11/04/2021 Pr. Chiheb CHAIEB © 36
Informations sur les utilisateurs 
Les vues du dictionnaire de données qui fournissent 
des informations sur les utilisateurs : 
 DBA_USERS , All_Users : décrivents les users de la BD : 
user_name, default_tablespace, temporary_tablespace, profile ,,
 DBA_TS_QUOTAS. (TABLESPACE_NAME,USERNAME, 
BYTES, Max_Bytes )
 User_Tables / All_tables : info sur les tables de l'user
User_Objects : Info sur les objets de l'user 
(procédure, séquence, view, ,,,
DBA_PROFILES fournit les informations sur les profils 
utilisateurs
11/04/2021 Pr. Chiheb CHAIEB © 37
La Gestion des profils  
• L’objet PROFILE
 Un profil est une structure à deux composantes qui
correspond à un ou plusieurs utilisateurs.
 La première composante est un ensemble de
limitations de ressources système (Temps CPU,
Espace Mémoire nombre de tentation de login).
 La deuxième composante d’un profil consiste à
instaurer une politique de gestion de mots de passe.
 Ainsi, lorsqu’on assigne un profil à un utilisateur, ce
dernier aura des limitations sur les ressources du
système, et aura à suivre une certaine politique de
gestion de mot de passe.
11/04/2021 Pr. Chiheb CHAIEB © 38
Création d'un profil  
Une syntaxe simplifiée de création d’un profil est la 
suivante:
CREATE PROFILE nom_prof LIMIT 
[SESSION_PER_USER {val|UNLIMITED}] 
[CONNECT_TIME {val|UNLIMITED}] 
[IDLE_TIME {val|UNLIMITED}] 
[FAILED_LOGIN_ATTEMPTS {val|UNLIMITED}] 
[PASSWORD_LOCK_TIME {val|UNLIMITED}] 
[PASSWORD_LIFE_TIME {val|UNLIMITED}] 
[PASSWORD_GRACE_TIME {val|UNLIMITED}] 
 Il faut savoir que pour activer la limitation des ressources 
système, il faut que le paramètre correspondant soit activé 
RESOURCE_LIMIT=TRUE. 
11/04/2021 Pr. Chiheb CHAIEB © 39
La gestion des profils 

 SESSION_PER_USER est le nombre de sessions 
autorisées ouvertes simultanément par utilisateur. 
 CONNECT_TIME est la durée totale maximale de 
connexion en minutes. 
 IDLE_TIME est la durée maximale d’inactivité, définie 
en minutes. 
 CPU_PER_SESSION est la période de temps définie en 
centièmes de secondes pendant laquelle l’utilisateur 
peut détenir le CPU sur toute une session 

11/04/2021 Pr. Chiheb CHAIEB © 40
La gestion des profils  
La deuxième composante d’un profil qui concerne la mise en
place d’une stratégie de gestion de mots de passe :
 FAILED_LOGIN_ATTEMPTS : Nombre d'échecs de connexion
avant le verrouillage du compte
 PASSWORD_LOCK_TIME est la période de blocage du compte
définie en nombre de jours après échecs de connexion (n
nombre de jours, 1/1440 blocage de 1 minute
(1j=1440mn/1440mn =1 minute, 1/144=10mn ,,,)
 PASSWORD_LIFE_TIME est la durée de vie du mot de passe en
nombre de jours au‐delà de laquelle l’utilisateur doit le
modifier.
 PASSWORD_GRACE_TIME est une période de grâce qui donne
plus de temps (après PASSWORD_LIFE_TIME) à l’utilisateur
avant qu’il soit obligé définitivement de modifier son mot de
passe.
11/04/2021 Pr. Chiheb CHAIEB © 41
La gestion des profils  

 PASSWORD_REUSE_TIME : Nombre de jours pendant lesquels


le mot de passe ne peut pas être réutilisé
 PASSWORD_REUSE_Max : Nombre de changements de mot
de passe requis avant réutilisation du mot de passe actuel
 PASSWORD_VERIFY_FUNCTION : Les fonctions de vérification 
des mots de passe  doivent :
 Appartenir à l'utilisateur SYS
 Renvoyer une valeur booléenne (true ou false)
 Une fonction prédéfinie est fournie (default)

11/04/2021 Pr. Chiheb CHAIEB © 42
Gestion des profils  

 La fonction par défaut de vérification des mots de passe


fournie les restrictions suivantes :
 La longueur minimale est de quatre caractères
 Le mot de passe ne peut pas être identique au
nom utilisateur
 Le mot de passe doit comporter au moins un
caractère alphabétique, un chiffre et un caractère
spécial
 La différence entre le mot de passe et le précédent
doit être d'au moins trois lettres

11/04/2021 Pr. Chiheb CHAIEB © 43
Exemple de Création d'un profil

CREATE PROFILE app_user LIMIT 
SESSIONS_PER_USER          UNLIMITED 
CPU_PER_SESSION            UNLIMITED 
CPU_PER_CALL               3000 
CONNECT_TIME               45 
LOGICAL_READS_PER_SESSION  DEFAULT 
LOGICAL_READS_PER_CALL     1000 
PRIVATE_SGA                15K
COMPOSITE_LIMIT            5000000;

11/04/2021 Pr. Chiheb CHAIEB © 44
Exemple de Création d'un profil

CREATE PROFILE app_user2 LIMIT
FAILED_LOGIN_ATTEMPTS 5
PASSWORD_LIFE_TIME 60
PASSWORD_REUSE_TIME 60
PASSWORD_REUSE_MAX 5
PASSWORD_VERIFY_FUNCTION my_verify_function
PASSWORD_LOCK_TIME 1/24
PASSWORD_GRACE_TIME 10;

My_verify_function est une fonction stockée (créée avant 
définissant une stratégie de contrôle de mot de passe, le code 
ci‐après illustre un exemple de telle fonction.
11/04/2021 Pr. Chiheb CHAIEB © 45
Exemple de Création d'un profil

CREATE OR REPLACE FUNCTION sys.my_verify_function(
username VARCHAR2, password VARCHAR2, old_password VARCHAR2) RETURN BOOLEAN AS
BEGIN
IF password = username THEN
raise_application_error(‐20001, 'Meme nom que l_utilisateur');
END IF;
‐‐ Check for the minimum length of the password
IF length(password) < 7 THEN
raise_application_error(‐20002, 'Mot de Passe de moins de 7 caractères');
END IF; END;  /
 Select profile, limit from dba_profiles
where resource_name = 'PASSWORD_VERIFY_FUNCTION';
 Alter profile app_user2 limit
password_verify_function my_verification_function;

11/04/2021 Pr. Chiheb CHAIEB © 46
Assignation, Modification et Suppresion    
des Profils  

• Alter User userName Profile profileName
• Alter profile  nomProfile options   : modifie un profil 
indiqué en gardant les mêmes options que la 
création d'un profil
• Drop profile nomProfile : supprime le profil 
indiqué non encore affecté, Si un profil est déjà 
utilisé, il faut ajouter à la fin de la requête le mot 
clé CASCADE. 

11/04/2021 Pr. Chiheb CHAIEB © 47
PASSWORD_VERIFY_FUNCTION

• Ce paramètre devra contenir le nom d'une fonction PL/SQL 
qui servira à vérifier les mots de passe saisi. Vous pouvez 
utiliser celle fournie par Oracle (script utlpwdmg.sql). La 
fonction fournie en argument devra avoir cette définition :

<nom de la fonction> (username varchar2, password
varchar2, old_password varchar2) RETURN boolean

Si vous ne souhaitez pas utiliser de fonction de vérification 
utiliser la valeur NULL. 

11/04/2021 Pr. Chiheb CHAIEB © 48
Gestion des Rôles et des Privilèges

11/04/2021 Pr. Chiheb CHAIEB © 49
Gestion des Rôles et des Privilèges

 Les privilèges sont classés en deux groupes : les 
privilèges systèmes et les privilèges objet. Les privilèges 
systèmes sont octroyés par l'administrateur aux 
utilisateurs et qui concerne des privilèges sur la totalité 
de la base de données, alors que les privilèges objets 
sont octroyés d'un utilisateur  à un autre sur un objet 
(une table, une vue, une proc stockée etc.). 
 Les privilèges systèmes peuvent être regroupés en des 
ensembles appelés rôles. 
 Les rôles sont créés par l'administrateur dont l'objectif 
de mieux organiser la sécurité d'accès à la base. 
11/04/2021 Pr. Chiheb CHAIEB © 50
Création des Rôles 

 Create role nom_rôle not identified| identified by 


mot_passe ;
 Agrégation / retrait des privilèges systèmes aux 
rôles 
 Grant create session ,select any view to 
user_ordinaire; 
 Revoke alter user from role_litteDBA; 

11/04/2021 Pr. Chiheb CHAIEB © 51
Gestion des Rôles et des Privilèges

Rôles Prédéfinis par Oracle


Les rôles suivants sont prédéfinis:
Connect
Resource
Dba
Exp_Full_Ddatabase
Imp_Full_Database
Delete_Catalog_Role
Execute_Catalog_Role
Select_Catalog_Role
A partir de la version 11g,Express Le rôle Connect
attribué à un utilisateur, lui autorise uniquement la
Création d'une session
11/04/2021 Pr. Chiheb CHAIEB © 52
Gestion des Rôles et des Privilèges

Rôle Resource (oracle 11g PE )


• CREATE SEQUENCE
• CREATE TRIGGER
• CREATE CLUSTER
• CREATE PROCEDURE
• CREATE TYPE
• CREATE OPERATOR
• CREATE TABLE
• CREATE INDEXTYPE
 Accès sur tous les tablespaces users (à constater!!),
Pour afficher les privilèges d’un rôle : 
• Select * from DBA_SYS_PRIVS where grantee='RESOURCE' ;
11/04/2021 Pr. Chiheb CHAIEB © 53
Gestion des Privilèges 

Privilèges systèmes
Les privilèges systèmes viennent pour ajouter certains privilèges
aux utilisateurs ordinaux ayant les rôles de base connect et
resource. Ces derniers deviennent par conséquent des
utilisateurs privilégiés.
Syntaxe :  Grant privilège‐système to role/user With
Admin Option 
 L'option With Admin Option autorise celui qui octroie ce 
privilège à le transmettre vers d'autres users.
Exemple : GRANT create session, create Table, create
sequence, create view TO Commercial;

11/04/2021 Pr. Chiheb CHAIEB © 54
Gestion des Privilèges 

Exemple des Privilèges Systèmes :


• La Mise à Jour des tables: Create  /alter/ drop any 
table,
• La Mise à jour des données de toutes les tables: 
select any table, delete any table, insert any table , 
update any table.
• MAJ des vues : create / select /drop any view
• MAJ des Tables Spaces : create tablespace, alter 
tablespace et  drop tablespace. 
• MAJ des utilisateurs : create user, alter user, drop 
user
• Autres : Procédures , triggers …  selon les versions 
d’oracle
11/04/2021 Pr. Chiheb CHAIEB © 55
Gestion des Privilèges systèmes

 Liste des Privilèges Par Catégorie

Catégorie : Table 

CREATE TABLE Select Any Table

CREATE ANY TABLE Delete Any Table

ALTER ANY TABLE Update Any Table

DROP ANY TABLE Insert Any Table

BACKUP  ANY TABLE Lock Any Table

11/04/2021 Pr. Chiheb CHAIEB © 56
Gestion des Privilèges systèmes

Les Vues 
Create View Créer une vue dans son schéma

Create Any View Require autres Porvilèges (select any table, update any


table, insert any table, ..)

DROP ANY VIEW Supprimer toutes les vues des autres schémas

PROCEDURE
CREATE PROCEDURE Créer des procedures stockées, fonctions, et packages .
Créer des procedures stockées, fonctions, et packages dans tous les 
schemas. (suppose ALTER ANY TABLE, BACKUP ANY TABLE, DROP ANY 
CREATE ANY PROCEDURE
TABLE, SELECT ANY TABLE, INSERT ANY TABLE, UPDATE ANY TABLE, DELETE 
ANY TABLE, ou GRANT ANY TABLE.)
Compiler toutes les procedures stockées, fonction, ou packages dans tous 
ALTER ANY PROCEDURE
les schemas.
Supprimer toutes les procedures, function, ou package stockés dans tous 
DROP ANY PROCEDURE
les schema.
EXECUTE ANY PROCEDURE Executer toutes les procedures ou functions dans tous les schemas

11/04/2021 Pr. Chiheb CHAIEB © 57
Gestion des Privilèges systèmes

TRIGGER
CREATE TRIGGER crée un trigger in own schema.
Créer toutes les trigger dans tous les schémas associated
CREATE ANY TRIGGER
with toutes les table dans tous les schémas.
Enable, disable, ou compile toutes les trigger dans tous les 
ALTER ANY TRIGGER
schémas.
DROP ANY TRIGGER Supprimer toutes les trigger dans tous les schémas.

SEQUENCE
CREATE SEQUENCE crée une séquence dans son schéma.

CREATE ANY SEQUENCE Créer toutes les séquences dans tous les schémas.

ALTER ANY SEQUENCE Modifier toutes les séquences dans tous les schémas.

DROP ANY SEQUENCE Supprimer toutes les séquences dans tous les schémas.

SELECT ANY SEQUENCE Référence toutes les séquences dans tous les schémas.

11/04/2021 Pr. Chiheb CHAIEB © 58
Les Privilèges Objets
 Permettent à un propriétaire d'objets (ou un
administrateur) de céder certains privilèges d'accès à
d'autres utilisateurs sur ces objets. Nous vous rappelons
que le propriétaire de l'objet est celui qui l'a créé et par
conséquent il a tous les privilèges sur lui.
Syntaxe :  Grant Privilège1 [, privilège2…] On 
nom_table|vue to nom_user1,[ nom_user2, ,Public,Role] 
[WITH GRANT OPTION] ; 
 WITH GRANT OPTION permet à l’utilisateur de donner les 
privilèges objets à d’autres utilisateurs et rôles
Exemple :
 Grant Select, Insert on Projets to User1, User2, roleVendor
 GRANT update (nomProjet, budgetProjet) ON Projets TO 
scott, manager;
11/04/2021 Pr. Chiheb CHAIEB © 59
Les Privilèges Objets

 Les privilèges prennent l’une des valeurs suivantes :


– Alter : modification de la structure d'une table.
– Delete : suppression des données à partir d'une table
ou une vue
– Insert : insérer des données dans une table
– Select : consulter les données d'une table|vue
– Update(col1, col2, .. ): mettre à jour les données d'une
table ou une ou plusieurs colonnes
 Exemple :
Grant select on T_production to marketing , commercial ;

11/04/2021 Pr. Chiheb CHAIEB © 60
Les Privilèges Objets

11/04/2021 Pr. Chiheb CHAIEB © 61
Les Privilèges Objets

 Vous pouvez assigner les privilèges sur un objet s’il est


dans votre schéma ou si le privilège sur l’objet en
question vous a été assigné en utilisant WITH GRANT
OPTION.
 Le propriétaire de l’objet peut accorder n’importe quel
privilège sur cet objet à tout utilisateur ou rôle de la base
de données. Le rôle est soit créé par l'admin ou l'user,
 Exemple : grant select on Article to roleOp;
Grant update on commercial.facture to roleOp;
 Le propriétaire de l’objet acquière automatiquement tous
les privilèges objet sur ce dernier.

11/04/2021 Pr. Chiheb CHAIEB © 62
Informations sur les Privilèges ‐ Rôles

 SESSION_Privs / USER_SYS_PRIVS : liste des les privilèges  


systèmes de l'user actuel
 User_Tab_Privs : USER view lists grants on all objects (table‐
views) where the current user is the grantee.
 USER_TAB_PRIVS_MADE : privilèges objets (privilege)  accordés 
par l'user courant (grantor) vers d'autres users (grantee) : 
(GRANTEE , TABLE_NAME, GRANTOR ,  PRIVILEGE) 
 USER_TAB_PRIVS_RECD : privilèges objets (privilege)  qui sont 
accordés vers l'user courant sur des objets d'autres users
 DBA_Tab_Privs : Vue DBA avec la liste des droits sur tous les 
objets (table‐vues)  dans la base de données (grantee,owner, 
table_name,grantor, privilège)
11/04/2021 Pr. Chiheb CHAIEB © 63
Informations sur les Privilèges ‐ Rôles

 DBA_Roles : (role, password_required) : les rôles disponibles
 DBA_Role_Privs : (GRANTEE ,  GRANTED_ROLE , 
ADMIN_OPTION ,  DEFAULT_ROLE )  grantee est le nom user
 DBA_Sys_Privs (GRANTEE ,PRIVILEGE, ADMIN_OPTION )
grantee :  est le nom de l'utilisateur auquel est accordé le privilege 
avec ou sans admin_option (pouvoir le transmettre à d'autres
utilisateurs )
 Role_Sys_Privs : This view contains information about system 
privileges granted to roles. Information is provided only about 
roles to which the user has access
 SESSION_ROLES : This view lists the roles that are currently 
enabled to the user.

11/04/2021 Pr. Chiheb CHAIEB © 64
Annexes

• TD
• Exemple de procédure de contrôle de mot de 
passe 
• Références du chapitre  (webographies) 

11/04/2021 Pr. Chiheb CHAIEB © 65
TD  DBA  : Exposition Oeuvres

• Technique ( idTech number(3) primary key , libTech Varchar2(20) );


• Musee( idMus number(3) primary key, nomMus Varchar2(20), ville Varchar2(20));
• Artiste( idArt number(4) primary key, nomArt Varchar2(20), paysArt Varchar2(20));
• Oeuvre( idOeuv number(4) primary key, titreOeuv Varchar2(20), idArt constraint
fkOeuvArt references Artiste(idArt), idTech constraint fkOeuvTech references
Technique(idTech));
• Exposition( idOeuv constraint fkExpoOeuv references Oeuvre(idOeuv) , datedeb Date, 
datefin Date , prix number , idMus constraint fkExpoMus references Musee(idMus));
 Créer le schéma nommé AdminExpo ayant le rôle AdminDB composé des privilèges  
create session, create table et create procedure.
 Créer la base de données composée des tables ci‐dessous en utilisant le fichier Script 
fournis createBDExpo.sql dans le schéma AdminExpo. 
Examiner les tables crées et les données insérées par le fichier script fournis. 

11/04/2021 Pr. Chiheb CHAIEB © 66
TD DBA  : Exposition Oeuvres

 Créer le schéma  ManageExpo/expo avec le privilège initial de base create
session 
 Cet user dispose d'une application ayant les besoins suivants : 
• Consulter tous les musées et les Artistes sans faire des MAJ sur leurs données. 
De cet fait lui créer ses propres vues nommées respectivement Vartistes, 
Vmusees en tenant compte des privilèges systèmes et objets à ajouter. 
• Consultation , Ajout et Modification des Oeuvres depuis sa propre table 
nommée  TOeuvre synonyme  de la table Expo.Oeuvre.  Lui ajouter les 
privilèges adéquats. 
• Ajouter une Œuvre depuis Toeuvre,  vérifier qu'elle a été ajoutée à la table 
Œuvre   
• Consulter les Expositions depuis une  vue  TExpositions ( musee, oeuvre, 
dateExp, duree ) , où musee est le nom de la musée , œuvre est le titre de 
l'œuvre, dateExp est la date début de l'expostion et durée est la durée calculée 
comme 'dateFin‐ dateDeb .  donner le privilège système (create view ) et les 
privilèges objets adéquats permettant à l'user ManageExpo de créer cette vue.  

11/04/2021 Pr. Chiheb CHAIEB © 67
Exemple de fonction verif PWD
CREATE OR REPLACE FUNCTION Verify_Password_Gest
(username varchar2,
password varchar2,
old_password varchar2)
RETURN boolean IS 
n boolean;
m integer;
differ integer;
isdigit boolean;
ischar boolean;
ispunct boolean;
digitarray varchar2(20);
punctarray varchar2(25);
chararray varchar2(52);

BEGIN 
digitarray:= '0123456789';
chararray:= 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
punctarray:='!"#$%&()``*+,‐/:;<=>?_';

‐‐ Check if the password is same as the username


IF password = username THEN
raise_application_error(‐20001, 'Meme nom que l_utilisateur');
END IF;

‐‐ Check for the minimum length of the password
IF length(password) < 7 THEN
raise_application_error(‐20002, 'Mot de Passe de moins de 6 caractères');
END IF;

11/04/2021 Pr. Chiheb CHAIEB © 68
Suite

‐‐ Check if the password is too simple. A dictionary of words may be


‐‐ maintained and a check may be made so as not to allow the words
‐‐ that are too simple for the password.
IF NLS_LOWER(password) IN ('GEST') THEN
raise_application_error(‐20002, 'Vous ne pouvez commencer par les lettres Gest');
END IF;

‐‐ Check if the password contains at least one letter, one digit and one


‐‐ punctuation mark.
‐‐ 1. Check for the digit
isdigit:=FALSE;
m := length(password);
FOR i IN 1..10 LOOP 
FOR j IN 1..m LOOP 
IF substr(password,j,1) = substr(digitarray,i,1) THEN
isdigit:=TRUE;
GOTO endsearch;
END IF;
END LOOP;
END LOOP;
IF isdigit = FALSE THEN
raise_application_error(‐20003, 'Votre Mot de passe doit contenir au moins 1 chiffre');
END IF;

11/04/2021 Pr. Chiheb CHAIEB © 69
<<endsearch>>
‐‐ Check if the password differs from the previous password by at least
‐‐ 4 letters
IF old_password = '' THEN
raise_application_error(‐20004, 'Old password is null');
END IF;
‐‐ Everything is fine; return TRUE ;   
differ := length(old_password) ‐ length(password);

IF abs(differ) < 4 THEN
IF length(password) < length(old_password) THEN
m := length(password);
ELSE
m := length(old_password);
END IF;
differ := abs(differ);
FOR i IN 1..m LOOP
IF substr(password,i,1) != substr(old_password,i,1) THEN
differ := differ + 1;
END IF;
END LOOP;
IF differ < 4 THEN
raise_application_error(‐20004, 'Votre nouveau mot de passe doit differrer de 4 caractères par rapport au précédent');
END IF;
END IF;
‐‐ Everything is fine; return TRUE ;   
RETURN(TRUE);
END;

11/04/2021 Pr. Chiheb CHAIEB © 70
Références 

• https://oracle.developpez.com/guide/architecture/tablespaces/
• https://docs.oracle.com/cd/B10501_01/server.920/a96524/c04space.htm#
1003
• https://oracle.developpez.com/guide/
• http://dbaoraclesql.canalblog.com/archives/2017/07/28/35514365.html
• http://www.dba‐oracle.com/t_default_tablespace.htm
• https://blog.developpez.com/pachot/tk_optimal_pctfree_initrans/
• https://oracle.developpez.com/faq/?page=Les‐Tablespaces‐et‐autres‐
fichiers
• https://oracle.developpez.com/guide/architecture/tablespaces/
• https://www.developpez.net/forums/d23440/bases‐
donnees/oracle/fonction‐verifiant‐passe/
• https://oracle.developpez.com/guide/administration/adminprofile/

11/04/2021 Pr. Chiheb CHAIEB © 71

Vous aimerez peut-être aussi