Oracle:: Architecture Et Concepts de Base
Oracle:: Architecture Et Concepts de Base
Oracle:: Architecture Et Concepts de Base
[email protected]
elbeqqali.olympe.in
O. El Beqqali 1
FSDM-FES
Oracle Enterprise Edition
I0G, 11G…
O. El Beqqali 2
FSDM-FES
Caractéristiques ORACLE (++)
Performance
Fiabilité
Disponibilité sur toutes les plate-formes
Capacités d’extension (cluster,…)
Connexion et Sécurité
Portabilité
Fonctionnalités étendues
Caractéristiques (--)
Prix
Complexité de mise en œuvre
Gourmandise système
O. El Beqqali 3
FSDM-FES
Tâches de l'administrateur de base de données
O.EL BEQQALI 5
PLAN
La base de données
L’instance
Architecture
La SGA et la PGA
d’Oracle
O.EL BEQQALI 6
Les méthodes de connexion
SQL*Plus Windows
sqlplusw
O.EL BEQQALI 7
Les méthodes de connexion
iSQL*Plus
Version Web, accessible à
partir d’un navigateur. iSQLPlus
http://localhost:port/isqlplus
O.EL BEQQALI 8
Utilisateurs SYS et SYSTEM
Comptes créés automatiquement avec rôle DBA
SYSTEM
SYS
• Mot de passe :
• Mot de passe : manager
change_on_install
• Propriétaire de tables
• Propriétaire du internes
dictionnaire de supplémentaires
données de la utilisées par les outils
base Oracle
O.EL BEQQALI 9
Présentation des principaux composants
Processus
Instance
utilisateur Zone de mémoire Mémoire SGA
partagée
Cache de
Cache Tampon de
tampons de
"library" la base journalisation
Processus Cache du de données
serveur dictionnaire Zone de Zone de mémoire
de données mémoire Java LARGE POOL
PGA
PMON SMON DBWR LGWR CKPT Autres
O.EL BEQQALI 10
Instance Oracle
Une instance Oracle :
permet d'accéder à une base de données
Oracle,
n'ouvre qu'une seule base de données,
est constituée de structures de processus
d'arrière-plan et de structures mémoire.
Instance
Zone de mémoire Mémoire SGA
partagée
Structures
Cache
Cache Tampon de mémoire
de tampons
"library" journalisation
de la base
Cache du de données
dictionnaire Zone de mémoire
Zone de
de données mémoire Java LARGE POOL
Structures
PMON SMON DBWR LGWR CKPT Autres de processus
d'arrière-plan
O.EL BEQQALI 11
Base de données et instance
Mémoire partagée accèdée par tous les threads
SGA (System Global Area)
La base de données
est constituée:
• Un ou plusieurs fichiers de données qui contiennent les données
proprement dites.
• D’au minimum un fichier de contrôle qui contient des informations
de contrôle sur la BD.
• D’au minimum deux groupes de fichiers de journalisation qui
enregistrent toutes les modifications apportées à la base.
Les différentes catégories de base de données
• BD transactionnelles (ou OLTP pour OnLine Transaction
Processing)
• BD décisionnelles
• Mixtes.
O.EL BEQQALI 13
La base de données
Une base de données Oracle est l’ensemble de 3 types de
fichiers.
Les fichiers de données
Les fichiers de contrôles
Les fichiers des journaux
Fichiers de données
Fichier de
mot de passe
Fichiers de contrôles
Fichiers
Fichier journaux
paramètre archivées
Fichiers des journaux
Une base de données Oracle est désignée par le nom de la BD, avec le
paramètre « db_name» non modifiable.
sql> show parameter DB_NAME;
O.EL BEQQALI 14
La base de données
Fichier de contrôle
O.EL BEQQALI 15
La base de données
Fichier de contrôle
L’information du fichier de contrôle
• V$CONTROLFILE: affiche l’ensemble des fichiers de ctrl de la BD
• V$PARAMETER: permet d’afficher la valeur du paramètre « control_files »
• V$CONTROLFILE_RECORD_SECTION: affiche l’ensemble des informations
concernant les enregistrement dans les fichiers de contrôle de la BD.
Le multiplexage
• CONTROL_FILES =‘CONTROL01.CTL’,’CONTROL02.CTL’
• En raison de l’importance du fichier de contrôle, Oracle permet de multiplexer ce
fichier pour en avoir plusieurs copies, afin d’éviter toute corruption ou perte du
fichier.
O.EL BEQQALI 16
La base de données
Fichier de journalisation (redo Log)
Ils enregistrent toutes les modifications apportées à la BD;
Ils sont organisés en groupes écrits de manière circulaire, les informations
sauvegardées sont donc périodiquement écrasées.
Ils sont utilisés pour la récupération de l’instance ou ses fichiers après un arrêt anormal.
Ils sont organisés en groupes (au min 2) composés d’un ou plusieurs membres (min un)
et ils sont créés lors de la création de la BD. À l’intérieur d’un groupe, les membres
sont écrits simultanément en miroir par l’instance Oracle (processus LGWR) et
contiennent la même information.
Groupe 1
O.EL BEQQALI 18
TABLESPACE (segment, extent)
Segement B (extent 1)
Segement C (extent 1)
Segement B (extent 2)
data01.dbf data02.dbf
O.EL BEQQALI 19
Structure logique (TABLESPACE)
Tablespace
Fichier de données
Segment Segment
Extent Blocs
O.EL BEQQALI 20
Tablespaces SYSTEM et
Non-SYSTEM
Tablespace SYSTEM
contient : Tablespace Non-SYSTEM
• Des informations contient :
relatives au dictionnaire de • Les Rollback segments
données
• Les segments
• Un rollback segment temporaires
SYSTEM
• Les données
applicatives
Tablespace Temporaire :
• Les index
Utilisé pour les opérations
de tri ne peut pas contenir
d’objets permanents
O.EL BEQQALI 21
La base de données
Organisation du stockage
Les fichiers de données sont 1,1
BD
découpés en blocs d’une taille
donnée (4 ko, 8 Ko, …) 1,1
Base de
données
Tablespace Fichier de
données
Segment
Logique Physique
Extent
Bloc
Bloc S/E
Oracle
O.EL BEQQALI 23
L’instance
La SGA (Vue d’ensemble)
La SGA (System Global Area) est une zone de mémoire partagée par les différents
Définition processus de l’instance. Elle est allouée au démarrage de l’instance et libérée lors l’arrêt
de l’instance. Elle est dimensionnée par un ensemble de paramètres définis dans le
•
fichier de paramètres.
• La SGA contient aussi une structure SGA fixe qui contient des
informations sur l’état de la BD et le l’instance, et sur les verrous. Elle
n’est dimensionnée pae le DBA; sa taille est faible qlq Ko.
• Taille définie à l'aide du paramètre SGA_MAX_SIZE
O.EL BEQQALI 24
L’instance
Shared Pool (Zone de mémoire partagée)
Elle permet de stocker :
• les dernières instructions SQL exécutées,
• les dernières définitions de données utilisées.
Elle est constituée de deux structures mémoire clés liées aux
performances :
• Cache "library"
• Cache du dictionnaire de données
Sa taille est définie par le paramètre SHARED_POOL_SIZE.
Zone de mémoire
partagée
Cache
"library"
ALTER SYSTEM SET
Cache du
SHARED_POOL_SIZE = 64M; dictionnaire
de données
O.EL BEQQALI 25
L’instance
Cache « Library »
Le cache "library" conserve des informations sur
les dernières instructions SQL et PL/SQL
utilisées.
Il permet le partage des instructions
fréquemment utilisées.
Il est géré par un algorithme LRU.
Il est composé de deux structures :
• la zone SQL partagée,
• la zone PL/SQL partagée.
Sa taille dépend du dimensionnement de la zone
de mémoire partagée.
O.EL BEQQALI 26
L’instance
O.EL BEQQALI 27
L’instance
Redo Log Buffer (Tampon de journalisation)
Il enregistre toutes les modifications apportées aux blocs de
données de la base.
Sa principale fonction est la récupération de données.
Les modifications enregistrées constituent des entrées de
journalisation.
Les entrées de journalisation contiennent des informations
permettant de reconstruire des modifications.
La taille du tampon est
définie par le paramètre
LOG_BUFFER.
Redo Log Buffer
O.EL BEQQALI 28
L’instance
Zone de mémoire LARGE POOL
Zone facultative de la mémoire SGA
Elle réduit la charge de la zone de mémoire partagée.
• la mémoire allouée par session (UGA) au serveur partagé
• les processus serveur d'E/S
• les opérations de sauvegarde et de restauration ou RMAN
• les mémoires tampon des messages d'exécution en parallèle
– PARALLEL_AUTOMATIC_TUNING = TRUE
Elle n'utilise pas de liste LRU.
Sa taille est définie par le paramètre
LARGE_POOL_SIZE.
O.EL BEQQALI 29
L’instance
Mémoire PGA
La taille maximum de la PGA est influencée en plus par les
paramètres d'initialisations suivants :
• sort_area_size
• hash_area_size
• bitmap_merge_area_size and create_bitmap_area_size
D’autres paramètres influencent aussi la taille de la PGA d’une
session
• OPEN_LINKS : nombre de databases link ouverts
• DB_FILES : nombre de fichiers de données pouvant être ouverts
En mode serveur dédié il est difficile de gérer l’allocation des
paramètres *_area_size. Depuis la 9i le DBA peut fixer sa PGA
maximale grâce au paramètre :
• PGA_AGGREGATE_TARGET
O.EL BEQQALI 32
L’instance
La Zone de tri
Une zone de tri est associée à un Serveur (dédié ou non) pour
traiter des ordres nécessitant des tris (Group by, Order by, Join,
...)
la taille de la zone de tri est déterminée par le paramètre
SORT_AREA_SIZE (en bytes)
• Par défaut cette taille est de 65000 bytes
• Si cette zone est pleine un Segment temporaire est généré
SORT_AREA_RETAINED_SIZE (exprimée en byte, 0 min,
Sort_area_size par défaut et max): espace à ne pas libérer en cas
d'écriture dans le segment temporaire tuning de la zone de tri ;
table v$sysstat
Sql> SELECT name, value FROM v$sysstat
WHERE name in ('sorts (memory)',
'sorts (disk)');
O.EL BEQQALI 33
L’instance
Processus utilisateur
Programme qui demande une interaction avec le serveur Oracle.
Ce processus doit d'abord établir une connexion.
Il n'entre pas directement en interaction avec le serveur Oracle.
Processus
serveur
Processus
utilisateur
Connexion
établie
O.EL BEQQALI 34
L’instance
Processus serveur
Programme qui entre directement en interaction avec le serveur
Oracle.
Il répond aux appels générés et renvoie les résultats.
Il peut s'agir d'un serveur dédié ou d'un serveur partagé.
Processus
Connexion serveur
établie Session crée
Processus Serveur Oracle
utilisateur
O.EL BEQQALI 35
Processus d'arrière-plan
O.EL BEQQALI 38
Processus d'arrière-plan
Fichiers
de
journali-
Fichiers Fichiers Fichiers sation
de de de archivés
données contrôle journa-
lisation
Base de O.EL
données
BEQQALI 40
Processus d'arrière-plan
O.EL BEQQALI 42
Administration de B.D : création
O.EL BEQQALI 43
Administration de B.D : création (suite)
Création d'une base
Etapes à suivre pour créer une base manuellement
1. Définir l’arborescence de la base
ora9data->dbtest->admin, tssys, tsusers, tstemp, tsrbs, …
2. Définir les scripts de création de la base(crDBTEST.sql)
3. Définir le fichier d’initialisation (initDBTEST.ora)
Si Win : Créer le service Win pour la base.
C:\>oradim –new –sid dbtest –intpwd manager –startmode auto –pfile
c:\ora9data\dbtest\admin\initDBTEST.ora
4. Lancer Sqlplus
c:\> sqlplus
username:sys as sysdba password:manager
5. Exécuter les commandes contenues dans crDBTEST.sql
- démarrer une instance (nomount)
- exécuter CREATE DATABASE …
- exécuter catalog.sql (pour les vues du dictionnaires)
- ajouter des tablespaces supplémentaires pour une meilleure orgainisation tstemp, tsrbs, tsutil
- ajouter des rbs supplémentaires si mode de gestion d’annulations manuelles
- exécuter catproc.sql (pour l’option procédurale)
- exécuter les scripts supplémentaires suivants : catdbsyn.sql
- fixer le tablespace temporaire des users SYS et SYSTEM vers le tablespace temporaire
O.EL BEQQALI 45
Administration de B.D : création (suite)
O.EL BEQQALI 46
Le fichier de paramètres
BASE FERMEE
Base de données fermée
NOMOUNT
MOUNT
Instance démarrée et fichiers de contrôle ouverts
. Utilisation : tâches de maintenance tels que renommer les fichers
(données, rédos, ...),
activer/désactiver le mode avec archive, recouvrer les données, ...
OPEN
O.EL BEQQALI 48
Démarrage et Arrêt par Etapes
OPEN
Tous les fichiers
définis pour cette
instance dans le
MOUNT fichier de contrôle
sont ouverts.
Fichier de
contrôle ouvert
pour cette
NOMOUNT instance.
Instance
démarrée.
SHUTDOWN
STARTUP PFILE=/DISK1/initMABASE.ora
O.EL BEQQALI 49
Démarrage et Arrêt par Etapes (2)
O.EL BEQQALI 50
Administration de B.D
O.EL BEQQALI 52
Tâches d'administration de base
O.EL BEQQALI 53
Administration de BD : SHUTDOWN
Arrêt d'une base
Procédure Générale
• Posséder les privilèges OS (osdba, osoper)
• positionner les variables d'environnement (ORACLE_SID et ORACLE_HOME)
• Lancer l'outil SQLPLUS
Syntaxe de la commande
• SHUTDOWN [NORMAL | IMMEDIATE | ABORT |
TRANSACTIONAL]
– NORMAL
attend la déconnexion de l'ensemble des utilisateurs
– IMMEDIATE
Invalide les transactions en cours et déconnecte les users
– ABORT
Arrêt violent de l'instance (recouvrement utile : SMON)
– TRANSACTIONAL
Contrairement à IMMEDIATE, laisse finir les transactions
en cours
O.EL BEQQALI 54
Mode d’arrêt d’une instance de BD
Mode d'arrêt A I T N
O.EL BEQQALI 56
Administration de BD
Suspension et réactivation de la base
Afin de permet une sauvegarde base en ligne sans
activité de mise à jour dans les fichiers de données
il est possible maintenant de suspendre l’activité
de mise à jour
Commande à exécuter pour suspendre la base
• SQL>ALTER SYSTEM SUSPEND
O.EL BEQQALI 58
Administration de BD : DD
Le dictionnaire de données d'Oracle (Contenu du DD)
des tables de base du dictionnaire stockées en cluster et finissant
par $. Exemple tab$, ind$, obj$, seg$, ...
les vues de performances
exemples : v_$process, v_$session, v_$syststat, v_$sesstat, ...
des vues sur le dictionnaire de base commençant par :
• user_* : information sur tous les objets dont
l'utilisateur connecté est propriétaire
• all_* : informations sur les tous les objets accessibles par
l'utilisateur connecté
• dba_* : information sur tous les objets de la base. Il faut
avoir le privilège SELECT ANY TABLE pour y accéder
des synonymes sur les vues pour simplifier. Exemple:
• v$process, v$session, v$systat, v$sesstat, ...
O.EL BEQQALI 59
Gestion de la sécurité et des ressources
Sécurité
et
Ressources Intérêt de l'audit
Audit objet
La table aud$
O.EL BEQQALI 60
Intégrité des données
Déclencheur de Contrainte
base de données d'intégrité
Données
Code
d'application
Table
O.EL BEQQALI 61
Gestion de la sécurité et des ressources
Généralités
Rôle de l'Administrateur de sécurité et des
ressources
• Définir une politique de sécurité
• Faire les choix du type de sécurité : au niveau
système, au niveau Oracle, au niveau Global
(LDAP)
• Gérer les utilisateurs
• Gérer les ressources (profiles)
• Assurer l’affectation et le retrait des droits
• Affiner la politique de sécurité par l'utilisation des
rôles
• Effectuer les auditsO.EL BEQQALI 62
Gestion de la sécurité et des ressources
Objectifs
créer des rôles
PROFILES
accorder des privilèges à des
rôles
accorder des rôles à des
utilisateurs ou à des rôles
établir des rôles par défaut
Droits
d’accès aux
tablespaces
(quotas,
TS temporaire, AUDIT
TS par défaut)
Utilisateur
PRIVILEGES
(Systèmes LES VUES
et Objets)
et RÔLES
O.EL BEQQALI 63
Gestion de la sécurité et des ressources
Les Privilèges
Intrtoduction
• Un privilège donne le droit d'exécuter
certaines commandes SQL ou le droit
d'accéder à certaines ressources
• Oracle possède deux types de privilèges :
les privilèges systèmes et les privilèges
objets.
• Un privilège peut être affecté (retiré) à un
Utilisateur, un Rôle ou tous les utilisateurs
(PUBLIC)
O.EL BEQQALI 64
Gestion de la sécurité et des ressources
Les Privilèges
Les privilèges Systèmes
• Oracle possède près de 127 privilèges Systèmes (la V6 en avait 3 : Connect,
resource, dba)
• Les privilèges donnent le droit de réaliser des opérations systèmes
• Ces privilèges sont classés par catégories d'objets
– ANALYZE AUDIT
– CLUSTER CONTEXT
– DATABASE DATABASE LINK
– DIMENSION INDEX
– INDEXTYPE LIBRARY
– MATERIALIZED VIEW MISCELLANEOUS
– OPERATOR OUTLINE
– PRIVILEGE PROCEDURE
– PROFILE Public Database Link
– PUBLIC SYNONYM ROLE
– ROLLBACK SEGMENT SESSION
– SEQUENCE SNAPSHOT
– SYNONYM SYSTEM
– TABLE TABLESPACE
– TRANSACTION TRIGGER
– TYPE USER
– VIEW
NOTE : Voir le site d’oracle pour obtenir la liste complète des privilèges
O.EL BEQQALI 65
Gestion de la sécurité et des ressources
Les privilèges
Exemple de privilèges systèmes de la catégorie TABLE:
– CREATE TABLE CREATE ANY TABLE
– ALTER ANY TABLE BACKUP ANY TABLE
– DROP ANY TABLE LOCK ANY TABLE
– LOCK ANY TABLE SELECT ANY TABLE
– INSERT ANY TABLE UPDATE ANY TABLE
– DELETE ANY TABLE COMMENT ANY TABLE
– UNDER ANY TABLE
O.EL BEQQALI 66
Gestion de la sécurité et des ressources
O.EL BEQQALI 68
Gestion de la sécurité et des ressources
Les privilèges Objets
Ces privilèges contrôlent l'accès aux objets des tables, vues, séquences,
procédures, fonctions et packages, vue matérialisée (VM) ....
Classification selon les types d'objets
Privilèges objets Libellé Objets concernés
ALTER droit de modifier table, séquence
DELETE droit de supprimer table , vue, VM
EXECUTE droit d’exécuter procédure, fonction,
package,type user,
opérateur, indextype,
library
INDEX droit de créer un index table
(ne peut être affecté à un rôle)
INSERT droit d’insérer table, vue,VM
ON COMMIT REFRESH droit de créer une vue matériali- table
sé ON COMMIT REFRESH
sur une table
QUERY REWRITE droit de créer une vue matérialisé table
QUERY REWRITsur une table
REFERENCES droit de référencer une table table
lors d'un alter ou create table
(ne peut être affecté à un rôle)
READ droit de lire dans une directory directory
SELECT droit de consulter table, vue,
snapshot, sequence
UPDATE droit de mise à jour table ou vue
UNDER droit de créer des sous vue vue, type user
WRITE droit d’écrire dans
O.ELune directory
BEQQALI directory 69
Gestion de la sécurité et des ressources
Les privilèges Objets
Affectation de privilèges objets
GRANT { object_priv | ALL [ PRIVILEGES ] } [( column [,column ] ...) ]
[, { object_priv | ALL [ PRIVILEGES ] } [ ( column [,column] ...) ] ]
ON [ schema.] object
TO { user | role | PUBLIC } [ WITH GRANT OPTION ]
• Notes :
– ALL : n’est pas un privilège mais signifie "tous les privilèges sur un objet"
– object_priv: Nom du privilège
– column : Nom d'une colonne si object_priv= insert, update ou references
– schema.objet : Nom de l'objet concerné
– With Grant Option: L'utilisateur qui reçoit le privilège peut le réaffecter.
• Exemple
sql>GRANT INSERT (ename, job) ON emp TO scott with grant option ;
sql> GRANT UPDATE (SAL), DELETE ON emp TO scott ;
sql> GRANT REFERENCES, UPDATE ON bonus TO BRAHIM ;
O.EL BEQQALI 70
Gestion de la sécurité et des ressources
Les privilèges Objets
Révocation de privilèges objets
• Syntaxe
REVOKE { object_priv | ALL [ PRIVILEGES ] }
ON [ schema. ] object
FROM { user | role | PUBLIC } [CASCADE CONSTRAINTS ]
• Notes
– CASCADE CONSTRAINTS : s’emploie avec le privilège REFERENCES,
– supprime les contraintes d'intégrité mises.
– Retrait d’un privilège et
– WITH GRANT OPTION:
– Si un utilisateur U1 a affecté un privilège P1 à U2 et U2 l'a affecté à
– U3, le retrait à U2 entraîne le retrait à U3 : le retrait se fait en cascade.
• Exemples
sql>REVOKE DELETE ON Bonus FROM scott ;
sql>REVOKE UPDATE ON emp FROM public;
sql>REVOKE REFERENCES ON scott.emp FROM BRAHIM ;
sql>REVOKE ALL ON bonus FROM PUBLIC ;
O.EL BEQQALI 71
Gestion de la sécurité et des ressources
Les privilèges Objets
Visualisation des privilèges objets
DBA_TAB_PRIVS DBA_COL_PRIVS
ALL_TAB_PRIVS ALL_COL_PRIVS
USER_TAB_PRIVS USER_COL_PRIVS
All_TAB_PRIVS_MADE DBA_COL_PRIVS
USER_TAB_PRIVS_MADE ALL_COL_PRIVS_MADE
USER_TAB_PRIVS_MADE USER_COL_PRIVS_MADE
ALL_TAB_PRIVS_RECD ALL_COL_PRIVS_RECD
USER_TAB_PRIVS_RECD ALL_COL_PRIVS_RECD
TABLE_PRIVILEGES COLUMN_PRIVILEGES
Principales Colonnes de vues ci-dessus
GRANTEE : utilisateur ayant reçu le privilège
OWNER : propriétaire de la table
TABLE_NAME : nom de la table
COLUMN_NAME : Nom de la colonne concerné
GRANTOR : Utilisateur ayant affecté le privilège
PRIVILEGE : privilège affecté
GRANT : privilège reçu.
O.EL BEQQALI 72
Gestion de la sécurité et des ressources
O.EL BEQQALI 73
Gestion de la sécurité et des ressources
pour des raisons de sécurité, un mot de passe peut être assigné à un rôle
O.EL BEQQALI 74
Gestion de la sécurité et des ressources
Utilisateurs
A B C
Privilèges
SELECT ON INSERT ON
JOBS JOBS
…
CREATE CREATE
TABLE SESSION
O.EL BEQQALI 75
Gestion de la sécurité et des ressources
Les rôles (Création)
A sa création, un rôle ne contient aucun privilège
• Syntaxe
CREATE ROLE role1
[ { NOT IDENTIFIED
| IDENTIFIED { BY password | EXTERNALLY | GLOBALLY |
USING package} ]
• Mots clés et paramètres
– role : nom du rôle à créer
– NOT IDENTIFIED : permet de créer un rôle sans mot de passe
– Password : mot de passe assigné au rôle
– EXTERNALLY : mot de passe est contrôlé au niveau de l'OS (Identifié de manière externe )
– GLOBALLY : Rôle autorisé au niveau de l’annuaire
– USING package : rôle applicatif
• Exemple
sq> ClREATE ROLE rl_etudiant ;
sql> CREATE ROLE rl_admin_secu IDENTIFIED BY secu_pass ;
sql> CREATE ROLE hr_manager IDENTIFIED EXTERNALLY;
O.EL BEQQALI 76
Gestion de la sécurité et des ressources
• Exemple
DROP ROLE rl_admin_secu ;
O.EL BEQQALI 78
Gestion de la sécurité et des ressources
Les Rôles
Affectation de privilèges ou de rôles à un rôle
Exemple
• Création de deux rôles
# rôle rassembCREATE ROLE rl_connect ;
lant les privilèges pour se connecter
# rôle rassemblant les privilèges pour administrer la sécurité
CREATE ROLE rl_admin_secu ;
Affectation des privilèges aux rôles
GRANT create session, alter session, Restricted session TO rl_connect ;
GRANT create role, create user, create profile TO rl_admin_secu;
Affectation d'un Rôle à un autre Rôle
GRANT rl_connect TO rl_admin_secu ;
Affectation de privilèges à un rôle
Privilèges ne pouvant être affectés à un ROLE
• Privilège Système
– UNLIMITED TABLESPACE
Ce privilège inhibe tous les quotas et autorise l'utilisateur à créer des objets dans n'importe
quel tablespace.
• Privilèges Objets
INDEX # droit de créer un index sur les tables d'autres utilisateurs
REFERENCES # droit de référencer une table dans le schéma d'autres utilisateurs
O.EL BEQQALI 79
Gestion de la sécurité et des ressources
Les Rôles (Affectation d'un rôle à• Oracle
un Utilisateur)
Elle peut se faire au niveau : • du Système d'Exploitation (OS)
• De l’
l’annuaire de l’
l’entreprise
O.EL BEQQALI 80
Rôles prédéfinis
NOM DU ROLE PRIVILEGES AFFECTES AU ROLE
Exemple 1 : listing de tous les rôles de la base Exemple 2 : liste des rôles affectés à un role ou un user.
sql> SELECT * FROM dba_roles ; sql>SELECT * FROM dba_role_privs WHERE grantee = 'RL_ADMIN_SECU' ;
ROLE PASSWORD GRANTEE GRANTED-ROLE ADM-
GRANTED- ADM-DEF Default
CONNECT NO RL_ADMIN_SECU RL_CONNECT NO
RESOURCE NO YES
DBA NO Exemple 3 : liste des rôles actifs pour la session
EXP_FULL_DATABASE NO sql> SELECT * FROM session_roles;
IMP_FULL_DATABASE NO
MONITORER NO ROLE
RL_ADMIN_SECU NO DBA…..
RL_CONNECT NO
O.EL BEQQALI 82
Gestion de la sécurité et des ressources : RÔLES
Les profiles
Un profile est un concept Oracle qui permet à l'administrateur
d'une base de contrôler la consommation des ressources
systèmes et des mots de passes
Il existe un profile par défaut appelé DEFAULT. Il est par défaut
affecté à un utilisateur lors de sa création
Les limites du profile DEFAULT sont positionnées à UNLIMITED
Le profile DEFAULT ne peut être supprimé. Les limites de ce
profile peuvent par contre être modifiées
activation et contrôle des limites :
• dans le fichier initSID.ora positionner :
RESOURCE_LIMIT = TRUE
• ou dynamiquement faire sous sqlplus par exemple :
SQL> ALTER SYSTEM SET resource_limit = true;
O.EL BEQQALI 83
Gestion de la sécurité et des ressources : RÔLES
Les Profiles (Création)
Privilège requis CREATE PROFILE
Syntaxe partie limite des ressources
CREATE PROFILE profile LIMIT
[ SESSIONS_PER_USER { integer | UNLIMITED | DEFAULT} ]
[ CPU_PER_SESSION { integer | UNLIMITED | DEFAULT } ]
[ CPU_PER_CALL { integer | UNLIMITED | DEFAULT } ]
[ CONNECT_TIME { integer | UNLIMITED | DEFAULT } ]
[ IDLE_TIME { integer | UNLIMITED | DEFAULT } ]
[LOGICAL_READS_PER_SESSION {integer | UNLIMITED|DEFAULT}]
[LOGICAL_READS_PER_CALL {integer | UNLIMITED|DEFAULT}]
[ COMPOSITE_LIMIT { integer | UNLIMITED | DEFAULT } ]
[PRIVATE_SGA {integer [K | M] | UNLIMITED | DEFAULT}]
Mots clés et paramètres
• Session_per_user : Nombre maximum de sessions par utilisateur
• Logical_read_per_session : Nbre de blocs de données à lire pour une session
• cpu_per_session : temps CPU max par session en % de sécondes
• cpu_per_call : temps CPU pour un appel (en cas de parse, execute ou fetch) en % de secondes
• connect_time : temps écoulé maximum (en minutes)
• idle_time : temps maximum d'inactivité.
• private_sga : taille privée de la SGA allouée à un utilisateur
• unlimited : limite de la ressource illimitée
• default : prend la limite par défaut de la ressource
O.EL BEQQALI 84
Gestion de la sécurité et des ressources : RÔLES
O.EL BEQQALI 85
Gestion de la sécurité et des ressources : RÔLES
Les Profiles (Création)
Exemple 1
CREATE PROFILE pf_secretaire LIMIT
sessions_per_user 2
cpu_per_session unlimited
cpu_per_call 1000
logical_reads_per_session unlimited
logical_reads_per_call 100
idle_time 30
connect_time 480 ;
Exemple 2
CREATE profile pf_agent LIMIT
sessions_per_user 2
cpu_per_session unlimited
cpu_per_call 1000
composite_limit 20000
private_sga 32K ;
Exemple 3
CREATE PROFILE pf_admin
PASSWORD_LIFE_TIME 200
LIMIT PASSWORD_REUSE_MAX DEFAULT
PASSWORD_REUSE_TIME UNLIMITED
CPU_PER_SESSION UNLIMITED
O.EL BEQQALI 86
Gestion de la sécurité et des ressources : RÔLES
O.EL BEQQALI 88
Gestion de la sécurité et des ressources
Les utilisateurs
La notion d'utilisateur est fondamentale pour accéder aux données
d'une base Oracle
Le site d'un client Oracle doit être tenu à jour au niveau des licences
:
• les paramètres de init.ora pour le contrôle de la licence (valeurs par
défaut 0) : license_max_session, license_sessions_warning,
license_max_users
Si la limite en nombre de sessions est illimitée conserver les valeurs
par défaut
• Seuls les utilisateurs avec le privilège RESTRICTED SESSION peuvent
se connecter en cas de dépassement de la limite
• en cas de mise en oeuvre de l'architecture parallèle, chaque instance à
ses limites mais la somme doit équivaloir à la somme des limites du site
• visualisation des limites des licences v$license
O.EL BEQQALI 89
Gestion de la sécurité et des ressources
Les utilisateurs
Contrôle de la limitation du nombre d'utilisateurs
• Au moment du lancement d'une instance
LICENSE_MAX_USERS = 80
• Au moment ou l'instance tourne
sqlplus >ALTER SYSTEM
SET LICENSE_MAX_USERS=100;
O.EL BEQQALI 90
Etablir des rôles par défaut
O.EL BEQQALI 91
Rôles d'application
O.EL BEQQALI 92
Activer et désactiver les rôles
O.EL BEQQALI 94
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, utilisez la syntaxe
suivante :
Utilisateurs
Rôles
utilisateur HR_CLERK HR_MANAGER PAY_CLERK
Rôles
d'application BENEFITS PAYROLL
Privilèges
d'application
Privilèges Benefits Privilèges Payroll
O.EL BEQQALI 96
Règles d'utilisation des mots de passe et
des rôles par défaut
PAY_CLERK PAY_CLERK_RO
O.EL BEQQALI 97
Utilisateurs et Sécurité
Mécanisme Tablespace
d ’authen- temporaire
tification
Domaine de
sécurité
Privilèges de Quotas de
rôle tablespace
Privilèges Limites de
directs ressources
O.EL BEQQALI 98
Schéma de Base de Données
-Tables
- Triggers
- Contraintes
-Index
-Vues
-Séquences
-Procédures stockées
-Synonymes
-Types de données définis par l ’utilisateur
-Database Links…
O.EL BEQQALI 99
Liste de Contrôle pour la Création
d’utilisateurs
1. Choisissez un nom d’utilisateur et un
mécanisme d’authentification
2. Identifiez les tablespaces dans lesquels
l’utilisateur doit stocker des objets
3. Décidez des quotas pour chaque
tablespace
4. Affectez un tablespace par défaut et un
tablespace temporaire
5. Créez le compte utilisateur
6. Accordez des privilèges et des rôles à
l’utilisateur
O.EL BEQQALI 100
Création d’un Nouvel utilisateur :
USER_SEQUENCES […..]
*Pseudo-colonnes :
CURRVAL retourne la valeur courante
NEXTVAL incrémente la séquence et retourne la
valeur obtenue
O.EL BEQQALI 102
SEQUENCES (suite)
Exemple : create sequence seq1 start with 1 increment
by 1 MAXVALUE 30;
* seq1.CURRVAL qui retourne la valeur courante de la
séquence (lecture seule) ;
* seq1.NEXTVAL qui incrémente la séquence et retourne la
nouvelle valeur de celle-ci (écriture et lecture).
Modification d’une séquence : (le privilège ALTER ANY
SEQUENCE est requis)
ALTER SEQUENCE Nom_seq INCREMENT BY 5
MAXVALUE 850;
[Variable_locale type_variable_locale;]
BEGIN
{ contenu du bloc PL }
END [nom_procédure];
/
Suppression
DROP PROCEDURE nom_procédure;
O.EL BEQQALI 110
Les fonctions
[Variable_locale type_variable_locale;]
BEGIN
{ contenu du bloc PL }
RETURN variable_a_retourner;
END [nom_function]
END; O.EL BEQQALI 111
Les fonctions (exemple)
PROCEDURE FONCTION
Suppression
DROP FUNCTION nom_fonction;
declare
res int;
begin
res := f_Fact(5);
dbms_output.put_line('Résultat : ' || res);
end;
/
O.EL BEQQALI 117
Exemple
Soit la table table Patient (id_P, Température Number);
* Construit en 2 parties:
SPECIFICATION & BODY
O.EL BEQQALI 120
Les packages (suite)
Un package est un objet de la base de données
qui encapsule d’autres objets (procédures,
fonctions ..)
Autres….
DBMS_REFRESH.REFRESH (….)
Définition
Un trigger stocké est un traitement procédural lié à une
table et une seule, et donc répertorié dans le
dictionnaire de données.
• Il se déclenche automatiquement lors d'un
événement intervenu sur la table dont il
dépend: insertion, suppression ou mise à jour
• Il este valide tant que la table existe.
• Il peut être actif ou inactif
O.EL BEQQALI 124
Les triggers (2)
2 types de trigger:
Déclenchement sur chaque ligne mise a jour
Déclenchement une seule fois pour la mise à
jour
2 séquencements:
Avant la mise à jour
Après la mise à jour
12 triggers possibles sur une table
O.EL BEQQALI 125
Les triggers stockés (3)
DECLARE
--Déclaration de variables locales au trigger;
BEGIN
{ contenu du bloc PL}
END;
/