Vous êtes sur la page 1sur 84

Administration et Sécurité

des Bases de Données

Année Universitaire : 2019-2020 1


Gestion des utilisateurs

2
Utilisateurs et sécurité

Verrouillage Tablespace
de compte par défaut

Mécanisme
Tablespace
d'authen-
temporaire
tification
Domaine de
sécurité
Privilèges Quotas de
de rôle tablespace

Privilèges Limites
directs relatives aux
ressources

Le domaine de sécurité définit les paramètres appliqués à l'utilisateur.


3
Schéma de base de données

• Un schéma est un ensemble nommé Objets de schéma


d'objets. Tables
• Lorsqu'un utilisateur est créé, un schéma Déclencheurs
correspondant est également créé.
Contraintes
• Un utilisateur ne peut être associé qu'à
Index
un seul schéma.
Vues
Séquences
Programmes stockés
Synonymes
Types de données définis par
l'utilisateur
Liens de base de données

4
Liste de contrôle pour la création des utilisateurs

– Identifier les tablespaces dans lesquels l'utilisateur a besoin de


stocker des objets.

– Déterminer les quotas applicables pour chaque tablespace.

– Affecter un tablespace par défaut et un tablespace temporaire.

– Créer un utilisateur.

– Accorder des privilèges et des rôles à l'utilisateur.

5
Création d’un utilisateur

Syntaxe :
Utilisez la commande suivante pour créer un utilisateur :
CREATE USER user
IDENTIFIED {BY password | EXTERNALLY}
[ DEFAULT TABLESPACE tablespace ]
[ TEMPORARY TABLESPACE tablespace ]
[ QUOTA {integer [K | M ] | UNLIMITED } ON
tablespace
[ QUOTA {integer [K | M ] | UNLIMITED } ON
tablespace ]...]
[ PASSWORD EXPIRE ]
[ ACCOUNT { LOCK | UNLOCK }]
[ PROFILE { profile | DEFAULT }]

6
Où :
• BY password indique que l'utilisateur est authentifié par la base de données et qu'il doit fournir
un mot de passe pour se connecter.
• EXTERNALLY indique que l'utilisateur est authentifié par le système d'exploitation.
• GLOBALLY AS indique que l'utilisateur est authentifié de façon globale.
• DEFAULT TABLESPACE ou TEMPORARY TABLESPACE désigne le tablespace par défaut ou le
tablespace temporaire de l'utilisateur.
• QUOTA définit l'espace maximum alloué aux objets détenus par l'utilisateur dans le tablespace (le
quota peut être défini par un entier représentant des octets ou des kilo-octets et des mégaoctets.
Le mot-clé UNLIMITED permet d'indiquer que les objets détenus par l'utilisateur peuvent utiliser
l'ensemble de l'espace disponible du tablespace. Par défaut, aucun quota de tablespace n'est
affecté aux utilisateurs).
• PASSWORD EXPIRE force l'utilisateur à réinitialiser le mot de passe lorsqu'il se connecte à la base
de données à l'aide de SQL*Plus
• ACCOUNT LOCK/UNLOCK permet de verrouiller ou de déverrouiller explicitement le compte de
l'utilisateur (la valeur par défaut est UNLOCK).
• PROFILE permet de contrôler l'utilisation des ressources et de définir le mécanisme de contrôle
par mot de passe à appliquer à l'utilisateur.
• Vous devez impérativement utiliser une méthode d'authentification par mot de passe. Si vous
définissez un mot de passe, celui-ci est géré par le serveur Oracle dans le dictionnaire de données.
Les mécanismes de contrôle par mot de passe fournis par le serveur Oracle sont disponibles
lorsque les utilisateurs sont authentifiés par le serveur.

7
Création d’un utilisateur : authentification par la
base de données
• Définir le mot de passe initial

CREATE USER aaron


IDENTIFIED BY soccer
DEFAULT TABLESPACE data
DEFAULT TEMPORARY TABLESPACE temp
QUOTA 15M ON data
QUOTA 10M ON users
PASSWORD EXPIRE;

8
Créer un utilisateur : authentification par le système
d'exploitation
• Le paramètre d'initialisation OS_AUTHENT_PREFIX indique le format des
noms utilisateur.
• Sa valeur par défaut est OPS$.
CREATE USER aaron
IDENTIFIED EXTERNALLY
DEFAULT TABLESPACE USERS
TEMPORARY TABLESPACE temp
QUOTA 15m ON data
PASSWORD EXPIRE;

9
Modifier les quotas de tablespace d'un utilisateur
On peut modifier les quotas de tablespace d'un utilisateur dans les cas
suivants :
- lorsque la taille des tables appartenant à l'utilisateur augmente de manière
imprévue;
- lorsqu'une application est étendue et nécessite des tables ou des index
supplémentaires;
- lorsque les objets sont réorganisés et placés dans des tablespaces
différents.
On Procède comme suit pour modifier le quota de tablespace d'un
utilisateur :
ALTER USER aaron QUOTA 0 ON USERS;

Remarque : Si vous définissez un quota de 0, les objets de l'utilisateur sont conservés


dans le tablespace révoqué, mais aucun nouvel espace ne peut leur être alloué.
10
Modifier les quotas de tablespace d'un utilisateur
Une autre commande pour modifier les quotas d'espace de tablespace ou redéfinir
les tablespaces :

ALTER USER user


[ DEFAULT TABLESPACE tablespace]
[ TEMPORARY TABLESPACE tablespace]
[ QUOTA {integer [K | M] | UNLIMITED } ON
tablespace
[ QUOTA {integer [K | M] | UNLIMITED } ON
tablespace ] ...]

Les options non modifiées ne sont pas affectées.

Remarque : Le privilège UNLIMITED TABLESPACE est prioritaire sur les paramètres


des quotas.

11
Supprimer un utilisateur

On supprime un utilisateur par la commande :

DROP USER aaron;

La clause CASCADE permet de supprimer tous les objets d'un schéma.

DROP USER aaron CASCADE;

Remarque : Vous ne pouvez pas supprimer les utilisateurs qui sont connectés au
serveur Oracle.

12
Obtenir des informations sur les utilisateurs
• Interrogez les vues suivantes pour obtenir des informations sur les
utilisateurs :

– DBA_USERS
– DBA_TS_QUOTAS

Exemples :

SELECT username, default_tablespace FROM dba_users;

SELECT * FROM DBA_TS_QUOTAS;

13
Gestion des privilèges

14
Privilèges

Un privilège est un droit d'exécution d'un type donné d'instruction SQL


ou un droit d'accès à l'objet d'un autre utilisateur. Il autorise son
détenteur à :

• se connecter à une base de données;


• créer une table;
• sélectionner des lignes dans la table d'un autre utilisateur;
• exécuter la procédure stockée d'un autre utilisateur.

15
Gérer les privilèges

Il existe deux types de privilèges utilisateur Oracle :

- Système : permet aux utilisateurs de réaliser certaines actions dans la base


de données.

- Objet : permet aux utilisateurs d'accéder à un objet donné et de le


manipuler.

16
Privilèges système

- Il existe plus de 100 privilèges système différents;

- Le mot-clé ANY signifie que les utilisateurs disposent du privilège de


gestion d'objets dans n'importe quel schéma;

- La commande GRANT permet d'accorder un privilège à un utilisateur ou


un groupe d'utilisateurs;

- La commande REVOKE supprime les privilèges.

17
Privilèges système : exemples
Catégorie Exemples
INDEX CREATE ANY INDEX
ALTER ANY INDEX
DROP ANY INDEX
TABLE CREATE TABLE
CREATE ANY TABLE
ALTER ANY TABLE
DROP ANY TABLE
SELECT ANY TABLE
UPDATE ANY TABLE
DELETE ANY TABLE
SESSION CREATE SESSION
ALTER SESSION
RESTRICTED SESSION
TABLESPACE CREATE TABLESPACE
ALTER TABLESPACE
DROP TABLESPACE
UNLIMITED TABLESPACE

18
Accorder des privilèges système

Utilisez la commande GRANT pour accorder des privilèges système.

GRANT CREATE SESSION TO emi;

Le bénéficiaire peut accorder le privilège système à d'autres


utilisateurs grâce à l'option ADMIN.

GRANT CREATE SESSION TO emi WITH ADMIN OPTION;

19
Accorder des privilèges système
• On utilise l'instruction SQL GRANT pour accorder des privilèges système
aux utilisateurs.
• Le bénéficiaire peut ensuite accorder un privilège système à d'autres
utilisateurs avec l'option ADMIN, mais cette opération doit s'effectuer
avec précaution, car ces privilèges sont généralement réservés aux
administrateurs de la sécurité.
GRANT {system_privilege|role}
[, {system_privilege|role} ]...
TO {user|role|PUBLIC}
[, {user|role|PUBLIC} ]...
[WITH ADMIN OPTION]
Où :
– system_privilege : désigne le privilège système à accorder.
– role : désigne le nom du rôle à accorder.
– PUBLIC : accorde le privilège système à tous les utilisateurs.
– WITH ADMIN OPTION : autorise le bénéficiaire à accorder son
privilège ou son rôle à d'autres utilisateurs ou rôles.
20
Privilèges SYSDBA et SYSOPER

Catégorie Exemples
SYSOPER STARTUP
SHUTDOWN
ALTER DATABASE OPEN | MOUNT
ALTER DATABASE BACKUP CONTROLFILE TO
RECOVER DATABASE
ALTER DATABASE ARCHIVELOG
RESTRICTED SESSION
SYSDBA SYSOPER PRIVILEGES WITH ADMIN OPTION
CREATE DATABASE
ALTER TABLESPACE BEGIN/END BACKUP
RESTRICTED SESSION
RECOVER DATABASE UNTIL

21
Restrictions relatives aux privilèges système
Le paramètre O7_DICTIONARY_ACCESSIBILITY contrôle les restrictions
relatives aux privilèges système.

– Il permet d'accéder aux objets du schéma SYS s'il possède la valeur


TRUE;
– grâce à la valeur par défaut FALSE, les privilèges système qui
permettent d'accéder à n'importe quel schéma interdisent l'accès
au schéma SYS (Par exemple, si O7_DICTIONARY_ACCESSIBILITY est
défini sur false, le privilège SELECT ANY TABLE permet d'accéder
aux vues ou aux tables de tous les schémas, à l'exception du
schéma SYS (l'accès aux tables du dictionnaire de données est
impossible). Le privilège système EXECUTE ANY PROCEDURE
permet d'accéder aux procédures de tout schéma à l'exception du
schéma SYS).
22
Restrictions relatives aux privilèges système
La commande ci-dessous configure le paramètre
O7_DICTIONARY_ACCESSIBILITY pour qu'il prenne effet au prochain
démarrage du système.

alter system set O7_dictionary_accessibility = FALSE scope = spfile;

23
Révoquer des privilèges système

– Utilisez la commande REVOKE pour révoquer un privilège


système accordé à un utilisateur.
– Les utilisateurs qui disposent d'un privilège système avec
l'option ADMIN OPTION peuvent révoquer des privilèges
système.
– Seuls les privilèges accordés via la commande GRANT peuvent
être révoqués.

REVOKE CREATE TABLE FROM emi;

24
Révoquer des privilèges système

On peut révoquer des privilèges système à l'aide de l'instruction SQL


REVOKE. Tout utilisateur disposant d'un privilège système avec l'option
ADMIN OPTION peut révoquer le privilège de n'importe quel autre
utilisateur de la base de données, même si ce n'est pas lui qui l'a
accordé.
REVOKE {system_privilege|role}
[, {system_privilege|role} ]...
FROM {user|role|PUBLIC}
[, {user|role|PUBLIC} ]...
Remarque :
La commande REVOKE permet uniquement la révocation des privilèges
système accordés directement à l'aide de la commande GRANT.

25
Révoquer des privilèges système accordés avec
l'option ADMIN OPTION
DBA Jeff Emi

GRANT

DBA Jeff Emi


REVOKE

26
Scénario/Révoquer des privilèges système

La révocation d'un privilège système n'entraîne aucun effet de cascade.

Suivez les étapes de l'exemple suivant :

– 1. L'administrateur de base de données accorde le privilège système CREATE


TABLE à Jeff avec l'option ADMIN OPTION.
– 2. Jeff crée une table.
– 3. Jeff accorde le privilège système CREATE TABLE à Emi.
– 4. Emi crée une table.
– 5. L'administrateur de base de données révoque le privilège système CREATE
TABLE précédemment accordé à Jeff.
Résultat :
– La table de Jeff n'est pas supprimée, mais il ne peut plus créer de table.
– La table d'Emi n'est pas supprimée et cette dernière dispose toujours du
privilège système CREATE TABLE.

27
Privilèges objet

Un privilège objet est un droit autorisant la réalisation d'une action sur un objet ( table, vue,
séquence, procédure…). Le tableau répertorie les privilèges correspondant aux différents objets.

28
Accorder des privilèges objet
On accorder des privilèges objet à l’aide de la commande :
GRANT { object_privilege [(column_list)]
[, object_privilege [(column_list)] ]...
|ALL [PRIVILEGES]}
ON [schema.]object
TO {user|role|PUBLIC}[, {user|role|PUBLIC} ]...
[WITH GRANT OPTION]

Où :

– object_privilege désigne le privilège objet à accorder.


– column_list désigne une colonne de table ou de vue (cette valeur ne peut
être définie que lors de l'octroi du privilège INSERT, REFERENCES ou
UPDATE).
– ALL accorde tous les privilèges objet qui ont été accordés avec l'option
WITH GRANT OPTION.
– ON object identifie l'objet sur lequel les privilèges doivent être accordés.
– WITH GRANT OPTION autorise le bénéficiaire à accorder ses privilèges
objet à d'autres utilisateurs ou rôles.
29
Accorder des privilèges objet

L'objet doit se trouver dans votre schéma ou vous devez avoir reçu le
privilège avec l'option GRANT OPTION.

Exemples :

GRANT EXECUTE ON dbms_output TO jeff;

GRANT UPDATE ON emi.customers TO jeff WITH GRANT OPTION;

30
Révoquer des privilèges objet
L'instruction REVOKE permet de révoquer des privilèges objet. L'utilisateur
qui révoque un privilège objet doit être celui qui l'a accordé :
REVOKE { object_privilege
[, object_privilege ]...
| ALL [PRIVILEGES] }
ON [schema.]object
FROM {user|role|PUBLIC}
[, {user|role|PUBLIC} ]...
[CASCADE CONSTRAINTS]

31
Révoquer des privilèges objet
Où :
– object_privilege désigne le privilège objet à révoquer.
– ALL révoque tous les privilèges objet accordés à l'utilisateur.
– ON désigne l'objet sur lequel les privilèges objet doivent être révoqués.
– FROM identifie les utilisateurs ou les rôles dont les privilèges objet sont
révoqués.
– CASCADE CONSTRAINTS supprime toutes les contraintes d'intégrité
référentielle définies à l'aide du privilège REFERENCES ou ALL.
Restriction :
Les utilisateurs qui accordent des privilèges objet peuvent les révoquer
uniquement aux utilisateurs auxquels ils les ont accordés.

Exemple :
REVOKE SELECT ON emi.orders FROM jeff;

32
Révoquer les privilèges objet accordés avec
l'option WITH GRANT OPTION
Bob Jeff Emi
GRANT

REVOKE Bob Jeff Emi

33
Révoquer des privilèges objet accordés avec
l'option WITH GRANT OPTION
La révocation de privilèges objet accordés avec l'option WITH GRANT
OPTION provoque également un effet de cascade.

Scénario
Jeff reçoit le privilège objet SELECT sur la table EMPLOYEES avec
l'option GRANT OPTION.
Jeff accorde ce privilège sur la table EMPLOYEES à Emi.
Par la suite, le privilège SELECT de Jeff est révoqué en entraînant la
révocation du privilège d'Emi.

34
Obtenir des informations sur les privilèges
Interrogez les vues suivantes pour obtenir des informations sur les
privilèges :

– DBA_SYS_PRIVS affiche la liste des privilèges système accordés aux


utilisateurs et aux rôles.

– SESSION_PRIVS affiche la liste des privilèges auxquels l'utilisateur a


accès.

– DBA_TAB_PRIVS affiche la liste de tous les octrois de privilèges sur les


objets de la base de données.

– DBA_COL_PRIVS décrit tous les octrois de privilèges sur les colonnes


de la base de données.
35
Gestion des Rôles

36
Avantages des rôles

Un rôle est un regroupement de privilèges. Une fois créé, il peut


être assigné à un utilisateur ou à un autre rôle.

les avantages sont :

• La gestion simplifiée des privilèges;

• Gestion dynamique des privilèges;

• Disponibilité sélective des privilèges (L’activation et la désactivation


des rôles permettent d’accorder ou retirer temporairement des privilèges ).

37
Avantages des rôles

38
Création des rôles
Pour créer un rôle

- Non identifié :
CREATE ROLE oe_clerk;

- Identifié par mot de passe :


CREATE ROLE hr_clerk IDENTIFIED BY bonus;

- Identifié de manière externe :

CREATE ROLE hr_manager IDENTIFIED EXTERNALLY;

39
Rôles prédéfinis

Rôles Description
Il regroupe les privilèges System : ALTER
SESSION, CREATE CLUSTER, CREATE
CONNECT DATABASE LINK, CREATE SEQUENCE,
CREATE SESSION, CREATE SYNONYM,
CREATE TABLE, CREATE VIEW
CREATE CLUSTER, CREATE INDEXTYPE,
RESOURCE CREATE OPERATOR, CREATE PROCEDURE,
CREATE SEQUENCE, CREATE TABLE,
CREATE TRIGGER, CREATE TYPE
DBA Tous les privilèges System avec l’option
ADMIN

40
Rôles prédéfinis

Rôles Description
EXP_FULL_DATABASE Privilèges d'export de la base de données
IMP_FULL_DATABASE Privilèges d'import de la base de données
DELETE_CATALOG_ROLE Privilèges DELETE sur les tables du
dictionnaire de données
EXECUTE_CATALOG_ROLE Privilège EXECUTE sur les packages du
dictionnaire de données
SELECT_CATALOG_ROLE Privilège SELECT sur les tables du
dictionnaire de données

41
Modifier des rôles

On Utilise ALTER ROLE pour modifier la méthode d'authentification.


- Cette commande requiert l'option ADMIN ou le privilège ALTER ANY ROLE.

ALTER ROLE oe_clerk IDENTIFIED BY order;

ALTER ROLE hr_clerk IDENTIFIED EXTERNALLY;

ALTER ROLE hr_manager NOT IDENTIFIED;

42
Accorder des privilèges à un rôle

Pour accorder privilège à un rôle, on utilise la commande GRANT

GRANT select, insert, update, delete ON Table1 TO test_role;

43
Révoquer des privilèges d’un rôle

Pour révoquer des privilèges d’un rôle, on utilise la commande


REVOKE

Revoke select, insert, update, delete ON Table1 FROM test_role;

44
Accorder des rôles

Pour accorder un rôle, on utilise la commande GRANT :


- Rôle à un utilisateur

GRANT oe_clerk TO scott;

- Rôle à un autre rôle

GRANT hr_clerk TO hr_manager;

- Rôle un autre utilisateur avec l’option ADMI

GRANT hr_manager TO scott WITH ADMIN OPTION;


45
Rôles par défaut
- Un rôle par défaut signifie que le rôle est toujours activé pour la
session en cours à la connexion.

- Un utilisateur peut recevoir un ou plusieurs rôles, ces rôles sont


considérés automatiquement comme des rôles par défaut, et ils sont
activés.

grant role1, role2 to user1;


Select * from dba_role_privs;

GRANTEE GRANTED_ROLE ADM DEF


-------------- -------------------------- --- ---
user1 role1 NO YES
user1 role2 NO YES

46
Rôles par défaut

Si un rôle est déclaré par défaut, les autres rôles ne sont plus considérés
comme des rôles par défaut.

alter user user1 default role role1;


Select * from dba_role_privs;

GRANTEE GRANTED_ROLE ADM DEF


-------------- -------------------------- --- ---
user1 role1 NO YES
User1 role2 NO NO

47
Etablir des rôles par défaut
• Un utilisateur peut recevoir un grand nombre de rôles par défaut.

ALTER USER scott DEFAULT ROLE hr_clerk, oe_clerk;

• Un utilisateur peut recevoir tous les rôle par défaut.

ALTER USER scott DEFAULT ROLE ALL;

• On peut limiter le nombre de rôles par défaut d'un utilisateur.

ALTER USER scott DEFAULT ROLE ALL EXCEPT hr_clerk;

• On peut retirer tous les rôles par défaut accordé un utilisateur.

ALTER USER scott DEFAULT ROLE NONE;

48
Activer et désactiver les rôles
• On peut désactiver un rôle accordé à un utilisateur pour le révoquer
temporairement;

• On peut Activer un rôle pour l'accorder temporairement;

• La commande SET ROLE permet d'activer et de désactiver les rôles;

• Les rôles par défaut d'un utilisateur sont activés à la connexion;

• Un mot de passe peut être requis pour activer un rôle.

49
Activer et désactiver les rôles

SET ROLE hr_clerk;

SET ROLE oe_clerk IDENTIFIED BY order;

SET ROLE ALL EXCEPT oe_clerk;

50
Révoquer des rôles accordés à des
utilisateurs
La révocation d'un rôle accordé à un utilisateur requiert l'option
ADMIN OPTION ou le privilège GRANT ANY ROLE.
• Pour révoquer un rôle, on utilise la syntaxe suivante :

REVOKE oe_clerk FROM scott;

REVOKE hr_manager FROM PUBLIC;

51
Suppression des rôles
• Lorsque on supprime un rôle :
– il est retiré à tous les utilisateurs et rôles auxquels il était accordé;
– il est supprimé de la base de données.
• La suppression d'un rôle requiert l'option ADMIN OPTION ou le
privilège DROP ANY ROLE.
• Pour supprimer un rôle, on utilise la syntaxe suivante :

DROP ROLE hr_manager;

52
Obtenir des informations sur les rôles
Pour obtenir des informations sur les rôles, interrogez les
vues suivantes du dictionnaire de données :

• DBA_ROLES : Tous les rôles qui existent dans la base de données;


• DBA_ROLE_PRIVS : Rôles accordés à des utilisateurs et à des rôles;
• ROLE_ROLE_PRIVS : Rôles accordés à des rôles;
• DBA_SYS_PRIVS : Privilèges système accordés à des utilisateurs et à des rôles;
• ROLE_SYS_PRIVS : Privilèges système accordés à des rôles;
• ROLE_TAB_PRIVS : Privilèges objet accordés à des rôles;
• SESSION_ROLES : Rôles activés par l'utilisateur.

53
Gestion des Profils

54
Les profils

- Un profil est un ensemble nommé qui définit les limites relatives


aux mots de passe et aux ressources.

- C’est est un concept Oracle qui permet à l'administrateur d’une base


de données de contrôler la consommation des ressources systèmes
et des mots de passes.

55
Les profils

- La création d’un profil s’effectue par l’intermédiaire de la


commande : CREATE PROFIL.

- La commande CREATE USER ou ALTER USER permet d'affecter des


profils aux utilisateurs.

CREATE USER sap IDENTIFIED BY abcd1234 PROFILE erp_users;


ALTER USER sh PROFILE new_profile;

- Les profils peuvent être activés ou désactivés.

56
Les profils

- Les affectations de profil n'ont pas d'incidence sur les sessions en


cours.

- Les profils ne peuvent être affectés qu'à des utilisateurs. Vous ne


pouvez les affecter ni à des rôles, ni à d'autres profils.

57
Le profil DEFAULT

- Si vous n'affectez pas de profil à un utilisateur que vous créez, ce


dernier reçoit automatiquement le profil DEFAULT.

- Le profil DEFAULT définit initialement des ressources illimitées.

- Le profil DEFAULT ne peut être supprimé. Les limites de ce profile


peuvent par contre être modifiées.

La requête suivante permet de récupérer les limite des ressources


définit par le profil DEFAULT :

select resource_name,limit from dba_profiles where profile='DEFAULT';

58
Création des profils
CREATE PROFILE nom_profil LIMIT
[SESSION_PER_USER {entier|UNLIMITED|DEFAULT}]
[CPU_PER_SESSION {entier|UNLIMITED|DEFAULT}]
[CPU_PER_CALL {entier|UNLIMITED|DEFAULT}]
[CONNECT_TIME {entier|UNLIMITED|DEFAULT}]
[IDLE_TIME {entier|UNLIMITED|DEFAULT}]
[LOGICAL_READS_PER_SESSION {entier|UNLIMITED|DEFAULT}]
[LOGICAL_READS_PER_CALL {entier|UNLIMITED|DEFAULT}]
[COMPOSITE_LIMIT {entier|UNLIMITED|DEFAULT}]
[PRIVATE_SGA {entier [K|M]|UNLIMITED|DEFAULT}]
[FAILED_LOGIN_ATTEMPS {entier | UNLIMITED | DEFAULT}]
[PASSWORD_LIFETIME {entier | UNLIMITED | DEFAULT}]
[{PASSWORD_REUSE_TIME | PASSWORD_REUSE_MAX}
{entier | UNLIMITED | DEFAULT}]
[PASSWORD_LOCK_TIME {entier | UNLIMITED | DEFAULT}]
[PASSWORD_GRACE_TIME {entier | UNLIMITED | DEFAULT}]
[PASSWORD_VERIFY_FUNCTION {fonction | NULL | DEFAULT}];

59
Ces paramètres se répartissent en deux catégories, ceux qui définissent les
ressources allouées et ceux qui précisent les modalités de gestion des mots de
passe.
Paramètre Signification
SESSION_PER_ limite le nombre de sessions actives simultanément pour un
USER utilisateur.
CPU_PER_SESS indique la durée CPU maximale autorisée pour la session active,
ION exprimée en centièmes de seconde.
CPU_PER_CALL indique la durée CPU maximale autorisée pour un appel
(analyse, exécution ou extraction), exprimée en centièmes de
seconde.
CONNECT_TIME indique la durée maximale de connexion autorisée pour la
session active, exprimée en minutes.
IDLE_TIME exprime la durée maximale d’inactivité autorisée avant
fermeture automatique de la session, exprimée en minutes.

Remarque : Le CPU Time (durée de CPU) est le temps passé par un programme sur le
processeur.
60
Paramètre Signification
LOGICAL_READ indique le nombre maximum de blocs qui peuvent être
S_PER_SESSIO transférés durant une session.
N
LOGICAL_READ indique le nombre maximum de blocs qui peuvent être
S_PER_CALL transférés pour un appel (parse, execute ou fetch).
PRIVATE_SGA permet de gérer la taille allouée à la SGA privée, utilisé
uniquement avec l’architecture serveurs partagés.
COMPOSITE_LI permet de définir un coût global pour une session. Ce coût est
MIT exprimé comme la somme des poids de :
CPU_PER_SESSION
CONNECT_TIME
LOGICAL_READS_PER_SESSION
PRIVATE_SGA

FAILED_LOGIN nombre d'essais de connexion infructueux avant le blocage du


_ATTEMPS compte.

61
Paramètre Signification
PASSWORD_LIFE_T durée maximale d'un mot de passe (période normale).
IME
PASSWORD_REUSE_ nombre de jours avant de pouvoir réutiliser un mot de
TIME passe périmé. (Par exemple si celui ci vaut 30 et que votre mot de
passe actuel est toto. Il vous faudra attendre 30 jours à compter de la
date de votre changement de mot de passe avant de pouvoir à nouveau
utiliser toto comme mot de passe.)
PASSWORD_REUSE_ nombre maximum de fois que le même mot de passe
MAX peur être réutilisé.
PASSWORD_LOCK_T nombre de jours de blocage du compte après un
IME FAILED_LOGIN_ATTEMPS.
PASSWORD_GRACE_ nombre de jours après la fin de période normale avant
TIME que le compte ne soit bloqué. (c’est délai supplémentaire à
l'utilisateur pour changer son mot de passe.)
PASSWORD_VERIFY permet de définir l'algorithme de vérification du mot de
_FUNCTION passe.
62
Création des profils

Exemples:
La commande suivante permet de créer un nouveau profil :

CREATE PROFILE new_profile LIMIT FAILED_LOGIN_ATTEMPTS 2;

FAILED_LOGIN_ATTEMPTS Indique le nombre de tentatives infructueuses


consécutives de connexion au compte d'utilisateur avant que le compte
ne soit verrouillé. La valeur par défaut est 10 fois.

63
Modification d’un Profil
La modification d’un profil s’effectue par l’intermédiaire de l’ordre ALTER PROFILE
nom_profil

ALTER PROFILE nom_profil LIMIT


[SESSION_PER_USER {entier|UNLIMITED|DEFAULT}]
[CPU_PER_SESSION {entier|UNLIMITED|DEFAULT}]
[CPU_PER_CALL {entier|UNLIMITED|DEFAULT}]
[CONNECT_TIME {entier|UNLIMITED|DEFAULT}]
[IDLE_TIME {entier|UNLIMITED|DEFAULT}]
[LOGICAL_READS_PER_SESSION {entier|UNLIMITED|DEFAULT}]
[LOGICAL_READS_PER_CALL {entier|UNLIMITED|DEFAULT}]
[COMPOSITE_LIMIT {entier|UNLIMITED|DEFAULT}]
[PRIVATE_SGA {entier [K|M]|UNLIMITED|DEFAULT}]

64
Suppression d’un Profil
La suppression d’un profil s’effectue par l’ordre

DROP PROFILE nom_profil [CASCADE];

L’option CASCADE permet de supprimer le profil pour tous les utilisateurs concernés en le
remplaçant par le profil DEFAULT.

Pour visualiser les limites des profils il faut consulter les vues:
- DBA_USERS
- DBA_PROFILES

65
Activation et contrôle des limites
- Soit dans le fichier initSID.ora (PFILE), Ajouter :

RESOURCE_LIMIT = TRUE

- ou dynamiquement par l’instruction SQL :

ALTER SYSTEM SET resource_limit = true;

66
Sauvegarde et Restauration

67
Sauvegarde et Restauration
Parmi les tâches d’un DBA

- Assurer la sécurité de fonctionnement de la base en mettant en


place une stratégie et des procédures garantissant le retour à la
normale, sans perte de temps ou de données en cas d’incidents
logiciel ou matériel (données physique, fichier de données ou
autres).

68
Sauvegarde et Restauration
La sauvegarde: est une opération de duplication rapide des données afin d`éviter
la perte.

Il faut définir une stratégie :

• Quoi sauvegarder : totalité, tablespace, uniquement les données sensibles, etc.


• Quand : fréquence pluri quotidienne, quotidienne, hebdomadaire, etc.
• Comment :

- à froid ( les utilisateurs sont déconnectés).


- à chaud (les utilisateurs sont connectés).
- Physiquement (créer une copie de l'ensemble des fichiers composant la base de
données fichiers de contrôle, fichier d'initialisation, le pfile ou le spfile, fichiers
de données…).
- Logiquement (enregistrer des données de la base sur un fichier externe. Ce
fichier contient simplement les commandes SQL à exécuter pour obtenir les
données).

69
Sauvegarde et Restauration

Il faut répondre à des contraintes :

- Disponibilité des données.

- Importance relative de certaines données.

- Volume maximum de perte supporté.

- Economie (ex: la très haute disponibilité coûte très cher...)

70
Les pannes et les échecs
Il existe différents types de pannes ou échecs amenant dans certains cas, une
restauration inévitable et donc une sauvegarde au préalable importante.

- Un échec de rapport :
qui se produit lorsqu’un utilisateur tente d’écrire là où il n’a pas le privilège ou alors
lorsque son quota est atteint par exemple.

- Un échec du process utilisateur :


qui se produit lorsqu’un utilisateur se déconnecte de façon anormale de sa session ou
qu’une exception ferme la session.

71
Les pannes et les échecs

- Une erreur d’utilisateur :


qui se produit lorsqu’un utilisateur DROP ou TRUNCATE un objet. Peut aussi se
produire à l’issu d’un COMMIT qui suit un effacement de toutes les lignes d’une
grosse table.

- Un échec d’instance :
Lorsque le serveur plante ou subit des problèmes et/ou fermé par l’ OS.

- Une panne de média :


Il s’agit d’une panne matériel, en général un disque dur qui crash. On peut prévenir ce
genre de panne (RAID) via la duplication de données mais personne n’est à l’abri de ce
genre de panne.

Remarque :
Les pannes qui amènent en général la restauration complète ou partielle de la base
sont les erreurs d’utilisateurs ou les pannes matérielles.

72
Rappel: Les redo logs

Les fichiers redo logs permettent à la base de garder une trace de toutes les
altérations de données, ainsi en cas de crash de la base, ils permettent de rejouer
les modifications apportées à la base.

73
Les redo logs
Les requêtes suivantes permettent de s’interroger sur les fichiers redo logs:
- Pour voir l'état des archives logs :
ARCHIVE LOG LIST;
SELECT name, log_mode FROM v$database;
SELECT archiver FROM v$instance;

- Pour voir les informations sur les groupes de redo log :

SELECT groups, current_group#, sequence# FROM v$thread;

-Pour voir des informations sur les groupes et les membres :

SELECT group#, sequence#, bytes, members, status FROM v$log;


Le status redo logs peut-être :
– UNUSED : jamais écrit ,
– CURRENT : en ligne et en cours d'écriture
– ACTIVE : en ligne et en cours d'archivage
– INACTIVE : en ligne, archivé et non utilisé

74
Les redo logs

- Pour voir des informations sur les fichiers de redo :

SELECT * FROM v$logfile;

- Pour forcer le switch de groupe de redo log :

ALTER SYSTEM SWITCH LOGFILE;


(Cette commande permet d'archiver le redo log courant et d'activer le redo log
suivant.)

ALTER SYSTEM CHECKPOINT;


(Cette commande permet d'archiver le redo log courant.)

75
Les redo logs

- Pour ajouter un groupe de fichier de redo log :

ALTER DATABASE ADD LOGFILE GROUP 2


‘C:\oracle\oradata\orarepertoire\REDO03.LOG' size 10M;

- Pour supprimer un groupe de fichier de redo log :

ALTER DATABASE DROP LOGFILE GROUP 2;

76
Sauvegarde totale

- Une sauvegarde de base de données complète est une


sauvegarde de chaque fichier de données de la base de
données, plus le fichier de contrôle.

- La sauvegarde de la bases de données entière est le type de


sauvegarde le plus courant.

77
Sauvegarde partielle

- Une sauvegarde de base de données partielle consiste à


sauvegarder uniquement une partie constituant la base de
donnée :

• Les Tablespace
• Les fichiers de données
• Les fichiers de contrôles
• Les fichiers Redo Log

78
Sauvegarde de la base à froid (Cold Backup)

• Une sauvegarde à froid s’effectue quand la base de données est fermée.


• Les fichiers physiques utiles sont les suivants :
- fichiers de données,
- redologs,
- control files,
- fichier de paramètre.

• Une fois l'activité est interrompue, ces fichiers peuvent être copiés sans
corruption de données.

• Il est facile de retrouver le chemin complet de ces fichiers en interrogeant


les vues dynamiques suivantes: V$CONTROLFILE, V$PARAMETER,
V$INSTANCE, V$DATABASE,...

79
Sauvegarde de la base à froid (Cold Backup)
Démarche :
• On arrête l’instance par la commande :
SHUTDOWN IMMEDIATE

• on effectue la copie des fichiers sur un support externe ( disque, cédérom…) :


- datafiles
copier chemin/*.dbf dans Cold_Backup/*.dbf

- redolog files
copier chemin/*.log dans Cold_Backup/*.log

- control files
copier chemin/*.ctrl dans Cold_Backup/*.dbf

- fichier de paramètre
copier chemin/init_mabase.ora dans Cold_Backup

Remarque: on peut programmer un script qui automatise toutes ces opérations.

80
Restauration des données
• La restauration est très simple. Il suffit de recréer une instance avec le même
SID (si cela est nécessaire).

• Le fichier de paramètre est récupéré de l’unité de sauvegarde.

• On crée si nécessaire les répertoires d’origine et on y copie les différents


fichiers sauvegardés avec les mêmes noms.
- datafiles
copier Cold_Backup /*.dbf dans chemin/*.dbf
- redolog files
copier Cold_Backup /*.log dans chemin/*.log
- control files
copier Cold_Backup /*.ctrl dans chemin/*.dbf
- fichier de paramètre
copier Cold_Backup/init_mabase.ora dans chemin/init_mabase.ora
• Enfin, on peut démarrer la base de données avec un simple STARTUP.
Remarque :
Il existe deux modes de restauration: complète et partielle.
81
Restauration complète

- La restauration complète est utilisée après une


défaillance qui a endommagé les fichiers de données
ou les fichier de contrôle.

- elle implique l'utilisation de données de


rétablissement ou de sauvegardes incrémentielles.

82
Restauration partielle

• La restauration partielle appelée aussi PITR: Point in time recovery,


permet de repositionner la base de données à un point donné défini par
un numéro SCN ou une date et heure.

• Pour mieux illustrer cette technique, supposons que le tablespace INDX a


été supprimé par erreur. Il faut visualiser le contenu des fichiers des
alertes: alertBDexemple.log

• Exemple1: supposant que la suppression du tablespace a eu lieu le '2017-


11-03 à 20:20:20 et que le dernier numéro de séquence est 30. Pour
récupérer la situation la plus cohérente possible, nous allons restaurer
jusqu'au numéro SCN de cette séquence 30.

83
Sauvegarde de la base à chaud (Hot Backup)

• Une sauvegarde à chaud est une sauvegarde qui se fait lorsque la base est
ouverte.

• Le choix de cette technique oblige le DBA à mieux planifier une solution de


sauvegarde en opérant sur des tablespaces spécifiques sans affecter le
reste de la base de données.

• Un DBA peut donc effectuer des sauvegardes de la base ouverte sur un ou


plusieurs tablespaces permettant ainsi la haute disponibilité.

• La base de données doit être en mode archivelog.

84

Vous aimerez peut-être aussi