Vous êtes sur la page 1sur 116

BASES DE DONNEES AVANCEES

SMI6-II6

L. KOUTTI

2017
1
Sommaire
 Chapitre 1 : Introduction
 Rôle d’un administrateur bases de données

 Chapitre 2 : Composants de l’architecture Oracle


 Serveur Oracle
 Présentation générale de l’architecture Oracle
 Instance Oracle
o Structure mémoire
 Mémoire SGA
• SGA – Zone mémoire Shared Pool
• SGA – Zone mémoire Library Cache
• Algorithme LRU
• SGA – Zone mémoire Dictionnary Cache
• SGA – Zone mémoire Databse Buffer Cache

2
Sommaire
• SGA – Zone mémoire Large Pool
• SGA – Zone mémoire Java Pool
 Mémoire PGA
o Structure de processus
 Processus Utilisateur
 Processus Serveur
 Les processus taches du fond
• PMON
• SMON
• ARCn et CKPT

 Chapitre 3 : Base de données Oracle


 Structure physique d’une nase de données
 Structure logique

3
Sommaire
 Structure logique
o TABLESPACE
o SEGMENT
o EXTENT
o BLOC
 Gestion des tablespaces et des fichiers de données
 Gestion des fichers Redo Log et des fichiers de conrole
 Archivage des fichiers Redo Log
 Chapitre 4 : Gestion d’une instance
 Démarrage et arret d’une base de données
 Fichier de paramètres d’initialisation
 Mode restreint
 Mode lecture seule
 Chapitre 5 : Gestion des utilisateurs, PROFILES et PRIVILEGES

4
Sommaire
 Gestion des utilisateurs ORACLE
 Gestion des profiles utilisateurs
 Gestion des privilèges
o Privilège système
o Privilège objet
 Privilège SYSDBA et SYSOPER
 Gestion des ROLES
 Vues privilèges et roles

5
Objectifs

Présenter les principales tâches d'administration d'une base de


données oracle  :
 Compréhension minimal de l'architecture Oracle,
 Installation,
 Arrêt et démarrage,
 Planification et création d’une novelle bases de données,
 Gestion des fichiers de contrôle, des fichiers de

journalisation, des fichiers de données, des tablespaces,


 Gestion des utilisateurs, des privilèges,
 Sauvegarde et restauration.

6
Tâches de l'administrateur de Base de données

- Responsable du contrôle et de la configuration du système et des


utilisateurs
- Quelques tâches du DBA :
 Installation du serveur Oracle et les outils applicatifs, créer les bases
de données.
 Assurer la maintenance et la disponibilité de la base de données.
 Créer la structure logique de stockage : les tablespaces, les tables,
les vues et les indexes.
 Manager la structure physique de stockage, comprenant les fichiers
de données, les fichiers de contrôle et les fichiers de redo log.
 Allouer et prévoir l'espace disque système de stockage nécessaire
aux spécifications de la base de données.
 Maintenir, contrôler et monitorer les accès des utilisateurs.
 Assurer la sécurité du système.
 Monitorer les performances de la base de données.
 Créer un plan de sauvegarde et de récupération.
7
Composants de
l’architecture Oracle

8
Serveur Oracle

Un serveur Oracle :
 est un système de
gestion de base de
données qui offre une
méthode de gestion des
informations ouverte,
complète et intégrée,
 est constitué d'une
instance et d'une base
de données Oracle.
9
Présentation générale de l’architecture Oracle

Un serveur Oracle est constitué d'une instance Oracle et d'une base de données Oracle

*) SGA : System Global Area


10
Instance Oracle
Une instance est l’ensemble des processus d’arrière plan et des zones
mémoires qui permettent l’exploitation d’une BD. Une instance peut être vue
comme une instanciation du serveur pour une BD donnée.
 Elle permet d'accéder à une base de données Oracle,
 Elle n'ouvre qu'une seule base de données,

Une zone mémoire : La SGA

Elle va servir à stocker les données issues des fichiers de données sur le
disque dur. Afin de pouvoir les partager entre les différents processus.
Des processus d'arrière plan :

Ils vont servir à gérer les transferts de données entre la mémoire et le disque
dur, plus d'autres actions nécessaires au bon fonctionnement de la base de
données.
L'instance est indispensable au bon fonctionnement d'une base de données
Oracle. Sans instance il ne vous sera pas possible d'accéder à la base de
données. 11
Structure Mémoire

La structure mémoire d'Oracle est constituée des deux

zones de mémoire suivantes :

 La mémoire SGA, qui est allouée au démarrage de

l'instance et qui est une composante fondamentale


d'une instance Oracle

 La mémoire PGA, qui est allouée au démarrage du

processus serveur.
  12
Mémoire SGA
La mémoire SGA est constituée de plusieurs structures mémoire :
 la zone de mémoire partagée,
 le cache de tampons de la base de données,
 le tampon de journalisation,
Deux structures mémoire supplémentaires peuvent également
être configurées dans la mémoire SGA :
 la zone de mémoire LARGE POOL,
 la zone de mémoire Java.
 Taille définie à l'aide du paramètre SGA_MAX_SIZE

L'instruction suivante permet d'afficher les allocations de la


mémoire SGA :

SQL> SHOW SGA 13


SGA– Zone mémoire Shared Pool

La Shared Pool ou zone de mémoire partagée est utilisée pour


partager les informations sur les objets de la base de données
ainsi que sur les droits et privilèges accordés aux utilisateurs.

Cette zone mémoire est décomposée en deux structures :

 La Library Cache
 Le Dictionnary Cache
 Paramètre : SHARED_POOL_SIZE

On dimensionnera la taille de la Shared Pool avec le paramètre


SHARED_POOL_SIZE dans le fichier init.ora.

14
SGA– Zone mémoire Library Cache

La Library Cache est une zone mémoire qui va stocker les


informations sur les ordres SQL exécutés récemment dans
une zone SQL Cache qui contiendra le texte de l'ordre SQL,
la version compilée de l'ordre SQL et son plan d'exécution.

Cette zone mémoire sera utilisée lorsqu'une requête sera


exécutée plusieurs fois, car Oracle n'aura plus alors à
recréer la version compilée de la requête ainsi que son plan
d'exécution car ceux-ci seront disponible en mémoire.

Il est géré par un algorithme LRU.

15
Algorithme LRU

L’algorithme LRU (Least Recently Used) de


gestion de file permet de chercher dans la file un
élément. S’il n’y ait pas, il est récupérer dans les
fichiers. Dans tous les cas, on le sort de la file
pour le réenfiler. Si la file est pleine, on défile un
élément).

16
SGA– Zone mémoire Dictionnary Cache

Le cache du dictionnaire des données permet de stocker les


données du dictionnaire des données (comptes utilisateur,
fichiers de données, tables, privilèges). Ce cache se remplit
au fur et à mesure de l’utilisation de la BD. Quand il est plein,
l’algorithme de gestion retire les données dont l’utilisation est
la plus ancienne.

17
SGA– Zone mémoire Database Buffer Cache

Cette zone mémoire sert à stocker les blocs de données utilisés

récemment. Ce qui signifie que lorsque vous allez lancer une

première fois la requête Oracle, cette dernière va se charger de

rapatrier les données à partir du disque dur. Mais lors des

exécutions suivantes les blocs de données seront récupérés à

partir de cette zone mémoire, entrainant ainsi un gain de temps.

 Paramètre : DB_CACHE_SIZE et DB_BLOCK_SIZE


18
SGA– Zone mémoire Redo Log Buffer

Zone mémoire qui contient les entrées des données modifiées et


validées avant qu’elles ne soient enregistrées dans les fichiers
des journaux de reprise. Ces entrées permettent lors d’une panne,
de restituer les fichiers de données afin de rendre la base de
données cohérente.

Paramètre : LOG_BUFFER

Son utilisation est séquentielle et circulaire. Il est renouvelé


lorsqu’il est plein et que les entrées ont été enregistrées dans les
fichiers de redo log on-line.
19
SGA– Zone mémoire Large Pool

La Large pool est un composant facultatif qui prend la relève


lorsque de fortes demandes mémoires surviennent et que la
Shared pool ne peut accéder à ses demandes dans un temps
satisfaisant. Elle est utilisée :

 Si PARALLEL_AUTOMATIC_TUNING = TRUE
 Dans le cas des transactions sur plusieurs bases de données
 Pour les opérations de sauvegarde et restauration d’Oracle.
 Sa taille est définie par le paramètre LARGE_POOL_SIZE
20
SGA– Zone mémoire Java Pool

La Java pool est un autre composant facultatif. C’est la


mémoire utilisée par la machine virtuelle de Java intégrée.

Cette zone permet d’exécuter le code Java stocké dans le


noyau Oracle.
Dimensionnée par le paramètre JAVA_POOL_SIZE (24 Mo
par défaut)
peut être mise à 0 si la machine virtuelle intégrée à Oracle
n’est pas utilisée

21
Mémoire PGA

Contrairement aux autres zones mémoire, celle-ci n'est pas


partagée. Elle est seulement utilisée par des processus serveur
ou processus d'arrière plan. Elle est allouée lors du démarrage du
processus et dés-allouée lors de l'arrêt du processus. Elle
contient :
 La zone de tri : Appelée SORT AREA, c'est dans cette zone
que seront effectués les tris pour les requêtes lancées par
l'utilisateur.
 Les informations de sessions : Cette zone contiendra les
informations de sessions, les privilèges de l'utilisateur, ainsi
que des statistiques de tuning concernant la session.
 L'état des curseurs : Cette zone permettra de connaître l'état
des curseurs de l'utilisateur.
 On peut modifier la taille de la SORT AREA en changeant la
valeur du paramètre SORT_AREA_SIZE. 22
Structure de processus

Le fonctionnement de la base Oracle est régi par un certain


nombre de processus chargés en mémoire permettant
d'assurer la gestion de la base de données.

On distingue généralement deux types de processus :


Les processus utilisateurs.
Les processus systèmes (oracle process).
Les processus Oracle (processus système) se classent en
deux catégories :
- Les processus serveurs (process server).
- Les processus d'arrière-plan (background process).
23
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

Utilisateur de la base de données

24
Processus Serveur

Il permet de gérer les requêtes des utilisateurs provenant des connections à la


base de données générées par des outils tels que SQL*Plus. Le processus
serveur est chargé de la communication entre la SGA et le processus
utilisateur. Il permet ainsi d'analyser et d'exécuter les requêtes SQL des
utilisateurs, de lire les fichiers de données et de placer les blocs de données
correspondants dans la SGA.
Processus
serveur Session crée
ta blie
Processus i oné Serveur Oracle
x
utilisateur
onne
C

Utilisateur de la base de données

25
Etablir une connexion et créer une session

Pour soumettre des instructions SQL à une base de données


Oracle, l'utilisateur doit se connecter à une instance 
L'utilisateur démarre un outil, par exemple SQL*Plus. Cette
application ou cet outil est exécuté en tant que processus
utilisateur.
 lorsqu'un utilisateur se connecte au serveur, un processus
appelé processus serveur est créé sur l'ordinateur qui exécute
le serveur Oracle. Ce processus communique avec l'instance
Oracle pour le compte du processus utilisateur exécuté sur le
client et il exécute des instructions SQL pour le compte de
l'utilisateur.

 Connexion :
Une connexion est un chemin de communication entre un
processus utilisateur et un serveur Oracle
26
Les processus tâches du fond

Les processus d’arrière plan gère les relations entre les buffers et
les fichiers ainsi que les processus eux-mêmes.
Les 4 principaux processus systèmes sont :
 DBWR (DataBase Writer ou Dirty Buffer Writer),
 LGWR (Log Writer),
 PMON (Process Monitor),
 SMON (System Monitor).
Il existe également d'autres processus d'importance secondaire :
 CKPT (CheckPoint),
 RECO (Recoverer),
 ARCH (Archiver).

27
DBWR (Database Writer process)

Le processus DBWn (ou Database Writer) va être dédié à l'écriture du


Database Buffer Cache dans les fichiers de données de la base de
données.
Ce processus est aussi là pour vérifier en permanence le nombre de
blocs libres dans le Database Buffer Cache afin de laisser assez de
place de disponible pour l'écriture des données dans le buffer.
DBWn se déclenchera lors des événements suivants :
 Lorsque le nombre de bloc dirty atteint une certaine limite,
 Lorsqu'un processus sera à la recherche de blocs libres dans le
Database Buffer Cache, et qu'il ne sera pas en mesure d'en trouver.
 Lors de timeouts (environ toutes les 3 secondes par défaut)
 Lors d'un checkpoint. 28
LGWR (Log Writer process)

Le processus LGWR (ou Log Writer) est le processus qui va écrire les
informations contenues dans le REDO LOG Buffer dans les fichiers
REDOLOGFILE lors des événements suivant :
 Quand une transaction est terminée avec un COMMIT
 Quand le REDO LOG Buffer est au 1/3 plein (peut dépendre
de vos propres paramètres),
 Quand il y a plus de 1Mo d'informations de log contenues dans le
buffer,
 Avant que DBWn n'écrive le contenu du Database Buffer Cache
dans les fichiers du disque dur.

29
PMON (Process Monitor)

Le processus PMON (Process Monitor) a pour but de


récupérer les ressources associées à des défaillances de
processus utilisateurs. Ainsi il supprime les processus en
erreur, il annule les transactions n'ayant pas été validées
(par exemple si un client est déconnecté brutalement lors de
la transaction); il libère les verrous, et libère les ressources
utilisées inutilement dans la SGA.
30
SMON (System Monitor)
SMON sert à corriger les plantages de l'instance vérifie la synchronisation des
données. Si l'instance plante, SMON va charge de rejouer le contenu des REDO LOG
FILE afin de pouvoir rejouer les transactions et de resynchroniser les données
dans les fichiers de données.

Voici les étapes de cette récupération :

Etape 1 : SMON va automatiquement rejouer les transactions qui ont été


enregistrées dans les fichiers REDO LOG FILE mais pas sur le disque dur. Le fait de
rejouer les transactions contenues dans les fichiers REDO LOG FILE va permettre
de valider les transactions qui avaient été validées mais qui n'avaient pas pu être
enregistrée sur le disque.
Etape 2 : SMON va ouvrir la base de données pour les utilisateurs. Toutes les
informations qui ne sont pas utilisées dans l'étape 1 et qui ont été validées sont
alors disponibles immédiatement. Les autres restent verrouillées pour l'étape 3.
Etape 3 : SMON se charge alors d'annuler toutes les transactions qui n'avaient pas
été validés. Ce qui permettra d'avoir un état valide de la base de données.
SMON sert aussi à nettoyer les segments temporaires après leur utilisation. Il sert
aussi à défragmenter les fichiers de données, tablespaces et autres.
31
ARCn et CKPT
 ARCn Processus d'arrière-plan facultatif
 En mode ARCHIVELOG, il archive automatiquement les
fichiers de journalisation en ligne.

Fichiers ARCn
Fichiers de
de Fichier journalisation
données de Fichiers de
journalisation archivés
contrôle

 CKPT(Checkpoint) inscrit les informations de point de


reprise dans les fichiers de Contrôles et dans l'entête de
chaque fichier de données. C'est ce point de reprise (SCN)
qui permet de rendre cohérent les fichiers de contrôles et
les fichiers de données, indispensable pour un processus
de récupération.
32
Les processus ARCn et CKPT

CKPT(Checkpoint) inscrit
Instance
les informations de point de
Mémoire SGA
reprise dans les fichiers de
Contrôles et dans l'entête
de chaque fichier de
données. C'est ce point de
DBWn LGWR CKPT
reprise (SCN) qui permet de
rendre cohérent les fichiers
de contrôles et les fichiers
Fichiers de Fichiers de Fichiers
données contrôle de
journa-
de données,
lisation
indispensable pour un
Base de données processus de récupération.

33
BASE DE DONNES
ORACLE

34
Base de données Oracle

Une base de données Oracle :


Est un ensemble de données traitées comme une seule et même entité,
Elle comporte des structures logiques et des structures physiques.
Elle est constituée physiquement de plusieurs fichiers de données
regroupés logiquement en TABLESPACE.

35
Structure Physique d’une base de données Oracle

Physiquement, une base de données Oracle est


composée d'un certain nombres de fichiers :

Base de données Oracle


Fichier de
paramètres
Fichiers Fichiers de
de journalisation Fichiers de
Fichiers contrôle
de Journalisation
données archivés
Fichier
de mots
de passe

36
Structure Logique

La structure logique d'une base est composée


 des tablespaces,
 des segments,
 des extensions (extents),
 des blocs.
Tablespace
Fichier de données
Segment Segment

Extent Blocs

37
Structure Physique

La structure physique comprend trois types de fichier :


 Fichiers de contrôle (Control Files)
 Fichiers de données (Datafiles)

 Fichiers de journalisation(Redo Log Files)

En-tête
Fichiers
Fichiers de de
Données contrôle
(incluent le
Fichiers de
dictionnaire
journalisatio
n de données)
en ligne

38
Fichiers de données

 Ils contiennent toutes les données relatives à une base de


données (dictionnaire Oracle, Tables, index, clusters,
rollback segments, segment temporaires),
 Ces fichiers sont lus par les process Serveurs et modifiés par
DBWn,
 Un fichier de données n’est associé qu’à une seule base de
données,
 A la création de la base est crée au moins un fichier de
données qui contient le dictionnaire des données,
 Les fichiers de données sont regroupés logiquement dans des
objets appelés TABLSPACES.
39
Structure logique - TABLSPACE

 Une base de données Oracle est divisée en plus


petites zones logiques nommées tablespaces,
 Un Tablespace ne peut appartenir qu’à une seule BD,
 Chaque Tablespace est constitué d’un ou plusieurs
fichiers de données stockés sur disque.
o Un fichier ne peut appartenir qu’à un seul
Tablespace à la fois,
o Une fois un fichier ajouté à un Tablespace, on ne
peut plus le retirer ou l’associer à un autre
Tablespace.
o Le stockage est organisé en segments et extent
40
Structure logique - SEGMENT

L’espace occupé par un objet (structure logique, par exemple une


table ou un index ) dans un tablespace est désigné par le terme
de segment.
Un tablespace peut contenir un ou plusieurs segments. Des
segments sont créés dans la base de données pour stocker,
extraire et gérer des données.
 Un segment est constitué d’un ou plusieurs extents. c'est à dire
d’un ensemble de blocs contigus permettant de stocker un certain
type d’information. Des extents sont ajoutés lorsqu’un segment
nécessite davantage d’espace.
 Un segment ne peut pas être réparti sur plusieurs tablespaces,
mais peut s'étendre à plusieurs fichiers de données d'un même
tablespace.
41
Structure logique - SEGMENT

Les différents types de segments sont les suivants :

 Les segments de table = espace occupé par les tables


 Les segments d’index = espace occupé par les index
 Les segments d’annulation = espace temporaire utilisé
pour stocker les informations permettant d’annuler une
transaction (ROLLBACK).
 Les segments temporaires = espace temporaire utilisé
lors d’un tri dans une requête.

42
Structure logique – EXTENTS et BLOCS

Extent
 Ensemble contiguë de blocs de données alloués
simultanément à un segment
 Tout segment est créé avec au moins un extent
(Initialextent)
 Lorsqu’un segment est plein, attribution d’un nouveau extent
 Mode de gestion :

L’extent peut être gérer de deux façon :


• par le dictionnaire : les information sur les extents libre et
alloués sont stockés dans des tables du dictionnaire
 pénalise les performances

43
Structure logique – EXTENTS et BLOCS

• localement : les information sur les extents libre et alloués

sont stockés dans les entêtes des fichiers de données du


tablespace
 Des extents sont alloués à un segment :
• à la création du segment
• à l’extension du segment
• à la modification d’un segment
 Un extent est libéré lorsque le segment est :
• supprimé
• modifié
• vidé
• redimensionné automatiquement

44
Structure logique – EXTENTS et BLOCS

 Blocs de données
 Plus petite unité logique
 La taille d’un bloc peut être choisie au moment de
l’initialisation d’une base. Elle correspond obligatoirement à
un multiple de la taille des blocs du système d’exploitation.

45
Gestion des Tablespaces et des fichiers de données - Création

CREATE TABLESPACE tbs_name


DATAFILE 'nom_fichier' [ SIZE valeur [K|M|G|T]
] [REUSE]
AUTOEXTEND {OFF|ON [NEXT valeur [K|M|G|T] ]
[ MAXSIZE { UNLIMITED | valeur [K|M|G|T] } ] }
EXTENT MANAGEMENT LOCAL { AUTOALLOCATE |
UNIFORM [ SIZE valeur [K|M|G|T] ] }
SEGMENT SPACE MANAGEMENT{ MANUAL | AUTO }
[ BLOCKSIZE valeur (K) ]
[ LOGGING | NOLOGGING ]
[ ONLINE | OFFLINE ];

46
Gestion des Tablespaces et des fichiers de données - Modification

Un certain nombre de manipulations sont effectuées


durant la vie de ces tablespaces
 Allouer de l’espace supplémentaire à un tablespace
 Passer un tablespace OFFLINE/ONLINE
 Déplacer le(s) fichier(s) de données
 Passer un tablespace READ ONLY/READ WRITE
 Renommer un tablespace

Ces opérations s’effectuent avec la commande SQL :


ALTER TABLESPACE ou ALTER DATABASE.

47
Gestion des Tablespaces et des fichiers de données - Modification

 Ajouter un fichier de données


Il est possible d’agrandir un tablespace par l’ajout d’un fichier de données.
ALTER TABLESPACE tbs_name
ADD DATAFILE spécification_fichier_data [,…];
Exemple
ALTER TABLESPACE data
ADD DATAFILE '$ORACLE_HOME\oradata\TPX920\data01.dbf' SIZE 100M
AUTOEXTEND ON NEXT 100M MAXSIZE 500M;
 Modifier la taille du fichier rattaché au tablespace
ALTER DATABASE DATAFILE ‘nom_complet’ [,…] RESIZE valeur [K|
M];
Exemple
ALTER DATABASE
DATAFILE '$ORACLE_HOME\oradata\TPX920\data01.dbf' RESIZE 800M;48
Gestion des Tablespaces et des fichiers de données - Modification

 Ajouter un fichier de données


Il est possible d’agrandir un tablespace par l’ajout d’un fichier de données.
ALTER TABLESPACE tbs_name
ADD DATAFILE spécification_fichier_data [,…];
Exemple
ALTER TABLESPACE data
ADD DATAFILE '$ORACLE_HOME\oradata\TPX920\data01.dbf' SIZE 100M
AUTOEXTEND ON NEXT 100M MAXSIZE 500M;
 Modifier la taille du fichier rattaché au tablespace
ALTER DATABASE DATAFILE ‘nom_complet’ [,…] RESIZE valeur [K|
M];
Exemple
ALTER DATABASE
DATAFILE '$ORACLE_HOME\oradata\TPX920\data01.dbf' RESIZE 800M;49
Gestion des Tablespaces et des fichiers de données - Modification

La taille d'un fichier de données existant peut être modifiée d'une de ces deux
façons:
automatiquement avec l'option AUTOEXTEND ou
manuellement avec la commande ALTER DATABASE.
 
L'option AUTOEXTEND active ou désactive l'extension automatique des
fichiers de données.
La commande SQL permettant de spécifier l'option AUTOEXTEND pour un
fichier de données existant est la suivante :

ALTER DATABASE
DATAFILE ‘nom_complet’ [,…]
AUTOEXTEND [ON|OFF];

50
Gestion des Tablespaces et des fichiers de données - Modification

 désactivation de la clause autoextend


ALTER DATABASE
DATAFILE '$ORACLE_HOME\oradata\TPX920\data01.dbf'
AUTOEXTEND OFF;
 activation (ou modification) de la clause autoextend
ALTER DATABASE
DATAFILE '$ORACLE_HOME\oradata\TPX920\data01.dbf'
AUTOEXTEND ON NEXT 200M MAXSIZE 800M;

51
Gestion des Tablespaces et des fichiers de données - Modification

Passer un tablespace OFFLINE ou ONLINE :


Les clauses ONLINE ou OFFLINE permettent d’activer ou de désactiver un
tablespace. Les objets contenus dans le tablespace ne sont plus accessibles
par les utilisateurs si la clause OFFLINE est utilisée.
ALTER TABLESPACE ‘nom_complet’
ONLINE | OFFLINE;
Désactivation : ALTER TABLESPACE data OFFLINE;
Activation : ALTER TABLESPACE data ONLINE;
Passer un tablespace READ ONLY ou READ WRITE :
Le tablespace en READ ONLY ne permet plus l’écriture dans les objets qu’il
contient.
 
ALTER TABLESPACE ‘nom_complet’
READ ONLY | READ WRITE;
Désactivation : ALTER TABLESPACE data READ ONLY;
Activation : ALTER TABLESPACE data READ WRITE;
52
Cette action est possible par un ALTER TABLESPACE ou un ALTER
DATABASE RENAME FILE.

Les commandes ne manipulent pas physiquement le fichier ;


Elles se contentent de mettre à jour le dictionnaire Oracle et les fichiers de
contrôle, de plus le fichier doit être renommé + copié + déplacé avant de passer
la commande.
Mettre le tablespace OFFLINE
ALTER TABLESPACE nom_ts OFFLINE ;
Déplacer les fichiers vers le nouvel emplacement
COPIER .. +.. COLLER
Indiquer à Oracle le nouvel emplacement
ALTER TABLESPACE RENAME FILE ancien_nom
TO nouveau_nom ;
Mettre le tablespace ONLINE
ALTER TABLESPACE nom_ts ONLINE ;
53
Suppression de tablespaces

La commande SQL permettant de supprimer de tels tablespaces


est :
DROP TABLESPACE tablespace
[INCLUDING CONTENTS [CASCADE CONSTRAINTS] ];
CASCADE CONSTRAINTS supprime les contraintes d'intégrité
référentielle des tables se trouvant en dehors du tablespace. Il
s'agit des contraintes qui font référence aux clés primaire et
unique des tables du tablespace supprimé.
-- V$DATAFILE , DBA_DATA_FILES, DBA_TABLESPACES

54
Gestion des fichiers de Redo Log et des fichiers de Contrôle

Fichier de contrôle permet :

 De localiser les fichiers de données et les fichiers redo log online.

 De fournir les informations les plus récentes sur la base de données à


l’instance de fournir des informations sur la cohérence de la base de
données. Ces informations sont utilisées lors de la restauration de la base
de données.
Si le fichier de contrôle utilisé par la base de données devient indisponible, la
base de données ne peut pas fonctionner proprement.

Les informations stockées par le fichier de contrôle peuvent être obtenu en


interrogeant certaines vues dynamiques :
V$CONTROLFILE, V$PARAMETER et V$CONTROLFILE_RECORD_SECTION.
V$CONTROLFILE contient les emplacements et les noms des fichiers de
contrôle.
55
Fichier de Contrôle

Multiplexage des fichiers de contrôle


Le fichier de contrôle est indispensable au démarrage et au bon
fonctionnement de la base de données. Si le fichier de contrôle est
perdu ou corrompu, la base de données ne démarrera pas.
Pour surmonter la perte ou la corruption d’un fichier de contrôle, il faut
stocker au moins deux fichiers de contrôle identiques sur des disques
différents.
Le serveur Oracle peut créer une base de données

pfile Editer le fichier de


Multiplexer paramètre Copier/Coller
le fichier de shutdown immediate; et
contrôle redémarrage
ALTER SYSTEM SET
spfile
control_files =..

56
Fichiers journaux

 Contiennent les modifications les plus récentes des données de la base


 Utilisées par Oracle pour remettre la base dans un état cohérent après une
panne sans perdre les mises à jour qui n'ont pas été enregistrées dans les
datafiles
Lors du redémarrage de l'instance, Oracle applique les mises à jour des Redo
Log sur les Datafiles (reprise à chaud)
Au moins deux fichiers par instance, utilisés d'une façon circulaire
 
 Redo Log multiple : duplication des fichiers Redo Log sur différents disques.
Lorsqu'un des fichiers est perdu ou endommagé, son image sur l'autre
disque peut être utilisée.
 L'ensemble des Redo Logs actifs simultanément constitue un groupe.
Chaque fichier de ce groupe est dit membre
 Avant de réutiliser un Redo Log plein, Oracle peut l'archiver si la base est en
mode ARCHIVELOG
57
Fichiers journaux

developpez.com/redologs
58
Fichiers journaux

Le numéro initial et la taille des fichiers redo log en ligne et des groupes
sont déterminés pas des paramètres d'initialisation :
MAXLOGFILES spécifie le nombre maximal de groupes de fichiers redo
log online. La limite de MAXLOGFILES est de 255.
MAXLOGMEMBERS détermine le nombre maximal de membres redo log
online pour chaque groupe de redo log online. Le nombre total de membres
redo log online est un multiple du nombre de fichiers redo log.
LOG_FILES spécifie le nombre maximal actuel de groupes de fichiers
redo log online pour la durée de vie de l'instance courante. Par défaut, la
valeur de LOG_FILES est plus petite ou égale au nombre total de membres
redo log en ligne (MAXLOGMEMBERS * MAXLOGFILES).
 
Les fichiers redo log en ligne sont créés durant la création de la base de
données.
59
Fichiers journaux

Plusieurs vues du dictionnaire permettent d’obtenir des


informations sur les fichiers de redo log :
V$LOG : informations sur les groupes
V$LOGFILE : informations sur les membres
V$LOG_HISTORY: informations sur l’historique des fichiers
de redo log
V$INSTANCE_RECOVERY : informations sur les temps
estimés de restauration d’instance.
V$THREAD : informations sur les groupes et les
membres

60
Ajout de groupes de fichiers redo log online

Des groupes de fichiers redo log en ligne peuvent être créés à l'aide de la
commande ALTER DATABASE :
ALTER DATABASE [database]
ADD LOGFILE [GROUP integer] 'filename' [SIZE n[K|M]] [REUSE]
[,[GROUP integer] 'filename' [SIZE n[K|M]] [REUSE] ]...;
 
La valeur du paramètre GROUP peut être choisie pour chaque groupe de
fichier redo log. Si ce paramètre est omis, Oracle lui génère automatiquement
une valeur.
SQL> ALTER DATABASE
ADD LOGFILE GROUP 3 ('c:\orant\database\logorcl3.ora')
SIZE 1000K;
Cette commande crée un nouveau groupe de fichiers redo log portant le
numéro 3. Ce groupe est constitué d'un membre redo log nommé logorcl3.ora
d'une taille de 1000 Ko. 61
Ajout des membres redo log online
Des membres redo log peuvent être ajoutés grâce à la commande SQL
suivante :
ALTER DATABASE [database]
ADD LOGFILE MEMBER 'filename' [REUSE]
TO GROUP n;
Si le fichier existe déjà, il doit avoir la même taille que le nouveau fichier
redo log online et l'option de la commande REUSE doit être utilisé.
Exemple :
 
SQL> ALTER DATABASE
ADD LOGFILE MEMBER 'e:\orant\database\log7borcl.ora'
TO GROUP 7;
Cette commande ajoute un nouveau membre redo log nommé log7borcl.ora
au groupe redo log 7. Ce nouveau membre sera stocké dans le répertoire
e:\orant\database.
62
Relocalisation des fichiers redo log online
En raison de contraintes système, telles que l'insuffisance d'espace disque,
les fichiers redo log online peuvent avoir besoin d'être relocalisés.
Etapes à suivre pour relocaliser un fichier redo log online :
Arrêter la base de données,
Copier le fichier redo log online vers la nouvelle destination,
Monter la base de données,
Changer le nom du fichier redo log online à l'aide d'une commande SQL :
ALTER DATABASE [database]
RENAME FILE 'old filename' TO 'new filename';
Avant de changer le nom du fichier, il faut s'assurer que le nouveau fichier
existe bien à l'emplacement prévu. Le serveur Oracle change seulement le
pointeur dans le fichier de contrôle, mais il ne renomme pas physiquement
ni ne crée de fichier.
Ouvrir la base de données.

63
Supprimer un groupe de fichiers redo log
 La base doit avoir au moins 3 groupes de fichiers de redo log pour
pouvoir en supprimer un (il doit en rester au moins 2).
 Le groupe courant (celui dans lequel LGWR est en train d’écrire) ne
peut pas être supprimé.
 En mode ARCHIVELOG, un groupe pas encore archivé ne peut pas
être supprimé.
 Les fichiers concernés ne sont pas physiquement supprimés par
Oracle, il faudra le faire après en utilisant une commande du système
d’exploitation.
Utiliser l’ordre SQL ALTER DATABASE :
ALTER DATABASE
DROP LOGFILE GROUP numéro ;
Exemple
ALTER DATABASE
DROP LOGFILE GROUP 4; 64
Supprimer un membre d’un groupe de redo log
 Le groupe concerné doit avoir au moins 2 membres pour pouvoir en
supprimer un (il doit en rester au moins un).
 Un membre du groupe courant (celui dans lequel LGWR est en train d’écrire)
ne peut pas être supprimé.
 En mode ARCHIVELOG, un membre d’un groupe pas encore archivé ne peut
pas être supprimé.
 Les fichiers concernés ne sont pas physiquement supprimés par Oracle.
 Pour supprimer tous les membres d’un groupe il faut supprimer le groupe.
 Si un membre est corrompu, Oracle lui donne un statut « invalide » dans le
dictionnaire de données mais ne le signale pas par un message affiché à
l’écran.
 Pour détecter qu’un membre est invalide, il faut consulter le fichier des
Alertes.
 Si un membre d’un groupe est perdu, il faut le supprimer pour mettre à jour
le dictionnaire de données.
65
Supprimer un groupe de fichiers redo log

Utiliser l’ordre SQL ALTER DATABASE :


ALTER DATABASE
DROP LOGFILE MEMBER ‘nom_fichier’ [,…] ;

Exemple
ALTER DATABASE
DROP LOGFILE MEMBER ‘e:\oracle\oradata\HERMES\redo01.log’;

66
Réinitialisation des fichiers redo log online
 Lors de l'utilisation de la base de données, il est possible que tous les
membres d'un groupe de fichiers redo log online soient corrompus. Pour faire
face à ce problème, il faut réinitialiser les fichiers redo log online.
Les commandes SQL pour réinitialiser les fichiers redo log en ligne sont les
suivantes:
ALTER DATABASE [database]
CLEAR [UNARCHIVED] LOGFILE GROUP n;
ou
ALTER DATABASE [database]
CLEAR [UNARCHIVED] LOGFILE 'filename';
L'utilisation de ces commandes revient à ajouter et supprimer un fichier redo
log online. Cependant ces commandes peuvent être effectuées même si il y
seulement deux groupes de fichiers redo log online avec un membre chacun.
Ces commandes peuvent également être effectuées même si un groupe de
fichiers redo log online réinitialisé est disponible mais pas archivé.
67
Archivage de fichiers de redo log
.

Destination d’archive
22 21 ARCH
Groupe 1

Groupe 2

20

22 21

68
Archivage de fichiers de redo log
Pour des raisons de sécurité les fichiers journaux online sont archivés.
L'archivage des fichiers de journalisation (Mode ARCHIVELOG) présentent deux
avantages :
Récupération : La sauvegarde de la base de données et des fichiers de
journalisation en ligne et archivés peuvent garantir la récupération de toutes les
transactions validées.
Sauvegarde : Peut s'effectuer lorsque la base de données est ouverte.

Par défaut, une base de données est créée en mode NOARCHIVELOG.


 
On peut archiver les fichiers de redo log :
Manuellement.
Automatiquement : Méthode recommandée.

Le paramètre d’initialisation LOG_ARCHIVE_START, lorsqu’il est à TRUE indique que


l’archivage se fait automatiquement. A FALSE, indique que le DBA le fait
manuellement. En mode automatique, l’archivage se fait grâce au process ARCn, et
manuellement avec des requêtes SQL.
69
GESTION D’UNE
INSTANCE ORACLE

70
Démarrer & Arrêter une base de données
 Démarrage d'une base
Procédure Générale
o Positionner les variables d'environnement
ORACLE_SID et ORACLE_HOME
o démarrage de la base possible par paliers (startup nomount, startup
mount, et startup open)
o posséder les privilèges appropriés (SYSDBA, SYSOPER, OSDBA ou
OSOPER, ...)
o indiquer si nécessaire le fichier des paramètres
o démarrer la base sous sqlplus (Unix et NT) ou via les services(NT) ou
Oradim (NT), à travers Entreprise Manager: database administration
assistant (NT ou Unix)
Syntaxe de la commande
o STARTUP [FORCE] [RESTRICT] [PFILE=fich_param] [OPEN |
MOUNT | NOMOUNT]
o ALTER DATABASE [nom_base] MOUNT | OPEN 71
Démarrer & Arrêter une base de données

 Description des mots et paramètres


FORCE Si instance ouverte, Fermeture puis démarrage
RESTRICT sert à des tâches de maintenance. Il faut avoir le
privilège Restricted Session
PFILE = Indique le fichier des paramètres
OPEN démarrer et ouvrir les fichiers de la base
MOUNT Instance démarrée fichier(s) de contrôle ouvert(s)
NOMOUNT Seule l'instance est démarrée
ALTER DATABASE permet le démarre par paliers après un
startup NOMOUNT ou MOUNT
72
Fichiers de paramètres d'initialisation

 Une base de données Oracle devient accessible aux


utilisateurs lorsque le DBA démarre l’instance et ouvre la base
de données.
 Pour démarrer une instance, le serveur Oracle s’appuie sur le
fichier de paramètres d'initialisation.
 Le fichier de paramètres d'initialisation peut être de deux types :
o Fichier de paramètres statique, PFILE (Parameter File),
généralement nommé initSID.ora: fichier de paramètres
texte
o Fichier de paramètres persistant, SPFILE (Server Parameter
File), généralement nommé spfileSID.ora : fichier de
paramètre serveur 
73
Fichiers de paramètres d'initialisation

 Une base de données Oracle devient accessible aux


utilisateurs lorsque le DBA démarre l’instance et ouvre la base
de données.
 Pour démarrer une instance, le serveur Oracle s’appuie sur le
fichier de paramètres d'initialisation.
 Le fichier de paramètres d'initialisation peut être de deux types :
o Fichier de paramètres statique, PFILE (Parameter File),
généralement nommé initSID.ora: fichier de paramètres
texte
o Fichier de paramètres persistant, SPFILE (Server Parameter
File), généralement nommé spfileSID.ora : fichier de
paramètre serveur 
74
Fichiers de paramètres d'initialisation

Quelques paramètres du fichier de paramètre :


le nom de la base de données pour laquelle l’instance est démarrée
Les paramètres qui contrôlent les performances de la base de
données ainsi que la quantité de mémoire utilisée par les différentes
composantes de la SGA
On peut créer un fichier PFILE : exemple 'D:\initTPX917.ora'
SQL>CREATE PFILE = 'D:\initTPX917.ora' FROM spfile;
Pour retrouver le nom/localisation du fichier spfile :
SQL> show parameter spfile
On peut démarrer une instance en indiquant le fichier d’initialisation :
SQL>STARTUP pfile = 'D:\initTPX917'.ora’

75
Fichiers de paramètres d'initialisation

Règles concernant l’écriture des paramètres :


Les paramètres sont spécifiés sous la forme nom_paramètre =
valeur
Tous les paramètres sont optionnels et ont une valeur par défaut
Des commentaires peuvent être inclus et commencent par le caractère
#
La valeur peut être spécifiée entre des guillemets doubles si elle
contient des caractères spéciaux (égal, espace, …)
Les valeurs multiples sont spécifiées entre parenthèses, séparées par
des virgules
Ces paramètres sont pris en compte directement en mémoire
(paramètres dynamiques) ou uniquement dans le SPFILE (paramètres
statiques). Dans dernier ce cas il faut arrêter puis redémarrer la base de
données pour que la modification soit prise en compte par l’instance.
76
Modifier des paramètres de l’instance ou du SPFILE

 Les colonnes ISSES_MODIFIABLE et


ISSYS_MODIFIABLE de la vue V$PARAMETER donnent
des informations sur le type de paramètre.
o La colonne ISSES_MODIFIABLE vaut TRUE ou FALSE
selon que le paramètre est modifiable ou non au niveau
de la session.
o La colonne ISSYS_MODIFIABLE vaut FALSE si le
paramètre n’est pas modifiable au niveau du système,
et DEFERRED ou IMMEDIATE selon qu’il est modifiable
en différé ou immédiatement.

77
Modifier des paramètres de l’instance ou du SPFILE
L’ordre SQL ALTER SYSTEM permet de modifier dynamiquement la valeur des
paramètres d’initialisation.
ALTER SYSTEM SET paramètre = valeur […] [COMMENT = ‘texte’]
[ DEFERRED ] [ SCOPE = MEMORY | SPFILE | BOTH ];
 
Paramètre : nom du paramètre
Valeur : valeur attribuée au paramètre
« COMMENT = ‘texte’ » : commentaire associé à la modification du paramètre.
DEFERRED : si présent, indique que la modification ne concerne que les futures
sessions, pas celles actuellement connectées. N’a de sens que si la mémoire est la
cible de la modification .Peut être obligatoire pour certains paramètres.
SCOPE : définit la cible de la modification.
MEMORY : la mémoire seulement
SPFILE : le fichier de paramètres serveur seulement
BOTH : les deux

78
Arrêter la base de données
Dans SQL*Plus, la commande SHUTDOWN permet d’arrêter l’instance et la
base de données.
SHUTDOWN [NORMAL | IMMEDIATE | TRANSACTIONNAL | ABORT]
NORMAL : Oracle attend que tous les utilisateurs soient déconnectés (pas de
nouvelle connexion autorisée) puis ferme proprement la base.
IMMEDIATE : Oracle déconnecte tous les utilisateurs (en effectuant un
ROLLBACK des éventuelles transactions en cours) puis ferme proprement la
base.
TRANSACTIONNAL : Oracle attend que toutes les transactions en cours se
terminent avant de déconnecter les utilisateurs (pas de nouvelle transaction
autorisée) puis ferme et démonte proprement la base.
ABORT : Oracle déconnecte tous les utilisateurs (sans effectuer de ROLLBACK
des éventuelles transactions en cours) puis ferme brutalement la base ; une
restauration de l’instance sera nécessaire lors du prochain démarrage.

79
Mode restricted session

 Utiliser l'option RESTRICT au démarrage de l'instance


o l'accès est ainsi limité dès le début
 Utiliser ALTER SYSTEM
o pour rendre l'accès à une instance limitée
o exemples :
 ALTER SYSTEM ENABLE RESTRICTED SESSION
 ALTER SYSTEM DISABLE RESTRICTED SESSION

80
Mode lecture seule

 Pour ouvrir la base de données en lecture seule,


l’administrateur doit émettre la commande ALTER DATABASE.

SQL> ALTER DATABASE OPEN READ ONLY;

Les utilisateurs ne peuvent plus modifier la base de données (Pas


de INSERT par exemple).

Le paramètre qui informe sur le mode est :


OPEN_MODE de la vue V$DATABASE.

SQL> SELECT open_mode FROM v$database;


81
GESTION DES
UTILISATEURS ORACLE

82
GESTION DES UTILISATEURS ORACLE

DBA  définir le domaine de sécurité pour chaque utilisateur.


 Authentification :
 Serveur oracle,
 Système d’exploitation.

 Verrouillage des comptes


 Tablespace par défaut (stockage des objets de l’utilisateur)
 Tablespace temporaire
 Quotas pour les tab espaces
 Limitations de ressources (contrôle de l’utilisation des
ressources système)
 Privilèges systèmes et objets (contrôle les accès aux
données pour chaque utilisateur)

83
GESTION DES UTILISATEURS ORACLE
PRIVILEGES
(Systèmes
et Objets) PROFILES
et ROLES

Utilisateur

Droits d’accès
aux tab espaces
VUES (quotas, TBS
temporaire, TBS
par défaut)

84
CREATION D’UN UTILISATEUR

CREATE USER nomUser IDENTIFIED


{BY passwordUser | EXTERNALLY}
[DEFAULT TABLESPACE nom_tablspace]
[TEMPORARY TABLESPACE nom_tablespace_temporaire]
[QUOTA{integer [K|M] | UNLIMITED} ON nom_tablespace ]
[PASSWORD EXPIRED]
[ACCOUNT {LOCK | UNLOCK}]
[PROFILE {nom_profile | DEFAULT}];

85
CREATION D’UN UTILISATEUR- EXEMPLES

CREATE USER scott


IDENTIFIED BY tiger
DEFAULT TABLESPACE tbs_users
QUOTA 10M ON tbs_users
TEMPORARY TABLESPACE tmp_users
QUOTA 5M ON tmp_users
QUOTA 5M ON tools
PROFILE app_user
PASSWORD EXPIRE;
 
CREATE USER "OPS$SPHINX\SCOTT"
IDENTIFIED BY tiger
DEFAULT TABLESPACE tbs_users
QUOTA 10M ON tbs_users
TEMPORARY TABLESPACE tmp_users
QUOTA 5M ON tmp_users
QUOTA 5M ON tools
PROFILE app_user
PASSWORD EXPIRE;
86
METHODE D’AUTHENTIFICATIOND’UN UTILISATEUR

Choisir la méthode d'authentification de l'utilisateur

 User authentifié par la BD  clause IDENTIFIED BY <password>


 User authentifié par l’OS  la clause IDENTIFIED EXTERNALLY
 Fichier paramètre :
Paramètre OS_AUTHENT_PREFIX = OPS$ (Recommandation
oracle),
 Base de registre :
Si l’utilisateur ne fait pas partie d’un domaine créer la clé
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOMESID
Rajouter la clé OSAUTH_PREFIX_DOMAIN (de type valeur de chaîne
extensible) et lui donner la valeur TRUE.
 SQLNET.ORA
SQLNET.AUTHENTICATION_SERVICES=NTS
87
MODIFICATION DES PROPIERTES D’UN UTILISATEUR

ALTER USER nomUser IDENTIFIED


{BY passwordUser | EXTERNALLY}
[DEFAULT TABLESPACE nom_tablspace_defaut]
[TEMPORARY TABLESPACE nom_tablespace_temporaire]
[QUOTA{integer [K|M]|UNLIMITED} ON nom_tablespace]
[PASSWORD EXPIRED]
[ACCOUNT {LOCK | UNLOCK}]
[PROFILE {nom_profile | DEFAULT}];

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


88
SUPPRIMER UN UTILISATEUR

DROP USER nomUser [CASCADE] ;

L’utilisateur doit être déconnecté pour pouvoir le


supprimer.

89
INFORMATIONS SUR UN UTILISATEUR

Interrogez les vues suivantes pour obtenir des informations sur les
utilisateurs :
 DBA_USERS
 DBA_TS_QUOTAS
 

90
GESTION DES PROFILES UTILISATEURS

 Un profile est un concept Oracle qui permet à l'administrateur


d'une base de contrôler la consommation et des ressources
systèmes et des mots de passes.
 Il peut être attribué à un utilisateur,
 Il peut être utilisé pour gérer les mots de passe
 Les profils peuvent être d'un grand intérêt lorsque l'on souhaite
restreindre les opérations qui vont nécessiter trop de
ressources système.
 Le DBA assigne un profil à chaque utilisateur

91
GESTION DES PROFILES UTILISATEURS

 Un profil par défaut DEFAULT, est automatiquement crée lors


de la création de la base.
 Le profil DEFAULT est attribué à l’utilisateur si aucun profil
n'est défini par défaut .

 activation et contrôle des limites :


 dans le fichier initSID.ora positionner :
RESOURCE_LIMIT = TRUE
 ou dynamiquement faire sous sqlplus par exemple :
ALTER SYSTEM SET resource_limit=true; 

92
CREATION DU PROFILE

Privilège requis CREATE PROFILE

CREATE PROFILE nom_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|UNLIMITED|DEFAULT}]
[FAILED_LOGIN_ATTEMPTS {integer|UNLIMITED|DEFAULT}]
[PASSWORD_LIFE_TIME {integer|UNLIMITED|DEFAULT}]
[PASSWORD_REUSE_TIME {integer|UNLIMITED|DEFAULT}]
[PASSWORD_REUSE_MAX {integer|UNLIMITED|DEFAULT}]
[PASSWORD_LOCK_TIME {integer|UNLIMITED|DEFAULT}]
[PASSWORD_GRACE_TIME {integer|UNLIMITED|DEFAULT}]
93
GESTION DES PROFILES UTILISATEURS

Signification de quelques paramètres

session_per_user : nombre maximum de sessions par utilisateur


logical_read_per_session : nombre de blocs de données à lire pour une session
cpu_per_session : temps CPU max par session en % de secondes
cpu_per_call : CPU pour un appel (parse,execute ou fetch) en % de sec
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
failed_login_attempts : nombre d’échecs avant le blocage du compte
password_life_time : durée en jours avant l’expiration du mot de passe
password_reuse_time : durée en jours avant la réutilisation d’un password
password_reuse_max : nombre de modif du password avant réutilisation
password_lock_time : durée en jours du verrouillage d’un compte
password_grace_time : délai de tolérance du password avant son expiration

94
GESTION DES PROFILES UTILISATEURS -EXEMPLES

CREATE PROFILE profile_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 ;
CREATE PROFILE profile_admin
PASSWORD_LIFE_TIME 200
LIMIT PASSWORD_REUSE_MAX DEFAULT
PASSWORD_REUSE_TIME UNLIMITED
CPU_PER_SESSION UNLIMITED;
95
ADMINISTRATION DES PROFILES

Assignation d’un profile à un utilisateur


 Lors de la création d'un nouvel utilisateur
CREATE USER telUser IDENTIFIED BY telMotDePasse
PROFILE profile_sercretaire ;
 Après avoir crée un utilisateur
ALTER USER telUser
PROFILE profile_admin ;
 Modification d’un profile
ALTER PROFILE nom_profile
<OPTIONS>;

96
ADMINISTRATION DES PROFILES

 Suppression d’un profile

DROP ROFILE nom_profile [CASCADE];


 En cas de suppression d'un profile existant affecté à un
utilisateur, ce dernier se verra automatiquement attribué le
profile DEFAULT
 Le profile DEFAULT ne peut être supprimé
 Visualisation des informations des profiles et les utilisateurs
Vues contenant les informations sur les profiles :
dba_profiles, DBA_USERS
Exemple : Liste de tous les profiles
SELECT profile, resource_name, limit
FROM dba_profiles;
97
GESTION DES PRIVILEGES

Objectif : pouvoir limiter au strict nécessaire ce qu’un utilisateur peut


faire sur la base de données.

Oracle possède deux types de privilèges :

les privilèges systèmes et les privilèges objets.


 les privilèges objet (table, vue, procédure,…) permettent de
manipuler des objets existant : consultation et modification
d’une table ou vue, exécution d’une procédure stockée,
 les privilèges système permettent de modifier la structure de la
base en créant ou détruisant des objets,
Un privilège peut être affecté (retiré) à un Utilisateur, un Rôle ou
tous les utilisateurs (PUBLIC)
98
PRIVILEGES SYSTEME

Permettant de modifier la structure de la base de données, exemple créer une


table, détruire une vue,…. Ces privilèges ne font référence à un objet précis de
la base.
Catégorie Exemples
CREATE ANY INDEX
INDEX ALTER ANY INDEX
DROP ANY INDEX
CREATE TABLE
CREATE ANY TABLE
ALTER ANY TABLE
TABLE DROP ANY TABLE
SELECT ANY TABLE
UPDATE ANY TABLE
DELETE ANY TABLE
CREATE SESSION
SESSION ALTER SESSION
RESTRICTED SESSION
CREATE TABLESPACE
TABLESPACE ALTER TABLESPACE
DROP TABLESPACE 99
ATTRIBUTION DES PRIVILEGES SYSTEME

Lorsqu'un utilisateur est créé avec l'instruction CREATE USER, il ne


dispose encore d'aucun droit car aucun privilège ne lui a encore
été assigné. Il ne peut même pas se connecter à la base.
 
La commande GRANT permet d’accorder des privilèges.

GRANT { listePrivilèges | role }


TO { user | role | PUBLIC }
[ WITH ADMIN OPTION ]
listePrivilèges : liste des privilèges système
role : nom d'un rôle

100
ATTRIBUTION DES PRIVILEGES SYSTEME

user, role ou public : droit affecté à un utilisateur, un rôle ou public


With Admin Option : accorder le privilège système à d'autres
utilisateurs avec ou sans l'option
WITH ADMIN OPTION
Remarque :  
Pour pouvoir donner un privilège système, il faut être DBA ou avoir
reçu explicitement ce privilège avec l'option WITH ADMIN OPTION.

101
REVOCATION DES PRIVILEGES SYSTEME

Des privilèges systèmes peuvent être retirés à un utilisateur ou bien à un


rôle si ceux-ci ne sont plus utiles aux actions de l'utilisateur.
La commande REVOKE permet de retirer des privilèges.
REVOKE {listePrivilèges | role }
FROM {user | role | PUBLIC};
Tous les privilèges système peuvent être révoquer en un seul coup en
utilisant : REVOKE ALL PRIVILEGES FROM user;
Remarque :
La révocation d'un privilège système n'entraîne aucun effet de cascade,
que le privilège ait été accordé avec l'option ADMIN OPTION ou non.
Seuls les privilèges accordés via la commande GRANT peuvent être
révoqués.
102
PRIVILEGES SYSDBA ET SYSOPER

 Ils permettent d’effectuer de nombreuses opérations de DBA


 Lorsque l'utilisateur posséde un des deux privilèges SYSDBA ou
SYSOPER se connecte à la base, il est connecté de manière
implicite au schéma de SYS
 Les privilèges SYSDBA et SYSOPER ne peuvent être attribués à
un rôle.
 Le privilège SYSOPER est un sous ensemble du privilège
SYSDBA. Ce privilège permet de démarrer, arrêter, sauvegarder
la base, mais ne permet pas de créer une base de données.

103
PRIVILEGES SYSDBA ET SYSOPER
-f Catégorie Exemples
STARTUP
SHUTDOWN
ALTER DATABASE OPEN | MOUNT
ALTER DATABASE BACKUP
CONTROLFILE
SYSOPER ALTER DATABSE BEGIN | END
BACKUP
RECOVER DATABASE
ALTER DATABASE ARCHIVELOG
RESTRICTED SESSION
PRIVILEGE SYSOPER avec l'option
WITH ADMIN OPTION
SYSDBA CREATE DATABASE
RECOVER DATABASE UNTIL

104
PRIVILEGES SYSTEME

Ils contrôlent l'accès aux objets des tables, vues, séquences,


procédures, fonctions et packages.

Privilèges
Libellé Objets concernés
objets

ALTER droit de modifier table, séquence

DELETE droit de supprimer table , vue, VM

EXECUTE droit d’exécuter procédure, fonction, package,

droit de créer un Table (ne peut être affecté à


INDEX 105
ATTRIBUTION DES PRIVILEGES OBJETS

Sous ORACLE, il est possible de donner des privilèges objets à


des rôles ou à des utilisateurs.  

La commande GRANT permet d’accorder des privilèges.


GRANT {<privilege> [<colonne>] ALL [PRIVILEGES]}
ON <objet>
TO {<user> | <rôle> | PUBLIC}
[WITH GRANT OPTION] ;

L'option WITH GRANT OPTION permet à l'utilisateur ayant reçu


ce privilège objet de donner à son tour ce privilège.

106
ATTRIBUTION DES PRIVILEGES OBJETS

Sous ORACLE, il est possible de donner des privilèges objets à


des rôles ou à des utilisateurs.  

La commande GRANT permet d’accorder des privilèges.


GRANT {<privilege> [<colonne>] ALL [PRIVILEGES]}
ON <objet>
TO {<user> | <rôle> | PUBLIC}
[WITH GRANT OPTION] ;

L'option WITH GRANT OPTION permet à l'utilisateur ayant reçu


ce privilège objet de donner à son tour ce privilège.

107
ATTRIBUTION DES PRIVILEGES OBJETS

Exemple :
attribution de privilège par le propriétaire de l’objet
o GRANT SELECT,INSERT,UPDATE (sal,comm)
ON emp TO smith
attribution de privilège par un utilisateur, non propriétaire de
l’objet ayant reçu le privilège avec l’option WITH GRANT OPTION
o GRANT SELECT
ON scott.emp TO allen WITH GRANT OPTION;

108
REVOCATION DES PRIVILEGES OBJETS

Pour des raisons de sécurité, sous ORACLE, des privilèges objets


peuvent être retiré.
La commande REVOKE permet de retirer des privilèges.

REVOKE {<privilège> | ALL [PRIVILEGES]}


ON <objet>
FROM {user> | <rôle> | PUBLIC}
[CASCADE CONSTRAINTS];
 CASCADE CONSTRAINTS : s’emploie avec le privilège

REFERENCES, supprime les contraintes d'intégrité mises.


 A la différence de l'option WITH ADMIN OPTION, l'option WITH
109
GRANT OPTION se retire en cascade.
ROLE

Concept Oracle permettant de regrouper plusieurs privilèges et /


ou rôles afin de les affecter ou retirer en bloc à un utilisateur et /
ou un rôle.

 un rôle facilite la gestion des privilèges,


 il est attribué à un utilisateur ou à un rôle,
 il peut être activé ou désactivé pour chaque utilisateur,
 pour des raisons de sécurité, un mot de passe peut être
assigné à un rôle
 pour créer un rôle, il faut avoir le privilège "CREATE ROLE"

110
GESTION DES ROLES

 Création d'un rôle


CREATE ROLE <nom du rôle>
[NOT IDENTIFIED|IDENTIFIED {BY <motdpasse>
EXTERNALLY}];

 Modifier un rôle
ALTER ROLE <nom du rôle>
{NOT IDENTIFIED|IDENTIFIED {BY <motdepasse>
EXTERNALLY}};

 Assignation d'un rôle à un utilisateur


GRANT <nom du rôle> [,<nom du rôle>] …
TO {<nom du user> | <nom du rôle> | PUBLIC}
[, {<nom du user> | <nom du rôle> | PUBLIC}] …
[WITH ADMIN OPTION];
111
GESTION DES ROLES

 Activation d'un rôle


SET ROLE {<nom du rôle> [IDENTIFIED BY PASSWORD]
[,<nom du rôle> [IDENTIFIED BY PASSWORD>]] … | ALL
[EXCEPT <nom du rôle> [, <nom du rôle>] …] | NONE};

 Retrait d'un rôle à un utilisateur


REVOKE <nom du rôle> [,<nom du rôle>] …
FROM {<nom du user> | <nom du rôle> | PUBLIC}
[,{<nom du user> | <nom du rôle> | PUBLIC}] …;
 Suppression d'un rôle
DROP ROLE <nom du rôle>;

112
VUES PRIVILEGES ET ROLES

Vue DBA qui décrit les droits de toutes les colonnes


DBA_COL_PRIVS
dans la base de données.

Vue ALL qui décrit les droits de toutes les colonnes


ALL_COL_PRIVS pour lesquelles l'utilisateur courant ou PUBLIC est le
propriétaire de l'objet, grantor, ou grantee.

Vue USER décrit les droits de toutes les colonnes pour


USER_COL_PRIVS lesquelles l'utilisateur courant est le propriétaire de
l'objet, grantor, ou grantee.

Vue ALL qui affiche la liste des droits objet de colonne


ALL_COL_PRIVS_MADE pour lesquels l'utilisateur actuel est propriétaire de
l'objet ou grantor.

Vue USER qui affiche la liste des droits objet de


USER_COL_PRIVS_MADE
colonne pour lesquels l'utilisateur actuel est le grantor.
113
VUES PRIVILEGES ET ROLES

Vue ALL qui décrit les droits objet de colonne pour


ALL_COL_PRIVS_RECD
lesquelles l'utilisateur actuel ou PUBLIC est le grantee.
Vue USER qui décrit les droits objet de colonne pour
USER_COL_PRIVS_RECD
lesquelles l'utilisateur actuel est le grantee.
Vue DBA avec la liste des droits sur tous les objets dans
DBA_TAB_PRIVS
la base de données.
ALL view lists the grants on objects where the user or
ALL_TAB_PRIVS
PUBLIC is the grantee.
USER view lists grants on all objects where the current
USER_TAB_PRIVS
user is the grantee.
ALL view lists the all object grants made by the current
ALL_TAB_PRIVS_MADE
user or made on the objects owned by the current user.
USER view lists grants on all objects owned by the
USER_TAB_PRIVS_MADE
current user.
ALL view lists object grants for which the user or
ALL_TAB_PRIVS_RECD PUBLIC is the grantee. USER view lists object grants for
which the current user is the grantee. 114
VUES PRIVILEGES ET ROLES

USER view lists object grants for which the current user
USER_TAB_PRIVS_RECD
is the grantee.

DBA_ROLES This view lists all roles that exist in the database.

DBA view lists roles granted to users and roles. USER


DBA_ROLE_PRIVS
view lists roles granted to the current user.
USER_ROLE_PRIVS USER view lists roles granted to the current user.
DBA view lists system privileges granted to users and
DBA_SYS_PRIVS
roles.
USER view lists system privileges granted to the current
USER_SYS_PRIVS
user.
This view describes roles granted to other roles.
ROLE_ROLE_PRIVS Information is provided only about roles to which the
user has access.
This view contains information about system privileges
ROLE_SYS_PRIVS granted to roles. Information is provided only about
115
roles to which the user has access.
VUES PRIVILEGES ET ROLES

This view contains information about object privileges


ROLE_TAB_PRIVS granted to roles. Information is provided only about
roles to which the user has access.
This view lists the privileges that are currently enabled
SESSION_PRIVS
for the user.
This view lists the roles that are currently enabled to the
SESSION_ROLES
user.

116

Vous aimerez peut-être aussi