Pour repérer facilement l’instance, nom de l’instance identique au nom de la base
Oracle = SGBD REL ET MULTIREL
Recours mémoire plutôt qu’au disque
Chapitre 1 : Architecture du serveur de base de données Oracle
Chapitre 2 : Gestion de la mémoire utilisée par une base Oracle
Chapitre 3 : Gestion des processus associés à une base Oracle
Chapitre 4 : Gestion des fichiers d'une base Oracle
Chapitre 5 : Gestion des tablespaces
Chapitre 1 : Architecture du serveur de base de données Oracle
Identifier les taches : slide 8
Oracle s’installe sur plusieurs machines-dupliquer la base sur plusieurs serveurs
Rôles du DB administrateur
Créer la base
Modifier structure : physique (Fichiers) et logique (Logique : Objets :Tables )
Sauvegarde ( fichier de sauvegarde ) – Next year
Restauration : remplacer le fichier perdu par le fichier de sauvegarde
Récupération ( pas oblige, juste quand on veut que le fichier de sauvegarde ne soit pas a
jour ): fichier de la base qui décrivent les données des utilisateurs = mise a jour datafile a
partir des commandes fichier redolog
=> fichier de donnees coherant
Stratégie : !Lecture des données à partir de la mémoire( etat actuel de la base = ! datafile –
Modification au niveau de la mémoire ! ( pour des raisons performance optimisation du
temps de réponse )
Pas au niveau du disque
On lance la sauvegarde – fichier de sauvegarde pas à jour car au niveau de la mémoire –
base en mode lecture écriture.
Serveur, pas installe sur utilisateur
Oracle 1 1978 19c crée en 2019
Oracle Entreprise Manager : Graphique
Architectur
e
Fichiers Processus Memoire
I- Les fichiers
Les fichiers de données (datafile) .dbf ( 90% base )
Donnes des utilisateurs ( non modifiees )
Données modifiées en attente de validation
Dictionnaire de données ( nom table , nom et type des champs , nom objets …)
Les fichiers redo-log ou de journalisation (logfile) .log
Commandes validées par l’utilisateurs en termes de modification
Les fichiers de contrôle (controlfile) .ctl
Multiplexage :plusieurs fichiers de contrôle
Dernier mode arrêt de la base
Chemins des datafiles et des logfiles ( pour identifier emplacement sur le disque et les
ouvrir )
Les fichiers d’initialisation (pfile, spfile) .ora 1 seul spfile par défaut
Paramètres initialisation ( nom base -nom instance – chemin des ctrl files…)
II- Les processus
Processus utilisateur : sur poste
Processus serveur
Processus BackGround
III- Les mémoires
Mémoire SGA % de la ram du serveur oracle Partagée par utilisateur
Mémoire PGA Privée
Base démarrée en mode Open : datafile n’est pas forcement a jour. Dans la mémoire
oui mais pas forcément sur le datafile
Instance= SGA + processus background
Demarrer instance = demarrer processus background + allouer memoire sga
Base en action = instance + fichiers
A une base oracle, on ne peut lui associer qune seule instance sur un seul serveur de
donnees
1 serv 4instances, chaque instance base differente.
ORACLE RAC : Partitionnement horizontal = separer les lignes
Architecture multi-tenant L’idée de l’architecture consiste à créer plusieurs bases de
données pdb en une seule base de données conteneur. Cdb juste datafile
Service : gestionnaire de service windows ([Link]) il doit etre demarre
Etapes :
1- Démarrer le service « OracleServiceSID ».
2- Démarrer l’instance Oracle « SID ».
Bd arretee => fichiers de la base fermees donc les inf de connexion sont fichier externe
Le privilege SYSDBA permet de demarrer ou arreter base oracle.
Startup Nomount : Demarrer instance fichier param taille sga chemin ctrl files initialization
Mount :monter la base ctrl files
Open : open init ctrlfile logfile datafile
Je peux pas faire nomount puis mount car mount ouvre spfile et ctrl file
Alter database mount : ouvre juste les fichiers de ctrl
Alter database open …
Close : ferme datafile eet logfile
Alter database close immediate
Alter database dismount
Shutdown
Shutdown immediate n’attend pas fermeture users
Transactionnelle : termine les transactions ..
Vues : Vue dynamique ( commence par v$) / vue du dictionnaire ( dba_) ne peut etre
accessible que si la base est ouverte.
Atelier pratique 1
Exercice 1/2:
1-
Mode d’arrêt Normal: attend la fin de toutes les sessions- accepte nvlles transactions
Mode d’arrêt Transactionnelle : attend que ttes les transactions soient over mais nattend pas
fin sessions
Mode d’arrêt Immédiat : déconnecte tt le monde ferme correctement la base
Applique point de reprise = mettre à jour datafile
Modification validée = mémoire sga
2-
Sys as sysdba
Select name from v$database
3- Startup force fait deux choses : arrêter la base en mode abort – démarrer en mode
open.
4- Fermer la base = fermer datafile et logfile = alter database close
5- Shutdown immediate
Exercice 3:
1- Select status from v$instance
Desc v$instance
Si startup nomount donc status started
Si startup mount donc status mounted
Si startup open donc status open
2- Startup equivalent a startup open
3- Alter database mount
4- Alter database open
Chapitre 2 : Gestion de la mémoire utilisée par une base Oracle
RAM = mémoire physique
Mémoire virtuelle dans le disque
SGA %ram
Spfile consulte ou modifie que par commandes sql
Pfile par editeur de texte
Create pfile ‘..’ from spfile = synchronizer pfile avec spfile
Param dynamique(pt etre modifie ds memoire ) Vs param statique(ne pt etre
mod que ds spfile ou pfile) V$PARAMETER.
Show parameter;
• NAME TYPE VALUE
• Affichage par ordre alphabétique
Show parameter mot
• Affiche la valeur des paramètres dont le nom contient ‘mot’
La commande ALTER SYSTEM permet de modifier les paramètres
en mémoire, dans le fichier SPFILE ou simultanément en mémoire et
dans le SPFILE.
• alter system set paramètre=valeur scope= memory ; //scope=destination de
la valeur dynamique
• alter system set paramètre=valeur scope= spfile ; //pour modifier param
statique et dynamique mais les autres juste dynamique
• alter system set paramètre=valeur scope= both // dynamique
Un datafile est organisé selon un bloc de données
=Unite echange entre buffercache et datafile et Stocke type de donnees :
tables, dictio donnees..
Composant de la mémoire SGA buffercache aussi sous bloc de donnees
Taille du bloc peut changer selon volume de donnees++ et nbre de transactions
—
La SGA est allouée au démarrage de l’instance et
libérée à l’arrêt de l’instance. La zone mémoire PGA est allouée pour le
fonctionnement
de chaque processus serveur. Session usr duree
6 composants dans la mémoire SGA
3 Obligatoire donc taille !=0
Cache de tampons de la base de données (Buffer Cache)
• Tampon de journalisation (Redo Buffer) : Mémoire tampon pour
l’enregistrement des modifications apportées à la base de données.
• Zone de mémoire partagée (Shared Pool) : Zone de partage
des requêtes et du dictionnaire de données.
3 facultatifs
Zone de mémoire Large Pool : Zone de mémoire optionnelle utilisée par
le processus serveur dans des configurations particulières.
• Zone de mémoire Java (Java Pool) : Mémoire utilisée pour la machine
virtuelle Java.
Zone de mémoire (Streams Pool) : Elle est utilisée par Oracle Streams.
Nom Paramètre Initialisation Contenu
Buffer Cache Db_cache_size : taille Données non modifiées
du composant memoire ( select ) ou (update,
Db_block_size : taille insert, delete )modifiées
block donnees
Db_block_buffers : nbr
blocs de donnees au
niveau buffer cache
Redo Buffer Log_buffer ( statique i.e Commandes SQL qui
ne peut pas être modifie modifient les données
qu’au niveau de la en attente de validation.
mémoire ) taille du redo
buffer
Shared pool Shared_Pool_Size : 1- Library cache :
Taille allouee au ttes commandes+
composant memoire plan exécution ..
pour diminuer
temps exécution.
2- Dictionnary
cache: Éviter de
les chercher sur le
disque, il est
remonte à la
mémoire.
Java Pool Java_Pool_Size : Taille Si on utilise objet rel on
de la mémoire allouee utilise env Java
en SGA
Large Pool Large_Pool_Size : Taille Si on est PGA, large pool
du large_pool, >0 pour alleger la
automatiquement egale mémoire SGA
a0
Stream Pool : Stream_Pool_Size : Zone mémoire utilisee
taille mémoire allouee pour l’echange
pour la zone d’informations entre
processus
Commit : pour valider une modification
Rollback : annuler
Process serveur : Intermédiaire entre utilisateur et bd oracle.
Config serveur dédiée : Int entre 1 seule connexion utilisateur et oracle.
Partagée : plusieurs connexions utilisateurs
Show parameter db_cache_size Pour voir parametre
VUES
V$instance: donne des info sur instance en cours
V$parameter: valeur des param d’initialisation conf au niv de la base
V$sga : infos sur la memoire sga
Show sga
Gestion automatique de la mémoire partagée SGA_TARGET
Ce paramètre est situé dans le fichier d’initialisation.
• Si sga_target = 0 et memory_target = 0 ==> Automatic Shared
Memory Management (ASMM) : désactivé
• Si sga_target > 0 et memory_target = 0 ==> ASMM : activé.
Ce paramètre permet de répartir automatiquement un espace mémoire
disponible entre le Buffer de données, la Shared Pool, la Large Pool
et la Java Pool. C’est une fonction très utile pour des bases dont
l’activité variable peut charger temporairement l’une de ces zones
mémoire.
Atelier pratique 2
Exercice 1 :
1-
Ne marche que si la base est demaree avec spfile
Si on veut que le changement commence du prochain startup => on modifie la
valeur du paramètre dans le spfile (fichier)
Si on veut immédiatement => on modifie la valeur dans memory
Modifier param dynamique dans le spfile et pas memory . pq ? pour pas que la
modification soit immédiate mais plutôt jusqu’au prochain démarrage.
2- Base démarrée avec pfile, on veut modifier param init :
Shutdown immediate
Modifier editeur de texte pfile
Demarrer base avec pfile
Exercice 2:
1- Show parameter mot = SELECT NAME,TYPE,VALUE FROM v$parameter
WHERE name = 'mot';
2- Show parameter db_cache_size et show paramteter db_block_size
Db_cache_size=0
La Gestion automatique de la mémoire partagée est activée. La mémoire
est automatiquement allouée à la zone qui en a le plus besoin. Il n’y a
pas de taille maximale pour
chaque zone.
db_block_size=8192 bytes.
Donc la taille du bloc de données est 8192 bytes.
3- Db_cache_size : taille du composant mémoire BUFFER CACHE
Db_block_size : taille d’UN BLOC DE DONNEES
Nbr block(db_block_buffers)= db cache/db_block
4- La commande show sga; permet de visualiser la taille de la mémoire sga.
database buffers est la taille allouée au composant mémoire Buffer
cache.
Donc le nombre de blocs de données alloués actuellement dans le
database Buffers est :
Nb de block de données alloués = database buffers / db_block_size
= 377487360/8192 = 46080 blocs de données
Exercice 3:
1-
Le redo-log buffer n’est pas concerné par la gestion automatique de la
mémoire car c’est un paramètre statique et donc on ne peut le modifier
qu’au niveau du spfile et pas dans la mémoire.
Chapitre 3 : Gestion des processus associés à une base Oracle
(Sans atelier pratique)
Cree au moment de la demande de cnx vers serveur de donnees oracle et
arrete au moment fermeture session utilisateur
Process serveur : Intermédiaire entre utilisateur et bd oracle.
Reside sur serveur de donnees
SELECT :
Afficher liste patient de service ophtalmo (dans data_file): Processus cherche les donnees
dans la mémoire
Circuit ideal : en vert oracle previligie voir dans la memoire
Si on trouve pas dans la mémoire : on cherche dans le disque data_file, et on les ecris
buffer_cache pour que prochaine fois on part pas jusqu’au disque,
On remonte des blocks de donnees et les ecrire dans buffercache, ce sont des donnees non
modifiees
4ce sont des extractions
UPDATE, DELETE, INSERT
Buffer_Cache: Donnees modifiees en attente
Redo_Buffer : Commandes en attente de validation
Pourquoi garder tt dans le shared pool ? Pour ne pas accéder au disque et tt avoir dans le
dictionnaire de données RAISON DE PERFORMANCE ET ECONOMIE DU TEMPS LA
PROCHAINE FOIS
Plan exécution et version compilée
Modification meme si elle est validee elle reste dans la mémoire
On raisonne soit par bloc de données max soit par timeout soit commande sql
Lorsque on peut pas ecrire on declanche dbwr
PROCESSUS DBWR : ecrire dans le data file les modif validees et en attente de validation
PROCESSUS LGWR : ecrire dans le logfile la commande validee dans le redobuffer apres
commit
Dans une configuration serveur dédié
• 1 processus utilisateur <--> 1 processus serveur
==>Processus serveur dédié à un processus utilisateur
• Nombre processus serveur = Nombre processus utilisateur
• Dans une configuration serveur partagé
• k processus utilisateurs <--> 1 processus serveur
==>Processus serveur partagé par plusieurs processus utilisateurs
Le processus serveur utilise une mémoire PGA exclusive
Processus Background OBLIGATOIRES (INSTANCE NE PEUT PAS ETRE
DEMARREE)
Process serveur : lire données
DBWR (Database Writer) ecrire datafile
LGWR (Log Writer)
CKPT (Checkpoint) / déclenche DBWR pour écrire les modifications validees depuis le
Buffercache. / se déclenche apres un timout defini par admin de la base OU nbre max
de blocs modifiées validées
PMON (Process Monitor) nettoie les transactions defaillante ni annulee ni validee
dans shutdown immediate
SMON (System Monitor) arret(abort) et demarrage etat du datafile annule si ni
annulee ni validee et declanche recuperation pour avoir datafile a jour et coherent
Processus Background OPTIONNELS (INSTANCE PEUT DEMARRER)
ARC créer une copie du logfile means archiver sur le disque pr que si je
perds le logfile j’utilise celui sur le disque si base est en mode archive_log si
non on doit basculer selon mode operatoire Démarrer le processus ARC
(log_archive_start) declanche
Interet : recuperation des donnees
Si no archive log , le log file ne sera pas archive, meme si
log_archive_start=true
Si logfile1 sature, on ecris dans logfile2
Si logfile2 sature, je reviens logfile1 et ecrase
L’écriture se fait de manière cyclique, on a besoin de 2 logfiles
Listener
Infos de connexion sont pris en charge par processus d’écoute pour voir si
login correct, tt est correct, dans le cas contraire connexion rejetée
Listener demarre, cnx etablies, suite a un pb listener sarrete, instance
continue car optionnel, tt les utilisateurs pourront utiliser la base, car c le
processus serveur qui fait cnx déjà etablies
Suite a cet incident, il ya des utilisateurs qui veulent se connecter, ils ne
peuvent pas, car cest le listener qui etablit ces connexions nvlles
Connexion etablie, on switch vers process serveur
Chapitre 4 : Gestion des fichiers d'une base Oracle
S6 50.40
Vue dictionnaire commence par dba etat open, dynamique..
Fichiers de donnees .dbf
Data file ne peut pas etre vu par editeur de texte, mais par commandes
Log files ecriture cycliques, 2 grps redo log chaque grp au moins 1 log_file
Pq plusieurs log_files sachant qu’ils sont tous identiques. Multiplexer pour
eviter situation de perte.