Architecture Oracle

Un serveur de données Oracle = instance + base physique !!!!

L'instance Oracle

La base physique : Les fichiers Oracle

relations instance & fichiers

Zoom sur les fichiers de données (data files)

Zoom sur les fichiers journaux ( (redo) log files )

 

L'instance

Une instance est caractérisée par son identificateur : SID, généralement une variable ORACLE_SID positionnée dans l'environnement.
Une instance active, en mémoire ce sont :
- des programmes de fond (services ou processus) qui assurent la maintenance du serveur de données et les entrées / sorties fichiers
- des process server (dédiés ou non à un utilisateur)
- et une zone globale partagée : la SGA, qui contient essentiellement du cache de buffers

Pour un serveur 8.1.5 (Oracle 8i) sous NT on aura par exemple les principaux services suivants :
- Oracle_nom_home_oracle_TNSListener : qui indique un serveur SQLNet présent (et actif ici) sur la machine

- OracleServicenom_de_la_base : qui indique qu'un serveur Oracle est présent (et actif ici) sur la machine

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...

La base physique : les fichiers Oracle

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...

relations entre instance & fichier

Les relations entre process et fichiers de la base physique apparaissent ci-après :

Les fichiers de données (data files)

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'...

Ce qui n'est pas vraiment des données...dans les fichiers de données :

et pire encore :

Pourtant tout ce petit monde est stocké dans les data files !

Les fichiers journaux (redo log 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



modifié
le 20/11/2006

Ecrire a DD
ecris
moi


les forums techniques Oracle

mon BLOG Oracle,
en Francais
connaitre DD
l'autre vie
de DD

mon CV

trucs
et astuces

JOBs Oracle
du jour
Homepage "Tout sur Oracle"
Mon site :
Tout sur Oracle (et le web)
Copyright (C) 2002
Utilisation de ces documents