Chapitre 3 — Architecture générale Oracle

Support de cours Oracle 11g

📖 Sommaire du Chapitre

Chapitre 3 — Architecture générale Oracle

L'architecture générale d'Oracle 11g repose sur une distinction fondamentale entre les structures logicielles et les structures physiques. Contrairement à une application classique qui accède directement à ses fichiers, Oracle interpose une couche de gestion dynamique pour garantir la performance, la sécurité et la disponibilité des données.

Cette architecture est dite "Architecture de Serveur de Base de Données". Elle se définit par la combinaison indissociable de deux entités distinctes mais complémentaires :

1️⃣ L'Instance

Structure en mémoire et processus

2️⃣ La Base de données

Structure de stockage sur disque

Concept clé : Pour qu'un utilisateur puisse interagir avec les données, l'instance doit être démarrée et "liée" à la base de données. Sans instance, les données sur disque sont inaccessibles ; sans base de données, l'instance n'est qu'une enveloppe vide.


💾 L'Instance Oracle

L'Instance Oracle constitue la partie dynamique, volatile et logicielle de l'architecture. Contrairement aux fichiers de données qui sont permanents, l'instance n'existe qu'en mémoire vive (RAM) et sous forme de processus système actifs dans le système d'exploitation du serveur (Linux, Windows, Solaris, etc.).

Une instance est strictement définie par la combinaison de deux éléments indissociables :

1. Les Structures de Mémoire (SGA)

Dès le démarrage de l'instance, Oracle alloue une zone de mémoire partagée appelée SGA (System Global Area). Cette zone est le cœur opérationnel où transitent toutes les données avant d'être lues par les utilisateurs ou écrites sur le disque. Sa taille est déterminée par des paramètres d'initialisation (comme SGA_TARGET en 11g) et elle est libérée dès que l'instance est arrêtée.

2. Les Processus d'Arrière-plan (Background Processes)

L'instance lance un ensemble de programmes spécialisés qui tournent en tâche de fond. Ces processus assurent la "vie" de la base de données : ils gèrent l'écriture des données, surveillent les erreurs, nettoient les connexions défaillantes et garantissent la cohérence entre la mémoire et le disque. Sans ces processus, l'instance ne serait qu'une zone mémoire inerte.

Caractéristiques clés :

🔑 Identifiant unique

Chaque instance est identifiée par un SID (System IDentifier). Sur un même serveur, vous pouvez avoir plusieurs instances (ex: PROD, TEST, DEV), chacune ayant son propre SID et sa propre allocation mémoire.

🔗 Rapport 1:1 (Généralement)

Dans une configuration standard, une instance est associée à une seule base de données. Toutefois, dans les architectures de haute disponibilité comme Oracle RAC (Real Application Clusters), plusieurs instances situées sur des serveurs différents peuvent ouvrir et gérer une seule et même base de données partagée.

⚡ Volatilité

Si le serveur redémarre ou si l'instance subit un crash, tout le contenu de la SGA est perdu. C'est le rôle des fichiers de la base de données (sur disque) de garantir que les transactions validées ne soient pas égarées.


📁 La Base de données Oracle (Database)

Alors que l'instance représente l'aspect dynamique et éphémère en mémoire vive, la Base de données Oracle constitue la structure physique, statique et persistante stockée sur les unités de disque. C'est l'ensemble des fichiers informatiques qui conservent les données de manière permanente, même après l'arrêt du serveur ou de l'instance.

Dans l'architecture Oracle 11g, une base de données se définit par une organisation rigoureuse de trois types de fichiers indispensables, complétés par des fichiers auxiliaires.

1. Les Fichiers de Données (Datafiles)

Ce sont les composants les plus volumineux. Ils contiennent les données réelles de la base (tables, index, procédures) ainsi que le dictionnaire de données (méta-données).

  • Rôle : Stocker physiquement les blocs de données. Lorsqu'un utilisateur demande une information, Oracle lit ces fichiers pour charger les blocs correspondants dans la mémoire (SGA).
  • Organisation : Ils sont regroupés logiquement en Tablespaces (ex: SYSTEM, SYSAUX, USERS).

2. Les Fichiers de Contrôle (Control Files)

Ce sont les fichiers les plus critiques de l'architecture, bien que de petite taille. Ils contiennent l' "empreinte digitale" de la base de données.

  • Contenu : Le nom de la base, la date de création, l'emplacement de tous les autres fichiers (Datafiles et Redo Logs), et le numéro de séquence actuel (SCN - System Change Number).
  • Importance : Sans fichier de contrôle, l'instance ne peut pas "monter" (MOUNT) la base car elle ne saurait pas où se trouvent les données. Oracle recommande d'en avoir au moins deux copies (multiplexage) sur des disques différents.

3. Les Fichiers de Journalisation (Online Redo Log Files)

Ces fichiers servent de "boîte noire" ou de journal de bord. Ils enregistrent chronologiquement toutes les modifications (INSERT, UPDATE, DELETE) apportées à la base de données.

  • Rôle : Garantir l'intégrité des données. En cas de coupure de courant ou de crash de l'instance, Oracle utilise ces journaux au redémarrage pour réappliquer les transactions qui étaient en mémoire mais n'avaient pas encore été écrites sur le disque.
  • Structure : Ils fonctionnent de manière circulaire (en groupes) : quand le dernier fichier est plein, Oracle recommence à écrire dans le premier.

4. Fichiers additionnels (Fichiers de support)

Bien qu'ils ne fassent pas techniquement partie de la "Base de données" au sens strict de l'unité de stockage des données, ils sont essentiels à son fonctionnement :

  • Parameter File (PFILE/SPFILE) : Contient la configuration de l'instance (taille de la mémoire, nom de la base).
  • Archived Redo Log Files : Copies hors-ligne des Redo Logs remplis, cruciaux pour la restauration après un sinistre physique.
  • Password File : Permet l'authentification des administrateurs (SYSDBA) à distance.

🌉 Différence Instance / Database

La distinction entre l'Instance et la Base de données est le concept architectural le plus critique d'Oracle 11g. Pour un administrateur de base de données (DBA), comprendre cette séparation est essentiel pour le dépannage, la gestion des performances et la mise en place de stratégies de haute disponibilité.

Bien que les deux entités travaillent de concert pour fournir un service, elles ont des natures, des cycles de vie et des fonctions totalement opposés.

1. Nature et Localisation

💻 L'Instance (Logiciel/Mémoire)

Elle est immatérielle sur le disque à l'état brut. Elle se compose exclusivement de structures allouées dans la RAM du serveur et de processus système (threads ou programmes) gérés par le processeur (CPU). Si vous éteignez le serveur, l'instance disparaît instantanément.

💾 La Base de données (Fichiers/Stockage)

Elle est matérielle. Elle se compose de fichiers binaires enregistrés sur un support de stockage permanent (Disque dur, SAN, NAS, SSD). Si vous éteignez le serveur, la base de données reste intacte sur le disque.

2. Cycle de vie et Persistance

⏱️ L'Instance est temporaire

Elle commence avec la commande STARTUP et se termine avec SHUTDOWN. On peut supprimer et recréer une instance en quelques secondes (en modifiant les fichiers de paramètres) sans perdre aucune donnée utilisateur.

📚 La Base de données est permanente

Elle contient l'historique de l'entreprise. Sa durée de vie se compte en années. Si la base de données est supprimée ou corrompue, les données sont perdues (à moins d'avoir des sauvegardes).

3. Les types de relations (Cardinalité)

Dans Oracle 11g, le lien entre l'instance et la base de données peut varier selon l'architecture choisie :

📊 Configuration Standard (Single Instance)

Une instance ouvre une seule base de données. C'est le schéma classique (1 instance : 1 database).

🔴 Configuration RAC (Real Application Clusters)

Plusieurs instances (situées sur des serveurs physiques différents) ouvrent simultanément la même base de données unique. Cela permet la tolérance aux pannes : si un serveur (une instance) tombe, les autres continuent d'accéder aux données sur le disque partagé (N instances : 1 database).

4. Tableau Comparatif Récapitulatif

Caractéristique Instance Oracle Base de données Oracle
Composants Mémoire (SGA) + Processus (Background) Fichiers (Data, Control, Redo)
Emplacement Mémoire vive (RAM) Stockage permanent (Disque)
État Actif / Inactif (Volatile) Passif / Permanent (Persistant)
Identifiant SID (System IDentifier) DB_NAME (Database Name)
Fonction Gérer les accès, traiter le SQL Stocker les informations
Arrêt brutal Disparition de la mémoire Conservation des fichiers sur disque

📚 Note pour le cours : On peut comparer l'Instance à une équipe de bibliothécaires (les processus) utilisant des tables de travail (la mémoire), et la Base de données à la réserve de livres (le stockage). Sans l'équipe, les livres restent rangés mais sont inaccessibles. Sans les livres, l'équipe n'a rien à traiter.


⏱️ Cycle de vie d'une instance Oracle

Le démarrage et l'arrêt d'une instance Oracle ne sont pas des opérations binaires (allumé/éteint). Le passage de l'état "fermé" à l'état "ouvert" suit une séquence de phases précises, car Oracle doit progressivement allouer des ressources mémoire, lire des fichiers de configuration et vérifier l'intégrité des fichiers physiques sur le disque.

Comprendre ces étapes est crucial pour le DBA, notamment pour effectuer des opérations de maintenance spécifiques (comme le renommage d'un fichier de données ou le passage en mode ARCHIVELOG) qui ne peuvent se faire que dans certains états.

1. L'état SHUTDOWN (Instance arrêtée)

À ce stade, aucune ressource mémoire n'est allouée et aucun processus de fond n'est actif. La base de données n'est qu'un ensemble de fichiers passifs sur le disque.

2. L'état NOMOUNT (Instance démarrée)

C'est la première étape du STARTUP.

  • Action : Oracle recherche et lit le fichier de paramètres d'initialisation (PFILE ou SPFILE).
  • Résultat : La zone de mémoire SGA est allouée dans la RAM et les processus de fond (DBWR, LGWR, etc.) sont lancés.
  • Usage : On utilise cet état principalement pour la création d'une nouvelle base de données ou la reconstruction des fichiers de contrôle. À ce stade, l'instance "existe" mais elle n'est liée à aucun fichier de données spécifique.

3. L'état MOUNT (Base de données montée)

L'instance est maintenant active et cherche à prendre possession de ses fichiers.

  • Action : Oracle ouvre les Control Files (Fichiers de contrôle) spécifiés dans le fichier de paramètres.
  • Résultat : L'instance lit l'emplacement des fichiers de données (Datafiles) et des journaux (Redo Logs), mais ne les ouvre pas encore. Elle vérifie simplement leur présence.
  • Usage : C'est l'état privilégié pour la maintenance lourde : renommage de fichiers de données, activation/désactivation du mode ARCHIVELOG, ou récupération de base de données (Recovery). La base est "verrouillée" pour les utilisateurs.

4. L'état OPEN (Base de données ouverte)

C'est l'état de fonctionnement normal.

  • Action : Oracle ouvre tous les Datafiles et les Online Redo Logs.
  • Résultat : Le moteur vérifie la cohérence (synchronisation) entre les en-têtes des fichiers et le fichier de contrôle via le SCN (System Change Number). Si tout est cohérent, la base devient accessible.
  • Usage : Les utilisateurs peuvent se connecter et exécuter des requêtes SQL.

🛑 Synthèse des modes d'arrêt (Shutdown)

À l'inverse, pour fermer l'instance, le DBA dispose de plusieurs options selon l'urgence :

Commande Description
SHUTDOWN NORMAL Attend que tous les utilisateurs se déconnectent. Pas de nouvelles connexions autorisées.
SHUTDOWN TRANSACTIONAL Attend la fin des transactions en cours (Commit/Rollback), puis déconnecte les utilisateurs.
SHUTDOWN IMMEDIATE Coupe les connexions, annule les transactions en cours et ferme proprement. (Le plus utilisé).
SHUTDOWN ABORT "Coupure de courant" logicielle. Pas de nettoyage. Nécessite une récupération automatique au prochain démarrage.

📋 Synthèse

L'architecture Oracle 11g repose sur la séparation stricte entre le traitement et le stockage. On peut résumer ce chapitre en trois points clés :

1. Le binôme Instance / Base de données

💾 L'Instance (Volatile)

C'est l'ensemble SGA (Mémoire) + Processus. Elle traite les demandes des utilisateurs. Elle disparaît à l'arrêt du serveur.

📁 La Base de données (Persistante)

C'est l'ensemble des fichiers sur disque (Datafiles, Control Files, Redo Logs). Elle contient l'information durable.

2. Les 3 fichiers physiques vitaux

📄 Datafiles

Stockent les données (tables, index).

🎯 Control Files

Coordonnent et surveillent l'état de la base (le "cerveau").

📝 Redo Logs

Enregistrent les changements pour permettre la récupération après crash (le "journal").

3. Les étapes du démarrage (Startup)

  1. 1. NOMOUNT : Lecture du paramètre (SPFILE) + Allocation de la mémoire.
  2. 2. MOUNT : Ouverture des Control Files + Liaison instance/fichiers.
  3. 3. OPEN : Ouverture des fichiers de données + Accès autorisé aux utilisateurs.