: 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
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
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
11/04/2021 Pr. Chiheb CHAIEB © 8
Gestion de l'extension des Tablespaces
Permanents
11/04/2021 Pr. Chiheb CHAIEB © 9
Gestion de l'extension des Tablespaces
Permanents
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
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
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
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
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 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
11/04/2021 Pr. Chiheb CHAIEB © 42
Gestion des profils
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
11/04/2021 Pr. Chiheb CHAIEB © 51
Gestion des Rôles et 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
Catégorie : 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
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
11/04/2021 Pr. Chiheb CHAIEB © 60
Les Privilèges Objets
11/04/2021 Pr. Chiheb CHAIEB © 61
Les Privilèges Objets
11/04/2021 Pr. Chiheb CHAIEB © 62
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
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 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
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