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 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 :
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.
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.
🔑 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.
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.
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).
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.
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.
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 :
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.
💻 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.
⏱️ 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).
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).
| 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.
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.
À 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.
C'est la première étape du STARTUP.
L'instance est maintenant active et cherche à prendre possession de ses fichiers.
C'est l'état de fonctionnement normal.
À 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. |
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 :
💾 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.
📄 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").