Les Composants de l’architecture Oracle
Objectifs Affichage des structures qu’implique la connexion d’un utilisateur à un serveur Oracle. Affichage des étapes du traitement d’une requête. Affichage des étapes du traitement d’un ordre DML Affichage des étapes du traitement des opérations COMMIT DML : Langage de Modification de Donné
Le Serveur Oracle MIDDLEWARE 3/3 2/3 1/3 Application/ réseau serveur FIREWALL (optionnel) Application/ réseau serveur Serveur web FIREWALL (optionnel) 2/3 TCP/IP PC Structure client/serveur 1/3 : Terminal passif : écran connecté directement au serveur (pas de ressource matérielle) -- Mono tâche; puissance de traitement au niveau serveur 2/3 : (1985) A cause de la nécessité d’utiliser les suites bureautiques, traiter graphiquement les données… Le PC remplace le terminal -> puissance de calcul au niveau client; la communication avec le serveur s’effectue à travers un serveur d’application 3/3 : Ajout d’un serveur web en plus de l’architecture 2/3 1/3 RS232C Terminal passif Serveur Utilisateurs
Connexions à une base de données Client Serveur Processus serveur Serveur Oracle Processus Uitlisateur Une relation étroite lie les 2 processus (utilisateur et serveur) Utilisateur
Processus Utilisateur Fonctionne sur la machine du client Il démarre lors d’un appel d’un outil ou d’une application Il exécute l’outil ou l’application (SQL*Plus, Server Manager, Oracle Enterprise Manager, Developer/2000) Il inclut l’UPI (Interface du programme utilisateur) Il appelle le serveur Oracle
Processus Serveur Il fonctionne sur la machine serveur. Il prend en charge un processus utilisateur unique dans la configuration du serveur dédié. Il utilise une PGA exclusive (zone Mémoire) Il inclut l’Oracle Progam Interface (OPI) Il traite les appels générés par le client Il envoie les résultats au client Un serveur dédié est un serveur dédié à UNE base de donnée PGA : zone mémoire utilisée par le serveur pour faire, par exemple des tris spécifiques à un utilisateur spécifique
Instance Oracle Une instance Oracle: SGA Processus en arrière plan Une instance Oracle: Est un moyen d’accéder à une base de données Oracle. Ouvre TOUJOURS une seule et unique Base de données. Il n’y a qu’une instance par base de données C’est la structure qui permet de faire transiter les informations entre le client et le serveur System Global Area (buffer) est située dans le RAM – plus il y a de RAM plus je pourrais gérer finement cette SGA Les processus permettent de communiquer avec les bases de données IL N’Y A PAS DE COMMUNIQUATION DIRECTE AVEC LES BASES DE DONNEES – PASSAGE OBLIGATOIRE A TRAVERS UN BUFFER
Base de données Oracle disques Fichiers de contrôle Fichier de paramètres Fichiers de données Fichiers Redo Log Logs Archivés Fichier mots de passe La base est constituée de : Fichiers de contrôle (format binaire) : interrogation uniquement à travers SQL; il contrôle la cohérence de la base – si inaccessible pas d’accès à la base. D’où l’intérêt de le multiplexer (mirrorer). Il est lu à l’ouverture de base puis mis à jour constamment Fichiers de données : les données (data user) et les données de la base (data system) Fichiers Redo Log : journaux – au minimum 2. Stockage des requêtes qui ont modifiées la base; permettent de rejouer les requêtes de modification en cas de problème Fichiers ne faisant pas partie à proprement parlé de la base Fichier de paramètres : contient la configuration de la base; il n’est lu qu’une fois au démarrage de la base Fichier de mots de passe : password des DBA uniquement Fichier de log arcchivés : les fichiers Red Log archivés (mise en œuvre facultative et manuelle) entre deux sauvegardes
Autres Structures Physiques-Clés Fichier paramètre Fichiers Log Archivés Fichier Mot de passe Base de données
Traitement d’une Requête Parse Ordre Gérer Execute SELECT * FROM emp ORDER BY ename; Gérer Fetch OK OK Résultats Processus Utilisateur Processus Serveur 1er Parse : lancement d’un ordre; le processus envoi dans le SGA et vérifie (parse) la syntaxe de la requête 2ème Execute 3ème Fetch : mise en œuvre d’un plan d’exécution
La Shared Pool INSTANCE SGA Sa taille est définie par shared_pool_size Library cache Cache du dic. de données INSTANCE SGA Sa taille est définie par shared_pool_size Le library cache contient le texte de l’ordre, le code analysé et le plan d’exécution Le cache du dictionnaire de données contient les définitions de tables, des colonnes et privilèges.
Buffer Cache des Données Le nombre de buffers est défini par DB_BLOCK_BUFFERS La taille d’un buffer est spécifiée par DB_BLOCK_SIZE Il stocke les données les plus récemment utilisées
Redo Log Buffer Sa taille est définie par LOG_BUFFER Il enregistre les modifications effectuées par l’intermédiaire d’une instance Il est utilisé d’une manière séquentielle Il est circulaire.
Zone Mémoire du Programme (PGA) Processus serveur N’est ni partagée, ni accessible en écriture Elle contient Une zone de tri Des informations sur la session L’état du curseur (parsing) Etat du curseur : parsing, execute ou fetch
Traitement d’un ordre DML 3 UPDATE emp SET sal=sal*1.1 WHERE empno=7369 Instance SGA Shared pool Library cache Buffer Redo Log Database buffer cache Cache Dico. données 4 5 Processus Serveur 2 1 Fichier de contrôle Fichier Redo log De données Les processus actifs en arrière plan prennent en charge le passage du buffer au fichier de la base des données 1 : récupération des données à partir des fichiers 2 : mise en cache des données 3 : mise en cache du plan d’exécution de la requête dans le Shared Pool 4 : mise en cache de la requête 5 : mise en cache des nouvelles données 6 : les processus actifs écrivent les informations du buffer vers les fichiers de la base
Rollback Segment Image ancienne Nouvelle image Table Rollback segment Sauvegarde temporaire des anciennes données en cache avant d’écrire les données modifées Ordre DML
Database Writer (DBWR) Instance SGA Shared pool DBWR Buffer Cache Des données L’écriture est déclenchée lorsque l’on effectue un commit (explicite ou implicite) ou lorsque le buffer cache est très sollicité (remplissage au ¾ du buffer) Il est prioritaire sur le LGWR Fichiers de données Fichier de contrôle Fichier Redo log
Log Writer (LGWR) Instance SGA Shared pool Buffer Redo Log LGWR Déclenchement à la fermeture de la session et lorsqu’il est plein au ¾ Fichiers De données Fichier de contrôle Fichier Redo Log
Traitement des Opérations du COMMIT 1 Instance SGA Shared pool Processus Serveur Buffer Cache Des données Buffer Redo Log 4 2 3 LGWR Processus Utilisateur Fichier De contrôle Fichiers Redo Log De données En cas de perte de la communication avec le client, le processus pmon la détecte et « tue » le processus client correspondant sur le serveur : les données non commité (toujours présente en buffer) sont perdues
Résumé Instance SGA Base de Données Shared pool DBWR LGWR Processus Serveur PGA Processus Utilisateur Fichier De Paramètre Fichier De contrôle La taille du buffer égale (db_block_size * db_block_buffers) Fichier De données Fichiers Log Archivés Fichiers Redo Log Fichier Mot de passe Base de Données