You are on page 1of 72

Sur ce cours … 1/2

Objectifs du cours :
ִ Maîtriser les concepts de
l’administration des BD
ִ Identifier les points clés de
Administration l’environnement
des bases de données : ִ Mise en œuvre technique, dompter
mise en œuvre avec la doc
Oracle  Très orienté sur Oracle
ִ Personne n’est parfait ☺
ִ Permet de faire 2 séances de TPs
ִ Corolaire :
Jean-Marc Petit « Certains ordres présents dans ce
document peuvent être erronés en
2009-2010
fonction de la version d’Oracle que vous
utilisez »
Département Informatique

Thèmes du cours
Sur ce cours … 2/2

 Cours très différent de


Concrétiser la conception
« Fondamentaux de la modélisation physique des bases de données
des données » « Démystifier » les ordres SQL
ִ Beaucoup de transparents utiles en TP simples
uniquement
ִ create table EMP ( … );
ִ les transparents = support de cours +
documentation technique en TP ִ insert into EMP values (… );
Pour une version indépendant des ִ select * from EMP where …;
SGBD Comprendre ce qui se passe
ִ « Database system implementation », « derrière », qui n’est au fond
Garcia Molina, J. Ullman, J. Widom
que des lectures/écritures dans
Remerciements :
ִ Fabien De Marchi, MdC, Univ Lyon1
des fichiers …
ִ Helène Jaudoin, MdC, ENSSAT, Lannion
ִ Farouk Toumani, Pr, Univ Blaise Pascal

1
Pré-requis
Objectifs sous Oracle

Autour de l’algorithmique
ִComprendre l'architecture d'un ִ structure de données : tableau, arbre,
serveur de BD Oracle table de hachage
ִDémarrage et arrêt d’une instance ִ algorithmes classiques de parcours de
et d’une base de données Oracle structures
ִCréation d’une base de données Autour des BD
opérationnelle ִ Modèle relationnel
ִGestion des fichiers d'une base de ִ Langage de requêtes
données Oracle ִ Transactions
ִGestion de la structure logique ִ Langage de programmation et BD
(tablespaces, segments, extents et Autour des systèmes d’exploitation
blocs) ִ Hiérarchie de la mémoire
ִGestion des utilisateurs, des ִ Politique de gestion des défauts de pages
privilèges et des ressources
ִSauvegarde/restauration/réorganisa
tion des données
6

Histoire d’Oracle suite


 1977  1994
ִ Relational Software Inc. (RSI - currently Oracle Corporation) established ִ Oracle's headquarters moved to present location.
 1978 Released Oracle 7.1 and Oracle7 for the PC.
ִ Oracle V1 ran on PDP-11 under RSX, 128 KB max memory. Written in  1995
assembly language. Implementation separated Oracle code and user ִ Reported gross revenues of almost $3 billion.
code. Oracle V1 was never officially released.  1995
 1980 ִ OraFAQ.com website launched.
ִ Oracle V2 released - the first commercially available relational database  1997
to use SQL. Oracle runs on on DEC PDP-11 machines. Coide is still written
in PDP-11 assembly language, but now ran under Vax/VMS. ִ Oracle8 released (supports more users, more data, higher availability,
and object-relational features)
 1982
 1998
ִ Oracle V3 released, Oracle became the first DBMS to run on mainframes,
minicomputers, and PC's (portable codebase). First release to employ ִ Oracle announces support for the Intel Linux operating system
transactional processing. Oracle V3's server code was written in C.  1999
 1983 ִ Oracle8i (the "i" is for internet) or Oracle 8.1.5 with Java integration (JVM
ִ Relational Software Inc. changed its name to Oracle Corporation. in the database)
 1984  2000
ִ Oracle V4 released, introduced read consistency, was ported to multiple ִ Oracle8i Release 2 released
platforms, first interoperability between PC and server. Oracle now not only the number one in Databases but also in ERP
Applications
 1986 Oracle9i Application Server generally available: Oracle tools integrated in
ִ Oracle V5 released. Featured true client/server, VAX-cluster support, and middle tier
distributed queries. (first DBMS with distributed capabilities).  2001
 1988 ִ Oracle9i Release 1 (with RAC and Advanced Analytic Service)
ִ Oracle V6 released - PL/SQL introduced.  2002
 1989 ִ Oracle9i Release 2
ִ Released Oracle 6.2 with Symmetric cluster access using the Oracle  2004
Parallel Server
ִ Oracle10g Release 1 (10.1.0) available ("g" is for grid, the latest
 1991 buzzword)
ִ Reached power of 1,000 TPS on a parallel computing machine.  2005
First database to run on a massively parallel computer (Oracle Parallel
Server). ִ Oracle10g Release 2 (10.2.0) available
 1992
ִ Released Oracle7 for Unix

2
Plan du cours Plan détaillé (2)

 Partie 1 -- Introduction diapo 13 Partie 4 -- Structure logique de


stockage diapo 125
ִLe rôle de l'administrateur base de
ִFichiers de données et tablespaces
données
ִNotions sur les segments
ִComposants de l’architecture d’Oracle
ִUtilisation des outils d’administration Partie 5 -- Mise à jour de l'intégrité
des données diapo 201
 Partie 2 -- Serveur Oracle diapo 49
ִGestion d’une instance Oracle Partie 6 – Sécurité diapo 209
ִUtilisateurs, profils, privilèges, rôles
ִCréation d’une base de données
ִCréation de vues du dictionnaire de
données Partie 7 -- Sauvegarde et
restauration diapo 241
Partie 3 -- Structure physique de Partie 8 – Configuration du réseau
stockage diapo 105 sous Oracle diapo 257
ִ Fichier de contrôle, de reprise

9 10

3
Rappel

Partie 1  Verrou technologique


ִ prédominance des coûts d’E/S
entre mémoire vive et mémoire
secondaire

 Explique, justifie l’architecture


même des SGBD
Introduction à
l'administration des  A gvarder en tête pour
bases de données comprendre le fonctionnement
des SGBD

13

Modèle de mémoire
RAM Mémoire hiérarchique

Slides adaptés de Lars Arge

R
R L L
1 2 A
A M
M

Modèle théorique standard de


Machines modernes
calcul ִPlusieurs niveaux de mémoire
ִTrès simple Niveaux loin du processeur : plus
ִMémoire virtuelle infini grands et plus lents
ִCoût d’accès en temps constant Mouvement des données entre les
Modèle crutial pour le succès de niveaux
l’informatique ִUtilisation de “bloc” ou “page”
ִDe plus en plus grand

4
E/S lente Verrou technologique
Accès disque ~ 106
plus lent que accès Programmes dans le modèle RAM
RAM Fonctionne sur des grands jeux
“The difference in speed de données
read/write headbetween modern CPU OS déplace les blocs
track read/write arm technologies is
and disk
analogous to the
difference in speed in  OS récents
ִ stratégies de pagination et de “prefetching”
sharpening a pencil sophistiquées
using a sharpener on ִInefficace si le programme fait
one’s desk or by taking des accès aléatoires
an airplane to the other
side of the world and

running time
magnetic surface using a sharpener on
someone else’s desk.”
(D. Comer) problèmes de passage à
Important de stocker et d’accéder l’échelle (scalability)

aux données de façon à tirer


profit des blocs (contiguité) data size

Administration des Tâches de


bases de données l’administrateur de BD

Conception physique des bases de Dans la phase de « conception »


données ִdéfinition du schéma conceptuel de la
base
ִ Dernière étape d’un processus de
ִrègles de gestion, cohérence des
conception de BD informations
ִ Nombreux choix possibles sur la ִcycle de vie des données, volumétrie
façon d’organiser le serveur de Dans la phase de maintenance
bases de données ִPlanification et création des BD
taille d’un bloc, emplacements des Gestion des structures physiques
fichiers sur disque, nombre de fichiers Gestion des structures logiques suivant le
de données, taille des fichiers, « design »
multiplexage, espace logique de ִGestion de la sécurité, des utilisateurs
stockage (tablespace), …
ִSauvegarde et restauration
La face cachée des bases de données ִOptimisation de la base de données
 optimisation de requêtes
ִAdministration du réseau

20

5
Rôles d’un DBA Tendance actuelle

Doit maîtriser la technique pour Administrateur de base de données


mieux s’en affranchir ִsouvent formé "sur le tas"
« Penser globalement et fixer ִà l'intersection de plusieurs domaines
localement » ִbeaucoup de demande, peu d'offre
ִNécessite de maîtriser les concepts mouton à 5 pattes, env 45 KE/an
Grandes fonctions : Tendances actuelles
ִinstaller le SGBD et les applications ִprogiciels intégrés
clientes
minimise les besoins en administration
ִCréer la base de données en faisant des … sans pour autant les supprimer
choix au niveau physique et la maintenir
ִamélioration des outils d'administration
ִGérer les utilisateurs
par les fournisseurs de SGBD
ִAssurer la cohérence et la sécurité des Notion d'Assistant
données • pour la création des bases, la
ִEchanger des données avec l'extérieur sauvegarde/restauration, ...
ִAméliorer les performances ִA terme, vers des BD qui s'auto-
gestion des ressources mémoires administrent
gestion des temps de réponses prohibitifs

21 22

Composants de
Exemple avec Oracle l’architecture d'Oracle

Deux produits principaux avec 1. Les clients et les serveurs d'Oracle


Oracle 10g
ִ Oracle Entreprise Edition 2. Les processus, les structures de la
 dans la continuité des versions mémoire et les fichiers d'Oracle
précédentes
ִOracle Express Edition 3. Étapes du traitement d'une requête
 En rupture avec la “tradition” Oracle d'interrogation
Le SGBD fait des choix à la place de
l’administrateur
• plus difficile à “tuner” 4. Étapes du traitement d'un ordre de
• Objectif : concurrencer SQL server ? modification/ajout/suppression
 Exemple concret de self-tuning
des BD 5. Étapes du traitement d'un ordre de fin
de transaction (commit)

24

6
1. Les clients et les Connexion à une base
serveurs d'Oracle de données

via SQL*Plus ou application tierce =>


1 serveur <--> plusieurs clients lancement d'un processus utilisateur
Oracle Oracle sur le poste du client
(qui peut être le serveur)
Utilisateurs lors de la connexion
ִConnexion directe à l'hôte (login/passwd/service BD)
e.g. avec telnet + sql*plus => lancement d'un processus serveur
ִConnexion client/serveur ou deux tiers sur le serveur
e.g. SQL Worksheet
ou avec une application développée en
communication
Client/Serveur ִinter-processus si les 2 processus
s'exécutent sur le même poste
ִvia un logiciel de réseau sinon
Administrateurs
ִchargés de l'entretien du serveur Oracle  Session : connexion spécifique entre
un utilisateur et un serveur prêt à
l'emploi, i.e. un serveur démarré.
25 26

Processus Utilisateur Processus Serveur


Fonctionne sur la même machine
Fonctionne sur la machine du client
que le serveur Oracle
Démarre lors de l'appel d'un outil ou
En cas de serveur dédié, prend en
d'une application
charge un unique processus
Exécute l'outil ou l'application utilisateur
(SQL*Plus, Server Manager,
Utilise une PGA exclusive
Developer/2000)
(Program Global Area)
Inclut l'UPI
Inclut l'OPI
(User Program Interface)
(Oracle Program Interface)
Appelle le serveur Oracle
Traite les appels générés par le
client
Retourne les résultats au client
en cas de serveur partagé (MTS),
plusieurs processus utilisateurs
partagent un processus serveur
27 28

7
Architecture

Architecture à serveur dédié


1 processus <-> 1 processus
client serveur
ִArchitecture
la plus simple
la plus répandue
ִInadapté si beaucoup de clients connectés
de façon simultanée
Architecture à serveur partagé
n processus <-> 1 processus
clients serveur
ִServeur partagé ou
Multi-Thread Server (MTS)
ִGestion d'une file de requêtes des
processus clients et de réponses à
retourner
Dispatcher + Listener
29 30

Instance Oracle : la
2. Serveur Oracle SGA

Serveur Oracle = SGA (Shared Global Area) ou Zone


instance Oracle + mémoire globale du système
base de données Oracle contient les données et les
informations de contrôle pour le
Instance Oracle serveur Oracle
ִC'est un moyen pour accéder à une base ִFait le lien avec le processus serveur
de données Oracle alloué en mémoire virtuelle par le
système d'exploitation du serveur
ִOuvre une unique base de données Elle comprend
ִUne zone partagée (shared pool)
ִInstance Oracle = SGA + des processus ִLe cache de données
en arrière plan pour gérer la base
ִLe cache de reprise (redo log)

31 32

8
Instance Oracle :
Processus en arrière plan

5 principaux processus sont lancés


pour une instance donnée
ִDBWR (processus d'écriture des blocs de
données)
ִLGWR (processus d'écriture du fichier de
reprise)
ִCKPT : point de synchronisation
ִSMON (processus System Monitor)
ִPMON ( processus Process Monitor)

D'autres processus sont lancés


ִsuivant le type de serveur
serveur dédié/partagé
ִsuivant le mode d'archivage
archivelog ou noarchivelog
ִ...
33 34

BD Oracle Architecture Oracle

désignée par un nom (DB_NAME), Instance


Processus
souvent pris identique à celui de utilisateur
l'instance correspondante. Zone de mé
mémoire SGA
partagé
partagée
représente les structures physiques des
données Processus Cache de la
Serveur librairie
se compose de fichiers du système PGA
d 'exploitation Cache du dict.
Cache de Cache de
de données données reprise
ִfichiers de données (>=1), (10g >=2)
ִfichiers de reprise (redo log) (>=2)
SMON DBW0 PMON CKPT LGWR Autres
ִfichiers de contrôle (>=1)
ִfichier de paramètres
ִfichier mot de passe
ִfichiers de reprise archivés Fichier de Fichiers de Fichiers de Fichiers deFichiers journaux
paramètres données contrôle journalisation archivés

Fichier de
mots de passe
35 Base de données 36

9
3. Traitement d'une La shared Pool de la
requête d'interrogation SGA

Le processus client envoie la requête taille en octet définie par le paramètre
au processus serveur SHARED_POOL_SIZE
Le processus serveur effectue l'analyse ִ 80 Mo sur 10g !
syntaxique et sémantique de la requête Sert pour l’allocation de mémoire des
ִutilise la shared pool de la SGA pour requêtes SQL et code PL/SQL
compiler l'ordre composée de :
ִretourne l'état (analyse correcte ou ִ« library cache »
incorrecte) au processus client.
 contient le texte de la requête, le code analysé
Exécution de la requête et un plan d'exécution déterminé par
l'optimiseur
Récupération des résultats
ִcache du dictionnaire de données
ִle processus serveur envoie les lignes  pour l'analyse sémantique de la requête
extraites par la requête (à partir du cache
de données si les données y ont déjà été
chargées)

37 38

Le cache de données La zone mémoire du


de la SGA programme (PGA)

Objectif : Zone mémoire utilisée par un seul


ִminimiser les coûts d'entrées/sorties entre processus serveur
la mémoire centrale et la mémoire ִà la différence de la SGA qui est partagée
secondaire par tous les processus
Stocke les blocs les plus récemment serveurs
utilisés (LRU)
ִUne liste LRU ------ MRU PGA contient :
ִUne "dirty list" ִune zone de tri
Paramètres ִdes informations sur la session
ִnombre de blocks défini par ִl'état du curseur
DB_BLOCK_BUFFERS ִ...
ִtaille d'un bloc définie par
DB_BLOCK _SIZE

39 40

10
4. Traitement d'un ordre
de mise à jour (DML) Rollback Segment
Similaire à une requête d'interrogation
pour la phase d'analyse Permet la gestion des transactions
ִCOMMIT : valide un ensemble de MAJ
Phase d'exécution différente :
ִROLLBACK : annule un ensemble de MAJ
1. le processus serveur lit des blocs de
données et de rollback à partir Avant d'effectuer une modification des
des fichiers de données données, le processus serveur
du buffer cache de données enregistre l'ancienne valeur dans un
2. Si des blocs ne sont pas déjà dans le rollback segment
cache, copie des blocs du disque dans le
cache
Intérêts :
3. Mise à jour de verrou sur les données ִsi la transaction échoue, les modifications
"déjà faites" sont annulées
4. Enregistrement des modifications
ִAssure une lecture cohérente des données
à apporter au rollback (image avant)
par les autres transactions
et aux données (nouvelles valeurs)
ִen cas de panne, les données sont
dans le cache de reprise (redo log)
restaurées dans un état cohérent.
5. Mêmes opérations dans le cache de
données
Ces blocs sont marqués comme modifiés
(différents des blocs stockés sur disque) 41 42

Database Writer
Cache de reprise (DBWR)

Redo log = reprise Objectifs :


Fait partie de la SGA ִLimiter les coûts d'entrées/sorties en
"retardant" (de façon transparente à
Taille définie par LOG_BUFFER l'utilisateur) l'écriture des blocs modifiés
Stocke la trace des modifications DBWR
ִle bloc modifié ִun des processus serveur en arrière plan
ִl'emplacement de la modification ִenregistre les modifications du cache de
ִla nouvelle valeur données dans les fichiers de données
les 3 constituent une "entrée redo"
ִQuand ?
Pas de distinction sur le type du bloc Nombre de blocs modifiés atteint un seuil
ִbloc d'index, de données, … pas assez de blocs libres
déclenchement d'un point de synchronisation
Cache circulaire
ִcapacité infinie !

43 44

11
5. Traitement des
Log Writer (LGWR) opérations COMMIT
Objectifs SCN pour System Change Number
ִEnregistrer toutes les modifications ִà chaque transaction validée ->
apportées aux données afin 1 identifiant de modification SCN
d'assurer la reprise après panne ִsorte d'horodateur interne
Enregistre les modifications du permet de vérifier la cohérence
indépendamment de la date/heure du SE
cache de reprise de la SGA dans
les fichiers de reprise Lorsqu'un ordre COMMIT est
effectué:
Effectue des écritures
1. Le processus serveur enregistre dans
séquentielles
le cache de reprise 1 SCN
ִquand le cache de reprise est plein à
2. LGWR effectue une lecture contiguë
1/3
de tout le cache de reprise (SCN
ִune transaction est validée inclu) dans les fichiers de reprise
ִjuste avant que DBWR ne fonctionne 3. L'utilisateur reçoit "commit complete"
Comme le cache de reprise, les 4. Le processus serveur libère les
fichiers de reprise sont organisés verrous
de façon circulaire
ִcapacité infinie 45 46

Les outils
d'administration Exemples d'outils

Dépend du système d'exploitation sur Mode ligne de commandes


lequel Oracle est installé ִSqlplus sous NT
ִtendance actuelle : automatiser les tâches remplace SQL*DBA
d'administration ִSQL*Loader
avec des outils graphiques ִimport/export
des assistants
ִoradim, orapwd, ...
Utilisation Mode graphique
 des composants graphiques
Instance Manager
 du mode ligne de commande
Storage Manager
« Qui peut le plus, peut le moins » SQL Worksheet
Schema Manager
Security Manager
On favorisera le mode ligne de Backup Manager
commande Data Manager
ִ procédure de déploiement en ִAutres outils Oracle :
production Oracle Net

47 48

12
Objectifs

Partie 2  Décrire l’architecture d’un SGBD


ִ Comprendre son interface avec le
matériel, le système d’exploitation
 Etre capable de créer son propre
serveur de bases de données
 Trois notions importantes
ִ Instance
Serveur de bases de
ִ Base de données
données
ִ Dictionnaire et packages

49 50

Prerequis

Disposer d’une machine ☺ Instance Oracle


ִ le serveur de bases de données
En être administrateur
En fonction du système
d’exploitation
ִ installer le logiciel Oracle
 en mode serveur
Si administration à distance sur
un poste client
ִ installer le logiciel Oracle Client

Accessible sur le site :


ִ www.oracle.com
52

13
Objectifs Instance Oracle

Initialisation du système d'exploitation Préalable obligatoire pour accéder une


ִDifférents types d'authentification base de données Oracle
Création du fichier de paramètres Instance Oracle
Démarrage d'une instance et ouverture ִassociée à une unique base de données
de la base de données ִSGA
Fermeture de la base de données et ִprocessus en arrière plan
arrêt de l'instance Tâches courantes de l'administrateur
Obtention et initialisation des ִde démarrer l'instance
puis de monter la BD et de l'ouvrir
paramètres
ִde l'arrêter
Gestion des sessions après avoir fermer puis démonter la BD
Contrôle des fichiers d'alertes et de
traces

53 54

Utilisateurs
Authentification
administrateurs

Utilisateur SYS et SYSTEM Deux possibilités :


ִcréés automatiquement (rôle DBA) ִlaisser Oracle gérer l'authentification
SYS ִdécharger Oracle en se référant au SE
ִmot de passe : celui spécifié avec ORADIM Authentification par Oracle
ou « change_on_install » ִcf. gestion de la Sécurité
ִpropriétaire du dictionnaire
relations + vues dans le schéma SYS
Authentification par le système
ִpossède tous les droits d'exploitation :
SYSTEM ִDéfinir l'utilisateur à être authentifié par
le SE pour qu'il ait les privilèges
ִmot de passe : celui spécifié avec ORADIM
ou « manager » administrateurs
groupe sous Oracle/Unix
ִmoins de privilèges que SYS
utilisateurs du groupe
cf. doc pour la mise en œuvre
Utilisateur INTERNAL (plus supporté) ִ4 cas de figure :
ִmot de passe admin sous Unix utilisateurs sans privilège
et oracle sur Windows utilisateurs privilégiés (SYSOPER, SYSDBA)
utilisateur sys
55 affecter des rôles aux utilisateurs 56

14
Instance Oracle : Instance Oracle :
Rappel Rappel (2)

SGA (Shared Global Area) ou Zone 5 principaux processus lancés pour


mémoire globale du système une instance Oracle :
ִDBWR (processus d'écriture des
contient les données et les blocs de données modifiés) : écrit les
informations de contrôle pour le données modifiées dans la base de
serveur Oracle données
alloué en mémoire virtuelle (gérée par ִLGWR (processus d'écriture des
le système d'exploitation du serveur) modifications) : enregistre les
modifications enregistrées dans le
Elle comprend cache de reprise dans les fichiers de
ִla shared pool : stocke les informations les reprise
plus récemment utilisées (e.g. requêtes ִSMON (processus System Monitor) :
SQL) vérifie la cohérence et redémarre la
ִle cache de données : stocke les données base de données après panne
les plus récemment utilisées ִPMON (processus Process Monitor) :
ִle cache de reprise : utilisé pour nettoie les ressources lors de l'echec
enregistrer les modifications apportées à la d'un processus
base de données ִCKPT : Synchronise et assure la
57 cohérence des données 58

Instance et Service NT
Création d'une instance
serveur Oracle = instance + BD
Pouvoir se connecter comme
Sous NT, à chaque serveur est
administrateur associé un service
Editer le fichier de paramètres Pour créer un service, il faut
init<sid>.ora utiliser l'outil ORADIM
Sous sqlplus, commande STARTUP ִpermet d'exécuter plusieurs
ִExemple : serveurs Oracle sur la même
machine
connect sys/oracle as sysdba
startup nomount
ִAttention au nombre de caractères
pfile=d:\data\initU01.ora < à 4 pour les noms de service (V8)
ִCréer une instance, e.g. nommée
Aucune vérification de cohérence à ce IF3
niveau ORADIM -NEW -SRVC OracleServiceIF3
[-SYSPWD sys_PWD]
Allocation de la SGA [-sid SRVCNAME]
[-MAXUSERS NUMBER]
[-STARTMODE AUTO, MANUAL]
[-PFILE FILENAME]
ִSupprimer une instance
ORADIM -DELETE -SID IF3
59 60

15
Estimer la taille de la
Le fichier de paramètres
SGA
 Paramètre obligatoire :
 dépend de la quantité de ִ db_name : idf de la bd, < à 8 charactères, pas de chiffre
comme 1er caractère
mémoire vive disponible  Paramètres communément modifiés:
 en général, on a : ִ control_files : nom des fichiers de contrôle
ִ compatible : version du serveur avec laquelle cette
ִ taille SGA = 40% taille RAM instance est compatible
ִ db_block_buffers : nombre de blocs mis en cache dans la

 Taille SGA = SGA (min. 50) plus maintenu 10g !


ִ shared_pool_size : taille en octet de la zone de partage
db_block_size * db_block_buffer (minimum à 3.500.000 avec V8, 70 000 000 avec 10g !)
+ shared_pool_size + log_buffer ִ log_buffer : Nombre d'octets alloués au cache de reprise
dans la SGA
Exemple : Soit 500 Mo de RAM ִ user_dump_dest : emplacement où les fichiers trace sont
créés
disponible => SGA = 200 Mo ִ processes : nombre max de processus du SE pouvant se
pour fixer les paramètres, dépend connecter simultanément à une instance
ִ sql_trace : active ou pas un espion pour chaque session
de la version d’Oracle ! utilisateur
ִ max_dump_file_size : taille max du fichier de trace
ִ 10g : ִ timed_statistics : active ou pas le minutage dans les
• db_cache_size = db_block_size * fichiers trace
db_block_buffer, ִ undo_management=MANUAL ou AUTO : délégation ou
• db_block_buffer plus maintenu pas des rollback segments à Oracle (depuis 9i)

62

Exemple de fichier de
Fichier de paramètres paramètres
Créer un fichier init<sid>.ora à
control_files=(D:\oracle\product\10.2.0\ora
partir d'un fichier existant data\Mais\control.001.ctl,
D:\oracle\product\10.2.0\oradata\Mais\contr
Editer le pour modifier certains ol.002.ctl)

paramètres db_name = mais


ִ choix difficiles, nombreux db_domain
db_block_size
=
=
insa-lyon.fr
4096
paramètres shared_pool_size = 100000000
undo_management = AUTO
Possibilité de créer un fichier
# define directories to store trace
binaire avec ordre CREATE # and alert files
#
SPFILE background_dump_dest=D:\oracle\product\10.2
.0\admin\Mais\bdump
ִExemple : user_dump_dest=D:\oracle\product\10.2.0\adm
CREATE SPFILE='/u01/oracle/dbs/test_spfile.ora' in\Mais\udump
FROM PFILE='/u01/oracle/dbs/test_init.ora';

63 64

16
Paramètres d'initialisation
Démarrage par étapes dynamiques

3 options lors du démarrage  Certains paramètres du fichier init.ora


peuvent
ִnomount : seule l'instance est démarrée ִ être modifiés base ouverte
ִmount : fichier de contrôle ouvert pour  la plupart !
cette instance ִ être modifiés base fermée
 en éditant le fichier init.ora
ִopen : tous les fichiers définis pour cette
 ex avec undo_management
instance dans le fichier de contrôle sont ִ ne jamais être modifiés
ouverts  ex avec db_block_size
Certaines commandes nécessitent que
la base soit dans une de ces options  Modification base ouverte
ִOrdre ALTER SYSTEM ou ALTER SESSION
ִétape NOMOUT pour la création de la base ִExemples :
de données ALTER SESSION SET SQL_TRACE=true;
• modifie seulement la valeur pour la session courante
ִétape MOUNT pour renommer des fichiers ALTER SYSTEM SET TIMED_STATISTICS=true;
de reprise, ... • modification permanente
ALTER SYSTEM SET SORT_AREA_SIZE=131072 DEFERRED;
• modification pour les autres sessions
 Possibilité de modification permanente si fichier binaire
de init.ora existe
ִ clause SCOPE = SPFILE ou MEMORY

65 66

La commande
Restauration d'instance STARTUP
Fait suite à un problème Syntaxe :
ִdu SE, de l'instance STARTUP [FORCE] [RESTRICT] [PFILE=filename]
ִdu matériel ... [EXCLUSIVE | PARALLEL | SHARED]
[ OPEN [RECOVER][DATABASE]
le processus SMON | MOUNT | NOMOUNT]
ִrestaure automatiquement l'instance
lorsque l'instance est redémarrée open : permet aux utilisateurs d'accéder à la
le cache des données est restaurée à partir base
du fichier de reprise mount : monte la base mais accès limités
ִles étapes sont : nomount : sga + processus arrière plan. Pas
rolling forward : restaure les données d'accès à la base
enregistrées dans les fichiers de reprise mais exclusive : seule cette instance accède la
non enregistrées dans le fichier de données base
ouverture de la base de données (accès parallel ou shared : avec server // Oracle
possible sur toutes les données non force : annule l'instance courante avant de
verrouillées) démarrer normalement
rolling back : les transactions non validées restrict : accès réservés aux utilisateurs
sont annulées ayant le privilège RESTRICTED SESSION
recover : démarre la restauration quand la
base démarre
67 68

17
La commande Vues dynamiques sur
SHUTDOWN les performances

Syntaxe : Entretenues par le serveur Oracle


SHUTDOWN [NORMAL | TRANSACTIONNAL
| IMMEDIAT | ABORT]
ִmises à jour automatiquement
ִimage fidèle du serveur
Mode d'arrêt A I T N
nouvelles connexions permises 0 0 0 0 Décrivent les structures du disque et
attend la fin des sessions en cours 0 0 0 1 de la mémoire
attend la fin des transactions en cours 0 0 1 1 Utiles pour le tuning des performances
force un point de synchronisation et ferme 0 1 1 1
Préfixées par V$
ִdéfinies à partir de tables normalisées
préfixées par X$
Temps d'arret : N -> T -> I -> A Accessible par l'administrateur à l'étape
NOMOUNT
V$FIXED_TABLE : les décrit toutes

69 70

BACKUPS, ARCHIVE, V$SQL


RESTAURATION V$SQLAREA
V$ARCHIVE V$SQLTEXT
Exemples V$ARCHIVED_LOG (V8) V$SQLTEXT_WITH_NEWLINES
V$ARCHIVE_DEST (V8) V$SQL_BIND_DATA (V8)
V$BACKUP V$SQL_BIND_METADATA (V8)

V$BACKUP_CORRUPTION (V8) V$SQL_CURSOR


SGA V$BACKUP_DATAFILE (V8) V$SQL_SHARED_MEMORY
ִV$PARAMETER, V$SGA, V$OPTION, V$BACKUP_DEVICE (V8) DATABASES et INSTANCES
V$ACTIVE_INSTANCES
V$PROCESS , V$SESSION , V$VERSION , V$BACKUP_PIECE (V8)
V$BACKUP_REDOLOG (V8) V$BGPROCESS
V$INSTANCE V$BH (V8)
V$BACKUP_SET (V8)
Fichiers : V$DELETED_OBJECT (V8) V$COMPATIBILITY
V$RECOVERY_FILE_STATUS V$COMPATSEG
ִV$THREAD , V$CONTROLFILE , V$RECOVERY_LOG V$COPY_CORRUPTION (V8)
V$DATABASE , V$DATAFILE , V$RECOVERY_STATUS V$DATABASE
V$RECOVER_FILE V$DATAFILE
V$DATAFILE_HEADER , V$LOGFILE
CACHE MANAGEMENT V$DATAFILE_COPY (V8)
Afficher les valeurs courantes des V$CACHE (V8) V$DATAFILE_HEADER (V8)
V$DBFILE
paramètres V$DB_OBJECT_CACHE
V$DBLINK
V$LIBRARYCACHE
ִSHOW PARAMETER control V$ROWCACHE V$DB_PIPES
ou V$SUBCACHE (V8) V$INSTANCE
ִselect name from V$PARAMETER CONTROL FILES V$LICENSE
V$OFFLINE_RANGE (V8)
where name like '%control%'; V$CONTROLFILE
V$CONTROLFILE_RECORD_S V$OPTION
ECTION (V8) V$SGA
CURSORS et SQL V$SGASTAT
V$OPEN_CURSOR V$TABLESPACE (V8)
V$VERSION
71 72

18
SQL*LOADER (Chargement V$LATCH_MISSES PERFORMANCE REDO LOGS
direct) V$LATCH_PARENT V$GLOBAL_TRANSACTION (V8) V$LOG
V$LOADCSTAT V$LOCK V$OBJECT_DEPENDENCY V$LOGFILE
V$LOADPSTAT (V8) V$LOCK_ACTIVITY V$SHARED_POOL_RESERVED V$LOGHIST
V$LOADTSTAT V$LOCK_ELEMENT V$SORT_SEGMENT V$LOG_HISTORY
FIXED Vues V$LOCKED_OBJECT V$SORT_USAGE (V8)
ROLLBACK SEGMENTS
V$FIXED_TABLE V$LOCKS_WITH_COLLISIONS V$STATNAME
V$ROLLNAME
V$FIXED_VIEW_DEFINITION V$PING V$SYSSTAT
V$ROLLSTAT
V$RESOURCE V$SYSTEM_CURSOR_CACHE
V$INDEXED_FIXED_COLUMN SECURITE et PRIVILEGES
V$RESOURCE_LIMIT (V8) V$SYSTEM_EVENT
I/O V$ENABLEDPRIVS
V$TRANSACTION_ENQUEUE (V8) V$TRANSACTION
V$FILESTAT V$PWFILE_USERS
V$_LOCK OPTION REQUETE
V$WAITSTAT SESSIONS
V$_LOCK1 PARALLELLE
Verrous V$ACCESS
Divers V$EXECUTION
V$BUFFER_POOL (V8) V$EXECUTION_LOCATION (V8) V$MYSTAT
V$TIMER
V$CACHE_LOCK V$PQ_SESSTAT V$PROCESS
V$TYPE_SIZE
V$CLASS_PING (V8) V$PQ_SLAVE V$SESSION
V$DLM_CONVERT_LOCAL (V8) V$_SEQUENCES (V8)
V$PQ_SYSSTAT V$SESSION_CONNECT_INFO
V$DLM_CONVERT_REMOTE (V8) Serveur MULTI-THREADED V$SESSION_CURSOR_CACHE
V$PQ_TQSTAT
V$DLM_LATCH (V8) et PARALLEL
PARAMETRES ORACLE V$SESSION_EVENT
V$DLM_MISC (V8) V$CIRCUIT
V$NLS_PARAMETERS V$SESSION_LONGOPS (V8)
V$ENQUEUE_LOCK (V8) V$DISPATCHER V$SESSION_OBJECT_CACHE (V8)
V$DISPATCHER_RATE (V8) V$NLS_VALID_VALUES
V$EVENT_NAME V$SESSION_WAIT
V$MTS V$PARAMETER
V$FALSE_PING V$SESSTAT
V$QUEUE V$SYSTEM_PARAMETER
V$FILE_PING (V8) V$SESS_IO
V$LATCH V$REQDIST
V$LATCHHOLDER V$SHARED_SERVER
V$LATCHNAME V$THREAD
V$LATCH_CHILDREN

73 74

Mode
"restricted session" Fermeture de sessions

Utiliser l'option RESTRICT au Identifier la session à fermer


démarrage de l'instance ִinterroger la vue V$SESSION
ִl'accès est ainsi limité dès le début ִExemple :
select sid, serial#
from V$SESSION
Utiliser ALTER SYSTEM where username='SCOTT';
ִpour rendre l'accès à une instance limitée
ִexemples : Supprimer la avec un ordre ALTER
ALTER SYSTEM ENABLE RESTRICTED SESSION SYSTEM
ALTER SYSTEM DISABLE RESTRICTED
SESSION
ִExemple :
ALTER SYSTEM KILL SESSION '7,117';

75 76

19
Informations sur
Fichiers de trace l'instance

Remplis par le serveur et les processus Interroger la vue V$INSTANCE


en arrière plan ִutiliser la commande describe
Tout y est consigné ִfaire des requêtes
ִconstitue un journal chronologique des
messages et des erreurs
commande SHOW
Intérêts :
ִpermet de détecter les erreurs internes et
les corruptions de blocs
ִsurveiller (espionner) les opérations sur la
base de données
Devrait se retrouver dans le dossier :
ִOracle\10.2.0\admin\IF3\bdump
Pour les traces de l’utilisateur
ִ Oracle\10.2.0\admin\IF3\udump
Possible d'activer d’autres traces
ִavec ALTER SESSION
ִle paramètre SQL_TRACE
77 78

Prérequis
Base de données
Oracle Un compte autorisé DBA
ִtous les privilèges sur le système
d'exploitation
Une mémoire suffisante pour le
démarrage de l'instance
ִSGA
ִexécutable Oracle
ִles processus
Un espace disque suffisant pour
stocker la base de données
ִau moins 1 fichier de données (2 sur 10g)
ִau moins 2 fichiers de reprise
ִau moins 1 fichier de contrôle

Pour le disque, il faut estimer ...


79 80

20
BD Oracle : Rappel Emplacements des
fichiers
désignée par un nom DB_NAME Conserver au moins 2 copies du
ִsouvent le même que celui de l'instance fichier de contrôle sur 2 machines
ִreprésente les structures physiques des et/ou disques différents
données => multiplexer
se compose de fichiers du SE Multiplexer les fichiers de reprise
ִfichiers de données (>=1 ou 2 ☺) Séparer les fichiers de données afin
stocke le dictionnaire des données, les ִd'éviter la fragmentation de la base
objets utilisateurs et les « images avant »
séparer les données applicatives ou
des données
temporaires dans différents tablespaces
ִfichiers de reprise (redo log) (>=2)
ִminimiser les accès disques ou E/S
stocke toutes les modifications apportées à
séparer les tables et les index dans
la base de données (pour la reconstruire en
différents tablespaces
cas de panne)
ִfichiers de contrôle (>=1) OFA (Optimal Flexible Architecture)
contient les informations nécessaires à la ִconçu pour optimiser l'organisation des
mise à jour et à la vérification de l'intégrité fichiers Oracle sous Unix
des données.
ִExiste aussi sur NT
ִAutres fichiers :
fichier de paramètres, fichier mot de passe,
fichiers de reprise archivés 81 82

Création d'une base : Création manuelle


Remarques d'une base de données

Sous Unix : Choisir un nom unique pour l'instance


ִCréation automatique au cours d'une et la base de données
installation Choisir un jeu de caractères
ִCréation manuelle après installation
Définir les variables du SE
Préparer le fichier des paramètres
Sous Windows :
ִCréation automatique au cours d'une
Créer un fichier mot de passe
installation Démarrer l'instance
ִCréation via Oracle Database Assistant ou Créer la base de données
création manuelle ִ Deux groupes de fichiers logs
ִDeux tablespaces
En cas de création manuelle, utiliser SYSTEM avec éventuellement EXTENT
des scripts de création (cf TP) MANAGEMENT LOCAL
SYSAUX
Exécuter les scripts pour générer le
dictionnaire de données
83

21
Démarrage de l'instance Après la création
et création de la BD de la base de données

Se connecter en tant que SYSDBA La base contient :


Démarrer l'instance à l'étape ִles fichiers de données constituant les
NOMOUNT tablespaces SYSTEM et SYSAUX
STARTUP NOMOUNT PFILE=d:\data\initU01.ora ִles fichiers de contrôle et de reprise
Création de la base de données ִl'utilisateur SYS et SYSTEM
ִOrdre CREATE DATABASE ִle rollback segment SYSTEM
CREATE DATABASE MAIS
ִTables X$ + vues V$
USER SYS IDENTIFIED BY adm
USER SYSTEM IDENTIFIED BY adm Pour modifier la base de données
LOGFILE
GROUP 1 ('D:\oracle\product\10.2.0\oradata\Mais\log1a.log') SIZE 10M, ִordre ALTER DATABASE
GROUP 2 ('D:\oracle\product\10.2.0\oradata\Mais\log2a.log') SIZE 10M
MAXLOGFILES 5 ִExemple pour ouvrir une base de données
MAXLOGMEMBERS 5
MAXLOGHISTORY 1
qui est à l'état NOMOUNT :
MAXDATAFILES 100 ALTER DATABASE [MOUNT | OPEN]
MAXINSTANCES 1
CHARACTER SET WE8ISO8859P1
DATAFILE 'D:\oracle\product\10.2.0\oradata\Mais\system01.dbf' SIZE 160M
SYSAUX DATAFILE 'D:\oracle\product\10.2.0\oradata\Mais\sysaux01.dbf'
SIZE 50M;
En particulier, elle ne contient pas
encore le dictionnaire de données
 NB : pas de vue V$ (ni sur le
85 dictionnaire) pour la BD oracle 86

Dictionnaire de Objectifs
données et
Packages standards Sur le dictionnaire :
ִConstruction des vues du dictionnaire de
données
script catalog.sql
ִUtilisation du dictionnaire
par exemple, pour l'évaluation sémantique des
requêtes

Sur les packages


ִPréparation de l'environnement PL/SQL à
l'aide de scripts administratifs
script catproc.sql
ִAdministration des procédures stockées et
des packages

87 88

22
Dictionnaire de
données Vues du dictionnaire
Le préfixe USER
Fournit des informations sur
ִUSER_XXX : objets qui appartiennent
ִla structure logique et physique d'une à l'utilisateur
base de données
ִExemple :
ִles noms, définitions, et allocation USER_TABLES : contient toutes les tables
d'espace des objets des schémas d'un utilisateur
ִles contraintes d'intégrité Le préfixe ALL
ִles utilisateurs, les privilèges de la base ִALL_XXX : objets qui sont accessibles
ִl'audit aux utilisateurs (grâce colonne
Composé de tables et de vues : OWNER)
ִLes tables : Le préfixe DBA
tables normalisées ִDBA_XXX : objets de toute la base
• exemple : IND$, OBJ$ ...
ִAccédées par
créées à partir du script sql.bsq
l'administrateur ou
ִLes vues : un utilisateur ayant le privilège système
simplifient l'accès aux tables SELECT ANY TABLE
créées à partir du script catalog.sql
Ordre d'inclusion :
89 ִUSER <= ALL <= DBA 90

VUES RELATIVES AUX OBJETS


Exemples de vues D'UN UTILISATEUR

USER_CATALOG ou CAT Liste des Tables, Vues, Synonymes


Vues Description TABLE_NAME
et séquences que possède l’utilisateur.

TABLE_TYPE
dictionary Généralités USER_OBJECTS ou OBJ Liste des Objets appartenant à l’utilisateur.
dict_columns OBJECT_NAME OBJECT_ID
OBJECT_TYPE CREATED
dba_tables Informations sur les objets LAST_DDL_TIME TIMESTAMP
STATUS COMMENTS
dba_objects utilisateurs, e.g. tables, USER_AUDIT_OBJECT Trace des commandes exécutées sur des
dba_lobs colonnes … objets appartenant à l’utilisateur.
USER_AUDIT_SESSION Trace des connexions et des déconnexions
dba_tab_constraints de l’utilisateur.
dba_users Informations sur les USER_AUDIT_STATEMENT Trace des commandes suivantes:GRANT,
REVOKE, AUDIT, NOAUDIT, et
dba_sys_privs privilèges et les rôles ALTER SYSTEM
dba_roles utilisateurs USER_TAB_COLUMNS ou COLS Liste des colonnes des tables, vues ou
cluster créés par l’utilisateur
dba_extents Allocation d’espace pour USER_COL_GRANTS Liste des Autorisations sur les colonnes pour lesquelles
dba_free_space les objets de la base l’utilisateur est le propriétaire ou a l’autorisation
USER_COL_GRANTS_MADE
dba_segments Liste des Autorisations attribuées par cet utilisateur
dba_rollback_segs Structure générale de la sur les colonnes ou tables ou vues lui appartenant.
USER_CONSTRAINTS Liste des Contraintes définies sur les tables de
dba_data_files base l’utilisateur.
dba_tablespaces OWNER CONSTRAINT_NAME
CONSTRAINT_TYPE TABLE_NAME
dba_audit_trail Information sur l’audit SEARCH_CONDITION R_OWNER
R_CONSTRAINT_NAME DELETE_RULE
dba_audit_objects STATUS
dba_audit_obj_opts

91 92

23
USER_CONS_COLUMS Listes des Colonnes intervenant dans la définition des
contraintes sur les tables de l'utilisateur
USER_DEPENDENCIES Listes des dépendances entre tables ou vues et VUES RELATIVES AUX OBJETS
procédures, fonctions et packages
USER_ERRORS Listes des Erreurs courantes relatives aux procédures
ACCESSIBLES A UN
fonctions ou corps de package. UTILISATEUR
USER_IND_COLUMNS Liste des colonnes, des index définis sur les tables de
l'utilisateur.
USER_INDEXES ou IND Liste des index créés par l'utilisateur ALL_CATALOG Liste de toutes les Tables, vues, synonymes et
USER_OBJECTS ou OBJ Tous ceux appartenant à l'utilisateur séquences accessibles à l'utilisateur.
OWNER TABLE_NAME
USER_RESOURCE_LIMITS Description des valeurs limites des ressources pour
TABLE_TYPE
cet utilisateur.
ALL_COL_COMMENTS Liste des commentaires relatifs aux colonnes des tables
USER_ROLE_GRANTS Liste des rôles attribués à cet utilisateur. et vues accessibles à l'utilisateur.
USER_SEQUENCES ou SEQ Liste des séquences créées par l'utilisateur ALL_COL_GRANTS Liste des colonnes pour lesquelles l'utilisateur est
USER_SOURCE Liste des textes des procédures packages, fonctions et autorisé à accéder.
corps de package créés par l'utilisateur. ALL_CONSTRAINTS Liste des contraintes définies sur les tables accessibles à
USER_SNAPSHOTS Liste des snapshots créés par l'utilisateur. l'utilisateur.
USER_SYNONYMS ou SYN Liste des synonymes privés crées par l'utilisateur. ALL_CONS_COLUMNS Liste des colonnes intervenant dans la définition des
contraintes définies sur les tables accessibles à l’utilisateur.
USER_SYS_GRANTS Liste des privilèges systèmes attribués à cet utilisateur.
ALL_DEPENDENCIES Liste des dépendances entre tables ou vues et procédures,
USER_TAB_COMMENTS Liste de commentaires relatifs aux tables et fonctions et package, ces objets étant accessibles à
vues de l'utilisateur. l’utilisateur.
USER_TAB_GRANTS_MADE Liste des Autorisations sur les objets appartenant à ALL_ERRORS Liste des erreurs courantes relatives aux procédures,
l'utilisateur. fonctions et packages, ces objets étant accessibles à
l’utilisateur.
USER_TAB_GRANTS_RECD Liste des objets sur lesquels l'utilisateur a reçu une
autorisation. ALL_IND_COLUMNS Liste des colonnes des index définis sur les tables
accessibles à l’utilisateur.
USER_TABLES ou TABS Liste des tables créées par l'utilisateur.
ALL_INDEXES Liste des index définis sur les tables accessibles à
USER_TABLESPACES Liste des tablespaces accessibles à cet utilisateur. l’utilisateur.
USER_TRIGGERS Liste des triggers créés par l'utilisateur. ALL_OBJECTS Liste des objets accessibles à l'utilisateur.
USER_TS_QUOTAS Description des quotas de l'espace des tablespaces OWNER OBJECT_NAME
attribués à l'utilisateur. OBJECT_ID OBJECT_TYPE
USER_USERS Informations sur ce user. CREATEDLAST_DDL_TIME
TIMESTAMP STATUS
USER_VIEWS Liste des vues créées par cet utilisateur.
ALL_SEQUENCES Liste des séquences accessibles à l'utilisateur.
CONSTRAINTS_DEFS Liste des définitions de contraintes relatives aux tables
ALL_SOURCE Liste des textes de procédures, fonctions et corps de
accessibles à l'utilisateur. package accesibles à l'utilisateur.

93 94

VUES RELATIVES AUX


ADMINISTRATEURS

DBA_2PC_PENDING Liste des transactions réparties ayant échoué


lors de la phase de préparation.
ALL_SNAPSHOTS Liste des snapshots accessibles à l'utilisateur.
DBA_2PC_NEIGHBORS Connexions vers ou à partir de bases distantes pour les
ALL_SYNONYMS Liste des synonymes accessibles à l'utilisateur. traitements des transactions réparties.
ALL_TAB_COLUMNS Liste des colonnes, des tables, vues ou clusters DBA_AUDIT_EXISTS Trace de la commande AUDIT EXISTS.
accessibles à l'utilisateur.
DBA_AUDIT_OBJECT Trace les commandes exécutées sur tous les
ALL_TAB_COMMENTS Liste des commentaires relatifs aux tables et vues objets de la base.
accessibles à l'utilisateur.
DBA_AUDIT_SESSION Trace les connexions et des déconnexions de
ALL_TAB_GRANTS Liste des autorisations sur les tables ou vues pour tous les utilisateurs.
lesquelles l'utilisateur est autorisé explicitement.
DBA_AUDIT_STATEMENT Trace les commandes suivantes: GRANT,
ALL_TAB_GRANTS_MADE REVOKE, AUDIT, NOAUDIT, et ALTER
Liste des autorisations attribuées ou reçues par SYSTEM par tous les utilisateurs.
l’utilisateur.
DBA_CATALOG Liste des Tables, Vues, Synonymes et séquence de la base.
ALL_TAB_GRANTS_RECD
DBA_CLUSTERS Liste de tous les clusters de la base.
Liste des objets sur lesquels l'utilisateur a reçu une
DBA_CLU_COLUMNS Description de la correspondance entre colonnes d'une
autorisation.
table et colonnes d'un cluster.
ALL_TABLES Liste des tables accessibles à l'utilisateur.
DBA_COL_COMMENTS Liste des commentaires relatifs aux colonnes de toutes les
ALL_TRIGGERES Liste des triggers accessibles à un utilisateur. tables et vues de la base.
ALL_USERS Liste des Informations sur les utilisateurs. DBA_COL_GRANTS Liste des Autorisations sur toutes les colonnes de la base.
ALL_VIEWS Liste des vues accessibles à l'utilisateur. DBA_CONSTRAINTS Liste de toutes les contraintes définies sur les tables.
DBA_CONS_COLUMNS Liste des colonnes intervenant dans la définition de toutes
les contraintes de la base.
DBA_DATA_FILES Description de tous les fichiers de la base.
DBA_DB_LINKS Liste de tous les liens de la base.
DBA_DEPENDENCIES Liste des dépendances entre tables ou vues et procédures,
fonctions et packages de la base.
DBA_ERRORS Liste des erreurs courantes relatives aux procédures
fonctions ou corps de package de la base.
DBA_EXP_FILES Description des fichiers d'exportation.
DBA_EXP_OBJECTS Description des objets ayant été importés d'une façon
95 incrémentale. 96

24
DBA_EXP_VERSION Numéro de version de la dernière session
d'importation. VUES DYNAMIQUES
DBA_EXTENTS Liste des extensions de tous les tablespaces de la base.
DBA_FREE_SPACE Description des extensions libres dans tous les
tablespaces de la base.
DBA_IND_COLUMNS Liste des colonnes de tous les index définis sur toutes
les tables de la base.
DBA_INDEXES Liste des index de la base. V$ACCESS Liste des objets verrouillés actuellement.
DBA_OBJET_AUDIT_OPTS Liste des options d'audit pour toutes les tables et V$BGPROCESS Description de l’activité des processus
vues de la base. d’arrière plan.
DBA_OBJECTS Liste de tous les objets de la base. V$DATABASE Description de la base de données à partir
DBA_PROFILES Liste de s profils attribués aux utilisateurs. du fichier de contrôle.
DBA_ROLE_GRANTS Liste des rôles attribués aux utilisateurs, et à d'autres rôles. V$DATAFILE Description de fichiers de données à partir
DBA_ROLES Liste de tous les rôles dans la base. du fichier de contrôle.
DBA_ROLLBACK_SEGS Liste des segments d'annulation de la base V$DISPATCHERS Description de l'activité des processus
DBA_SEGMENTS Description de tous les paramètre de stockage dispatchers.
de tous les segments de la base. V$FILESTAT Statistiques sur le opérations de
DBA_SEQUENCES Liste de toutes les séquences de la base. lecture/écriture sur un fichier.
DBA_SOURCE Liste des textes de toutes les procédures, packages, V$LOGFILE Description des fichiers de reprise à partir
fonctions et corps de package du fichier de contrôle.
DBA_SNAPSHOTS Liste de tous les snapshots de la base. V$PARAMETER Description des valeurs actuelles des
DBA_SNAPSHOTS_LOGS Liste de tous les snapshots logs dans la base. paramètres d’initialisation.
DBA_SYNONYMS Liste de tous les synonymes de la base. V$PROCESS Description des processus actifs.
DBA_SYS_GRANTS Liste des privilèges systèmes attribués aux V$SESSION Description des sessions courantes.
utilisateurs et aux rôles.
V$SGA Description sommaire de la SGA.
DBA_TAB_COLUMNS Liste des colonnes des tables, vues ou cluster
V$GASTAT Description détaillée de la SGA.
DBA_TAB_COMMENTS Liste des commentaires relatif aux tables et vues
V$SHARED_SERVERS Description des serveurs partagés.
DBA_TAB_GRANTS Liste d'autorisations sur tous les objets de la base.
V$TRANSACTION Description des transactions en cours.
DBA_TABLES Liste des tables de la base.
DBA_TABLESPACES Liste des tablespaces de a base.
DBA_TRIGGERS Liste des triggers de la base.
DBA_TS_QUOTAS Description des quotas de l'espace des tablespaces
DBA_USERS Informations sur tous les utilisateurs.
DBA_VIEWS Liste des vues de la base.

97 98

Exemples de packages
Scripts administratifs fournis par Oracle

Information catalogue et dictionnaire DBMS_LOB


de données ִopérations sur type BLOB et CLOB
ִcat*.sql DBMS_SESSION
ִexemple : catrman.sql pour l'utilitaire ִgénère commandes SQL tq
Recovery Manager ALTER SESSION o u SET ROLE
Spécification des packages de la base DBMS_UTILITY
ִdbms*.sql ִroutines utilitaires
Code compressé d'un package base de DBMS_SPACE
données ִinformations relatives à la disponibilité de
ִprvt*.plb l'espace des segments.
Vues et tables pour les utilitaires de la DBMS_ROWID
base ִfournit les informations sur le ROWID
ִutl*.sql DBMS_SHARED_POOL
ִexemple : utlsampl.sql pour tables de ִconserve et retire des objets dans la
démonstration SHARED_POOL
99 100

25
Requêtes sur les objets
stockés

Interroger la vue du dictionnaire


DBA_OBJECTS
ִcolonnes OWNER, OBJECT_NAME,
OBJECT_TYPE, STATUS (valid ou invalid)
ִexemple :
select object_name, object_type, status
from dba_objects
where object_name like 'DBMS_%';
ou
commande DESCRIBE
ִexemples :
describe dbms_session
describe dbms_session.set_role

101

26
Partie 3 Fichiers de contrôle

Structure physique
de stockage

105 106

Utilisation du fichier de
Objectifs contrôle

Explication sur les utilisations du fichier Fichier binaire


de contrôle Sert pour la base de données
ִlors du démarrage normal
Examen du contenu du fichier de A chaque fois qu'une instance monte une base
de données
contrôle Renseigne l'emplacement des fichiers de
données et des fichiers de reprise
ִlors du démarrage après panne
Récupération de l'information sur le
Contient les informations nécessaires à la
fichier de contrôle remise en état de la base de données
ִpour le bon fonctionnement
continuellement mis à jour
Multiplexage du fichier de contrôle
doit être disponible quand une base de
données est montée ou ouverte
Si un fichier de contrôle devient
indisponible => la base ne fonctionne
pas correctement
107 108

27
Contenu du fichier de Détails du fichier de
contrôle contrôle
Paramètres influençant sa taille :
Le nom et l'identification de la base de
ִMAXLOGFILES
données
ִMAXLOGMEMBERS
le nom et l'emplacement des fichiers ִMAXLOGHISTORY
ִde données ִMAXDATAFILES
ִde reprise ִMAXINSTANCES
le nom des tablespaces Requêtes sur le fichier de contrôle
La date et l'heure de la création de la ִV$CONTROLFILE
base de données NAME
ִV$PARAMETER
le numéro de séquence du fichier de NAME
reprise courant VALUE
informations sur le dernier point de ִV$CONTROLFILE_RECORD_SECTION (V8)
TYPE
synchronisation
RECORDS_SIZE
historique du journal RECORDS_TOTAL
RECORDS_USED

109 110

Multiplexage
du fichier de contrôle

Vu son importance pour une base Fichiers de reprise


Oracle, il faut prévenir des défaillances
disques ou suppressions malheureuses
Oracle gère alors plusieurs copies du
même fichier
ִpar exemple, sur des disques différents
paramètre CONTROL_FILES dans le
fichier d'initialisation
ִdans initSID.ora
ou redo log files
control_files = (d:\data\ctl1SID.ora, ou journaux
e:\data\ctl2SID.ora)
Permet d'éviter un unique point
d'échec

111 112

28
Utilisation des fichiers
Objectifs de reprise (rappel)

Explication sur l'utilisation des fichiers Idée de base


de reprise (journaux) ִenregistrer toutes les modifications
Récupération de l'information sur le apportées aux données pour minimiser les
problèmes liés aux pannes
fichier de reprise et sur l'archivage
Le serveur Oracle met à jour les
Contrôle des basculements et des
fichiers de reprise
points de synchronisation des fichiers
ִbuffer de reprise
de reprise
ִprocessus LGWR
Multiplexage et maintenance de
fichiers de reprise Ne sont utilisés qu'en cas d'échec
d'une instance pour restaurer des
données validées non écrites dans
les fichiers de données

113 114

Groupes et membres Initialisation


de fichiers de reprise des fichiers de reprise
Groupes de fichiers de reprise : Générés lors de la création de la
ִensemble de copies identiques de fichiers base de données
de reprise online Paramètres
Un membre est un élément d'un ִMAXLOGFILES : nombre max de
groupe, i.e. un fichier de reprise groupe dans une base de données
LGWR écrit simultanément sur chaque (<255)
membre du groupe ִMAXLOGMEMBERS : nombre max de
membre par groupe
ִtous les membres d'un groupe possèdent
un numéro de séquence log ִLOG_FILES (dans init<sid>.ora) :
sert d'identifiant
nombre max de fichiers de reprise à
le numéro courant est stocké dans le fichier
ouvrir :
de contrôle doit être inférieur à
MAXLOGFILES * MAXLOGMEMBERS
Les membres d'un groupe sur des
disques différents
au moins 2 groupes

115 116

29
Point de
Rappel synchronisation
Serveur Oracle enregistre Un point de synchronisation se produit:
séquentiellement toutes les ִquand LGWR change de groupe courant
modifications dans le buffer de ִquand une instance s'arrête (N,T ou I)
reprise circulaire de la SGA ִavec les paramètres d'initialisation
LOG_CHECKPOINT_INTERVAL
Transfert du buffer vers le groupe
LOG_CHECKPOINT_TIMEOUT
courant de reprise par LGWR
ִcommande de l'administrateur
ִquand un commit est exécuté ALTER SYSTEM SWITCH LOGFILE
ִquand le buffer est rempli au 1/3 ALTER SYSTEM CHECKPOINT GLOBAL
ִlors d'un délai d'attente du LGWR (3s) • plus rapide, n'implique pas de switch logfile

ִavant que DBWR n'écrive les blocs modifiés ִSauvegarde d'un tablespace activé ou
du buffer cache de données dans les quand un tablespace est désactivé
fichiers de données Actions faites :
LGWR écrit séquentiellement dans les ִtous les blocs modifiés du cache de
fichiers de reprise données qui sont aussi traités par le cache
ִorganisation circulaire des groupes de reprise sont écrits par DBWR
ִquand un groupe est plein, on passe au ִle processus en arrière plan CKPT met à
suivant jour les fichiers de contrôle pour signaler
117 son aboutissement 118

Archivage
Archivage
des fichiers de reprise
Dépend de la politique locale vis à vis
Assure une cohérence parfaite des
des données, i.e.
données en cas de panne
ִUne perte des données peut-elle être
envisagée ? Processus en arrière plan ARCH
• Oui ? Non ? ִdéclenché à chaque basculement
ִSi oui, quelle est la durée maximale Archivage
tolérable ?
• 1 jour ? 1 semaine ?
ִsoit manuel
c'est à l'administrateur de déclencher ou pas un
Décision importante de l'administrateur archivage des fichiers de reprise
mode ARCHIVELOG • ALTER SYSTEM ARCHIVE LOG
• fichiers de reprise sont archivés • pas conseillé par Oracle
– permet de garder toutes les modifications ִsoit automatique
de la base
paramètre de l'instance
mode NOARCHIVELOG LOG_ARCHIVE_START=true
• fichiers de reprise sont écrasés (quand une
boucle est faite)
dans init.ora, voir aussi paramètres :
• LOG_ARCHIVE_DEST
– On accepte de perdre en cas de panne des
modifications • LOG_ARCHIVE_FORMAT

ִDistinction entre les fichiers de reprise ִpossibilité de les mutilplexer


online et offline
119 120

30
Requêtes sur les
fichiers de reprise

Sur l'archivage :
ִSous SQLPlus :
ARCHIVE LOG LIST
ִInterroger les vues
V$DATABASE
• name, log_mode
V$INSTANCE
• archiver
V$LOG_HISTORY, V$ARCHIVED_LOG,
V$ARCHIVE_DEST
sur les groupes
V$THREAD
• groups, current_group#, sequence#

Sur les membres


V$LOG
• group#, members, status, sequence#, bytes

121 122

Modification
de fichiers de reprise Suppression
Ajout de groupes
ִALTER DATABASE ADD LOGFILE
Suppression de groupes de fichiers de
('D:\data\DISK3\log3a.rdo', reprise
'D:\data\DISK4\log3b.rdo') size 150 K; ALTER DATABASE DROP LOGFILE
GROUP 3
Ajout de membres
ִALTER DATABASE ADD LOGFILE MEMBER Suppression de membres fichiers de
'D:\data\DISK3\log1b.rdo' TO GROUP 1, reprise
'D:\data\DISK3\log2b.rdo' TO GROUP 2;
ALTER DATABASE DROP LOGFILE
 Déplacement des fichiers de reprise MEMBER 'D:\data\DISK3\log2b.rdo'
1. Arrêter la base de données ִLe groupe doit être inactif
2. Copier les fichiers de reprise au nouvel ִun autre membre du groupe doit exister
emplacement ִSi mode ARCHIVELOG et que le groupe du membre
3. Monter la base de données n'a pas été archivé, opération non permise.
4. Exécuter un ordre  Suppression des contenus des fichiers
ALTER DATABASE [db] RENAME FILE
ALTER DATABASE CLEAR LOGFILE
['file' [, 'file'] … TO ['file' [, 'file'] … 'D:\data\DISK3\log2a.rdo'
5. Ouvrir la base de données
(6. supprimer l’ancien fichier)

123 124

31
Objectifs

Partie 4  Faire le lien entre structure


physique et logique
ִ via les fichiers de données

Comprendre les moyens logiques


de structuration
ִ Segment
Structure logique de
stockage
 Etude de deux segments
particuliers
ִ Segment rollback
ִ Segment temporaires

125 126

Objectifs
Fichiers de données
et tablespaces Description de la structure logique de
la base de données
Création des tablespaces
Changement de la taille des
tablespaces par différentes méthodes
Changement du statut et stockage de
l'initialisation des tablespaces
Déplacement des tablespaces
Préparation des tablespaces requis

127 128

32
Utilisation du
Généralités tablespace

Base de données Oracle Contrôle de l'allocation d'espace et


ִstructure physique affectation de quotas aux utilisateurs
fichier de contrôle Contrôle de disponibilité des données
fichiers de reprise
par la mise online ou offline des
fichiers de données
tablespaces
ִstructure logique
tablespace  Distribution du stockage des données
segment sur plusieurs dispositifs
extent ִpour améliorer les E/S
bloc
ִpour réduire la contention sur un seul
=> Nécessaire de comprendre ces 2 niveaux disque
de représentation
Exécution de sauvegarde partielle
Conservations de volumes importants
de données statiques sur des
dispositifs en lecture seule.

129 130

Tablespaces Fichiers de données

Appartient à une seule base de Un ou plusieurs fichiers de données


données sont associés à un tablespace
Chaque tablespace comprend un ou ִun fichier de données ne peut appartenir
plusieurs fichiers SE qu'à un tablespace
ִun serveur Oracle crée toujours un peu
Les tablespaces peuvent être mis plus d'espace disque que ce qui est
on/off line lors de l'exécution de la spécifié
base de données
ִexcepté le tablespace SYSTEM
Informations quantitatives :
ִet un tablespace avec un rollback segment
actif ִnombre maximum de fichier par
tablespace = 1023
Possibilité de basculer entre le statut
ִnombre maximum de tablespace par base
Read/Write et le statut Read seul. de données : 64 000

131 132

33
Lien Structure logique
segments/extents/blocs

Segments
ִEspace alloué à un type spécifique
de structure logique de stockage
dans un tablespace
segments de table, segments d'index,
segment temporaire, rollback segment
Extents
ִEnsemble de blocs contigus.
ִChaque type de segment est
composé d'un ou plusieurs extents
Blocs de données
ִcontient un ou plusieurs blocs de
fichier physique alloué à partir d'un
fichier de données existant
ִplus petite unité d'E/S
ִ sa taille vaut DB_BLOC_SIZE

133 134

Tablespace SYSTEM et
non-SYSTEM

 Tablespace  Tablespace non-


SYSTEM contient: SYSTEM contient:
ִinformations ִles rollback segments
relatives au ִles segments
dictionnaire de temporaires
données ִles données applicatives
ִUn rollback ִles indexes applicatifs
segment SYSTEM

 S'il en existe un
seul, c'est lui !  Introduisent plus
de souplesse dans
l'administration
 Ne devrait pas
contenir de
données
utilisateurs

 Depuis 10 g,
tablespace SYSAUX
est nécessaire

135 136

34
Paramètres de
Syntaxe stockage

 CREATE TABLESPACE nom


Paramètres qui influent sur
DATAFILE file SIZE integer [K|M] l'allocation d'espace de segment
[autoextend_clause] ִINITIAL : taille du 1er extent (min à
[, file [autoextend_clause] 2*DB_BLOC_SIZE, par défaut à 5 blocs)
[MINIMUM EXTENT integer [K|M]]
ִNEXT : taille du suivant (min à 1 bloc, par
[DEFAULT storage_clause]
défaut à 5 blocs)
[PERMANENT | TEMPORARY]
[ONLINE | OFFLINE] ִMINEXTENTS : nombre d'extents alloués lors
de la création du segment (min à 1).
ִMAXEXTENTS : nombre maximum d'extent
 storage_clause ::= STORAGE (
d'un segment (min à 1, par défaut dépend de
[INITIAL integer [K|M]]
la taille du bloc, i.e. DB_BLOC_SIZE, max
[NEXT integer [K|M]]
=UNLIMITED)
[MINEXTENTS integer]
[MAXEXTENTS [integer | UNLIMITED] ִPCTINCREASE : % de croissance de la taille
[PCTINCREASE integer] ) de l'extent calculée par :
Taille du nième extent
= NEXT*(1+PCTINCREASE/100)^(n-2)
 autoextend_clause ::= AUTOEXTEND minimum à 0
[OFF | ON valeur par défaut à 50
[NEXT integer [K|M] ] valeur calculée arrondie (multiple de 5 blocs).
[MAXSIZE
[UNLIMITED | integer [K|M]]]]

137 138

Tablespaces Augmenter la capacité


temporaires de stockage

Utilisé pour les opérations de tri Deux façons de procéder :


ִpar les segments de tri (= segments ִAjouter des fichiers de données au
temporaires) tablespace
Ne peut pas contenir d'objets ALTER TABLESPACE app_data
ADD DATAFILE
permanents 'd:\data\DISK5\app03.dbf' SIZE 200M;
Exemple :
CREATE tablespace tri ִModifier la taille des fichiers de données
DATAFILE '/DISK2/sortO1' SIZE 50M existants
MINIMUM EXTENT 1M
DEFAULT STORAGE ( Automatiquement avec la clause AUTOEXTEND
INITIAL 2M ALTER TABLESPACE app_data
ADD DATAFILE
NEXT 2M
MAXEXTENTS 500 'd:\data\DISK6\app04.dbf' SIZE 200M
AUTOEXTEND ON
PCTINCREASE 0)
NEXT 10M MAXSIZE 500M;
TEMPORARY;
Manuellement avec la commande
ALTER DATABASE
ALTER DATABASE DATAFILE
'd:\data\DISK5\app02.dbf' RESIZE 2M;

139 140

35
Déplacement
Statut OFFLINE de fichiers de données

Les données d'un tablespace 1) BD ouverte


offline ne sont plus accessibles ִLe tablespace concerné doit être offline
ִLes fichiers de données cibles doivent
ִL'administrateur peut sauvegarder
exister (commandes SE)
cette partie des données sans
ִAvec ALTER TABLESPACE :
arrêter le fonctionnement du reste ALTER TABLESPACE app_data
de la base RENAME DATAFILE
'd:\data\ DISK4\app01.dbf' TO
Ne peuvent jamais être mis offline 'd:\data\DISK5\app01.dbf'
ִle tablespace SYSTEM 2) BD fermée
ִtout tablespace avec des rollbacks ִArrêter puis monter la base de
segments actifs données
Exemple : ִUtiliser l'ordre ALTER DATABASE
ALTER DATABASE
ALTER TABLESPACE app_data RENAME FILE
OFFLINE; 'd:\data\DISK1\system01.dbf' TO
'd:\data\ DISK2\system01.dbf' ;

141 142

Suppression d'un Informations


tablespace sur les tablespaces
Requêtes sur la vue DBA_TABLESPACES
Syntaxe : • TABLESPACE_NAME
DROP TABLESPACE tablespace • NEXT_EXTENT
[INCLUDING CONTENTS • MAX_EXTENTS
[CASCADE CONSTRAINTS]] ; • PCT_INCREASE
INCLUDING CONTENTS : supprime tous les • MIN_EXTLEN
segments du tablespace • STATUS
CASCADE CONSTRAINTS : supprime les • CONTENTS
contraintes d'intégrité référentielle des tables
définies dans un autre tablespace qui Informations sur les fichiers de
référencent une table du tablespace à données
supprimer
Requêtes sur la vue DBA_DATA_FILES
Un tablespace contenant encore des • FILE_NAME
données ne peut être supprimé sans • TABLESPACE_NAME
• BYTES
l'option INCLUDING CONTENTS
• AUTOEXTENSIBLE
Ne supprime que les pointeurs de • MAXBYTES
fichiers du fichier de contrôle • INCREMENT_BY

=> les fichiers de données existent


toujours
143 144

36
Informations (2) Quelques conseils

Informations sur les fichiers de Séparez les données utilisateurs des


données et les tablespaces à partir du données du dictionnaire
fichier de contrôle Séparez les données utilisateurs
suivant les applications qui les utilisent
ִJointure entre => notion de charge
V$DATAFILE et V$TABLESPACE sur Afin de diminuer la contention E/S,
l'attribut TS#
placer les fichiers des tablespaces
différents sur des disques distincts
Séparer les segments rollback des
A retenir : segments de données
ִutiliser de nombreux tablespaces
ִassigner des quotas aux utilisateurs

145 146

Segment de table
Notions sur les
segments Rappels de terminologie
ִ BD = ensemble de tables
ִ table = ensemble de tuples
ִ tuple = ensemble de valeurs
 Comment stocker les tuples sur
disque?
ִCertes dans des fichiers, mais
comment ?
ִSuivant quelle organisation ?

147

37
Codage des tuples Codage d’un bloc

 Organisation d’un tuple dans un bloc  Un bloc contient :


ִdes tuples (e.g. e1, …, en)
ִun catalogue d’accès aux tuples
ִun pointeur vers le bloc suivant
 2 solutions pour ranger les tuples dans les
blocs :
ִChaque champs variable est précédé de sa taille

 Or, un tuple :
ִEn tête de tuple, table d’accès aux champs

Parcours de table Segment d’index

 Notion de blocs
ִPlus petite unité de transfert entre MV et MS
ִLe temps de recherche d’un tuple de clef k dans
un bloc B est négligeable par rapport au temps
de chargement du bloc
ִHypothèses courantes :
probabilité « fixe » qu’un bloc requis soit déjà en
mémoire
1 accès disque = Temps de recherche + Temps de
transfert = Temps constant
 Si on sait où se trouve un tuple, alors il est
désigné par : <clef, @bloc>

 Comment limiter le nombre de chargement


de bloc du disque ? Comment limiter les
accès disque ?

38
Exemple de Codage avec des B-
recherche par la clé Arbres

 Tuples rangés dans un ordre quelconque Construire une table d’accès aux ≠
(tas) blocs
Soit n = 106 tuples
1 tuple = 200 octets

1 accès bloc = 1/100 s e :


Taille d’un bloc = 4096 – 50 réservés = 4046 octets

nn
o ye
Au max : 4046/200 = E = 20 tuples / bloc
m
Nombre min de bloc : 106 / 20 = 50000 blocs
n
E tuple
Chercher unm
in de clef K ?
4 provoquer 50000 accès bloc
=> peut
Au mieux : 1 accès bloc = 1/100 s
Au pire : 50000/100 s ~ 8 min
 Ordre total sur la clé doit exister

Les B-Arbres :
formules de calcul Suite

 Un tuple étant sous la forme :


<clef,@bloc>, on note :
ִe le plus petit nombre de tuples dans un bloc
ִet d le petit nombre de tuples d’index dans un
bloc
 Calcul de temps d’accès k+
ִChaque bloc de FP contient entre : e et 1
2*e+1tuples
ִChaque bloc de FI contient entre d et 2*d-1
enregistrements
 Taille(Bloc) / Taille(enr.FI) = 2d+1
 # tuples par bloc de FP = 2*e-1

39
Retour sur l’exemple Suite et fin

Soit n = 106 tuples


1 tuple = 200 octets
Taille d’un bloc = 4096 – 50 réservés = 4046 octets :
On considère qu’1 accès bloc = 1/100 s
c ès
’a c
Taille(Clef + Pointeur) = taille tuple d’index FI = 24
octets
Temps d’accès à un tuple ?
psd s
 2*e+1 = #tuples par bloc = 4046/200 = 20 m 0 s
e=9 Te /10 50
m
 2*d+1 = Taille(Bloc)/Taille(Enr. FI) = 4046/24 * 1 =
 d = 83 5
FP : 106 tuples de données  106/e blocs = 10^5 blocs
FI1 : 105 tuples d’index 105/d blocs = 13400 blocs
FI2 : 13000 tuples d’index  13000/d blocs = 160 blocs
FI3 : 160 tuples d’index  160/d blocs = 2 blocs
FI4 : 2 tuples d’index  1 bloc !!!! 5

Mise à jour des blocs suite

 Oui ! Mais si le bloc B est plein ?


ִOn négocie avec les blocs voisins !
Déplacement d’ tuples vers le bloc suivant (B + 1) ou
 Question : comment se passe l’insertion d’un le bloc précédent (B - 1) pour insertion !
nouveau tuple de clef Y ? Si bloc (B + 1) et bloc (B – 1) sont pleins ?
ִOn connaît la clef du tuple  on sait dans quel bloc
il doit aller !  on l’insère dedans !
ִOn créé un nouveau bloc B’ et on rechaîne la liste
des blocs
On répartit les tuples : B + B’ = B + tuple Y
On insère un tuple dans FI (pour B’)

40
Retour sur les SGBD Types de segments
et Oracle avec Oracle

 Autant de place prise par les données que par les


indexes Table (ou table non-clusterisée ou
ִ Hypothèse sous jacente : recherche par la clé, i.e.
requêtes SQL avec des conditions « Clé = valeur » dans
table non-partitionnée)
la clause WHERE ִressource la plus courante pour stocker les
ִ Intimement lié au procédure de stockage des tuples
ִ Notion de blocs
données
ִ Minimiser le nombre d’E/S de blocs ִdonnées stockées sans ordre particulier
ִ Gérer les éventuels MAJ sur les tuples
Ne pas avoir trop de blocs pleins ִon a peu de contrôle sur l'emplacement
Évite le rechaînage des lignes dans les blocs d'une table.
 Coté Oracle :
ִ DB_BLOC_SIZE : fixe la taille des blocs à la création de la ִAppartient à un seul tablespace
base de données
Ne peut pas être modifié ! Partition de table (V8 + option
ִ 2 paramètres sous Oracle pour les éventuelles MAJ :
• PCTFREE : spécifie à partir de quand un bloc libre est
Partionning)
considéré comme plein
• PCTUSED : spécifie à partir de quand un bloc plein est ִPartition de la table suivant des clés
considéré comme libre
ִstockage des partitions dans plusieurs
tablespaces
ִune partition est un segment
ִIntérêts : objets utilisés souvent et de
façon simultanée
162

Types de segments (2) Cluster (suite)

Cluster
ִles lignes d'un cluster sont stockées
suivant une valeur clé de colonne

ִun cluster contient une ou plusieurs tables

ִle cluster et les tables qui y participent


appartiennent au même segment

ִIntérêts : accélère les jointures

163 164

41
Cluster (fin) Types de segments (3)

Index
ִToutes les entrées d'un index sont
stockées dans un segment d'index
ִSi une table à 3 index, 3 segments d'index
sont utilisés
ִIntérêts : accélère les recherches, les
jointures …
Index-Organized table
ִles données sont stockées dans l'index
basé sur une valeur clé
Partition d'index
ִmême idée que Partition de table

165 166

Types de segments (5)


Types de segments (4)

Rollback segment Index LOB


ִutilisé par une transaction ִimplicitement créé lors de la
création d'un segment LOB
avant de changer les blocs de données
ou d'index, l'ancienne valeur est ִPour accélérer les requêtes sur ces
stockée dans le rollback segment colonnes
ִ 10g : possibilité de déléguer à Table imbriquée (V8 + Option
Oracle leur gestion Objects)
Segment temporaire ִtable en non 1ere forme normal
ִ pour gérer l’opération de tri ִpermet de faire de l'orienté-objet
omniprésente en SQL Segment de démarrage (ou
ִ permet d’implanter un algorithme segment en mémoire cache)
de tri « out of core » ִcréé par le script sql.bsd
Segment LOB ִne nécessite pas d'attention de la
ִpour stocker des colonnes d'objets part de l'administrateur !
volumineux (LOB), e.g. documents
textes, images, vidéos
167 168

42
Priorité des clauses de Allocation et
stockage restitution d'extents

Par ordre de priorité : Alloué quand le segment est :


ִSegment ִcréé ou étendu ou modifié
ִTablespace Restitué quand le segment est :
ִValeur par défaut Oracle ִsupprimé ou
En cas de modifications des clauses de modifié ou
stockage vidé ou
automatiquement redimensionné (rollback
ִpas de changement sur ce qui existe
segment uniquement)

Certaines clauses ne sont accessibles Manuellement :


qu'au niveau des Segments
ִAvec l'ordre
ALTER TABLE table ALLOCATE EXTENT;
ִAvec les outils d'import/d'export

169 170

Fusion d'espace libre


Libération d'espace contigu
lorsque des extents sont libérés

ALTER TABLESPACE data01 COALESCE;

SELECT tablespace_name, total_extents,


percent_extents_coalesced
FROM dba_free_space_coalesced
WHERE percent_extents_coalesced <> 100;

ou
Utiliser Oracle Storage Manager
• tools->Coalesce Free Extents

Sur une table


ALTER TABLE table
DEALLOCATE UNUSED

171 172

43
Blocs de base de
données

Rappels :
ִplus petite unité d'E/S
ִconsiste en 1 ou plusieurs blocs SE
ִtaille fixé par DB_BLOCK_SIZE : donné à
la création de la base de données
Un bloc contient :
ִentête de bloc :@ du bloc de données,
répertoire de la table et de la ligne et
entrées transactionnelles. Croit de façon
descendante.
ִespace des données : les données d'une
ligne sont insérées de manière
ascendante.
ִespace libre : se trouve au milieu !

173 174

Paramètres d'un bloc Gestion espace libre

Pour les accès concurrents : Pour un segment donné, Oracle


ִINITRANS gère une liste de blocs libres
par défaut, vaut 1 si segment de données, 2 si
segments d'index
ִMAXTRANS PCTFREE spécifie à partir de quand un
par défaut, vaut 255
bloc libre est considéré comme plein
spécifie le nombre min/max d'entrées de
transaction créées dans un bloc (de
données ou d'index) PCTUSED spécifie à partir de quand un
Pour la gestion de l'espace libre : bloc plein est considéré comme libre
ִPCTFREE : %tage d'espace réservé à la
croissance due aux mises à jour
par défaut, vaut 10%
ִPCTUSED : %tage d'espace au delà
duquel le bloc n'est pas considéré comme
libre
par défaut, vaut 40%

175 176

44
PCTUSED

177 178

Les vues du
dictionnaire

DBA_TABLESPACES
Tablespaces

* *
DBA_SEGMENTS DBA_DATA_FILES
Segments Fichiers de données

* *
DBA_EXTENTS DBA_FREE_SPACE
Extents utilisés Extents libres

179 180

45
Information sur le Information sur
Segment l'extent utilisé
Interroger la vue
Interroger la vue
ִDBA_EXTENTS
ִDBA_SEGMENTS identification :
information générale : • owner
• owner, segment_name • segment_name
• segment_type, tablespace_name • extent_id
taille : Emplacement et taille
• extents, blocks • tablespace_name
initialisation du stockage : • relative_fno
• initial_extent, next _extent • file_id
• min_extent, max_extent • block_id
• pct_increase • blocks
ִExemple : ִExemple :
SELECT segment_name, tablespace_name, SELECT extent_id, file_id, block_id, blocks
extents, blocks FROM DBA_EXTENTS
FROM DBA_SEGMENTS WHERE owner = 'SCOTT'
WHERE owner = 'SCOTT' AND segment_name = 'EMP'

181 182

Information Tendance à la
sur l'extent libre fragmentation

Sur la vue Tablespace


ִDBA_FREE_SPACE SYSTEM Dico Nulle
emplacements et taille SYSAUX Nulle
• tablespace_name
TOOLS Appli Très basse
• relative_fno
• file_id DATA_n Seg. Données Basse
• block_id INDEX_n Seg. index Basse
• blocks
RBS_n Rollback seg. Elevé
ִExemple :
TEMP_n Seg. Tmp Très élevé
SELECT tablespace_name, count(*),
max (blocks), sum(blocks)
FROM dba_free_space
Influence sur la durée de vie ...
GROUP BY tablespace_name;

183 184

46
Objectifs

Gestion des rollbacks Maintenir des “informations” pour


être capable d’annuler des mises
à jour de données
Deux types de gestion :
ִau niveau d’un tablespace
spécifique
“Automatic undo management” :
UNDO TABLESPACE
Introduit dans la 10g
Fortement conseillé par Oracle
ִau niveau des segments
“rollback segments”
Évite de gérer plusieurs rollbacks, leur
taille, leur emplacement …
Obligatoire sur version antérieure à
10g

185 186

Gestion au niveau d’un


Intérêts tablespace

Lecture cohérente Paramètre d’initialisation


ִles autres transactions voient « l'image UNDO_MANAGEMENT à mettre en AUTO
avant » des données grâce au rollback
segment Les informations rollback sont
Rollback d’une transaction désignées par undo data
ִla valeur avant modification est récupérée Tout est géré par Oracle
Restauration de transactions Deux options
ִEn cas de panne, relecture du rollback
segment dans un fichier de données ִNommage explicite d’un tablespace
spécifique
NB :
 clause UNDO TABLESPACE lors de la
ִPermet de gérer la cohérence des données création de base de données
lors des opérations de MAJ
ִA ne pas confondre avec les fichiers
ִCréation implicite d’un UNDO
de reprise TABLESPACE nommé SYS_UNDOTBS

187

47
Gestion au niveau
segment 1/4 Création 2/4

2 types de rollback segment : Ordre :


ִSYSTEM ִCREATE ROLLBACK SEGMENT
dans le tablespace du même nom
utilisé pour les modifications des objets de ce ִExemple :
tablespace CREATE ROLLBACK SEGMENT rbs01
ִNon-SYSTEM TABLESPACE rbs
créé par l'administrateur STORAGE (
deux cas : INITIAL 100K
• Private NEXT 100K
– utilisation normale OPTIMAL 4M
• Public MINEXTENTS 20
– serveur // d'Oracle MAXETENTS 1000);
Allocation d'un rollback segment pour ִcréé OFFLINE par défaut
une transaction donnée :
ִPCTINCREASE ne peut pas être
Oracle choisit le rbs "le plus" disponible et
l'affecte à la transaction. spécifié
Ou l'utilisateur le spécifie :
• SET TRANSACTION USE ROLLBACK SEGMENT
rbs012;
189 190

Gestion 3/4 Informations 4/4

Modification Interroger la vue


ִALTER ROLLBACK SEGMENT ִDBA_ROLLBACK_SEGS
ִMise ONLINE identification
ALTER ROLLBACK SEGMENT name ONLINE; • SEGMENT_ID
• SEGMENT_NAME
ou ajouter dans init<sid>.ora :
• ROLLBACK_SEGMENTS = (rbs01) emplacement, type, status
• TABLESPACE_NAME
ִLibération d'espace • OWNER
ALTER ROLLBACK SEGMENT name SHRINK TO • STATUS
2M;
ִMise OFFLINE
Statistiques
ALTER ROLLBACK SEGMENT name OFFLINE ִV$ROLLNAME
ִV$ROLLSTAT
Activités courantes
Suppression ִV$SESSION
ִDROP ROLLBACK SEGMENT name; ִV$TRANSACTION

191 192

48
Intérêts
Gestion des segments
temporaires Outil technique permettant
d’implémenter une opération des SGBD
: le TRI
Nécessaire pour tri « out of core »
Quantité de mémoire utilisée par un
processus pour trier
ִparamètre SORT_AREA_SIZE
Allouée en PGA pour chaque session !!!
Allouée en SGA si architecture MTS
ִSi le volume de tri dépasse
plusieurs opérations de tri sont nécessaires
résultats intermédiaires stockés sur disque
Segments temporaires créés dans le
tablespace temporaire affecté à
l'utilisateur pour trier

193 194

Types de segments Règles s'appliquant aux


temporaires segments temporaires
Initialiser plusieurs tablespaces
Relatif au type de leur tablespace
TEMPORARY selon les besoins de tri
ִTemporaire
ִPermanent
Eviter les segments temporaires dans Spécification du stockage par
un tablespace permanent défaut:
ִPCTINCREASE = 0
ִfragmentation
assure que tous les extents ont la même
Segment temporaire dans un taille
tablespace temporaire : ִINITIAL = NEXT
ִappelé aussi segment de tri = SORT_AREA_SIZE*entier +
ִun seul segment de tri par tablespace et DB_BLOCK_SIZE
puisque un processus écrit sur disque les
par instance
données de la zone de tri de la PGA (dont la
ִcréé lorsque le premier tri se produit taille vaut SORT_AREA_SIZE), on prévoit un
ִlibéré à l'arrêt de l'instance multiple de cette taille.

195 196

49
Informations sur les
segments temporaires
Interroger les vues
ִV$SORT_SEGMENT : Statistiques sur
le segment de tri
ִV$SESSION et V$SORT_USAGE :
activité du segment temporaire
ִV$SORT_USAGE : tri actif en cours
ִDBA_SEGMENTS : donne le type du
segment temporaire
Exemple :
ִselect s.username, u."USER",
u.tablespace, u.contents,
u.extents, u.blocks
from V$SESSION s, V$SORT_USAGE v
where s.saddr = u.session_addr;

197

50
Un peu de recul

Partie 5  Quel sens donner à l’intégrité des


données ?
Plusieurs significations
ִ Cohérence de la structure physique
et adéquation avec la technologie
matérielle
ִ Cohérence de la structure logique
Intégrité des ִ Cohérence des données
données

201 202

Intégrité des données Contraintes différées


Trois niveaux de codage : Lors de mise à jour de la base de
ִle code applicatif données (ordre du LMD), l'intégrité
ִles triggers des données est vérifiée
ִles contraintes d'intégrité ִsoit à chaque ordre constituant la
PRIMARY KEY, UNIQUE, FOREIGN KEY transaction
CHECK, NOT NULL
Option INITIALLY IMMEDIATE (par défaut)
Etat d'une contrainte ִsoit en fin de transaction
ִV7 option INITIALLY DEFERRED
DISABLE ou ENABLE Nécessite d'avoir spécifié que la vérification
des contraintes serait déférée (alter table …)
ִV8
DISABLE ִExemples :
ENABLE NOVALIDATE au niveau de la session :
• les données existantes peuvent ne pas ALTER SESSION
être cohérentes, les nouvelles le sont SET CONSTRAINTS = IMMEDIATE;
ENABLE VALIDATE au niveau de la transaction :
• toutes les données sont cohérentes SET CONSTRAINTS pk1, fk2
DEFERRED;
ִExemple :
ALTER TABLE emp Cf syntaxe de la clause
ENABLE NOVALIDATE pk1;
203 CONSTRAINTs 204

51
Triggers Informations relatives

Permet de définir des contraintes lors Pour les contraintes, interroger les
d'insertion/suppression/modification de vues
lignes dans une table ִDBA_CONSTRAINTS
Activation ִDBA_CONS_COLUMNS
ִALTER TABLE scott Pour les triggers, interroger les vues
ENABLE ALL TRIGGERS; ִDBA_TRIGGERS
Désactivation ִDBA_TRIGGERS_COLS
ִALTER TRIGGER scott.tg1 DISABLE; ִDBA_OBJECTS
Suppression
ִDROP TRIGGER scott.tg1;

205 206

52
Qu’est-ce que la gestion
de la sécurité ?

Partie 6 Sécurité = protection des données


ִ Piratage
ִ Accès non autorisés
ִ Manipulations non autorisées
ִ …
Gestion de la sécurité sous Oracle
ִPlusieurs niveaux
Gestion de la Les utilisateurs
sécurité L’accès aux objets de la base de
données
Les ressources du niveau système
ִ Possibilité d’audit pour chaque
niveau de sécurité

209 210

Quelques notions de
Niveaux de sécurité base

Comptes utilisateurs Rôles


ִconnexion (directe ou indirecte) à ִA mi-chemin entre utilisateurs et
une base de données privilèges
ִprotection par des mots de passe Ordre de création similaire à celui des
utilisateurs
Rôles et privilèges Affectation de plusieurs privilèges
ִde niveau objets ִGestion simplifiée des privilèges
gestion des accès aux objets (e.g., ִDisponibilité sélective des privilèges
select sur la table EMP de SCOTT)
ִde niveau système Profils
gestion des commandes de niveau ִEnsemble nommé de limites de
système (e.g., create table, ressources
alter index, create database
…) e.g. nombre de connexions
simultanées par utilisateur

211 212

53
Implémentation de la
sécurité
Gestion des
Niveau système d’exploitation utilisateurs
ִAutorisation d’accès au serveur
ִProtection des fichiers Oracle
fichiers de données, fichiers de reprise,
fichiers de contrôle, dump,
sauvegardes, …
ִProtection des copies, réplicats, ...
Niveau Oracle
ִUtilisateurs
ִRôles
ִProfiles
ִAffectation directe des privilèges

213 214

Schéma de base de Liste de contrôles pour


données la création d'utilisateur

Schéma de la BD Choisir un nom d'utilisateur et un


ִcollection mécanisme d'authentification
de tables
de vues Identifier les tablepaces dans lesquels
d'index l'utilisateur va stocker ses objets
de procédures stockées ִ typiquement 3 tablespaces pour les
… référés par le terme objets données, les tris et les index
ִCorrespond à un utilisateur, i.e. celui qui
ִRevient à affecter un tablespace par
crée les tables, les vues …
défaut et un tablespace temporaire

Utilisateur de la BD ? Décider des quotas pour chaque


ִ correspond aussi à un utilisateur, mais qui tablespace
exécute des requêtes SQL sur des tables, Créer l’utilisateur
des procédures stockées …
Accorder des privilèges et des rôles à
l'utilisateur
Correspond aux 2 grands types
d’utilisateur en BD

215 216

54
Exemples Modification
Sous sqlplus :
Avec ordre ALTER USER
ִAuthentification par Oracle
CREATE USER Paul
IDENTIFIED BY edze!2z Exemples :
DEFAULT TABLESPACE data01
TEMPORARY TABLESPACE temp ִChangement du compte
QUOTA 1M ON data01; ALTER USER Paul
IDENTIFIED BY edze!2z <- ligne optionnelle
PASSWORD EXPIRE;
ִAuthentification par le SE
CREATE USER Paul ִSuppression de quota
IDENTIFIED EXTERNALLY ALTER USER Paul
DEFAULT TABLESPACE data01 QUOTA 0 ON data01;
TEMPORARY TABLESPACE temp • les données existantes restent
QUOTA 1M ON data01; • mais plus possible d'en insérer d'autres
ִquota illimité
ִConseil Oracle : A utiliser avec ALTER USER Paul
modération ! QUOTA UNLIMITED ON data01;
ִNom réel
ALTER USER Paul
GLOBALY AS "Jean Paul Léponge";
217 218

Informations sur les


Suppression utilisateurs

Syntaxe : Utiliser les vues


DROP USER utilisateur [CASCADE] ִDBA_USERS
ִDBA_TS_QUOTAS
Option CASCADE
ִsupprime tous les objets du schéma Exemples :
ִpuis supprime l'utilisateur select
username,default_tablespace,
temporary_tablespace
Exemple : from dba_users
DROP USER Paul CASCADE;
where username = 'PAUL';

Remarque : ִselect *
ִ impossible de supprimer un utilisateur from dba_ts_quotas
connecté where username= 'PAUL';

219 220

55
Profils

Gestion des profils Ensembles nommés de limites de


ressource
ִe.g. nombre de connexions simultanées
par utilisateur

Affectés aux utilisateurs


ִlors de leur création
ִpar modification

Peuvent être activés/désactivés

Peuvent dériver du profil DEFAULT

221 222

Gestion des ressources


à l'aide des profils Modification/suppression

Etapes à suivre : Modification


ִcréer les profils ִordre ALTER PROFILE
ordre CREATE PROFIL ִExemple :
ִles affecter à l'utilisateur alter profile new_prof limit
sessions_per_user 3
ordre CREATE/ALTER USER idle_time 2;
ִactiver les limites de ressources Suppression
soit ALTER SYSTEM
ִordre DROP PROFILE
soit fichier de paramètres option CASCADE : assure que tous les
d'initialisation utilisateurs ayant ce profil seront mis à jour!
ִExemple ִle profile DEFAULT ne peut être supprimé
create profile new_prof limit ִExemple :
sessions_per_user 2
drop profile new_prof cascade;
idle_time 1;
alter user Paul Entre en vigueur pour les sessions
profile new_prof; suivantes
alter system
set RESOURCE_LIMIT=true;
223 224

56
Informations sur les
profils

Utiliser les vues Gestion des privilèges


ִDBA_USERS
ִDBA_PROFILES

Exemples :
ִselect distinct profile
from dba_profiles;

ִselect *
from dba_profiles
where profile='DEFAULT';

225 226

Attribution de privilèges
Privilèges systèmes

Deux types de Privilèges Avec l'option


ִSYSTEME GRANT … TO …
WITH ADMIN OPTION;
 permet aux utilisateurs d'effectuer des
opérations dans la base de données Pour accorder un privilège système, il
Environ 80 privilèges systèmes faut posséder le privilège WITH ADMIN
ִOBJET OPTION
 permet aux utilisateurs d'accéder à/manipuler
un objet particulier
Privilèges SYSDBA et SYSOPER
Ordre GRANT permet d'ajouter un ִSYSDBA = privilèges de SYSOPER
privilège à un utilisateur WITH ADMIN OPTION + CREATE
ִExemple : DATABASE ...
GRANT create index, create table
TO Paul;
Ordre REVOKE pour le supprimer
ִExemple :
REVOKE create table FROM Paul;

227 228

57
Informations sur les
Privilèges Objets privilèges
Les principaux privilèges Objet :
ALTER, DELETE, INDEX, REFERENCES
Interroger les vues
(pour les tables), SELECT, UPDATE, ִpour les privilèges SYSTEM :
EXECUTE (pour les procédures) DBA_SYS_PRIVS
SESSION_PRIVS
Exemples : ִpour les privilèges OBJET :
GRANT execute ON dbms_pipe DBA_TAB_PRIVS
TO public; DBA_COL_PRIVS

GRANT select ON emp


TO Bob
Exemple :
WITH GRANT OPTION; select * from DBA_SYS_PRIVS;

REVOKE execute ON dbms_pipe select * from SESSION_PRIVS;


FROM scott;
select *
Attention à la formulation :
from DBA_TAB_PRIVS
ִpour donner le privilège "with admin where grantee='BOB';
option", il faut faire :
GRANT … WITH GRANT OPTION
229 230

Rôles

Gestion des rôles A mi-chemin entre


ִles utilisateurs
Ordre de création de rôle similaire
ִles privilèges
Assure l'affectation de plusieurs privilèges

Gestion simplifiée des privilèges

Disponibilité sélective des privilèges

231 232

58
Création/Affectation de Rôles par défaut aux
Rôles utilisateurs

Création Syntaxe :
ִOrdre CREATE ROLE ALTER USER … DEFAULT ROLE
[…|ALL] [EXCEPT …];
ִExemples :
CREATE ROLE Vente;
Exemples :
CREATE ROLE Vente
ALTER USER scott
IDENTIFIED BY bonus; DEFAULT ROLE Vente, Achat;
CREATE ROLE Vente
IDENTIFIED EXTERNALLY; ALTER USER scott
Affectation DEFAULT ROLE ALL;

ִOrdre GRANT ALTER USER scott


ִExemples : DEFAULT ROLE ALL EXCEPT Vente;
GRANT create any table TO
Vente ; ALTER USER scott
GRANT Vente TO scott; DEFAULT ROLE NONE;
GRANT Vente TO scott
WITH ADMIN OPTION;

233 234

Activation on/off des


rôles Conseils
Créer un rôle pour chaque tâche
Relatif à la session
d'application
ִintéressant dans une application accédant
ִe.g. traitement du salaire
la base pour s'assurer que la personne qui
exécute l'application est bien autorisée. Attribuer aux rôles d'application
Commande SET ROLE les privilèges nécessaires pour
ִExemples : exécuter la tâche
SET ROLE Vente; Créer un rôle pour chaque type
SET ROLE Vente d'utilisateur
IDENTIFIED BY commission;
SET ROLE ALL EXCEPT Achat;
ִe.g. chef de service
SET ROLE NONE; N'attribuer aux rôles d'utilisateur
Suppression des rôles : que des rôles d'application.
DROP ROLE role ִNe pas affecter des privilèges
Suppression des rôles d'un utilisateur individuels
REVOKE role FROM [util | PUBLIC]; Accorder des rôles d'utilisateurs
aux utilisateurs

235 236

59
Informations sur les
rôles

Interroger les vues


ִDBA_ROLES
tous les rôles de la bd
ִDBA_ROLE_PRIVS
rôles accordés aux utilisateurs et aux rôles
ִROLE _ROLE_PRIVS
rôles accordés aux rôles
ִDBA_SYS_PRIVS
Privilèges accordés aux utilisateurs et aux rôles
ִROLE_SYS_PRIVS
Privilèges systèmes accordés aux rôles
ִROLE_TAB_PRIVS
Privilèges de table accordés aux rôles
ִSESSION_ROLES
rôles d'un utilisateur actuellement activés

237

60
Sauvegarde logique vs
physique

Partie 7  au niveau logique


ִ récupérer un fichier “dump”
représentant les ordres de création
“logique” de la BD
ִ outils de migration entre
différentes versions d’Oracle
 import/export

Sauvegarde / au niveau physique


restauration ִ on oublie SQL, on ne sauvegarde
que les fichiers physiques

Aperçu du niveau physique ci


après

241

Différents types de
sauvegarde Influence de l'archivage

Sauvegarde base fermée mode NOARCHIVELOG


ִdite sauvegarde à froid ִRestauration possible en cas d'incidents
Sauvegarde base ouverte logiciel (processus SMON)
ִdite sauvegarde à chaud pas possible en cas d'incidents disques

Différentes possibilités liées ִSauvegarde BD fermée


ִau choix du mode d'archivage des fichiers ִPas de travail supplémentaire pour le DBA
de reprise mode ARCHIVELOG
Mode NoArchivelog
• la sauvegarde la plus récente est utilisée pour ִRestauration possible en cas d'incidents
restaurer la base disque et logiciel
– perte d'information possible
ִSauvegarde possible tout en gardant la BD
Mode Archivelog
ouverte et prête à l'emploi
• idem + fichiers de reprise archivés
– pas de perte d'information ִBeaucoup de travail supplémentaire pour
ִde l'environnement technique le DBA pour maintenir les fichiers archivés
commandes du SE, outils NT, manuel,
automatique
environnement disques (RAID)
243 244

61
Sauvegarde à froid Sauvegarde à chaud

La plus simple à mettre en œuvre Plus difficile à mettre en œuvre


Les étapes : ִnécessite le mode ARCHIVELOG
possible aussi en mode Noarchivelog mais les
ִidentification des fichiers
fichiers sauvés ne sont pas utilisables pour une
select name from v$datafile; restauration ☺
select member from v$logfile;
select name from v$controlfile;
Les grandes étapes :
ִbase de données ouverte
ִarrêter la base de données
ִsoit mettre offline un tablespace
ִsauvegarder tous ces fichiers ALTER TABLESPACE tbs OFFLINE NORMAL;
commandes du SE soit utiliser l'ordre BEGIN BACKUP
ִRedémarrer la base ALTER TABLESPACE tbs BEGIN BACKUP;
ִsauvegarder les fichiers concernés
En cas d'erreur, copie de ces fichiers commandes du SE
pour redémarrer ִsoit mettre online le tablespace
ִperte d'information possible ALTER TABLESPACE tbs ONLINE
soit utiliser l'ordre END BACKUP
ִA privilégier si la BD n'est pas dans un ALTER TABLESPACE tbs END BACKUP;
environnement transactionnel élevé  Attention :
ִl'état d'un fichier de données sauvegardé online à
partir du SE est incertain
245 246

Exemple
(mode ARCHIVELOG) Requêtes

Sauvegarde de fichiers de données Sur le mode d'archivage


ִIdentifier les fichiers de données d'un select log_mode from v$database;
tablespace, eg 'tbs' En mode archivage
ִTablespaces activés ִinformations sur les tablespaces
1. ALTER TABLESPACE tbs BEGIN BACKUP; actuellement sauvegardés
2. Copier les fichiers à partir du SE V$BACKUP, V$DATAFILE_HEADER,
3. ALTER TABLESPACE tbs END BACKUP;
ִTablespaces désactivés
1. ALTER TABLESPACE tbs OFFLINE NORMAL;
2. Copier les fichiers à partir du SE
3. ALTER TABLESPACE tbs ONLINE;
Sauvegarde des fichiers de contrôle
ALTER DATABASE BACKUP CONTROLFILE
TO 'e:\backup\control01.ctl';

247 248

62
Restaurations Restauration: le principe

Mode Noarchivelog
ִperte des données saisies depuis la
dernière sauvegarde
ִrestauration de tous les fichiers
Mode Archivelog
ִDifférentes restaurations :
Restauration complète
• Base de données fermée
• Base de données ouverte, tablespaces
désactivés
• Base de données ouverte, tablespaces
désactivés, fichiers de données endommagés
• Fichier de contrôle corrompu
ִRestauration incomplète
• basé sur l'annulation
• basé sur les modifications et sur le temps
ִcommande 'recover'
doc dans SQL*Plus !

249 250

Restauration en mode
Restauration complète Archivelog

Mode Noarchivelog Commande recover


Les étapes RECOVER [AUTOMATIC][FROM location]
{[STANDBY] DATABASE [UNTIL options]
[USING BACKUP CONTROLFILE]
|TABLESPACE {tablespace [, tablespace ...]}
1. Fermer la base |DATAFILE {datafilename [, datafilename ...]}
|STANDBY {TABLESPACE tablespace [,tablespace ...]
2. Réparer la panne disque |DATAFILE datafilename [, datafilename ...]}
UNTIL CONTROLFILE
3. Restaurer tous les fichiers de la |LOGFILE filename
|CONTINUE [DEFAULT]
sauvegarde la plus récente |CANCEL}
[PARALLEL clause]
4. Ouvrir la base à l'étape OPEN
Possibilité de restaurer
ִSi les emplacements des fichiers ont toute la base
changé, il faut renommer ces fichiers au des tablespaces
niveau du fichier de contrôle le fichier de contrôle
redémarrer la base à l'étape MOUNT des fichiers de données
ִDes données peuvent avoir été perdues
Nécessite la présence des fichiers de
251
reprise archivés 252

63
Exemple de
restauration partielle

Mode Archivlog
base ouverte, tablespace désactivé

1. Ouvrir la base à l'étape OPEN


2. Désactiver le(s) tablespace(s)
ALTER TABLESPACE nom OFFLINE
3. Réparer la panne disque
4. Restaurer seulement les fichiers
endommagés
5. Lancer la restauration
RECOVER TABLESPACE tablespace
ou pour chaque fichier de données
RECOVER DATAFILE nom_fich
7. Activer le tablespace
ALTER TABLESPACE nom ONLINE

253

64
Coté serveur
Concept de base :
Partie 8 "mettre un processus sur le
serveur NT à l'écoute de
connexion sur un serveur Oracle
par l'intermédiaire d'un ou
plusieurs protocoles réseaux"
Protocoles réseaux
ִe.g., TCP/IP, NMP, …
Configuration du Serveur BD Oracle
réseau ִinstance + base, e.g. ORCL, U01 ...
Notion de service
ִutiliser pour la réplication,
l'authentification par le SE, ...
Processus « listenerSID » qui fait
cette tâche

257 258

Exemple de fichier
Coté serveur (2) listener.ora
MESOREILLES =
Les configurations sont enregistrées (DESCRIPTION_LIST =
dans le fichier listener.ora (DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = lmijmp)(PORT = 1521))
Deux façons de procéder )
ִà la main, en éditant le fichier (DESCRIPTION =
(ADDRESS = (PROTOCOL = NMP)(SERVER = LMIJMP)(PIPE =
ִavec les outils graphiques ORAPIPE))
)
Créer autant de service qu'il existe de )
façon d'accéder au serveur
SID_LIST_MESOREILLES =
(SID_LIST =
(SID_DESC =
Redémarrer le PC pour prendre en (SID_NAME = ORCL)
compte les modifications )
(SID_DESC =
Utiliser lsnrctl (SID_NAME = F3)
ִcommandes utiles : )
)
status, set password 'pwd', stop 'listener',
start 'listener' PASSWORDS_MESOREILLES = (test123)

259 260

65
Exemple de fichier
Coté Client tnsnames.ora
BDTEST =
Les configurations sont enregistrées (DESCRIPTION =
dans le fichier tnsnames.ora (ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = lmijmp)(PORT = 1521))
ִc:\orant\net8\admin ou )
ִc:\orant\sqlnet\admin (CONNECT_DATA =
(SERVICE_NAME = ORCL)
Deux façons de procéder )
ִà la main, en éditant le fichier )

tnsnames.ora
ִavec Net8 Easy Config
Le SID de la BD est 'ORCL'
La machine distante s'appelle 'lmijmp'
Créer un nom de service, i.e. un alias
pour accéder la base de données Le protocole réseau est TCP/IP
ִpermet aux clients de se connecter de
façon transparente
ִchoisir un nom de service pertinent, e.g.
Paye

261 262

Coté Client (2)

Etapes à suivre : Audit


1. Choisir un nom de service
2. Spécifier le protocole de communication
avec le serveur
3. Donner le nom du serveur
4. Donner le SID de la base de données

263 264

66
Audit sous Oracle Audit des logins

Possible sur toute action sur une Commande audit et noaudit


base de données Exemples :
ִtentatives de login audit session whenever [not]
ִaccès aux objets successfull
noaudit connect
ִactions bases de données
Stockage des enregistrements de Résultats de l’audit
l’audit ִVue DBA_AUDIT_SESSION
OS_USERNAME
ִSYS.AUD$, ou
USERNAME
ִau niveau du système d’exploitation TERMINAL
Pour activer l’audit RETURNCODE
ִParamètre AUDIT_TRAIL (init.ora) ...
ִValeurs possibles : NONE, DB, OS

265 266

Audit des actions Groupes d’actions

Audit des commandes système (create, Possibilité de grouper les actions à


alter, drop, …) sur un objet auditer
ִExemple
ִexemple : audit de toutes les
audit update table by scott;
commandes qui affectent les rôles
Affectation d’un code pour chaque
audit role
action pouvant faire l’objet d’un audit
audit connet whenever not
ִVue AUDIT_ACTIONS
successfull
Résultats de l’audit ִexemple de groupes fournis par
ִVue DBA_AUDIT_OBJECT
Oracle
pour déterminer comment un objet a
DBA : commande qui nécessitent une
été affecté par une action
autorité DBA (grant, revoke, …)
RESOURCE : create et drop pour les
tables, clusters, vues, index,
tablespaces, types et synonyms
…
267 268

67
Audit des objets Remarques sur SYS.AUD$

Audit des commandes DML sur un Table SYS.AUS$


objet ִcontient des informations critiques
Deux possibilités ִstockée dans le dictionnaire de
ִpar session données
audit insert on scott.emp by session ִpeut croître rapidement
ִpar accès … donc il faut penser à :
audit all on scott.emp by access l’archiver et la vider périodiquement
 Toujours possible de spécifier en la sécuriser
cas de réussite ou d’échec l’auditer
audit all on SYS.AUD$ by access;
Résultats de l’audit
ִVue DBA_AUDIT_OBJECT

269 270

Objectifs
Chargement des
données Aperçu de trois techniques :
ִExport et Import
sauvegarde "logique" des données
réorganisation des données
exclusivement pour les environnements Oracle
indépendant du SE et des versions d'Oracle
ִSQL*Loader
Pour charger des données stockées ailleurs que
dans des bases Oracle
ִDirect-load insert
chargement rapide de tables

Communication des bases Oracles avec


d'autres BD

271 272

68
Export/Import
Utilitaire
Export/Import Trois modes
ִtable
ִutilisateur
ִbase de données
Mode table
ִdéfinition, données, index, triggers,
contraintes, autorisations, …
Mode utilisateur
Réorganisation logique
ִen fonction des droits de l'utilisateur
des données
Mode base de données
Migration
ִtoute la base sauf les objets de l'utilisateur
SYS
nécessite le privilège cf EXP_FULL_DATABASE

273 274

Deux chemins d’export Utilisation d'export

Chemin conventionnel Ligne de commande


ִSQL SELECT ִutilitaire EXP
ִChemin : exp help=y
données transférées du disque vers le buffer
cache de données ִexemple :
buffer d'évaluation exp scott/tiger tables=(dept,emp) \
transfert vers le fichier d'export file=emp.dmp log=exp.log
Chemin direct (à partir de V7.3.3) ִUne seule de ces options :
ִChemin tables=(schéma.table)
évite le buffer d'évaluation owner=utilisateur
ִplus rapide que le chemin conventionnel full=y
ִn'influence pas de façon significative les • option incrémental, cumulative
performances de l'export
ִConventionnel :
direct = n (par défaut)

275 276

69
Utilisation d'Import Comportement d'Import

Ligne de commande Ordre d'import


ִutilitaire IMP ִlecture contiguë du fichier d'export
imp help=y ִtable -> données -> index -> contraintes
ִexemple : ִSi les tables existent déjà, il est
imp scott/tiger file=emp.dmp log=imp.log recommandé de désactiver les contraintes
ignore=y d'intégrité référentielles avant de faire
l'import
Privilège particulier
ִ IMP_FULL_DATABASE Tablespace utilisé pour l'objet
ִsi possible, même tablespace que dans la
Voir aussi Oracle Data Manager base de données source
Data -> Import ִsinon, tablespace par défaut de
l'utilisateur
si quota suffisant

277 278

Les fichiers nécessaires

Fichiers de contrôle
Utilitaire SQL*Loader spécifie le format d'entrée, les tables de
sorties et des conditions sur le
chargement
Fichiers de données
contiennent les données au format défini
dans le fichier de contrôle
Fichiers de paramètres
facultatif, alternative au mode ligne de
Interface avec des commande

données extérieures Fichier "bad"


enregistrements refusés lors de l'insertion
Fichier "log"
trace du chargement
Fichier "discard"
facultatif, contient les enregistrements qui
ne correspondaient pas aux critères de
selection
279 280

70
Deux chemins de
SQL*Loader chargement

Chemin conventionnel
ִutilise l'ordre SQL INSERT
ִfichiers de reprise sont mis à jour
ִles contraintes sont respectées
ִcomportement classique
Chemin direct
ִécriture directe dans des blocs de données
ִpas d'informations enregistrées dans les
fichiers de reprise (sauf si mode
ARCHIVELOG)
ִapplique seulement les contraintes de clé
primaire, unique et not null.

281 282

Utilisation

Sous invite SE, par ex msdos : Direct-Load insert


ִSQLLDR scott/tiger \
control=ulcase6.ctl \
log=ulcase6.log direct=true
ִNe fonctionne pas en mode interactif
Exemple de fichier de contrôle :
load data
infile 'ulcase6.dat'
replace
into table emp
sorted indexes (empix)
(empno position(1:4),
ename position(6:15),
job position(17:25),
mgr position(27:30) nullif mgr=blanks,
sal position(32:39) nullif sal=blanks,
comm position(41:48) nullif comm=blanks,
deptno position(50:51) nullif empno=blanks)

283 284

71
Chargement direct SGA

V8 uniquement Vues dynamiques :


Utile pour charger des volumes de ִ V$SGA : généralité
données important ִ V$SGAINFO : info sur taille
ִplus rapide que les chemins composants
conventionnels
ִOrdre INSERT avec le hint APPEND
ִ V$SGASTAT : info détaillée
ִExemple : ִExemple :
INSERT /*+APPEND*/ INTO bob.emp  select sum(value) from V$SGA
NOLOGGING
SELECT * FROM scott.emp;
Paramètres d’initialisation (10g)
ִL'option NOLOGGING spécifie que les ִ db_block_buffer, sga_target
modifications ne sont pas enregistrées ִ shared_pool_size, java_pool_size,
dans les fichiers de reprise
Large_pool_size, db_cache_size
ִ log_buffer, db_keep_cache_size

285

72

You might also like