Un serveur de données Oracle = instance + base physique !!!!
La base physique : Les fichiers Oracle
Zoom sur les fichiers de données (data files)
Zoom sur les fichiers journaux ( (redo) log files )
Voir le panneau de configuration NT / services pour info :
ici la base s'appelle b8i1
et le oracle home 'Ora81'
Sur Unix un certain nombre de 'Background processes' tournent sur la machine, le proprétaire est généralement l'utilisateur Oracle (ce qui permet de les identifier). Les noms de process sont également suffixés par le nom de l'instance auquels ils sont attachés
Nous sommes ici sur une machine Unix, avec Oracle 8.0.5 d'installé. On a filtré les process actifs sur le mot oracle. On remarque ici que 2 bases sont actives : l'une s'appelle TESUN et l'autre DEVUN. On reconnait les process de fond DBWR, LGWR, PMON, SMON, RECO notamment et deux process utilisateur distants connectés à TESUN...
Une base de données complète est constitué d'un certain nombre de fichiers :
et optionnellement
Les fichiers de données initiaux, les fichiers journaux et le control file sont créés par l'ordre SQL 'CREATE DATABASE' :
exemple
ici on crée
un seul fichier de données et 2 group de logfiles (mirroir) sur 2 disques
différents pour des raisons de sécurité.
CREATE
DATABASE test DATAFILE 'd:\dataora\test_system' SIZE 10M
LOGFILE
GROUP 1 ('d:\dataora2\test_log1a', 'd:\dataora2\test_log1b') SIZE 500K,
GROUP 2 ('d:\dataora3\test_log2a', 'd:\dataora3\test_log2b') SIZE 500K;
Généralement ces fichiers ont un nom assez explicite et ont le type '.ora' sur NT ou '.dbf' sur Unix.
Voici un exemple des fichiers installés lors de la création par défaut d'une 8.05 sur NT...
Les relations entre process et fichiers de la base physique apparaissent ci-après :
Les fichiers de données contiennent ... les données
proprement dites (essentiellement les tables et leurs lignes),
mais aussi les autres objets Oracle connexes
aux tables : index, vues, synonymes, database links, procédures stockées,
etc.).
Il aurait été plus judicieux de les appeler autrement, mais je traduis le terme Oracle 'data file'...
et pire encore :
Pourtant tout ce petit monde est stocké dans les data files !
Les fichiers journaux servent à mémoriser toutes les modifications (validées ou non) faites sur la base, à des fins de reprise en cas de perte de données physiques.
La journalisation (assurée par le process LGWR) est un mécanisme permanent et obligatoire d'Oracle, pour assurer un minimum de sécurité des données.
Les fichiers journaux appartiennent à des groupe, et sont remplis de manièrer séquentielle et circulaire (quand on a fini de remplir le log du groupe courant, on attaque le log du groupe suivant suivant. Quand on arrive au dernier, on recommence à écrire dans le premier...).
C'est pour ca qu'il faut au minimum 2 (groupes de) redo log.
lorsqu'on boucle un cycle, on perd les premières journalisations qui ont été faites et l'on ne saura pas toujours restaurer la totalité des données en cas de problème. C'est pour ca qu'on peut "archiver" tout l'historique des redo logs, en utilisant l'archivage optionnel.
Par sécurité on peut multiplexer ou mirrorer l'écriture dans plusieurs redo log en même temps (sur des disques différents bien sur).
Dans ce cas on a plusieurs fichiers par groupe, et LGWR écrit
tous les fichiers du groupe courant en même temps.
Voir dans le chapitre sauvegarde, l'utilisation de groupes de log files
|