Monetorig SSI
Monetorig SSI
6
Tuning & monitoring des
DBs
Concepts de Tuning
1
02/05/2025
Tuning applicatif
▻ Le tuning système se réfère à l'optimisation du système sous-jacent qui exécute la base de données, notamment le système
d'exploitation, le matériel (CPU, RAM, disque), et les paramètres de configuration du SGBD
Tuning applicatif
▰ Définition : Le tuning applicatif consiste à améliorer l'efficacité des applications qui interagissent avec la base de
données. Cela peut inclure l'optimisation du code SQL, des algorithmes ou de la logique de traitement dans les
applications qui sollicitent la base de données.
▰ Objectif : Réduire le temps de réponse des requêtes SQL, améliorer la gestion des transactions, réduire le nombre de
requêtes envoyées à la base de données, etc.
▰ Exemples :
• Optimisation des requêtes SQL : Utiliser des index pour accélérer les recherches, éviter les jointures inutiles ou
optimiser l'ordre des clauses dans une requête SQL.
• Réduction des allers-retours : Limiter le nombre de fois qu'une application communique avec la base de données
(par exemple, en regroupant plusieurs petites requêtes en une seule plus efficace).
2
02/05/2025
Tuning système
Tuning système
▰ Définition : Le tuning système se réfère à l'optimisation du système sous-jacent qui exécute la base de données,
notamment le système d'exploitation, le matériel (CPU, RAM, disque), et les paramètres de configuration du SGBD.
▰ Objectif : Améliorer les performances globales du système pour qu'il soit plus capable de gérer les requêtes et les
traitements demandés par l'application. Cela inclut l'optimisation des ressources matérielles et des paramètres
système comme la gestion de la mémoire, le parallélisme, ou les caches.
▰ Exemples :
▻ Optimisation de la mémoire : Configurer la taille du cache de la base de données pour maximiser l'utilisation de
la mémoire disponible.
▻ Optimisation du stockage : Utiliser des SSD plutôt que des disques durs traditionnels pour des performances
plus rapides
Tuning
▰ Objectif :
▻ Réduire temps de réponse et améliorer le débit
▻ Temps de réponse : C'est le temps qu'il faut pour qu'une requête (ou un ensemble de requêtes) retourne un
résultat. Cela peut inclure le temps nécessaire pour récupérer des données ou effectuer des calculs
complexes.
▻ Optimisation du temps de réponse : Cela peut inclure l'indexation des tables, l'optimisation des requêtes
SQL, la réduction du nombre de requêtes ou le partitionnement des données.
▻ Débit (Throughput) : C'est la quantité de travail que le système peut accomplir dans un certain laps de
temps. Dans le cas d'une base de données, cela fait référence à la quantité de données traitées par
seconde.
▻ Optimisation du débit : peut inclure l'optimisation de la parallélisation des requêtes, l'utilisation de
ressources matérielles plus performantes, ou le réglage des paramètres du SGBD pour mieux exploiter le
matériel disponible
3
02/05/2025
Architecture et Performance
▰ Prérequis
▻ Mémoires (SGA, PGA)
▻ Processus (DBWR, LGWR)
▻ Stockage (Tablespaces, Datafiles)
▻ Impact direct sur tuning
Mémoire SGA
▰ La gestion de la mémoire est essentielle pour l’optimisation des performances de la base de données. Il existe deux
types de mémoire principaux dans Oracle :
▻ SGA (System Global Area) et
▻ PGA (Program Global Area).
▰ 1. SGA (System Global Area)
▻ La SGA est une zone mémoire partagée qui contient des informations communes à tous les processus qui accèdent
à la base de données, comme:
▻ les buffers de données,
▻ les informations de cache,
▻ et les structures de contrôle.
▰ Impact sur le tuning
▻ Une SGA mal dimensionnée peut entraîner des ralentissements dans les lectures et écritures de données.
▻ Si la mémoire allouée est trop faible, Oracle doit effectuer davantage de lectures/disques, ce qui ralentit les
performances.
8
4
02/05/2025
▰ Composants de la SGA :
▻ Buffer Cache : Contient les données lues récemment.
▻ Redo Log Buffer : Contient les informations de journalisation des transactions.
▻ Shared Pool : Contient les informations partagées comme les requêtes SQL et les plans d'exécution.
▰ Optimisation de la SGA :
▻ Ajuster la taille du Buffer Cache pour stocker davantage de données fréquemment utilisées.
▻ Utiliser la commande ALTER SYSTEM SET DB_CACHE_SIZE pour augmenter ou diminuer la taille du cache en
fonction des besoins.
10
5
02/05/2025
11
▻ Un hit ratio élevé indique que la plupart des lectures sont satisfaites en mémoire → performances
optimales
▻ Si le ratio est faible → beaucoup de lectures se font directement sur disque, et une augmentation du
Buffer Cache pourrait être nécessaire.
12
6
02/05/2025
Mémoire SGA
▰ La gestion de la mémoire est essentielle pour l’optimisation des performances de la base de données. Il existe deux
types de mémoire principaux dans Oracle :
▻ SGA (System Global Area) et
▻ PGA (Program Global Area).
▰ 2. PGA (Program Global Area).
▻ La PGA est une zone de mémoire privée pour chaque processus utilisateur.
▻ Elle contient les informations spécifiques à l'exécution de chaque requête, comme les résultats temporaires et
les variables locales.
▰ Impact sur le tuning : Si la PGA est trop petite, les processus peuvent être contraints de traiter les données
temporairement sur disque (plutôt qu'en mémoire), ce qui ralentit les performances.
▰ Optimisation de la PGA :
▻ Ajuster la taille de la PGA avec le paramètre PGA_AGGREGATE_TARGET.
▻ Surveiller l’utilisation de la PGA avec des outils comme V$PGASTAT pour détecter les processus gourmands en
mémoire. 13
▰ Oracle utilise plusieurs processus en arrière-plan pour gérer l’entrée/sortie des données et maintenir la cohérence de la
base de données.
▰ DBWR (Database Writer)
▻ Le processus DBWR est responsable de l’écriture des blocs modifiés dans la base de données (de la mémoire
vers le disque).
▰ Impact sur le tuning :
▻ Si le processus DBWR est trop lent (par exemple en raison d'une mémoire cache insuffisante), cela peut entraîner un
retard dans l’écriture des données, augmentant ainsi le temps d'attente pour les autres opérations.
▻ Un tuning approprié de la SGA (en particulier le Buffer Cache) peut réduire la fréquence des écritures en forçant
moins de passages sur disque.
14
7
02/05/2025
▰ Oracle utilise plusieurs processus en arrière-plan pour gérer l’entrée/sortie des données et maintenir la cohérence de la
base de données.
▰ LGWR (Log Writer)
▻ Le processus LGWR écrit les informations de journalisation (redo logs) pour garantir la durabilité des
transactions.
▻ Cela se produit de manière asynchrone, en arrière-plan.
▰ Impact sur le tuning : Des temps de latence élevés pour le processus LGWR peuvent entraîner un retard dans la gestion
des transactions et affecter les performances.
▻ Si LGWR écrit lentement les informations dans les redo logs → entraîner une latence élevée dans le processus
de validation des transactions et affecter la performance globale de la base de données.
▻ Des temps de latence élevés pour LGWR peuvent aussi ralentir la gestion des transactions et donc affecter la
capacité d'Oracle à valider rapidement les transactions, ce qui a un impact négatif sur les applications.
▻ Il est important d'optimiser les redo logs (en utilisant des disques rapides) et de surveiller les write-ahead logs.
15
16
8
02/05/2025
▻ LOG_FILE_SYNC : Ce paramètre définit si le processus LGWR doit attendre la confirmation de l'écriture du fichier
de redo log. Il est conseillé de ne pas trop restreindre ce paramètre pour éviter des latences excessives.
▻ Ce paramètre peut être ajuster dans le pfile/spfile.
17
Architecture et Performance
▰ Prérequis
▻ Mémoires (SGA, PGA)
▻ Processus (DBWR, LGWR)
▻ Stockage (Tablespaces, Datafiles)
▻ Les tablespaces et datafiles jouent un rôle essentiel dans le stockage physique
des données et peuvent influencer les performances de manière significative.
9
02/05/2025
▰ Tablespaces
▻ Un tablespace est une unité logique de stockage dans Oracle qui regroupe plusieurs datafiles.
▻ Un tablespace est utilisé pour organiser les objets de la base de données (tables, index, etc.).
20
10
02/05/2025
▰ Datafiles
▻ Définition : Les datafiles sont des fichiers physiques qui stockent les données dans les tablespaces.
▰ Impact sur le tuning :
▻ Le nombre de datafiles et leur taille peuvent influencer la gestion de l'espace disque et la vitesse des opérations
de lecture/écriture.
▻ Trop de datafiles ou des datafiles mal répartis peuvent entraîner des goulots d'étranglement.
▰ Optimisation des datafiles :
▻ Utiliser la répartition automatique des datafiles avec Automatic Storage Management pour optimiser la
distribution des données sur plusieurs disques.
▻ Resize les datafiles pour éviter les problèmes de croissance inattendue et les tablespaces plein.
21
11
02/05/2025
▰ 1. DBMS_STATS :
▻ Le package DBMS_STATS est utilisé pour collecter, gérer et analyser les statistiques des objets de la base de
données.
▻ Il permet de collecter des statistiques sur les tables, index, et autres objets pour permettre à l'optimiseur de
prendre des décisions informées.
▻ Exemple de commande :
▻ Mise à jour des statistiques existantes : Si des statistiques sont déjà présentes et qu'un DBA souhaite les mettre
à jour pour refléter les changements dans les données, il peut utiliser la même commande que pour la collecte :
12
02/05/2025
▻ Sur une base régulière : Les statistiques doivent être mises à jour de manière régulière pour refléter les
changements dans les données et maintenir des performances optimales.
▻ Après la création de nouveaux objets (par exemple, de nouvelles tables ou index) : Il est conseillé de
collecter immédiatement les statistiques sur ces objets pour que l'optimiseur puisse en tenir compte dès la
première exécution de requêtes
▻ 2. activation
13
02/05/2025
Indexation
▰ Types d'index :
▻ B-tree
▻ Bitmap
▰ Choix de l'index selon :
▻ Cardinalité
▻ Type de requêtes
14
02/05/2025
Vues Matérialisées
15
02/05/2025
Monitoring : Concepts
Monitoring : Concepts
16
02/05/2025
Monitoring : Concepts
Monitoring : Concepts
▻ La PGA (Program Global Area) stocke des informations spécifiques à chaque session (PGA).
17
02/05/2025
Monitoring : Concepts
▻ I/O_OPERATIONS : Somme des lectures et écritures, donnant une idée de l'activité globale d'I/O pour chaque fichier de la
base de données.
Monitoring : Concepts
18
02/05/2025
Monitoring : Concepts
Monitoring : Concepts
19
02/05/2025
Outils de Monitoring
▰ V$VIEWS :
▻ V$SESSION
▻ V$SQL
▻ V$SYSTEM_EVENT
▰ Enterprise Manager (OEM)
Outils de Monitoring
▰ La vue V$SESSION
▻ fournit des informations détaillées sur les sessions Oracle actives dans la base de données.
▻ Elle permet de voir quel utilisateur est connecté, ce qu'il fait, et d'obtenir des détails sur ses ressources et ses
verrous.
20
02/05/2025
▰ La vue V$SESSION
▻ Exemple d’utilisation : Surveiller une session spécifique et ses activités SQL,
▻ Récupérer le SQL_ID et observer l'état de la requête :
▻ permet de suivre exactement ce que fait une session dans la base de données en
termes de requêtes SQL.
41
Outils de Monitoring
▰ V$SQL
▻ La vue V$SQL fournit des informations sur les requêtes SQL exécutées dans la base de données.
▻ Elle contient des statistiques de performance et des informations sur les plans d'exécution des requêtes.
▻ Exemple de commande pour afficher les requêtes SQL exécutées :
21
02/05/2025
Outils de Monitoring
▰ V$SQL
▻ Exemple d'utilisation : Si une requête prend beaucoup de temps à s'exécuter, vous pouvez identifier la requête à
l'aide de son SQL_ID et optimiser son exécution :
▻ Ce qui permet d'obtenir des informations sur le plan d'exécution et de rechercher des goulets d'étranglement
dans l'exécution de la requête
Outils de Monitoring
▰ V$SYSTEM_EVENT
▻ La vue V$SYSTEM_EVENT donne des informations sur les événements système qui se produisent au niveau de la
base de données, comme les événements d'attente, qui peuvent indiquer des problèmes de performance.
▻ Exemple de commande pour afficher les événements système :
▻ EVENT : Le nom de l'événement système (par exemple, "db file sequential read", "log file
sync").
▻ TOTAL_WAITS : Le nombre total d'attentes pour cet événement.
▻ TIME_WAITED : Le temps total d'attente pour cet événement.
▻ AVERAGE_WAIT : Le temps moyen d'attente pour cet événement.
22
02/05/2025
Outils de Monitoring
▰ V$SYSTEM_EVENT
▻ La vue V$SYSTEM_EVENT donne des informations sur les événements système qui se produisent au niveau de la
base de données, comme les événements d'attente, qui peuvent indiquer des problèmes de performance.
▻ Exemple d’utilisation : Si vous remarquez un événement d'attente particulièrement élevé, comme une attente
pour les fichiers de données → enquêter sur le problème à l'aide de V$SESSION pour identifier la session qui
attend cet événement.
▻ Cela permet d'identifier les sessions bloquées en raison de problèmes d'accès au disque.
46
23
02/05/2025
▰ Une fois que la tâche est exécutée, vous pouvez obtenir les recommandations :
48
24
02/05/2025
▰ Memory Adviso
▻ Aide à ajuster les paramètres liés à la mémoire, comme la SGA (System Global Area) et la PGA (Program Global
Area), pour optimiser les performances.
▻ Exemple d'utilisation :
▻ Cette tâche permet d’ analyser l'utilisation de la mémoire et obtenir des recommandations sur la manière
d'ajuster les tailles de mémoire pour améliorer la performance de la base de données.
49
▰ Segment Adviso
▻ examine les tables et les index pour recommander des actions comme la réorganisation, la compression ou la
suppression de segments inutilisés.
▻ Exemple d'utilisation :
▻ Une fois la tâche exécutée, vous pouvez obtenir un rapport des actions recommandées.
50
25
02/05/2025
▰ Space Adviso
▻ Aide à la gestion des tablespaces, en particulier pour réduire la fragmentation ou gérer l'extension de l'espace
disque.
▻ Exemple d'utilisation :
▻ Le rapport généré par le Space Advisor peut recommander des actions comme la fusion de tablespaces ou la
gestion de l’espace pour les fichiers de données.
51
▰ Space Adviso
▻ Aide à la gestion des tablespaces, en particulier pour réduire la fragmentation ou gérer l'extension de l'espace
disque.
▻ Exemple d'utilisation :
▻ Le rapport généré par le Space Advisor peut recommander des actions comme la fusion de tablespaces ou la
gestion de l’espace pour les fichiers de données.
52
26
02/05/2025
Tuning Mémoire
Tuning Stockage
▰ Types de fragmentation :
▻ Fragmentation interne : Lorsque les blocs de données ne sont pas utilisés efficacement (beaucoup de place libre
à l'intérieur des blocs).
▻ La fragmentation interne se produit lorsque les blocs de données dans un segment de table ou d'index
contiennent beaucoup d'espace inutilisé.
▻ Cela arrive souvent lorsqu'une table ou un index est mis à jour, des lignes sont supprimées ou mises à jour
et qu'il reste de l'espace vide dans les blocs.
▻ Cet espace inutilisé dans les blocs de données ne peut pas être réutilisé efficacement pour d'autres
données.
27
02/05/2025
Tuning Stockage
▰ Types de fragmentation :
▻ Fragmentation interne : Lorsque les blocs de données ne sont pas utilisés efficacement (beaucoup de place libre
à l'intérieur des blocs).
▻ Conséquence de la fragmentation interne :
▻ Un grand espace inutilisé reste dans ces blocs.
▻ Les nouveaux enregistrements sont insérés dans ces blocs partiellement remplis, et la gestion de l'espace
devient moins efficace, ce qui augmente l'I/O disque.
Tuning Stockage
▰ Types de fragmentation :
▻ Fragmentation externe : Lorsque les blocs de données sont distribués de manière inefficace sur le disque.
▻ se produit lorsque les blocs de données sont répartis sur différents segments de tablespace de manière
inefficace.
▻ Cela signifie que les segments de données sont répartis de manière dispersée sur l'espace de stockage,
créant des "trous" ou des espaces vides dans les tablespaces, ce qui rend difficile la gestion des données.
▻ Exemple de fragmentation externe : une table employees qui est constamment insérée, mise à jour et supprimée
avec un grand nombre d'opérations. Les segments de données peuvent être déplacés ou divisés entre différents
tablespaces, créant une fragmentation externe.
28
02/05/2025
Tuning Stockage
▰ Types de fragmentation :
▻ Fragmentation externe : Lorsque les blocs de données sont distribués de manière inefficace sur le disque.
▻ Conséquence de la fragmentation externe :
▻ Les données sont dispersées sur plusieurs fichiers de données et tablespaces, rendant l'accès aux données moins
efficace.
▻ Cela peut également augmenter le nombre d'opérations I/O nécessaires pour récupérer les données, car la base de
données doit rechercher plusieurs zones du disque.
Tuning Stockage
29
02/05/2025
59
▰ Partitionnement des données permet de diviser une grande table ou un index en plusieurs partitions plus petites, ce qui
facilite la gestion et améliore les performances des requêtes.
▰ Types de partitionnement :
▻ Partitionnement par plage : Les données sont divisées en partitions basées sur une plage de valeurs, comme une
plage de dates.
▻ Partitionnement par liste : Les données sont divisées en partitions basées sur des valeurs spécifiques (par
exemple, les régions géographiques).
▻ Partitionnement par hachage : Les données sont réparties sur plusieurs partitions en fonction d'une fonction de
hachage.
▻ Partitionnement composite : Une combinaison des types de partitionnement ci-dessus.
60
30
02/05/2025
▰ Avantages du partitionnement :
▻ Amélioration des performances de requête :
▻ Les requêtes peuvent être exécutées plus rapidement en accédant uniquement
à la partition pertinente.
▻ Maintenance plus facile :
▻ Gestion , archive et supprestion des partitions individuelles sans affecter
l'ensemble de la table.
▻ Réduction des conflits de verrouillage :
▻ Accès concurrent à différentes partitions peut être optimisé.
61
▰ La compression des données consiste à stocker les données de manière à réduire la quantité d'espace disque
nécessaire tout en maintenant la capacité de lecture et d'écriture rapide.
▰ Types de compression :
▻ Compression de table : Réduit l'espace de stockage utilisé par une table.
▻ Compression de données à chaud (ou Advanced Compression) : Utilisée pour les tables fréquemment mises à
jour ou consultées.
▻ Compression de données à froid : Utilisée pour les données rarement utilisées.
62
31
02/05/2025
63
32