{"id":6398,"date":"2025-02-22T12:25:49","date_gmt":"2025-02-22T11:25:49","guid":{"rendered":"http:\/\/rootfan.com\/?p=6398"},"modified":"2025-07-11T16:23:09","modified_gmt":"2025-07-11T14:23:09","slug":"les-evenements-dattente-doracle-expliques","status":"publish","type":"post","link":"https:\/\/rootfan.com\/fr\/oracle-wait-events-explained\/","title":{"rendered":"Les 7 principaux \u00e9v\u00e9nements d'attente Oracle expliqu\u00e9s"},"content":{"rendered":"<p>Les \u00e9v\u00e9nements d'attente Oracle sont des statistiques qu'un processus serveur ou un thread incr\u00e9mente lorsqu'il attend la fin d'une op\u00e9ration pour poursuivre son traitement.<\/p>\n\n\n\n<p>Voici quelques-uns des \u00e9v\u00e9nements d'attente les plus courants d'Oracle, expliqu\u00e9s.<\/p>\n\n\n\n<!--more-->\n\n\n\n<div class=\"wp-block-rank-math-toc-block\" id=\"rank-math-toc\"><h2>Table des mati\u00e8res<\/h2><nav><ul><li><a href=\"#buffer-busy-waits\">Attentes d'occupation de la m\u00e9moire tampon<\/a><ul><li><a href=\"#\ud83d\udd0d-what-is-buffer-busy-waits\">\ud83d\udd0d Qu'est-ce que l'attente en cas d'occupation de la m\u00e9moire tampon ?<\/a><\/li><li><a href=\"#\ud83d\udee0-causes-and-solutions-for-buffer-busy-waits\">\ud83d\udee0 Causes et solutions pour les temps d'attente en cas d'occupation de la m\u00e9moire tampon<\/a><ul><li><a href=\"#1-\ufe0f-hot-block-contention-too-many-sessions-on-the-same-block\">1\ufe0f\u20e3 Hot Block Contention (trop de sessions dans le m\u00eame bloc)<\/a><\/li><li><a href=\"#2-\ufe0f-undo-segment-contention\">2\ufe0f\u20e3 Annuler la contestation d'un segment<\/a><\/li><li><a href=\"#3-\ufe0f-sequence-and-index-contention\">3\ufe0f\u20e3 S\u00e9quence et contestation d'index<\/a><\/li><li><a href=\"#4-\ufe0f-direct-path-loads-or-high-dml\">4\ufe0f\u20e3 Direct Path Loads or High DML<\/a><\/li><li><a href=\"#5-\ufe0f-inadequate-buffer-cache\">5\ufe0f\u20e3 Cache tampon inad\u00e9quat<\/a><\/li><\/ul><\/li><li><a href=\"#\ud83d\udcdd-how-to-diagnose-the-exact-cause\">\ud83d\udcdd Comment diagnostiquer la cause exacte<\/a><\/li><\/ul><\/li><li><a href=\"#free-buffer-waits\">Attentes de la m\u00e9moire tampon libre<\/a><ul><li><a href=\"#\ud83d\udd0d-what-is-free-buffer-waits\">\ud83d\udd0d Qu'est-ce que l'attente en m\u00e9moire tampon libre ?<\/a><\/li><li><a href=\"#\ud83d\udee0-causes-and-solutions-for-free-buffer-waits\">\ud83d\udee0 Causes et solutions pour les attentes de tampons libres<\/a><ul><li><a href=\"#1-\ufe0f-slow-disk-i-o\">1\ufe0f\u20e3 Lenteur des E\/S du disque<\/a><\/li><li><a href=\"#2-\ufe0f-insufficient-database-writer-throughput\">2\ufe0f\u20e3 D\u00e9bit insuffisant de l'auteur de la base de donn\u00e9es<\/a><\/li><li><a href=\"#3-\ufe0f-too-small-buffer-cache\">3\ufe0f\u20e3 Cache tampon trop petit<\/a><\/li><li><a href=\"#4-\ufe0f-high-volume-of-dirty-buffers\">4\ufe0f\u20e3 Volume \u00e9lev\u00e9 de tampons sales<\/a><\/li><li><a href=\"#5-\ufe0f-check-checkpointing-redo\">5\ufe0f\u20e3 Check Checkpointing &amp; Redo<\/a><\/li><\/ul><\/li><li><a href=\"#\ud83d\udcdd-how-to-diagnose-free-buffer-waits\">\ud83d\udcdd Comment diagnostiquer les attentes de tampons libres<\/a><\/li><\/ul><\/li><li><a href=\"#db-file-sequential-read\">Lecture s\u00e9quentielle d'un fichier de base de donn\u00e9es<\/a><ul><li><a href=\"#\ud83d\udd0d-what-is-db-file-sequential-read\">\ud83d\udd0d Qu'est-ce que la lecture s\u00e9quentielle d'un fichier db ?<\/a><\/li><li><a href=\"#\ud83d\udee0-causes-and-solutions-for-db-file-sequential-read\">\ud83d\udee0 Causes et solutions pour la lecture s\u00e9quentielle d'un fichier db<\/a><ul><li><a href=\"#1-\ufe0f-inefficient-sql-bad-execution-plans\">1\ufe0f\u20e3 SQL inefficace (mauvais plans d'ex\u00e9cution)<\/a><\/li><li><a href=\"#2-\ufe0f-unselective-indexes\">2\ufe0f\u20e3 Indices non s\u00e9lectifs<\/a><\/li><li><a href=\"#3-\ufe0f-missing-indexes\">3\ufe0f\u20e3 Index manquants<\/a><\/li><li><a href=\"#4-\ufe0f-slow-storage-disk-i-o-bottleneck\">4\ufe0f\u20e3 Stockage lent (goulot d'\u00e9tranglement des E\/S du disque)<\/a><\/li><li><a href=\"#5-\ufe0f-insufficient-buffer-cache-too-much-physical-i-o\">5\ufe0f\u20e3 Cache tampon insuffisant (trop d'E\/S physiques)<\/a><\/li><li><a href=\"#6-\ufe0f-hot-objects-frequent-access-to-same-blocks\">6\ufe0f\u20e3 Hot Objects (acc\u00e8s fr\u00e9quent aux m\u00eames blocs)<\/a><\/li><\/ul><\/li><li><a href=\"#\ud83d\udcdd-quick-diagnosis-queries\">\ud83d\udcdd Requ\u00eates de diagnostic rapide<\/a><\/li><\/ul><\/li><li><a href=\"#db-file-scattered-read\">Fichier de base de donn\u00e9es dispers\u00e9 en lecture<\/a><ul><li><a href=\"#\ud83d\udd0d-what-is-db-file-scattered-read\">\ud83d\udd0d Qu'est-ce que le fichier db scattered read ?<\/a><\/li><li><a href=\"#\ud83d\udee0-causes-and-solutions-for-db-file-scattered-read\">\ud83d\udee0 Causes et solutions pour le fichier db scattered read<\/a><ul><li><a href=\"#1-\ufe0f-unnecessary-full-table-scans\">1\ufe0f\u20e3 Scanners de la table compl\u00e8te inutiles<\/a><\/li><li><a href=\"#2-\ufe0f-small-table-full-scans\">2\ufe0f\u20e3 Scans complets de petites tables<\/a><\/li><li><a href=\"#3-\ufe0f-parallel-query-execution\">3\ufe0f\u20e3 Ex\u00e9cution parall\u00e8le des requ\u00eates<\/a><\/li><li><a href=\"#4-\ufe0f-inefficient-query-design-poor-filtering\">4\ufe0f\u20e3 Conception inefficace des requ\u00eates (mauvais filtrage)<\/a><\/li><li><a href=\"#5-\ufe0f-system-or-storage-performance\">5\ufe0f\u20e3 Performance du syst\u00e8me ou du stockage<\/a><\/li><\/ul><\/li><li><a href=\"#\ud83d\udcdd-quick-diagnosis-queries-1\">\ud83d\udcdd Requ\u00eates de diagnostic rapide<\/a><\/li><\/ul><\/li><li><a href=\"#enqueue-waits\">Mise en file d'attente<\/a><ul><li><a href=\"#\ud83d\udd0d-what-are-enqueue-waits\">\ud83d\udd0d Qu'est-ce que l'attente enqueue ?<\/a><\/li><li><a href=\"#\ud83d\udee0-common-enqueue-types-and-solutions\">\ud83d\udee0 Types d'Enqueue courants et solutions<\/a><ul><li><a href=\"#1-\ufe0f-enq-tx-row-lock-contention-most-common\">1\ufe0f\u20e3 enq : TX - row lock contention (le plus fr\u00e9quent)<\/a><\/li><li><a href=\"#2-\ufe0f-enq-tm-contention-dml-on-objects\">2\ufe0f\u20e3 enq : TM - contention (DML sur objets)<\/a><\/li><li><a href=\"#3-\ufe0f-enq-tx-index-contention-hot-index-blocks\">3\ufe0f\u20e3 enq : TX - contention d'index (Hot Index Blocks)<\/a><\/li><li><a href=\"#4-\ufe0f-enq-sq-sequence-contention\">4\ufe0f\u20e3 enq : SQ (Sequence Contention)<\/a><\/li><li><a href=\"#5-\ufe0f-enq-ul-user-defined-locks\">5\ufe0f\u20e3 enq : UL (verrouillages d\u00e9finis par l'utilisateur)<\/a><\/li><li><a href=\"#6-\ufe0f-enq-hw-high-water-mark-contention\">6\ufe0f\u20e3 enq : HW (High Water Mark Contention)<\/a><\/li><\/ul><\/li><li><a href=\"#\ud83d\udcdd-diagnosis-queries-for-enqueue-waits\">\ud83d\udcdd Requ\u00eates de diagnostic pour les attentes en file d'attente<\/a><\/li><\/ul><\/li><li><a href=\"#log-buffer-space\">Espace tampon du journal<\/a><ul><li><a href=\"#\ud83d\udd0d-what-is-log-buffer-space\">\ud83d\udd0d Qu'est-ce que l'espace tampon du journal ?<\/a><\/li><li><a href=\"#\ud83d\udee0-causes-and-solutions-for-log-buffer-space\">\ud83d\udee0 Causes et solutions pour l'espace tampon du journal<\/a><ul><li><a href=\"#1-\ufe0f-redo-logs-on-slow-disk\">1\ufe0f\u20e3 Redo Logs on Slow Disk (en anglais)<\/a><\/li><li><a href=\"#2-\ufe0f-small-redo-log-buffer-log-buffer\">2\ufe0f\u20e3 Small Redo Log Buffer (LOG_BUFFER)<\/a><\/li><li><a href=\"#3-\ufe0f-lgwr-undersized-or-slow\">3\ufe0f\u20e3 LBV Sous-dimensionn\u00e9e ou lente<\/a><\/li><li><a href=\"#4-\ufe0f-high-redo-generation-too-much-commit-or-dml\">4\ufe0f\u20e3 G\u00e9n\u00e9ration \u00e9lev\u00e9e de redondances (trop de COMMIT ou de DML)<\/a><\/li><li><a href=\"#5-\ufe0f-redo-log-files-too-small-frequent-log-switches\">5\ufe0f\u20e3 Fichiers de logs Redo trop petits (changements de logs fr\u00e9quents)<\/a><\/li><\/ul><\/li><li><a href=\"#\ud83d\udcdd-quick-diagnosis-steps\">\ud83d\udcdd \u00c9tapes du diagnostic rapide<\/a><\/li><\/ul><\/li><li><a href=\"#log-file-sync\">Synchronisation des fichiers journaux<\/a><ul><li><a href=\"#\ud83d\udd0d-what-is-log-file-sync\">Qu'est-ce que la synchronisation des fichiers journaux ?<\/a><\/li><li><a href=\"#\ud83d\udee0-causes-and-solutions-for-log-file-sync\">\ud83d\udee0 Causes et solutions pour la synchronisation des fichiers journaux<\/a><ul><li><a href=\"#1-\ufe0f-frequent-commits-commit-flooding\">1\ufe0f\u20e3 Commits fr\u00e9quents (Commit Flooding)<\/a><\/li><li><a href=\"#2-\ufe0f-slow-redo-log-writes-disk-i-o-bottleneck\">2\ufe0f\u20e3 Lenteur des \u00e9critures du journal Redo (goulot d'\u00e9tranglement des E\/S disque)<\/a><\/li><li><a href=\"#3-\ufe0f-small-redo-log-files-too-many-switches\">3\ufe0f\u20e3 Petits fichiers de log Redo (trop de commutateurs)<\/a><\/li><li><a href=\"#4-\ufe0f-cpu-bottleneck-affecting-lgwr\">4\ufe0f\u20e3 Goulot d'\u00e9tranglement au niveau de l'unit\u00e9 centrale affectant la LBVR<\/a><\/li><li><a href=\"#5-\ufe0f-high-redo-generation-too-much-dml\">5\ufe0f\u20e3 G\u00e9n\u00e9ration \u00e9lev\u00e9e de redondances (trop de DML)<\/a><\/li><\/ul><\/li><li><a href=\"#\ud83d\udcdd-quick-diagnosis-for-log-file-sync\">Diagnostic rapide pour la synchronisation des fichiers journaux<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"buffer-busy-waits\">Attentes d'occupation de la m\u00e9moire tampon<\/h2>\n\n\n\n<p>Cet \u00e9v\u00e9nement se produit lorsqu'une session souhaite acc\u00e9der \u00e0 un bloc de base de donn\u00e9es dans la m\u00e9moire tampon, mais qu'elle ne peut le faire parce que la m\u00e9moire tampon est occup\u00e9e.<\/p>\n\n\n\n<p><strong>En termes simples :<\/strong> Imaginez que vous poss\u00e9diez une console de jeux vid\u00e9o sp\u00e9ciale qu'une seule personne peut utiliser \u00e0 la fois. <\/p>\n\n\n\n<p>Si vous voulez jouer et que quelqu'un d'autre est d\u00e9j\u00e0 en train de l'utiliser, vous devez attendre qu'il ait termin\u00e9. <\/p>\n\n\n\n<p>Dans Oracle, la \"m\u00e9moire tampon\" est comme la console de jeux vid\u00e9o : elle conserve les donn\u00e9es importantes en m\u00e9moire. <\/p>\n\n\n\n<p>Lorsqu'une t\u00e2che souhaite utiliser une partie de ces donn\u00e9es (un bloc de base de donn\u00e9es) mais que celle-ci est d\u00e9j\u00e0 utilis\u00e9e par quelqu'un d'autre, la t\u00e2che doit attendre. <\/p>\n\n\n\n<p>Cette attente est appel\u00e9e \"attente occup\u00e9e par la m\u00e9moire tampon\".<\/p>\n\n\n\n<p>Merci, c'est beaucoup plus clair. Concentrons-nous plus particuli\u00e8rement sur <strong><code>buffer busy waits<\/code><\/strong> et comment les r\u00e9soudre.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"\ud83d\udd0d-what-is-buffer-busy-waits\">\ud83d\udd0d Qu'est-ce que <code>buffer busy waits<\/code>?<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Cet \u00e9v\u00e9nement d'attente se produit lorsque plusieurs sessions tentent d'acc\u00e9der au m\u00eame bloc de donn\u00e9es <strong>dans le cache tampon<\/strong>mais le bloc est <strong>actuellement occup\u00e9<\/strong> (soit en lecture dans le cache, soit en modification par une autre session).<\/li>\n\n\n\n<li>Il s'agit d'un <strong>probl\u00e8me de contention<\/strong> \u00e0 la <strong>couche de cache tampon<\/strong>Il ne s'agit donc pas d'un probl\u00e8me de disque.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"\ud83d\udee0-causes-and-solutions-for-buffer-busy-waits\">\ud83d\udee0 Causes et solutions pour les enfants de moins de 18 ans <code>buffer busy waits<\/code><\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"1-\ufe0f-hot-block-contention-too-many-sessions-on-the-same-block\">1\ufe0f\u20e3 <strong>Contention de blocs chauds (trop de sessions dans le m\u00eame bloc)<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Exemple<\/strong>: De nombreuses sessions mettent \u00e0 jour ou lisent le m\u00eame petit ensemble de blocs (par exemple, des insertions dans le m\u00eame bloc de table ou des mises \u00e0 jour des m\u00eames lignes).<\/li>\n\n\n\n<li><strong>Corrections<\/strong>:\n<ul class=\"wp-block-list\">\n<li><strong>Augmenter les listes de diffusion \/ groupes de diffusion<\/strong> (pour les tablespaces non-ASSM) pour r\u00e9partir les insertions sur un plus grand nombre de blocs.<\/li>\n\n\n\n<li><strong>Passer \u00e0 l'ASSM<\/strong> (Automatic Segment Space Management) afin d'\u00e9viter les goulets d'\u00e9tranglement dans la liste libre.<\/li>\n\n\n\n<li><strong>Partitionner la table<\/strong> ou <strong>utiliser le partitionnement par hachage<\/strong> pour r\u00e9partir les donn\u00e9es sur plusieurs blocs.<\/li>\n\n\n\n<li><strong>Reconstruire les index<\/strong> ou <strong>r\u00e9partir les donn\u00e9es de mani\u00e8re plus homog\u00e8ne<\/strong>.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"2-\ufe0f-undo-segment-contention\">2\ufe0f\u20e3 <strong>Annuler la contestation d'un segment<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Cause<\/strong>: Plusieurs utilisateurs mettent \u00e0 jour des donn\u00e9es en utilisant les m\u00eames blocs de segments d'annulation.<\/li>\n\n\n\n<li><strong>Corrections<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Augmenter le nombre de segments d'annulation (fixer une valeur plus \u00e9lev\u00e9e pour les segments d'annulation). <code>_undo_autotune<\/code> ou ajuster l'annulation du dimensionnement de l'espace de stockage).<\/li>\n\n\n\n<li>R\u00e9viser les param\u00e8tres de conservation des annulations.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"3-\ufe0f-sequence-and-index-contention\">3\ufe0f\u20e3 <strong>Contention de s\u00e9quence et d'index<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Cause<\/strong>: Les insertions rapides dans des tables avec des cl\u00e9s s\u00e9quentielles (comme les champs ID) peuvent provoquer des blocages d'index.<\/li>\n\n\n\n<li><strong>Corrections<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Utilisation <strong>index de cl\u00e9s invers\u00e9es<\/strong>.<\/li>\n\n\n\n<li>Utilisation <strong>index partitionn\u00e9s par hachage<\/strong> ou <strong>indices mondiaux<\/strong>.<\/li>\n\n\n\n<li>Mettre en \u0153uvre <strong>s\u00e9quences mises en cache<\/strong> (<code>CR\u00c9ER UNE S\u00c9QUENCE ... CACHE 1000<\/code>).<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"4-\ufe0f-direct-path-loads-or-high-dml\">4\ufe0f\u20e3 <strong>Charges par trajet direct ou DML \u00e9lev\u00e9<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Cause<\/strong>: Insertions directes simultan\u00e9es ou op\u00e9rations de masse fr\u00e9quentes.<\/li>\n\n\n\n<li><strong>Corrections<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Utilisation <strong>APPEND<\/strong> des conseils judicieux.<\/li>\n\n\n\n<li>\u00c9chelonner les travaux par lots pour \u00e9viter la concurrence.<\/li>\n\n\n\n<li>Veiller \u00e0 ce que le parall\u00e9lisme ne soit pas trop agressif.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"5-\ufe0f-inadequate-buffer-cache\">5\ufe0f\u20e3 <strong>Cache tampon inad\u00e9quat<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Cause<\/strong>: SGA insuffisant entra\u00eenant un remplacement fr\u00e9quent des blocs et une relecture \u00e0 partir du disque.<\/li>\n\n\n\n<li><strong>Corrections<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Augmentation <strong>DB_CACHE_SIZE<\/strong>.<\/li>\n\n\n\n<li>Utilisation <strong>Gestion automatique de la m\u00e9moire (AMM)<\/strong> ou <strong>Gestion automatique de la m\u00e9moire partag\u00e9e (ASMM)<\/strong> correctement r\u00e9gl\u00e9e.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"\ud83d\udcdd-how-to-diagnose-the-exact-cause\">\ud83d\udcdd Comment diagnostiquer la cause exacte<\/h3>\n\n\n<div class=\"wp-block-syntaxhighlighter-code\" data-no-translation=\"\"><pre class=\"brush: sql; title: ; notranslate\" title=\"\">\nSELECT event, p1 &quot;File#&quot;, p2 &quot;Block#&quot;, p3 &quot;Class#&quot;,\n       COUNT(*) AS waits\nFROM v$session_wait\nWHERE event = &#039;buffer busy waits&#039;\nGROUP BY event, p1, p2, p3\nORDER BY waits DESC;\n<\/pre><\/div>\n\n\n<p>\ud83d\udc49 Utilisez ceci pour trouver la <strong>file# et block#<\/strong> causant l'attente, alors :<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code\" data-no-translation=\"\"><pre class=\"brush: sql; title: ; notranslate\" title=\"\">\nSELECT segment_name, segment_type\nFROM dba_extents\nWHERE file_id = &File#\nAND &Block# BETWEEN block_id AND block_id + blocks - 1;\n<\/pre><\/div>\n\n\n<p>Cela vous indique <strong>quel objet (table\/index)<\/strong> est responsable.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>\u2705 <strong>R\u00e9sum\u00e9 des actions :<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Cause<\/th><th>Solution<\/th><\/tr><\/thead><tbody><tr><td>Table chaude\/bloc d'indexation<\/td><td>Diffusion de donn\u00e9es (FREELISTTS, ASSM, partitionnement)<\/td><\/tr><tr><td>Annuler la contention des segments<\/td><td>Plus de segments d'annulation, plus de r\u00e9glages d'annulation<\/td><\/tr><tr><td>S\u00e9quence\/indexation des blocs chauds<\/td><td>Cl\u00e9 invers\u00e9e, cache de s\u00e9quence, partitionnement du hachage<\/td><\/tr><tr><td>Chargements en vrac\/DML<\/td><td>D\u00e9caler les t\u00e2ches, accorder le parall\u00e9lisme<\/td><\/tr><tr><td>Cache trop petit<\/td><td>Augmentation <code>DB_CACHE_SIZE<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"free-buffer-waits\">Attentes de la m\u00e9moire tampon libre<\/h2>\n\n\n\n<p>Cet \u00e9v\u00e9nement se produit principalement lorsqu'un processus serveur tente de lire un nouveau tampon dans le cache tampon, mais que trop de tampons sont soit \u00e9pingl\u00e9s, soit sales et donc indisponibles pour la r\u00e9utilisation. <\/p>\n\n\n\n<p>La session envoie des messages \u00e0 DBWR, puis attend que DBWR cr\u00e9e des tampons libres en \u00e9crivant les tampons sales sur le disque.<\/p>\n\n\n\n<p><strong>En termes simples :<\/strong> Imaginez que vous ayez une \u00e9tag\u00e8re de jouets compl\u00e8tement remplie. <\/p>\n\n\n\n<p>Maintenant, vous voulez y mettre un nouveau jouet, mais il n'y a pas de place car tous les emplacements sont occup\u00e9s par des jouets qui sont en train de jouer ou qui doivent d'abord \u00eatre nettoy\u00e9s.<\/p>\n\n\n\n<p>Parfait - plongeons dans <strong><code>attente libre de la m\u00e9moire tampon<\/code><\/strong> en particulier, sur la base de l'\u00e9v\u00e9nement d'attente que vous avez mentionn\u00e9 dans l'article.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"\ud83d\udd0d-what-is-free-buffer-waits\">\ud83d\udd0d Qu'est-ce que <code>attente libre de la m\u00e9moire tampon<\/code>?<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Cet \u00e9v\u00e9nement se produit lorsque <strong>une session a besoin d'un tampon libre dans le cache tampon<\/strong>mais aucun n'est disponible car :\n<ol class=\"wp-block-list\">\n<li>Le <strong>DBWR (Database Writer)<\/strong> n'a pas encore \u00e9crit les tampons sales sur le disque pour lib\u00e9rer de l'espace.<\/li>\n\n\n\n<li>Le syst\u00e8me g\u00e9n\u00e8re des blocs sales <strong>plus rapidement que DBWR ne peut les rincer<\/strong>.<\/li>\n<\/ol>\n<\/li>\n<\/ul>\n\n\n\n<p>Il indique une <strong>goulot d'\u00e9tranglement en \u00e9criture<\/strong>: la base de donn\u00e9es veut r\u00e9utiliser les tampons, mais ils ne sont pas encore libres.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"\ud83d\udee0-causes-and-solutions-for-free-buffer-waits\">\ud83d\udee0 Causes et solutions pour les enfants de moins de 18 ans <code>attente libre de la m\u00e9moire tampon<\/code><\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"1-\ufe0f-slow-disk-i-o\">1\ufe0f\u20e3 <strong>Lenteur de l'E\/S du disque<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Cause<\/strong>: DBWR n'est pas en mesure d'\u00e9crire les blocs sales assez rapidement pour lib\u00e9rer les tampons en raison de la lenteur des performances du disque.<\/li>\n\n\n\n<li><strong>Corrections<\/strong>:\n<ul class=\"wp-block-list\">\n<li>D\u00e9placer <strong>fichiers de donn\u00e9es<\/strong> \u00e0 <strong>disques plus rapides (par exemple, SSD)<\/strong>.<\/li>\n\n\n\n<li>\u00c9quilibrer les E\/S en r\u00e9partissant les donn\u00e9es sur plusieurs disques ou groupes de disques ASM.<\/li>\n\n\n\n<li>Examiner et optimiser la <strong>Sous-syst\u00e8me E\/S (r\u00e9glage SAN\/NAS)<\/strong>.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"2-\ufe0f-insufficient-database-writer-throughput\">2\ufe0f\u20e3 <strong>D\u00e9bit insuffisant du r\u00e9dacteur de la base de donn\u00e9es<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Cause<\/strong>: Trop peu de processus DBWR pour traiter le volume de blocs sales.<\/li>\n\n\n\n<li><strong>Corrections<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Augmenter le nombre de <strong>Processus DB Writer<\/strong> en utilisant : <code>DB_WRITER_PROCESSES =<\/code> (Dans les syst\u00e8mes OLTP, plusieurs DBWR permettent de r\u00e9partir la charge d'\u00e9criture).<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"3-\ufe0f-too-small-buffer-cache\">3\ufe0f\u20e3 <strong>Cache tampon trop petit<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Cause<\/strong>: Le cache tampon (SGA) est trop petit pour g\u00e9rer la charge de travail, ce qui entra\u00eene une accumulation fr\u00e9quente de tampons sales.<\/li>\n\n\n\n<li><strong>Corrections<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Augmentation <strong>DB_CACHE_SIZE<\/strong> (ou utiliser la gestion automatique de la m\u00e9moire (AMM\/ASMM)).<\/li>\n\n\n\n<li>Examiner les taux de r\u00e9ussite du cache de la m\u00e9moire tampon \u00e0 l'aide de : <code>SELECT name, value FROM v$sysstat WHERE name LIKE '%buffer cache%' ;<\/code><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"4-\ufe0f-high-volume-of-dirty-buffers\">4\ufe0f\u20e3 <strong>Volume \u00e9lev\u00e9 de tampons sales<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Cause<\/strong>: Les pics soudains de DML (mises \u00e0 jour\/insertions en masse) remplissent le cache de blocs sales plus rapidement qu'ils ne peuvent \u00eatre \u00e9crits.<\/li>\n\n\n\n<li><strong>Corrections<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Optimiser les instructions DML pour r\u00e9duire les changements de bloc.<\/li>\n\n\n\n<li>Utilisation <strong>Charges par trajet direct (indice APPEND)<\/strong> pour les insertions importantes afin de contourner le cache tampon.<\/li>\n\n\n\n<li>R\u00e9partir les DML lourds dans le temps ou les programmer pendant les heures creuses.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"5-\ufe0f-check-checkpointing-redo\">5\ufe0f\u20e3 <strong>V\u00e9rifier le point de contr\u00f4le et refaire<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Cause<\/strong>: Un r\u00e9glage inefficace des points de contr\u00f4le peut retarder le recyclage de la m\u00e9moire tampon.<\/li>\n\n\n\n<li><strong>Corrections<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Ajuster les param\u00e8tres du point de contr\u00f4le : <strong>FAST_START_MTTR_TARGET<\/strong>.<\/li>\n\n\n\n<li>Augmentation <strong>taille du fichier journal<\/strong> afin d'\u00e9viter des points de contr\u00f4le trop fr\u00e9quents.<\/li>\n\n\n\n<li>V\u00e9rifier s'il y a des goulots d'\u00e9tranglement au niveau des entr\u00e9es\/sorties du fichier redo log.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"\ud83d\udcdd-how-to-diagnose-free-buffer-waits\">\ud83d\udcdd Comment diagnostiquer <code>attente libre de la m\u00e9moire tampon<\/code><\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>V\u00e9rifier les sessions en cours : <code>SELECT * FROM v$session_wait WHERE event = 'free buffer waits' ;<\/code><\/li>\n\n\n\n<li>V\u00e9rifier les performances des E\/S (temps d'\u00e9criture moyen) : <code>SELECT file#, avg_time, writes FROM v$filestat ;<\/code><\/li>\n\n\n\n<li>V\u00e9rifier les statistiques de la m\u00e9moire tampon sale : <code>SELECT * FROM v$sysstat WHERE name LIKE '%dirty%' ;<\/code><\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>\u2705 <strong>Tableau r\u00e9capitulatif :<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Cause<\/th><th>Solution<\/th><\/tr><\/thead><tbody><tr><td>Lenteur des \u00e9critures sur le disque<\/td><td>Disques plus rapides, fichiers de donn\u00e9es plus \u00e9tendus<\/td><\/tr><tr><td>DBWR n'arrive pas \u00e0 suivre<\/td><td>Augmentation <code>DB_WRITER_PROCESSES<\/code><\/td><\/tr><tr><td>Petit cache tampon<\/td><td>Augmentation <code>DB_CACHE_SIZE<\/code><\/td><\/tr><tr><td>DML lourd<\/td><td>Optimiser ou mieux planifier, utiliser le chemin direct<\/td><\/tr><tr><td>Mauvais point de contr\u00f4le<\/td><td>Accorder <code>FAST_START_MTTR_TARGET<\/code>, taille de l'op\u00e9ration de r\u00e9tablissement<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>\ud83d\udc49 This is a <strong>goulot d'\u00e9tranglement au niveau du syst\u00e8me<\/strong>-la solution passe souvent par <strong>le mat\u00e9riel (disques, m\u00e9moire) et la configuration (DBWR, cache, redo)<\/strong>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"db-file-sequential-read\">Lecture s\u00e9quentielle d'un fichier de base de donn\u00e9es<\/h2>\n\n\n\n<p>Cet \u00e9v\u00e9nement montre l'attente d'un processus de premier plan lors d'une lecture s\u00e9quentielle de la base de donn\u00e9es. <\/p>\n\n\n\n<p>L'E\/S est g\u00e9n\u00e9ralement \u00e9mise sous la forme d'une demande d'E\/S unique au syst\u00e8me d'exploitation ; l'attente se bloque jusqu'\u00e0 ce que la demande d'E\/S soit termin\u00e9e.<\/p>\n\n\n\n<p><strong>En termes simples :<\/strong> Imaginez que vous ayez un livre d'images pr\u00e9f\u00e9r\u00e9, mais qu'il soit rang\u00e9 sur une \u00e9tag\u00e8re en hauteur.<\/p>\n\n\n\n<p>Lorsque vous souhaitez consulter une page sp\u00e9cifique, vous demandez \u00e0 un ami de la saisir pour vous. <\/p>\n\n\n\n<p>Pendant que votre ami va chercher la page, vous restez assis et attendez qu'il revienne avec la page.<\/p>\n\n\n\n<p>Tr\u00e8s bien, concentrons-nous maintenant sur <strong><code>lecture s\u00e9quentielle d'un fichier de base de donn\u00e9es<\/code><\/strong>qui est l'un des \u00e9v\u00e9nements d'attente Oracle les plus courants.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"\ud83d\udd0d-what-is-db-file-sequential-read\">\ud83d\udd0d Qu'est-ce que <code>lecture s\u00e9quentielle d'un fichier de base de donn\u00e9es<\/code>?<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Cette attente se produit lorsque Oracle effectue <strong>lecture d'un seul bloc du disque vers la m\u00e9moire<\/strong>.<\/li>\n\n\n\n<li>C'est typique de :\n<ul class=\"wp-block-list\">\n<li><strong>Recherche d'index<\/strong> (en particulier les index B-tree)<\/li>\n\n\n\n<li><strong>Acc\u00e8s ligne par ligne via la table acc\u00e8s par ROWID<\/strong><\/li>\n\n\n\n<li><strong>Boucles imbriqu\u00e9es jointures<\/strong><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p>Elle est dite \"s\u00e9quentielle\" parce qu'Oracle lit un bloc \u00e0 la fois (et non des blocs multiples).<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"\ud83d\udee0-causes-and-solutions-for-db-file-sequential-read\">\ud83d\udee0 Causes et solutions pour les enfants de moins de 18 ans <code>lecture s\u00e9quentielle d'un fichier de base de donn\u00e9es<\/code><\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"1-\ufe0f-inefficient-sql-bad-execution-plans\">1\ufe0f\u20e3 <strong>SQL inefficace (mauvais plans d'ex\u00e9cution)<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Cause<\/strong>: Requ\u00eates utilisant les index de mani\u00e8re inefficace ou acc\u00e9dant aux donn\u00e9es ligne par ligne inutilement.<\/li>\n\n\n\n<li><strong>Corrections<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Utilisation <strong>EXPLIQUER LE PLAN<\/strong> pour revoir les chemins d'acc\u00e8s aux requ\u00eates.<\/li>\n\n\n\n<li>Consid\u00e9rer <strong>ajout d'index manquants<\/strong> ou <strong>r\u00e9\u00e9criture de SQL<\/strong> pour am\u00e9liorer les chemins d'acc\u00e8s.<\/li>\n\n\n\n<li>Utilisation <strong>m\u00e9thodes de jonction<\/strong> \u00e0 bon escient : \u00e9vitez les boucles imbriqu\u00e9es inutiles.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p>\ud83d\udc49 V\u00e9rifier le plan d'ex\u00e9cution :<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code\" data-no-translation=\"\"><pre class=\"brush: sql; title: ; notranslate\" title=\"\">\nEXPLAIN PLAN FOR &lt;your SQL&gt;;\nSELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);\n\n<\/pre><\/div>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"2-\ufe0f-unselective-indexes\">2\ufe0f\u20e3 <strong>Indices non s\u00e9lectifs<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Cause<\/strong>: Les index qui r\u00e9cup\u00e8rent trop de lignes (faible cardinalit\u00e9) sont toujours utilis\u00e9s.<\/li>\n\n\n\n<li><strong>Corrections<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Abandonnez ou \u00e9vitez d'utiliser les index qui ne filtrent pas bien.<\/li>\n\n\n\n<li>Consid\u00e9rer <strong>index bitmap<\/strong> pour les colonnes \u00e0 faible cardinalit\u00e9 (syst\u00e8mes OLAP\/DSS).<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"3-\ufe0f-missing-indexes\">3\ufe0f\u20e3 <strong>Index manquants<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Cause<\/strong>: Les balayages complets de tables sont \u00e9vit\u00e9s, mais sans index appropri\u00e9s, Oracle se rabat sur des lectures lentes d'un seul bloc.<\/li>\n\n\n\n<li><strong>Corrections<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Ajouter les index appropri\u00e9s pour r\u00e9duire l'acc\u00e8s \u00e0 la table par ROWID.<\/li>\n\n\n\n<li>Mettre en \u0153uvre <strong>indices composites<\/strong> pour des conditions de filtrage multiples.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"4-\ufe0f-slow-storage-disk-i-o-bottleneck\">4\ufe0f\u20e3 <strong>Stockage lent (goulot d'\u00e9tranglement des E\/S du disque)<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Cause<\/strong>: M\u00eame si les requ\u00eates sont efficaces, un stockage lent peut entra\u00eener des temps d'attente \u00e9lev\u00e9s.<\/li>\n\n\n\n<li><strong>Corrections<\/strong>:\n<ul class=\"wp-block-list\">\n<li>D\u00e9placer les donn\u00e9es vers <strong>disques plus rapides (SSD)<\/strong>.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Utilisation <strong>ASM striping<\/strong> ou une distribution ad\u00e9quate des disques.<\/li>\n<\/ul>\n\n\n\n<p>\ud83d\udc49 V\u00e9rifier les entr\u00e9es\/sorties de fichiers :<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code\" data-no-translation=\"\"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nSELECT file#, avg_time, reads, writes\nFROM v$filestat\nORDER BY avg_time DESC;\n\n<\/pre><\/div>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"5-\ufe0f-insufficient-buffer-cache-too-much-physical-i-o\">5\ufe0f\u20e3 <strong>Cache tampon insuffisant (trop d'E\/S physiques)<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Cause<\/strong>: Les manques dans le cache tampon entra\u00eenent davantage de lectures sur le disque.<\/li>\n\n\n\n<li><strong>Corrections<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Augmentation <strong>DB_CACHE_SIZE<\/strong>.<\/li>\n\n\n\n<li>R\u00e9vision et mise au point <strong>Gestion automatique de la m\u00e9moire (AMM\/ASMM)<\/strong>.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p>\ud83d\udc49 V\u00e9rifier l'efficacit\u00e9 du cache :<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code\" data-no-translation=\"\"><pre class=\"brush: sql; title: ; notranslate\" title=\"\">\nSELECT name, value FROM v$sysstat\nWHERE name IN (&#039;physical reads&#039;, &#039;consistent gets&#039;, &#039;db block gets&#039;);\n<\/pre><\/div>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"6-\ufe0f-hot-objects-frequent-access-to-same-blocks\">6\ufe0f\u20e3 <strong>Objets chauds (acc\u00e8s fr\u00e9quent aux m\u00eames blocs)<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Cause<\/strong>: Certains objets (index ou petites tables) sont acc\u00e9d\u00e9s de mani\u00e8re r\u00e9p\u00e9t\u00e9e, ce qui entra\u00eene une saturation de la m\u00e9moire tampon.<\/li>\n\n\n\n<li><strong>Corrections<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Utilisation <strong>GARDER le pool de tampons<\/strong> pour les petites tables ou index fr\u00e9quemment utilis\u00e9s : <code>ALTER TABLE your_table STORAGE (BUFFER_POOL KEEP) ;<\/code><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"\ud83d\udcdd-quick-diagnosis-queries\">\ud83d\udcdd Requ\u00eates de diagnostic rapide<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Trouver des sessions d'attente :<\/li>\n<\/ol>\n\n\n<div class=\"wp-block-syntaxhighlighter-code\" data-no-translation=\"\"><pre class=\"brush: sql; title: ; notranslate\" title=\"\">\nSELECT sid, p1 file#, p2 block#, p3 blocks\nFROM v$session_wait\nWHERE event = &#039;db file sequential read&#039;;\n<\/pre><\/div>\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>Attribuer le fichier# et le bloc# \u00e0 l'objet :<\/li>\n<\/ol>\n\n\n<div class=\"wp-block-syntaxhighlighter-code\" data-no-translation=\"\"><pre class=\"brush: sql; title: ; notranslate\" title=\"\">\nSELECT owner, segment_name, segment_type\nFROM dba_extents\nWHERE file_id = &file#\nAND &block# BETWEEN block_id AND block_id + blocks - 1;\n<\/pre><\/div>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>\u2705 <strong>Tableau r\u00e9capitulatif :<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Cause<\/th><th>Solution<\/th><\/tr><\/thead><tbody><tr><td>Mauvais plans d'ex\u00e9cution SQL<\/td><td>Ajustement de SQL, examen des chemins d'acc\u00e8s, collecte de statistiques<\/td><\/tr><tr><td>Index manquants ou inutiles<\/td><td>Ajouter ou ajuster des index (envisager le saut de bitmap\/index)<\/td><\/tr><tr><td>Disques lents<\/td><td>Utiliser un stockage plus rapide (SSD), ASM, optimisation des E\/S<\/td><\/tr><tr><td>Petit cache tampon<\/td><td>Augmentation <code>DB_CACHE_SIZE<\/code>, examiner l'utilisation de la m\u00e9moire<\/td><\/tr><tr><td>Petites tables\/index chauds<\/td><td>Utiliser le pool de tampons KEEP<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>\ud83d\udc49 Cette attente est <strong>normal<\/strong> pour les syst\u00e8mes OLTP, mais des valeurs excessives signalent des probl\u00e8mes.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"db-file-scattered-read\">Fichier de base de donn\u00e9es dispers\u00e9 en lecture<\/h2>\n\n\n\n<p>Il s'agit du m\u00eame type d'\u00e9v\u00e9nement que \"db file sequential read\", sauf qu'Oracle lira plusieurs blocs de donn\u00e9es. <\/p>\n\n\n\n<p>Les lectures multi-blocs sont g\u00e9n\u00e9ralement utilis\u00e9es pour les balayages complets de tables. <\/p>\n\n\n\n<p>Le nom \u201clecture dispers\u00e9e\u201d fait r\u00e9f\u00e9rence au fait que plusieurs blocs sont lus dans les tampons de blocs de la base de donn\u00e9es qui sont \u2018dispers\u00e9s' dans la m\u00e9moire.<\/p>\n\n\n\n<p><strong>En termes simples :<\/strong> Imaginez que vous ayez un \u00e9norme livre d'images et que vous souhaitiez en feuilleter plusieurs pages rapidement. <\/p>\n\n\n\n<p>Au lieu de demander une page \u00e0 la fois (comme dans une lecture s\u00e9quentielle), vous demandez un grand nombre de pages en m\u00eame temps. <\/p>\n\n\n\n<p>Ces pages peuvent provenir de diff\u00e9rentes parties du livre, de sorte que lorsqu'elles arrivent, elles sont \u00e9tal\u00e9es ou \u201cdispers\u00e9es\u201d sur votre table de lecture.<\/p>\n\n\n\n<p>Excellent - attaquons <strong><code>fichier de base de donn\u00e9es en lecture dispers\u00e9e<\/code><\/strong> maintenant.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"\ud83d\udd0d-what-is-db-file-scattered-read\">\ud83d\udd0d Qu'est-ce que <code>fichier de base de donn\u00e9es en lecture dispers\u00e9e<\/code>?<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Cet \u00e9v\u00e9nement d'attente se produit lorsque Oracle effectue <strong>lectures multiblocs<\/strong>, typiquement associ\u00e9 \u00e0 :\n<ul class=\"wp-block-list\">\n<li><strong>Balayage complet de la table<\/strong><\/li>\n\n\n\n<li><strong>Num\u00e9risation rapide de l'index complet<\/strong><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Il s'agit de <strong>\"dispers\u00e9\"<\/strong> car les blocs lus \u00e0 partir du disque sont dispers\u00e9s dans les tampons de m\u00e9moire au lieu d'\u00eatre plac\u00e9s de mani\u00e8re s\u00e9quentielle (les donn\u00e9es sont donc dispers\u00e9es dans le cache tampon).<\/li>\n<\/ul>\n\n\n\n<p>C'est <strong>courants dans les environnements d'entrep\u00f4ts de donn\u00e9es (DSS)<\/strong> mais doivent \u00eatre r\u00e9duits au minimum dans les syst\u00e8mes OLTP.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"\ud83d\udee0-causes-and-solutions-for-db-file-scattered-read\">\ud83d\udee0 Causes et solutions pour les enfants de moins de 18 ans <code>fichier de base de donn\u00e9es en lecture dispers\u00e9e<\/code><\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"1-\ufe0f-unnecessary-full-table-scans\">1\ufe0f\u20e3 <strong>Scanners de la table compl\u00e8te inutiles<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Cause<\/strong>: Les requ\u00eates acc\u00e8dent \u00e0 des tables enti\u00e8res au lieu d'utiliser des index.<\/li>\n\n\n\n<li><strong>Corrections<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Ajouter <strong>les index appropri\u00e9s<\/strong> (B-tree ou bitmap).<\/li>\n\n\n\n<li>Utilisation <strong>EXPLIQUER LE PLAN<\/strong> afin d'assurer la <strong>l'index est effectivement utilis\u00e9<\/strong>.<\/li>\n\n\n\n<li>V\u00e9rifier si <strong>statistiques manquantes ou p\u00e9rim\u00e9es de l'optimiseur<\/strong> et les rassembler : <br><code>EXEC DBMS_STATS.GATHER_TABLE_STATS(ownname =&gt; 'SCOTT', tabname =&gt; 'EMP') ;<\/code><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"2-\ufe0f-small-table-full-scans\">2\ufe0f\u20e3 <strong>Scans complets de petites tables<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Cause<\/strong>: Oracle choisit souvent des analyses compl\u00e8tes pour les <strong>tr\u00e8s petites tables<\/strong>ce qui est g\u00e9n\u00e9ralement le cas.<\/li>\n\n\n\n<li><strong>Corrections<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Il s'agit de <strong>normal<\/strong> et g\u00e9n\u00e9ralement <strong>pas de probl\u00e8me<\/strong> \u00e0 moins que la fr\u00e9quence ne soit extr\u00eame.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"3-\ufe0f-parallel-query-execution\">3\ufe0f\u20e3 <strong>Ex\u00e9cution parall\u00e8le des requ\u00eates<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Cause<\/strong>: Les requ\u00eates parall\u00e8les sur les grandes tables am\u00e8nent plusieurs sessions \u00e0 lire simultan\u00e9ment des blocs dispers\u00e9s.<\/li>\n\n\n\n<li><strong>Corrections<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Optimiser <strong>degr\u00e9 de parall\u00e9lisme<\/strong> en utilisant <code>POLITIQUE_DEGR\u00c9_PARALLELE<\/code> et <code>LIMITE_DEGR\u00c9_PARALLELE<\/code>.<\/li>\n\n\n\n<li>Consid\u00e9rer <strong>cloisonnement<\/strong> les grandes tables afin de minimiser la n\u00e9cessit\u00e9 d'effectuer des analyses compl\u00e8tes en parall\u00e8le.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"4-\ufe0f-inefficient-query-design-poor-filtering\">4\ufe0f\u20e3 <strong>Conception inefficace des requ\u00eates (mauvais filtrage)<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Cause<\/strong>: Les requ\u00eates permettent d'extraire de grands ensembles de r\u00e9sultats sans clauses WHERE s\u00e9lectives.<\/li>\n\n\n\n<li><strong>Corrections<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Affiner <strong>O\u00f9 les conditions<\/strong> pour r\u00e9duire le nombre de lignes renvoy\u00e9es.<\/li>\n\n\n\n<li>\u00c9vitez les **requ\u00eates SELECT *** inutiles.<\/li>\n\n\n\n<li>R\u00e9vision <strong>logique d'application<\/strong> qui d\u00e9clenche ces lectures.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"5-\ufe0f-system-or-storage-performance\">5\ufe0f\u20e3 <strong>Performance du syst\u00e8me ou du stockage<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Cause<\/strong>: M\u00eame lorsque des num\u00e9risations compl\u00e8tes sont n\u00e9cessaires (par exemple, pour les travaux par lots), <strong>lenteur des E\/S du disque<\/strong> peut exacerber cette attente.<\/li>\n\n\n\n<li><strong>Corrections<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Garantir <strong>le sous-syst\u00e8me de disque est rapide<\/strong> (envisager les disques SSD, les E\/S parall\u00e8les, le striping ASM).<\/li>\n\n\n\n<li>Augmentation <strong><code>DB_FILE_MULTIBLOCK_READ_COUNT<\/code><\/strong> (bien qu'Oracle l'accorde automatiquement dans les versions modernes).<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"\ud83d\udcdd-quick-diagnosis-queries-1\">\ud83d\udcdd Requ\u00eates de diagnostic rapide<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Identifier les sessions en attente :<\/li>\n<\/ol>\n\n\n<div class=\"wp-block-syntaxhighlighter-code\" data-no-translation=\"\"><pre class=\"brush: sql; title: ; notranslate\" title=\"\">\nSELECT sid, p1 file#, p2 block#, p3 blocks\nFROM v$session_wait\nWHERE event = &#039;db file scattered read&#039;;\n<\/pre><\/div>\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>Carte de l'objet :<\/li>\n<\/ol>\n\n\n<div class=\"wp-block-syntaxhighlighter-code\" data-no-translation=\"\"><pre class=\"brush: sql; title: ; notranslate\" title=\"\">\nSELECT owner, segment_name, segment_type\nFROM dba_extents\nWHERE file_id = &file#\nAND &block# BETWEEN block_id AND block_id + blocks - 1;\n<\/pre><\/div>\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li>Trouver les SQL qui causent le plus de balayages complets :<\/li>\n<\/ol>\n\n\n<div class=\"wp-block-syntaxhighlighter-code\" data-no-translation=\"\"><pre class=\"brush: sql; title: ; notranslate\" title=\"\">\nSELECT sql_id, executions, buffer_gets, disk_reads\nFROM v$sql\nWHERE sql_id IN (SELECT sql_id FROM v$session WHERE event = &#039;db file scattered read&#039;)\nORDER BY disk_reads DESC;\n<\/pre><\/div>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>\u2705 <strong>Tableau r\u00e9capitulatif :<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Cause<\/th><th>Solution<\/th><\/tr><\/thead><tbody><tr><td>Balayages inutiles de tables compl\u00e8tes<\/td><td>Ajout\/r\u00e9glage d'index, r\u00e9\u00e9criture de SQL, collecte de statistiques<\/td><\/tr><tr><td>Surcharge des requ\u00eates parall\u00e8les<\/td><td>R\u00e9gler les param\u00e8tres parall\u00e8les, les tables de partition<\/td><\/tr><tr><td>Mauvais filtrage des requ\u00eates<\/td><td>Ajouter des clauses WHERE, \u00e9viter les SELECT *<\/td><\/tr><tr><td>Lenteur du stockage<\/td><td>Am\u00e9liorer le sous-syst\u00e8me d'E\/S, v\u00e9rifier les param\u00e8tres de lecture multiblocs<\/td><\/tr><tr><td>Petites tables (inoffensives)<\/td><td>En g\u00e9n\u00e9ral, aucune action n'est n\u00e9cessaire<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>\ud83d\udc49 Key Tip :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>fichier de base de donn\u00e9es en lecture dispers\u00e9e<\/strong> dans un <strong>OLTP<\/strong> est souvent un syst\u00e8me de <strong>drapeau rouge<\/strong> \u2192 se concentrer sur <strong>indexation et optimisation des requ\u00eates<\/strong>.<\/li>\n\n\n\n<li>En <strong>DSS\/BI<\/strong> de l'environnement, il est souvent <strong>comportement attendu<\/strong> mais elle doit encore \u00eatre efficace.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"enqueue-waits\">Mise en file d'attente<\/h2>\n\n\n\n<p>Cette mesure repr\u00e9sente le nombre total d'attentes par seconde qui se sont produites au cours d'une conversion ou d'une r\u00e9cup\u00e9ration en file d'attente parce que la r\u00e9cup\u00e9ration en file d'attente a \u00e9t\u00e9 diff\u00e9r\u00e9e.<\/p>\n\n\n\n<p><strong>En termes simples :<\/strong> Imaginez que vous ayez un toboggan sp\u00e9cial \u00e0 l'aire de jeux que tout le monde veut utiliser. <\/p>\n\n\n\n<p>Lorsque vous arrivez au toboggan et que vous constatez que quelqu'un d'autre est d\u00e9j\u00e0 dessus, vous devez attendre votre tour. <\/p>\n\n\n\n<p>Chaque fois que vous attendez parce que la diapositive est occup\u00e9e, il s'agit d'une \u201cattente enqueue\u201d.\u201d<\/p>\n\n\n\n<p>Parfait - d\u00e9composons <strong><code>enqueue<\/code> attend<\/strong> dans Oracle et comment les r\u00e9soudre.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"\ud83d\udd0d-what-are-enqueue-waits\">\ud83d\udd0d What are <code>enqueue<\/code> Attend ?<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Un <strong>enqueue<\/strong> est un type de <strong>serrure<\/strong> Oracle utilise pour <strong>contr\u00f4ler l'acc\u00e8s simultan\u00e9 aux ressources<\/strong> (comme les lignes, les tables, les index ou les structures internes).<\/li>\n\n\n\n<li>Lorsqu'une session <strong>ne peut pas obtenir imm\u00e9diatement la serrure requise<\/strong>, il attend un <strong>enqueue wait event<\/strong>.<\/li>\n<\/ul>\n\n\n\n<p>\ud83d\udc49 Les attentes de type Enqueue sont g\u00e9n\u00e9ralement per\u00e7ues comme :<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code\" data-no-translation=\"\"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nenqueue: &lt;type&gt; - &lt;details&gt;\n\n<\/pre><\/div>\n\n\n<p>Exemple :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>enq : TX - contention du verrou de ligne<\/code><\/li>\n\n\n\n<li><code>enq : TM - contention<\/code><\/li>\n\n\n\n<li><code>enq : UL - contention<\/code><\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"\ud83d\udee0-common-enqueue-types-and-solutions\">\ud83d\udee0 Types d'Enqueue courants et solutions<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"1-\ufe0f-enq-tx-row-lock-contention-most-common\">1\ufe0f\u20e3 <strong><code>enq : TX - contention du verrou de ligne<\/code> (le plus souvent)<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Cause<\/strong>: Une session est <strong>modification d'une ligne<\/strong> et qu'un autre essaie d'acc\u00e9der \u00e0 la m\u00eame ligne \u2192 conduit \u00e0 des verrous TX (transaction).<\/li>\n\n\n\n<li><strong>Corrections<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Identifier et <strong>\u00e9liminer les conflits au niveau de l'application<\/strong> (m\u00eame rang\u00e9e mise \u00e0 jour trop fr\u00e9quemment).<\/li>\n\n\n\n<li>Mettre en \u0153uvre <strong>les transactions \u00e0 d\u00e9couvert<\/strong>Les transactions de ce type se font plus t\u00f4t et \u00e9vitent les longues p\u00e9riodes d'inactivit\u00e9 pendant lesquelles les verrous sont maintenus.<\/li>\n\n\n\n<li>Consid\u00e9rer <strong>modifications de la logique d'application<\/strong> \u00e0 <strong>s\u00e9rialiser l'acc\u00e8s<\/strong> aux donn\u00e9es sensibles (files d'attente, compteurs).<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p>\ud83d\udc49 Diagnostic :<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code\" data-no-translation=\"\"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nSELECT * FROM v$lock WHERE type = &#039;TX&#039;;\n\n<\/pre><\/div>\n\n\n<p>Trouver une session de blocage :<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code\" data-no-translation=\"\"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nSELECT blocking_session, sid, serial#, wait_class, seconds_in_wait\nFROM v$session\nWHERE blocking_session IS NOT NULL;\n\n<\/pre><\/div>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"2-\ufe0f-enq-tm-contention-dml-on-objects\">2\ufe0f\u20e3 <strong><code>enq : TM - contention<\/code> (DML sur les objets)<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Cause<\/strong>: G\u00e9n\u00e9ralement observ\u00e9e dans les cas suivants <strong>questions cl\u00e9s concernant l'\u00e9tranger<\/strong> ou <strong>verrouillage des m\u00e9tadonn\u00e9es<\/strong>.<\/li>\n\n\n\n<li><strong>Corrections<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Assurez-vous que <strong>les cl\u00e9s \u00e9trang\u00e8res sont index\u00e9es<\/strong> (pour \u00e9viter les verrous de table lors des suppressions\/mises \u00e0 jour parent-enfant).<\/li>\n\n\n\n<li>\u00c9vitez les <strong>DDL<\/strong> pendant que le DML est en cours d'ex\u00e9cution.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"3-\ufe0f-enq-tx-index-contention-hot-index-blocks\">3\ufe0f\u20e3 <strong><code>enq : TX - contention d'index<\/code> (Blocs d'indexation)<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Cause<\/strong>: Insertions \u00e0 haute teneur en devises dans le <strong>m\u00eame index bloc feuille<\/strong> (par exemple, les identifiants s\u00e9quentiels).<\/li>\n\n\n\n<li><strong>Corrections<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Utilisation <strong>index de cl\u00e9s invers\u00e9es<\/strong>.<\/li>\n\n\n\n<li>Utilisation <strong>index globaux partitionn\u00e9s par hachage<\/strong> pour diffuser des encarts.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"4-\ufe0f-enq-sq-sequence-contention\">4\ufe0f\u20e3 <strong><code>enq : SQ<\/code> (Contention de s\u00e9quence)<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Cause<\/strong>: Sessions multiples \u00e0 l'aide de l'outil <strong>m\u00eame s\u00e9quence<\/strong> sans cache \u2192 hotspot.<\/li>\n\n\n\n<li><strong>Corrections<\/strong>:\n<ul class=\"wp-block-list\">\n<li>D\u00e9finir des s\u00e9quences avec <strong>CACHE<\/strong> et\/ou <strong>SANS COMMANDE<\/strong>: <code>CREATE SEQUENCE my_seq CACHE 1000 NOORDER ;<\/code><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"5-\ufe0f-enq-ul-user-defined-locks\">5\ufe0f\u20e3 <strong><code>enq : UL<\/code> (Verrous d\u00e9finis par l'utilisateur)<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Cause<\/strong>: Application utilisant <strong>DBMS_LOCK<\/strong> ou des files d'attente personnalis\u00e9es.<\/li>\n\n\n\n<li><strong>Corrections<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Examiner et optimiser <strong>logique d'application<\/strong> en utilisant ces serrures.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"6-\ufe0f-enq-hw-high-water-mark-contention\">6\ufe0f\u20e3 <strong><code>enq : HW<\/code> (Contestation de la ligne de flottaison)<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Cause<\/strong>: Fr\u00e9quence \u00e9lev\u00e9e de <strong>les inserts \u00e0 l'origine de la croissance du segment<\/strong>.<\/li>\n\n\n\n<li><strong>Corrections<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Pr\u00e9allocation de l'espace \u00e0 l'aide de : <code>ALTER TABLE my_table ALLOCATE EXTENT ;<\/code><\/li>\n\n\n\n<li>Consid\u00e9rer <strong>inserts parall\u00e8les<\/strong> ou la diffusion de donn\u00e9es.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"\ud83d\udcdd-diagnosis-queries-for-enqueue-waits\">\ud83d\udcdd Requ\u00eates de diagnostic pour les attentes en file d'attente<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Sessions en file d'attente :<\/li>\n<\/ol>\n\n\n<div class=\"wp-block-syntaxhighlighter-code\" data-no-translation=\"\"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nSELECT sid, event, p1raw, p2, p3\nFROM v$session\nWHERE event LIKE &#039;enq%&#039;;\n\n<\/pre><\/div>\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>Bloqueur contre serveur :<\/li>\n<\/ol>\n\n\n<div class=\"wp-block-syntaxhighlighter-code\" data-no-translation=\"\"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nSELECT sid, blocking_session, event, wait_class\nFROM v$session\nWHERE blocking_session IS NOT NULL;\n\n<\/pre><\/div>\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li>D\u00e9codage d\u00e9taill\u00e9 de la file d'attente (facultatif) :<\/li>\n<\/ol>\n\n\n<div class=\"wp-block-syntaxhighlighter-code\" data-no-translation=\"\"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nSELECT chr(bitand(p1, -16777216) \/ 16777215) ||\n       chr(bitand(p1, 16711680) \/ 65536) &quot;Lock Type&quot;\nFROM v$session\nWHERE event LIKE &#039;enq%&#039;;\n\n<\/pre><\/div>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>\u2705 <strong>Tableau r\u00e9capitulatif :<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Type de mise en file d'attente<\/th><th>Cause<\/th><th>Solution<\/th><\/tr><\/thead><tbody><tr><td><code>TX - verrouillage des rangs<\/code><\/td><td>Contestation au niveau des lignes<\/td><td>Raccourcissement des transactions, correction de la logique de l'application<\/td><\/tr><tr><td><code>TM<\/code><\/td><td>Cl\u00e9s \u00e9trang\u00e8res non index\u00e9es<\/td><td>Ajouter des index aux cl\u00e9s \u00e9trang\u00e8res<\/td><\/tr><tr><td><code>TX - index<\/code><\/td><td>Bloc d'indexation \u00e0 chaud<\/td><td>Cl\u00e9 invers\u00e9e ou index partitionn\u00e9<\/td><\/tr><tr><td><code>SQ<\/code><\/td><td>Contestation de la s\u00e9quence<\/td><td>Utiliser le cache s\u00e9quentiel, sans ordre<\/td><\/tr><tr><td><code>UL<\/code><\/td><td>Verrous pour l'utilisateur<\/td><td>Examiner l'utilisation de l'application<\/td><\/tr><tr><td><code>HW<\/code><\/td><td>Marge des hautes eaux<\/td><td>Pr\u00e9allocation des extents<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>\ud83d\udc49 Conseil g\u00e9n\u00e9ral :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Dans la plupart des cas, <strong>les attentes de mise en file d'attente sont dues \u00e0 une conception inefficace de l'application ou \u00e0 des index manquants<\/strong>.<\/li>\n\n\n\n<li>Les r\u00e9glages au niveau du syst\u00e8me (SGA, I\/O) ont peu d'effet...<strong>il s'agit principalement de corrections SQL et logiques<\/strong>.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"log-buffer-space\">Espace tampon du journal<\/h2>\n\n\n\n<p>Attendre qu'il y ait de la place dans le tampon d'enregistrement car nous \u00e9crivons dans le tampon d'enregistrement plus rapidement que lgwr ne peut l'\u00e9crire.<\/p>\n\n\n\n<p><strong>En termes simples :<\/strong> Imaginez que vous ayez un bloc-notes sp\u00e9cial sur lequel vous prenez rapidement des notes. <\/p>\n\n\n\n<p>Il y a un assistant, la LBVR, dont le travail consiste \u00e0 prendre vos notes et \u00e0 les \u00e9crire dans un grand livre s\u00fbr. <\/p>\n\n\n\n<p>Si vous \u00e9crivez des notes trop rapidement et que le bloc-notes se remplit avant que votre assistant ne puisse lib\u00e9rer de l'espace, vous devez faire une pause et attendre qu'il y ait \u00e0 nouveau de la place. <\/p>\n\n\n\n<p>Ce temps d'attente est appel\u00e9 \"espace tampon du journal\".<\/p>\n\n\n\n<p>Excellent choix - concentrons-nous sur <strong><code>espace de la m\u00e9moire tampon du journal<\/code><\/strong> les attentes dans Oracle, qui sont moins fr\u00e9quentes mais critiques lorsqu'elles apparaissent.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"\ud83d\udd0d-what-is-log-buffer-space\">\ud83d\udd0d Qu'est-ce que <code>espace de la m\u00e9moire tampon du journal<\/code>?<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Cet \u00e9v\u00e9nement d'attente se produit lorsque\n<ul class=\"wp-block-list\">\n<li>Oracle tente de copier <strong>entr\u00e9es de r\u00e9p\u00e9tition<\/strong> de la <strong>tampon journal (SGA)<\/strong> \u00e0 la <strong>les redo logs en ligne<\/strong>mais il y a <strong>pas d'espace libre<\/strong> dans la m\u00e9moire tampon du journal parce que les donn\u00e9es de r\u00e9tablissement n'ont pas encore \u00e9t\u00e9 \u00e9crites sur le disque.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p>Il signale un goulot d'\u00e9tranglement entre <strong>processus d'utilisateur g\u00e9n\u00e9rant du redo<\/strong> et <strong>LBVR (Log Writer) qui l'envoie dans les journaux de donn\u00e9es (redo logs)<\/strong>.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"\ud83d\udee0-causes-and-solutions-for-log-buffer-space\">\ud83d\udee0 Causes et solutions pour les enfants de moins de 18 ans <code>espace de la m\u00e9moire tampon du journal<\/code><\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"1-\ufe0f-redo-logs-on-slow-disk\">1\ufe0f\u20e3 <strong>Refaire les journaux sur un disque lent<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Cause<\/strong>: Le <strong>LBVR<\/strong> ne peut pas \u00e9crire les donn\u00e9es de r\u00e9tablissement sur le disque assez rapidement.<\/li>\n\n\n\n<li><strong>Corrections<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Lieu <strong>les redo logs sur la m\u00e9moire la plus rapide disponible<\/strong> (de pr\u00e9f\u00e9rence des disques SSD ou d\u00e9di\u00e9s).<\/li>\n\n\n\n<li>Utilisation <strong>ASM<\/strong> avec une configuration de groupe de disques appropri\u00e9e pour les redo logs.<\/li>\n\n\n\n<li>V\u00e9rifier si <strong>latence du stockage<\/strong>.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p>\ud83d\udc49 V\u00e9rifier les entr\u00e9es\/sorties du fichier journal :<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code\" data-no-translation=\"\"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nSELECT * FROM v$logfile;\n\n<\/pre><\/div>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"2-\ufe0f-small-redo-log-buffer-log-buffer\">2\ufe0f\u20e3 <strong>Petit tampon de journal de r\u00e9p\u00e9tition (<code>LOG_BUFFER<\/code>)<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Cause<\/strong>: Le syst\u00e8me en m\u00e9moire <strong>la m\u00e9moire tampon du journal est trop petite<\/strong>ce qui entra\u00eene des attentes fr\u00e9quentes lorsque de nombreuses sessions g\u00e9n\u00e8rent des donn\u00e9es \u00e0 refaire.<\/li>\n\n\n\n<li><strong>Corrections<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Augmenter la <strong>LOG_BUFFER<\/strong> dans le <strong>SPFILE ou PFILE<\/strong>. <code>ALTER SYSTEM SET LOG_BUFFER =  SCOPE=SPFILE ;<\/code><\/li>\n\n\n\n<li>Les versions modernes d'Oracle proc\u00e8dent \u00e0 un r\u00e9glage automatique, mais un r\u00e9glage manuel peut encore s'av\u00e9rer utile pour les syst\u00e8mes \u00e0 forte intensit\u00e9 de redondance.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p>\ud83d\udc49 V\u00e9rifier la taille actuelle de la m\u00e9moire tampon du journal :<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code\" data-no-translation=\"\"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nSHOW PARAMETER log_buffer;\n\n<\/pre><\/div>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"3-\ufe0f-lgwr-undersized-or-slow\">3\ufe0f\u20e3 <strong>LBV Sous-dimensionn\u00e9e ou lente<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Cause<\/strong>: Le <strong>Processus de la LBVR<\/strong> n'est pas \u00e0 la hauteur du volume de travail \u00e0 refaire.<\/li>\n\n\n\n<li><strong>Corrections<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Garantir <strong>LBVR<\/strong> n'est pas en concurrence avec d'autres processus pour l'utilisation de l'unit\u00e9 centrale.<\/li>\n\n\n\n<li>Dans le CCR : v\u00e9rifier que <strong>LGWR et canaux E\/S<\/strong> sont correctement distribu\u00e9s.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"4-\ufe0f-high-redo-generation-too-much-commit-or-dml\">4\ufe0f\u20e3 <strong>G\u00e9n\u00e9ration \u00e9lev\u00e9e de redondances (trop de COMMIT ou de DML)<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Cause<\/strong>: Taux tr\u00e8s \u00e9lev\u00e9 de validations, de DML ou de travaux par lots g\u00e9n\u00e9rant d'importants volumes de donn\u00e9es \u00e0 refaire.<\/li>\n\n\n\n<li><strong>Corrections<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Utilisation <strong>Commissions par lots<\/strong> au lieu de proc\u00e9der \u00e0 des validations fr\u00e9quentes par ligne.<\/li>\n\n\n\n<li>Optimiser les op\u00e9rations DML pour <strong>r\u00e9duire refaire<\/strong> (op\u00e9rations en vrac, chargements par voie directe lorsque cela est possible).<\/li>\n\n\n\n<li>Consid\u00e9rer <strong>NOLOGGATION<\/strong> des options pour les chargements de donn\u00e9es lorsque la r\u00e9cup\u00e9ration n'est pas n\u00e9cessaire.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p>\ud83d\udc49 Identifier les sessions g\u00e9n\u00e9rant du redo :<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code\" data-no-translation=\"\"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nSELECT sid, serial#, value\nFROM v$sesstat s, v$statname n\nWHERE s.statistic# = n.statistic#\nAND n.name = &#039;redo size&#039;\nORDER BY value DESC;\n\n<\/pre><\/div>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"5-\ufe0f-redo-log-files-too-small-frequent-log-switches\">5\ufe0f\u20e3 <strong>Fichiers journaux de red\u00e9marrage trop petits (changements fr\u00e9quents de journaux)<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Cause<\/strong>: Petits fichiers de redo log \u2192 changements fr\u00e9quents de logs \u2192 pression accrue du LGWR \u2192 contention de la m\u00e9moire tampon.<\/li>\n\n\n\n<li><strong>Corrections<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Augmentation <strong>taille du fichier redo log<\/strong>: <code>ALTER DATABASE ADD LOGFILE SIZE 1G ;<\/code><\/li>\n\n\n\n<li>Viser <strong>ne pas se connecter plus de 10 \u00e0 15 fois par heure<\/strong> en OLTP.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p>\ud83d\udc49 V\u00e9rifier la fr\u00e9quence du commutateur d'enregistrement :<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code\" data-no-translation=\"\"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nSELECT TO_CHAR(first_time, &#039;YYYY-MM-DD HH24&#039;) AS hour, COUNT(*)\nFROM v$log_history\nGROUP BY TO_CHAR(first_time, &#039;YYYY-MM-DD HH24&#039;)\nORDER BY hour DESC;\n\n<\/pre><\/div>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"\ud83d\udcdd-quick-diagnosis-steps\">\ud83d\udcdd \u00c9tapes du diagnostic rapide<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>V\u00e9rifier les sessions en attente sur la m\u00e9moire tampon du journal :<\/li>\n<\/ol>\n\n\n<div class=\"wp-block-syntaxhighlighter-code\" data-no-translation=\"\"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nSELECT sid, event, wait_time, seconds_in_wait\nFROM v$session\nWHERE event = &#039;log buffer space&#039;;\n\n<\/pre><\/div>\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>V\u00e9rifier la taille des enregistrements et le taux de validation :<\/li>\n<\/ol>\n\n\n<div class=\"wp-block-syntaxhighlighter-code\" data-no-translation=\"\"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nSELECT name, value FROM v$sysstat\nWHERE name IN (&#039;redo size&#039;, &#039;user commits&#039;);\n\n<\/pre><\/div>\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li>V\u00e9rifier les performances d'\u00e9criture du LBVR :<\/li>\n<\/ol>\n\n\n<div class=\"wp-block-syntaxhighlighter-code\" data-no-translation=\"\"><pre class=\"brush: sql; title: ; notranslate\" title=\"\">\nSELECT name, value FROM v$sysstat\nWHERE name LIKE &#039;%log file%&#039;;\n<\/pre><\/div>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>\u2705 <strong>Tableau r\u00e9capitulatif :<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Cause<\/th><th>Solution<\/th><\/tr><\/thead><tbody><tr><td>Disque de redo log lent<\/td><td>D\u00e9placer les redo logs vers un stockage plus rapide<\/td><\/tr><tr><td>Petite m\u00e9moire tampon (<code>LOG_BUFFER<\/code>)<\/td><td>Augmentation <code>LOG_BUFFER<\/code> taille<\/td><\/tr><tr><td>La LBVR ne suit pas<\/td><td>V\u00e9rifier le processus CPU, I\/O, LGWR<\/td><\/tr><tr><td>Trop de reprises (commits\/DML fr\u00e9quents)<\/td><td>Optimisation de l'application, commandes par lots<\/td><\/tr><tr><td>Petits fichiers redo log<\/td><td>Augmenter la taille du journal de r\u00e9approvisionnement<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>\ud83d\udc49 Key Notes :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>espace de la m\u00e9moire tampon du journal<\/strong> les attentes sont <strong>rares dans les syst\u00e8mes bien configur\u00e9s<\/strong>.<\/li>\n\n\n\n<li>Les solutions consistent presque toujours \u00e0 <strong>le mat\u00e9riel (disques plus rapides), la configuration (taille des journaux, m\u00e9moire tampon) et le r\u00e9glage des applications (mod\u00e8les DML\/commit)<\/strong>.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"log-file-sync\">Synchronisation des fichiers journaux<\/h2>\n\n\n\n<p>C'est le temps d'attente pour que le LGWR \u00e9crive dans les fichiers redo log.<\/p>\n\n\n\n<p><strong>En termes simples :<\/strong> Imaginez que vous jouez \u00e0 un jeu o\u00f9 chaque mouvement que vous faites doit \u00eatre not\u00e9 dans un journal sp\u00e9cial pour que vous puissiez vous en souvenir.<\/p>\n\n\n\n<p>Il y a un ami appel\u00e9 LBVR dont le travail consiste \u00e0 noter chaque mouvement. <\/p>\n\n\n\n<p>Si vous jouez un coup et que vous devez attendre parce que votre ami est encore en train d'\u00e9crire le coup pr\u00e9c\u00e9dent dans le journal, il s'agit d'une attente de \u201csynchronisation du fichier journal\u201d. <\/p>\n\n\n\n<p>Cela signifie que vous faites une pause jusqu'\u00e0 ce que la LBVR ait fini d'\u00e9crire votre mouvement dans les fichiers journaux.<\/p>\n\n\n\n<p>Excellent choix...<strong><code>synchronisation des fichiers journaux<\/code><\/strong> est l'un des plus <strong>les \u00e9v\u00e9nements d'attente courants et importants<\/strong> dans les bases de donn\u00e9es Oracle, en particulier dans les syst\u00e8mes OLTP. Voyons cela en d\u00e9tail.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"\ud83d\udd0d-what-is-log-file-sync\">\ud83d\udd0d Qu'est-ce que <code>synchronisation des fichiers journaux<\/code>?<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Cet \u00e9v\u00e9nement d'attente se produit lorsqu'une session <strong>effectue une transaction<\/strong> et doit <strong>attendre que le LGWR (Log Writer) \u00e9crive les donn\u00e9es de r\u00e9\u00e9criture dans le fichier de r\u00e9\u00e9criture.<\/strong> et confirmer qu'il est stock\u00e9 en toute s\u00e9curit\u00e9.<\/li>\n\n\n\n<li>Ce n'est qu'apr\u00e8s la confirmation de cette \u00e9criture que l'utilisateur peut accuser r\u00e9ception de la validation.<\/li>\n<\/ul>\n\n\n\n<p>\ud83d\udc49 En bref :<br><strong>Commit \u2192 LGWR \u00e9crit \u2192 User waits \u2192 <code>synchronisation des fichiers journaux<\/code><\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"\ud83d\udee0-causes-and-solutions-for-log-file-sync\">\ud83d\udee0 Causes et solutions pour les enfants de moins de 18 ans <code>synchronisation des fichiers journaux<\/code><\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"1-\ufe0f-frequent-commits-commit-flooding\">1\ufe0f\u20e3 <strong>Commits fr\u00e9quents (Commit Flooding)<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Cause<\/strong>: L'application effectue une validation apr\u00e8s chaque ligne ou trop fr\u00e9quemment.<\/li>\n\n\n\n<li><strong>Corrections<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Mettre en \u0153uvre <strong>Commissions par lots<\/strong>: validation apr\u00e8s le traitement de plusieurs lignes au lieu de chaque ligne.<\/li>\n\n\n\n<li>R\u00e9viser la logique de l'application pour r\u00e9duire les validations inutiles.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p>\ud83d\udc49 Diagnostic :<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code\" data-no-translation=\"\"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nSELECT name, value FROM v$sysstat WHERE name = &#039;user commits&#039;;\n\n<\/pre><\/div>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"2-\ufe0f-slow-redo-log-writes-disk-i-o-bottleneck\">2\ufe0f\u20e3 <strong>Lenteur des \u00e9critures du journal des r\u00e9tablissements (goulot d'\u00e9tranglement des E\/S du disque)<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Cause<\/strong>: Les disques contenant les <strong>les fichiers redo log<\/strong> sont lents ou surcharg\u00e9s, ce qui retarde les \u00e9critures sur le LBV.<\/li>\n\n\n\n<li><strong>Corrections<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Placer les journaux redo sur <strong>stockage \u00e0 grande vitesse<\/strong> (SSD, Flash).<\/li>\n\n\n\n<li>Isoler les redo logs des datafiles et autres disques occup\u00e9s.<\/li>\n\n\n\n<li>Utilisation <strong>ASM<\/strong> avec redondance et striping.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p>\ud83d\udc49 V\u00e9rifier les performances du redo log :<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code\" data-no-translation=\"\"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nSELECT name, value FROM v$sysstat WHERE name LIKE &#039;redo writes%&#039;;\n\n<\/pre><\/div>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"3-\ufe0f-small-redo-log-files-too-many-switches\">3\ufe0f\u20e3 <strong>Petits fichiers journaux Redo (trop de commutateurs)<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Cause<\/strong>: Fr\u00e9quent <strong>commutateurs de journaux<\/strong> entra\u00eenant des retards et une augmentation de l'activit\u00e9 de la LGWR.<\/li>\n\n\n\n<li><strong>Corrections<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Augmentation <strong>taille du fichier redo log<\/strong> pour r\u00e9duire le nombre de commutations par heure.<\/li>\n\n\n\n<li>V\u00e9rifier si <strong>enregistrer les temp\u00eates de commutation<\/strong> pendant les heures d'affluence.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p>\ud83d\udc49 V\u00e9rifier l'historique des commutations du journal :<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code\" data-no-translation=\"\"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nSELECT TO_CHAR(first_time, &#039;YYYY-MM-DD HH24&#039;) AS hour, COUNT(*)\nFROM v$log_history\nGROUP BY TO_CHAR(first_time, &#039;YYYY-MM-DD HH24&#039;)\nORDER BY hour DESC;\n\n<\/pre><\/div>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"4-\ufe0f-cpu-bottleneck-affecting-lgwr\">4\ufe0f\u20e3 <strong>Goulot d'\u00e9tranglement de l'unit\u00e9 centrale affectant la LGWR<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Cause<\/strong>: La LGWR est en concurrence avec d'autres processus pour l'utilisation de l'unit\u00e9 centrale, ce qui entra\u00eene des retards dans la validation des donn\u00e9es.<\/li>\n\n\n\n<li><strong>Corrections<\/strong>:\n<ul class=\"wp-block-list\">\n<li>V\u00e9rifier <strong>Utilisation de l'unit\u00e9 centrale<\/strong> et veiller \u00e0 ce que la LBVR ne soit pas priv\u00e9e de ressources.<\/li>\n\n\n\n<li>Sur les syst\u00e8mes \u00e0 forte concurrence, il faut envisager d'ajouter une unit\u00e9 centrale ou d'optimiser la concurrence de l'application.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p>\ud83d\udc49 V\u00e9rifier les temps d'attente des processus d'arri\u00e8re-plan :<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code\" data-no-translation=\"\"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nSELECT p.spid, s.sid, s.event, s.wait_time\nFROM v$session s, v$process p\nWHERE s.paddr = p.addr AND s.sid IN (SELECT blocking_session FROM v$session WHERE blocking_session IS NOT NULL);\n\n<\/pre><\/div>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"5-\ufe0f-high-redo-generation-too-much-dml\">5\ufe0f\u20e3 <strong>G\u00e9n\u00e9ration \u00e9lev\u00e9e de redondances (trop de DML)<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Cause<\/strong>: De gros volumes de DML g\u00e9n\u00e8rent un nombre excessif de redo, ce qui surcharge le LGWR.<\/li>\n\n\n\n<li><strong>Corrections<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Optimiser le DML : utiliser <strong>traitement en vrac<\/strong>, minimiser <strong>refaire inutilement<\/strong>.<\/li>\n\n\n\n<li>Utilisation <strong>NOLOGGATION<\/strong> lorsque cela est s\u00fbr (chargements ETL, index).<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p>\ud83d\udc49 V\u00e9rifier le redo g\u00e9n\u00e9r\u00e9 par transaction :<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code\" data-no-translation=\"\"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nSELECT name, value FROM v$sysstat WHERE name LIKE &#039;%redo%&#039;;\n\n<\/pre><\/div>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"\ud83d\udcdd-quick-diagnosis-for-log-file-sync\">\ud83d\udcdd Quick Diagnosis for <code>synchronisation des fichiers journaux<\/code><\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>V\u00e9rifier les sessions d'attente :<\/li>\n<\/ol>\n\n\n<div class=\"wp-block-syntaxhighlighter-code\" data-no-translation=\"\"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nSELECT sid, event, seconds_in_wait, state\nFROM v$session\nWHERE event = &#039;log file sync&#039;;\n\n<\/pre><\/div>\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>Examiner les statistiques de validation et de r\u00e9tablissement au niveau du syst\u00e8me :<\/li>\n<\/ol>\n\n\n<div class=\"wp-block-syntaxhighlighter-code\" data-no-translation=\"\"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nSELECT name, value FROM v$sysstat\nWHERE name IN (&#039;user commits&#039;, &#039;redo size&#039;, &#039;log file sync waits&#039;);\n\n<\/pre><\/div>\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li>Si l'on utilise <strong>AWR ou Statspack<\/strong>, recherchez :<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>synchronisation des fichiers journaux<\/code> le temps d'attente moyen (devrait \u00eatre <strong>id\u00e9alement &lt; 1 ms<\/strong>, probl\u00e9matique si <strong>&gt; 10 ms<\/strong>).<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>\u2705 <strong>Tableau r\u00e9capitulatif des solutions :<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Cause<\/th><th>Solution<\/th><\/tr><\/thead><tbody><tr><td>Trop d'engagements<\/td><td>Commandes par lots, changement d'application<\/td><\/tr><tr><td>Disques de redo log lents<\/td><td>D\u00e9placer le redo vers un stockage plus rapide<\/td><\/tr><tr><td>Petits journaux de r\u00e9approvisionnement<\/td><td>Augmenter la taille du fichier redo log<\/td><\/tr><tr><td>Contrainte de l'unit\u00e9 centrale<\/td><td>Ajout d'unit\u00e9 centrale, r\u00e9duction de la concurrence des processus<\/td><\/tr><tr><td>G\u00e9n\u00e9ration excessive d'enregistrements<\/td><td>Ajustez DML, envisagez NOLOGGING pour les gros volumes.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>\ud83d\udc49 Principaux enseignements :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Haut <strong><code>synchronisation des fichiers journaux<\/code><\/strong> \u2192 indique <strong>temps de r\u00e9ponse de l'engagement<\/strong> des probl\u00e8mes, souvent perceptibles par les utilisateurs finaux.<\/li>\n\n\n\n<li>Il est \u00e9troitement li\u00e9 \u00e0 <strong>Performances du LGWR, sous-syst\u00e8me de r\u00e9tablissement et mod\u00e8les de validation des applications<\/strong>.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>J'esp\u00e8re que cela vous a \u00e9t\u00e9 utile.<\/p>","protected":false},"excerpt":{"rendered":"<p>Les \u00e9v\u00e9nements d'attente Oracle sont des statistiques qu'un processus serveur ou un thread incr\u00e9mente lorsqu'il attend la fin d'une op\u00e9ration pour poursuivre son traitement. Voici une explication des \u00e9v\u00e9nements d'attente Oracle les plus courants.<\/p>","protected":false},"author":1,"featured_media":6400,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"rank_math_focus_keyword":"oracle wait events","rank_math_title":"","rank_math_description":"Learn all about Oracle wait events and how they impact database performance. Master Oracle performance tuning now!","rank_math_robots":"","rank_math_og_title":"","rank_math_og_description":"","jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[31],"tags":[118],"class_list":["post-6398","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-oracle","tag-wait-event"],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/rootfan.com\/wp-content\/uploads\/pexels-photo-709552-2.jpeg?fit=1880%2C1253&ssl=1","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/rootfan.com\/fr\/wp-json\/wp\/v2\/posts\/6398","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rootfan.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/rootfan.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/rootfan.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/rootfan.com\/fr\/wp-json\/wp\/v2\/comments?post=6398"}],"version-history":[{"count":33,"href":"https:\/\/rootfan.com\/fr\/wp-json\/wp\/v2\/posts\/6398\/revisions"}],"predecessor-version":[{"id":6476,"href":"https:\/\/rootfan.com\/fr\/wp-json\/wp\/v2\/posts\/6398\/revisions\/6476"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/rootfan.com\/fr\/wp-json\/wp\/v2\/media\/6400"}],"wp:attachment":[{"href":"https:\/\/rootfan.com\/fr\/wp-json\/wp\/v2\/media?parent=6398"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rootfan.com\/fr\/wp-json\/wp\/v2\/categories?post=6398"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rootfan.com\/fr\/wp-json\/wp\/v2\/tags?post=6398"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}