Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .
LP_Admin_base_données.ppt
1. Filière (LP) : Développement des Systèmes
d’Information et de Communications-S6
Année Universitaire : 2018/2019 au 2023/2024
Diaporamas du cours :
Administration des Bases de
Données (sous oracle)
Préparé par : Idriss CHANA
Enseignant chercheur au Département Génie Informatique, EST-UMI
Meknès Email : i.chana@umi.ac.ma
Au Profit des Etudiants de La LP DSIC inscrits en semestre S6
2. Module Administration de base de
données
• Pré requis:
Modèle relationnel (structure, contraintes, SQL)
• Objectifs
– Connaître les concepts et points clés de l'architecture Oracle
– Connaître les tâches d'un DBA
– Savoir effectuer les principales tâches sous Oracle
2
Pré requis et Objectif du module
3. 1- Introduction Générale :
- Introduction à l'administration de Base de données
- Fonction de l'administrateur de Base de données
2- Architecture d'un serveur Oracle
- L'instance - les données ( base de données)
- les Processus
- les fichiers
3- Création de la structure d’une base de données
- Du besoin à l’application
- Rappels sur les indexes Principes choix et création : index btree , BitMap
- Syntaxe générale de création : - tablespaces, - tables,
- Alimentation d'une base de données le sqlloader
4- Gestion des utilisateurs
5- Sauvegarde et restauration.
-L’outil Rman
Plan de module
5. Évaluation
• Cours & TD 50%
- DS théorique
- Participation pendant des séances de TD et de cours
• TP 50%
- DS Pratique
- Participation active pendant des séances de TP .
- Rapports rendus à la fin des séances TP
5
7. 7
Maître d’oeuvrage
Partie porteuse du besoin qui définit l’objet du projet, le calendrier et le
budget
Maître d’oeuvre
Partie en charge de la réalisation technique du projet
Acteurs de développement
9. 9
Métiers autour des BD
• Administrateur
• Responsable de la sécurité
• Administrateur Réseaux
• Développeurs d’application
• Administrateurs d’application
• Utilisateurs : modifier les données, créer des rapports, etc.
10. 10
Rôles du DBA
• Installer les logiciels les serveur, des applications clientes,
• En fonction de la configuration système disponible
• Si fonctionnement en réseau : Composants réseaux de l’SGBD
• Planifier, créer et configurer des bases de données
• Gérer l’espace et implanter les schémas des données
• Assurer la sécurité, l’intégrité et la pérennité des données
• Implémenter une stratégie de sauvegarde et de récupération.
• Déplacer des données entre des bases de données et des fichiers.
Remarque :
• Dans un environnement de petite taille, l’administrateur (DBA) peut jouer
quasiment tous les rôles
11. Chapitre I Architecture d'une base de données Oracle
Architecture Interne d’Oracle : grandes lignes
La mémoire d’Oracle
- System Global Area (SGA) et ces composante
Les processus Oracle
- - Program Global Area (PGA)
- Les processus utilisateur
- Les processus serveur
- Les processus d’arrière plan (Background process)
- DataBase Writer (DBWR)
- Log Writer (LGWR) et ça gestion
- Process Monitor (PMON)
- System Monitor (SMON)
-CheckPoint (CKPT)
-Archiver (ARCn)
- Recover (RECO) et - Lock (LCKn)
12. 1 - 12
A la fin de ce chapitre, vous pourrez :
Enumérer les principaux composants de l'architecture
d'une base de données Oracle
Décrire les structures mémoire
Décrire les processus en arrière-plan
Administration des bases de données sous Oracle
Chapitre 1 : Architecture d'une base de données Oracle
Objectifs
13. 1 - 13
Le système de gestion de base de données relationnelle (SGBDR)
Oracle fournit une approche ouverte, complète et intégre de la gestion
des informations.
Géstion fiable d’une grande quantité d’information
Envirennement multiutilisateur avec performances élevées
Enpeche les accès non autorisés
reprise ( recupération) après incident
Une base de données est un ensemble de données traitées comme
une seule et même unité. Elle sert principalement à stocker et à extraire
des informations connexes.
Administration des bases de données sous Oracle
Chapitre 1 : Architecture d'une base de données Oracle
Introduction : Base de données et SGBD Oracle
14. 1 - 14
Base de données (structures de stockage)
Processus
serveur
PGA
Processus
utilisateur
Instance
Structures mémoire
(mémoire SGA)
Structures de processus
Client
Serveur
Un serveur de bases de données Oracle est compose :
d'une instance = plusieurs processus et une zone de mémoire
d'une base de données : Ensemble de fichiers (sur disque) contenant les
données, les informations sur les données, le journal de modifications
de plusieurs schémas: assimiles a des utilisateurs
Dans le cas de clusters de machines, Oracle peut associer plusieurs instances a
une même base de données.
Administration des bases de données sous Oracle
Chapitre 1 : Architecture d'une base de données Oracle
Architecture: grandes lignes
15. 1 - 15
C’est l’ensemble de structures mémoire et de processus qui
assurent la gestion de la base de données.
Le fichier de paramètres est utilisé pour configurer l’instance lors de
son démarrage.
Une instance ne peut ouvrir qu’une seule base de données.
Une instance emploie deux zones mémoire principales; la SGA
(System Global Area) et la PGA (Program Global Area).
L’instance (1/3)
Administration des bases de données sous Oracle
Chapitre 1 : Architecture d'une base de données Oracle
Architecture:
16. 1 - 16
Serveur de BD
SGA
PGA
PGA
PGA
Processus 1 Processus 3
Processus 2 Processus ...
L’instance (2/3)
Administration des bases de données sous Oracle
Chapitre 1 : Architecture d'une base de données Oracle
Architecture:
SHOW PARAMETER INSTANCE_NAME;
// ou
SELECT INSTANCE_NAME FROM V$INSTANCE;
17. 1 - 17
C’est un espace mémoire partagé par tous les processus de l’instance. Elle est
allouée au démarrage de l’instance et libérée lors de son arrêt. Elle inclut 6 zones
mémoires (3+3).
Plus la SGA est grande, plus le serveur est performant. Sa taille maximale est
définie via le paramètre SGA_MAX_SIZE
L’instance (3/3)
Administration des bases de données sous Oracle
Chapitre 1 : Architecture d'une base de données Oracle
Architecture:
SGA : System global Area
18. 1 - 18
Dictionary
Cache
Library
Cache
DB Buffer
Cache
Shared
Pool
Redo Log
Buffer
Java Pool
Streams
Pool
Large Pool
SGA
Administration des bases de données sous Oracle
Chapitre 1 : Architecture d'une base de données Oracle
Architecture: Structure de la mémoire SGA
SGA : System global Area
19. 1 - 19
Elle est composée de deux structures; le library cache et le dictionary cache. Sa
taille est définie via le paramètre SHARED_POOL_SIZE.
Le LC contient pour chaque requête récemment exécutée trois informations:
- Son texte
- Sa compilation
- Son plan d’exécution
Lorsqu’une requête existe encore dans le LC, Oracle ne perd pas son temps à la
ré-exécuter.
Le DC stocke toutes les informations nécessaires à l’analyse sémantique de la
requête (table? Colonnes? Droits d’accès?...)
NOTE : le dba peut nettoyer le buffer via la commande
Alter System Flush Shared Pool
Shared Pool
Administration des bases de données sous Oracle
Chapitre 1 : Architecture d'une base de données Oracle
Architecture: Structure de la mémoire SGA
20. 1 - 20
Il stocke les blocs de données les plus récemment utilisés.
Lorsqu’une requête est exécutée, Oracle vérifie d’abord si les blocs de
données à ramener ne soient pas déjà chargés dans le DB buffer.
Si les blocs à renvoyer n’existent pas dans le DB buffer cache, Oracle les y
stocke (et libère d’autres blocs s’il le faut).
La taille du DB Buffer Cache est définie via le paramètre DB_CACHE_SIZE
DB Buffer Cache
Administration des bases de données sous Oracle
Chapitre 1 : Architecture d'une base de données Oracle
Architecture: Structure de la mémoire SGA
21. 1 - 21
Contient les informations sur les transactions exécutées.
Le Redo Log Buffer est écrit de manière séquentielle.
Chaque modification correspond à une entrée Redo. Cette dernière est
constituée de plusieurs vecteurs, chacun correspond à un bloc de données
modifié (ancienne + nouvelle valeur).
Le contenu du Redo Log Buffer est écrit dans les fichiers journaux.
La taille du Redo Log Buffer est définie via le paramètre LOG_BUFFER*
Pour consulté les fichier redo log La vue v$logfile
Redo Log Buffer
Administration des bases de données sous Oracle
Chapitre 1 : Architecture d'une base de données Oracle
Architecture: Structure de la mémoire SGA
22. 1 - 22
Le Large Pool : Stocke des données lors de l’exécution d’opérations volumineuses. (pas comme
Data Buffer cache qui alloue de petite zones mémoire)
- Allocation de grande zones mémoire ( Backup /Restaure par RMAN Calloc, malloc, copie,
utilisation de plusieurs processeur )
- Libération de la mémoire allouée on utilise des expression explicite au langage de
programmation (free) Pas comme pour la Data Buffer cache : pas de concept de libération
de mémoire - Paramètre LARGE_POOL_SIZE.
Autres zones mémoire
Administration des bases de données sous Oracle
Chapitre 1 : Architecture d'une base de données Oracle
Architecture: Structure de la mémoire SGA
Le JAVA Pool ( à partir de Oracle 8.1.6) : Stocke les objets et applications Java les plus
récemment utilisés lorsque la machine virtuelle Java JVM optionnelle est utilisée. Paramètre
JAVA_POOL_SIZE.
Le Streams Pool ( à partir de Oracle 10.R2) : C’est le cache des données relatives à la queue de
messages utilisées par Oracle lors de la Réplication par synchronisation. ( exp:cas de serveur
principale et serveur secondaire) Paramètre STREAMS_POOL_SIZE.
A noter que dans la SGA, il y a une petite zone mémoire appelée SGA fixe. Elle inclut des infos
sur l’état de la base, l’instance, les verrous…
Les vues V$SGA et V$SGA_DYNAMIC_COMPONENTS.
23. 1 - 23
SGA
PGA
PGA
PGA
Processus 1 Processus 3
Processus 2 Processus ...
Dictionary
Cache
Library
Cache
DB Buffer
Cache
Shared
Pool
Redo Log
Buffer
Java Pool
Streams
Pool
Large Pool
SGA
SERVEUR BD =
Instance
+
BD (fichiers)
Récapitulatif
INSTANCE =
Zones mémoires
+
Processus
ZONES MÉMOIRES
=
3 + 3
Administration des bases de données sous Oracle
Chapitre 1 : Architecture d'une base de données Oracle
Architecture: Structure de la mémoire SGA
24. 1 - 24
PMON
SMON
Autres
Instances (base de données à part)
RECO
ARCn
DBWn LGWR
CKPT
PGA
Processus en arrière-plan
Mémoire SGA (System Global Area)
Obligatoires :
ASMB RBAL
Facultatifs :
Processus
utilisateur
Processus
serveur
Processus
d'écoute
Administration des bases de données sous Oracle
Chapitre 1 : Architecture d'une base de données Oracle
Architecture: Structure des processus
Introduction
25. 1 - 25
C’est une zone mémoire privée dédiée aux utilisateurs. Elle est créée pour
chaque processus serveur.
Elle stocke des informations spécifiques aux utilisateurs, tel que les
variables hôtes, les variables de session, l’état des curseurs utilisés, des
informations de tri etc.
La PGA totale allouée à tous les processus serveur est appelée PGA
agrégée.
Le paramètre PGA_AGGREGATE_TARGET définit la taille de la PGA
agrégée, c’est Oracle qui se charge de la répartir entre les différentes
processus serveur.
La PGA
Administration des bases de données sous Oracle
Chapitre 1 : Architecture d'une base de données Oracle
Architecture: Structure des processus
26. 1 - 26
Ils permettent une interaction entre les différentes composantes du
serveur ainsi qu’avec les utilisateurs.
Il existe trois types de processus
1. Les processus utilisateur
2. Les processus serveur
3. Les processus d’arrière plan
Les processus
Administration des bases de données sous Oracle
Chapitre 1 : Architecture d'une base de données Oracle
Architecture: Structure des processus
27. 1 - 27
Le processus utilisateur s’exécute au niveau client.
Le processus serveur s’exécute au niveau serveur BD.
L’interaction entre le serveur et les clients se fait en réalité grâce à
ces deux processus, chacun de son côté.
Lorsque le client est lié au serveur, on parle d’une connexion.
Lorsque l’utilisateur s’identifie, il ouvre une session.
Plusieurs sessions peuvent être ouvertes en même temps. Elles ne
doivent pas dépasser la valeur du paramètre SESSIONS*.
Les processus utilisateur et serveur
Administration des bases de données sous Oracle
Chapitre 1 : Architecture d'une base de données Oracle
Architecture: Structure des processus
28. 1 - 28
Le processus serveur (PS) reçoit les requêtes utilisateur, les exécute et renvoie
le résultat.
Un serveur BD : soit en mode DÉDIÉ, soit en mode PARTAGÉ.
En mode dédié, on dédie un PS à chaque utilisateur.
En mode partagé, on partage un PS pour un ensemble d’utilisateurs.
Le mode par défaut est le mode dédié. Pour activer le mode partagé, il faut
modifier la valeur de SHARED_SERVERS (par défaut =0).
La valeur de SHARED_SERVERS indique le nombre de processus serveur
partagés.
Rappelons qu’une zone de mémoire PGA est allouée à chaque PS.
Les processus utilisateur et serveur
Administration des bases de données sous Oracle
Chapitre 1 : Architecture d'une base de données Oracle
Architecture: Structure des processus
29. 1 - 29
Assurent le bon fonctionnement du serveur.
Maximisent la performance du serveur.
Démarrent avec ou après (sur demande) le démarrage de
l’instance.
Certains peuvent être exécutés en n exemplaires.
Les processus d’arrière plan
Administration des bases de données sous Oracle
Chapitre 1 : Architecture d'une base de données Oracle
Architecture: Structure des processus
30. 1 - 30
écrit sur les fichiers de données les anciens blocs utilisés « dirty », et
fait appel au Pmon, pour « Nettoyer » le DB Buffer Cache et ce pour:
Libérer de la place dans le cache pour y charger les nouveaux blocs
de données.
Peuvent fonctionner en 20 exemplaires en cas de forte charge
transactionnelle (inutile en cas de serveurs monoprocesseurs).
Le paramètre qui détermine ce nombre DB_WRITER_PROCESSES*.
L’écriture des blocs modifiés est différée c’est a dire que le COMMIT ne
déclenche pas automatiquement une écriture par le DBWn dans le
disque (fichier de données) .
Le DB Writer (DBWn)
Administration des bases de données sous Oracle
Chapitre 1 : Architecture d'une base de données Oracle
Architecture: Structure des processus
31. 1 - 31
Le DBWn se déclenche pour écrire les blocs dirty sur le disque: par ces
deux événements:
1. Le PS ne trouve pas de tampons « clean » après avoir scanné un
nombre seuil de tampons.
Seuil = 13
DB Buffer Cache
Le DB Writer (DBWn)
Administration des bases de données sous Oracle
Chapitre 1 : Architecture d'une base de données Oracle
Architecture: Structure des processus
32. 1 - 32
Le DBWn se déclenche (en écrivant les blocs dirty les moins récemment
utilisées sur le disque) par ces deux événements:
2. Après une certaine période pour faire avancer le point de reprise.
DB Buffer Cache
Data Files LOG Files
1. Insert…;
2. Update…;
Le DBW est déclenché !
3. Update…;
commit;
4. Insert…;
5. Update…;
commit;
LOG Buffer
1 2 3 4
5
1
2
3
4
5
1 2 3
4 5
1 2
CRASH !!!
Le point de reprise est la position
dans les fichiers journaux à partir
de laquelle les données sont
récupérables = le plus ancien
tampon dirty du DB cache.
Le DB Writer (DBWn)
Administration des bases de données sous Oracle
Chapitre 1 : Architecture d'une base de données Oracle
Architecture: Structure des processus
33. 1 - 33
Le DBWn ne se déclenche pas à la suite d’un COMMIT. Il faut donc
savoir qu’on peut se trouver dans l’une de ces deux situations:
1. Le DBWn écrit des modifications non-confirmés (non commités)
dans les fichiers de données. On dit qu’il anticipe.
2. Des modifications confirmées ne sont pas écrites sur les fichiers de
données, et restent en mémoire centrale (dans le DB Buffer
Cache).
Le DB Writer (DBWn)
Administration des bases de données sous Oracle
Chapitre 1 : Architecture d'une base de données Oracle
Architecture: Structure des processus
34. 1 - 34
Le LGWR écrit le contenu du Redo Log Buffer sur les fichiers journaux pour libérer de
l’espace au PS.
Le LGWR est déclenché par :
1. COMMIT écriture des entrés redo relatives à la transaction confirmée.
2. Après un délai (3 secondes)
3. Quand le Redo Log Buffer est plein au tiers
Le LOG Writer (LGWR)
Administration des bases de données sous Oracle
Chapitre 1 : Architecture d'une base de données Oracle
Architecture: Structure des processus
35. 1 - 35
La notion de fast COMMIT est liée à l’écriture différée des blocs dirty
confirmés sur les fichiers de données.
Dans le cas où : Après un COMMIT seules les entrées Redo de la
transaction confirmée sont écrites sur les fichiers journaux (les blocs dirty
ne sont pas écrits sur les fichiers de données par le DBWn), cela s’appelle
Fast COMMIT.
Le SCN (System Change Number) est un code affecté à toute transaction
confirmée par un COMMIT.
Le SCN est inscrit sur les entrées redo de la transaction confirmée sur les
fichiers journaux.
Ce système de codage est fondamental pour la restauration des données
en cas de crash du système.
Le fast COMMIT & le SCN
Administration des bases de données sous Oracle
Chapitre 1 : Architecture d'une base de données Oracle
Architecture: Structure des processus
36. 1 - 36
Le CKPT est lancé lorsque le système a besoin de faire un check point (point de
vérification).
Lorsqu’un point de vérification est déclenché, le CKPT envoie un message au
DBWn pour qu’il écrive tous les blocs dirty sur les fichiers de données.
Une fois le DBWn termine sa tâche, le CKPT écrit le SCN de la dernière
transaction confirmée dans les entêtes des fichiers de données ainsi que dans le
fichier de contrôle.
En cas de crash, les transactions récupérées à partir des fichiers journaux sont
celles dont le SCN est supérieur à celui écrit dans le fichier de contrôle.
Le Check Point (CKPT)
Administration des bases de données sous Oracle
Chapitre 1 : Architecture d'une base de données Oracle
Architecture: Structure des processus
37. 1 - 37
Les événements qui déclenchent un point de vérification (CKPT):
1. Lorsque le LGWR bascule d’un groupe à un autre. En fait le LGWR ne
prend pas le risque d’écraser des entrées Redo sans écrire les blocs
qui leurs correspondent dans les fichiers de données.
2. A la fermeture de la base de données.
3. Lors de la mise en offline d’un tablespace.
Le Check Point (CKPT)
Administration des bases de données sous Oracle
Chapitre 1 : Architecture d'une base de données Oracle
Architecture: Structure des processus
38. 1 - 38
Récupération des données au démarrage après un crash.
Optimisation de l’espace disque (libération des segments temporaires,
compactage des extensions libres et contiguës)
IL a un rôle de libération des ressources utilisées inutilement par le système.
Il surveille les espaces libres des fichiers de la base de données et les
réorganise si nécessaire afin de les défragmenter
Si erreur d’arrêt de la base analyse le rollback segment pour éviter les
deadlocks
Le SMON effectue ou bien un ROLLBACK, ou bien un ROLLFORWARD
ROLLBACK : annulation des modifications non-confirmées qui étaient
enregistrées sur disque par anticipation du DBWn.
ROLLFORWARD : enregistrement des modifications confirmées sur les
fichiers de données à partir des fichiers journaux.
Le System Monitor (SMON)
Administration des bases de données sous Oracle
Chapitre 1 : Architecture d'une base de données Oracle
Architecture: Structure des processus
39. 1 - 39
• Il assure la recuperation des processus utilisateur qui ont échoué.
– Nettoyage du cache de tampons de la base de données
– Enlever les plans d’execution qui ne sont plus choisis par l’optimizer
– Libére des ressources utilisées par le processus utilisateur en échec
• Il surveille les sessions pour détecter tout dépassement
du délai d'inactivité, ou plantage d’une sesion kill session .
• Il enregistre dynamiquement les services de base de données dans
les processus d'écoute.
Processus PMON
Cache de tampons de
la base de données
Processus utilisateur en échec
Utilisateur
PMON
Processus
serveur
tnslsnr
Administration des bases de données sous Oracle
Chapitre 1 : Architecture d'une base de données Oracle
Architecture: Structure des processus
Le Process Monitor (PMON)
40. 1 - 40
Détection du plantage des processus utilisateurs.
Imaginez ce scénario :
1. Un PU qui a déjà lancé une requête UPDATE
2. Les données modifiées sont naturellement verrouillées
3. Le PU se bloque suite à une raison
Les données seront verrouillées indéfiniment !
C’est là où le PMON entre en action, il détecte le PU bloqué,
annule la transaction en cours et libère les verrous
Le Process Monitor (PMON)
Administration des bases de données sous Oracle
Chapitre 1 : Architecture d'une base de données Oracle
Architecture: Structure des processus
41. 1 - 41
Écriture du contenu des fichiers journaux dans les fichiers journaux
archivés.
Déclenché par le basculement dans les fichiers journaux d’un groupe à
un autre.
Activé si le serveur fonctionne en mode ARCHIVELOG.
Le paramètre LOG_ARCHIVE_MAX_PROCESSES* spécifie le nombre
d’exemplaires d’ARCn, même si le LGWR peut spécifier ce nombre de
manière automatique (si pas d’intervention de l’administrateur).
ARCHIVE (ARCn)
Administration des bases de données sous Oracle
Chapitre 1 : Architecture d'une base de données Oracle
Architecture: Structure des processus
42. 1 - 42
Il existe d’autres processus d’arrière plan, nous nous arrêterons sur
l’ARCn.
Le paramètre d’initialisation PROCESSES* définit le nombre max de
processus connectés en même temps à l’instance.
La vue V$PROCESS inclut les informations de tous les processus en
cours d’exécution dans l’instance.
Les processus d’arrière plan
Administration des bases de données sous Oracle
Chapitre 1 : Architecture d'une base de données Oracle
Architecture: Structure des processus
43. 1 - 43
Introduction
La structure physique
- Les Fichiers de données (DataFiles)
- Les Fichiers de reprise (Redo Log Files)
- Les Fichiers de contrôle (Control Files)
La structure Logique
- Les Tablespaces
-Segments
- Extensions (Extent)
- Blocs
L architecture Oracle:
- Client /serveur
- Multitier
Administration des bases de données sous Oracle
Chapitre 2 :Structure de stockage d’une Base de Données Oracle
Plan
44. 1 - 44
Fichiers de
journalisation en ligne
Fichier de mots
de passe
Fichier de
paramètres
Fichiers de
journalisation
archivés
Fichiers de
contrôle
Fichiers de
données
Fichiers trace et fichier
d'alertes
Fichiers de
sauvegarde
Administration des bases de données sous Oracle
Chapitre 2 :Structure de stockage d’une Base de Données Oracle
Structure Physique
Introduction
45. 1 - 45
Fichier de contrôle
Fichier de contrôle (Control File)
- Contient des informations de contrôle sur la base:
Nom de la base, noms et chemins des fichiers de données et de
journalisation, informations de restaurations etc …
- Premier fichier lu par l’instance lors du démarrage.
- La vue V$CONTROLFILE nous renseigne sur le contenu du
fichier de contrôle.
-Il sont consultés et gérer en état mount de la base de données
SHOW PARAMETER CONTROL_FILES;
Fichier de contrôle
Administration des bases de données sous Oracle
Chapitre 2 :Structure de stockage d’une Base de Données Oracle
Structure Physique
46. 1 - 46
•Le nom de la base de données qui est pris avec le paramètre
•Le SID de l’instance lié à la base de données créée.
•Le timestamp de la création de la base de données.
•Les noms et localisations des fichiers de données et des fichiers de redo log sont mis
à jour dans un fichier de contrôle lorsqu’un fichier de données ou un fichier de redo
log est ajouté ou supprimé.
•Les informations sur les tablespaces sont mises à jour lorsqu’un tablespace est
supprimé ou ajouté.
•L’historique des switches de redo log.
•Les localisations et statuts des logs archivés sont enregistrés lorsque l’archivage est
activé.
•Les localisations et statuts des backups sont enregistrés par l’utilitaire Recovery
Manager.
•Le numéro de séquence de log courant est enregistré lorsque des switchs de log se
Contenu des fichiers de contrôle
Fichiers de contrôle
Administration des bases de données sous Oracle
Chapitre 2 :Structure de stockage d’une Base de Données Oracle
Structure Physique
47. 1 - 47
Fichier de données (Data Files)
- Stockent les données sous un format spécial à Oracle.
- Physiquement, un fichier de données est un ensemble de blocs SE. Un
bloc SE constitue l’unité d’E/S(écriture/lecture) des fichiers.
- Les fichiers de données sont logiquement regroupés sous forme de
tablespaces.
- Une BD Oracle 10g et 11g incluent au moins deux tablespaces, SYSTEM
et SYSAUX.
Fichiers de données
Fichier de données
Administration des bases de données sous Oracle
Chapitre 2 :Structure de stockage d’une Base de Données Oracle
Structure Physique
48. 1 - 48
INSERT INTO
UPDATE…
DELETE...
INSERT INTO
UPDATE…
DELETE...
DELETE
UPDATE
INSERT INTO
UPDATE
UPDATE…
INSERT INTO
DELETE
UPDATE
INSERT INTO
UPDATE
UPDATE…
INSERT INTO
Membre 1 Membre 2
Membre 1 Membre 2
Groupe 1
Groupe 2
Dans une BD Oracle toute les transaction sans enregistré dans des fichiers
Ces fichier sont dits fichiers de journalisation
Lorsque les fichier de groupe 1 sont pleins l’écriture est basculée
vers les fichiers de groupe 2 et cela d’une manière cycliques
Au minimum 2
groupes
Le processus LGW
Statut des groupes (la vue v$log)
Actif : les données ne sont pas encore
synconisés avec le datafils
Current: LGW est entrain d y écrire
Inactif : les données synconisés avec le
datafils ( #Actif)
Unused : jamais utilisé
Fichiers de journalisation
Administration des bases de données sous Oracle
Chapitre 2 :Structure de stockage d’une Base de Données Oracle
Structure Physique
49. 1 - 49
Les fichiers de journalisation contiennent toutes les modifications
effectuées sur les données depuis une certaine durée.
En cas de crash du système, ou d’altération des fichiers de données, on
peut reconstituer les données à partir des fichiers journaux.
L’écriture sur les fichiers journaux est multiplexée et cyclique.
L’ensemble des fichiers multiplexés (qui contiennent donc les mêmes
informations) sont appelés membres et forment un groupe.
L’écriture est multiplexée à l’intérieur d’un groupe, et cyclique entre les
groupes.
Les vue DBA_LOG_FILES et v$log et v$logfile(pour les member)
contiennent les informations des fichiers journaux.
Pour ajouter un fichier log alter database add logfile
Example :alter database add logfile group 4 ('d:men') size 4M ;
alter system switch logfile
alter database add logfile member 'd:men4_2‘ to group 4 size 4M ;
Fichiers de journalisation
Administration des bases de données sous Oracle
Chapitre 2 :Structure de stockage d’une Base de Données Oracle
Structure Physique
50. 1 - 50
L’écriture des fichiers journaux est cyclique, ce qui fait qu’à un certain
moment, certaines transactions seront écrasées.
La solution, c’est d’archiver les fichiers journaux avant de les écraser.
Les fichiers journaux archivés peuvent être stockés sur des disques
(serveurs) distants, ce qui optimisera la sécurité de la BD.
Une base de données n’est pas forcément en mode ARCHIVELOG, si elle
ne l’est pas, les fichiers journaux ne sont pas archivés.
Fichiers de journalisation
Administration des bases de données sous Oracle
Chapitre 2 :Structure de stockage d’une Base de Données Oracle
Structure Physique
51. 1 - 51
1- Pour ajouter un fichier log alter database add logfile
Exemple :alter database add logfile group 4 ('d:men') size 4M ;
2- Pour basculer alter system switch logfile
3- Pour ajouter un membre alter database add logfile
Exemple: alter database add logfile member 'd:men4_32.log‘ to
group 4;
4- Pour supprimer un membre : alter database drop logfile
Example : alter database drop logfile member 'd:men4_2‘
( groupe ne soit pas current on lance un switch dans ce cas )
5-Pour supprimer un groupe : alter database drop logfile group Num_group;
Example : alter database drop logfile group 4;
6- Le redimensionnement des REDO consiste à les supprimer et les recréer à la bonne taille.
Pour les supprimer, il faut qu'ils soient INACTIFS (qu'ils ne contiennent plus de transactions non
Gestion Fichiers de journalisation Ajout/suppression
Administration des bases de données sous Oracle
Chapitre 2 :Structure de stockage d’une Base de Données Oracle
Structure Physique
52. 1 - 52
Administration des bases de données sous Oracle
Chapitre 2 :Structure de stockage d’une Base de Données Oracle
Structure Physique
Gestion Fichiers de journalisation : déplacer / renommer des membres
Par soucis de performance il est parfois nécessaire de devoir déplacer ou renommer
les membres Redolog d'une instance de base de données.
Voici une des solutions, simple et efficace avec ALTER DATABASE RENAME FILE.
Etape 1 - On constate l'emplacement physique actuel des membres redolog :
SQL> SELECT member FROM v$logfile;.
Etape 2 - On stop la base de données (SHUTDOWN) et on deplace le
membre redolog (HOST MOVE)
SQL> shutdown immediate;
SQL> host move encien_fichier.LOG nouveau_fichier.LOG
1 fichier(s) déplacé(s).
- Ou bien vous le déplacer et renommer par les commande du SE ( ou coper/coller)
- Vous pouvez aussi utiliser HOST COPY mais il faudra supprimer l'ancien Redolog à la main ).
Etape 3 - démarrer la base en mode MOUNT, puis spécifier à Oracle le nouvel
emplacement du Redolog
SQL> startup mount
SQL>ALTER DATABASE RENAME FILE encien_fichier .LOG to nouveau_fichier.LOG
Etape 4 - ALTER DATABASE OPEN et on vérifie la prise en compte par Oracle
53. 1 - 53
Un fichier de paramètres inclut l’ensemble des paramètres de
configuration du serveur BD.
L’instance lit ce fichier et fonctionne selon les valeurs des paramètres qui
y sont spécifiés.
Il existe deux types de fichiers de paramètres:
C:product11.2.0dbhome_1database
PFILE (parameter file) SPFILE (server parameter file)
Fichier texte Fichier binaire
Modifiable via un éditeur texte Modifiable via SQL
Disponible sur la machine de démarrage Centralisé (sur le serveur uniquement)
Nommé init%.ora Nommé spfile%.ora
Modification à froid Modification à chaud
Le fichier de paramètres ( PFILE et SPFINE init%.ora)
Administration des bases de données sous Oracle
Chapitre 2 :Structure de stockage d’une Base de Données Oracle
Structure physique
54. 1 - 54
Introduction
Base de données
Tablespace
Fichier de
données
Segment
Extent
Bloc de
données Oracle
Système de stockage
• SAN
• NAS
• Exadata
• Système de fichiers
• NFS
• ASM
• RAW
Structures logiques Structures physiques
Administration des bases de données sous Oracle
Chapitre 2 :Structure de stockage d’une Base de Données Oracle
Structure Logique
55. 1 - 55
Segments, extents et blocs
• Les segments existent dans un tablespace.
• Les segments sont des ensembles d'extents.
• Les extents sont des ensembles de blocs de données contigus.
• Les blocs de données sont mis en correspondance avec des
blocs du disque.
Segment Extents
Blocs de
données
Blocs du disque
(stockage dans
le système de
fichiers)
Administration des bases de données sous Oracle
Chapitre 2 :Structure de stockage d’une Base de Données Oracle
Structure Logique
56. 1 - 56
Tablespaces et fichiers de données
8 Ko 8 Ko
8 Ko 8 Ko
8 Ko 8 Ko
8 Ko 8 Ko
8 Ko 8 Ko
8 Ko 8 Ko
8 Ko 8 Ko
8 Ko 8 Ko
8 Ko
8 Ko
8 Ko
8 Ko
Tablespace 1
Fichier de
données 1
Fichier de
données 2
Extent
64 Ko
Extent
96 Ko
Segment
160 Ko
Tablespace 2 (Bigfile)
Fichier de
données 3
Un seul fichier de
données autorisé
<= 128 To
Administration des bases de données sous Oracle
Chapitre 2 :Structure de stockage d’une Base de Données Oracle
Structure Logique
57. 1 - 57
Les tablespaces
Les tablespaces
- Un tablespace est une unité logique qui correspond physiquement à un
ou plusieurs fichiers de données.
- L’administrateur (DBA) agit sur les tablespaces et non sur les fichiers de
données.
- Une BD est organisée sous forme de plusieurs tablespaces, chacun
correspondant à un contexte (thème).
- EX: On peut créer plusieurs tablespaces dans une BD d’une Ese
commerciale qui gère la FACTURATION, la GRH, et le PARC INFO.
Administration des bases de données sous Oracle
Chapitre 2 :Structure de stockage d’une Base de Données Oracle
Structure Logique
58. 1 - 58
- Le tablespace FACTURATION fact01.dbf et fact02.dbf
- Les tables FACTURE, LIGNE_FACTURE, PRODUIT, CLIENT, REGLEMENT.
- Le tablespace GRH grh01.dbf
- Les tables PERSONNEL, PAIE, SANCTION etc.
- Le tablespace PARC parc01.dbf
- Les tables EQUIPEMENT, CATEGORIE, REPARATION, MAINTENANCE etc.
- Avantage: On peut administrer par tablespace, et donc par partie (par rapport à la
BD). Par exemple, pour maintenir certaines tables relatives à la facturation, on peut
mettre uniquement le tablespace FACTURATION en offline, au lieu de rendre toute
la base indisponible ce qui touchera des centaines d’utilisateurs qui ont besoin de
manipuler les données de la GRH, PARC INFO etc.
Les tablespaces
Administration des bases de données sous Oracle
Chapitre 2 :Structure de stockage d’une Base de Données Oracle
Structure Logique
59. 1 - 59
Les tablespace
- Les vues DBA_TABLESPACES et DBA_DATA_FILES incluent toutes les
informations relatives aux tablespaces et aux fichiers de données de la
base.
- Pour afficher les noms des fichiers de données ainsi que les
tablespaces auxquelles ils correspondent:
SELECT tablespace_name, file_name
FROM DBA_DATA_FILES
ORDER BY tablespace_name;
L’occupation d’un tablespace voir la table DBA_EXTENTS*
Les tablespaces
Administration des bases de données sous Oracle
Chapitre 2 :Structure de stockage d’une Base de Données Oracle
Structure Logique
60. 1 - 60
Structure de stockage
Database
Tablespace
Segment
Extension
Bloc de données
Fichier de
données
Bloc SE
Structure Logique Structure Physique
Segment
- C’est l’espace occupé par un objet base
de données (Table ou Index)
- Il existe 4 types de segments:
1. Segment table: espace occupé par une table
2. Segment index: espace occupé par un index
3. Segment d’annulation: espace qui inclut les
informations d’annulation
4. Segment temporaire: espace annexe à la
MC pour les opérations volumineuses.
Administration des bases de données sous Oracle
Chapitre 2 :Structure de stockage d’une Base de Données Oracle
Structure Logique
61. 1 - 61
Le segment d’annulation sert à stocker les données
nécessaires:
1. A l’annulation
Mémoire centrale
Disque
Le segment d’annulation
Update table1
set col1=A
Where col1=B;
Administration des bases de données sous Oracle
Chapitre 2 :Structure de stockage d’une Base de Données Oracle
Structure Logique
62. 1 - 62
Le segment d’annulation sert à stocker les données
nécessaires:
1. A l’annulation
Disque
Mémoire centrale
Update table1
Set col1=A
Where col1=B;
En effet, la MAJ peut être effectuée sur
disque sans attendre un COMMIT.
Segment
table
Segment
d’annulation
Nouvelle
image (A)
La nouvelle image est enregistrée dans un segment table, l’ancienne dans un segment
d’annulation. Au cas où un ROLLBACK est effectué, c’est cette image qu’on utilisera pour
rétablir les données.
Ancienne
image (B)
Le segment d’annulation
Administration des bases de données sous Oracle
Chapitre 2 :Structure de stockage d’une Base de Données Oracle
Structure Logique
63. 1 - 63
Le segment d’annulation sert à stocker les données
nécessaires:
1. A l’annulation
2. A la lecture cohérente (ou dite aussi consistante).
11:58
Update table1
set col1=A
Where col2=C;
12:01
Select col1 From table1
Where col2=C;
Nouvelle valeur ou
ancienne?
Ancienne valeur
Le segment d’annulation
Administration des bases de données sous Oracle
Chapitre 2 :Structure de stockage d’une Base de Données Oracle
Structure Logique
64. 1 - 64
Le segment d’annulation sert à stocker les données
nécessaires:
1. A l’annulation
2. A la lecture cohérente (ou dite aussi consistante avant
validation/commit).
a. Si pas d’anticipation d’enregistrement des MAJ, Alors la lecture
se fait directement à partir du segment table.
b. Si anticipation d’enregistrement des MAJ, Alors la lecture se fait
à partir du segment d’annulation.
Le segment d’annulation
Administration des bases de données sous Oracle
Chapitre 2 :Structure de stockage d’une Base de Données Oracle
Structure Logique
65. 1 - 65
Le segment temporaire sert à stocker les données relatives à des
opérations volumineuses si la mémoire centrale ne suffit pas à les
exécuter.
Exemple d’opérations volumineuses:
- Certains tris.
- Certaines jointures.
- Création d’index.
- Etc.
Le segment temporaire
Administration des bases de données sous Oracle
Chapitre 2 :Structure de stockage d’une Base de Données Oracle
Structure Logique
66. 1 - 66
Database
Tablespace
Segment
Extension
Bloc de données
Fichier de
données
Bloc SE
Structure Logique Structure Physique
Un segment est à son tour composé d’extensions
Une extension est un ensemble de
blocs contigus appartenant à un même
fichier de données
Par contre un segment peut s’étaler sur
plusieurs fichiers à travers ses
extensions.
La taille d’un bloc de données est
définie par le paramètre
DB_BLOCK_SIZE
Extension
Administration des bases de données sous Oracle
Chapitre 2 :Structure de stockage d’une Base de Données Oracle
Structure Logique
67. 1 - 67
Fact01.dbf Fact02.dbf
Segment A (Extent 1) Segment A (Extent 2)
Segment B (Extent 1)
Segment B (Extent 2)
Segment C (Extent 1)
Structure du tablespace FACTURATION
Database
Tablespace
Segment
Extension
Bloc de données
Fichier de
données
Bloc SE
Structure Logique Structure Physique
Extension : Exemple
Administration des bases de données sous Oracle
Chapitre 2 :Structure de stockage d’une Base de Données Oracle
Structure Logique
86. 1 - 86
Deux architectures possibles:
client/serveur : des applications clientes envoient les requêtes SQL et
PL/SQL a un serveur. ( Voir TP)
Administration des bases de données sous Oracle
Chapitre 2 :Structure de stockage d’une Base de Données Oracle
architectures possibles:
Multitier : des serveurs d'application allègent la charge du
serveur en réalisant certains accès pour les clients.
87. 1 - 87
pour se connecter au serveur oracle
il faut deux choses
Configuration Paramètre locale fichier
tnsnames.ora
Coté client
Coté serveur
Configuration Paramètre réseau fichier
listner.ora
SID_Alis =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.4)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ORCL)
)
)
LISTENER = (DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521 )) ) )
Administration des bases de données sous Oracle
Chapitre 2 :Structure de stockage d’une Base de Données Oracle
Configuration de Paramètres de nommage locaux (tnsnames.ora) et
réseau (Lisner.ora)
88. 1 - 88
Synthèse
Ce chapitre vous a permis d'apprendre à :
• énumérer les principaux composants de l'architecture d'une
base de données Oracle
• décrire les structures mémoire
• décrire les processus en arrière-plan
• définir la relation entre les structures de stockage logiques
et physiques
89. 1 - 89
TD N°1
1) Citer le cycle de vie d’une base de données
2) Quel est la différence entre Un serveur BD en mode DÉDIÉ, et en mode
PARTAGÉ.
3) A Quoi servent les deux fichier (tnsnames.ora) et Lisner.ora)
4) Quel est le nom du paramètre ou est définit La taille d’un bloc de données
5) Que contient Les deux vues DBA_TABLESPACES et DBA_DATA_FILES
6) Donner la commande qui permet d’ajouter un fichier log
7) Quelle est la relation entre les fichiers de données (datafiles) et les tablespaces
8) Citer quelques taches qu’effectue les processus DB Writer (DBWn), SMON , et
PMON
9) Quel est le nom de la zone de mémoire contenant des données et des
informations de contrôle pour un processus serveur ou un processus en
arrière-plan ?
10)Représenter dans un schéma de l’architecture de l’SGDB oracle
90. 1 - 90
1) Le cycle de vie d’une base de données
Conception , Implémentation , Utilisation (exploitation ), maintenance et
administration
9) Le nom de la zone de mémoire contenant des données et des
informations de contrôle pour un processus serveur ou un processus
en arrière-plan
PGA
10) un schéma synaptique de l’architecture de l’SGDB oracle
Note: La correction complète est faites en classe
91. Chapitre 3 :
Création de la structure d’une base de données
Phase de réflexion
Création de la base de données: Graphiquement DBCA et
manuellement
Création et Gestion des tablespaces et des tables et
tablespace Undo
Rappels sur les indexes Principes choix et création : index
btree , BitMap
Alimentation d'une base de données: le sqlloader
92. Avant création, et pour faire les bons choix:
Réfléchir aux tables et indexes à venir, estimer leur taille
Planifier la distribution de ses fichiers, l’espace libre dans les
blocks
Décider entre une gestion classique ou automatique des fichiers
Déterminer la taille des blocs de données
Choisir le mode de gestion de l’annulation, Tablespace dédié
Segments d’annulation
Déterminer la stratégie de sauvegarder et reprise après panne
-reprendre l’etat de sauvgarde
- Dérouler le fichier de journalisation
-réplication
Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création de la base : Phase de réflexion
93. Deux possibilités:
Utiliser l’assistant Oracle : graphique : DBCA
Créer manuellement à l’aide de scripts
En cas de mise à jour d’Oracle ou de migration ,
une procédure particulière existe Compatibilité
ascendante, on ne recrée pas les bases de données.
Pré requis :
Oracle doit-être installé
Vous devez être administrateur du SE et de l’instance
La mémoire principale et mémoire disque doit être
suffisante
Administration des bases de données sous Oracle
Chapitre 3 : Créer une base de données
Création de la base : Généralités
94. ■ Une Base de données comporte les états suivants
Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création de la base : États de la l’instance ( base)
95. Les Privilèges utiles
Les Privilèges nécessaires pour créer, démarrer ou arrêter une base
SYSDBA (arrêt, démarrage, modification, création d’ une base, …)
SYSOPER(arrêt démarrage d’une base, modification)
Administration des bases de données sous Oracle
Chapitre 3 : Créer une base de données
Création de la base : États de la base
96. 1. Démarrer l’assistant
Soit par start->programme->OracleHome->Configuration and
Migration Tools-> Database Configuration Assistant
Ou bien on tape DBCA dans l’invite DOS ( ou dans un terninal en
cas Linux et Unix)
2. Choisir créer une base
3. Choisir un template (modèle) de base
4. Donner le nom global de la base (exemple DBTEST) ainsi que le SID
(DBTEST)
5. Sélectionner le mode de déploiement de la base (mode dédié) ou
(mode serveurs multithreads)
6. Fixer la taille de la SGA(buffer cache, shared pool, large pool, java
pool)
7. sélectionner le mode d’archivage de la base (Archivelog ou
noarchivelog).Localiser les fichiers d’archive
8. Fixer la taille maximale de la zone de tri ainsi que les caractères sets
9. Localiser les fichiers de contrôles, de données et redo log
10. Modifier à tout moment les paramètres d’itialisation supplémentaires
et démarrer la création de la base
Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création de la base : Étapes à suivre pour créer une
base avec le Database Configuration Assistant: DBCA
97. Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création de la base : Étapes pour créer une base Manuellement
Spécifier le nom de l'instance SID : ( ici DB1 )
positionner les variable : oracle_home=D:apphpproduct11.2.0dbhome_1
oracle_base=D:apphp et oracle_sid= DB1
Créer le fichier de paramètres PFILE (partir de l'exemple Oracle init%.ora)
(D:apphpadminorclpfileinit.ora)
Nom de la base, emplacement des fichiers de contrôle ….
Créer le fichier de mot de passe - orapwd file=orapwDB1 password=Test01;
Pour windows executer : oradim -new -sid DB1
Se connecter a l'instance inactive
SQLPLUS nolog puis CONNECT AS SYSDBA
STARTUP PFILE='D:apphpadminDB1pfileinit.ora' nomount
Créer un fichier de paramètre serveur SPFILE (D:apphpproduct11.2.0dbhome_1database)
(a partir du fichier manuel) Create SPFILE from PFILE
SQL> create SPFILE='D:APPHPPRODUCT11.2.0DBHOME_1DATABASESPFILEDB1.ora' from
PFILE='D:apphpadminDB1pfileinit.ora'; ;
Mon noyau oracle (ORACLE_BASE )est installé sous D:apphp
À l’aide la commade MKDIR on crée les répertoires suivant :
D:apphpadmin , D:apphporadata , D:apphpadminDB1,
D:apphporadataDB1 , D:apphpadminDB1bdump , D:apphpadminDB1cdump
D:apphpadminDB1pfile et D:apphpadminDB1udump,
D:apphpflash_recovery_areaDB1
98. CREATE DATABASE DB1
USER SYS IDENTIFIED BY pz6r58
USER SYSTEM IDENTIFIED BY y1tz5p
LOGFILE GROUP 1 ('D:apphporadataDB1redo01.log') SIZE 100M,
GROUP 2 ('D:apphporadataDB1redo02.log') SIZE 10M,
GROUP 3 ('D:apphporadataDB1redo03.log') SIZE 10M
MAXLOGFILES 5
MAXLOGMEMBERS 5
MAXLOGHISTORY 1
MAXDATAFILES 100
MAXINSTANCES 1
CHARACTER SET US7ASCII
NATIONAL CHARACTER SET AL16UTF16
DATAFILE 'D:apphporadataDB1system01.dbf' SIZE 320M REUSE
EXTENT MANAGEMENT LOCAL
SYSAUX DATAFILE 'D:apphporadataDB1sysaux01.dbf' SIZE 320M REUSE
DEFAULT TABLESPACE tbs_1
DATAFILE 'D:apphporadataDB1users01.dbf' SIZE 50M REUSE AUTOEXTEND ON
MAXSIZE UNLIMITED
DEFAULT TEMPORARY TABLESPACE tempts1
TEMPFILE 'D:apphporadataDB1temp01.dbf'
SIZE 20M REUSE
UNDO TABLESPACE undotbs1
DATAFILE 'D:apphporadataDB1undotbs01.dbf'
SIZE 20M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;
99. création des vues et synonymes publics (CATALOG.SQL)
• Installation de l'option procédurale(CATPROC.SQL)
• création des synonymes publics pour les tables virtuelles (UTLMONTR.SQL)
• Création des Synonymes sur les vues dba_* du dictionnaire (CATDBSYN.SQL) pour
le DBA
Le chemin de ces scriptes .sql est :
{ORACLE_HOME}RDBMSADMIN
Sur Mon PC : D:apphpproduct11.2.0dbhome_1RDBMSADMIN
Créer de nouveaux tablespace, par exemple :
- Un USERS pour les utilisateurs
- un INDX pour les index
Lancer les scripts de création du dictionnaire (catalog.sql,catproc.sql) et
éventuellement d'autres scripts optionnels
Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création de la base : Étapes pour créer une base Manuellement
(suite)
100. Précisions sur les paramètres de l'instance (pfile)
le nom de la base ne comporte que 8 caractères
créer au moins deux fichiers de controles
Sur des disques diferents si possible
Laisser Oracle choisir la taille des blocs
On peut contrôler la SGA
En lui fixant une taille maximale
en fixant la taille de différents composants
On peut changer la taille plus tard, de façon dynamique
On peut fixer le nombre de processus autorisés
On doit choisir un mode de gestion des annulations
Comment on gère les données d'annulation ? (Avant Commit)
Automatique : gérées dans un tablespace
Manuel : gérées dans les segments d'annulation (Undo)
Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création de la base : Étapes pour créer une base Manuellement
(suite)
101. Remarques complémentaires:
Si la création échoue, visualiser le chier d'alertes (show parameter user_dump)
Arrêter l'instance
Supprimer les fichiers crées pendant la tentative
Pour supprimer une base : ( commande drop database)
La base doit être montée et fermée
sql> shutdown immediate;
sql> startup mount exclusive restrict
sql> Drop database ;
Conserve les fichiers d'archivage et les copies
Pour modifier des paramètres
Les commandes ALTER SYSTEM pour les paramètres d'instance (modifie le SPFILE,
pas le PFILE !)
La commandesALTER DATABASE pour revenir sur les choix du CREATE DATABASE
Pour voir les informations sur la base
Show parameters, vues 'database_properties' et V$DATABASE
Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création de la base : Étapes pour créer une base Manuellement
(suite)
102. Cote serveur
Un processus d‘écoute utilisant un protocole réseau :
listenerSID
Un serveur BD Oracle = instance + base
Les configurations (services d‘écoute) sont enregistrées dans
listener.ora
Éditable a la main, ou via outils graphiques
Côte client
Configurations (services d'acces) enregistrées dans tnsname.ora
Permet au client de se connecter de façon transparente
Éditable a la main, ou via outils graphiques
Configuration du reseau
Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création de la base : Étapes pour créer une base Manuellement
(suite)
103. Positionner les variables d'environnement ORACLE_SID et ORACLE_HOME
Démarrage de la base possible par paliers (startup nomount, startup mount,
et startup open)
Posséder les privilèges appropriés (SYSDBA, SYSOPER, OSDBA ou OSOPER, ...)
Indiquer si nécessaire le fichier des paramètres
■ Syntaxe de la commande
STARTUP [FORCE] [RESTRICT] [PFILE=fich_param] [OPEN | MOUNT |
NOMOUNT]
ALTER DATABASE [nom_base] MOUNT | OPEN
Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création de la base : Démarrage d'une base :Procédure
Générale
104. ■ Description des mots et paramètres
FORCE Si instance ouverte, Fermeture puis démarrage
RESTRICT sert à des tâches de maintenance. Il faut avoir
le privilège Restricted Session
PFILE Indique le fichier des paramètres
OPEN démarrer et ouvrir les fichiers de la base
MOUNT Instance démarrée fichier(s) de contrôle ouvert(s)
NOMOUNT Seule l'instance est démarrée
ALTER DATABASE : permet le démarre par paliers après un
startup NOMOUNT ou MOUNT
Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création de la base : Démarrage d'une base
105. ■ Exemple
• Variables d’environnement
Unix $export ORACLE_SID = COURS
$ export ORACLE_HOME=useroracle
Windows Set ORACLE_SID = COURS
set ORACLE_HOME=D:apphpproduct11.2.0dbhome_1
Lancer SQLPLUS $sqlplus username : sys as sysdba
démarrer et ouvrir les fichiers de la base
SQL >startup ; oubien $ SQL>startup OPEN
pfile=D:apphpproduct11.2.0dbhome_1dbsinitCOURS.ora;
démarrer la base par paliers
-Instance démarrée, fichiers de contrôles ouverts SQL >startup mount ;
- En plus les fichiers de données sont ouverts SQL > alter database open ;
Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création de la base : Démarrage d'une base
106. Posséder les privilèges OS (osdba, osoper)
positionner les variables d'environnement (ORACLE_SID et ORACLE_HOME)
Lancer l'outil SQLPLUS
■ Syntaxe de la commande:
SHUTDOWN [NORMAL | IMMEDIATE | ABORT | TRANSACTIONAL]
– NORMAL attend la déconnexion de l'ensemble des utilisateurs
– IMMEDIATE Invalide les transactions en cours et déconnecte les users
– ABORT Arrêt violent de l'instance (recouvrement utile : SMON)
- TRANSACTIONAL Contrairement à IMMEDIATE, laisse finir les transactions en cours
Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création de la base : Arrêt d'une base:■ Procédure Générale
107. • Positionner les variables d'environnement (UNIX)
$export ( set dans Windouws) ORACLE_SID=COURS
$export ( set dans Windouws) ORACLE_HOME=usersoraclev9
• Lancer SQL $SQL sys as sysdba
1- arrêt normal avec attente de déconnexion : SQL>shutdown
2- Ou Arrêt immédiat : Annulation des transactions en cours et déconnexion
: SQL>shutdown immediate ;
Les utilisateurs ont le message suivant :
ORA-03113 : end-of-file on communication channel
3- ou Arrêt brutal (pas d’attente de déconnexion, pas d'invalidation de
transactions en cours) : SQL >shutdown abort;
Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création de la base : Arrêt d'une base
■ Exemple
108. Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création et Gestion des tablespaces et tables: tablespaces
Rappel
109. Espace de stockage logique des objets
Un tablespace = plusieurs fichiers de donnees
Un seul dans le cas des tablespace a gros chier (bigfile)
Il est necessaire d'utiliser plusieurs tablespace :
Separer les donnees des utilisteurs du dictionnaire
Separer les donnees d'applications différentes, pour alléger les accès et
réduire les risques de panne des applications
Tablespaces optimisés pour certaines tâches : lecture seule ou mises a jour
fréquentes, espace temporaire
Sauvegarde individuelle des tablespace
Stocker un tablespace par disque, pour réduire les
concurrences ES
Pour chaque utilisateur il faut assigner un quota
Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création et Gestion des tablespaces et tables : tablespaces
Rappel : grande lignes
110. Tablespaces Ordinnaire Stockets les données
Liés aux tables.
Tablespace d'annulation, pour les opérations non valides
Tablespaces temporaires : pour la gestion des tris
Une instance + un tablespace = un segment de tri
Affectés à chaque utilisateurs
Forcement à gestion locale depuis 10g
ne génère pas d‘écriture dans les fichiers de reprise
* Pour vérifier le statut de nos tablespace voilà une requête :
SELECT tablespace_name, status, contents, extent_management FROM dba_tablespaces;
Différents types de tablespaces
Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création et Gestion des tablespaces et tables : tablespaces
111. Bigfilele tablespaces (jusqu'a 128 tera)
Lorsqu'on a besoin de plus de capacite (64 000 fichiers de données au maximum)
Simplifie la gestion du tablespace (un seul fichier)
Uniquement pour les tablespace a gestion locale et automatique de l'espace
Différents types de tablespaces (suite)
Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création et Gestion des tablespaces et tables : tablespaces
112. Tablespace créé par défaut lors de la création de la base
contient le dictionnaire de données
contient un Rollback segment créé par défaut SYSTEM
il est déconseillé d'y stocker des données autres que celles du dictionnaire
Le tablespace SYSTEM
Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création et Gestion des tablespaces et tables : tablespaces
113. CREATE TABLESPACE <tablespacename>
DATAFILE <filename> SIZE <nn> AUTOEXTEND ON|OFF
TEMPORARY|PERMANENT
EXTENT MANAGEMENT LOCAL|DICTIONARY
LOGGING|NOLOGGING
ONLINE|OFFLINE
SEGMENT SPACE MANAGEMENT MANUAL|AUTO
113
Ajout possible d’autre fichier, separé par la virgule
Clause obligatoire pour la gestion des fichier par manuellement
Clause optionnelle pour la gestion des fichier par oracle(OMF)
On peut specifier la taille dans les deux cas
Note: il y a d’autre clauses optionnels
Syntaxe Création de tablespace
Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création et Gestion des tablespaces et tables : tablespaces
114. CREATE TABLESPACE <tablespacename>
DATAFILE <filename> SIZE <nn> AUTOEXTEND ON|OFF
TEMPORARY|PERMANENT
EXTENT MANAGEMENT LOCAL|DICTIONARY
LOGGING|NOLOGGING
ONLINE|OFFLINE
SEGMENT SPACE MANAGEMENT MANUAL|AUTO
114
TEMPORARY: est utilisé dans le cas des tablespaces
temporaire gérer par le dictionnaire oracle
PERMANENT: Option par Default; stocker les objects
(tables et indexes) d’une façon permanente
Syntaxe Création de tablespace
Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création et Gestion des tablespaces et tables : tablespaces
115. CREATE TABLESPACE <tablespacename>
DATAFILE <filename> SIZE <nn> AUTOEXTEND ON|OFF
TEMPORARY|PERMANENT
EXTENT MANAGEMENT LOCAL|DICTIONARY
LOGGING|NOLOGGING
ONLINE|OFFLINE
SEGMENT SPACE MANAGEMENT MANUAL|AUTO
115
LOCAL: option par défault; gere les extents libres free
par un index bitmap dans la tablespace
DICTIONARY: le tablespace gere les extents libre par le
dictionnaire
Note: D’autres option peuvent etre ajouté ( voir la suite)
Syntaxe Création de tablespace
Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création et Gestion des tablespaces et tables : tablespaces
116. CREATE TABLESPACE <tablespacename>
DATAFILE <filename> SIZE <nn> AUTOEXTEND ON|OFF
TEMPORARY|PERMANENT
EXTENT MANAGEMENT LOCAL|DICTIONARY
LOGGING|NOLOGGING
ONLINE|OFFLINE
SEGMENT SPACE MANAGEMENT MANUAL|AUTO
116
LOGGING: Par Default; tout les DML, DDL, et les insertion
INSERT en masse sont enregistrés dans le redo log
NOLOGGING: Sauf les commandes DML sont enregistrés
dans le redo log
Syntaxe Création de tablespace
Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création et Gestion des tablespaces et tables : tablespaces
117. CREATE TABLESPACE <tablespacename>
DATAFILE <filename> SIZE <nn> AUTOEXTEND ON|OFF
TEMPORARY|PERMANENT
EXTENT MANAGEMENT LOCAL|DICTIONARY
LOGGING|NOLOGGING
ONLINE|OFFLINE
SEGMENT SPACE MANAGEMENT MANUAL|AUTO
117
ONLINE: Par Default; le tablespace est prét à utilisé
OFFLINE: le tablespace n’est encore prét à utilisé
Syntaxe Création de tablespace
Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création et Gestion des tablespaces et tables : tablespaces
118. CREATE TABLESPACE <tablespacename>
DATAFILE <filename> SIZE <nn> AUTOEXTEND ON|OFF
TEMPORARY|PERMANENT
EXTENT MANAGEMENT LOCAL|DICTIONARY
LOGGING|NOLOGGING
ONLINE|OFFLINE
SEGMENT SPACE MANAGEMENT MANUAL|AUTO
118
AUTO: gere les espace libre des segment dans un bitmap
dans la tablespace
MANUAL: gere les espace libre des segment dans le
dictionnaire de données oracle
Syntaxe Création de tablespace
Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création et Gestion des tablespaces et tables : tablespaces
119. CREATE TABLESPACE APPLI_PERSONNEL
DATAFILE 'homeFichier1_app_pers.dbf‘ SIZE 100M,
'homeFichier2_app_pers.dbf‘ SIZE 10M
DEFAULT STORAGE ( INITIAL 100K NEXT 50K MINEXTENTS 4
MAXEXTENTS 100 PCTINCREASE 25 )
EXTENT MANAGEMENT DICTIONARY;
Exemple
Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création et Gestion des tablespaces et tables : tablespaces
PCTINCREASE 25 veut dire :
Taille de L’extent suivant = taille de l’extent précédent +25%
storage (initial 100K next 50K minextents 1 maxextents 30 pctincrease 5);
-max 30 extents, le premier à une taille de 100K, le suivant de 50K, puis 5% de plus :
(si un bloc = 4K, ) Le 3eme extent est de : 50K+5%=52.5K=13 blocs
120. Création des tablespaces gérés dans le dictionnaire ( gestion manuelle)
Généralités
– Les informations sur les extensions des segments sont gérées dans le
dictionnaire
– C’ est l’ approche historique de création de tablespaces sous Oracle jusqu’ à la
version 8i
Les extensions des segments peuvent avoir des tailles différentes
Les extensions sont définies par le DBA en s’ appuyant sur les clauses
DEFAULT STORAGE du tablespace ou STORAGE d’ un segment
Ce type de tablespace à partir de la version 9i ne peut être crée que si le
tablespace System est lui même géré dans le dictionnaire
Tablespaces gérés par le Dictionnaire
Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création et Gestion des tablespaces et tables : tablespaces
121. Exemple1
SQL> CREATE TABLESPACE APPLI_COMPTA
DATAFILE 'homeFichier1_app_cpt.dbf‘ SIZE 10M AUTOEXTEND ON NEXT 10M
MAXSIZE UNLIMITED EXTENT MANAGEMENT DICTIONARY;
Exemple2
SQL> CREATE TABLESPACE APPLI_PERSONNEL
DATAFILE 'homeFichier1_app_pers.dbf'SIZE 100M, 'homeFichier2_app_pers.dbf‘
SIZE 10M DEFAULT STORAGE ( INITIAL 100K NEXT 50K MINEXTENTS 4
MAXEXTENTS 100 PCTINCREASE 25 )
EXTENT MANAGEMENT DICTIONARY;
Création des Tablespaces gérés par le Dictionnaire
Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création et Gestion des tablespaces et tables : tablespaces
122. – Un tablespace géré localement prend en charge la gestion de ses extent
– une Bitmap est créé dans l'entête de chaque fichier pour identifier les Blocs ou les
Extents
– c’est l’Option par défaut d’ Oracle
La taille d’une extension ici peut être calculée automatiquement (AUTOALLOCATE) on
peut la fixe (UNIFORM SIZE…)
Si l'on utilise la clause AUTOALLOCATE Oracle détermine la taille optimale des
extensions de chaque segment avec un minimum de 64K. Vous pouvez préciser la taille
de l’extension INITIALE lors de la création du segment. Oracle s’ en sert pour calculer
la taille des extensions du segment
Si l'on utilise la clause UNIFORM SIZE toutes les extensions de tous les segments
auront la même taille : celle spécifiée lors de la création du tablespace ou celle part
défaut qui est de 1Mo
Tablespaces gérés localemnt
Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création et Gestion des tablespaces et tables : tablespaces
123. Avantages par rapport a ceux gérés via le Dictionnaire :
– défragmentation automatique du Tablespace
NOTES :
– Les paramètres de stockage NEXT, PCTINCREASE, MINEXTENTS,
MAXEXTENTS, DEFAULT STORAGE sont ignorés pour les Tablespaces
gérés localement
– Avec la clause UNIFORM SIZE INITIAL n’est pas non plus pris en
compte
Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création et Gestion des tablespaces et tables : tablespaces
Création de Tablespaces gérés localemnt
BLOCKSIZE. Taille du bloc utilisée par le Tablespace. (2k, 4K, 8K, 16K, 32K,64k)
Sql> SHOW PARAMETER DB_BLOCK_SIZE
124. Exemple 3 :
Création d'un tablespace Local avec la clause AUTOALLOCATE (option par défaut)
Sql> CREATE TABLESPACE TSLOCAL DATAFILE ‘D:ts_local1m.dbf' SIZE 10M
EXTENT MANAGEMENT LOCAL AUTOALLOCATE;
Sql>
CREATE TABLE TestLocal(c1 char(4))
storage(initial 1m next 500K minextents 2 maxextents 6) tablespace tslocal
Sql>
select SEGMENT_NAME , EXTENT_ID, BYTES, BLOCKS
from dba_extents where SEGMENT_NAME like ‘TESTLOCAL’;
SEGMENT_NAME EXTENT_ID BYTES BLOCKS
TESTLOCAL 0 10485760 128 ---
TESTLOCAL 1 10485760 128
On voit bien que dans autoallocate le paramètre initial de stockage détermine le nombre
de blocs le reste des paramètres est ignoré (RQ: le bloc oracle =8ko)
Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création et Gestion des tablespaces et tables : tablespaces
Création de Tablespaces gérés localemnt
taille de segment
en bloc oracle
128x8ko=1M
125. Exemple 4 : Création d'un tablespace Local avec la clause UNIFORM SIZE
Sql> CREATE TABLESPACE tslocaluniform DATAFILE
'F:oracleoradatadbtestsTSLOCALts_local_unif1.dbf' SIZE 10M EXTENT
MANAGEMENT LOCAL UNIFORM SIZE 200K;
Sql> CREATE TABLE Testuniform1(c1 char(4)) tablespace tslocaluniform storage(initial
100k next 50K minextents 1 maxextents 2);
Sql> select SEGMENT_NAME , EXTENT_ID, BYTES, BLOCKS
from dba_extents where SEGMENT_NAME ='TESTUNIFORM1';
SEGMENT_NAME EXTENT_ID BYTES BLOCKS
TESTUNIFORM1 0 204800 25
Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création et Gestion des tablespaces et tables : tablespaces
Création de Tablespaces gérés localement
SEGMENT_NAME nom de segment associé à l'extent
TABLESPACE_NAME nom de tablespace qui contient l'extent
EXTENT_ID numero de lExtent dans le segment
BYTES Taille de l'extent en bytes
BLOCKS Taille de segment en bloc oracle
25x8ko=200K
126. 1) Tablespaces à gestion locale des extents (par défaut !)
Gère la mémoire locallement avec des bitmaps
Améliore les performances
Allège les accès au dictionnaire
Permet le choix automatique de l’unité d’extention
Autorise la gestion automatique de l’espace dans les segments peut s’appliquer à tous les tablespaces
2) Tablespaces gérer par le dictionnaires
Gestion plus précise
Nécessite une fusion périodique des extents libres ( défragmentation manuelle)
Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Gestion des tablespaces : Locale VS Dictionnaire
127. Les tablespaces temporaires
Lorsqu'une requête nécessite un tri qui ne peut pas s'exécuter en mémoire (dans la PGA),
Oracle peut utiliser soit:
•un segment temporaire créé dans n'importe quel tablespace permanent. À éviter, puisqu’à
chaque tri, le segment temporaire sera alloué et libéré. Mauvais pour la performance et pour
la fragmentation.
•Ou un segment temporaire créé dans un tablespace temporaire. Dans ce cas, un segment
de tri est créé par le 1er tri ( 1ere requête) et réutilisable par les tris suivants.
Ce segment est libéré uniquement lors de l’arrêt de l’instance.
- Ces tries peuvent provenir des ordres SQL contenant :
ORDER BY, GROUP BY, DISTINCT, UNION, INTERSECTION, MINUS, CREATE INDEX, SORT,
MERGE …
Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création et Gestion des tablespaces et tables :
Tablespaces temporaire
128. Exemple de création :
CREATE TEMPORARY TABLESPACE lmtemp
TEMPFILE '/u02/oracle/data/lmtemp01.dbf' SIZE 20M REUSE
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 16M;
Un tablespace temporaire à un fonctionnement particulier :
- Les modifications ne sont pas enregistrées dans les fichiers de journalisation/redo-log.
- ll ne peut pas être renommé ou déplacé (doit le détruire et le recréer)
Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création et Gestion des tablespaces et tables :
Tablespaces temporaire (suite)
129. Toutes les données d’annulation sont stockées dans un tablespace spécial appelé « UNDO ».
Lorsque vous créez un tablespace « UNDO », Oracle gère le stockage, la rétention et l’emploi de
l’espace pour les données de rollback par l’intermédiaire de la fonction SMU (System-Managed
Undo). Aucun objet permanent n’est placé dans le tablespace undo. Pour pouvoir créer un
tablespace undo à la création de la base de données, il faut prendre soin d’initialiser le paramètre
UNDO_MANAGEMENT=AUTO
Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création et Gestion des tablespaces et tables :
Tablespaces UNDO
130. Rappelez-vous, la syntaxe SQL de création de la base de données comporte
d’abord la création d’un tablespace « SYSTEM » et d’un tablespace « SYSAUX »,
ainsi que la création de tablespaces « TEMP » et « UNDO ».
Attention ! À la création de la base de données, si vous ne précisez pas de
tablespace undo, Oracle crée un tablespace undo appelé « SYS_UNDOTS ».
Le paramètre « UNDO_TABLESPACE » doit avoir la valeur «
SYS_UNDOTS », sinon la base de données ne pourra pas être créée.
Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création et Gestion des tablespaces et tables :
Tablespaces UNDO (suite)
131. La syntaxe de création d’un tablespace UNDO est :
CREATE {BIGFILE|SMALLFILE} UNDO TABLESPACE nom_tablespace
[ DATAFILE ['nom_fichier'] [ SIZE integer {K|M|G|T} ]
[ AUTOEXTEND {OFF | ON [ NEXT integer {K|M|G|T}] [ MAXSIZE {UNLIMITED | integer
{K|M|G|T}]} ] [,...] ] [{ONLINE | OFFLINE}] ;
____________________________________________________________
UNDO : Indique que le tablespace est de type undo.
Attention!
Le tablespace « UNDO » par défaut est celui qui est précisé dans le paramètre « UNDO_TABLESPACE
Sql> show parameter undo_tablespace
NAME TYPE VALUE
------------------------------------ ----------- --------
undo_tablespace string UNDOTBS1
Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création et Gestion des tablespaces et tables :
Tablespaces UNDO (suite)
132. Sql> create undo tablespace undobis datafile ‘D:fich1.dbf’
size 512m autoextend on next 512m;
Sql> alter system set undo_tablespace =undobis; ( pour activer undobis comme undo)
Système modifié.
Sql> show parameter undo_tablespace
NAME TYPE VALUE
------------------------------------ ----------- -------
undo_tablespace string UNDOBIS
Les information sur l’UNDO sont dans les paramètres suivants : ( show parameter …)
undo_management : Paramètre précisant la méthode de gestion des UNDO (AUTO ou
MANUAL).
undo_tablespace : Tablespace dans lequel seront stockées les informations d'annulation
undo_retention : Durée de rétention des UNDO qu'Oracle va tenter de respecter s'il n'a pas
besoin d'espace supplémentaire
Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création et Gestion des tablespaces et tables :
Tablespaces UNDO (suite)
133. Consulter les table et vues de dictionnaire
DBA_TABLESPACES
V$TABLESPACE
DBA_DATA_FILES
V$DATAFILE
DATABASE_PROPERTIES
Vérification de statut des tablespace:
select status,contents, tablespace_name from dba_tablespaces
Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création et Gestion des tablespaces et tables :
Information sur les tablespaces et les fichiers de données
134. La vue DBA_DATA_FILES va nous permettre de déterminer la taile d'un tablespace,
La vue DBA_EXTENTS permet de connaitre la taille de tous les segments dans les
différents datafiles,
La vue DBA_FREE_SPACE qui indique les espaces libres dans les database files.
Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création et Gestion des tablespaces et tables :
Information sur les tablespaces et les fichiers de données (suite)
SELECT A.tablespace_Name, A.Alloue, B.Occupe, C.Libre FROM
(SELECT tablespace_name, sum(bytes)/1024/1024 AS ALLOUE FROM dba_data_files GROUP BY
tablespace_name) A,
(SELECT tablespace_name, Sum(bytes)/1024/1024 AS OCCUPE FROM dba_segments
GROUP BY tablespace_name) B,
(SELECT tablespace_name, Sum(bytes)/1024/1024 AS LIBREFROM dba_free_space GROUP BY
tablespace_name) C
WHERE B.tablespace_Name = A.tablespace_Name AND C.Tablespace_Name =
B.Tablespace_Name;
La requête suivante vous permet de récupérer toutes ces informations
135. Modification des tablespaces
Renommer un tablespace
ALTER TABLESPACE ancien RENAME TO nouveau;
Ajouter ou supprimer un fichier de données
ALTER TABLESPACE nomTablespace ADD DATAFILE emplacementnomFic SIZE 100M;
ALTER TABLESPACE nomTablespace DROP DATAFILE emplacementnomFic ;
Modifier la taille d’un fichier de données
ALTER database datafile emplacementnomFic RESIZE 55M
Placer un tablespace hors ligne
ALTER TABLESPACE nomTablespace OFFLINE [ NORMAL ];
Placer un tablespace en mode lecture seule
ALTER TABLESPACE nomTablespace READ ONLY (au lieu de READ WRITE);
Supprimer un tablespace
DROP TABLESPACE nomTablespace INCLUDING CONTENTS AND DATAFILES;
- Attention : Ce n’est pas une opération où il y un ROLLBACK possible. À utiliser avec précaution ! Il
est également conseillé de mettre le tablespace OFFLINE avant de le supprimer.
Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création et Gestion des tablespaces et tables : tablespaces
136. • Pour créer une table il faut l’associer à un tablespace si non elle est associer
au tablespace par défaut ( SYSAUX)
• On peut aussi spécifier le type de stockage
Syntaxe :
CREATE TABLE NOM_Table (………) [tablespace nom_tablespace ]
[Storage (initial N1 [k,M,G] next N2 [K,M,G]
minextents N3 maxextents N4 ) ] ;
(N1,N2,N3,N4 sont des nombre entiers )
Exemples :
1- SQL> CREATE TABLE TestLocal(c1 char(4) ) tablespace tslocal
storage(initial 500k next 500K minextents 4 maxextents 10);
2- CREATE TABLE Testuniform1(c1 char(4)) tablespace tslocaluniform
storage(initial 100k next 50K minextents 1 maxextents 2);
Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création et Gestion des tablespaces et tables :
Création Les tables
137. Rappels sur les indexes : Principes choix et
création : index btree , BitMap
Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création et Gestion des tablespaces et tables :
Les indexes
138. L’index est utile pour accélérer l’exécution d’une requête SQL qui lit des données et ainsi
améliorer les performances d’une application utilisant une base de données
Les 2 types d’index les plus utilisé dans Oracle :
Arbres équilibrés (B-arbre) : toutes les branches de l’arbre ont la même longueur
Il est efficace lorsque les données indexés ne sont pas répétés ( Clé primaire , données uniques)
Bitmap : Si peu de valeurs sont possibles pour les données répétées, une chaine de bits pour chaque
valeur
Un index est un objet complémentaire (mais non indispensable) à la base de données permettant d'"indexer"
certaines colonnes dans le but d'améliorer l'accès aux données par le SGBDR, au même titre qu'un index dans un livre
ne vous est pas indispensable mais vous permet souvent d'économiser du temps lorsque vous recherchez une partie
spécifique
Qu'est-ce qu'un index?
Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création et Gestion des tablespaces et tables :
Les indexes (suite)
139. De manière générale, un index est créé automatiquement lors de la création de la clé
primaire d'une table ;
de la même manière, il est d'usage d'un créer un pour chaque clé étrangère afin d'améliorer
la vitesse lors des jointures.
Un index peut être :
Simplement le stockage des données d'une colonne de table qui sera souvent
sollicitée (surtout au niveau des recherches)
L'ensemble de plusieurs colonnes qui feront l'objet de requête pour les recherches.
Création de l’index
Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création et Gestion des tablespaces et tables :
Les indexes (suite)
140. • Quand créer un index
-----------------------------
Attributs utilisées dans des jointures,
Attributs servant souvent pour les sélections,
Table de gros volume dont la majorité des
interrogations sélectionne moins de 15% des
lignes,
• Quand ne pas créer un index
-------------------------------
Attributs souvent modifiés (index à
recréer...),
Table de petit volume,
si requêtes sur NULL car les NULL, non
stockés dans l’index. (ex : WHERE ... IS
NULL).
Bitmap : attribut à peu de valeurs distinctes,
B-arbre : attribut à beaucoup de valeurs distinctes.
Création de l’index
Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création et Gestion des tablespaces et tables :
Les indexes (suite)
141. La création d'index en SQL se fait grâce à la clause INDEX précédée
de la clause CREATE. Elle permet de définir un index désigné par son nom, portant
sur certains champs d'une table.
La syntaxe est la suivante :
CREATE [UNIQUE] [BITMAP]INDEX Nom_de_l_index ON Nom_de_la_table
(Nom_de_champ [ASCDESC], ...)
Tablespace nom_tablespace_des_index ;
•L'option UNIQUE permet de définir la présence ou non de doublons pour les
valeurs de la colonne
•L'option BITMAP Index de type bitmap
•Les options ASCDESC permettent de définir un ordre de classement des valeurs présentes
dans la colonne
•Supprimer l’INDEX DROP INDEX Nom_Index
Chapitre 3: Créer une base de données
Création et Gestion des tablespaces et tables :
Les indexes (suite)
150. 15
0
L’index Bitmap Select nom, prenom, job_id from employees
ID NOM Prenom Job_id-
---------------------------------------------------------------------------
101 Neena Kochhar AD_VP
102 Lex De Haan AD_VP
103 Alexander Hunold IT_PROG
104 Bruce Ernst IT_PROG
107 Diana Lorentz IT_PROG
108 Nancy Greenberg FI_MGR
109 Daniel Faviet FI_ACCOUNT
110 John Chen FI_ACCOUNT
111 Ismael Sciarra FI_ACCOUNT
112 Jose Manuel Urman FI_ACCOUNT
113 Luis Popp FI_ACCOUNT
115 Alexander Khoo PU_CLERK
116 Shelli Baida PU_CLERK
117 Sigal Tobias PU_CLERK
118 Guy Himuro PU_CLERK
119 Karen Colmenares PU_CLERK
120 Matthew Weiss ST_MAN
121 Adam Fripp ST_MAN
122 Payam Kaufling ST_MAN
123 Shanta Vollman ST_MAN
124 Kevin Mourgos ST_MAN
125 Julia Nayer ST_CLERK
126 Irene Mikkilineni ST_CLERK
127 James Landry ST_CLERK
128 Steven Markle ST_CLERK
105 David Austin IT_PROG
106 VallPataballa IT_PROG
1 2 3 4 5 6 7 8 …
ST_CLERK 0 0 0 0 0 0 0 0 ..
ST_MAN 0 0 0 0 0 0 0 0 ..
FI_ACCOUNT 0 0 0 0 0 0 1 1 ..
PU_CLERK 0 0 0 0 0 0 0 0 ..
IT_PROG 0 0 1 1 1 0 0 0 ..
AD_VP 1 1 0 0 0 0 0 0 ..
Select * from employees where job_id like
‘FI_ACCOUNT’
L’index Bitmap n’est pas utilisé (exploité) quand
la clause est ( not like , not in , different <>, null)
151. Exemple de création d’index
Créer l’index :
CREATE UNIQUE INDEX idx_clients ON clients(no_client) tablespace index1
CREATE BITMAP INDEX idx_empl ON departments (department_name)
tablespace indextbs
Supprimer l’index DROP index idx_empl
Administration des bases de données sous Oracle
Chapitre 3: Créer une base de données
Création et Gestion des tablespaces et tables :
Les indexes (suite)
152. Chapitre V:
Administration des
et gestion de comptes d’une base
de données Oracle
Dictionnaire de Données Oracle
Gestion des utilisateurs
Privilère , Roles et Profiles utilisateurs
153. Dictionnaire de Données Oracle
Définition: C’est un certain nombre de tables et vues
qui contient un ensemble d’information liée à l’activité et
au fonctionnement de la base de donnée
Et ce pour:
Récupérer les information nécessaire à l’exploitation et à
l’administration de la base de donnée Oracle
154. Dictionnaire de Données Oracle
Caractéristiques
Appartient à l’utilisateur SYS
Stocke les informations sur:
La base de données (structure logique et physique)
Le nom et les définitions des différents objets crées
Les contraintes sur les objets
Les users de connexions et leur caractéristiques (ex:
privilèges)
155. Toutes les informations contenues dans les tables système du
dictionnaire des données et accessibles au travers de vues sont codées
en MAJUSCULES.
Exp: selecte * from all_tables where table_name like ‘JOBS’;
Le dictionnaire des données est mis automatiquement à jour après
chaque instruction SQL du LMD (INSERT, UPDATE, DELETE, …).
Majuscule
Dictionnaire de Données Oracle
156. Les vues du dictionnaire de données sont :
DBA_* : informations sur les objets de tous les schémas
USER_* : informations sur les objets appartenant au compte connecté
ALL_* : informations des vues USER_* et des informations sur les objets
pour lesquels des privilèges ont été octroyés au groupe PUBLIC ou à
l’utilisateur courant
Liste des vues du dictionnaire
• DICTIONARY ou DICT
Dictionnaire de Données Oracle
157. Démarche à suivre
La démarche à suivre afin d’interroger correctement le dictionnaire des données à
propos d’un objet est la suivante :
Étape 1 : trouver le nom de la vue en consultant DICTIONARY
Étape 2 : choisir les colonnes de la vue à sélectionner (utiliser DESC) ;
Étape 3 : interroger la vue en exécutant une requête SELECT contenant les colonnes
intéressantes.
NB : Étape 1 peut être omise si on connaît déjà le nom de la vue (ce sera le cas pour
les vues usuelles que vous aurez déjà utilisées à plusieurs reprises).
Dictionnaire de Données Oracle
158. Dictionnaire de Données Oracle
Recherche du nom d’une vue
L’extraction du nom des vues qui concernent un objet est rendue possible
par l’interrogation de la vue DICTIONARY (de synonyme DICT)
SQL>DESC DICTIONARY
SELECT * FROM DICTIONARY
WHERE table_name LIKE '%SEQUENCE%';
Nom NULL Type
---------- ---- --------------
TABLE_NAME VARCHAR2(30)
COMMENTS VARCHAR2(4000)
TABLE_NAME COMMENTS
---------------- -------------------------
ALL_ SEQUENCES Description of SEQUENCEs accessible to the user
DBA_ SEQUENCES Description of all SEQUENCEs in the database
USER_ SEQUENCES Description of the user's own SEQUENCEs
TABLE
INDEX
IRIGGER
VIEW
CONSTRAINT
159. Dictionnaire de Données Oracle
Interroger la vue
L’interrogation de la vue sur la base des colonnes choisies est l’étape finale de
la recherche de données dans le dictionnaire
Interrogeons le dictionnaire des données à travers les quatre premières
colonnes de la vue USER_SEQUENCES pour retrouver les
caractéristiques de ces deux séquences.
La valeur courante de la séquence n’est pas stockée dans cette vue, elle
est, en revanche, accessible via la fonction CURRVAL.
SQL>
SELECT SEQUENCE_NAME,
MIN_VALUE, MAX_VALUE,
INCREMENT_BY
FROM USER_SEQUENCES ;
SEQUENCE_NAM MIN_VAL, MAX_VAL, INCREMENT_BY
DEPARTMENTS_SEQ 1 9990 10
EMPLOYEES_SEQ 1 9999999999 1
LOCATIONS_SEQ 1 9900 100
MA_SEQUENCE 1 999999999 1
MA_SEQUENCE2 1 9999999999 2
SQ_ID_TRANSACTION 1 10000 1
160. Le code source PL/SQL des packages, procedure, triggers,
fonction est maintenu est peut être consulté par les tables de
dictionnaire de données USER_SOURCE et ALL_SOURCE.
Pour consulter le code source de Specification :
SELECT text FROM user_source
WHERE name = 'COMM_PKG' AND type = 'PACKAGE';
Pour consulter le code source de body :
SELECT text FROM user_source
WHERE name = 'COMM_PKG' AND type = 'PACKAGE BODY';
Recherche d’un code source ou
d’une contrainte
Pour consulter les contraintes :
SELECT CONSTRAINT_NAME, CONSTRAINT_TYPE,
TABLE_NAME from DBA_CONSTRAINTS;
161. Dictionnaire de Données Oracle
Principales vues du dictionnaire des données
Nature de l’objet Vues
----------------------- ------ -------------------------------
Objets (au sens général) USER_OBJECTS : objets appartenant à l’utilisateur (synonyme OBJ).
USER_ERRORS : erreurs après compilation des objets PL/SQL stockés
(procédures, fonctions, paquetages, déclencheurs).
USER_STORED_SETTINGS : paramètres des objets PL/SQL stockés.
USER_SOURCE : source des objets PL/SQL stockés.
Tables USER_TABLES : description des tables relationnelles de l’utilisateur
(synonyme TABS).
USER_ALL_TABLES : description des tables relationnelles et objets de
l’utilisateur.
Colonnes USER_TAB_COLUMNS : colonnes des tables et vues (synonyme COLS).
USER_UNUSED_COL_TABS : colonnes éliminées des tables.
Index USER_INDEXES : description des index (synonyme IND).
USER_IND_EXPRESSIONS : expressions fonctionnelles des index.
USER_IND_COLUMNS : colonnes qui composent les index.
Contraintes USER_CONSTRAINTS : définition des contraintes de tables.
USER_CONS_COLUMNS : composition des contraintes (colonnes).
162. Nature de l’objet Vues
----------------------- ------ -------------------------------
Vues USER_VIEWS : description des vues de l’utilisateur
Synonymes USER_SYNONYMS : description des synonymes privés d’un utilisateur
DBA_SYNONYMS et ALL_SYNONYMS : description de tous les
synonymes (privés et publics).
Séquences Déjà étudié en début de section.
Commentaires USER_TAB_COMMENTS : commentaires à propos des tables ou vues.
USER_COL_COMMENTS : commentaires à propos des colonnes des
tables et vues.
Utilisateurs USER_USERS : caractéristiques de l’utilisateur courant.
DBA_USERS et ALL_USERS : caractéristiques de tous les utilisateurs.
.
Dictionnaire de Données Oracle
Principales vues du dictionnaire des données
163. Privilèges USER_TAB_GRANTS : liste des autorisations sur les tables et les vues pour
lesquelles l’utilisateur est le propriétaire, ou ayant donné ou reçu l’autorisation.
USER_TAB_GRANTS_MADE : liste des autorisations sur les objets appartenant à l’utilisateur.
USER_COL_GRANTS : colonnes autorisées à l’accès
USER_COL_GRANTS_MADE : liste des autorisations sur les colonnes des tables ou des vues
appartenant à l’utilisateur.
USER_COL_PRIVS_MADE : informations sur les colonnes pour lesquelles l’utilisateur est
propriétaire ou bénéficiaire.
USER_TAB_GRANTS_RECD : liste des objets pour lesquels l’utilisateur a reçu une autorisation.
USER_COL_PRIVS_RECD : informations sur les colonnes pour lesquelles l’utilisateur a reçu
une autorisation.
Rôles DBA_ROLES : tous les rôles existants.
DBA_ROLE_PRIVS : rôles donnés aux utilisateurs et aux autres rôles.
USER_ROLE_PRIVS : rôles donnés à l’utilisateur.
ROLE_ROLE_PRIVS : rôles donnés aux autres rôles.
ROLE_SYS_PRIVS : privilèges système donnés aux rôles.
ROLE_TAB_PRIVS : privilèges sur les tables donnés aux rôles.
SESSION_ROLES : rôles actifs à un instant t
Dictionnaire de Données Oracle
Principales vues du dictionnaire des données
164. Sécurité de la base de Données
Introduction
Qu’est ce que une base de données pour les
organismes ( société , établissement, ministère …) ?
C’est un ensemble des informations et données centralisées qui
sont intègres, confidentielles, disponibles, tracées et dont
l’exploitation et utilisation sont conformes aux règles.
C’est les 5 principes de la sécurité de l’information
165. Pour appliquer ces principe : il faut
Authentification
Autorisation
Sécurité de la base de Données
comment appliquer ces Principes
166. Chaque BD Oracle possède une liste de noms d’utilisateurs, et un mot de
passe associé.
Vérifier quand un utilisateur veut utiliser des données, des ressources, des applications,
par le système d’exploitation, le réseau, la base Oracle.
Authentification dans Oracle : cryptage du mot de passe, verrouillage des comptes,
expiration du mot de passe, vérification de la complexité du mot de passe.
A la création d’un nouvel utilisateur, on définit
Un profil délimitant l’accès aux ressources
Mot de passe
Autres paramètres …..
Sécurité de la base de Données
Authentification
167. Les autorisations reposent sur ce qui suit :
Tous les éléments SQL ont un propriétaire. Un propriétaire d’un objet
possède tous les droits (privilèges) sur cet objet.
On peut donner des droits à d’autres utilisateurs pour accéder aux données,
pour les modifier, pour obtenir des ressources, …
Les droits sont accordés (ou refusés) à différents niveaux (objets, schémas,
tables, tuples, CPU, …).
On peut accorder des droits individuellement, ou par groupes.
Sécurité de la base de Données
Autorisation
168. Utilisateurs
Profiles
Droits et privilèges
Rôles
Sécurité de la base de Données
Pour assurer L’authentification et l’autorisation, il
faut être en mesure de bien gerer les :
On est bien dans l’administration et la gestion des
Utilisateurs de la bases de données
Administration de base de données
169. Gestion des utilisateurs
classification
Les types d’utilisateurs, leurs fonctions et leur nombre peuvent varier d’une base à une autre.
Néanmoins, on peut les classifier de la manière suivante :
Le DBA (DataBase Administrator). Il en existe au moins un. Une petite base peut n’avoir
qu’un seul administrateur. Une base importante peut en regrouper plusieurs qui se
partagent les tâches suivantes :
installation et mises à jour de la base et des outils éventuels ;
Gestion de l’espace disque et des espaces pour les données (tablespaces) ;
Gestion des utilisateurs et de leurs objets (s’ils ne les gèrent pas eux-mêmes) ;
Optimisation des performances ;
Sauvegardes, restaurations et archivages ;
Contact avec le support technique d’Oracle.
170. L’administrateur réseaux (qui peut être le DBA) se charge de la configuration
de l’intergiciel (middleware) Oracle Net au niveau des postes clients.
Les développeurs qui conçoivent et mettent à jour la base. Ils peuvent aussi
agir sur leurs objets (création et modification des tables, index, séquences, etc.).
Ils transmettent au DBA leurs demandes spécifiques (stockage, optimisation,
sécurité).
Les administrateurs d’applications qui gèrent les données manipulées par
l’application ou les applications. Pour les petites et les moyennes bases, le DBA
joue ce rôle.
Les utilisateurs qui se connectent et interagissent avec la base à travers les
applications ou à l’aide d’outils (interrogations pour la génération de rapports,
ajouts, modifications ou suppressions d’enregistrements).
Gestion des utilisateurs
classification
171. Simple Syntaxe
Une simple syntaxe SQL de création d’un utilisateur est la suivante :
CREATE USER utilisateur IDENTIFIED { BY motdePasse
[PROFILE nomProfil ]
[PASSWORD EXPIRE ]
[ ACCOUNT { LOCK | UNLOCK } ] ;
Syntaxe Simple très réduite :
CREATE USER utilisateur IDENTIFIED BY motdePasse
Gestion des utilisateurs
création
172. IDENTIFIED BY motdePasse permet d’affecter un mot de passe à un utilisateur
local (cas le plus courant et le plus simple).
● PROFILE nom Profil affecte un profil (caractéristiques système relatives au CPU et aux
connexions) à l’utilisateur
- En l’absence de profil, le profil DEFAULT est affecté à l’utilisateur..
● PASSWORD EXPIRE pour obliger l’utilisateur à changer son mot de passe à la première
connexion (par défaut il est libre). Le DBA peut aussi changer ce mot de passe.
● ACCOUNT pour verrouiller ou libérer l’accès à la base (par défaut UNLOCK).
Gestion des utilisateurs
création (suite)
173. Instruction SQL Resultat
CREATE USER Paul
IDENTIFIED BY Pokemon
DEFAULT TABLESPACE USERS
QUOTA 10M ON USERS
TEMPORARY TABLESPACE TEMP
QUOTA 5M ON TEMP
PASSWORD EXPIRE;
Paul est déclaré « utilisateur », ses
objets (pas plus de 10 MO) seront
stockés dans USERS,
certaines de ses opérations
nécessiteront de ranger des données
dans TEMP (pas plus de 5 MO). Il
devra changer son mot de passe à la
première connexion.
CREATE USER Paul2
IDENTIFIED BY Pokemon
DEFAULT TABLESPACE USERS
ACCOUNT LOCK;
Paul2 est déclaré « utilisateur », ses
objets seront stockés dans USERS,
son espace temporaire est SYSTEM.
Le compte est pour l’instant bloqué
Par défaut, les utilisateurs, une fois créés n’ont aucun droit sur la base de données
sur laquelle ils sont connectés. La section « Privilèges » étudie ces droits.
Gestion des utilisateurs
création (exemple )
174. Pour Modifier le mot de passe de l’utilisateur (tache la plus utilisé) on utilise la
commande suivante:
ALTER USER Nom_user IDENTIFIED BY nouveau_mot_pass
Pour pouvoir modifier les caractéristiques d’un utilisateur (autres que celle du mot
de passe) voila la Syntaxe. Elle contient instruction qui reprend les options
étudiées lors de la création d’un utilisateur.
Gestion des utilisateurs
Modification d’un Utilisateur
175. ALTER USER utilisateur
[ IDENTIFIED { BY password [ REPLACE old_password ] |
[ PROFILE nomProfil ]
[ PASSWORD EXPIRE ] [ ACCOUNT { LOCK | UNLOCK } ] ;
Gestion des utilisateurs
Modification d’un Utilisateur
(Suite)
PASSWORD EXPIRE oblige l’utilisateur à changer son mot de passe à la
prochaine connexion.
autres changements seront opérationnels aux prochaines sessions de l’utilisateur
mais pas à la session courante (cas de l’utilisateur qui déclare un espace de travail
alors qu’il est actuellement connecté à un autre).
176. Instruction SQL Résultat
ALTER USER Paul
IDENTIFIED BY X_Men
TEMPORARY TABLESPACE TEMP
QUOTA UNLIMITED ON TEMP;
Paul a changé de mot de passe, son espace
temporaire est illimité dans TEMP. Il ne devra
plus changer son mot de passe à la première
connexion.
ALTER USER Paul2
DEFAULT TABLESPACE USERS
QUOTA 10M ON USERS
ACCOUNT UNLOCK;
L’espace de travail de Paul2 est limité à 10
mégaoctets dans USERS. Le compte est
débloqué.
Exemples
Le tableau suivant décrit des modifications des utilisateurs créés auparavant :
Gestion des utilisateurs
Modification d’un Utilisateur
(Exemples)