Oracle ARCHITECTURE INTERNE STRUCTURE PHYSIQUE FONCTIONNALITES DE BASE STRUCTURE LOGIQUE
ORGANISATION DES COUCHES ORACLE PL/SQL SQL DICTIONNAIRE DONNEES NOYAU
FONCTIONNALITES DES COUCHES NOYAU Intégrité des données, Confidentialité des données, Sauvegarde et restauration des données, Gestion des accès concurrents, Optimisation de l'exécution des requêtes (tuning), Gestion des accélérateurs (index, cluster), Stockage physique des données.
FONCTIONNALITES DES COUCHES DICTIONNAIRE DONNEES Une méta-base qui permet de stocker les éléments suivants : Objets de la base : tables, views, index, synonymes, clusters, séquences, … Utilisateurs accédant à la base avec leurs privilèges et les droits qu'ils ont sur les objets. Informations relatives à l'activité de la base (connexions, ressources utilisées, verrouillages, …).
FONCTIONNALITES DES COUCHES SQL Interface unique entre le noyau RDBMS et les outils. Cette couche assure : Vérification sémantique et syntaxique. Décomposition en opération élémentaires. Envoi au noyau pour traitement. Récupération des résultats et communication aux outils.
FONCTIONNALITES DES COUCHES PL/SQL Extension procédurale de la couche SQL, intégrée au noyau depuis la version 7.1, elle permet : Réaliser les traitements procéduraux. Écrire des traitements stockés dans le dictionnaire (Procédures, fonctions, packages, triggers)
ARCHITECTURE TECHNIQUE LA MEMOIRE SGA (System Global Area) Database Buffers REDO LOG Buffers SQL Area Dictionary Cache Library Cache PMON DBWR CKPT LGWR SMON LIST RECO ARCH Datafile Redo Log File Control File DISPA SRV
ARCHITECTURE TECHNIQUE LA MEMOIRE INSTANCE Ensemble de ressources permettant d'accéder à une base de données SGA System Global Area PROCESS Mémoire LIST Process obligatoires Process optionnels PMON DBWR LGWR DISP ARCH SMON RECO CKPT CKPT
ARCHITECTURE TECHNIQUE LA MEMOIRE ELEMENTS de gestion d'une INSTANCE Paramètres dans le PFILE db_block_size db_cache_size control_files open_cursors background_dump_dest core_dump_dest timed_statistics user_dump_dest db_name instance_name java_pool_size large_pool_size shared_pool_size process …. Fichier des paramètres PFILE c:\oracle\admin\nom_base\pfile\initXXX.ora sql> desc V$PARAMETER Vues systèmes pour la gestion de l'instance V$THREAD V$INSTANCE V$DATABASE
Exemple d'un PFILE db_block_size=4096 db_cache_size=33554432 control_files=("C:\oracle\oradata\orabase\CONTROL01.CTL", "C:\oracle\oradata\orabase\CONTROL02.CTL", "C:\oracle\oradata\orabase\CONTROL03.CTL") open_cursors=300 background_dump_dest=C:\oracle\admin\orabase\bdump core_dump_dest=C:\oracle\admin\orabase\cdump timed_statistics=TRUE user_dump_dest=C:\oracle\admin\orabase\udump db_domain="" remote_login_passwordfile=EXCLUSIVE compatible=9.0.0 db_name=orabase fast_start_mttr_target=300 instance_name=orabase java_pool_size=33554432 large_pool_size=1048576 shared_pool_size=33554432 processes=150 undo_management=AUTO undo_tablespace=UNDOTBS sort_area_size=524288
SGA (SYSTEM GLOBAL AREA) DATABASE BUFFER Ensemble de buffers permettant en mémoire les blocs de données lus dans le fichiers de la base. Un bloc contenu dans le buffer est accessible à tous les utilisateurs. Le nombre de buffers a un grand impact sur le performances. Plus Le nombre de buffers est grand, moins sont les entrées. Découpée en 3 sous zones logiques différentes : KEEP : données permanentes (référentiel). RECYCLE : données temporaires. DEFAULT : algorithme LRU (Least Recently Used).
SGA (SYSTEM GLOBAL AREA) DATABASE BUFFER Vues système utilisées V$SGA ; V$PARAMETER ; Paramètres dans le PFILE : DB_BLOCK_SIZE ; DB_BLOCK_BUFFERS Taille globale = DB_BLOCK_SIZE * DB_BLOCK_BUFFERS
SGA (SYSTEM GLOBAL AREA) REDO LOG BUFFER Zone associée aux fichiers de journalisation. Lors d'une mise à jour de la base, l'image avant la mise à jour et après sont écrites dans le buffer. Un ordre COMMIT, ordonne à LGRW de consigner les transactions dans les fichiers de journalisation. L'augmentation de la taille de cette zone, croît la performance du système (réduction des E/S).
SGA (SYSTEM GLOBAL AREA) REDO LOG BUFFER Vues système utilisées V$SGA ; V$PARAMETER ; Paramètres dans le PFILE : LOG_BUFFER
SGA (SYSTEM GLOBAL AREA) SHARED POOL SQL AREA Une zone mémoire partagée, utilisée pour réduire au maximum les entrées/sorties disque. La répartition entre les sous-zones est logique et est gérée par le noyau. D'autres zones ont été rajoutées, en fonction des versions d'Oracle. LIBRARY CACHE DICTIONARY CACHE PFILE SHARED_POOL_SIZE Vidage du pool ALTER SYSTEM FLUSH SHARED POOL POOL JAVA
SGA (SYSTEM GLOBAL AREA) SQL AREA Stockage des informations du parsing (analyse requête SQL). Réutilisation du parsing déjà effectué pour une requête donnée. Parsing pénalise la ressource CPU. Vues du dictionnaire utilisées pour la zone SQL Area V$SQLAREA V$SQL V$SQLTEXT SQL> desc v$sqltext Name Type Nullable Default Comments ------------ ------------ -------- ------- -------- ADDRESS RAW(4) Y HASH_VALUE NUMBER Y COMMAND_TYPE NUMBER Y PIECE NUMBER Y SQL_TEXT VARCHAR2(64) Y
SGA (SYSTEM GLOBAL AREA) DICTIONARY CACHE Conservation dans le cache les données en provenance du dictionnaire. Accès par les process serveurs. Minimiser les accès sur le dictionnaire. Vue du dictionnaire utilisées pour la zone SQL Area V$ROWCACHE ;
SGA (SYSTEM GLOBAL AREA) LIBRARY CACHE Permet de stocker les premiers traitements (fonctions, procédures, packages) lancés, pour un accès ultérieur plus rapide. Accessibilité à ces traitements par tous les utilisateurs. Vue du dictionnaire utilisées pour la zone SQL Area V$LIBRARYCACHE ;
SGA (SYSTEM GLOBAL AREA) LARGE POOL Utilisé à partir de la version 8, pour une architecture en multithread. Permet de stocker les informations de plusieurs sessions en multithreading. Dans le PFILE LARGE_POOL_SIZE
SGA (SYSTEM GLOBAL AREA) OUTIL DE SUIVI PFILE VIEWS SYSTEM SHARED_POOL_SIZE LOG_BUFFER DB_BLOCK_SIZE DB_BLOCK_BUFFERS DB_NAME INSTANCE_NAME V$SGA V$SQLAREA V$LIBRARYCACHE V$ROWCACHE V$DATABASE V$INSTANCE V$SESSION
PROCESS MEMOIRE Obligatoires DBWRx Processus de lecture/écriture dans la base, On peut en avoir plusieurs s'il y a une forte activité sur la BDD. Paramètres DB_BLOCK_WRITE_BATCH : Nombre de blocs écrits par déclenchement. DB_WRITER_PROCESSES : Nombre de process /Instance. DB_IO_SLAVES : Générés par un DBWRi.
PROCESS MEMOIRE Obligatoires LGWR Écrire des données des blocs du buffer REDO LOG en cas de COMMIT. Assurer l'intégrité de la base. Comme le nombre de fichiers de journalisation est au minimum égal à 2, on demander un switch explicite : ALTER SYSTEM SWITCH LOGFILE;
PROCESS MEMOIRE Obligatoires SMON - System Monitor Utilisé au démarrage de la base, Restaure la base suite à un arrêt anormal. Nettoie les segments temporaires lors du redémarrage. Restitue la base dans un état cohérent en cas d'arrêt avec des transactions en cours. Défragmente la base.
PROCESS MEMOIRE Obligatoires PMON - Process Monitor Traitement de récupération des processus utilisateur. Nettoyage de la mémoire cache et des ressources libérées par un process utilisateur.
PROCESS MEMOIRE Obligatoires CKPT - CHECKPOINT Provoque l'activation du DBWR pour écrire les blocs modifiés depuis le dernier point de contrôle, S'exécute automatiquement quand les fichiers de journalisation sont pleins. Paramètre dans PFILE CHECKPOINT_PROCESS = TRUE
PROCESS MEMOIRE OPTIONNELS ARCH : Recopie des fichiers de journalisation sur un média. - Paramètres LOG_ARCHIVE_START ; LOG_ARCHIVE_DEST ; RECO : Lance les restaurations sur les bases distribuées. SNAP : Rafraîchissement automatique des snapshot. DISPATCHER (Dxxxx) : MultiThreading. LSTNR : Agent d'écoute pour les clients de la base. LCK : Gestion des verrous pour les serveurs parallèle d'Oracle.