Upload
mahfoud-outanalte
View
17
Download
0
Embed Size (px)
Citation preview
ADMINISTRATION DES BASES DE DONNEES
Pr BOUZIDI
Année universitaire 2007-2008
D.BOUZIDI 2
� Comprendre le rôle et l'importance de chacune des tâches de l'administration des bases de données
� Maîtriser l’administration de la base de données Oracle
Objectifs
Plan du cours
� Introduction
� Architecture conceptuelle de la BD Oracle
� Installation et configuration du logiciel Oracle Database 10g
� Contrôle la base de données
� Gestion du fichier de contrôle
� Gestion des fichiers de journalisation
� Gestion des structures de stockages
� Administration des utilisateurs et des schémas
� Gestion des rôles
� Sauvegarde / récupération
Introduction
D.BOUZIDI 5Champ
Ligne
Colonne
Rappel (1)
Table
� Base de données (BD) : ensemble de données organisé en vue de son utilisation par des programmes correspondant à des applications distinctes et de manière à faciliter l'évolution indépendante des données et des programmes.
� SGBD : ensemble de programmes qui permettent l'accès à une BD
� Une table est l’élément de base d’une BD� Constituée de lignes de données� Chaque ligne comporte une ou plusieurs colonnes� Une colonne unique d'une ligne unique est appelée champ
D.BOUZIDI 6
� base de données relationnelle : Entité/Relation� Contraintes d'intégrité : utilisées pour garantir la validité des données stockées dans les tables� Les types de contrainte suivants :� NOT NULL� UNIQUE� PRIMARY KEY� FOREIGN KEY
Rappel (2)
� SQL : langage de programmation interactif standard permettant d'extraire et de mettre à jour les infos d'une BD
(interrogation, màj, contrôle d’accès, cohérence, intégrité, …)
D.BOUZIDI 7
Tâches d'un administrateur de BD (1)
� Rôle SI (Système d’Information) : Administration et gestion efficace des données (lors de la mise en oeuvre de nouveaux systèmes basés sur les Bases de Données)
� éviter la redondance des données
� éviter un mauvais transfert d'un système à l'autre
� assurer la bonne compréhension des données
� implémenter la conception de la BD
D.BOUZIDI 8
Tâches d'un administrateur de BD (2)
�� Rôle technologique (Niveau physique) : Rôle technologique (Niveau physique) : Administration et gestion efficiente des BD (lors de Administration et gestion efficiente des BD (lors de la mise en oeuvre de nouveaux serveurs de BD ou la mise en oeuvre de nouveaux serveurs de BD ou de nouvelles BD)de nouvelles BD)�� Evaluer le matEvaluer le matéériel pour le serveur de base de riel pour le serveur de base de donndonnééeses
�� IInstallernstaller le logiciel Oraclele logiciel Oracle
�� Planifier la BDPlanifier la BD
�� CrCrééer et ouvrir la BDer et ouvrir la BD
�� Sauvegarder la BDSauvegarder la BD
�� RRéécupcupéérer la BD suite rer la BD suite àà uune pannene panne
�� GGéérer de la srer de la séécuritcuritéé
�� Surveiller les performances de la BDSurveiller les performances de la BD
Architecture conceptuelle de la BD Oracle
D.BOUZIDI 10
ObjectifsObjectifs
� Maîtriser les concepts et le fonctionnement de l’architecture oracle :
� Instance
� Fichiers de données,
� Fichiers de paramétrage
�� MaMaîîtriser les concepts et le triser les concepts et le fonctionnement de lfonctionnement de l’’architecture oracle :architecture oracle :
�� InstanceInstance
�� Fichiers de donnFichiers de donnéées, es,
�� Fichiers de paramFichiers de paraméétragetrage
D.BOUZIDI 11
PrésentationPrésentation
Processusutilisateur
Processusserveur
PGAMémoire SGA
Zone de mémoirepartagée
Fichiers de données
Fichiers de journalisation
Fichiers de contrôle
Instance
Base de données
Fic
hie
rA
LE
RT
Fic
hie
rT
race
Fic
hie
rPW
D
Fic
hie
r
Para
mètre
s
D.BOUZIDI 12
PrésentationPrésentation
� L'instance indispensable au bon fonctionnement d'une base de données Oracle
� Les fichiers de données
� Les fichiers de données facultatifs (fichier d'initialisation, fichier de mots de passe, etc...)
� L'instance indispensable au bon fonctionnement d'une base de données Oracle
� Les fichiers de données
� Les fichiers de données facultatifs (fichier d'initialisation, fichier de mots de passe, etc...)
D.BOUZIDI 13
L’instanceL’instance
L'instance est la composition de 2 sous ensembles :
• Une zone mémoire (SGA) pour 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 :servent à 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 la composition de 2 sous ensembles :
• Une zone mémoire (SGA) pour 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 :servent à 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.
Cache des tampons des DATA Cache dictio D
Cache library
SMON
Mémoire SGAZone de mémoire
partagée
Instance
tampons Journalis
ation
PMON DBW LGWR ARCH CKPT
D.BOUZIDI 14
System global Area System global Area
La SGA ou System global Area
1. Shared Pool : zone de mémoire partagée
2. Database Buffer Cache : cache de tampons de données
3. Redo Log Buffer : tampon de journalisation
La taille totale de la mémoire SGA est définie par le paramètre SGA_MAX_SIZE
Variable_size : sont deux variables exprime la taille de l’espace réservé la SGA
fixedSize
La SGA ou System global Area
1. Shared Pool : zone de mémoire partagée
2. Database Buffer Cache : cache de tampons de données
3. Redo Log Buffer : tampon de journalisation
La taille totale de la mémoire SGA est définie par le paramètre SGA_MAX_SIZE
Variable_size : sont deux variables exprime la taille de l’espace réservé la SGA
fixedSize
Cache des tampons des DATA Cache dictio D
Cache library
SMON
Mémoire SGAZone de mémoire
partagée
Instance
tampons Journalis
ation
PMON DBW LGWR ARCH CKPT
D.BOUZIDI 15
System global AreaSystem global AreaLa SGA ou System global Area
� Shared Pool : utilisutiliséée pour partager les informations sur e pour partager les informations sur les objets de la base de donnles objets de la base de donnéées ainsi que sur les droits es ainsi que sur les droits et privilet privilèèges accordges accordéés aux utilisateurs. s aux utilisateurs.
se dse déécoupe en 2 blocs : coupe en 2 blocs :
� La Library Cache : stocke les informations sur les stocke les informations sur les ordres SQL exordres SQL exéécutcutéés rs réécemment dans une zone SQL cemment dans une zone SQL Cache qui contiendra le texte de l'ordre SQL, la version Cache qui contiendra le texte de l'ordre SQL, la version compilcompiléée de l'ordre SQL et son plan d'exe de l'ordre SQL et son plan d'exéécution. cution.
� Le Dictionnary Cache : contenant les dcontenant les dééfinitions des finitions des objets de la base de donnobjets de la base de donnéées qui ont es qui ont ééttéé utilisutiliséé
rréécemment. Permettra au serveur Oracle de ne pas cemment. Permettra au serveur Oracle de ne pas avoir avoir àà aller chercher ces informations sur le disque aller chercher ces informations sur le disque ààchaque exchaque exéécution d'une requête SQL . cution d'une requête SQL .
D.BOUZIDI 16
System global AreaSystem global AreaLa SGA ou System global Area
� Database Buffer Cache :
• Sert à stocker les blocs de données utilisés récemment
• Fonctionne selon le principe dit du bloc ancien.
Sa taille est définie par deux paramètres
� DB_BLOCK_SIZE : défini lors de la création de la base de données, représente la taille d'un bloc de données Oracle. Celui-ci est défini de manière définitive et ne pourra plus être modifié.
� DB_BLOCK_BUFFERS : défini le nombre de blocs Oracle qui pourront être contenus dans le Database Buffer Cache.
� Ce paramètre est devenu obsolète à partir de la version 9i et a été remplacé par DB_CACHE-Size. Exprimé en octets ce paramètre modifiable dynamiquement
La SGA ou System global Area
� Database Buffer Cache :
• Sert à stocker les blocs de données utilisés récemment
• Fonctionne selon le principe dit du bloc ancien.
Sa taille est définie par deux paramètres
� DB_BLOCK_SIZE : défini lors de la création de la base de données, représente la taille d'un bloc de données Oracle. Celui-ci est défini de manière définitive et ne pourra plus être modifié.
� DB_BLOCK_BUFFERS : défini le nombre de blocs Oracle qui pourront être contenus dans le Database Buffer Cache.
� Ce paramètre est devenu obsolète à partir de la version 9i et a été remplacé par DB_CACHE-Size. Exprimé en octets ce paramètre modifiable dynamiquement
alter system set db_cache_size=100M;alter system set db_cache_size=100M;
D.BOUZIDI 17
System global AreaSystem global Area
La SGA ou System global Area
� Redo Log Buffer : sert exclusivement à enregistrer toutes les modifications apportées sur les données de la base.
� Mémoire de type circulaire, et dont on pourra changer la taille avec le paramètre LOG_BUFFER
� Oracle ne pourra écraser les données contenues dans ce buffer que si elles ont été écrites dans les fichiers REDOLOG FILE
� Le paramètre définissant la taille de Redo log buffer est log_buffer
La SGA ou System global Area
� Redo Log Buffer : sert exclusivement à enregistrer toutes les modifications apportées sur les données de la base.
� Mémoire de type circulaire, et dont on pourra changer la taille avec le paramètre LOG_BUFFER
� Oracle ne pourra écraser les données contenues dans ce buffer que si elles ont été écrites dans les fichiers REDOLOG FILE
� Le paramètre définissant la taille de Redo log buffer est log_buffer
D.BOUZIDI 18
Program global AreaProgram global Area
� Mémoire non partagée.
� seulement utilisée par des processus serveur ou d'arrière plan
� allouée lors du démarrage du processus et désallouée lors de l'arrêt du processus.
� Mémoire non partagée.
� seulement utilisée par des processus serveur ou d'arrière plan
� allouée lors du démarrage du processus et désallouée lors de l'arrêt du processus.
Processusutilisateur
Processusserveur
PGAMémoire SGA
Zone de mémoirepartagée
Instance
Elle contient :
� La zone de tri : Appelée SORT AREA.
� Les informations de sessions, les privilèges de l'utilisateur
� Le Stack Space : Cette zone contiendra toutes les autres variables d'environnement et de session de l'utilisateur
Elle contient :
� La zone de tri : Appelée SORT AREA.
� Les informations de sessions, les privilèges de l'utilisateur
� Le Stack Space : Cette zone contiendra toutes les autres variables d'environnement et de session de l'utilisateur
D.BOUZIDI 19
Les processus d'arrière plan Les processus d'arrière plan
� Le processus SMON (System Monitor) sert à :� Corriger les plantages de l'instance � Vérifier la synchronisation des données . � Si l'instance plante :
� Rejouer des transactions de REDO LOG FILE validées mais non non enregistrées sur le disque dur
� Ouvrir la BD pour les utilisateurs les informations non valides ne sont pas accessibles
� Annuler ttes les transactions non validés � SMON sert à nettoyer les segments TMP et défragmente les
fichiers de données
� Le processus SMON (System Monitor) sert à :� Corriger les plantages de l'instance � Vérifier la synchronisation des données . � Si l'instance plante :
� Rejouer des transactions de REDO LOG FILE validées mais non non enregistrées sur le disque dur
� Ouvrir la BD pour les utilisateurs les informations non valides ne sont pas accessibles
� Annuler ttes les transactions non validés � SMON sert à nettoyer les segments TMP et défragmente les
fichiers de données
Cache des tampons des DATA Cache dictio D
Cache library
SMON
Mémoire SGAZone de mémoire
partagée
Instance
tampons Journalis
ation
PMON DBW LGWR ARCH CKPT
D.BOUZIDI 20
Les processus d'arrière plan Les processus d'arrière plan
� Le processus PMON (Process Monitor) dédié aux utilisateurs, il sert à :
� annuler les transactions d'une session (lors d'un plantage de la session par exemple)
� relâcher tous les verrous posés par la session, � relâcher toutes les ressources détenues par la session.
� Le processus PMON (Process Monitor) dédié aux utilisateurs, il sert à :
� annuler les transactions d'une session (lors d'un plantage de la session par exemple)
� relâcher tous les verrous posés par la session, � relâcher toutes les ressources détenues par la session.
� Le processus DBWR (DataBaseWriter) dédié à :� l'écriture du Database Buffer Cache dans les fichiers de
données� 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
�Le processus DBWR se déclanche :
� Lorsque le nombre de bloc dirty atteint une certaine limite
� Lorsqu'un processus recherchant de blocs libres dans le Database Buffer Cache, et qu'il n’ a trouvé.
� Lors de timeout (3 secondes par défaut)
� Lors d'un checkpoint
� Le processus DBWR (DataBaseWriter) dédié à :� l'écriture du Database Buffer Cache dans les fichiers de
données� 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
�Le processus DBWR se déclanche :
� Lorsque le nombre de bloc dirty atteint une certaine limite
� Lorsqu'un processus recherchant de blocs libres dans le Database Buffer Cache, et qu'il n’ a trouvé.
� Lors de timeout (3 secondes par défaut)
� Lors d'un checkpoint
D.BOUZIDI 21
Les processus d'arrière plan Les processus d'arrière plan
Le processus LGWR : va écrire les informations contenues dans le REDO LOG Buffer dans les fichiers REDOLOG FILE.
Il se déclanche :
� Qd une transaction est terminée avec un COMMIT
� Qd le REDO LOG Buffer est au 1/3 plein (paramétrable)
� Qd il y a plus de 1Mo d'infos de log contenues dans le buffer
Le processus LGWR : va écrire les informations contenues dans le REDO LOG Buffer dans les fichiers REDOLOG FILE.
Il se déclanche :
� Qd une transaction est terminée avec un COMMIT
� Qd le REDO LOG Buffer est au 1/3 plein (paramétrable)
� Qd il y a plus de 1Mo d'infos de log contenues dans le buffer
Le processus CKPT : sert à mettre à jour les en-têtes des fichiers de données, et les fichiers de contrôle CONTROL FILE afin de spécifier que l'action de CHECKPOINT s'est bien déroulée
Le processus CKPT : sert à mettre à jour les en-têtes des fichiers de données, et les fichiers de contrôle CONTROL FILE afin de spécifier que l'action de CHECKPOINT s'est bien déroulée
Le processus ARCH : copie un fichier REDO LOG FILE à un autre emplacement.
� La copie se déclenche automatiquement en mode ARCHIVELOG lors du changement de groupe de REDO LOG FILE (en mode NOARCHIVELOG le processus n'existe pas).
Le processus ARCH : copie un fichier REDO LOG FILE à un autre emplacement.
� La copie se déclenche automatiquement en mode ARCHIVELOG lors du changement de groupe de REDO LOG FILE (en mode NOARCHIVELOG le processus n'existe pas).
D.BOUZIDI 22
Une requête SELECT : Le client se connecte au serveur, ce qui génère la création d'un processus serveur.
L’exécution d’une requête SELECT s’effectue en trois phases :
� Le parsage :
� Vérifier l’existence d’une requête identique (Algorithme de Hachage) dans la LIBRARY CACHE
� Vérifier la syntaxe de la requête, les noms des objets et les privilèges de l’utilisateur (DICTIONNARY CACHE)
� Verrouiller les objets en question durant la phase de parsage afin d'éviter toutes modifications de structure.
� Générer le meilleur plan d'exécution de la requête qui sera enregistré dans LIBRARY CACHE afin d'optimiser les prochaines exécutions de la requête.
� L'exécution : Le serveur exécute la requête et récupère les données
� Le fetch
� Récupération des lignes et renvoie au processus utilisateur sous leur forme brute. (le formatage se fait au niveau du client selon les paramètres définis par l’utilisateur
Une requête SELECT : Le client se connecte au serveur, ce qui génère la création d'un processus serveur.
L’exécution d’une requête SELECT s’effectue en trois phases :
� Le parsage :
� Vérifier l’existence d’une requête identique (Algorithme de Hachage) dans la LIBRARY CACHE
� Vérifier la syntaxe de la requête, les noms des objets et les privilèges de l’utilisateur (DICTIONNARY CACHE)
� Verrouiller les objets en question durant la phase de parsage afin d'éviter toutes modifications de structure.
� Générer le meilleur plan d'exécution de la requête qui sera enregistré dans LIBRARY CACHE afin d'optimiser les prochaines exécutions de la requête.
� L'exécution : Le serveur exécute la requête et récupère les données
� Le fetch
� Récupération des lignes et renvoie au processus utilisateur sous leur forme brute. (le formatage se fait au niveau du client selon les paramètres définis par l’utilisateur
Exécution des requêtes Exécution des requêtes
D.BOUZIDI 23
Une requête DML :
� Le parsage :
� Le même scénario que pour une requête SELECT.
� L'exécution :
� Pour assurer une bonne cohérence des données, création par le serveur
� Une image avant : utile pour les autres utilisateurs ou en cas d’annulation, enregistée dans le segment ROLLBack
� Une image après : utile pour la transaction en cours).
Une requête DML :
� Le parsage :
� Le même scénario que pour une requête SELECT.
� L'exécution :
� Pour assurer une bonne cohérence des données, création par le serveur
� Une image avant : utile pour les autres utilisateurs ou en cas d’annulation, enregistée dans le segment ROLLBack
� Une image après : utile pour la transaction en cours).
Exécution des requêtes Exécution des requêtes
Installation et configuration du logiciel Oracle Database 10g
D.BOUZIDI 25
Objectifs
� Connaître la configuration requise pour le système
� Utiliser l'architecture Optimal Flexible Architecture (OFA)
� Installer et configurer le logiciel avec Oracle Universal Installer
D.BOUZIDI 26
Configuration système requise
� 512 Mo de mémoire physique (RAM)
� 1 Go d'espace de swap
� 400 Mo d'espace disque utilisé comme espace temporaire (/tmp ou \Temp)
� 1,5 Go d'espace disque pour le logiciel Oracle
� 1,5 Go d'espace disque pour la base de données préconfigurée
D.BOUZIDI 27
Architecture OFA (Optimal Flexible Architecture)
� L’objectif de l'architecture OFA est de : � définir une organisation des répertoires (application,
base de données, …)
� recommender une convention de nomage des fichiers
� OFA permet de faciliter les tâches d'administration répétitives : � basculement entre plusieurs bases de données Oracle
� gestion et administration adéquate de la croissance de la base de données
� Contribution à élimination de la fragmentation de l'espace libre
D.BOUZIDI 28
� Définir les points de montage dansl e cas de system UNIX: � /u01
� /disk01
� Nommer les répertoires :� /u01/app/oracle
� /u01/app/applmgr
� Nommer les fichiers :� Fichiers de contrôle : controln.ctl
� Fichiers de journalisation : redon.log
� Fichiers de données : tn.dbf
Architecture OFA (Optimal Flexible Architecture)
D.BOUZIDI 29
Les variables d'environnement
� ORACLE_SID : nom de l'instance (par défaut ORCL)
� ORACLE_HOME : répertoire de base contenant le logiciel Oracle
� ORACLE_BASE : base de la structure de répertoires Oracle pour l'architecture OFA
� NLS_LANG : paramètres de langue, de territoire et de jeu de caractères client
D.BOUZIDI 30
Démarrage de Oracle Universal Installer
D.BOUZIDI 31
Emplacement et type d’installation
D.BOUZIDI 32
Liste des produits de l’installation
D.BOUZIDI 33
Lancement de l’installation
� Deux Messages Box affichant des erreurs
� A 43% de l’installation, cliquer sur OK
� Un autre à 63%, cliquer sur reéssayer
D.BOUZIDI 34
Assistant de Configuration des service NET, iSQL et BD
D.BOUZIDI 35
Configuration de la Base de données
D.BOUZIDI 36
Fin de l’installation
Contrôle la base de données Database 10g
D.BOUZIDI 38
Objectifs
� démarrer et arrêter des outils : iSQL*Plus et Enterprise Manager Database Control
� démarrer et arrêter le processus d'écoute Oracle
� démarrer et arrêter Oracle Database 10g
D.BOUZIDI 39
Démarrer et arrêter iSQL*Plus
$ isqlplusctl start
iSQL*Plus 10.1.0.2.0
Copyright (c) 2004 Oracle. All rights reserved.
Starting iSQL*Plus ...
iSQL*Plus started.
$ isqlplusctl stop
iSQL*Plus 10.1.0.2.0
Copyright (c) 2004 Oracle. All rights reserved.
Stopping iSQL*Plus ...
iSQL*Plus stopped.
D.BOUZIDI 40
Structure de gestion
� Les trois composants de la structure de gestion d'Oracle Database 10g sont les suivants :� Instance de base de données
� Processus d'écoute
� Interface de gestion (Database Control)
Listener
DatabaseControl
D.BOUZIDI 41
Démarrer et arrêter DatabaseControl
$ emctl start dbconsole
TZ set to US/Pacific
Oracle Enterprise Manager 10g Database Control Release 10.1.0.2.0
Copyright (c) 1996, 2004 Oracle Corporation. All rights reserved.
http://edrsr9p1.us.oracle.com:5500/em/console/aboutApplication
Starting Oracle Enterprise Manager 10g Database Control
...................... started.
------------------------------------------------------------------
Logs are generated in directory
/u01/app/oracle/product/10.1.0/db_1/edrsr9p1.us.oracle.com_orcl/sy
sman/log
$ emctl stop dbconsole
TZ set to US/Pacific
Oracle Enterprise Manager 10g Database Control Release 10.1.0.2.0
Copyright (c) 1996, 2004 Oracle Corporation. All rights reserved.
http://edrsr9p1.us.oracle.com:5500/em/console/aboutApplication
Stopping Oracle Enterprise Manager 10g Database Control ...
... Stopped.
D.BOUZIDI 42
Accéder à Database Control
D.BOUZIDI 43
Page d'accueil Database
D.BOUZIDI 44
Modifier le statut du processus d'écoute
D.BOUZIDI 45
OUVERTURE
MOUNT
NOMOUNT
ARRET
Ouverture de tous les fichiers conformément au fichier de contrôle de cette instance.
Ouverture du fichier de contrôle de cette instance.
Démarrage de l'instance.
Etapes des procéduresde démarrage et d'arrêt
Etapes des procéduresde démarrage et d'arrêt
DEMARRAGE
ARRET
D.BOUZIDI 46
Mode d'arrêt : Mode d'arrêt :
A A AbortAbort I I ImmediateImmediate
T T TransactionalTransactional N NormalN Normal
Options d'arrêtOptions d'arrêt
A
x
x
x
x
T
x
x
o
o
I
x
x
x
o
Mode d'arrêt
Permettre de nouvelles connexions
Attendre la fin des sessions en cours
Attendre la fin des transactions en cours
Imposer un point de reprise et fermer les fichiers
N
x
o
o
o
OUIOUI
NONNONx
o
D.BOUZIDI 47
Différents types d'arrêtDifférents types d'arrêt
Transfertde fonds
Retrait de fonds de l'ancien compte
Validation
Déconnexion
Vérification desoldes
Ajout de nouveaux fonds
Arrêt enArrêt enmodemodeNormalNormal
Arrêt enArrêt enmodemodeImmediateImmediate
Arrêt enArrêt enmodemodeTransactionalTransactional
Arrêt de la base Arrêt de la base de donnde donnééeses
Arrêt de Arrêt de la base de la base de donndonnééeses
Arrêt de la baseArrêt de la basede donnde donnééeses
1
2
3
4
5
D.BOUZIDI 48
Options SHUTDOWN
� Vers le bas :� Le cache de tampons de la base de données est écrit dans les fichiers de données
� Les modifications non validées sont annulées
� Les ressources sont libérées
� Vers le haut :� Pas de récupération d'instance
Base de données cohérente
(base de données propre)
Pendant les opérations
SHUTDOWN
NORMAL
ouSHUTDOWN
TRANSACTIONAL
ouSHUTDOWN
IMMEDIATE
D.BOUZIDI 49
Options SHUTDOWN
� Vers le bas :� Les mémoires tampon modifiées ne sont pas écrites dans les fichiers de données
� Les modifications non validées ne sont pas annulées
Base de donnéesincohérente
(base de données "dirty")
Pendant les opérations
SHUTDOWN ABORT
ouéchec d'une
instanceou
STARTUP FORCE
Vers le haut :
� Les fichiers de journalisation en ligne sont utilisés pour réappliquerles modifications
� Les segments d'annulation sont utilisés pour annuler les modifications non validées
� Les ressources sont libérées
D.BOUZIDI 50
� NOMOUNT : Créé la SGA et démarre les processus en arrière plan mais ne permet pas l'accès à la base (reste un OPEN à faire).
� MOUNT : Monte la base pour certaines activités DBA mais ne permet aucun accès à la base.
� OPEN : Permet aux utilisateurs d'accéder à la base.
� EXCLUSIVE : Autorise l'instance courant seulement à accéder àla base.
� PFILE : Spécifie le fichier d'initialisation à prendre en compte.
� FORCE : Annule l'instance courante avant d'effectuer un démarrage normal.
� RESTRICT : Autorise seulement l'accès aux utilisateurs avec le privilège RESTRICTED SESSION.
� RECOVER Démarre la restauration media quand la base
démarre.
� NOMOUNT : Créé la SGA et démarre les processus en arrière plan mais ne permet pas l'accès à la base (reste un OPEN à faire).
� MOUNT : Monte la base pour certaines activités DBA mais ne permet aucun accès à la base.
� OPEN : Permet aux utilisateurs d'accéder à la base.
� EXCLUSIVE : Autorise l'instance courant seulement à accéder àla base.
� PFILE : Spécifie le fichier d'initialisation à prendre en compte.
� FORCE : Annule l'instance courante avant d'effectuer un démarrage normal.
� RESTRICT : Autorise seulement l'accès aux utilisateurs avec le privilège RESTRICTED SESSION.
� RECOVER Démarre la restauration media quand la base
démarre.
Options SHUTDOWN
STARTUP [Option]STARTUP [Option]
D.BOUZIDI 51
Exemple de commande démarrage et d’arrêt de la base de données
Exemple de commande démarrage et d’arrêt de la base de données
STARTUP PFILE=init015.oraSTARTUP PFILE=init015.ora
� Démarre l'instance et ouvre la base de données :� Démarre l'instance et ouvre la base de données :
� Fait passer la base de données de l'état NOMOUNT àMOUNT :
� Fait passer la base de données de l'état NOMOUNT àMOUNT :
ALTER DATABASE ORCL MOUNT;ALTER DATABASE ORCL MOUNT;
• Ouvert la base de données en mode lecture seule (READ ONLY) :
• Ouvert la base de données en mode lecture seule (READ ONLY) :
ALTER DATABASE ORCL OPEN READ ONLY;ALTER DATABASE ORCL OPEN READ ONLY;
� Arrête de l ’instance et la base de données : � Arrête de l ’instance et la base de données :
SHUTDOWN Immediate;SHUTDOWN Immediate;
D.BOUZIDI 52
Ouvrir une base de données en mode lecture seule (READ ONLY)
Ouvrir une base de données en mode lecture seule (READ ONLY)
� Toute base de données peut être ouverte en mode lecture seule.
� Dans ce mode, vous pouvez :
� lancer des interrogations,
� effectuer des opérations de tri sur disque avec des tablespaces gérés en local,
� utiliser des fichiers de données hors ligne et en ligne, et non des tablespaces,
� récupérer des fichiers de données hors ligne et des tablespaces.
� Toute base de données peut être ouverte en mode lecture seule.
� Dans ce mode, vous pouvez :
� lancer des interrogations,
� effectuer des opérations de tri sur disque avec des tablespaces gérés en local,
� utiliser des fichiers de données hors ligne et en ligne, et non des tablespaces,
� récupérer des fichiers de données hors ligne et des tablespaces.
D.BOUZIDI 53
init001.orainit001.ora
Fichier de paramètres d'initialisation
Fichier de paramètres d'initialisation
SQL> CONNECT sys/PwdSys AS SYSDBA
SQL> STARTUP
PFILE=C:\oracle\product\10.1.0\admin\orcl\pfile\init001.ora
SQL> CONNECT sys/PwdSys AS SYSDBA
SQL> STARTUP
PFILE=C:\oracle\product\10.1.0\admin\orcl\pfile\init001.ora
Cache des tampons des DATA Cache dictio D
Cache library
SMON
Mémoire SGAZone de mémoire
partagée
Instance
tampons Journalis
ation
PMON DBW LGWR ARCH CKPT
Fic
hie
r
Para
mètre
s
D.BOUZIDI 54
Utiliser les paramètresUtiliser les paramètres
� Dimensionnez la mémoire SGA.
� Définissez les valeurs par défaut de la BD et de l'instance.
� Définissez les limites relatives aux utilisateurs ou aux processus.
� Définissez les limites relatives aux ressources de la BD.
� Définissez les divers attributs physiques de la BD, tels que la taille des blocs.
� Indiquez l'emplacement des fichiers de contrôle, des fichiers journaux archivés, du fichier ALERT et des fichiers trace.
� Dimensionnez la mémoire SGA.
� Définissez les valeurs par défaut de la BD et de l'instance.
� Définissez les limites relatives aux utilisateurs ou aux processus.
� Définissez les limites relatives aux ressources de la BD.
� Définissez les divers attributs physiques de la BD, tels que la taille des blocs.
� Indiquez l'emplacement des fichiers de contrôle, des fichiers journaux archivés, du fichier ALERT et des fichiers trace.
D.BOUZIDI 55
Exemple de fichier de paramètresExemple de fichier de paramètres
# Initialization Parameter File: initU15.ora
db_name = U15
control_files = (/DISK1/control01.con,
/DISK2/control02.con)
db_block_size = 8192
db_block_buffers = 2048
shared_pool_size = 52428800
log_buffer = 64K
processes = 50
db_files = 1024
log_files = 10
max_dump_file_size = 10240
background_dump_dest = (/home/disk3/user15/BDUMP)
user_dump_dest = (/home/disk3/user15/UDUMP)
core_dump_dest = (/home/disk3/user15/CDUMP)
rollback_segments =
(r01,r02,r03,r04,r05,r06,r07,r08)
...
# Initialization Parameter File: initU15.ora
db_name = U15
control_files = (/DISK1/control01.con,
/DISK2/control02.con)
db_block_size = 8192
db_block_buffers = 2048
shared_pool_size = 52428800
log_buffer = 64K
processes = 50
db_files = 1024
log_files = 10
max_dump_file_size = 10240
background_dump_dest = (/home/disk3/user15/BDUMP)
user_dump_dest = (/home/disk3/user15/UDUMP)
core_dump_dest = (/home/disk3/user15/CDUMP)
rollback_segments =
(r01,r02,r03,r04,r05,r06,r07,r08)
...
D.BOUZIDI 56
Quelques paramètres Quelques paramètres � BACK_GROUND_DUMP_DEST :Emplacement où les fichiers traces des
processus en arrière plan sont enregistrés.
� USER_DUMP_DEST Emplacement où les fichiers traces sont créés.
� CONTROL_FILES : Noms des fichiers de contrôle.
� DB_CACHE_SIZED : taille du tampon de données, (remplace le paramètre DB_BLOCK_BUFFERS définissant le nombre de blocs mis en cache dans la SGA, paramètre obsolète à partir de la version 9i)
� DB_NAME : Identifiant de la base de données de 5 caractères ou moins. (seul paramètre nécessaire à la création d'une base).
� SHARED_POOL_SIZE : Taille en octets de la zone de partage.
� IFILE : Permet de référencer un autre fichier de paramètre à imbriquer dans la définition.
� LOG_BUFFER : Nombre d'octets alloués au buffer redolog dans la SGA.
� MAX_DUMP_FILE_SIZE : Taille maximum des fichiers trace, spécifiée en nombre de blocs de l'OS.
� PROCESSES : Nombre de processus de l'OS pouvant se connecter simultanément à l’instance.
� SQL_TRACE : Active l’outil de suivi SQL pour chaque session utilisateur.
� TIMED_STATISTICS : Active ou non le minutage dans les fichiers trace et sur les écrans.
D.BOUZIDI 57
Vues dynamiques des performancesVues dynamiques des performances
� Sont gérées par le serveur Oracle et mises à jour en permanence.
� Contiennent des données sur les structures de disque et de mémoire.
� Contiennent des données utiles pour le réglage des performances.
� Sont associées à des synonymes publics portant le préfixe V$.
� v$fixed_table contient le nom de toutes les vues disponibles
� Sont gérées par le serveur Oracle et mises à jour en permanence.
� Contiennent des données sur les structures de disque et de mémoire.
� Contiennent des données utiles pour le réglage des performances.
� Sont associées à des synonymes publics portant le préfixe V$.
� v$fixed_table contient le nom de toutes les vues disponibles
MémoireSGA
�� V$PARAMETER : des infos sur les paramV$PARAMETER : des infos sur les paramèètres d'initialisationtres d'initialisation
�� V$SYSTEM_PARAMETER : des infos sur les paramV$SYSTEM_PARAMETER : des infos sur les paramèètres tres dd’’initialisation et leurs modification initialisation et leurs modification ééventuellesventuelles
�� V$SGA : des infos sur la SGAV$SGA : des infos sur la SGA
�� V$OPTION : la liste des options installV$OPTION : la liste des options installéées sur le serveur Oracle es sur le serveur Oracle
�� V$PROCESS : des infos sur les processus actifs courantV$PROCESS : des infos sur les processus actifs courant
�� V$SESSION : des infos sur la session courante V$SESSION : des infos sur la session courante
�� V$VERSION : Liste le numV$VERSION : Liste le numééro de version et les composants ro de version et les composants
�� V$INSTANCE : Affiche l'V$INSTANCE : Affiche l'éétat de l'instance courante tat de l'instance courante
D.BOUZIDI 58
OUVERTUREOUVERTURE
MOUNTMOUNT
NOMOUNTNOMOUNT
Dictionnaire Dictionnaire
de donnde donnééeses
Afficher les vues dynamiquesdes performances
Afficher les vues dynamiquesdes performances
Lecture des donnLecture des donnéées es
sur disquesur disque
Lecture des donnLecture des donnééeses
en men méémoiremoireARRETARRET
D.BOUZIDI 59
� Afficher les valeurs des paramètres en cours� Afficher les valeurs des paramètres en cours
� Exécutez la commande :
� Interrogez la vue dynamique des performances V$PARAMETER :
� Exécutez la commande :
� Interrogez la vue dynamique des performances V$PARAMETER :
SHOW PARAMETER controlSHOW PARAMETER control
SELECT name FROM v$parameter WHERE name LIKE '%control%';SELECT name FROM v$parameter WHERE name LIKE '%control%';
Affichage des paramètresAffichage des paramètres
� Certains paramètres d'initialisation peuvent être modifiés pendant l'exécution d'une instance (grâce aux commandes Alter session et Alter system).
� Certains paramètres d'initialisation peuvent être modifiés pendant l'exécution d'une instance (grâce aux commandes Alter session et Alter system).
ALTER SESSION SET SQL_TRACE=true; //session couranteALTER SESSION SET SQL_TRACE=true; //session courante
ALTER SYSTEM SET TIMED_STATISTICS=true;ALTER SYSTEM SET TIMED_STATISTICS=true;
ALTER SYSTEM SET SORT_AREA_SIZE=131072 DEFERRED;// DEFERRED Indique que le paramètre ne sera modifié qu'à
partir de la prochaine session.
ALTER SYSTEM SET SORT_AREA_SIZE=131072 DEFERRED;// DEFERRED Indique que le paramètre ne sera modifié qu'à
partir de la prochaine session.
D.BOUZIDI 60
� Activer et désactiver une session en mode restreint� Activer et désactiver une session en mode restreint
� Exécutez la commande STARTUP pour restreindre l'accès à une base de données :
� Exécutez la commande ALTER SYSTEM pour mettre une instance en mode restreint :
� Exécutez la commande STARTUP pour restreindre l'accès à une base de données :
� Exécutez la commande ALTER SYSTEM pour mettre une instance en mode restreint :
STARTUP RESTRICTSTARTUP RESTRICT
ALTER SYSTEM ENABLE RESTRICTED SESSION;ALTER SYSTEM ENABLE RESTRICTED SESSION;
� Dans la vue dynamique des performances V$SESSION, identifiez la session à interrompre :
� Exécutez la commande ALTER SYSTEM :
� Dans la vue dynamique des performances V$SESSION, identifiez la session à interrompre :
� Exécutez la commande ALTER SYSTEM :
SELECT sid, serial# FROM v$session WHERE
username='SCOTT';
SELECT sid, serial# FROM v$session WHERE
username='SCOTT';
ALTER SYSTEM KILL SESSION '7,15';ALTER SYSTEM KILL SESSION '7,15';
� Interrompre une session� Interrompre une session
Gestion des sessionsGestion des sessions
D.BOUZIDI 61
Fichiers ALERT et TRACEFichiers ALERT et TRACE
� Les fichiers trace peuvent être écrits par les processus serveur et les processus d'arrière-plan.
� Le serveur Oracle vide les informations relatives aux erreurs dans des fichiers trace.
� Le fichier ALERT est le journal chronologique des messages et des erreurs.
� La fonction trace par processus serveur peut être activée ou désactivée par :
� une commande ALTER SESSION,
� le paramètre SQL_TRACE.
� Les fichiers trace peuvent être écrits par les processus serveur et les processus d'arrière-plan.
� Le serveur Oracle vide les informations relatives aux erreurs dans des fichiers trace.
� Le fichier ALERT est le journal chronologique des messages et des erreurs.
� La fonction trace par processus serveur peut être activée ou désactivée par :
� une commande ALTER SESSION,
� le paramètre SQL_TRACE.
Gestion du fichier de contrôleGestion du fichier de contrôle
D.BOUZIDI 63
Utiliser le fichier de contrôleUtiliser le fichier de contrôle
� Petit fichier binaire : Indique au serveur où sont situés les fichiers constituant la base de données
� Nécessaire :
� au montage
� au fonctionnement de la base de données
� Lié à une seule base de données
� Modifié fréquemment par le serveur oracle.
� Indispensable pour la restauration de la base.
� Doit être multiplexé
� En cas de perte du fichier de contrôle, la base de données doit être restaurée
� Petit fichier binaire : Indique au serveur où sont situés les fichiers constituant la base de données
� Nécessaire :
� au montage
� au fonctionnement de la base de données
� Lié à une seule base de données
� Modifié fréquemment par le serveur oracle.
� Indispensable pour la restauration de la base.
� Doit être multiplexé
� En cas de perte du fichier de contrôle, la base de données doit être restaurée
� Pour afficher les noms des fichiers de CTL� Pour afficher les noms des fichiers de CTL
show parameter control_filesshow parameter control_files
select value from v$parameter where name='control_files'; select value from v$parameter where name='control_files';
D.BOUZIDI 64
Contenu du fichier de contrôleContenu du fichier de contrôle
� Nom et identificateur de la base de données
� Date de création de la base de données
� Emplacement des fichiers de données et de journalisation
� Noms des tablespaces et les fichiers de données (nom de fichier,statut lecture/écriture, en ligne ou non)
� Les fichiers log en ligne
� Historique de journalisation archivés
� Informations de sauvegarde
� Informations sur les blocs corrompus
� ……
� Nom et identificateur de la base de données
� Date de création de la base de données
� Emplacement des fichiers de données et de journalisation
� Noms des tablespaces et les fichiers de données (nom de fichier,statut lecture/écriture, en ligne ou non)
� Les fichiers log en ligne
� Historique de journalisation archivés
� Informations de sauvegarde
� Informations sur les blocs corrompus
� ……
D.BOUZIDI 65
Multiplexer le fichier de contrôleMultiplexer le fichier de contrôle
control_filescontrol_files=("C:=("C:\\oracleoracle\\productproduct\\10.1.010.1.0\\oradataoradata\\orclorcl\\control01.ctl", control01.ctl",
"C:"C:\\oracleoracle\\productproduct\\10.1.010.1.0\\oradataoradata\\orclorcl\\control02.ctl", control02.ctl",
"C:"C:\\oracleoracle\\productproduct\\10.1.010.1.0\\oradataoradata\\orclorcl\\control03.ctl")control03.ctl")
UnitéUnité
control01.ctl
Unité 2Unité 2
control02.ctl
Unité 3Unité 3
control03.ctl
D.BOUZIDI 66
� Deux méthodes pour multiplexer le fichier de contrôle :
� Méthode 1
� Visualiser les fichiers de contrôle existants
� Arrêter la base
� Modifier le paramètre CONTROL_FILES dans le fichier init.ora
� Copier le fichier de contrôle en utilisant les commandes OS
� Démarrer la base de données
� Méthode 2
� Ajouter le nouveau fichier de contrôle /disk3/oradata/orcl/control04.ctl dans le paramètre CONTROL_FILES en utilisant la commande :
� Arrêter la base
� Copier le fichier de contrôle en utilisant les commandes OS
� Démarrer la base de données
� Deux méthodes pour multiplexer le fichier de contrôle :
� Méthode 1
� Visualiser les fichiers de contrôle existants
� Arrêter la base
� Modifier le paramètre CONTROL_FILES dans le fichier init.ora
� Copier le fichier de contrôle en utilisant les commandes OS
� Démarrer la base de données
� Méthode 2
� Ajouter le nouveau fichier de contrôle /disk3/oradata/orcl/control04.ctl dans le paramètre CONTROL_FILES en utilisant la commande :
� Arrêter la base
� Copier le fichier de contrôle en utilisant les commandes OS
� Démarrer la base de données
Multiplexer le fichier de contrôleMultiplexer le fichier de contrôle
� Oracle met à jours les fichiers de contrôle en même temps, mais seul le premier fichier cité dans le paramètre CONTROL_FILES est consulté.
//SCOPE=SPFILE:le changement de paramètre est enregistré dans le SPFILE, et ne sera pris en compte
qu’au prochain démarrage de l'instance. Utilisé pour les paramètres non dynamique
� Oracle met à jours les fichiers de contrôle en même temps, mais seul le premier fichier cité dans le paramètre CONTROL_FILES est consulté.
//SCOPE=SPFILE:le changement de paramètre est enregistré dans le SPFILE, et ne sera pris en compte
qu’au prochain démarrage de l'instance. Utilisé pour les paramètres non dynamique
alter system set control_files=
'/disk1/oradata/orcl/control01.ctl',
'/disk1/oradata/orcl/control02.ctl ',
'/disk1/oradata/orcl/control03.ctl ',
'/disk1/oradata/orcl/control04.ctl' scope=spfile;
alter system set control_files=
'/disk1/oradata/orcl/control01.ctl',
'/disk1/oradata/orcl/control02.ctl ',
'/disk1/oradata/orcl/control03.ctl ',
'/disk1/oradata/orcl/'/disk1/oradata/orcl/control04.ctlcontrol04.ctl'' scope=spfile;
D.BOUZIDI 67
sauvegarder le fichier de contrôle
sauvegarder le fichier de contrôle
� Deux méthodes :
� Commande sauvegardant le fichier de contrôle en un fichier binaire :
� Commande créant un fichier en format texte dans le répertoire USER_DUMP_DEST
� Deux méthodes :
� Commande sauvegardant le fichier de contrôle en un fichier binaire :
� Commande créant un fichier en format texte dans le répertoire USER_DUMP_DEST
alter database backup controlfile to trace;alter database backup controlfile to trace;
alter database backup controlfile to nom_du_fichieralter database backup controlfile to nom_du_fichier
� C’est recommandé de sauvegarder le fichier de contrôle à chaque modification de la structure de la base (Ajout, renomme ou suppression de fichiers de données ou de journalisation).
� C’est recommandé de sauvegarder le fichier de contrôle à chaque modification de la structure de la base (Ajout, renomme ou suppression de fichiers de données ou de journalisation).
D.BOUZIDI 68
��V$CONTROLFILE : affiche tous les noms des fichiers de contrôle eV$CONTROLFILE : affiche tous les noms des fichiers de contrôle et t leur statut qui peut être NULL ou INVALIDleur statut qui peut être NULL ou INVALID
��V$CONTROLFILE_RECORD_SECTION : plusieurs infos sur le fichier V$CONTROLFILE_RECORD_SECTION : plusieurs infos sur le fichier de contrôle (TYPE : Type de la section, RECORD_SIZE : Taille d'ude contrôle (TYPE : Type de la section, RECORD_SIZE : Taille d'une ne entrentréée en bits, RECORDS_TOTAL : Nombre d'entre en bits, RECORDS_TOTAL : Nombre d'entréées alloues allouéées pour la es pour la section, RECORDS_USED : Nombres d'entrsection, RECORDS_USED : Nombres d'entréées utilises utiliséées dans la es dans la section, FIRST_INDEX : Index de la premisection, FIRST_INDEX : Index de la premièère entrre entréée, LAST_INDEX : e, LAST_INDEX : Index de la derniIndex de la dernièère entrre entréée)e)
��V$KCCDI : affiche la valeur de MAXLOGMEMBERS (DIMLM)V$KCCDI : affiche la valeur de MAXLOGMEMBERS (DIMLM)
�� Liste des vues qui lisent directement du fichier de contrôle : Liste des vues qui lisent directement du fichier de contrôle : V$THREAD, V$DATABASE, V$DATAFILE, V$DATAFILE_HEADER V$THREAD, V$DATABASE, V$DATAFILE, V$DATAFILE_HEADER V$LOGFILE, V$ARCHIVED_LOG, V$BACKUP, V$BACKUP_DATAFILE, V$LOGFILE, V$ARCHIVED_LOG, V$BACKUP, V$BACKUP_DATAFILE, V$BACKUP_PIECE, V$BACKUP_REDOLOG, V$BACKUP_SET, V$BACKUP_PIECE, V$BACKUP_REDOLOG, V$BACKUP_SET, ……
Obtenir des informationsObtenir des informations
Fichier de contrôle
Gestion des fichiers de journalisation
(les fichiers log)
D.BOUZIDI 70
Utiliser des fichiers de journalisationUtiliser des fichiers de journalisation
� Permettent à la base de garder une trace de toutes les altérations de
données,
� En cas de crash de la base, ils permettent de rejouer les modifications
apportées à la base.
� Doivent être multiplixés au moins au nombre de deux
� Permettent à la base de garder une trace de toutes les altérations de
données,
� En cas de crash de la base, ils permettent de rejouer les modifications
apportées à la base.
� Doivent être multiplixés au moins au nombre de deux
ARC
Mémoire SGAZone de mémoire
partagée
Fichiers de données Fichiers
de journalisation
Fichiers de contrôle
Base de données
Instance
Fichiers archivages des logs
LGW
D.BOUZIDI 71
Mode de fonctionnement des fichiers de journalisation
Mode de fonctionnement des fichiers de journalisation
Groupe 2Groupe 2 Groupe 3Groupe 3Groupe 1Groupe 1
Membre1UnitUnitéé 11
UnitUnitéé 22
Membre2
Membre1 Membre1
Membre2Membre2
� En mode NOARCHIVELOG, un fichier log plein est disponible après que les changements enregistrés dedans sont écrits dans les fichiers de données.
� En ARCHIVELOG, un fichier log plein est disponible après que les changements effectués dedans sont écrits dans les fichiers de données et était archivé
� Un fichier log en ligne ou archivé est identifié par son numéro de séquence
� En mode NOARCHIVELOG, un fichier log plein est disponible après que les changements enregistrés dedans sont écrits dans les fichiers de données.
� En ARCHIVELOG, un fichier log plein est disponible après que les changements effectués dedans sont écrits dans les fichiers de données et était archivé
� Un fichier log en ligne ou archivé est identifié par son numéro de séquence
D.BOUZIDI 72
� Sur l'archivage à partir : � Sur l'archivage à partir :
Obtenir des informations Obtenir des informations
ARCHIVE LOG LIST;ARCHIVE LOG LIST;
SELECT archiver FROM v$instance;SELECT archiver FROM v$instance;
� Sur les groupes à partir : � Sur les groupes à partir :
� V$DATABASE (NAME,LOG_MODE)� V$DATABASE (NAME,LOG_MODE)
� V$INSTANCE (ARCHIVER) � V$INSTANCE (ARCHIVER)
� Ligne de commande :� Ligne de commande :
� V$THREAD (groups, current_group#, sequence# ) //fichier log en cours� V$THREAD (groups, current_group#, sequence# ) //fichier log en cours
SELECT groups, current_group#, sequence# FROM v$thread;SELECT groups, current_group#, sequence# FROM v$thread;
� Sur les groupes et les membres à partir :� Sur les groupes et les membres à partir :
� V$LOG (group#, members, status, sequence, bytes) //les infos du fichier CTL� V$LOG (group#, members, status, sequence, bytes) //les infos du fichier CTL
status : unused (jamais écrit), current (en ligne et en cours d'écriture), active (en ligne et nécessaires à la restauration de la base ), inactive (en ligne non nécessaires à la restauration de la base)
� V$LOGFILE (group#, type, status, member)� V$LOGFILE (group#, type, status, member)
SELECT * FROM v$logfile; SELECT * FROM v$logfile;
SELECT group#, sequence#, bytes, members, status FROM v$log ;SELECT group#, sequence#, bytes, members, status FROM v$log ;
status : invalid (le fichier est inaccessible), stale (le fichier est incomplet), deleted (le fichier n’est pas utilisé), vide (le fichier est en cours d’utilisation)
SELECT name, log_mode FROM v$database;SELECT name, log_mode FROM v$database;
D.BOUZIDI 73
� Un log switch est le point où la base arrête d'écrire dans l'un des fichiers redo en ligne et commence à écrire dans un autre.
� Se déclanche : � Le fichier log courant est plein et on doit continuer à écrire dans le fichier redo
� Configuré pour qu'il se reproduit à intervalles réguliers
� Manuellement
� Imposer des changements de fichier de journalisation à l'aide de la commande :
La commande suivante permet d'archiver le redo log courant et d'activer le redo log suivant.
� Gérer les points de reprise à l'aide des paramètres d'initialisation :� LOG_CHECKPOINT_INTERVAL
� LOG_CHECKPOINT_TIMEOUT
� FAST_START_IO_TARGET
� Un log switch est le point où la base arrête d'écrire dans l'un des fichiers redo en ligne et commence à écrire dans un autre.
� Se déclanche : � Le fichier log courant est plein et on doit continuer à écrire dans le fichier redo
� Configuré pour qu'il se reproduit à intervalles réguliers
� Manuellement
� Imposer des changements de fichier de journalisation à l'aide de la commande :
La commande suivante permet d'archiver le redo log courant et d'activer le redo log suivant.
� Gérer les points de reprise à l'aide des paramètres d'initialisation :� LOG_CHECKPOINT_INTERVAL
� LOG_CHECKPOINT_TIMEOUT
� FAST_START_IO_TARGET
Changements de fichier de journalisation et points de reprise
Changements de fichier de journalisation et points de reprise
ALTER SYSTEM SWITCH LOGFILE;ALTER SYSTEM SWITCH LOGFILE;
ALTER SYSTEM CHECKPOINT; //archiver le redo log courant. ALTER SYSTEM CHECKPOINT; //archiver le redo log courant.
D.BOUZIDI 74
� Le CHECKPOINT est un évènement qui se déclencher lors :
� D'un changement de groupe de REDO LOG FILE.
� D'un arrêt normal de la base de données (c'est à dire sans l'option ABORT)
� D'une demande explicite de l'administrateur
� D'une limite définie par les paramètres d'initialisation
� LOG_CHECKPOINT_INTERVAL : spécifie le nombre maximum de blocs du REDO LOG Buffer qui seront alors lus lors d'une restauration de l'instance.
� LOG_CHECKPOINT_TIMEOUT : Défini en secondes. Il permet de définir le temps maximum entre 2 CHECKPOINTS (ver > 8i : permet de définir le temps maximal de lecture du processus LGWR ).
� FAST_START_IO_TARGET : en secondes, il définit le temps maximum pour restaurer une instance.
� L'évènement CHECKPOINT déclenche
� Le LGWR : vide le REDO LOG Buffer.
� l'écriture d'un certain nombre de blocs du Database Buffer Cache dans les fichiers de données par DBWn. Le nombre de blocs écris par DBWnest défini avec le paramètre FAST_START_IO_TARGET
� Le CHECKPOINT est un évènement qui se déclencher lors :
� D'un changement de groupe de REDO LOG FILE.
� D'un arrêt normal de la base de données (c'est à dire sans l'option ABORT)
� D'une demande explicite de l'administrateur
� D'une limite définie par les paramètres d'initialisation
� LOG_CHECKPOINT_INTERVAL : spécifie le nombre maximum de blocs du REDO LOG Buffer qui seront alors lus lors d'une restauration de l'instance.
� LOG_CHECKPOINT_TIMEOUT : Défini en secondes. Il permet de définir le temps maximum entre 2 CHECKPOINTS (ver > 8i : permet de définir le temps maximal de lecture du processus LGWR ).
� FAST_START_IO_TARGET : en secondes, il définit le temps maximum pour restaurer une instance.
� L'évènement CHECKPOINT déclenche
� Le LGWR : vide le REDO LOG Buffer.
� l'écriture d'un certain nombre de blocs du Database Buffer Cache dans les fichiers de données par DBWn. Le nombre de blocs écris par DBWnest défini avec le paramètre FAST_START_IO_TARGET
Processus CKPTProcessus CKPT
D.BOUZIDI 75
Manipulation des fichiers de log Manipulation des fichiers de log
ALTER DATABASE ADD LOGFILE('/DISK1/Redo30.log','/DISK2/Redo31.log') size 1M;ALTER DATABASE ADD LOGFILE('/DISK1/Redo30.log','/DISK2/Redo31.log') size 1M;
� Ajout des groupes � Ajout des groupes
� Ajout des membres à un groupe � Ajout des membres à un groupe
ALTER DATABASE ADD LOGFILE MEMBER
'/DISK2/Redo11.log' TO GROUP 1,
'/DISK2/Redo21.log' TO GROUP 2;
ALTER DATABASE ADD LOGFILE MEMBER
'/DISK2/Redo11.log' TO GROUP 1,
'/DISK2/Redo21.log' TO GROUP 2;
� Modification d’emplacement � Modification d’emplacement 1. Arrêtez la base de données2. Copiez les fichiers de log en ligne vers un nouvel emplacement.3. Exécutez la commande ALTER DATABASE RENAME FILE en mode MOUNT.
1. Arrêtez la base de données2. Copiez les fichiers de log en ligne vers un nouvel emplacement.3. Exécutez la commande ALTER DATABASE RENAME FILE en mode MOUNT.
� Suppression des groupes : � Suppression des groupes :
� Suppression des membres des groupes : � Suppression des membres des groupes :
� Effacement des fichiers de journalisation : � Effacement des fichiers de journalisation :
ALTER DATABASE DROP LOGFILE GROUP 3;ALTER DATABASE DROP LOGFILE GROUP 3;
ALTER DATABASE DROP LOGFILE MEMBER '/DISK2/Redo21.log';ALTER DATABASE DROP LOGFILE MEMBER '/DISK2/Redo21.log';
ALTER DATABASE CLEAR LOGFILE '/DISK1/Redo20.log';ALTER DATABASE CLEAR LOGFILE '/DISK1/Redo20.log';
Groupe 1Groupe 1
Redo10.log
Redo11.log
Groupe 2Groupe 2
Redo20.log
Redo21.log
Groupe 3Groupe 3
Redo30.log
Redo31.log
ALTER DATABASE RENAME FILE '/DISK2/Redo11.log' TO '/DISK3/Redo11.log';ALTER DATABASE RENAME FILE '/DISK2/Redo11.log' TO '/DISK3/Redo11.log';
D.BOUZIDI 76
Erreurs possibles du processus LGWR
Erreurs possibles du processus LGWR
� Un membre d'un groupe contenant au moins deux fichiers de journalisation n'est pas disponible.
� Tous les membres du groupe suivant ne sont pas disponibles.
� Tous les membres du groupe en cours ne sont pas disponibles.
� Un membre d'un groupe contenant au moins deux fichiers de journalisation n'est pas disponible.
� Tous les membres du groupe suivant ne sont pas disponibles.
� Tous les membres du groupe en cours ne sont pas disponibles.
D.BOUZIDI 77
��V$THREAD : affiche les infos sur le fichier log courantV$THREAD : affiche les infos sur le fichier log courant
��V$LOG : donne les informations en lisant dans le fichier de contV$LOG : donne les informations en lisant dans le fichier de contrôle au rôle au
lieu de lire dans le dictionnaire de donnlieu de lire dans le dictionnaire de donnééeses
V$LOGFILE : Pour voir les noms des membres d'un groupe (V$LOGFILE : Pour voir les noms des membres d'un groupe (GROUP# est le numGROUP# est le numééro du groupe ro du groupe RedoRedo Log. Log. STATUS prend la valeur :STATUS prend la valeur :
INVALID si le fichier est inaccessible, INVALID si le fichier est inaccessible, STALE si le fichier est incomplet , STALE si le fichier est incomplet , DELETED si le fichier n'est plus utilisDELETED si le fichier n'est plus utiliséé et et VIDE si le fichier est en cours d'utilisation.VIDE si le fichier est en cours d'utilisation.
MEMBER est le nom du membre MEMBER est le nom du membre RedoRedo LogLog
V$LOG_HISTORY : contient des V$LOG_HISTORY : contient des inforsinfors concernant l'historique des concernant l'historique des fichiers fichiers redoredo àà partir du fichier de contrôle. Le maximum que peut retenir partir du fichier de contrôle. Le maximum que peut retenir la vue dla vue déépends du parampends du paramèètre tre MAXLOGHISTORYMAXLOGHISTORY. .
Obtenir des informationsObtenir des informations
Fichier de contrôle
D.BOUZIDI 78
Analyser les fichiers de journalisation en ligne
Analyser les fichiers de journalisation en ligne
� Suivi des modifications :
� dans la base de données,
� dans une table spécifique,
� relatives à un utilisateur particulier
� Application de modèles d'accès aux données.
� Annulation des modifications de la base de données.
� Utilisation des données archivées pour effectuer des opérations de réglage et planifier les capacités.
� Suivi des modifications :
� dans la base de données,
� dans une table spécifique,
� relatives à un utilisateur particulier
� Application de modèles d'accès aux données.
� Annulation des modifications de la base de données.
� Utilisation des données archivées pour effectuer des opérations de réglage et planifier les capacités.
D.BOUZIDI 79
LogMinerLogMiner
� Le problème de ces fichiers c'est que l'on ne peut pas éditer le contenu aussi facilement
� Oracle a fournit un outil très pratique permettant d'analyser et d’auditer les actions effectuées sur la base : LogMiner
� Deux scripts sont utilisés pour l’installer : � <oracle home>/rdbms/admin/dbmslm.sql qui
installe le package DBMS_LOGMNR qui vous servira à analyser les REDO LOG, ainsi que des procédures, vues et tables publiques.
� <oracle home>/rdbms/admin/dbmslmd.sql qui installe le package DBMS_LOGMNR_D qui servira àconstruire le dictionnaire de données.
� Le problème de ces fichiers c'est que l'on ne peut pas éditer le contenu aussi facilement
� Oracle a fournit un outil très pratique permettant d'analyser et d’auditer les actions effectuées sur la base : LogMiner
� Deux scripts sont utilisés pour l’installer : � <oracle home>/rdbms/admin/dbmslm.sql qui
installe le package DBMS_LOGMNR qui vous servira à analyser les REDO LOG, ainsi que des procédures, vues et tables publiques.
� <oracle home>/rdbms/admin/dbmslmd.sql qui installe le package DBMS_LOGMNR_D qui servira àconstruire le dictionnaire de données.
D.BOUZIDI 80
Utiliser LogMinerUtiliser LogMiner� Création d’un Snapshot du DD (pour avoir les définitions
des objets présents dans la base de données)
� Création d’un Snapshot du DD (pour avoir les définitions des objets présents dans la base de données)
EXECUTE DBMS_LOGMNR_D.BUILD(‘monDictionnaire.ora', ‘/oracle/tmp/');EXECUTE DBMS_LOGMNR_D.BUILD(‘monDictionnaire.ora', ‘/oracle/tmp/');
Alter system SET utl_file_dir=‘/oracle/tmp/' SCOPE=spfile;Alter system SET utl_file_dir=‘/oracle/tmp/' SCOPE=spfile;
� Création d’un fichier de dictionnaire :� Création d’un fichier de dictionnaire :
� Initialiser le paramètre UTL_FILE_DIR : � Initialiser le paramètre UTL_FILE_DIR :
� Définition des fichiers de log à analyser en configurant la vue V$LOGMNR_CONTENTS (spécifie les fichiers log à analyser)
� Définition des fichiers de log à analyser en configurant la vue V$LOGMNR_CONTENTS (spécifie les fichiers log à analyser)
� Ajout d’autres fichiers à analyser à la liste :� Ajout d’autres fichiers à analyser à la liste :
� Initialisation d’une nouvelle liste et définition du premier fichier de log à analyser
� Initialisation d’une nouvelle liste et définition du premier fichier de log à analyser
EXECUTE DBMS_LOGMNR.ADD_LOGFILE(‘/Disk1/Redo20.log', DBMS_LOGMNR.ADDFILE);EXECUTE DBMS_LOGMNR.ADD_LOGFILE(‘/Disk1/Redo20.log', DBMS_LOGMNR.ADDFILE);
� Suppression de fichiers log de la liste :� Suppression de fichiers log de la liste :
EXECUTE DBMS_LOGMNR.ADD_LOGFILE(‘/disk1/Redo20.log',DBMS_LOGMNR.REMOVEFILE);EXECUTE DBMS_LOGMNR.ADD_LOGFILE(‘/disk1/Redo20.log',DBMS_LOGMNR.REMOVEFILE);
EXECUTE DBMS_LOGMNR.ADD_LOGFILE(‘/Disk1/Redo10.log', DBMS_LOGMNR.NEW);EXECUTE DBMS_LOGMNR.ADD_LOGFILE(‘/Disk1/Redo10.log', DBMS_LOGMNR.NEW);
D.BOUZIDI 81
Utiliser LogMinerUtiliser LogMiner� Lancement de l’analyse� Lancement de l’analyse
� Initialisation d’une session logMiner pour une période données: � Initialisation d’une session logMiner pour une période données:
� Initialisation d’une session logMiner : � Initialisation d’une session logMiner :
� Identification des modification apportées à une table� Identification des modification apportées à une table
EXECUTE DBMS_LOGMNR.START_LOGMNR(DICTFILENAME=>‘/tmp/monDictionnaire.ora');EXECUTE DBMS_LOGMNR.START_LOGMNR(DICTFILENAME=>‘/tmp/monDictionnaire.ora');
EXECUTE Dbms_Logmnr.Start_Logmnr(‘/oracle/temp/monDictionnaire.ora',
starttime =>to_date('01-Jan-2006 00:00:00','DD-MON-YYYY HH:MI:SS'),endtime
=> to_date('01-Jan-2006 10:00:00', 'DD-MON-YYYY HH:MI:SS'));
EXECUTE Dbms_Logmnr.Start_Logmnr(‘/oracle/temp/monDictionnaire.ora',
starttime =>to_date('01-Jan-2006 00:00:00','DD-MON-YYYY HH:MI:SS'),endtime
=> to_date('01-Jan-2006 10:00:00', 'DD-MON-YYYY HH:MI:SS'));
SELECT timestamp, username, sql_redo FROM v$logmnr_contents WHERE
seg_name = 'EMP';
SELECT timestamp, username, sql_redo FROM v$logmnr_contents WHERE
seg_name = 'EMP';
� Arrêt de la session logMiner� Arrêt de la session logMiner
EXECUTE DBMS_LOGMNR.END_LOGMNR;EXECUTE DBMS_LOGMNR.END_LOGMNR;
D.BOUZIDI 82
Obtenir des informations sur les fichiers de journalisation à analyser
Obtenir des informations sur les fichiers de journalisation à analyser
� V$LOGMNR_DICTIONARY : contient les infos sur le dictionnaire de données de LogMiner.
� V$LOGMNR_PARAMETERS : contient les infos concernant la session LogMiner en cours.
� V$LOGMNR_CONTENTS : contient les infos issues des fichiers REDO LOG.
� V$LOGMNR_LOGS : contient les infos sur tous les fichiers REDO LOG qui ont été ajoutés pour cette session
� V$LOGMNR_DICTIONARY : contient les infos sur le dictionnaire de données de LogMiner.
� V$LOGMNR_PARAMETERS : contient les infos concernant la session LogMiner en cours.
� V$LOGMNR_CONTENTS : contient les infos issues des fichiers REDO LOG.
� V$LOGMNR_LOGS : contient les infos sur tous les fichiers REDO LOG qui ont été ajoutés pour cette session
Il existe 4 vues dynamiques liées à notre session LogMiner(celles-ci n'existent que pendant notre session LogMiner)
Il existe 4 vues dynamiques liées à notre session LogMiner(celles-ci n'existent que pendant notre session LogMiner)
Gestion des structures de stockages
Hiérarchie de stockage de la base de données
Base dedonnées
Logique Physique
TablespaceFichier
de données
Segment
Extent
Bloc Oracle Bloc OS
Hiérarchie de stockage de la base de données
� Une base données est composée d’un ensemble d’unités logiques appelées TABLESPACE.
� Un TABLESPACE est composé d'au moins un DATAFILE, c'est à dire un fichier de données qui est physiquement présent sur le serveur à l'endroit stipulélors de sa création.
� Chaque DATAFILE est constitué de SEGMENTS
� Un segment est d'au moins un EXTENT (ou page)
� L'extent est un groupe de BLOCS contigus pouvant accueillir des données, il est constitué d'au moins 3 blocs
� Le bloc est le plus petit élément de stockage d'une base de données
� Une base données est composée d’un ensemble d’unités logiques appelées TABLESPACE.
� Un TABLESPACE est composé d'au moins un DATAFILE, c'est à dire un fichier de données qui est physiquement présent sur le serveur à l'endroit stipulélors de sa création.
� Chaque DATAFILE est constitué de SEGMENTS
� Un segment est d'au moins un EXTENT (ou page)
� L'extent est un groupe de BLOCS contigus pouvant accueillir des données, il est constitué d'au moins 3 blocs
� Le bloc est le plus petit élément de stockage d'une base de données
Les tablespaces
� Une base données mémorisée dans une ou plusieurs unités
logiques appelées TABLESPACE.
� Cette organisation permet à l’administrateur de :
� Contrôler l’allocation d’espace disque
� Assigner des quotas de ressource disque aux utilisateurs
� Contrôler la disponibilité des données en rendant les tablespaces online ou offline
� Constituer des unités de sauvegarde ou de restauration partielle de la base
� Répartir les zones de stockage entre plusieurs disques pour accroître les performances
� Une base données mémorisée dans une ou plusieurs unités
logiques appelées TABLESPACE.
� Cette organisation permet à l’administrateur de :
� Contrôler l’allocation d’espace disque
� Assigner des quotas de ressource disque aux utilisateurs
� Contrôler la disponibilité des données en rendant les tablespaces online ou offline
� Constituer des unités de sauvegarde ou de restauration partielle de la base
� Répartir les zones de stockage entre plusieurs disques pour accroître les performances
Quelques types de tablespaces� Tablespace SYSTEM:
� Créé lors de la création de la base de données (avec l’ordre CREATE DATABASE)
� Contient : les tables du dictionnaire de données, les procédures, les fonctions, les packages, les triggers
� Tablespace TEMP :
� Contient : les segments temporaires utilisés par Oracle lors d’opérations de tri (SORT_AREA_SIZE insuffisante), de création d’index et de tables temporaires,…
� Chaque BD doit comporter un tablespace temporaire affecté aux utilisateurs comme tablespace temporaire (si aucun tablespace temporaire n'est désigné lors de la création du compte, Oracle affecte ce tablespace à l'utilisateur
� On peut désigner un tablespace temporaire pour un utilisateur donné
� Tablespace USERS :
� Contient : les segments de données utilisateurs (tables,clusters, index,…)
� On peut définir #ts tablespaces USERS pour séparer les différentes applications
� Tablespace UNDO :
� Réservé à l'annulation des commandes DDL (UPDATE, INSERT, etc...). Lors d’une suppression par exemple, ORACLE copie les lignes à supprimer dans le tablespaceUNDO et ensuite indique que les blocs contenant les données dans le tablespaced'origine sont libres (le paramètre undo_tablespace, undo_management)
� Tablespace SYSTEM:
� Créé lors de la création de la base de données (avec l’ordre CREATE DATABASE)
� Contient : les tables du dictionnaire de données, les procédures, les fonctions, les packages, les triggers
� Tablespace TEMP :
� Contient : les segments temporaires utilisés par Oracle lors d’opérations de tri (SORT_AREA_SIZE insuffisante), de création d’index et de tables temporaires,…
� Chaque BD doit comporter un tablespace temporaire affecté aux utilisateurs comme tablespace temporaire (si aucun tablespace temporaire n'est désigné lors de la création du compte, Oracle affecte ce tablespace à l'utilisateur
� On peut désigner un tablespace temporaire pour un utilisateur donné
� Tablespace USERS :
� Contient : les segments de données utilisateurs (tables,clusters, index,…)
� On peut définir #ts tablespaces USERS pour séparer les différentes applications
� Tablespace UNDO :
� Réservé à l'annulation des commandes DDL (UPDATE, INSERT, etc...). Lors d’une suppression par exemple, ORACLE copie les lignes à supprimer dans le tablespaceUNDO et ensuite indique que les blocs contenant les données dans le tablespaced'origine sont libres (le paramètre undo_tablespace, undo_management)
ALTER USER scott TEMPORARY TABLESPACE temp01; ALTER USER scott TEMPORARY TABLESPACE temp01;
CREATE DATABASE <NomBase>... DEFAULT TEMPORARY TABLESPACE temp01;CREATE DATABASE <NomBase>... DEFAULT TEMPORARY TABLESPACE temp01;
CREATE UNDO TABLESPACE undotbs
DATAFILE '<oracle_Home>\oradata\orcl\undotbs.dbf' size 100M;
CREATE UNDO TABLESPACE undotbs
DATAFILE '<oracle_Home>\oradata\orcl\undotbs.dbf' size 100M;
Création de tablespaces
CREATE TABLESPACE app_data
DATAFILE '/DISK1/app_data_01.dbf‘ SIZE 100M,
'/DISK2/app data_ 02.dbf‘ SIZE 100M
DEFAULT STORAGE ( INITIAL 500K
NEXT 500K
MAXEXTENTS 500
PCTINCREASE 0 );
CREATE TABLESPACE app_data
DATAFILE '/DISK1/app_data_01.dbf‘ SIZE 100M,
'/DISK2/app data_ 02.dbf‘ SIZE 100M
DEFAULT STORAGE ( INITIAL 500K
NEXT 500K
MAXEXTENTS 500
PCTINCREASE 0 );
o INITIAL : Définit la taille du premier extent (Par défaut
5*DB_BLOCK_SIZE)
o NEXT se rapporte à la taille de l'extent suivant.
o MINEXTENTS exprime le nombre d'extents alloués lors de la création
du segment (Par défault 1).
o MAXEXTEBTS est le nombre maximal d’extents pouvant être allouées à
un segment
o PCTINCREASE définie le pourcentage de croissance de la taille du
segment suivant
o INITIAL : Définit la taille du premier extent (Par défaut
5*DB_BLOCK_SIZE)
o NEXT se rapporte à la taille de l'extent suivant.
o MINEXTENTS exprime le nombre d'extents alloués lors de la création
du segment (Par défault 1).
o MAXEXTEBTS est le nombre maximal d’extents pouvant être allouées à
un segment
o PCTINCREASE définie le pourcentage de croissance de la taille du
segment suivant
Gestion de l’espace dans les tablespaces� A la création d'un objet (par exemple une table), ORACLE crée un extent .
Lors de remplissage (ajout/modification), Oracle rempli les blocs de données qui constituent l'extent jusqu'à remplir l'extent entièrement et crée un nouvel extent si le précédent est plein
� Deux modes de gestion de l’espace :
� Tablespaces gérés par le dictionnaire de données:
� ORACLE stocke les informations relatives à l'allocation d'espace dans le dictionnaire de données
� Ceci induit une charge supplémentaire pour toutes les opérations sur les objets d'un tablespace. L’administrateur doit bien dimensionner la taille des extents pour éviter une fragmentation excessive
� Tablespaces gérés localement (locally managed ) :
� Les informations sont stockées au niveaux des entêtes des tablespaces, ceci évite des accès intempestifs au dictionnaire de données (option définit par défaut à partir de la version 9i)
� Deux modes de gestion des extents :
� Le mode UNIFORM impose à Oracle de créer des extents de taille
identique. Ce mode n’est pas utilisé pour un tablespace d’annulation
� Le mode AUTOALLOCATE demande de créer des extents de plus en plus grands avec le nombre d'extents créés. Ce mode ne peut être utilisé pour un tablespace temporaire
� A la création d'un objet (par exemple une table), ORACLE crée un extent . Lors de remplissage (ajout/modification), Oracle rempli les blocs de données qui constituent l'extent jusqu'à remplir l'extent entièrement et crée un nouvel extent si le précédent est plein
� Deux modes de gestion de l’espace :
� Tablespaces gérés par le dictionnaire de données:
� ORACLE stocke les informations relatives à l'allocation d'espace dans le dictionnaire de données
� Ceci induit une charge supplémentaire pour toutes les opérations sur les objets d'un tablespace. L’administrateur doit bien dimensionner la taille des extents pour éviter une fragmentation excessive
� Tablespaces gérés localement (locally managed ) :
� Les informations sont stockées au niveaux des entêtes des tablespaces, ceci évite des accès intempestifs au dictionnaire de données (option définit par défaut à partir de la version 9i)
� Deux modes de gestion des extents :
� Le mode UNIFORM impose à Oracle de créer des extents de taille
identique. Ce mode n’est pas utilisé pour un tablespace d’annulation
� Le mode AUTOALLOCATE demande de créer des extents de plus en plus grands avec le nombre d'extents créés. Ce mode ne peut être utilisé pour un tablespace temporaire
Gestion de l’espace dans les tablespaces
CREATE TABLESPACE user_data
DATAFILE '/DISK2/user_data_01.dbf' SIZE 500M
EXTENT MANAGEMENT LOCAL
UNIFORM SIZE 10M;
CREATE TABLESPACE user_data
DATAFILE '/DISK2/user_data_01.dbf' SIZE 500M
EXTENT MANAGEMENT LOCAL
UNIFORM SIZE 10M;
CREATE TEMPORARY TABLESPACE temp
TEMPFILE '/DISK2/temp_01.dbf' SIZE 500M
EXTENT MANAGEMENT LOCAL
UNIFORM SIZE 10M;
CREATE TEMPORARY TABLESPACE temp
TEMPFILE '/DISK2/temp_01.dbf' SIZE 500M
EXTENT MANAGEMENT LOCAL
UNIFORM SIZE 10M;
� Création de tablespace temporaire géré localement � Création de tablespace temporaire géré localement
� Modification des paramètres de stockage� Modification des paramètres de stockage
ALTER TABLESPACE app_data
MINIMUM EXTENT 2M;
ALTER TABLESPACE app_data
MINIMUM EXTENT 2M;
ALTER TABLESPACE app_data
DEFAULT STORAGE (
INITIAL 2M
NEXT 2M
MAXEXTENTS 999 );
ALTER TABLESPACE app_data
DEFAULT STORAGE (
INITIAL 2M
NEXT 2M
MAXEXTENTS 999 );
� On peut modifier un ensemble de paramètres � On peut modifier un ensemble de paramètres
Statut d’un tablespace
ALTER TABLESPACE app_data ONLINE;ALTER TABLESPACE app_data ONLINE;
� Tablespace "offline" non disponible pour accéder aux données
� Certains tablespaces doivent être "online" :
� SYSTEM,
� tablespaces contenant des segments d'annulation actifs.
� Pour mettre un tablespace "offline" :
� Pour mettre un tablespace "online" :
� Tablespace "offline" non disponible pour accéder aux données
� Certains tablespaces doivent être "online" :
� SYSTEM,
� tablespaces contenant des segments d'annulation actifs.
� Pour mettre un tablespace "offline" :
� Pour mettre un tablespace "online" :
ALTER TABLESPACE app_data OFFLINE;ALTER TABLESPACE app_data OFFLINE;
� Tablespace disponible pour des opérations de lecture (Impossible de supprimer les objets du tablespace)
� Pour créer un tablespace en lecture seule sur un lecteur non réinscriptible :
� ALTER TABLESPACE…READ ONLY;
� Placez le fichier de données sur le lecteur non réinscriptible
� ALTER TABLESPACE…RENAME DATAFILE…;
� Tablespace disponible pour des opérations de lecture (Impossible de supprimer les objets du tablespace)
� Pour créer un tablespace en lecture seule sur un lecteur non réinscriptible :
� ALTER TABLESPACE…READ ONLY;
� Placez le fichier de données sur le lecteur non réinscriptible
� ALTER TABLESPACE…RENAME DATAFILE…;
Manipulation des tablespaces� Suppression :
� Tablespace supprimé du dictionnaire de données.
� Eventuellement, contenu supprimé du dictionnaire de données.
� Fichiers de système d'exploitation non supprimés.
� Suppression :
� Tablespace supprimé du dictionnaire de données.
� Eventuellement, contenu supprimé du dictionnaire de données.
� Fichiers de système d'exploitation non supprimés.
DROP TABLESPACE app_data INCLUDING CONTENTS AND DATAFILES;DROP TABLESPACE app_data INCLUDING CONTENTS AND DATAFILES;
� Redimensionner un tablespace :
� Modification de la taille d'un fichier de données automatique
� Modification Manuellement
� Ajout d’un datafile
� Déplacement des datafiles
� Redimensionner un tablespace :
� Modification de la taille d'un fichier de données automatique
� Modification Manuellement
� Ajout d’un datafile
� Déplacement des datafiles
ALTER TABLESPACE app_data ADD DATAFILE '/DISK3/app_data_04.dbf'
SIZE 200M AUTOEXTEND ON NEXT 10M MAXSIZE 500M;
ALTER TABLESPACE app_data ADD DATAFILE '/DISK3/app_data_04.dbf'
SIZE 200M AUTOEXTEND ON NEXT 10M MAXSIZE 500M;
ALTER DATABASE
DATAFILE '/DISK5/app_data_02.dbf'
RESIZE 200M;
ALTER DATABASE
DATAFILE '/DISK5/app_data_02.dbf'
RESIZE 200M;
ALTER TABLESPACE app_data
ADD DATAFILE '/DISK5/app_data_03.dbf' SIZE 200M;
ALTER TABLESPACE app_data
ADD DATAFILE '/DISK5/app_data_03.dbf' SIZE 200M;
ALTER TABLESPACE app_data RENAME DATAFILE '/DISK3/app_data_01.dbf'
TO '/DISK5/app_data_01.dbf';
ALTER TABLESPACE app_data RENAME DATAFILE '/DISK3/app_data_01.dbf'
TO '/DISK5/app_data_01.dbf';
D.BOUZIDI 93
Types de segmentTypes de segment
� On distingue cinq types de segments :
1. Les segments de données
� Ils servent à stocker les données des tables utilisateurs et système
� Chaque table a un et un seul segment qui est crée automatiquement lors de la création de la table.
� On distingue cinq types de segments :
1. Les segments de données
� Ils servent à stocker les données des tables utilisateurs et système
� Chaque table a un et un seul segment qui est crée automatiquement lors de la création de la table.
2. Les segments d’index
� Servent à stocker les données d’index. Ces données peuvent donc être stockées dans un tablespace distinct des données des tables.
� Un segment d’index est créé automatiquement lors de la création de l’index. On peut préciser lors de la création d’un index, le tablespace dans lequel sera créé le segment.
2. Les segments d’index
� Servent à stocker les données d’index. Ces données peuvent donc être stockées dans un tablespace distinct des données des tables.
� Un segment d’index est créé automatiquement lors de la création de l’index. On peut préciser lors de la création d’un index, le tablespace dans lequel sera créé le segment.
D.BOUZIDI 94
Types de segmentTypes de segment� On distingue cinq types de segments :
3. Les segments temporaires
� Utilisés par Oracle pour le traitement des requêtes SQL nécessitant un espace disque temporaire.
� Les segments temporaires sont créés en cas de besoin et supprimés après l’exécution de la commande.
� Le tablespace dans lequel sont crées ces segments est défini lors de la création et modification d’un utilisateur. Si ce tablespace n’est pas défini, alors c’est le tablespace SYSTEM qui est utilisé par défaut.
� On distingue cinq types de segments :
3. Les segments temporaires
� Utilisés par Oracle pour le traitement des requêtes SQL nécessitant un espace disque temporaire.
� Les segments temporaires sont créés en cas de besoin et supprimés après l’exécution de la commande.
� Le tablespace dans lequel sont crées ces segments est défini lors de la création et modification d’un utilisateur. Si ce tablespace n’est pas défini, alors c’est le tablespace SYSTEM qui est utilisé par défaut.
4. Le segment d’amorçage (BOOTSTRAP)
� Ce segment est créé dans le tablespace SYSTEM. Il contient les définitions des objets du dictionnaire de données qui sont chargées lors de l’ouverture de la base
5. Les segments d’annulation (ROLLBACK)
� Ces segments (rollback segments) contiennent les données avant modification due à une transaction. Ils permettent d’annuler leur effet en cas de besoin.
4. Le segment d’amorçage (BOOTSTRAP)
� Ce segment est créé dans le tablespace SYSTEM. Il contient les définitions des objets du dictionnaire de données qui sont chargées lors de l’ouverture de la base
5. Les segments d’annulation (ROLLBACK)
� Ces segments (rollback segments) contiennent les données avant modification due à une transaction. Ils permettent d’annuler leur effet en cas de besoin.
D.BOUZIDI 95
Notion d’extent et de blocNotion d’extent et de bloc
� Une extent est un ensemble contigu de blocs logiques alloués à un segment.
� Tout segment est initialement créé avec un extent initiale (initial extent).
� Une extent est un ensemble contigu de blocs logiques alloués à un segment.
� Tout segment est initialement créé avec un extent initiale (initial extent).
� Allocation lorsque le segment est créé, étendu ou modifié.
� Libération lorsque le segment est supprimé, modifié, tronqué,
� Allocation lorsque le segment est créé, étendu ou modifié.
� Libération lorsque le segment est supprimé, modifié, tronqué,
� Notion d’extents :
� Notion de bloc :
� Unité minimum d'entrée/sortie
� Constitué d'un ou de plusieurs blocs de système d'exploitation
� Défini par DB_BLOCK_SIZE
� Défini lors de la création de la base de données
� Unité minimum d'entrée/sortie
� Constitué d'un ou de plusieurs blocs de système d'exploitation
� Défini par DB_BLOCK_SIZE
� Défini lors de la création de la base de données
D.BOUZIDI 96
Contenu d'un bloc de base de données
Contenu d'un bloc de base de données
EnEn--tête (@ du bloc, tête (@ du bloc,
type de segment,type de segment,……))
Espace libre : utilisEspace libre : utiliséé pour pour
ll’’insertion de nouvelles lignesinsertion de nouvelles lignes
ou mise ou mise àà jours njours néécessitant cessitant
dd’’espace sup.espace sup.
DonnDonnéées : lorsques : lorsqu’’une ligne ne une ligne ne
peut tenir sur un seul bloc elle peut tenir sur un seul bloc elle
est stockest stockéée dans deux ou +e dans deux ou +iersiers
Blocs (Blocs (blocsblocs chachaîînnéés)s)
D.BOUZIDI 97
Paramètres d'utilisation de l'espace de bloc
Paramètres d'utilisation de l'espace de bloc
INITRANSINITRANS
MAXTRANSMAXTRANS
PCTFREEPCTFREE
PCTUSEDPCTUSED
La gestion de l’espace libre d’un bloc logique se fait en fonction des valeurs des paramètres PCTFREE et PCTUSED.
� PCTFREE fixe le % d’espace du bloc qui doit être maintenu constamment libre. Sa valeur par défaut est 10%.
� Quand un bloc ne peut être utilisé car la valeur PCTFREE de lui interdit, on ne pourra recommencer à le remplir que si l’espace occupé est en % descend en dessous de la valeur PCTUSED. Sa valeur par défaut est 40%.
La gestion de l’espace libre d’un bloc logique se fait en fonction des valeurs des paramètres PCTFREE et PCTUSED.
� PCTFREE fixe le % d’espace du bloc qui doit être maintenu constamment libre. Sa valeur par défaut est 10%.
� Quand un bloc ne peut être utilisé car la valeur PCTFREE de lui interdit, on ne pourra recommencer à le remplir que si l’espace occupé est en % descend en dessous de la valeur PCTUSED. Sa valeur par défaut est 40%.
D.BOUZIDI 98
Utilisation de l'espace de blocUtilisation de l'espace de bloc
InsertionsInsertions
InsertionsInsertions
PCTFREE=20PCTFREE=20
PCTUSED=40PCTUSED=40
80 %80 %
80 %80 %
40 %40 %
InsertionsInsertions
3
21
3
InsertionsInsertions
D.BOUZIDI 99
Vues du dictionnaire de donnéesVues du dictionnaire de données
� Informations de tablespace :
� DBA_TABLESPACES
� V$TABLESPACE
� DBA_TABLESPACE_USAGE_METRICS
� Informations de fichier de données :
� DBA_DATA_FILES
� DBA_TABLES
� V$DATAFILE
� Informations de fichier temporaire :
� DBA_TEMP_FILES
� V$TEMPFILE
� Informations sur les segments :
� DBA_SEGMENTS
� Informations sur les extents :
� DBA_EXTENTS (Extents utilisés)
� DBA_FREE_SPACE (Extents libres)
� Informations de tablespace :
� DBA_TABLESPACES
� V$TABLESPACE
� DBA_TABLESPACE_USAGE_METRICS
� Informations de fichier de données :
� DBA_DATA_FILES
� DBA_TABLES
� V$DATAFILE
� Informations de fichier temporaire :
� DBA_TEMP_FILES
� V$TEMPFILE
� Informations sur les segments :
� DBA_SEGMENTS
� Informations sur les extents :
� DBA_EXTENTS (Extents utilisés)
� DBA_FREE_SPACE (Extents libres)
Administration des utilisateurs
D.BOUZIDI 101
Compte utilisateur Compte utilisateur
� Pour créer un utilisateur, l'administrateur doit affecter un profil, choisir une technique d'authentification et affecter des tablespaces
� Un nom utilisateur unique ou login (< 30 caractères, pas de caractères spéciaux et doit commencer par une lettre)
� Une méthode d’authentification : Autre l’authentification par mot de passe ORACLE fait l’authentification par certificats, par biométrie et par système tier
� Un tablespace par défaut : emplacement par défaut où l'utilisateur mettra ses objets s'il n'indique pas d'autre tablespace (il faut lui accorder les privilèges et les quotas nécessaires pour qu’il puisse créer des objets)
� Un tablespace temporaire : emplacement dans lequel l'utilisateur peut créer des objets temporaires, tels que des tris et des tables temporaires
� Un profil utilisateur : c’est l’ensemble de restrictions de ressources concernant
� l’utilisation de la base de données
� et le mot de passe affecté à l'utilisateur (longueur, période d’expiration, …)
� Pour créer un utilisateur, l'administrateur doit affecter un profil, choisir une technique d'authentification et affecter des tablespaces
� Un nom utilisateur unique ou login (< 30 caractères, pas de caractères spéciaux et doit commencer par une lettre)
� Une méthode d’authentification : Autre l’authentification par mot de passe ORACLE fait l’authentification par certificats, par biométrie et par système tier
� Un tablespace par défaut : emplacement par défaut où l'utilisateur mettra ses objets s'il n'indique pas d'autre tablespace (il faut lui accorder les privilèges et les quotas nécessaires pour qu’il puisse créer des objets)
� Un tablespace temporaire : emplacement dans lequel l'utilisateur peut créer des objets temporaires, tels que des tris et des tables temporaires
� Un profil utilisateur : c’est l’ensemble de restrictions de ressources concernant
� l’utilisation de la base de données
� et le mot de passe affecté à l'utilisateur (longueur, période d’expiration, …)
D.BOUZIDI 102
Profil utilisateur Profil utilisateur � Le contrôle de l’utilisation de la BD :
� CPU : exprimé par session ou par appel
� CPU/Session (exprimé en centièmes de secondes) : pour une valeur égale à 1000, un utilisateur, qui consomme plus de 10 secondes de temps de CPU, sera déconnecté.
� CPU/Call : au lieu de limiter la session globale d’un utilisateur, on empêche que la commande qui consomme plus des ressources CPU de l’utilisateur
� Network/Memory : une session utilisateur consomme des ressources réseau et mémoire, on peut donc gérer :
� Nombre de minutes pendant lesquelles un utilisateur peut être connecté avant d'être automatiquement déconnecté (Connect Time).
� Nombre de minutes pendant lesquelles une session utilisateur peut rester inactive avant d'être automatiquement déconnectée (Idle Time).
� Nombre de sessions simultanées pouvant être créées à l'aide d'un
compte utilisateur de base de données.
� Private SGA : limite la quantité d'espace consommé dans la mémoire pour le tri, création d’index, etc.
� Disk I/O : limite la quantité de données qu'un utilisateur peut lire, par session ou par appel.
� Le contrôle de l’utilisation de la BD :
� CPU : exprimé par session ou par appel
� CPU/Session (exprimé en centièmes de secondes) : pour une valeur égale à 1000, un utilisateur, qui consomme plus de 10 secondes de temps de CPU, sera déconnecté.
� CPU/Call : au lieu de limiter la session globale d’un utilisateur, on empêche que la commande qui consomme plus des ressources CPU de l’utilisateur
� Network/Memory : une session utilisateur consomme des ressources réseau et mémoire, on peut donc gérer :
� Nombre de minutes pendant lesquelles un utilisateur peut être connecté avant d'être automatiquement déconnecté (Connect Time).
� Nombre de minutes pendant lesquelles une session utilisateur peut rester inactive avant d'être automatiquement déconnectée (Idle Time).
� Nombre de sessions simultanées pouvant être créées à l'aide d'un
compte utilisateur de base de données.
� Private SGA : limite la quantité d'espace consommé dans la mémoire pour le tri, création d’index, etc.
� Disk I/O : limite la quantité de données qu'un utilisateur peut lire, par session ou par appel.
D.BOUZIDI 103
Profil utilisateur Profil utilisateur � Contrôle de l’authentification :
� L’authentification permet de vérifier l’identité d’une entité qui souhaite utiliser les ressources de la base de données :
� Ce mécanisme permet d’établir une relation de confiance pour les interactions ultérieures.
� La responsabilité : permettant de lier l’accès et des actions à des entités spécifiques.
� Trois technique d’authentification:
� Password (Authentification par la base de données) : crée chaque utilisateur avec un mot de passe associé qui doit être fourni lorsde la connexion (ex: CREATE USER scott IDENTIFIED by tiger;)
� External (Authentification par le système d’exploitation) : ce mode l’authentification repose sur celle définie par l’OS. Aucun mot de passe de base de données n'est utilisé pour ce type de connexion. (ex:
CREATE USER OPS$NomUser IDENTIFIED EXTERNALLY; )� Global (Authentification globale) : permet de renforcer
l’authentification via d’autre systèmes comme l'identification des utilisateurs via la biométrie, les certificats x509, les systèmes tiers et Oracle Internet Directory. Avantage fait une seul authentification
� Lorsqu'un utilisateur est créé, son statut peut être verrouillé ou déverrouillé. Si un compte utilisateur verrouillé, ne peut être utilisé pour se connecter à la base de données.
� Les comptes des nouveaux utilisateurs sont verrouillés par défaut
� Contrôle de l’authentification :
� L’authentification permet de vérifier l’identité d’une entité qui souhaite utiliser les ressources de la base de données :
� Ce mécanisme permet d’établir une relation de confiance pour les interactions ultérieures.
� La responsabilité : permettant de lier l’accès et des actions à des entités spécifiques.
� Trois technique d’authentification:
� Password (Authentification par la base de données) : crée chaque utilisateur avec un mot de passe associé qui doit être fourni lorsde la connexion (ex: CREATE USER scott IDENTIFIED by tiger;)
� External (Authentification par le système d’exploitation) : ce mode l’authentification repose sur celle définie par l’OS. Aucun mot de passe de base de données n'est utilisé pour ce type de connexion. (ex:
CREATE USER OPS$NomUser IDENTIFIED EXTERNALLY; )� Global (Authentification globale) : permet de renforcer
l’authentification via d’autre systèmes comme l'identification des utilisateurs via la biométrie, les certificats x509, les systèmes tiers et Oracle Internet Directory. Avantage fait une seul authentification
� Lorsqu'un utilisateur est créé, son statut peut être verrouillé ou déverrouillé. Si un compte utilisateur verrouillé, ne peut être utilisé pour se connecter à la base de données.
� Les comptes des nouveaux utilisateurs sont verrouillés par défaut
D.BOUZIDI 104
Tablespaces et de schémas Tablespaces et de schémas � Tablespace :
� Un tablespace par défaut est le tablespace dans lequel les objets sont créés si aucun tablespace n'est désigné lors de la création de l'objet
� Si on a pas choisi de tablespace par défaut, le tablespace permanent par défaut défini par le système est utilisé
� Si on n’a pas indiqué de tablespace temporaire, celui défini par le système est utilisé
� Schéma :� L'ensemble des objets appartenant à un utilisateur est appelé schéma (Tables,
Déclencheurs, Index, Vues, Séquences, Types de données définis par l'utilisateur, …)
� Lors de la création d'un utilisateur de base de données, un schéma correspondant portant le même nom est créé pour cet utilisateur
� Les objets du même schéma peuvent résider dans différents tablespaces et un tablespace peut contenir des objets de différents schémas
� Un utilisateur ne peut être associé qu'à un seul schéma, le nom utilisateur et le
schéma sont souvent utilisés de manière interchangeable.
� Pour accèder aux objets de l’utilisateur user01 (si on a le droit) on précede le nom de l’objet par le nom de l’utilisateur (equi au nom du schéma)
� Tablespace :
� Un tablespace par défaut est le tablespace dans lequel les objets sont créés si aucun tablespace n'est désigné lors de la création de l'objet
� Si on a pas choisi de tablespace par défaut, le tablespace permanent par défaut défini par le système est utilisé
� Si on n’a pas indiqué de tablespace temporaire, celui défini par le système est utilisé
� Schéma :� L'ensemble des objets appartenant à un utilisateur est appelé schéma (Tables,
Déclencheurs, Index, Vues, Séquences, Types de données définis par l'utilisateur, …)
� Lors de la création d'un utilisateur de base de données, un schéma correspondant portant le même nom est créé pour cet utilisateur
� Les objets du même schéma peuvent résider dans différents tablespaces et un tablespace peut contenir des objets de différents schémas
� Un utilisateur ne peut être associé qu'à un seul schéma, le nom utilisateur et le
schéma sont souvent utilisés de manière interchangeable.
� Pour accèder aux objets de l’utilisateur user01 (si on a le droit) on précede le nom de l’objet par le nom de l’utilisateur (equi au nom du schéma)
CREATE USER user01 identified by PWDuser01
DEFAULT TABLESPACE tbs_users TEMPORARY TABLESPACE tmp_users;
CREATE USER user01 identified by PWDuser01
DEFAULT TABLESPACE tbs_users TEMPORARY TABLESPACE tmp_users;
Select * from user01.nomTable;Select * from user01.nomTable;
D.BOUZIDI 105
Privilèges Privilèges � Par défaut, lorsqu'un utilisateur est créé, aucun privilège ne
lui est accordé, il ne peut effectuer aucune opération dans la base de données.
� Si l'utilisateur ne dispose d'aucun quota dans aucun tablespace, il ne pourra pas créer d'objets.
� Deux types de privilège :
� Système :
� Accordé par l'administrateur ou par quelqu'un à qui la permission d'administrer le privilège a été accordé,
� Permet aux utilisateurs d'effectuer des actions particulières dans la base de données (par exemple créer des Tablespaces).
� Objet :
� permet aux utilisateurs d'accéder à un objet spécifique et de le manipuler (table, sequence, …)
� Sans permission spécifique, les utilisateurs ne peuvent accéder qu'àleurs propres objets.
� Les privilèges objet peuvent être accordés par
� le propriétaire d'un objet,
� l'administrateur
� à qui la permission d'accorder des privilèges sur l'objet a étéaccordée explicitement.
� Par défaut, lorsqu'un utilisateur est créé, aucun privilège ne lui est accordé, il ne peut effectuer aucune opération dans la base de données.
� Si l'utilisateur ne dispose d'aucun quota dans aucun tablespace, il ne pourra pas créer d'objets.
� Deux types de privilège :
� Système :
� Accordé par l'administrateur ou par quelqu'un à qui la permission d'administrer le privilège a été accordé,
� Permet aux utilisateurs d'effectuer des actions particulières dans la base de données (par exemple créer des Tablespaces).
� Objet :
� permet aux utilisateurs d'accéder à un objet spécifique et de le manipuler (table, sequence, …)
� Sans permission spécifique, les utilisateurs ne peuvent accéder qu'àleurs propres objets.
� Les privilèges objet peuvent être accordés par
� le propriétaire d'un objet,
� l'administrateur
� à qui la permission d'accorder des privilèges sur l'objet a étéaccordée explicitement.
D.BOUZIDI 106
Privilèges Privilèges
� DROP ANY object : le privilège DROP ANY autorise l'utilisateur à supprimer des objets qui ne lui appartiennent pas
� CREATE, MANAGE, DROP, ALTER TABLESPACE : les utilisateurs qui ne sont pas administrateurs ne doivent généralement pas pouvoir contrôler les tablespaces.
� GRANT ANY OBJECT PRIVILEGE : ce privilège autorise les utilisateurs à accorder des permissions sur des objets qui ne
leur appartiennent pas.
� ALTER DATABASE et ALTER SYSTEM : les utilisateurs qui ne sont pas administrateurs ne doivent généralement pas être autorisés à modifier la base de données ou l'instance.
� DROP ANY object : le privilège DROP ANY autorise l'utilisateur à supprimer des objets qui ne lui appartiennent pas
� CREATE, MANAGE, DROP, ALTER TABLESPACE : les utilisateurs qui ne sont pas administrateurs ne doivent généralement pas pouvoir contrôler les tablespaces.
� GRANT ANY OBJECT PRIVILEGE : ce privilège autorise les utilisateurs à accorder des permissions sur des objets qui ne
leur appartiennent pas.
� ALTER DATABASE et ALTER SYSTEM : les utilisateurs qui ne sont pas administrateurs ne doivent généralement pas être autorisés à modifier la base de données ou l'instance.
D.BOUZIDI 107
Exemples de privilèges Exemples de privilèges
CREATE TABLESPACEALTER TABLESPACEDROP TABLESPACEUNLIMITED TABLESPACE
TABLESPACE
CREATE SESSIONALTER SESSIONRESTRICTED SESSION
SESSION
CREATE TABLECREATE ANY TABLEALTER ANY TABLEDROP ANY TABLESELECT ANY TABLEUPDATE ANY TABLEDELETE ANY TABLE
TABLE
CREATE ANY INDEXALTER ANY INDEXDROP ANY INDEX
INDEX
ExemplesCatégorie
EXECUTEProcédure
DELETE, INSERT, SELECT, UPDATE
vue
ALTER, SELECTSéquence
ALTER, DELETE, INDEX, INSERT, REFERENCES, SELECT, UPDATE
Table
PrivilègesOBJET
� Privilèges Objet � Privilèges Objet
� Privilèges système � Privilèges système
D.BOUZIDI 108
Affectation de quotas Affectation de quotas � Un quota est une allocation d'espace dans un tablespace
donné.
� Par défaut, un utilisateur ne dispose d'aucun quota sur aucun des tablespaces.
� Trois options pour affecter un quota utilisateur
� Unlimited : permet à l'utilisateur d'employer tout l'espace disponible dans le tablespace.
� Valeur : indique l'espace pouvant être employé par l'utilisateur. Cette valeur ne garantit cependant pas que l'espace est réservépour l'utilisateur. Elle peut être supérieure ou inférieure à l'espace actuellement disponible dans le tablespace.
� Privilège système UNLIMITED TABLESPACE : remplace tous les quotas individuels sur les tablespaces et accorde à l'utilisateur un quota illimité sur tous les tablespaces
� Un quota est une allocation d'espace dans un tablespacedonné.
� Par défaut, un utilisateur ne dispose d'aucun quota sur aucun des tablespaces.
� Trois options pour affecter un quota utilisateur
� Unlimited : permet à l'utilisateur d'employer tout l'espace disponible dans le tablespace.
� Valeur : indique l'espace pouvant être employé par l'utilisateur. Cette valeur ne garantit cependant pas que l'espace est réservépour l'utilisateur. Elle peut être supérieure ou inférieure à l'espace actuellement disponible dans le tablespace.
� Privilège système UNLIMITED TABLESPACE : remplace tous les quotas individuels sur les tablespaces et accorde à l'utilisateur un quota illimité sur tous les tablespaces
ALTER USER user01
QUOTA 10M ON AppData;
ALTER USER user01
QUOTA 10M ON AppData;
D.BOUZIDI 109
Manipulation des comptes user Manipulation des comptes user � Création d’un utilisateur:
�
� Modification des paramètres utilisateur :
� Suppression d’un utilisateur :
Option cascade : Si le schéma contient des tables, Oracle effacera alors toute les contraintes d'intégrités des tables et toutes les contraintes d'intégrités dans les schémas d'autres utilisateurs qui faisaient références aux contraintes UNIQUE et PRIMARY
KEY du schéma qui est en cours de suppression
� Les vues principales permettant de surveiller des utilisateurs
� dba_users et dba_TS_Quotas
� Création d’un utilisateur:
�
� Modification des paramètres utilisateur :
� Suppression d’un utilisateur :
Option cascade : Si le schéma contient des tables, Oracle effacera alors toute les contraintes d'intégrités des tables et toutes les contraintes d'intégrités dans les schémas d'autres utilisateurs qui faisaient références aux contraintes UNIQUE et PRIMARY
KEY du schéma qui est en cours de suppression
� Les vues principales permettant de surveiller des utilisateurs
� dba_users et dba_TS_Quotas
ALTER USER user01 QUOTA 50M ON AppData;ALTER USER user01 QUOTA 50M ON AppData;
CREATE USER user01 IDENTIFIED BY PwdUser01
DEFAULT TABLESPACE AppData
TEMPORARY TABLESPACE temp
QUOTA 15M ON dAppDta
PASSWORD EXPIRE;
CREATE USER user01 IDENTIFIED BY PwdUser01
DEFAULT TABLESPACE AppData
TEMPORARY TABLESPACE temp
QUOTA 15M ON dAppDta
PASSWORD EXPIRE;
DROP USER peter;DROP USER peter;
DROP USER peter CASCADE;DROP USER peter CASCADE;
D.BOUZIDI 110
Les Rôles Les Rôles � Problèmes :
� Il est trop fastidieux d'accorder de manière individuelle les privilèges nécessaires à chaque utilisateur
� le risque d'erreur est trop important.
� Solution : utilisation des rôles
� Un rôle est un ensemble de privilèges pouvant être accordés à des utilisateurs ou à d'autres rôles.
� Un Rôle est utilisé pour administrer les privilèges de base de données
� On peut ajouter des privilèges à un rôle, puis accorder le rôle à un utilisateur,
� L'utilisateur peut alors activer le rôle et exercer les privilèges octroyés par ce rôle
� Problèmes :
� Il est trop fastidieux d'accorder de manière individuelle les privilèges nécessaires à chaque utilisateur
� le risque d'erreur est trop important.
� Solution : utilisation des rôles
� Un rôle est un ensemble de privilèges pouvant être accordés à des utilisateurs ou à d'autres rôles.
� Un Rôle est utilisé pour administrer les privilèges de base de données
� On peut ajouter des privilèges à un rôle, puis accorder le rôle à un utilisateur,
� L'utilisateur peut alors activer le rôle et exercer les privilèges octroyés par ce rôle
D.BOUZIDI 111
Les caractéristiques des rôlesLes caractéristiques des rôles� Les privilèges sont accordés aux rôles (et révoqués) comme si le rôle
était un utilisateur.
� Les rôles peuvent être accordés aux utilisateurs ou à d'autres rôles (et révoqués) comme s'il s'agissait de privilèges
� Un rôle peut être constitué de privilèges système et objet.
� Un rôle peut être activé ou désactivé pour chaque utilisateur auquel le rôle est accordé.
� L'activation d'un rôle peut nécessiter un mot de passe.
� Les rôles n'appartiennent à personne et ne résident dans aucun schéma.
� Exemple :
� les privilèges SELECT et UPDATE sont accordés au rôle HR_CLERK sur la table EMP
� Les privilèges DELETE et INSERT sur la table EMP, ainsi que le rôle HR_CLERK, sont accordés au rôle HR_MGR
� Le rôle HR_MGR est accordé au manager, lequel peut à présent effectuer des SELECT, des UPDATE , des DELETE et des INSERT sur la table EMP.
� Les privilèges sont accordés aux rôles (et révoqués) comme si le rôle était un utilisateur.
� Les rôles peuvent être accordés aux utilisateurs ou à d'autres rôles (et révoqués) comme s'il s'agissait de privilèges
� Un rôle peut être constitué de privilèges système et objet.
� Un rôle peut être activé ou désactivé pour chaque utilisateur auquel le rôle est accordé.
� L'activation d'un rôle peut nécessiter un mot de passe.
� Les rôles n'appartiennent à personne et ne résident dans aucun schéma.
� Exemple :
� les privilèges SELECT et UPDATE sont accordés au rôle HR_CLERK sur la table EMP
� Les privilèges DELETE et INSERT sur la table EMP, ainsi que le rôle HR_CLERK, sont accordés au rôle HR_MGR
� Le rôle HR_MGR est accordé au manager, lequel peut à présent effectuer des SELECT, des UPDATE , des DELETE et des INSERT sur la table EMP.
D.BOUZIDI 112
Exemple de rôles PrédéfinisExemple de rôles Prédéfinis
La plupart des privilèges système et plusieurs autres rôles. Ce rôle ne doit pas être accordé aux utilisateurs qui ne sont pas administrateurs.
DBA
CREATE TABLE, CREATE PROCEDURE, CREATE SEQUENCE, CREATE TRIGGER, CREATE TYPE, CREATE CLUSTER, CREATE INDEXTYPE, CREATE OPERATOR
RESOURCE
CREATE SESSION, CREATE TABLE, CREATE VIEW, CREATE SYNONYM, CREATE SEQUENCE, CREATE DATABASE LINK, CREATE CLUSTER, ALTER SESSION
CONNECT
Privilèges associésROLE
� Les vues permettant de surveiller des utilisateurs
� DBA_SYS_PRIVS //privilèges systèmes
� DBA_TAB_PRIVS //privilèges objets
� Dba_TS_Quotas //quotas sur un tablespace
� Les vues permettant de surveiller des utilisateurs
� DBA_SYS_PRIVS //privilèges systèmes
� DBA_TAB_PRIVS //privilèges objets
� Dba_TS_Quotas //quotas sur un tablespace
Gestion des rôlesGestion des rôles
D.BOUZIDI
RôlesRôles
UtilisateursUtilisateurs
PrivilPrivilèègesges
RôlesRôles
UPDATEON EMP
INSERT ON EMP
SELECTON EMP
CREATE TABLE
CREATE SESSION
HR_CLERKHR_MGR
A B C
D.BOUZIDI
Avantages des rôlesAvantages des rôles
� Limitation de l'octroi de privilèges
� Gestion dynamique des privilèges
� Disponibilité sélective des privilèges
� Pas de révocation en cascade
� Amélioration des performances
� Limitation de l'octroi de privilèges
� Gestion dynamique des privilèges
� Disponibilité sélective des privilèges
� Pas de révocation en cascade
� Amélioration des performances
D.BOUZIDI
Créer des rôlesCréer des rôles
CREATE ROLE sales_clerk;CREATE ROLE sales_clerk;
CREATE ROLE hr_clerk
IDENTIFIED BY bonus;
CREATE ROLE hr_clerk
IDENTIFIED BY bonus;
CREATE ROLE hr_manager
IDENTIFIED EXTERNALLY;
CREATE ROLE hr_manager
IDENTIFIED EXTERNALLY;
� Créer un rôle � Créer un rôle
� Créer un rôle dont l’authentification est gérée par une application externe
� Créer un rôle dont l’authentification est gérée par une application externe
� Créer un rôle protégé par un mot de passe� Créer un rôle protégé par un mot de passe
D.BOUZIDI
Utiliser des rôles prédéfinisUtiliser des rôles prédéfinis
Privilèges d'import de base de donnéesIMP_FULL_DATABASE
Privilèges d'export de base de données.EXP_FULL_DATABASE
Tous les privilèges systèmeavec l'option WITH ADMIN OPTION
DBA
Permet de créer des types, tables clusters, opérateurs, séquences, index et procédures
RESOURCE
Permet l'ouverture et la modification d'une session, la création de tables, vues, clusters, séquences, synonymes et liens de DB SESSION
CONNECT
DescriptionNom du rôle
D.BOUZIDI
Manipulation des rôlesManipulation des rôles
ALTER ROLE hr_clerk
IDENTIFIED EXTERNALLY;
ALTER ROLE hr_clerk
IDENTIFIED EXTERNALLY;
ALTER ROLE hr_manager
NOT IDENTIFIED;
ALTER ROLE hr_manager
NOT IDENTIFIED;
ALTER ROLE sales_clerk
IDENTIFIED BY commission;
ALTER ROLE sales_clerk
IDENTIFIED BY commission;
� Modifier un rôle � Modifier un rôle
� Attribuer un rôle � Attribuer un rôle
GRANT hr_clerk,
TO hr_manager;
GRANT hr_clerk,
TO hr_manager;
GRANT sales_clerk TO scott;GRANT sales_clerk TO scott;
GRANT hr_manager TO scott
WITH ADMIN OPTION;
GRANT hr_manager TO scott
WITH ADMIN OPTION;
D.BOUZIDI
Définir des rôles par défautDéfinir des rôles par défaut
ALTER USER scott
DEFAULT ROLE hr_clerk, sales_clerk;
ALTER USER scott
DEFAULT ROLE hr_clerk, sales_clerk;
ALTER USER scott DEFAULT ROLE ALL;ALTER USER scott DEFAULT ROLE ALL;
ALTER USER scott DEFAULT ROLE ALL EXCEPT hr_clerk;ALTER USER scott DEFAULT ROLE ALL EXCEPT hr_clerk;
ALTER USER scott DEFAULT ROLE NONE;ALTER USER scott DEFAULT ROLE NONE;
� Définir des rôles par défaut � Définir des rôles par défaut
� Supprimer des rôles � Supprimer des rôles
REVOKE hr_manager FROM PUBLIC;REVOKE hr_manager FROM PUBLIC;
REVOKE sales_clerk FROM scott;REVOKE sales_clerk FROM scott;
DROP ROLE hr_manager;DROP ROLE hr_manager;
D.BOUZIDI
Activer et désactiver les rôlesActiver et désactiver les rôles
� Désactivez un rôle pour le révoquer temporairement à un utilisateur.
� Activez un rôle pour l'accorder temporairement.
� La commande SET ROLE permet d'activer et de désactiver les rôles.
� Les rôles par défaut sont accordés aux utilisateurs lors de la connexion.
� Un mot de passe peut être nécessaire pour activer un rôle.
� Désactivez un rôle pour le révoquer temporairement à un utilisateur.
� Activez un rôle pour l'accorder temporairement.
� La commande SET ROLE permet d'activer et de désactiver les rôles.
� Les rôles par défaut sont accordés aux utilisateurs lors de la connexion.
� Un mot de passe peut être nécessaire pour activer un rôle.
D.BOUZIDI
BENEFITS PAYROLL
HR_MANAGERHR_CLERK PAY_CLERK
Rôles Rôles
utilisateurutilisateur
Rôles Rôles
applicationapplication
PrivilPrivilèèges ges
d'applicationd'application
Instructions relativesà la création de rôles
Instructions relativesà la création de rôles
UtilisateursUtilisateurs
Privilèges PayrollPrivilèges Benefits
D.BOUZIDI
Utilisation des rôles protégés par mot de passe et des rôles par défaut
Utilisation des rôles protégés par mot de passe et des rôles par défaut
PAY_CLERK PAY_CLERK_RO
Rôle par Rôle par ddééfautfaut
ProtProtééggéé par mot de par mot de passe (ne correspond passe (ne correspond pas pas àà un rôle par dun rôle par dééfaut)faut)
PrivilPrivilèèges SELECTges SELECTPrivilPrivilèèges INSERT, UPDATE, ges INSERT, UPDATE,
DELETE et SELECTDELETE et SELECT
D.BOUZIDI
Afficher les informations sur les rôlesAfficher les informations sur les rôles
Rôles d'un utilisateur actuellement activésSESSION_ROLES
Privilèges de table accordés aux rôlesROLE_TAB_PRIVS
Privilèges système accordés aux rôlesROLE_SYS_PRIVS
Privilèges système accordés aux utilisateurs et aux rôles
DBA_SYS_PRIVS
Rôles accordés aux rôlesROLE_ROLE_PRIVS
Rôles accordés aux utilisateurs et aux rôles
DBA_ROLE_PRIVS
Tous les rôles existants dans la base de données
DBA_ROLES
DescriptionVue du rôle
Sauvegarde et restauration
D.BOUZIDI
IMPORT et EXPORTIMPORT et EXPORT
� Permet de sauvegarder/restaurer le contenu logique d'une base de données dans un fichier de transfert Oracle au format binaire
� Le fichier exporté permet de recréer des objets qu'il contient (portabilité OS et logiciel)
� A ne pas utiliser à distance : augmente le trafic du réseau
� La version de l'utilitaire Import ne peut être antérieure à celle de l'utilitaire Export
� Permet de sauvegarder/restaurer le contenu logique d'une base de données dans un fichier de transfert Oracle au format binaire
� Le fichier exporté permet de recréer des objets qu'il contient (portabilité OS et logiciel)
� A ne pas utiliser à distance : augmente le trafic du réseau
� La version de l'utilitaire Import ne peut être antérieure à celle de l'utilitaire Export
D.BOUZIDI
Mode d’Import et d’ExportMode d’Import et d’Export
� Base de données complète (option FULL):
� Tous les objets de la base sont exportés à l'exception de certains utilisateurs : SYS, ORDSYS, CTXSYS, MDSYS et ORDPLUGINS
� Lors de L'importation tous les objets exportés sont créés dans la base de destination
� Utilisateur
� Que les objets appartenant à un utilisateur qui sont exportés (OWNER)
� On peut impoter, du fichier exporté, les objets d’un utilisateur donné dans le schéma d’un utilisateur (FROMUSER / TOUSER)
� Le fichier exporté permet de recréer des objets qu'il contient (portabilité OS et logiciel)
� Base de données complète (option FULL):
� Tous les objets de la base sont exportés à l'exception de certains utilisateurs : SYS, ORDSYS, CTXSYS, MDSYS et ORDPLUGINS
� Lors de L'importation tous les objets exportés sont créés dans la base de destination
� Utilisateur
� Que les objets appartenant à un utilisateur qui sont exportés (OWNER)
� On peut impoter, du fichier exporté, les objets d’un utilisateur donné dans le schéma d’un utilisateur (FROMUSER / TOUSER)
� Le fichier exporté permet de recréer des objets qu'il contient (portabilité OS et logiciel)
D.BOUZIDI
Mode d’Import et d’ExportMode d’Import et d’Export
� Table (option TABLES)
� Lors de l'exportation d’une table tous ses objets (index, contraintes, déclencheurs, privilèges …) sont sauvegardés dans le fichier d’export
� Lors de L'importation les tables doivent être nommées grâce au paramètre TABLES (comme dans l’exportation)
� Tablespace (TABLESPACE)
� les métas donnés concernant les tablespacesspécifiés et les objets qu'ils contiennent sont écrites dans un fichier d’export
� Table (option TABLES)
� Lors de l'exportation d’une table tous ses objets (index, contraintes, déclencheurs, privilèges …) sont sauvegardés dans le fichier d’export
� Lors de L'importation les tables doivent être nommées grâce au paramètre TABLES (comme dans l’exportation)
� Tablespace (TABLESPACE)
� les métas donnés concernant les tablespacesspécifiés et les objets qu'ils contiennent sont écrites dans un fichier d’export
D.BOUZIDI
Mode d’Import et d’ExportMode d’Import et d’Export
� Privilèges � Privilèges
IMP_FULL_DATABASE Importer un objet du fichier
EXP_FULL_DATABASE Exporter la base entière ou tablespaces
SYSDBA, DBA et EXP_FULL_DATABASE
Exporter d'autres schémas
CREATE SESSION Exporter son propre schéma
Privilège ou rôleActions
D.BOUZIDI
Paramètres de l’ExportParamètres de l’Export
Analyse des objets exportés Statistics
Table(s) à exporter Tables
Définit une condition de filtre pour exporter un sous-ensemble
Query
Export des lignes Rows
Fichier contenant les paramètres d'export Parfile
Utilisateur(s) à exporter Owner
Export des index Indexes
Export des privilèges Grants
Export de toute la base Full
Nom du fichier de sortie du compte-rendu, pour voir les erreurs en particulier
Log
Nom du fichier de sauvegardeFile
chaîne de connexion à la base de données Userid
DescriptionParamètres
D.BOUZIDI
Paramètres d’importParamètres d’import
Utilisateur destinataire Touser
Liste le contenu du fichier d'export, aucune opération n'est effectuée dans la base
Show
Utilisateur à exporter vers TOUSER Fromuser
Exécute la commande ANALYZE dans le fichier de sauvegarde
Analyze
Table(s) à exporter Tables
Détruit les objets s'ils existent avant de les importer Destroy
Import des lignes Rows
Fichier contenant les paramètres d‘import Parfile
Import des index Indexes
Import des privilèges Grants
Export de tout le contenu du fichier de sauvegardeFull
Nom du fichier de sortie du compte-rendu, pour voir les erreurs en particulier
Log
Nom du fichier de sauvegardeFile
chaîne de connexion à la base de données Userid
DescriptionParamêtres
D.BOUZIDI
Exemple d’exportExemple d’export
exp userid=system/manager
file=c:\save\exp_ORCL_struct_full.dump
log=c:\saveLog\exp_ORCL_struct_full.log full=y rows=n
exp userid=system/manager
file=c:\save\exp_ORCL_struct_full.dump
log=c:\saveLog\exp_ORCL_struct_full.log full=y rows=n
� Exporter les structures de la base données � Exporter les structures de la base données
exp userid=system/manager
file=c:\save\exp_scott_full.dump
log=c:\logsave\exp_scott_full.log owner=scott
exp userid=system/manager
file=c:\save\exp_scott_full.dump
log=c:\logsave\exp_scott_full.log owner=scott
� Exporter d’un schéma� Exporter d’un schéma
exp userid=system/manager
file=c:\save\exp_emp_scott.dump
log=c:\logsave\exp_emp_scott.log tables=scott.emp
exp userid=system/manager
file=c:\save\exp_emp_scott.dump
log=c:\logsave\exp_emp_scott.log tables=scott.emp
� Exporter d’une table � Exporter d’une table
exp userid=system/manager
file=c:\save\exp_nomTablespace.dump
log=c:\logsave\exp_nomTablespace.log tablespace=nomTablespace
exp userid=system/manager
file=c:\save\exp_nomTablespace.dump
log=c:\logsave\exp_nomTablespace.log tablespace=nomTablespace
� Exporter d’une tablespace� Exporter d’une tablespace
exp system/manager file=\save\exp_ORCL_query1.dmp
tables=scott.emp query="'where salaire > 500'"
exp system/manager file=\save\exp_ORCL_query1.dmp
tables=scott.emp query="'where salaire > 500'"
� Exporter selon une condition � Exporter selon une condition
D.BOUZIDI
Exemple d’importExemple d’import
� Importer un schéma d’un fichier export contenant tt la BD � Importer un schéma d’un fichier export contenant tt la BD
imp userid=system/manager
file=c:\save\exp_scott_full.dump
log=c:\logsave\imp_scott_full.log fromuser=scott Tables=emp
touser=user02
imp userid=system/manager
file=c:\save\exp_scott_full.dump
log=c:\logsave\imp_scott_full.log fromuser=scott Tables=emp
touser=user02
� Importer un schéma vers un autre� Importer un schéma vers un autre
� Importer une table d’un schéma vers un autre � Importer une table d’un schéma vers un autre
imp userid=scott/tiger
file=c:\save\exp_scott_full.dump
log=c:\logsave\imp_scott_full.log owner=scott
imp userid=scott/tiger
file=c:\save\exp_scott_full.dump
log=c:\logsave\imp_scott_full.log owner=scott
imp userid=scott/tiger
file=c:\save\exp_scott_full.dump
log=c:\logsave\imp_scott_full.log fromuser=scott touser=user01
imp userid=scott/tiger
file=c:\save\exp_scott_full.dump
log=c:\logsave\imp_scott_full.log fromuser=scott touser=user01
� Importer tous les schéma sauvegardés � Importer tous les schéma sauvegardés
imp userid=stystem/manager
file=c:\save\exp_ORCL_struct_full.dump
log=c:\logsave\imp_ORCL_struct_full.log
imp userid=stystem/manager
file=c:\save\exp_ORCL_struct_full.dump
log=c:\logsave\imp_ORCL_struct_full.log
D.BOUZIDI
Exemple d’export /import utilisant un fichier de paramètres
Exemple d’export /import utilisant un fichier de paramètres
� Export un schéma � Export un schéma
exp parfile=c:\fichierParametre\expScott.prmexp parfile=c:\fichierParametre\expScott.prm
� Création du fichier de paramètres d’export� Création du fichier de paramètres d’export
userid=system/manager
file=c:\save\exp_scott_full.dump
log=c:\exp_scott_full.log
owner=scott
rows=y
userid=system/manager
file=c:\save\exp_scott_full.dump
log=c:\exp_scott_full.log
owner=scott
rows=y
� Export un schéma � Export un schéma
imp parfile=c:\fichierParametre\impScott.prmimp parfile=c:\fichierParametre\impScott.prm
� Création du fichier de paramètres d’import � Création du fichier de paramètres d’import
userid=system/manager
file=c:\save\exp_scott_full.dump
log=c:\imp_scott_full.log
owner=scott
rows=y
userid=system/manager
file=c:\save\exp_scott_full.dump
log=c:\imp_scott_full.log
owner=scott
rows=y
expScott.prmexpScott.prm
impScott.prmimpScott.prm
D.BOUZIDI
Sauvegarde à FroidSauvegarde à Froid
� Permet de faire une sauvegarde d’une Base de données en arrêt
� Les fichiers (datafiles, logfiles, controlfile, etc) peuvent être sauvegardés sans corruption
� Fortement utilisée en mode noArchivelog
� Inconvénients : n’est valable pour des environnements à haute disponibilité où l’activiténe peut être interrompue
� Permet de faire une sauvegarde d’une Base de données en arrêt
� Les fichiers (datafiles, logfiles, controlfile, etc) peuvent être sauvegardés sans corruption
� Fortement utilisée en mode noArchivelog
� Inconvénients : n’est valable pour des environnements à haute disponibilité où l’activiténe peut être interrompue
D.BOUZIDI
Sauvegarde à FroidSauvegarde à Froid
� Les étapes de sauvegarde
� Lister les noms à sauvegarder
� Fichiers de données
� Fichiers de contrôles
� Les fichiers log
� Arrêter de la base de données en mode immediate
� Effectuer une copie des fichiers à sauvegarder par une commande OS
� Redémarrer la base de données
� Les étapes de sauvegarde
� Lister les noms à sauvegarder
� Fichiers de données
� Fichiers de contrôles
� Les fichiers log
� Arrêter de la base de données en mode immediate
� Effectuer une copie des fichiers à sauvegarder par une commande OS
� Redémarrer la base de données
Select * from dba_datafiles;Select * from dba_datafiles;
Select * from v$logfile;Select * from v$logfile;
Select * from v$parameter where name like ‘control_files’;Select * from v$parameter where name like ‘control_files’;
Shutdown immediateShutdown immediate
D.BOUZIDI
Sauvegarde à ChaudSauvegarde à Chaud
� Permet de faire une sauvegarde d’une Base de données sans la faire arrêter
� Utile dans un contexte à haute disponibilité oùl’état des fichiers change constamment
� Fonctionnement : Placer un tablespace dans le mode de sauvegarde et de sauvegarder les fichiers de données, puis de rétablir le tablespace dans le mode normal
� La base de données doit être en mode Archivelog
� Permet de faire une sauvegarde d’une Base de données sans la faire arrêter
� Utile dans un contexte à haute disponibilité oùl’état des fichiers change constamment
� Fonctionnement : Placer un tablespace dans le mode de sauvegarde et de sauvegarder les fichiers de données, puis de rétablir le tablespace dans le mode normal
� La base de données doit être en mode Archivelog
D.BOUZIDI
Sauvegarde à ChaudSauvegarde à Chaud
� Stratégie de sauvegarde:
� Sauvegarde complète de la base de données àdes intervalles réguliers
� Sauvegarde partielle de la base de données
� Archivage des fichiers de journalisation (log)
� Sauvegarde du fichier de contrôle en cas de modification dans la base de données
� Stratégie de sauvegarde:
� Sauvegarde complète de la base de données àdes intervalles réguliers
� Sauvegarde partielle de la base de données
� Archivage des fichiers de journalisation (log)
� Sauvegarde du fichier de contrôle en cas de modification dans la base de données
D.BOUZIDI
Sauvegarde à ChaudSauvegarde à Chaud
� Sauvegarde d’un tablespace mis en offline
� Identifier les fichiers du tablesapce àsauvegarder
� Mettre le tablespace en mode offline
� Effectuer une copie des fichiers à sauvegarder par une commande OS
� Remettre le tablespace en mode on online
� Sauvegarde d’un tablespace mis en offline
� Identifier les fichiers du tablesapce àsauvegarder
� Mettre le tablespace en mode offline
� Effectuer une copie des fichiers à sauvegarder par une commande OS
� Remettre le tablespace en mode on online
Select file_name from dba_datafiles where
tablespace_name= ‘NOMTABLESPACE’
Select file_name from dba_datafiles where
tablespace_name= ‘NOMTABLESPACE’
Alter tablespace NomTablespace offline normalAlter tablespace NomTablespace offline normal
Alter tablespace NomTablespace onlineAlter tablespace NomTablespace online
D.BOUZIDI
Procédure de récupérationProcédure de récupération
Fichiers de données restaurés
Fichiers de données contenant des transactions
validées et non validées
Fichiers de données récupérés
Modifications appliquéesInformations
d'annulation appliquées
5
4
3
2
1
Fichier de journalisationarchivé
Fichier de journalisationarchivéFichier de
journalisationen ligne
D.BOUZIDI
Procédures de récupération gérées par l'utilisateur : commande RECOVER
Procédures de récupération gérées par l'utilisateur : commande RECOVER
� Restaurer tous les fichiers de base de données à partir d'une sauvegarde et récupérer la base de données :
� Restaurer les fichiers de données endommagés à partir d'une sauvegarde et récupérer les fichiers de données :
Ou
SQL> RECOVER DATABASE
SQL> RECOVER TABLESPACE index_tbs
SQL> RECOVER DATAFILE '/oradata/indx01.dbf'
D.BOUZIDI 141
Créer un nouveau fichier de contrôleCréer un nouveau fichier de contrôle
SQL> ALTER DATABASE BACKUP CONTROLFILE TO TRACE;
Fichier de mots de passe
Fichier de paramètres
SYSTEM
SYSAUX
UNDO TEMP
USERS
INDEX
Fichier de journalisation
1B
Fichier de journalisation
1A
Fichier de journalisation
2B
Fichier de journalisation
2A
Fichiers de contrôle
D.BOUZIDI
Situations nécessitant une récupération incomplète
Situations nécessitant une récupération incomplète
� La récupération complète échoue parce qu'un fichier de journalisation archivé est manquant.
� Un ou plusieurs fichiers de journalisationnon archivés et un fichier de données sont manquants.
� Une sauvegarde du fichier de contrôle est utilisée pour ouvrir ou récupérer la base de données.
D.BOUZIDI
Méthodes recommandées pour la récupération incomplète
Méthodes recommandées pour la récupération incomplète
� Suivez soigneusement toutes les étapes.
� Effectuez des sauvegardes totales de la base de données avant et après la récupération.
� Vérifiez toujours que la récupération a réussi.
� Sauvegardez et supprimez les fichiers de journalisation archivés.
D.BOUZIDI 144
Procédure de récupération UNTIL TIMEProcédure de récupération UNTIL TIME
1. Arrêtez la base de données.
2. Restaurez les fichiers de données.
3. Montez la base de données.
4. Récupérez la base de données.
5. Ouvrez la base de données avec l'option RESETLOGS.
6. Sauvegardez la base de données.
SQL> shutdown immediate
$ cp /BACKUP/* /u01/db01/ORADATA
SQL> startup mount
SQL> recover database until time '2004-05-28:11:44:00';
SQL> alter database open resetlogs;
SQL> shutdown;
$ cp /u01/db01/ORADATA/* /BACKUP