Vous êtes sur la page 1sur 132

Introduction à Oracle

Cours présenté par Mr ali cheick


Institut Supérieur de management (ISM)
DEFINITION
Un SGBD est un logiciel qui prend en charge la structuration, le
stockage, la mise à jour et la maintenance d'une base de données. Il est
l'unique interface entre les informaticiens et les données (définition des
schémas, programmation des applications), ainsi qu'entre les
utilisateurs et les données (consultation et mise à jour).
LES DIFFERENTS SGBD DANS LE
MARCHE
Oracle est un SGBD relationnel (et relationnel-objet dans ses dernières versions) très
reconnu pour les applications professionnelles.

PostgreSQL est un SGBD relationnel et relationnel-objet très puissant qui offre une
alternative open source aux solutions commerciales comme Oracle ou IBM.

MySQL est un SGBD relationnel libre (licence GPL et commerciale), simple d'accès et très
utilisé pour la réalisation de sites Web dynamiques. Depuis la version 4 MySQL implémente
la plupart des fonctions attendues d'un SGBD relationnel.

Access est un SGBD relationnel Microsoft, qui offre une interface graphique permettant de
concevoir rapidement des applications de petite envergure ou de réaliser des prototypes.
Comparaison Oracle Database et Mysql

Le prix
• Le prix représente la différence la plus importante entre les deux bases de
données. Oracle possède un produit qui s'appelle Oracle Express Éditions,
et cette édition est totalement gratuite. Malheureusement, l'édition a trop
de limitation avec les fonctionnalités. Cela vous coûtera des milliers d’euros,
si vous achetez une édition standard complète ou une édition Enterprise.
• My Sql, d'autre part, est une base de données open source, et est
complètement gratuite. Le site du réseau social le plus célèbre appelé
Facebook s'exécute sur My Sql. Oracle s'adresse aux grandes organisations
avec un budget élevé mais cette base de données open source gratuites
manque de possibilités d'ajout et de fonctionnalités robustes d'Oracle.
- La sécurité
• Alors que MySQL utilise trois paramètres pour authentifier un utilisateur, notamment nom d'utilisateur,
mot de passe et l’emplacement, Oracle possède un grand nombre de fonctionnalités de sécurité comme
le nom d'utilisateur, le mot de passe, les profils, l'authentification locale, l'authentification externe, les
améliorations de sécurité anticipées, etc.

- La syntaxe SQL
• La syntaxe Oracle SQL différé quelque peu de Mysql. Oracle offre plus de flexibilité pour le langage de
programmation appelé PL / SQL. L'outil SQL * Plus d'Oracle offre plus de commandes que MySQL pour
générer une sortie de rapport et une définition de variable.

- Le stockage
• Comparez avec Oracle, MySQL n'a pas d'espace de tables, de gestion de rôle, de synonymes, de
packages et de gestion de stockage automatique.
- Type de sauvegarde
Oracle Database fournit différentes fonctionnalités de sauvegarde de type, comme la sauvegarde à froid, la
sauvegarde à chaud, l'exportation, l'importation, la pompe de données. Oracle offre l'utilitaire de sauvegarde le plus
populaire appelé Recovery manager (RMAN). En utilisant RMAN, nous pouvons automatiser notre base de données
de récupération et de récupération en utilisant très peu de scripts de commande ou stockés.

- Utilisation des bases de données Oracle et MySQL


MYSQL est plus populaire dans les sites Web et l'intégration PHP. Oracle est populaire dans les grandes bases de
données, telles que Banking, ERP, assurance, sociétés de financement. Les ERP populaires utilisent Oracle comme
pour exemple la base de données back-end SAP. Oracle possède son propre ERP appelé E-business Suite.

- Administration de base de données :


Dans la partie Administration de base de données, Oracle DBA gagne en popularité par rapport que MySQL . Il existe
beaucoup de possibilités disponibles pour Oracle Database par rapport à MySQL.

- La base de données MySQL ne prend en charge aucune fonctionnalité d'audit. Oracle, d'autre part, prend en charge
plusieurs extensions et programmes sur son serveur de base de données, par exemple, Active Data Guard, Audit
Vault, Partitionnement et data Mining, etc.

- Oracle prend en charge la création de programmes intégrés dans la base de données au moyen d'un langage
procédural et peut être exécuté indépendamment ou déclenchés par certains événements.
FONCTIONNALITÉS PRINCIPALES
D'ORACLE DATABASE
• Possibilité de stocker de gros volumes de données.
• Partitionnement des grosses tables.
• Mirroring et Stand By Database pour la redondance.
• Database Vault, Advanced Security pour la sécurité.
• Oracle Data Mining pour l’extraction de connaissances à partir de
données (ECD).
• Star Transformation Optimizer pour l’optimisation de requêtes SQL
basé sur la réécriture de requête.
•…
AVANTAGES D'ORACLE DATABASE

• Possibilité de choisir entre une installation automatique ou


paramétrer son installation à 100%.
• Gestion entièrement automatique de la mémoire.
• Gestion avancée de la compression des données.
• Très performant sur des gros volumes de données.
• Vues matérialisées…
DIFFERENTES VERSIONS D’ORACLE
• Depuis la version 7, les versions majeures du SGBD Oracle ont été les
suivantes :
• Oracle 7 : 7.1, 7.2, 7.3
• Oracle 8 : 8.0.3, 8.0.4, 8.0.5, 8.0.6
• Oracle 8i : 8.1.5 (Release 1), 8.1.6 (Release 2), 8.1.7 (Release 3)
• Oracle 9i : 9.0.1 (Release 1), 9.2.0 (Release 2)
• Oracle 10g : 10.1 (Release 1), 10.2 (Release 2)
• Oracle 11g : 11.1 (Release 1), 11.2 (Release 2)
• Oracle 12c : 12.1 (Release 1), 12.2 (Release 2)
Plan de cours
 Les composants de l'architecture Oracle : Décrire l'architecture
Oracle et ses principaux composants.

 Le dictionnaire de données

 Gestion de la sécurité et des ressources : Privilèges systèmes et


privilèges objets, Rôles, Utilisateurs, Profiles, Audits

 Optimisations des bases de données : indexation, la partition


L'architecture d’oracle et ses principaux
composants.
Instance Oracle

L’instance Oracle est constituée :

 D’une zone de mémoire partagée appelée System Global Area(SGA);

 D’un ensemble de processus d’arrière-plan (background process) ayant


chacun un rôle bien précis;

 D’un ensemble de processus serveur (server process) chargés de traiter les


requêtes des utilisateurs.
System Global Area(SGA)
La SGA (System Global Area) est une zone de mémoire partagée par les différents
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 comporte les structures suivantes:

 Database Buffer Cache: cache de données;

 Redo Log Buffer: mémoire tampon pour l’enregistrement des modifications


apportées à la BD;

 Shared Pool: zone de partage des requêtes et du Dictionnaire des données


Oracle;
 Java Pool: mémoire utilisée par la machine virtuelle Java
intégrée;

 Large Pool: zone mémoire optionnelle utilisée par différents


processus dans des configurations particulières;

 Streams Pool: zone de mémoire utilisée par la fonctionnalité


Streams (fonctionnalité qui permet de faire circuler des
informations entre processus);
Shared Pool
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


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 (Least RecentlyUsed) : Oracle utilise l’algoLRU pour gérer le
cache: en cas de manque de place, oracle supprime du cache la requête utilisée la moins
récemment.

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.


Cache «dictionary»
 Le cache du dictionnaire de données contient les dernières définitions utilisées
dans la base.

 Il contient des informations sur les fichiers, les tables, les index, les colonnes, les
utilisateurs, les privilèges et d'autres objets de la base de données.

 La mise en mémoire cache des informations du dictionnaire de données réduit le


temps de réponse aux interrogations et aux instructions LMD.

La taille du cache dépend du dimensionnement de la zone de mémoire partagée.


Database Buffer Cache
 Database Buffer Cache est utilisé pour stocker des blocs de données
en mémoire afin d'accélérer l'interrogation et/ou la modification

 Aucune modification est faite directement sur les données du disque :


Oracle lit les données suite à la demande d'un processus utilisateur et
ensuite valide les modifications sur le disque

 Il utilise un algorithme nommé LRU mois récemment utilisés (Least-


Recently Used) pour déterminer les données à libérer du cache
RedoLog Buffer (Tampon de
journalisation)
 Il enregistre toutes les modifications apportées aux blocs de données de la base :
insert, delete, update, create, alter et drop.

 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.


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.
 Elle n'utilise pas de liste LRU.

Sa taille est définie par le paramètre LARGE_POOL_SIZE.


Zone de mémoire Java et Zone StreamsPool

 La zone de mémoire Java répond aux besoins d'analyse des


commandes Java : Elle est nécessaire si Java est installé et utilisé. Sa
taille est définie par le paramètre JAVA_POOL_SIZE.

 La zone StreamsPool est dimensionnée par le paramètre


STREAMS_POOL_SIZE (0 par défaut)
Base de Données Oracle
La base de données est composée des plusieurs fichiers :

 Les Fichiers de données


 Un Fichier de contrôle
 Deux fichiers de journalisation
 Autres fichiers : fichier de paramètres, fichier mot de passe, archives

Le Fichier de contrôle

• Le nom de la base de données.


• La date/heure de création de la BD.
• Le nom des fichiers constitutifs de la base.
• Les noms des espaces de disques logiques. (Tables pace)
• La taille de bloc de données par défaut.
• L’emplacement des autres fichiers de la BD (contrôle, journalisation).
• Le numéro de séquence du fichier journal en cours d’utilisation;
• Des informations sur les points de reprise(contrôle) (checkpoint).
• L’emplacement des archives.
L’information du fichier de contrôle

• V$CONTROLEFILE: affiche l’ensemble des fichiers de ctrl de la BD


• V$PARAMETER: permet d’afficher la valeur du paramètre «control_files» : SHOW PARAMETER
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 de parer à toute corruption ou perte du fichier.
Fichier de journalisation (redoLog)

 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.
 Les fichiers de journalisation sont très importants pour la sécurité de la BD.
Fichier de données
Définition : Les fichiers de données contiennent les données proprement dites de la BD (tables et
index notamment) Ils sont logiquement regroupés en tablespaces.

 Un tablespace est une unité logique de stockage composée d’un ou plusieurs


fichiers physiques.

 Un tablespace bigfile (oracle 10g) contient qu’un seul fichier de données, mais qui
peut être plus gros qu’un fichier de données traditionnel.

 Une base de données comporte au minimum deux fichiers de données


appartenant à deux tablespaces réservés pour Oracle (SYSTEM et SYSAUX) qui ne
doivent contenir aucune donnée applicative.
Des concepts pour gérer finement la mémoire :
• le block de données est l'unité logique la plus fine, 4ko par défaut.
• l'extent est un ensemble contigüe de blocks, alloues en une seule fois.
• le segment est un ensemble d'extents dédiés a un même objet (table,
index, ...)
• Tablespace : regroupe un ensemble d'objets (=segments) pour
faciliter leur administration.
• Un tablespace = un ou plusieurs chiers de donnees
Organisation du stockage
Les fichiers de données sont découpés en blocs d’une taille donnée (4 ko, 8 Ko, …).
L’espace occupé par un objet dans un tablespace est désigné par le terme générique de
segment. Il y a 4 types de ségments :

Les segments de table


Les segments d’index
Les segments d’annulation
Les segments temporaires.

Un segment appartient à un tablespace et est constitué d’extensions ( extents).


Une extension est un ensemble de blocs contigus dans un fichier de données.
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
 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é.
Les processus d'arrière-plan
Les processus gèrent et appliquent les relations entre les structures physiques et les structures mémoire.

Processus d'arrière-plan obligatoires


• DBWn
• PMON
• CKPT
• LGWR
• SMON

Processus d'arrière-plan facultatifs


• ARCn LMDn RECO
• CJQ0 LMON Snnn
• Dnnn Pnnn
• LCKn QMNn
• Afficher les processus d’arrière plan en cours : SQL> select * from v$bgprocess where paddr <> '00' ;
DBWn - DataBase Writer (1 jusqu'à 20)  : Chargés d’écrire les blocs modifiés du Database Buffer Cache dans
les fichiers de données (COMMITées ou Non).

LGWR – LoG Writer : Chargé d’écrire le Redo Log Buffer dans le fichier de journalisation courant (Redo Log)
après un Chekpoint. En effet si une synchronisation n’est pas terminée, le fichier de journalisation (Redo Log)
contient des informations qui seraient nécessaires pour une récupération de l’instance en cas d’arrêt anormal.

CKPT – ChecKPoinT : Mécanisme de synchronisation (checkpoint). Ce processus d’arrière plan a pour rôle


d’enregistrer le point de reprise dans l’entête des fichiers de données et dans les fichiers de contrôle.

PMON – Process MONitor : Chargé du nettoyage en effectuant une annulation (rollback) lorsqu’un processus
utilisateur est planté. Il libère les verrous et les ressources. 

ARCn – ARChiver  : Chargés de l’archivage des fichiers de journalisation pleins.

MMAN – Memory MANager : Management automatique de la taille des composants de la SGA.


SMON – System MONnitor :

• Chargé de récupérer une instance après un arrêt anormal.


• Roll Forward pour appliquer les transactions validées
• Roll Back pour enlever les transactions non validées.
• Libère les segments temporaires.
• Compacte l’espace contigu dans les tablespaces gérés par le
dictionnaire.
Dictionnaire des données
Définition : Le dictionnaire est un ensemble de tables et de vues qui
contient toutes les informations concernant la structure de stockage et
tous les objets de la base. Toute information concernant la base de
données se retrouve dans le dictionnaire de données.

Le dictionnaire de données est automatiquement mis à jour par Oracle


lorsque la base de données a été modifiée. Le propriétaire du
dictionnaire de données est l’utilisateur « SYS ».
Le dictionnaire de données stocke les informations sur :
• La structure logique de la base de données.
• La structure physique de la base de données.
• Les noms et les définitions des objets.
• Les contraintes d’intégrité définies pour les objets d’une base de
données.
• Les noms des utilisateurs valides de la base de données et les privilèges
attribués à chaque utilisateur de la base de données.
• L’audit sur une base de données.
Catégories de vues du dictionnaire de données

Trois principaux ensembles de vues statiques se distinguent par leur portée:

• DBA: contenu de tous les schémas


• ALL: éléments auxquels l'utilisateur a accès
• USER: contenu du schéma de l'utilisateur
Exemples de vues du dictionnaire de
données
• Présentation générale : DICTIONARY, DICT_COLUMNS

• Objets de schéma : DBA_TABLES, DBA_INDEXES, DBA_TAB_COLUMNS,


DBA_CONSTRAINTS

• Allocation d'espace : DBA_SEGMENTS, DBA_EXTENTS

• Structure de base de données : DBA_TABLESPACES, DBA_DATA_FILES


Tables dynamiques des performances
Tables virtuelles
• Enregistrent l'activité en cours de la base de données
• Sont constamment mises à jour lorsque la base de données est active
• Les informations sont lues à partir de la mémoire et du fichier de
contrôle
• Permettent de surveiller et de régler la base de données
• Le propriétaire est l'utilisateur SYS
• Les synonymes commencent par le préfixe V$
Exemples de tables dynamiques des
performances
• V$CONTROLFILE
• V$DATABASE
• V$DATAFILE
• V$INSTANCE
• V$PARAMETER
• V$SESSION
• V$SGA
• V$SPPARAMETER
• V$TABLESPACE
• V$THREAD
• V$VERSION
Administrateurs de BD
Remarque
Lorsque vous créez une BD, plusieurs utilisateurs par défaut sont créés
en même temps que la base; ils peuvent varier selon la version du
SGBDR que vous utilisez.
Remarque
Dans certains cas, l’user doit faire appel à une méthode
d’authentification spéciale car la BD ne peut pas être ouverte, surtout
pour des opérations telles que l’arrêt et le démarrage.
Création des utilisateurs

Le DBA crée un utilisateur en exécutant l’ordre SQL CREATE USER. Après


la création, l’utilisateur ne dispose d’aucun privilège. Le DBA peut alors
lui en accorder. Ces privilèges déterminent ce que l’utilisateur peut faire
au niveau de la base de données.
Changer votre mot de passe

Le DBA crée un compte et l’initialise avec un mot de passe pour chaque


utilisateur. Vous pouvez changer votre mot de passe en utilisant la
requête ALTER USER.
Exemple
CREATE USER Helyos IDENTIFIED BY mypass1
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;
Suppression d’un utilisateur
Les Privilèges
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)

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
NOTE: Supposant qu’un utilisateur U1 attribut un privilège P1 "WITH
ADMIN OPTION" à un utilisateur U2 et que U2 l'attribut à son tour à U3.
La révocation de P1 à U2 n'entraîne pas la révocation de P1 à U3.
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) .... Ils sont
classifiés selon les types d'objets
Gestion de rôles
Définition : Un rôle est un concept Oracle qui permet 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


• L'affectation d'un rôle à un utilisateur peut se faire sous Oracle ou à
travers l’OS
• Pour des raisons de sécurité, un mot de passe peut être assigné à un
rôle
• Oracle fournit un certain nombre de rôles par défaut (connect,
resource, dba, exp_full_database, imp_full_data_base,
select_catalog_role, delete_catalog_role/ execute_catalog_role, …)

• Pour créer un rôle, il faut avoir le privilège "CREATE ROLE"


Création d’un rôle
Modifier un rôle
Supprimer un rôle
Un rôle supprimé est retiré IMMEDIATEMENT du domaine de sécurité
de l'utilisateur (connecté ou non) ou du rôle l'ayant reçu.
 Syntaxe
DROP ROLE role ;

 Exemple
DROP ROLE rl_admin_secu ;
Affectation de privilèges ou de rôles à un rôle

Exemple :
 Création de deux rôles
o Un rôle rassemblant les privilèges pour se connecter :
CREATE ROLE rl_connect
o Un 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, Restrictedsession 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_connectTO rl_admin_secu;
Affectation d’un rôle à un utilisateur
GRANT role to user [WITH ADMIN OPTION] : L’utilisateur ayant reçu le
rôle avec WITH ADMIN OPTION peut le réaffecter.
Plus d’infos
Interrogez les vues suivantes du dictionnaire de données:
• DBA_ROLES: Tous les rôles qui existent dans la base de données
• DBA_ROLE_PRIVS: Rôles accordés à des utilisateurs et à des rôles
• ROLE_ROLE_PRIVS: Rôles accordés à des rôles
• DBA_SYS_PRIVS: Privilèges système accordés à des utilisateurs et à des
rôles
• ROLE_SYS_PRIVS: Privilèges système accordés à des rôles
• ROLE_TAB_PRIVS: Privilèges objet accordés à des rôles
• SESSION_ROLES: Rôles activés par l'utilisateur
Gestion des profils
Afin d'augmenter la sécurité de la base de données il peut être très
interessant de mettre en place une gestion des mots de passe comme
le nombre maximal de tentatives de connexion à la base, le temps de
vérouillage d'une compte, etc...

Il peut parfois aussi être intéressant de limiter les ressources système


allouées à un utilisateur afin d'éviter une surcharge inutile du serveur.

Oracle nous propose une solution efficace et pratique pour mettre en


place ce type d'action : les PROFILS.
Un PROFIL est un ensemble de limitations système. Une fois qu'un PROFIL a
été assigné à un utilisateur celui-ci ne pourra plus dépasser les limitations
imposées.

La première chose a vérifier et de savoir si vous disposez du privilège


système CREATE PROFILE.

Si c'est le cas il va falloir décider quelles limitations vous souhaitez mettre


en place. Vous avez deux types de limitations:
• Les limitations du mots de passe
• Les limitations des ressources système
Les limitations du mots de passe
Les limitations liées au mot de passe vous offrent un certains nombre
d'options très intéressantes vous permettant d'augmenter la sécurité
de vos mots de passe.

Voici la liste des différentes options disponibles :


Création d’un profil
Syntaxe
Affecter le rôle à un utilisateur
Les limitations des ressources système
Afin de mettre en place les limitations système vous allez devoir mettre
le paramètre RESOURCE_LIMIT à true car Oracle va devoir générer des
statistiques supplémentaire afin de pouvoir utiliser les valeurs des
limitations.

Voici la liste des limitations que vous pourrez mettre en place.


Exemple
Syntaxe
Modifier un profil
Supprimer un profil
Pour supprimer un profil vous devez disposer du privilège DROP
PROFILE. Il existe 2 cas de figure possibles :
Le premier cas le plus simple consiste à supprimer un profil qui n'a été
assigné à personne. Vous pourrez donc le supprimer sans action
supplémentaire.

Cependant si ce profil a été assigné à un utilisateur vous devrez alors


utiliser l'option CASCADE qui demandera à Oracle de supprimer le profil
et d'assigner le profil DEFAULT à tout les utilisateurs qui possédaient le
profil qui vient d'être supprimé.
La syntaxe de supprimer un profil
Audits
 L'audit permet de détecter des violations de sécurité potentielles en révélant des
modèles suspects ou anormaux d'utilisation du système. L'audit offre également un
moyen de suivre des actions suspectes, permettant ainsi de remonter à un utilisateur
particulier, ce qui a un effet dissuasif. Lorsque les utilisateurs savent que leurs activités
sont auditées, ils sont moins susceptibles de tenter des activités malveillantes.

 La protection d'un système informatique, en particulier d'un système sur réseau, requiert
des mécanismes permettant de contrôler des activités avant que les processus système
ou les processus utilisateur ne commencent. La sécurité nécessite des outils permettant
de surveiller les activités lorsque celles-ci se produisent. La sécurité requiert également
des rapports d'activités après que les activités ont eu lieu.
 Il est conseillé de définir les paramètres d'audit avant la connexion des utilisateurs ou le
démarrage des processus système, car la plupart des activités d'audit impliquent la surveillance
des événements en cours et la signalisation des événements qui répondent aux paramètres
spécifiés.

 Vous voulez sélectionner avec soin les types d'activités auditées. Dans le même temps, vous
voulez collecter des informations d'audit utiles. Vous devez également planifier soigneusement
les utilisateurs et objets audités.

 Parfois, les fichiers d'audit peuvent rapidement augmenter de volume et remplir l'espace
disponible, de sorte que vous devez leur allouer suffisamment d'espace disque :
• Détermination des personnes et objets à auditer
• Planification de l'espace de stockage pour les audités
Méthodes d’audit
Oracle donne deux possibilités d’auditer une base de données:

• Audit par des déclencheurs (triggers), et c’est à l’administrateur


d’intervenir pour écrire les procédures d’audit, et de décider
comment et quelles informations doit stocker, et ou il doit les stocker.

• Audit par la commande AUDIT ou l’administrateur a seulement besoin


d’activer l’audit sur action ou un objet, et Oracle s’occupe de
l’enregistrement des informations sur l’action produite.
Auditer la base par Audit
Depuis la version 11 vous avez la possibilité de tracer l'ensemble des
actions d’un compte Oracle donné en exécutant simplement l’ordre
d’audit suivant :

Les éléments d’audit seront écrits dans la destination indiquée par le


paramètre AUDIT_TRAIL.
PARAMETRE AUDIT_SYS_OPERATIONS.
AUDIT_SYS_OPERATIONS active ou désactive la vérification des opérations émises par les
utilisateurs se connectant avec les privilèges SYSDBA ou SYSOPER.
Les valeurs de ce paramètre sont True ou False.
C'est dans le répertoire ADUMP qu'Oracle va écrire les traces d'audit si cette option est activée.
PARAMETRE AUDIT_TRAIL SYNTAXE ET OPTIONS.
AUDIT_TRAIL = { none | os | db | db,extended | xml | xml,extended }.
AUDIT_TRAIL=none.
L'audit de la base de données Oracle est désactivé.
AUDIT_TRAIL=db,extended.
Activation de l'audit, la valeur db,extended permet la redirection de tous les
enregistrements de traces dans la table de trace SYS.AUD$ avec en supplément les
colonnes SQLBIND et SQLTEXT de la table SYS.AUD$ renseignées.
AUDIT_TRAIL=xml.
Activation de l'audit, la valeur xml indique une écriture de tous les enregistrements d'audit
dans des fichiers au format XML dirigés vers le répertoire ADUMP.
AUDIT_TRAIL=xml,extended.
Activation de l'audit, la valeur xml,extended indique l'enregistrement des traces d'audit
dans des fichiers au format XML, avec les valeurs SQLBIND et SQLTEXT en supplément, le
tout dirigé vers le répertoire ADUMP.
AUDIT_TRAIL=os.
Activation de l'audit, la valeur os indique que toutes les traces d'audit
sont dirigées vers le répertoire
$ORACLE_BASE/ADMIN/$DB_UNIQUE_NAME/ADUDMP ou dans
l'observateur des événements.

AUDIT_TRAIL=db.
Activation de l'audit, la valeur db permet la redirection de tous les
enregistrements dans la table de trace SYS.AUD$.
Syntaxe
AUDIT { sql_statement_clause | schema_object_clause | NETWORK } [ BY { SESSION |
ACCESS } ] [ WHENEVER [ NOT ] SUCCESSFUL ] ;

Exemple : Ici, audit sur toutes les suppressions, et modifications effectuées sur la table
EMP du schéma SCOTT et dont les requêtes s'exécutent avec succès.
• SQL> AUDIT delete, update ON scott.emp WHENEVER SUCCESSFUL;

Maintenant on fait un UPDATE et un DELETE sur cette table.


• SQL> UPDATE scott.emp SET ename='TEST AUDIT’ WHERE ename='JONES’;
• SQL> DELETE FROM scott.emp WHERE ename='TEST AUDIT';
PAR ACCÈS : Insère un enregistrement dans la piste de vérification pour
chaque état vérifié.

PAR SESSION : Insère un seul enregistrement d'audit dans la piste


d'audit, pour chaque utilisateur et objet de schéma, pendant une
session qui inclut une action auditée.
STOPPER, ARRETER L'AUDIT DE LA
BASE ORACLE.
Il est conseillé de surveiller l'audit d'une base de données car celui ci
peut générer beaucoup d'enregistrement et ralentir la base de
données.
• Arrêter l'audit se fait avec la commande sql NOAUDIT SQL> NOAUDIT
ALL;
• Remettre la base de données en mode normal : SQL> ALTER SYSTEM
SET AUDIT_TRAIL=none SCOPE=SPFILE; puis redémarrage de la base.
• Il est possible aussi de faire un TRUNCATE TABLE dba_audit_trail afin
de libérer de l'espace en fin d'audit.
Audit de login
SQL : AUDIT SESSION WHENEVER NOT SUCCESSFULL

surveille toutes les tentatives de connexions infructueuses AUDIT


Audit sur les commandes et les privilèges
AUDIT privilège,commande [privilège,commande,…]
[By utilisateur [utilisateur,…]
[By {access/session}]
[whenever [not] successful]

AUDIT SELECT TABLE, DELETE TABLE BY SESSION WHENEVER NOT SUCCESSFUL :


Surveille les select et insert infructueux sur n'importe quelle table, une entrée
seulement par session
AUDIT INSERT ON scott.dept : surveille les insertion (réussies ou échouées) sur la
table DEPT de SCOTT
LES UTILITAIRES EXPORT ET
IMPORT
Cette méthode est une méthode logique de sauvegarde (Export) et de restauration des données (Import).
Elle va nous permettre de sauvegarder le contenu logique d'une base de données dans un fichier de transfert
Oracle au format binaire, ou fichier dump. Ce fichier pourra donc être relu pour recréer des objets qu'il
contient. Ce transfert peut s'accomplir sur une même base ou même sur des bases Oracle, et cela même si
leurs configurations matérielles et logicielles diffèrent. Cela signifie que l'on peut tout à fait exporter une
base sous Windows pour l'importer sous Linux ou Unix (sauf pour les tablespaces transportables).

Les différents modes d'export et d'import :


Niveau base de données complète : C'est le mode le plus complet, lors de ce type d'exportation tous les
objets de la base sont exportés à l'exception de certains utilisateurs : SYS, ORDSYS, CTXSYS, MDSYS et
ORDPLUGINS. Par contre les informations relatives aux structures de base de données, telles que les
définitions de tablespaces et de segments de rollback, sont incluses. Lors de L'insertion des données tout
ces objets sont importés et créés dans la base de destination : le paramètre FULL permet de spécifier ce
mode pour l'exportation et l'importation.
Niveau utilisateur : Dans ce cas là, ce sont tous les objets appartenant à un utilisateur qui
sont exportés: tables, fonctions, synonymes, déclencheurs, liens de bases de données… Le
paramètre OWNER permet de désigner les utilisateurs que l'on désire exporter et le paramètre
FROMUSER désigne quel est l'utilisateur à importer du fichier Dump (le paramètre TOUSER
nous indique quand à lui le schéma destinataire).

Niveau table : Lors de l'exportation de tables individuelles tous leurs objets associés (index,
contraintes, déclencheurs, privilèges …) sont écrits dans le fichier DUMP. Lors de
l'importation tout comme l'exportation les tables doivent être nommées grâce au paramètre
TABLES.

Niveau tablespace : Lors de l'exportation, des métas donnés concernant les tablespaces
spécifiés et les objets qu'ils contiennent sont écrites dans un fichier DUMP.
Privilèges prérequis
Paramètres d’export
Paramètre d’import
Exemples - Export
Exemples – Import
Exporter selon une condition
Il est possible de n'exporter qu'une partie de la table et non pas la
totalité. Il suffit de le préciser par l'option QUERY. Dans cette exemple
nous allons exporter les personnes dont le salaire est supérieur à 500,
supprimer la table et enfin la réimporter :
Présentation de l'environnement RMAN
Recovery Manager (RMAN) est un client de base de données Oracle qui effectue des tâches de
sauvegarde et de récupération sur vos bases de données et automatise l'administration de vos
stratégies de sauvegarde. Il simplifie considérablement la sauvegarde, la restauration et la
récupération des fichiers de base de données.

L'environnement RMAN se compose des utilitaires et des bases de données qui jouent un rôle dans
la sauvegarde de vos données. Au minimum, l'environnement pour RMAN doit inclure les
composants suivants:

Une base de données cible : Une base de données Oracle à laquelle RMAN est connecté avec le
TARGET. Une base de données cible est une base de données sur laquelle RMAN effectue des
opérations de sauvegarde et de récupération. RMAN conserve toujours des métadonnées sur ses
opérations sur une base de données dans le fichier de contrôle de la base de données.
Le client RMAN : Un exécutable Oracle Database qui interprète les commandes, dirige les sessions
serveur pour exécuter ces commandes et enregistre son activité dans le fichier de contrôle de la
base de données cible. L'exécutable RMAN est automatiquement installé avec la base de données
et se trouve généralement dans le même répertoire que les autres exécutables de la base de
données.

Une catalogue de récupération : Un schéma de base de données distinct utilisé pour enregistrer
l'activité RMAN sur une ou plusieurs bases de données cible. Un catalogue de récupération préserve
les métadonnées du référentiel RMAN en cas de perte du fichier de contrôle, ce qui facilite la
restauration et la récupération après la perte du fichier de contrôle. La base de données peut
remplacer les enregistrements plus anciens dans le fichier de contrôle, mais RMAN conserve les
enregistrements pour toujours dans le catalogue, sauf si les enregistrements sont supprimés par
l'utilisateur.
Architecture
Démarrage de RMAN et connexion à une
base de données
Le client RMAN est démarré en exécutant la rman commande à l'invite de commandes de votre
système d'exploitation. RMAN affiche ensuite une invite pour vos commandes, comme illustré dans
l'exemple suivant :

Vous pouvez vous connecter à une base de données avec des options de ligne de commande ou en
utilisant la CONNECT TARGET commande. L'exemple suivant démarre RMAN puis se connecte à une
base de données cible via Oracle Net, SYSDBA n'est pas spécifié car il est implicite. RMAN vous
demande un mot de passe.
Affichage de la configuration RMAN par
défaut
L'environnement de sauvegarde et de récupération RMAN est préconfiguré pour chaque base de
données cible. La configuration est persistante et s'applique à toutes les opérations suivantes sur
cette base de données cible.

Les paramètres configurés RMAN peuvent spécifier des périphériques de sauvegarde, configurer
une connexion à un périphérique de sauvegarde (appelé canal ), les politiques affectant la stratégie
de sauvegarde et autres. La configuration par défaut est adéquate pour la plupart des applications.
Entrez la commande à l'invite RMAN comme suit:
Sauvegarde de la base de données
Nous avons deux méthodes pour sauvegarder notre base de données :
 MODE ARCHIVELOG
 MODE SANS ARCHIVELOG
Le mode ARCHIVELOG est un mode dans lequel vous pouvez placer la base de données pour créer
une sauvegarde de toutes les transactions qui se sont produites dans la base de données afin de
pouvoir récupérer à tout moment.
Les avantages :
 Vous pouvez effectuer des sauvegardes à chaud (sauvegardes lorsque la base de données est
en ligne).
 Les journaux d'archivage et la dernière sauvegarde complète (hors ligne ou en ligne) ou une
sauvegarde plus ancienne peuvent récupérer complètement la base de données sans perdre
de données car toutes les modifications apportées dans la base de données sont stockées
dans le fichier journal.
Désavantages :
Il nécessite de l'espace disque supplémentaire pour stocker les fichiers journaux archivés.
Cependant, l'agent offre la possibilité de purger les journaux après leur sauvegarde, vous donnant
ainsi la possibilité de libérer de l'espace disque si vous en avez besoin.

Le mode NOARCHIVELOG est essentiellement l'absence de mode ARCHIVELOG et présente


l'inconvénient de ne pas pouvoir récupérer à un moment donné. Le mode NOARCHIVELOG a
l'avantage de ne pas avoir à écrire de transactions dans un journal d'archives et augmente ainsi
légèrement les performances de la base de données.
Les avantages :
Il ne nécessite aucun espace disque supplémentaire pour stocker les fichiers journaux archivés.
Désavantages
 Si vous devez récupérer une base de données, vous ne pouvez restaurer que la dernière
sauvegarde complète hors ligne. Par conséquent, toutes les modifications apportées à la base de
données après la dernière sauvegarde complète hors ligne sont perdues.
 Le temps d'arrêt de la base de données est important car vous ne pouvez pas sauvegarder la base
de données en ligne. Cette limitation devient une considération très sérieuse pour les grandes
bases de données.
RMAN permet donc les types de sauvegardes suivants :
 De type COMPLET (ou FULL) : on sauvegarde tous les blocs
 De type DIFFERENTIEL : on sauvegarde uniquement les blocs modifiés depuis la précédente
sauvegarde de niveau n ou inférieur
 De type CUMULATIF : on sauvegarde uniquement les blocs modifiés depuis la précédente
sauvegarde de niveau n-1

Les sauvegardes différentielles et cumulatives sont dites incrémentielles en opposition aux


sauvegardes complètes. RMAN gère 3 niveaux de sauvegardes incrémentielles :
• Niveau 0 : Base de tous les autres niveaux (Sauvegarde de l'ensemble des blocs contenant des
données)
• Niveau 1 : Sauvegarde tous les blocs qui ont changé depuis la plus récente sauvegarde
incrémentielle de niveau 0
Niveau 2 : sauvegarde tous les blocs qui ont changé depuis la plus récente sauvegarde
incrémentielle de niveau 0, 1 ou 2.
Les sauvegardes incrémentielles capturent les modifications de niveau bloc apportées à une base de
données après une précédente sauvegarde incrémentielle. Les sauvegardes incrémentielles sont
généralement plus petites et plus rapides à réaliser que les sauvegardes complètes de bases de
données. La récupération avec des sauvegardes incrémentielles est plus rapide que l'utilisation des
journaux de rétablissement seuls.

Le point de départ d'une stratégie de sauvegarde incrémentielle est un sauvegarde incrémentielle


de niveau 0 , qui sauvegarde tous les blocs de la base de données. Une sauvegarde incrémentielle
au niveau 0 a un contenu identique à un sauvegarde complète , mais, contrairement une
sauvegarde complète du niveau 0 sauvegarde est considérée comme une partie de la stratégie
sauvegarde incrémentale.
Une sauvegarde incrémentielle de niveau 1 ne contient que des blocs modifiés après une
sauvegarde incrémentielle précédente. Si aucune sauvegarde de niveau 0 n'existe dans l'
incarnation de la base de données actuelle ou parent lorsque vous exécutez une sauvegarde de
niveau 1, RMAN effectue automatiquement une sauvegarde de niveau 0.
Une sauvegarde de niveau 1 peut être un sauvegarde incrémentielle cumulative , qui inclut tous les
blocs modifiés depuis la dernière sauvegarde de niveau 0, ou un sauvegarde incrémentielle
différentielle , qui inclut uniquement les blocs modifiés depuis la sauvegarde incrémentielle la plus
récente. Les sauvegardes incrémentielles sont différentielles par défaut.
Lors de la restauration de sauvegardes incrémentielles, RMAN utilise la sauvegarde de niveau 0
comme point de départ, puis met à jour les blocs modifiés en fonction des sauvegardes de niveau 1,
dans la mesure du possible, pour éviter de réappliquer les modifications de la répétition une par
une. La restauration avec des sauvegardes incrémentielles ne nécessite aucun effort supplémentaire
de votre part. Si des sauvegardes incrémentielles sont disponibles, RMAN les utilise lors de la
récupération.
Pour effectuer des sauvegardes incrémentielles de la base de données:
1. Démarrez RMAN et connectez-vous à une base de données cible.
2. Exécutez la BACKUP INCREMENTAL :
L’exemple suivant crée une sauvegarde incrémentielle de niveau 0 pour servir de base à une
stratégie de sauvegarde incrémentielle:

L'exemple suivant crée une sauvegarde incrémentielle cumulative de niveau 1:


L'exemple suivant crée une sauvegarde incrémentielle différentielle de niveau 1:

Pour implémenter une stratégie de sauvegarde mise à jour progressivement : Le script suivant,
exécuté régulièrement, est tout ce qui est nécessaire pour implémenter une stratégie basée sur des
sauvegardes mises à jour de manière incrémentielle :
Rapports sur les opérations RMAN
Le RMAN LIST et les REPORT commandes génèrent des rapports sur les activités de sauvegarde
basés sur le référentiel RMAN.
Exécutez les commandes LIST BACKUP et LIST COPY pour afficher des informations sur les
sauvegardes et les copies de fichiers de données répertoriées dans le référentiel :
Rapports :
Restauration et récupération de fichiers de
base de données
Utilisez les commandes RESTORE et RECOVER pour la restauration et la récupération RMAN des
fichiers de base de données physiques. La restauration des fichiers de données consiste à les
récupérer à partir des sauvegardes nécessaires pour une opération de récupération. La récupération
de média est l'application des modifications des journaux de rétablissement et des sauvegardes
incrémentielles à un fichier de données restauré :

Vous aimerez peut-être aussi