Académique Documents
Professionnel Documents
Culture Documents
(Draft) Dba - Module 5 (2003-08-06) 2 - 0
(Draft) Dba - Module 5 (2003-08-06) 2 - 0
www.supinfo.com
2 / 29
3 / 29
http://www.labo-oracle.com
Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs
4 / 29
Le premier composant est le mcanisme dauthentification qui dfinit les diffrents privilges
dun utilisateur. Un utilisateur pourra tre authentifi par le serveur Oracle ou bien par le
systme dexploitation.
Le mcanisme dauthentification est spcifi lors de la cration de lutilisateur et pourra tre
modifi par la suite.
Le second composant est le verrouillage des comptes. Les comptes utilisateurs peuvent tre
verrouills afin dempcher un ou plusieurs utilisateurs de se connecter la base de donnes.
Ce verrouillage pourra se faire de manire automatique aprs un certain nombre dchecs lors
de lauthentification ou bien ladministrateur pourra verrouiller ou dverrouiller le compte
manuellement.
Le troisime composant est le tablespace par dfaut. Il spcifie dans quel tablespace les objets
de lutilisateur seront stocks si celui-ci ne spcifie pas de manire explicite un tablespace lors
de la cration de nouveaux objets. Si aucun tablespace par dfaut nest spcifi lors de la
cration de lutilisateur, Oracle lui assignera automatiquement le tablespace SYSTEM.
Le quatrime composant est le tablespace temporaire. Celui-ci est dfini par un nombre
dextents qui seront allous par le serveur afin dcrire des donnes temporaires comme des
donnes de tri. Si ce tablespace nest pas dfini lors de la cration de lutilisateur, Oracle lui
assignera automatiquement le tablespace SYSTEM.
Le cinquime composant est les quotas pour les tablespaces. Ces quotas permettront de grer
la quantit despace disque alloue un utilisateur dans les tablespaces.
Le sixime composant correspond aux limitations de ressources, qui permettent de contrler
lutilisation des ressources systme. Ces ressources incluent le temps CPU, le nombre de
connexions pour un utilisateur ainsi que le nombre dentres-sorties sur le disque.
Le septime composant est reprsent par les privilges systme et les privilges objets qui
permettent de contrler les accs aux donnes pour chaque utilisateur. Ces privilges
permettent de dfinir les diffrentes actions que les utilisateurs pourront effectuer sur les
donnes.
Le huitime et dernier composant est reprsent par les rles qui permettent de contrler les
actions d'un utilisateur comme faisant parti d'un ensemble d'utilisateur. Les rles peuvent tre
assimils aux groupes d'utilisateurs sous Windows NT.
5 / 29
La seconde tape consiste choisir les tablespaces qui serviront stocker les objets de son schma.
Il faudra ensuite choisir le quota d'espace disponible pour cet utilisateur sur ses diffrents tablespaces.
Par dfaut, le quota est de zro octets pour chaque tablespace. Le quota correspond l'espace
disponible maximum pour les objets d'un utilisateur sur un tablespace. Il faut ensuite assigner un
tablespace par dfaut et un tablespace temporaire ce nouvel utilisateur.
La troisime tape consiste excuter la commande CREATE USER qui va permettre de crer de
manire proprement dite l'utilisateur. Il faudra ensuite lui assigner des privilges ainsi que des rles en
fonction des diffrentes actions que pourra effectuer ce nouvel utilisateur.
La dernire tape consiste former ce nouvel utilisateur pour qu'il puisse se connecter la base de
donnes et lui expliquer comment changer son mot de passe.
La premire tape consiste utiliser les mots cls IDENTIFIED EXTERNALLY dans la
commande CREATE USER et initialiser le paramtre OS_AUTHENT_PREFIX qui est
utilis pour spcifier le format des noms d'utilisateur. Le serveur rajoutera le
OS_AUTHENT_PREFIX au nom d'utilisateur du systme d'exploitation. Il comparera ensuite
cet utilisateur avec un utilisateur de la base de donnes. (La valeur par dfaut du paramtre
OS_AUTHENT_PREFIX est OPS$.)
Il est prfrable de choisir un mot de passe standard que l'utilisateur sera plus mme de se
souvenir et de changer par la suite.
http://www.labo-oracle.com
Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs
6 / 29
Le changement de mot de passe ne sera effectif que pour les sessions suivantes et non pas pour celles
en cours.
Si l'option CASCADE est utilise alors tous les objets de l'utilisateur seront d'abord supprims avant
de supprimer l'utilisateur. Si l'option CASCADE n'est pas utilise alors que le schma de l'utilisateur
contient encore des objets, une erreur se produira lors de la suppression de l'utilisateur.
http://www.labo-oracle.com
Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs
7 / 29
http://www.labo-oracle.com
Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs
8 / 29
Concurrent Sessions
Password aging and expiration
Password History
Password Complexity Verification
Account Locking
Le DBA devra assigner un profil chaque utilisateur. Si aucun profil n'est dfini par dfaut,
l'utilisateur se verra assigner le profil par dfaut DEFAULT, qui est automatiquement cre lors de la
cration de la base. Le profil par dfaut ne comporte initialement aucunes limitations mais pourra
ensuite tre modifi par le DBA.
Les profils peuvent tre d'un grand intrt lorsque l'on souhaite restreindre les oprations qui vont
ncessiter trop de ressources systme.
Les profils permettent aussi de vrifier que l'utilisateur sera bien dconnect de la base si sa session
reste inactive un certain moment.
Ils peuvent aussi permettrent de regrouper les diverses utilisations de ressources systmes et
permettent finalement de grer les mots de passe.
http://www.labo-oracle.com
Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs
9 / 29
Lorsque vous crez un profil vous n'tes pas oblig de spcifier tous les paramtres. Tous les
paramtres qui n'auront pas t spcifis se verront automatiquement assigner la valeur par dfaut.
L'option CASCADE permet de rassigner le profil DEFAULT aux utilisateurs dont le profil vient
d'tre supprim.
http://www.labo-oracle.com
Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs
10 / 29
Cet exemple va permettre de dverrouiller le compte de toto en lui assignant tata comme
nouveau mot de passe.
-
L'historique des mots de passe : Cette fonctionnalit va permettre de comparer le nouveau mot
de passe aux anciens mots de passe de l'utilisateur afin d'tre sur qu'il ne puisse pas rutiliser
un ancien mot de passe pendant un certain nombre de fois ou pendant un certain temps.
Les paramtres qui permettent de grer cette fonctionnalit sont :
PASSWORD_REUSE_TIME et PASSWORD_REUSE_MAX.
http://www.labo-oracle.com
Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs
11 / 29
Si le mot de passe convient, la fonction devra retourner la valeur TRUE et FALSE si le mot de passe
ne convient pas.
Il est possible d'utiliser la fonction qui vous est fournie par Oracle dans le fichier utlpwdmg.sql qui
devra tre excute dans le schma SYS.
http://www.labo-oracle.com
Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs
12 / 29
3. Consommation de ressources
utilisateurs
3.1.Contrle des ressources
3.1.1. Limitations de ressources grce aux profils
Les profils vous permettent d'appliquer des limitations de ressources aux utilisateurs. A chaque fois
qu'un utilisateur se connecte une session est alors cre. Chaque session est consommatrice de
ressources mmoire et processeur. Les restrictions lies la session seront donc appliques aux
ressources utilises durant la session.
Les profils permettent non seulement de grer les ressources au niveau de la session mais aussi au
niveau des appels de requtes ou autres appels systme.
Les limitations au niveau de la session sont les restrictions sur ressources lors de la dure de la session
(par exemple, un utilisateur laisse sa session inactive, vous pouvez limiter le temps dinactivit dune
session).
Les limitations au niveau des appels sont les restrictions qui seront appliques lors de chaque appel
systme.
Voila comment vont se drouler les tapes lors du dpassement d'une limite au niveau des appels
systme.
-
Si une limite au niveau instruction est dpasse : Le processus traitant l'instruction SQL sera
alors stopp et l'instruction courante sera alors annule. Un message d'erreur est ensuite
affich l'utilisateur. Toutes les transactions prcdentes restent valide et l'utilisateur reste
connect.
Si une limite au niveau session est dpasse : Un message d'erreur est envoy l'utilisateur qui
est ensuite dconnect automatiquement.
http://www.labo-oracle.com
Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs
13 / 29
Il est aussi possible de modifier ce paramtre grce Oracle Entreprise Manager et en allant dans
Oracle Instance Manager.
14 / 29
peut exister plusieurs "Resource Plan" mais il ne peut y avoir qu'un seul "Resource Plan" actif la
fois.
Il existe ensuite des directives de planification de ressource qui permettent de pouvoir assigner aux
groupes de consommateur de ressource, les ressources dont ils ont besoin.
Pour mettre en place cette gestion des ressources, vous aurez besoin de 2 packages PL/SQL :
- DBMS_RESOURCE_MANAGER
- DBMS_RESOURCE_MANAGER_PRIVS
Avant de pouvoir dfinir ces "Resource Plan" ou tout les autres objets ncessaires la gestion des
ressources, il est ncessaire de crer une zone d'attente (ou Pending Area). Cette Pending Area est une
zone de travail qui va permettre de crer et de modifier les "Resource Plan". Toutes les modifications
seront effectues dans cette zone de travail jusqu' ce qu'elles soient valides.
Pour pouvoir cre cette zone, il vous faudra utiliser la procdure CREATE_PENDING_AREA du
package DBMS_RESOURCE_MANAGER.
Ensuite il faudra dcider du nombre de groupes de consommateurs ncessaires puis les nommer et les
crer. Il est tout fait possible d'utiliser les groupes prdfinis comme SYS_GROUP, LOW_GROUP,
DEFAULT_CONSUMER_GROUP et OTHER_GROUPS.
-
SYS_GROUP : est attribu pour les utilisateurs SYS et SYSTEM et tant en relation avec le
SYSTEM_PLAN.
LOW_GROUP : est donn aux utilisateurs ayant une priorit plus faible. Il est aussi en
relation avec le SYSTEM_PLAN.
Ensuite une fois le groupe cre, voici la commande PL/SQL qui permet de rajouter un utilisateur un
groupe :
DBMS_RESOURCE_MANAGER_PRIVS.CREATE_CONSUMER_GROUP(
'<nom du user>',
'<nom du groupe>',
<option d'administration>);
L'option d'administration (valeur TRUE et FALSE) permet de dfinir si cet utilisateur pourra ou non
ajouter d'autres utilisateurs ce groupe.
Quand vous crez de nouveaux utilisateurs, ceux-ci sont automatiquement ajouts au groupe
DEFAULT_CONSUMER_GROUP jusqu' ce que vous les en changiez.
Le groupe initial d'un utilisateur peut tre modifi grce la commande suivante :
DBMS_RESOURCE_MANAGER.SET_INITIAL_CONSUMER_GROUP (
'<nom du user>',
http://www.labo-oracle.com
Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs
15 / 29
'<nom du groupe>');
Les utilisateurs faisant partis de plusieurs groupes peuvent changer leur groupe actuel. Ce changement
pourra impliquer une seule des sessions de l'utilisateur ou toutes ses sessions.
Voici les deux syntaxes :
-
Chaque "Resource Plan" doit contenir une directive qui permettra d'tre redirig vers le groupe
OTHER_GROUPS.
Voici la syntaxe qui permet de crer une directive :
DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE (
'<nom du resource plan>',
'<nom du groupe de consommateur de ressource>',
'<description de la directive>',
<limitation de ressource>, []);
Un seul "Resource Plan" ne pouvant tre actif la fois, on dfinira le "Resource Plan" actif grce au
paramtre RESOURCE_MANAGER_PLAN du fichier init.ora.
On pourra modifier la valeur de ce paramtre soit directement dans le fichier init.ora, soit de manire
dynamique avec la syntaxe suivante :
SQL> ALTER SYSTEM SET
2 RESOURCE_MANAGER_PLAN=<nom du plan>;
Pour obtenir toutes les informations relatives tous les objets du gestionnaire de ressource, il suffit
d'interroger les vues du dictionnaire de donnes :
- DBA_RSRC_PLANS
- DBA_RSRC_PLAN_DIRECTIVES
- DBA_RSRC_CONSUMER_GROUPS
- DBA_RSRC_CONSUMER_GROUPS_PRIVS
- DBA_USERS
http://www.labo-oracle.com
Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs
16 / 29
http://www.labo-oracle.com
Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs
TABLE
SESSION
TABLESPACE
17 / 29
Exemples
CREATE ANY INDEX
ALTER ANY INDEX
DROP ANY INDEX
CREATE TABLE
CREATE ANY TABLE
ALTER ANY TABLE
DROP ANY TABLE
SELECT ANY TABLE
UPDATE ANY TABLE
DELETE ANY TABLE
CREATE SESSION
ALTER SESSION
RESTRICTED SESSION
CREATE TABLESPACE
ALTER TABLESPACE
DROP TABLESPACE
UNLIMITED TABLESPACE
Le mot cl PUBLIC permet de donner un privilge systme ou un rle l'ensemble des utilisateurs.
Les mots cl WITH ADMIN OPTION permettent d'autoriser la personne ayant reu ce rle de le
donner lui-mme d'autres utilisateurs ou rles.
Il y a quelques points savoir, dans l'environnement Oracle, pour donner un privilge systme ou un
rle :
- Pour pouvoir donner un privilge systme, il faut tre DBA ou avoir reu explicitement ce
privilge avec l'option WITH ADMIN OPTION.
- La personne ayant l'option WITH ADMIN OPTION pourra son tour donner ce privilge
systme d'autres utilisateurs avec ou sans l'option WITH ADMIN OPTION.
- N'importe quel utilisateur ayant reu le privilge systme GRANT ANY ROLE peut donner
n'importe quel rle.
- L'utilisateur ayant l'option WITH ADMIN OPTION pourra donner ou retirer ce privilge
systme n'importe quel utilisateur de la base de donnes sauf celui lui ayant donn ce
privilge.
18 / 29
Lorsque l'utilisateur possdant un des deux privilges SYSDBA ou SYSOPER se connecte la base, il
est connect de manire implicite au schma de SYS.
Il faut savoir que le privilge SYSDBA fournit l'utilisateur des privilges DBA illimits qui lui
permettent d'effectuer n'importe quelle opration.
Le privilge SYSOPER est un sous ensemble du privilge SYSDBA. Ce privilge permet de dmarrer,
arrter, sauvegarder la base, mais ne permet pas de crer une base de donnes.
Voici un exemple des privilges systmes fournit par les deux diffrents privilges.
Catgorie
SYSOPER
SYSDBA
Exemples
STARTUP
SHUTDOWN
ALTER DATABASE OPEN | MOUNT
ALTER DATABASE BACKUP CONTROLFILE
ALTER DATABSE BEGIN | END BACKUP
RECOVER DATABASE
ALTER DATABASE ARCHIVELOG
RESTRICTED SESSION
Tous les privilges de SYSOPER mais avec l'option WITH ADMIN
OPTION
CREATE DATABASE
RECOVER DATABASE UNTIL
Il est important de savoir que les privilges SYSDBA et SYSOPER ne peuvent tre attribus un rle.
http://www.labo-oracle.com
Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs
19 / 29
Table
9
9
Vue
Squence
Procdure
9
9
9
9
9
9
9
9
9
9
9
Il est tout fait possible de donner ces privilges objets des rles ou bien des utilisateurs.
Voici la syntaxe permettant de donner un ou plusieurs privilges objet :
GRANT
{<nom du privilge> [<liste de colonne>]
[,<nom du privilge> [<liste de colonne>]] |
ALL [PRIVILEGES]}
ON
<nom de l'objet>
TO
{<nom du user> | <nom du rle> | PUBLIC}
[,{<nom du user> | <nom du rle> | PUBLIC}]
[WITH GRANT OPTION] ;
http://www.labo-oracle.com
Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs
20 / 29
L'option WITH GRANT OPTION permet l'utilisateur ayant reu ce privilge objet de donner son
tour ce privilge.
Exemple :
GRANT EXECUTE ON dbms_pipe TO public;
GRANT UPDATE (empno, ename)
ON emp
TO Karen
WITH GRANT OPTION;
http://www.labo-oracle.com
Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs
21 / 29
RESOURCE
Descriptions
Permet d'accder aux ressources systme. Attention ce rle donne le
privilge systme UNLIMITED TABLESPACE. Il procure aussi
une rtro-compatibilit avec la version 6 d'Oracle.
http://www.labo-oracle.com
Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs
CONNECT
DBA
22 / 29
EXP_FULL_DATABASE
Permet de faire des imports complets de la base de donnes.
IMP_FULL_DATABASE
Permet de vider les tables d'audit.
DELETE_CATALOG_ROLE
Permet d'excuter les packages PL/SQL systme.
EXECUTE_CATALOG_ROLE
SELECT_CATALOG_ROLE
Mis part le rle DBA, il n'est pas conseill d'utiliser les rles prdfinis d'Oracle mais plutt de crer
et d'utiliser vos propres rles.
Le mot cl EXTERNALLY signifie que l'utilisateur devra tre authentifi par le systme d'exploitation
avant de pouvoir activer ou dsactiver ce rle.
http://www.labo-oracle.com
Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs
23 / 29
Cette commande dsactive tout les rles et ractive seulement ceux cits dans la commande.
http://www.labo-oracle.com
Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs
La vue SESSION_PRIVS permet quand elle de savoir quels sont les privilges systmes
actuellement disponible pour une session d'un utilisateur.
http://www.labo-oracle.com
Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs
24 / 29
25 / 29
6. Audit
6.1.Utilisation de l'audit de base de donnes
6.1.1. Catgories d'audit
Il existe trois catgories d'audit dans une base de donnes Oracle
- Audits des privilges : Ces audits enregistrent les dmarrages et arrts de l'instance. Ils
incluent le nom de l'utilisateur, le nom du terminal, la date et l'heure. Ils enregistrent aussi
toutes les connexions effectues par des utilisateurs SYSDBA ou SYSOPER.
-
Audits de la base de donnes : Ces audits servent de moniteur et permettent d'enregistrer des
informations sur les utilisateurs et sur les activits de la base de donnes. Toutes ces
informations d'audit sont enregistres dans un protocole d'audit qui est stock dans la table
AUD$ qui se trouve dans le dictionnaire de donnes. Ce protocole d'audit peut tre utilis pour
dtecter toutes les activits douteuses survenues dans la base. Ces audits permettent aussi
d'enregistrer certaines activits de la base de donnes comme les entres / sorties.
Audits d'applications : Ces audits permettent de chercher toutes les modifications sur les
colonnes et enregistrent ces modifications. Ce type d'audit doit tre cod (par exemple sous
forme de trigger) car il ne fait pas parti des outils standard d'audit.
La premire phase dans un audit de base de donnes est d'activer l'audit au moyen du
paramtre AUDIT_TRAIL du fichier init.ora. Puis de dfinir les actions d'audit au moyen de
la commande AUDIT. Le paramtre AUDIT_TRAIL permet de dfinir o est ce que les
informations d'audit seront enregistres (dans la base ou dans le gestionnaire d'audit du
systme d'exploitation). Vous devrez ensuite grce la commande AUDIT dfinir des audits
sur certains objets ou privilges et dfinir si cet audit devra tre enregistr pour chaque
occurrence de cet vnement ou bien une seule fois par session.
La seconde phase dans un audit de base de donnes est de gnrer des actions SQL et
PL/SQL. Ce sont alors les options d'audit qui dtermineront si oui ou non il faut gnrer des
enregistrements d'audit.
La troisime et dernire phase d'audit consiste analyser les informations d'audit en allant
examiner les vues du dictionnaire de donnes ou en utilisant un logiciel du systme
d'exploitation.
http://www.labo-oracle.com
Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs
26 / 29
L'option BY permet de spcifier le ou les utilisateurs qui devront tre audits (le paramtre par dfaut
est : tous les utilisateurs).
L'option BY SESSION permet d'enregistrer une seule fois un vnement par session alors que l'option
BY ACCESS permet d'enregistrer le mme vnement autant de fois que celui-ci ce produit.
La valeur par dfaut de l'option WHENEVER correspond au deux valeurs.
Voici un exemple d'audit de requte :
AUDIT DELETE ON scott.s_emp
BY ACCESS
WHENEVER NOT SUCCESSFUL;
Cet exemple enregistre toutes les tentatives de DELETE, sur la table s_emp de SCOTT, qui n'ont pas
abouties.
Oracle fournit un certain nombre de raccourci sur les privilges systme qui vous permettront d'auditer
des privilges multiple de manire simple.
Voici des exemples de raccourci :
-
27 / 29
CREATE ROLE
CREATE USER
ALL PRIVILEGES contient les privilges suivants :
Tous les privilges systme.
Exemple :
AUDIT ALTER ANY TABLE
BY scott
WHENEVER SUCCESSFUL;
L'option DEFAULT spcifie que les options d'audit seront mises en place pour tout les objets
nouvellement cres.
Ce type d'audit ne tiens pas compte de l'utilisateur ayant effectu l'opration audite.
Exemple :
AUDIT DELETE ON scott.s_emp
BY SESSION
WHENEVER SUCCESSFUL;
Et voici la syntaxe de la commande NOAUDIT pour un audit base sur une requte :
NOAUDIT <requte>
ON { <nom de l'objet> | DEFAULT }
[ WHENERVER [ NOT ] SUCCESSFUL ];
http://www.labo-oracle.com
Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs
28 / 29
Exemple :
NOAUDIT ALTER TABLE
BY scott
WHENEVER SUCCESSFUL;
http://www.labo-oracle.com
Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs
Avant de dplacer cette table il est ncessaire de vrifier que l'audit est bien dsactiv.
Ensuite il suffit de taper la commande suivante :
ALTER TABLE aud$
MOVE TABLESPACE <nom du nouveau tablespace>;
Nous allons ensuite crer un nouvel index pour la table AUD$ dans un tablespace diffrent du
tablespace SYSTEM et du tablespace de la table AUD$ avec la syntaxe suivante :
CREATE INDEX <nom de l'index>
ON aud$(sessionid,ses$tid)
TABLESPACE <nom du tablespace>;
http://www.labo-oracle.com
Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs
29 / 29