Blog ENI : Toute la veille numérique !
💥 Un livre PAPIER acheté
= La version EN LIGNE offerte pendant 1 an !
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici

Les bases de l'architecture Oracle

Présentation générale

1. Notions d’instance et de base de données

images/02ri01.png

Un serveur Oracle comporte deux éléments distincts : l’instance et la base de données

La base de données se compose d’un ensemble de fichiers physiques qui contiennent notamment les données. L’instance se compose d’une structure de mémoire partagée et d’un ensemble de processus. Ces deux éléments sont intimement liés mais doivent être bien distingués.

De manière imagée, il est possible de considérer que l’instance représente une application (par exemple Microsoft Word) et la base de données, le document (par exemple un document Microsoft Word) ; pour pouvoir accéder à la base de données (l’équivalent du document Microsoft Word), il faut l’ouvrir avec une instance Oracle (l’équivalent de l’application Microsoft Word).

Une instance ne peut ouvrir qu’une base de données à la fois et, dans la grande majorité des cas, une base de données est ouverte par une seule instance. Néanmoins, moyennant la mise en œuvre de l’option Real Application Clusters (RAC), une base de données peut être ouverte par plusieurs instances situées sur des nœuds distincts d’un cluster de serveurs ; cette option RAC est intéressante pour la haute disponibilité.

Un fichier de paramètres est utilisé par l’instance lors de son démarrage pour se configurer et faire le lien avec la base de données.

En dehors des processus de l’instance, il existe des processus utilisateur correspondant à l’application utilisée par l’utilisateur pour se connecter à la base de données (SQL*Plus, un progiciel, un logiciel spécifique, etc.). Dans une architecture client/serveur, ces processus utilisateur sont situés sur le poste de l’utilisateur et communiquent avec le serveur à travers le réseau grâce à la couche Oracle Net (voir le chapitre Oracle Net pour une présentation d’Oracle Net).

2. La base de données

images/02ri02.png

Une base de données est constituée de :

  • un ou plusieurs fichiers de données contenant les données...

La base de données

1. Fichier de contrôle

Le fichier de contrôle contient des informations de contrôle sur la base de données :

  • le nom de la base de données ;

  • la date/heure de création de la base de données ;

  • l’emplacement des autres fichiers de la base de données (fichiers de données et fichiers de journalisation) ;

  • le numéro de séquence actuel des fichiers de journalisation ;

  • des informations sur les points de reprise (checkpoint) ;

  • etc.

Le fichier de contrôle est automatiquement mis à jour par Oracle lors de chaque modification de la structure de la base de données (ajout ou déplacement d’un fichier par exemple). La taille du fichier de contrôle est déterminée par Oracle.

Lorsqu’une instance est lancée pour ouvrir une base de données, le fichier de contrôle est le premier fichier ouvert. Il permet ensuite à l’instance de localiser et d’ouvrir les autres fichiers de la base de données. Si le fichier de contrôle ne peut pas être trouvé (ou est endommagé), la base de données ne peut pas être ouverte, même si les autres fichiers de la base de données sont présents (l’instance reste dans le statut NOMOUNT - voir le chapitre Démarrage et arrêt). Différents scénarios de restauration sont alors disponibles en fonction de la situation (présence ou non d’une sauvegarde du fichier de contrôle notamment) pour redémarrer la base de données, mais ce sont des scénarios relativement complexes.

Pour des raisons de sécurité, il est donc conseillé de multiplexer le fichier de contrôle, c’est-à-dire d’en avoir plusieurs copies gérées en miroir (multiplexées) par Oracle. Techniquement, il est possible de créer une base de données avec un seul fichier de contrôle mais il est vivement conseillé d’utiliser plusieurs copies, même si le serveur ne comporte qu’un disque (cela met à l’abri d’une suppression accidentelle).

Plusieurs fichiers de contrôle peuvent être spécifiés lors de la création de la base (chapitre Création d’une...

L’instance

1. La SGA

a. Vue d’ensemble

La SGA (System Global Area) est une zone de mémoire partagée par les différents processus de l’instance.

La SGA est allouée au démarrage de l’instance et libérée lors de l’arrêt de l’instance. Elle est dimensionnée par un ensemble de paramètres définis dans le fichier de paramètres.

Depuis la version 9 d’Oracle, la SGA est redimensionnable à chaud. Depuis la version 10 d’Oracle, certaines structures de la SGA peuvent être gérées automatiquement (cf. section La gestion de la mémoire dans ce chapitre).

La taille maximale de la SGA est limitée par le paramètre SGA_MAX_SIZE.

La SGA comporte les structures suivantes :

  • Database Buffer Cache : cache de données.

  • Redo Log Buffer: mémoire tampon pour l’enregistrement des modifications apportées à la base de données.

  • Shared Pool: zone de partage des requêtes (Library Cache), cache du dictionnaire de données Oracle (Dictionary Cache) et cache pour le résultat de requêtes SQL ou des fonctions PL/SQL (Result Cache, apparu en version 11).

  • Java Pool : mémoire utilisée par la machine virtuelle Java intégrée.

  • Large Pool: zone de mémoire optionnelle utilisée par différents processus dans des configurations particulières (serveurs partagés, exécution de requêtes en parallèle, Recovery Manager).

  • Streams Pool : zone de mémoire utilisée par la fonctionnalité Streams (fonctionnalité qui permet de faire circuler des informations entre processus) et par Data Pump (utilitaire qui permet d’exporter et d’importer des données - voir le chapitre Les utilitaires).

  • Flashback Buffer : zone de mémoire optionnelle utilisée lorsque la fonctionnalité Flashback Database est activée (voir le chapitre Sauvegarde et récupération).

  • Database Smart Flash Cache : zone de mémoire optionnelle qui permet d’étendre le Database Buffer Cache à l’aide de disques flash (disponible uniquement sous Solaris et Oracle Linux).

  • Shared I/O Pool (SecureFiles) : zone de mémoire utilisée pour les opérations sur les SecureFile Large...

L’administrateur de base de données

1. Principales tâches

Les principales tâches de l’administrateur de base de données (DBA) sont les suivantes :

  • installation des produits ;

  • création/démarrage/arrêt des bases de données ;

  • gestion des structures de stockage ;

  • gestion des utilisateurs (et de leurs droits) ;

  • sauvegarde/restauration.

2. Comptes Oracle d’administration

Après création, une base de données Oracle contient toujours deux comptes ayant les privilèges d’administrateur :

  • SYS (mot de passe par défaut : change_on_install) ;

  • SYSTEM (mot de passe par défaut : manager).

SYS est le propriétaire du dictionnaire de données ; SYSTEM peut être propriétaire de tables complémentaires utilisées par les outils Oracle.

Ces mots de passe par défaut peuvent (doivent) être changés lors de la création de la base de données.

Ces comptes peuvent être utilisés indifféremment pour l’administration courante (gestion des utilisateurs, du stockage, etc.) uniquement lorsque la base est démarrée.

Un privilège supplémentaire particulier (SYSDBA ou SYSOPER) est nécessaire pour certaines opérations (démarrage, arrêt, etc.). En version 12, Oracle a introduit de nouveaux privilèges, dont le privilège SYSBACKUP, qui contient uniquement les droits nécessaires pour effectuer des sauvegardes et des récupérations. Ce nouveau privilège permet de mieux séparer les rôles et les responsabilités dans une entreprise, entre l’administrateur de la base de données qui requiert tous les droits et un opérateur de sauvegarde qui a besoin de droits plus restreints pour effectuer son travail. De plus, l’activation de ces privilèges nécessite un mécanisme d’authentification particulier, puisque la base de données peut ne pas être disponible. Cette authentification s’effectue soit par le système d’exploitation, soit par un fichier de mots de passe.

Dans le chapitre Gestion des utilisateurs et de leurs droits, nous verrons que la notion de "DBA" correspond à un rôle (ensemble de privilèges regroupés sous...

Le dictionnaire de données

1. Présentation

Le dictionnaire de données est un ensemble de tables et de vues qui donnent des informations sur le contenu d’une base de données :

  • les structures de stockage ;

  • les utilisateurs et les droits ;

  • les objets (tables, vues, index, procédures, fonctions, etc.).

  • etc.

Le dictionnaire de données appartient à SYS et est stocké dans le tablespace SYSTEM. Il est créé lors de la création de la base de données et mis à jour automatiquement par Oracle lorsque des ordres SQL DDL (Data Definition Language) sont exécutés (CREATE, ALTER, DROP).

Pour l’utiliser, il suffit de l’interroger grâce à des requêtes SELECT. Sauf exception, toutes les informations sont stockées en majuscules dans le dictionnaire de données ; tenez en compte dans l’écriture de vos clauses WHERE !

Le dictionnaire de données est chargé en mémoire dans la partie Dictionary Cache de la Shared Pool et est utilisé en interne par Oracle pour traiter les requêtes.

Le dictionnaire de données est créé lors de la création de la base. D’un point de vue pratique, les tables proprement dites du dictionnaire de données ne sont pas documentées par Oracle et sont donc difficiles à utiliser. Par contre, grâce à des scripts fournis par Oracle, il est possible de créer des vues (et des synonymes publics) qui, elles, sont documentées et permettent effectivement d’exploiter le dictionnaire de données ; cette étape de la création d’une base sera présentée dans le chapitre Création d’une nouvelle base de données.

Il y a deux grands groupes de tables/vues dans le dictionnaire de données :

  • les tables et vues statiques ;

  • les tables et vues dynamiques de performance.

Les tables et vues statiques sont basées sur de vraies tables stockées dans le tablespace SYSTEM. Elles sont accessibles uniquement quand la base de données est ouverte "complètement". Les tables et vues dynamiques de performance ne sont en fait pas basées sur de vraies tables mais sur des informations en mémoire...