{"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":"explicacion-de-los-eventos-de-espera-de-oracle","status":"publish","type":"post","link":"https:\/\/rootfan.com\/es\/oracle-wait-events-explained\/","title":{"rendered":"Explicaci\u00f3n de los 7 principales eventos de espera de Oracle"},"content":{"rendered":"<p>Los eventos de espera de Oracle son estad\u00edsticas que un proceso o hilo del servidor incrementa cuando espera a que se complete una operaci\u00f3n para continuar su procesamiento.<\/p>\n\n\n\n<p>A continuaci\u00f3n se explican algunos de los eventos de espera m\u00e1s comunes de Oracle.<\/p>\n\n\n\n<!--more-->\n\n\n\n<div class=\"wp-block-rank-math-toc-block\" id=\"rank-math-toc\"><h2>\u00cdndice<\/h2><nav><ul><li><a href=\"#buffer-busy-waits\">Buffer ocupado espera<\/a><ul><li><a href=\"#\ud83d\udd0d-what-is-buffer-busy-waits\">\ud83d\udd0d \u00bfQu\u00e9 son las esperas de b\u00fafer ocupado?<\/a><\/li><li><a href=\"#\ud83d\udee0-causes-and-solutions-for-buffer-busy-waits\">\ud83d\udee0 Causas y soluciones para las esperas por b\u00fafer ocupado<\/a><ul><li><a href=\"#1-\ufe0f-hot-block-contention-too-many-sessions-on-the-same-block\">1\ufe0f\u20e3 Contenci\u00f3n de bloques calientes (demasiadas sesiones en el mismo bloque)<\/a><\/li><li><a href=\"#2-\ufe0f-undo-segment-contention\">2\ufe0f\u20e3 Deshacer contenci\u00f3n de segmento<\/a><\/li><li><a href=\"#3-\ufe0f-sequence-and-index-contention\">3\ufe0f\u20e3 Contenci\u00f3n de secuencias e \u00edndices<\/a><\/li><li><a href=\"#4-\ufe0f-direct-path-loads-or-high-dml\">4\ufe0f\u20e3 Cargas de trayecto directo o LMD alto<\/a><\/li><li><a href=\"#5-\ufe0f-inadequate-buffer-cache\">5\ufe0f\u20e3 Memoria cach\u00e9 inadecuada<\/a><\/li><\/ul><\/li><li><a href=\"#\ud83d\udcdd-how-to-diagnose-the-exact-cause\">\ud83d\udcdd C\u00f3mo diagnosticar la causa exacta<\/a><\/li><\/ul><\/li><li><a href=\"#free-buffer-waits\">Esperas libres en el b\u00fafer<\/a><ul><li><a href=\"#\ud83d\udd0d-what-is-free-buffer-waits\">\ud83d\udd0d \u00bfQu\u00e9 son las esperas libres en b\u00fafer?<\/a><\/li><li><a href=\"#\ud83d\udee0-causes-and-solutions-for-free-buffer-waits\">\ud83d\udee0 Causas y soluciones para las esperas en el b\u00fafer libre<\/a><ul><li><a href=\"#1-\ufe0f-slow-disk-i-o\">1\ufe0f\u20e3 E\/S de disco lenta<\/a><\/li><li><a href=\"#2-\ufe0f-insufficient-database-writer-throughput\">2\ufe0f\u20e3 Rendimiento insuficiente del escritor de la base de datos<\/a><\/li><li><a href=\"#3-\ufe0f-too-small-buffer-cache\">3\ufe0f\u20e3 Memoria intermedia demasiado peque\u00f1a<\/a><\/li><li><a href=\"#4-\ufe0f-high-volume-of-dirty-buffers\">4\ufe0f\u20e3 Alto volumen de tampones sucios<\/a><\/li><li><a href=\"#5-\ufe0f-check-checkpointing-redo\">5\ufe0f\u20e3 Comprobaci\u00f3n Checkpointing &amp; Redo<\/a><\/li><\/ul><\/li><li><a href=\"#\ud83d\udcdd-how-to-diagnose-free-buffer-waits\">\ud83d\udcdd C\u00f3mo diagnosticar las esperas libres en el b\u00fafer<\/a><\/li><\/ul><\/li><li><a href=\"#db-file-sequential-read\">Lectura secuencial de archivos de base de datos<\/a><ul><li><a href=\"#\ud83d\udd0d-what-is-db-file-sequential-read\">\ud83d\udd0d \u00bfQu\u00e9 es la lectura secuencial de archivos db?<\/a><\/li><li><a href=\"#\ud83d\udee0-causes-and-solutions-for-db-file-sequential-read\">\ud83d\udee0 Causas y soluciones para la lectura secuencial de archivos db<\/a><ul><li><a href=\"#1-\ufe0f-inefficient-sql-bad-execution-plans\">1\ufe0f\u20e3 SQL ineficiente (planes de ejecuci\u00f3n err\u00f3neos)<\/a><\/li><li><a href=\"#2-\ufe0f-unselective-indexes\">2\ufe0f\u20e3 \u00cdndices no selectivos<\/a><\/li><li><a href=\"#3-\ufe0f-missing-indexes\">3\ufe0f\u20e3 \u00cdndices que faltan<\/a><\/li><li><a href=\"#4-\ufe0f-slow-storage-disk-i-o-bottleneck\">4\ufe0f\u20e3 Almacenamiento lento (cuello de botella de E\/S de disco)<\/a><\/li><li><a href=\"#5-\ufe0f-insufficient-buffer-cache-too-much-physical-i-o\">5\ufe0f\u20e3 Buffer Cache Insuficiente (Demasiada E\/S F\u00edsica)<\/a><\/li><li><a href=\"#6-\ufe0f-hot-objects-frequent-access-to-same-blocks\">6\ufe0f\u20e3 Objetos calientes (acceso frecuente a los mismos bloques)<\/a><\/li><\/ul><\/li><li><a href=\"#\ud83d\udcdd-quick-diagnosis-queries\">\ud83d\udcdd Consultas de diagn\u00f3stico r\u00e1pido<\/a><\/li><\/ul><\/li><li><a href=\"#db-file-scattered-read\">Archivo de base de datos de lectura dispersa<\/a><ul><li><a href=\"#\ud83d\udd0d-what-is-db-file-scattered-read\">\ud83d\udd0d \u00bfQu\u00e9 es la lectura dispersa de archivos db?<\/a><\/li><li><a href=\"#\ud83d\udee0-causes-and-solutions-for-db-file-scattered-read\">\ud83d\udee0 Causas y Soluciones para archivo db lectura dispersa<\/a><ul><li><a href=\"#1-\ufe0f-unnecessary-full-table-scans\">1\ufe0f\u20e3 Exploraciones innecesarias de toda la tabla<\/a><\/li><li><a href=\"#2-\ufe0f-small-table-full-scans\">2\ufe0f\u20e3 Escaneado completo de mesas peque\u00f1as<\/a><\/li><li><a href=\"#3-\ufe0f-parallel-query-execution\">3\ufe0f\u20e3 Ejecuci\u00f3n paralela de consultas<\/a><\/li><li><a href=\"#4-\ufe0f-inefficient-query-design-poor-filtering\">4\ufe0f\u20e3 Dise\u00f1o ineficaz de las consultas (filtrado deficiente)<\/a><\/li><li><a href=\"#5-\ufe0f-system-or-storage-performance\">5\ufe0f\u20e3 Rendimiento del sistema o del almacenamiento<\/a><\/li><\/ul><\/li><li><a href=\"#\ud83d\udcdd-quick-diagnosis-queries-1\">\ud83d\udcdd Consultas de diagn\u00f3stico r\u00e1pido<\/a><\/li><\/ul><\/li><li><a href=\"#enqueue-waits\">Espera en cola<\/a><ul><li><a href=\"#\ud83d\udd0d-what-are-enqueue-waits\">\ud83d\udd0d \u00bfQu\u00e9 son las esperas en cola?<\/a><\/li><li><a href=\"#\ud83d\udee0-common-enqueue-types-and-solutions\">\ud83d\udee0 Tipos comunes de cola de espera y soluciones<\/a><ul><li><a href=\"#1-\ufe0f-enq-tx-row-lock-contention-most-common\">1\ufe0f\u20e3 enq: TX - contenci\u00f3n de bloqueo de fila (M\u00e1s com\u00fan)<\/a><\/li><li><a href=\"#2-\ufe0f-enq-tm-contention-dml-on-objects\">2\ufe0f\u20e3 enq: TM - contenci\u00f3n (DML sobre objetos)<\/a><\/li><li><a href=\"#3-\ufe0f-enq-tx-index-contention-hot-index-blocks\">3\ufe0f\u20e3 enq: TX - contenci\u00f3n de \u00edndices (Hot Index Blocks)<\/a><\/li><li><a href=\"#4-\ufe0f-enq-sq-sequence-contention\">4\ufe0f\u20e3 enq: SQ (Contenci\u00f3n de secuencia)<\/a><\/li><li><a href=\"#5-\ufe0f-enq-ul-user-defined-locks\">5\ufe0f\u20e3 enq: UL (Cerraduras definidas por el usuario)<\/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 Consultas de diagn\u00f3stico para esperas en cola de espera<\/a><\/li><\/ul><\/li><li><a href=\"#log-buffer-space\">Espacio del b\u00fafer de registro<\/a><ul><li><a href=\"#\ud83d\udd0d-what-is-log-buffer-space\">\ud83d\udd0d \u00bfQu\u00e9 es el espacio del b\u00fafer de registro?<\/a><\/li><li><a href=\"#\ud83d\udee0-causes-and-solutions-for-log-buffer-space\">\ud83d\udee0 Causas y soluciones para el espacio del b\u00fafer de registro.<\/a><ul><li><a href=\"#1-\ufe0f-redo-logs-on-slow-disk\">1\ufe0f\u20e3 Redo Logs en disco lento<\/a><\/li><li><a href=\"#2-\ufe0f-small-redo-log-buffer-log-buffer\">2\ufe0f\u20e3 Buffer de Redo Log Peque\u00f1o (LOG_BUFFER)<\/a><\/li><li><a href=\"#3-\ufe0f-lgwr-undersized-or-slow\">3\ufe0f\u20e3 LGWR Infradimensionada o lenta<\/a><\/li><li><a href=\"#4-\ufe0f-high-redo-generation-too-much-commit-or-dml\">4\ufe0f\u20e3 Alta Generaci\u00f3n de Rehacer (Demasiado COMMIT o DML)<\/a><\/li><li><a href=\"#5-\ufe0f-redo-log-files-too-small-frequent-log-switches\">5\ufe0f\u20e3 Redo Log Files Demasiado Peque\u00f1os (Cambios Frecuentes de Log)<\/a><\/li><\/ul><\/li><li><a href=\"#\ud83d\udcdd-quick-diagnosis-steps\">\ud83d\udcdd Pasos r\u00e1pidos de diagn\u00f3stico<\/a><\/li><\/ul><\/li><li><a href=\"#log-file-sync\">Sincronizaci\u00f3n de archivos de registro<\/a><ul><li><a href=\"#\ud83d\udd0d-what-is-log-file-sync\">\ud83d\udd0d \u00bfQu\u00e9 es la sincronizaci\u00f3n de archivos de registro?<\/a><\/li><li><a href=\"#\ud83d\udee0-causes-and-solutions-for-log-file-sync\">\ud83d\udee0 Causas y soluciones para la sincronizaci\u00f3n de archivos de registro<\/a><ul><li><a href=\"#1-\ufe0f-frequent-commits-commit-flooding\">1\ufe0f\u20e3 Commits frecuentes (Commit Flooding)<\/a><\/li><li><a href=\"#2-\ufe0f-slow-redo-log-writes-disk-i-o-bottleneck\">2\ufe0f\u20e3 Slow Redo Log Writes (cuello de botella de E\/S de disco)<\/a><\/li><li><a href=\"#3-\ufe0f-small-redo-log-files-too-many-switches\">3\ufe0f\u20e3 Small Redo Log Files (Demasiados Switches)<\/a><\/li><li><a href=\"#4-\ufe0f-cpu-bottleneck-affecting-lgwr\">4\ufe0f\u20e3 Cuello de botella en la CPU que afecta a la LBTR<\/a><\/li><li><a href=\"#5-\ufe0f-high-redo-generation-too-much-dml\">5\ufe0f\u20e3 Alta Generaci\u00f3n de Rehacer (Demasiado LMD)<\/a><\/li><\/ul><\/li><li><a href=\"#\ud83d\udcdd-quick-diagnosis-for-log-file-sync\">\ud83d\udcdd Diagn\u00f3stico r\u00e1pido para la sincronizaci\u00f3n de archivos de registro<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"buffer-busy-waits\">Buffer ocupado espera<\/h2>\n\n\n\n<p>Este evento se produce cuando una sesi\u00f3n quiere acceder a un bloque de base de datos en la cach\u00e9 del b\u00fafer pero no puede porque el b\u00fafer est\u00e1 ocupado.<\/p>\n\n\n\n<p><strong>En t\u00e9rminos sencillos:<\/strong> Imagina que tienes una videoconsola especial que s\u00f3lo puede usar una persona a la vez. <\/p>\n\n\n\n<p>Si quieres jugar y otra persona ya lo est\u00e1 utilizando, tienes que esperar a que termine. <\/p>\n\n\n\n<p>En Oracle, el \"b\u00fafer\" es como esa consola de videojuegos: guarda datos importantes en la memoria. <\/p>\n\n\n\n<p>Cuando una tarea quiere utilizar una parte de esos datos (un bloque de base de datos) pero ya est\u00e1 ocupado siendo utilizado por otra persona, la tarea tiene que esperar. <\/p>\n\n\n\n<p>Esta espera se llama \"espera de b\u00fafer ocupado\".<\/p>\n\n\n\n<p>Gracias, eso est\u00e1 mucho m\u00e1s claro. Vamos a centrarnos espec\u00edficamente en <strong><code>buffer ocupado espera<\/code><\/strong> y c\u00f3mo resolverlos.<\/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 \u00bfQu\u00e9 es <code>buffer ocupado espera<\/code>?<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Este evento de espera se produce cuando varias sesiones intentan acceder al mismo bloque de datos <strong>en la cach\u00e9 del b\u00fafer<\/strong>pero el bloque es <strong>actualmente ocupado<\/strong> (ya sea le\u00edda en la cach\u00e9 o modificada por otra sesi\u00f3n).<\/li>\n\n\n\n<li>Es un <strong>tema de discordia<\/strong> en el <strong>capa de cach\u00e9 del b\u00fafer<\/strong>no es un problema de disco.<\/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 Causas y soluciones para <code>buffer ocupado espera<\/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>Contenci\u00f3n de bloques calientes (demasiadas sesiones en el mismo bloque)<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Ejemplo<\/strong>: Muchas sesiones actualizan o leen el mismo peque\u00f1o conjunto de bloques (por ejemplo, inserciones en el mismo bloque de tabla o actualizaciones de las mismas filas).<\/li>\n\n\n\n<li><strong>Arregla<\/strong>:\n<ul class=\"wp-block-list\">\n<li><strong>Aumentar FREELISTAS \/ GRUPOS DE FREELISTAS<\/strong> (para tablespaces no-ASSM) para repartir las inserciones en m\u00e1s bloques.<\/li>\n\n\n\n<li><strong>Pasar a ASSM<\/strong> (Automatic Segment Space Management) para evitar cuellos de botella en las listas libres.<\/li>\n\n\n\n<li><strong>Particionar la tabla<\/strong> o <strong>utilizar partici\u00f3n hash<\/strong> para distribuir los datos en varios bloques.<\/li>\n\n\n\n<li><strong>Reconstruir \u00edndices<\/strong> o <strong>distribuir los datos de forma m\u00e1s uniforme<\/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>Deshacer la contenci\u00f3n de segmento<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Causa<\/strong>: M\u00faltiples usuarios actualizando datos utilizando los mismos bloques de segmento de deshacer.<\/li>\n\n\n\n<li><strong>Arregla<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Aumentar el n\u00famero de segmentos de deshacer (establecer un valor m\u00e1s alto para <code>_undo_autotune<\/code> o ajustar el tama\u00f1o del tablespace de deshacer).<\/li>\n\n\n\n<li>Revisar la configuraci\u00f3n de retenci\u00f3n de deshacer.<\/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>Contenci\u00f3n de secuencias e \u00edndices<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Causa<\/strong>: Las inserciones r\u00e1pidas en tablas con claves secuenciales (como los campos ID) pueden provocar bloqueos en caliente de los \u00edndices.<\/li>\n\n\n\n<li><strong>Arregla<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Utilice <strong>\u00edndices de clave inversa<\/strong>.<\/li>\n\n\n\n<li>Utilice <strong>\u00edndices particionados hash<\/strong> o <strong>\u00edndices mundiales<\/strong>.<\/li>\n\n\n\n<li>Implementar <strong>secuencias en cach\u00e9<\/strong> (<code>CREAR SECUENCIA ... CACH\u00c9 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>Cargas de trayecto directo o LMD alto<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Causa<\/strong>: Inserciones simult\u00e1neas en la ruta directa u operaciones masivas frecuentes.<\/li>\n\n\n\n<li><strong>Arregla<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Utilice <strong>APPEND<\/strong> consejos sabiamente.<\/li>\n\n\n\n<li>Escalone los trabajos por lotes para evitar la concurrencia.<\/li>\n\n\n\n<li>Aseg\u00farese de que el paralelismo no sea demasiado agresivo.<\/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>Memoria intermedia inadecuada<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Causa<\/strong>: SGA insuficiente, lo que provoca la sustituci\u00f3n frecuente de bloques y la relectura desde el disco.<\/li>\n\n\n\n<li><strong>Arregla<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Aumentar <strong>DB_CACHE_SIZE<\/strong>.<\/li>\n\n\n\n<li>Utilice <strong>Gesti\u00f3n autom\u00e1tica de memoria (AMM)<\/strong> o <strong>Gesti\u00f3n autom\u00e1tica de memoria compartida (ASMM)<\/strong> bien afinado.<\/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 C\u00f3mo diagnosticar la causa exacta<\/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 Usa esto para encontrar el <strong>fichero# y bloque#<\/strong> causando la espera, entonces:<\/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>Esto te dice <strong>qu\u00e9 objeto (tabla\/\u00edndice)<\/strong> es responsable.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>\u2705 <strong>Resumen de las acciones:<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Causa<\/th><th>Soluci\u00f3n<\/th><\/tr><\/thead><tbody><tr><td>Tabla caliente\/bloque de \u00edndice<\/td><td>Datos dispersos (FREELISTS, ASSM, partici\u00f3n)<\/td><\/tr><tr><td>Deshacer la contenci\u00f3n de segmentos<\/td><td>M\u00e1s segmentos de deshacer, ajuste de deshacer<\/td><\/tr><tr><td>Secuencia\/\u00edndice de bloques calientes<\/td><td>Clave inversa, cach\u00e9 de secuencias, partici\u00f3n hash<\/td><\/tr><tr><td>Cargas a granel\/DML<\/td><td>Escalonar trabajos, ajustar el paralelismo<\/td><\/tr><tr><td>Cach\u00e9 demasiado peque\u00f1a<\/td><td>Aumentar <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\">Esperas libres en el b\u00fafer<\/h2>\n\n\n\n<p>Este evento se produce principalmente cuando un proceso servidor est\u00e1 intentando leer un nuevo b\u00fafer en la cach\u00e9 de b\u00faferes, pero hay demasiados b\u00faferes anclados o sucios y, por lo tanto, no est\u00e1n disponibles para su reutilizaci\u00f3n. <\/p>\n\n\n\n<p>La sesi\u00f3n env\u00eda mensajes a DBWR y luego espera a que DBWR cree b\u00faferes libres escribiendo los b\u00faferes sucios en el disco.<\/p>\n\n\n\n<p><strong>En t\u00e9rminos sencillos:<\/strong> Imagina que tienes una estanter\u00eda de juguetes completamente llena. <\/p>\n\n\n\n<p>Ahora, quieres ponerle un juguete nuevo, pero no hay sitio porque todos los lugares est\u00e1n ocupados por juguetes con los que se est\u00e1 jugando o que hay que limpiar primero.<\/p>\n\n\n\n<p>Perfecto, sumerj\u00e1monos en <strong><code>esperas libres en el b\u00fafer<\/code><\/strong> espec\u00edficamente, bas\u00e1ndose en el evento de espera que mencion\u00f3 del art\u00edculo.<\/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 \u00bfQu\u00e9 es <code>esperas libres en el b\u00fafer<\/code>?<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Este evento se produce cuando <strong>una sesi\u00f3n necesita un b\u00fafer libre en la cach\u00e9 de b\u00faferes<\/strong>pero no hay ninguno disponible porque:\n<ol class=\"wp-block-list\">\n<li>En <strong>DBWR (escritor de bases de datos)<\/strong> a\u00fan no ha escrito los b\u00faferes sucios en el disco para liberar espacio.<\/li>\n\n\n\n<li>El sistema est\u00e1 generando bloques sucios <strong>m\u00e1s r\u00e1pido de lo que DBWR puede vaciarlos<\/strong>.<\/li>\n<\/ol>\n<\/li>\n<\/ul>\n\n\n\n<p>Indica una <strong>cuello de botella de escritura<\/strong>: la base de datos quiere reutilizar los buffers, pero a\u00fan no est\u00e1n 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 Causas y soluciones para <code>esperas libres en el b\u00fafer<\/code><\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"1-\ufe0f-slow-disk-i-o\">1\ufe0f\u20e3 <strong>E\/S de disco lenta<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Causa<\/strong>: DBWR no puede escribir bloques sucios lo suficientemente r\u00e1pido como para liberar b\u00faferes debido al lento rendimiento del disco.<\/li>\n\n\n\n<li><strong>Arregla<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Mover <strong>archivos de datos<\/strong> a <strong>discos m\u00e1s r\u00e1pidos (por ejemplo, SSD)<\/strong>.<\/li>\n\n\n\n<li>Equilibre la E\/S repartiendo los datos entre varios discos o grupos de discos ASM.<\/li>\n\n\n\n<li>Revisar y optimizar el <strong>Subsistema de E\/S (ajuste 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>Rendimiento insuficiente del escritor de bases de datos<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Causa<\/strong>: Demasiados pocos procesos DBWR para manejar el volumen de bloques sucios.<\/li>\n\n\n\n<li><strong>Arregla<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Aumentar el n\u00famero de <strong>Procesos de DB Writer<\/strong> usando: <code>DB_WRITER_PROCESSES = .<\/code> (En los sistemas OLTP, varios DBWR ayudan a repartir la carga de escritura).<\/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>Cach\u00e9 demasiado peque\u00f1a<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Causa<\/strong>: La cach\u00e9 de b\u00faferes (SGA) es demasiado peque\u00f1a para manejar la carga de trabajo, lo que provoca una frecuente acumulaci\u00f3n de b\u00faferes sucios.<\/li>\n\n\n\n<li><strong>Arregla<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Aumentar <strong>DB_CACHE_SIZE<\/strong> (o utilizar la gesti\u00f3n autom\u00e1tica de memoria (AMM\/ASMM)).<\/li>\n\n\n\n<li>Revisar los ratios de aciertos de la cach\u00e9 del buffer usando: <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>Alto volumen de b\u00faferes sucios<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Causa<\/strong>: Los picos repentinos de DML (actualizaciones\/inserciones masivas) llenan la cach\u00e9 de bloques sucios m\u00e1s r\u00e1pido de lo que pueden escribirse.<\/li>\n\n\n\n<li><strong>Arregla<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Optimice las sentencias DML para reducir los cambios de bloque.<\/li>\n\n\n\n<li>Utilice <strong>Cargas directas (sugerencia APPEND)<\/strong> para que las inserciones grandes eviten la cach\u00e9 del b\u00fafer.<\/li>\n\n\n\n<li>Reparta los LMD pesados en el tiempo o progr\u00e1melos durante las horas de menor tr\u00e1fico.<\/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>Comprobaci\u00f3n y Rehacer<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Causa<\/strong>: Un ajuste ineficiente de los puntos de control puede retrasar el reciclaje de los b\u00faferes.<\/li>\n\n\n\n<li><strong>Arregla<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Ajuste los par\u00e1metros del punto de control: <strong>FAST_START_MTTR_TARGET<\/strong>.<\/li>\n\n\n\n<li>Aumentar <strong>tama\u00f1o del archivo de registro<\/strong> para evitar puntos de control demasiado frecuentes.<\/li>\n\n\n\n<li>Compruebe si hay cuellos de botella de E\/S en el archivo de registro de rehacer.<\/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 C\u00f3mo diagnosticar <code>esperas libres en el b\u00fafer<\/code><\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Consulta las sesiones en curso: <code>SELECT * FROM v$session_wait WHERE event = 'free buffer waits';<\/code><\/li>\n\n\n\n<li>Comprueba el rendimiento de E\/S (tiempos medios de escritura): <code>SELECT fichero#, avg_time, writes FROM v$filestat;<\/code><\/li>\n\n\n\n<li>Comprueba las estad\u00edsticas de b\u00fafer sucio: <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>Cuadro recapitulativo:<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Causa<\/th><th>Soluci\u00f3n<\/th><\/tr><\/thead><tbody><tr><td>Escrituras lentas en disco<\/td><td>Discos m\u00e1s r\u00e1pidos, archivos de datos m\u00e1s extensos<\/td><\/tr><tr><td>DBWR no puede seguir el ritmo<\/td><td>Aumentar <code>DB_WRITER_PROCESSES<\/code><\/td><\/tr><tr><td>Cach\u00e9 de b\u00fafer peque\u00f1o<\/td><td>Aumentar <code>DB_CACHE_SIZE<\/code><\/td><\/tr><tr><td>DML pesado<\/td><td>Optimizar o programar mejor, utilizar la ruta directa<\/td><\/tr><tr><td>Control deficiente<\/td><td>Sintonice <code>FAST_START_MTTR_TARGET<\/code>Tama\u00f1o de rehacer<\/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 Este es un <strong>cuello de botella en el sistema<\/strong>-la soluci\u00f3n suele pasar por <strong>tanto el hardware (discos, memoria) como la configuraci\u00f3n (DBWR, cach\u00e9, redo)<\/strong>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"db-file-sequential-read\">Lectura secuencial de archivos de base de datos<\/h2>\n\n\n\n<p>Este evento muestra una espera de un proceso en primer plano mientras se realiza una lectura secuencial de la base de datos. <\/p>\n\n\n\n<p>La E\/S se emite generalmente como una \u00fanica petici\u00f3n de E\/S al SO; la espera se bloquea hasta que la petici\u00f3n de E\/S se completa.<\/p>\n\n\n\n<p><strong>En t\u00e9rminos sencillos:<\/strong> Imagina que tienes un libro ilustrado favorito, pero est\u00e1 guardado en una estanter\u00eda alta.<\/p>\n\n\n\n<p>Cuando quieres ver una p\u00e1gina concreta, le pides a un amigo que la coja por ti. <\/p>\n\n\n\n<p>Mientras tu amigo busca la p\u00e1gina, t\u00fa te sientas y esperas a que vuelva con ella.<\/p>\n\n\n\n<p>Genial, centr\u00e9monos ahora en <strong><code>archivo db lectura secuencial<\/code><\/strong>que es uno de los eventos de espera m\u00e1s comunes de Oracle.<\/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 \u00bfQu\u00e9 es <code>archivo db lectura secuencial<\/code>?<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Esta espera se produce cuando Oracle realiza <strong>lecturas de un solo bloque del disco a la memoria<\/strong>.<\/li>\n\n\n\n<li>Es t\u00edpico de:\n<ul class=\"wp-block-list\">\n<li><strong>Consulta de \u00edndices<\/strong> (especialmente \u00edndices B-tree)<\/li>\n\n\n\n<li><strong>Acceso fila por fila mediante acceso a la tabla por ROWID<\/strong><\/li>\n\n\n\n<li><strong>Bucles anidados<\/strong><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p>Se denomina \"secuencial\" porque Oracle lee un bloque cada vez (no en trozos de varios bloques).<\/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 Causas y soluciones para <code>archivo db lectura secuencial<\/code><\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"1-\ufe0f-inefficient-sql-bad-execution-plans\">1\ufe0f\u20e3 <strong>SQL ineficaz (malos planes de ejecuci\u00f3n)<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Causa<\/strong>: Consultas que utilizan \u00edndices de forma ineficiente o que acceden a los datos fila por fila de forma innecesaria.<\/li>\n\n\n\n<li><strong>Arregla<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Utilice <strong>EXPLICAR EL PLAN<\/strong> para revisar las rutas de consulta.<\/li>\n\n\n\n<li>Considere <strong>a\u00f1adir \u00edndices que faltan<\/strong> o <strong>reescribir SQL<\/strong> mejorar las v\u00edas de acceso.<\/li>\n\n\n\n<li>Utilice <strong>m\u00e9todos de uni\u00f3n<\/strong> con prudencia: evite los bucles anidados innecesarios.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p>\ud83d\udc49 Comprobar plan de ejecuci\u00f3n:<\/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>\u00cdndices no selectivos<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Causa<\/strong>: Se siguen utilizando \u00edndices que recuperan demasiadas filas (cardinalidad baja).<\/li>\n\n\n\n<li><strong>Arregla<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Elimine o evite el uso de \u00edndices que no filtren bien.<\/li>\n\n\n\n<li>Considere <strong>\u00edndices de mapa de bits<\/strong> para columnas de baja cardinalidad (sistemas 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>\u00cdndices que faltan<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Causa<\/strong>: Se evitan los escaneos completos de tablas, pero sin \u00edndices adecuados Oracle vuelve a las lentas lecturas de un solo bloque.<\/li>\n\n\n\n<li><strong>Arregla<\/strong>:\n<ul class=\"wp-block-list\">\n<li>A\u00f1adir \u00edndices apropiados para reducir el acceso a la tabla por ROWID.<\/li>\n\n\n\n<li>Implementar <strong>\u00edndices compuestos<\/strong> para m\u00faltiples condiciones de filtrado.<\/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>Almacenamiento lento (cuello de botella de E\/S de disco)<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Causa<\/strong>: Aunque las consultas sean eficientes, un almacenamiento lento puede provocar tiempos de espera elevados.<\/li>\n\n\n\n<li><strong>Arregla<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Mover datos a <strong>discos m\u00e1s r\u00e1pidos (SSD)<\/strong>.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Utilice <strong>Franjas ASM<\/strong> o una distribuci\u00f3n adecuada de los discos.<\/li>\n<\/ul>\n\n\n\n<p>\ud83d\udc49 Comprueba la entrada\/salida del archivo:<\/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>Memoria cach\u00e9 insuficiente (demasiada E\/S f\u00edsica)<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Causa<\/strong>: Los errores en la cach\u00e9 del b\u00fafer provocan m\u00e1s lecturas de disco.<\/li>\n\n\n\n<li><strong>Arregla<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Aumentar <strong>DB_CACHE_SIZE<\/strong>.<\/li>\n\n\n\n<li>Revisar y afinar <strong>Gesti\u00f3n autom\u00e1tica de memoria (AMM\/ASMM)<\/strong>.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p>\ud83d\udc49 Comprueba la eficiencia de la cach\u00e9:<\/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>Objetos calientes (acceso frecuente a los mismos bloques)<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Causa<\/strong>: Ciertos objetos (\u00edndices o tablas peque\u00f1as) son accedidos repetidamente, causando un churn del buffer.<\/li>\n\n\n\n<li><strong>Arregla<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Utilice <strong>MANTENER el buffer pool<\/strong> para tablas o \u00edndices peque\u00f1os de uso frecuente: <code>ALTER TABLE tu_tabla 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 Consultas de diagn\u00f3stico r\u00e1pido<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Encuentre sesiones en espera:<\/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>Asigna el archivo# y el bloque# al objeto:<\/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>Cuadro recapitulativo:<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Causa<\/th><th>Soluci\u00f3n<\/th><\/tr><\/thead><tbody><tr><td>Malos planes de ejecuci\u00f3n SQL<\/td><td>Ajuste de SQL, revisi\u00f3n de rutas de acceso, recopilaci\u00f3n de estad\u00edsticas<\/td><\/tr><tr><td>\u00cdndices ausentes o in\u00fatiles<\/td><td>A\u00f1adir o ajustar \u00edndices (considerar salto de mapa de bits\/\u00edndice)<\/td><\/tr><tr><td>Discos lentos<\/td><td>Uso de almacenamiento m\u00e1s r\u00e1pido (SSD), ASM, ajuste de E\/S<\/td><\/tr><tr><td>Cach\u00e9 de b\u00fafer peque\u00f1o<\/td><td>Aumentar <code>DB_CACHE_SIZE<\/code>revisar el uso de memoria<\/td><\/tr><tr><td>Tablas\/\u00edndices peque\u00f1os calientes<\/td><td>Utilizar la reserva de b\u00fafer 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 Esta espera es <strong>normal<\/strong> para sistemas OLTP, pero los valores excesivos se\u00f1alan problemas.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"db-file-scattered-read\">Archivo de base de datos de lectura dispersa<\/h2>\n\n\n\n<p>Este es el mismo tipo de evento que \"db file sequential read\", excepto que Oracle leer\u00e1 m\u00faltiples bloques de datos. <\/p>\n\n\n\n<p>Las lecturas multibloque se utilizan normalmente en los escaneos de tablas completas. <\/p>\n\n\n\n<p>El nombre \u201clectura dispersa\u201d hace referencia al hecho de que se leen varios bloques en los b\u00faferes de bloques de la base de datos que est\u00e1n \u2018dispersos' por toda la memoria.<\/p>\n\n\n\n<p><strong>En t\u00e9rminos sencillos:<\/strong> Imagina que tienes un libro de ilustraciones enorme y quieres hojear muchas p\u00e1ginas r\u00e1pidamente. <\/p>\n\n\n\n<p>En lugar de pedir una p\u00e1gina cada vez (como en una lectura secuencial), pides un mont\u00f3n de p\u00e1ginas a la vez. <\/p>\n\n\n\n<p>Estas p\u00e1ginas pueden proceder de distintas partes del libro, de modo que, cuando llegan, est\u00e1n esparcidas o \u201cdispersas\u201d por toda la mesa de lectura.<\/p>\n\n\n\n<p>Excelente, abordemos <strong><code>archivo db lectura dispersa<\/code><\/strong> ahora.<\/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 \u00bfQu\u00e9 es <code>archivo db lectura dispersa<\/code>?<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Este evento de espera se produce cuando Oracle realiza <strong>lecturas multibloque<\/strong>, t\u00edpicamente asociado con:\n<ul class=\"wp-block-list\">\n<li><strong>Esc\u00e1neres de mesa completa<\/strong><\/li>\n\n\n\n<li><strong>Escaneado r\u00e1pido de \u00edndices completos<\/strong><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Se llama <strong>\"dispersos\"<\/strong> porque los bloques le\u00eddos del disco se dispersan por los b\u00faferes de memoria en lugar de colocarse secuencialmente (por lo tanto, los datos se dispersan en la cach\u00e9 del b\u00fafer).<\/li>\n<\/ul>\n\n\n\n<p>Es <strong>habituales en los entornos de almac\u00e9n de datos (DSS)<\/strong> pero debe reducirse al m\u00ednimo en los sistemas 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 Causas y soluciones para <code>archivo db lectura dispersa<\/code><\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"1-\ufe0f-unnecessary-full-table-scans\">1\ufe0f\u20e3 <strong>Exploraciones innecesarias de toda la mesa<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Causa<\/strong>: Las consultas acceden a tablas completas en lugar de utilizar \u00edndices.<\/li>\n\n\n\n<li><strong>Arregla<\/strong>:\n<ul class=\"wp-block-list\">\n<li>A\u00f1adir <strong>\u00edndices apropiados<\/strong> (\u00e1rbol B o mapa de bits).<\/li>\n\n\n\n<li>Utilice <strong>EXPLICAR EL PLAN<\/strong> para garantizar la <strong>\u00edndice se utiliza realmente<\/strong>.<\/li>\n\n\n\n<li>Compruebe si <strong>estad\u00edsticas del optimizador no disponibles o antiguas<\/strong> y reunirlos: <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>Escaneados completos de mesa peque\u00f1a<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Causa<\/strong>: Oracle a menudo elige escaneos completos para <strong>mesas muy peque\u00f1as<\/strong>lo que suele estar bien.<\/li>\n\n\n\n<li><strong>Arregla<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Esto es <strong>normal<\/strong> y normalmente <strong>ning\u00fan problema<\/strong> a menos que la frecuencia sea extrema.<\/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>Ejecuci\u00f3n paralela de consultas<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Causa<\/strong>: Las consultas paralelas en tablas grandes hacen que varias sesiones lean bloques dispersos de forma concurrente.<\/li>\n\n\n\n<li><strong>Arregla<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Optimice <strong>grado de paralelismo<\/strong> utilizando <code>POL\u00cdTICA DE GRADOS PARALELOS<\/code> y <code>L\u00cdMITE_GRADO_PARALELO<\/code>.<\/li>\n\n\n\n<li>Considere <strong>partici\u00f3n<\/strong> tablas grandes para minimizar la necesidad de escaneos completos paralelos.<\/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>Dise\u00f1o ineficaz de las consultas (filtrado deficiente)<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Causa<\/strong>: Las consultas recuperan grandes conjuntos de resultados sin cl\u00e1usulas WHERE selectivas.<\/li>\n\n\n\n<li><strong>Arregla<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Perfeccione <strong>condiciones WHERE<\/strong> para reducir las filas devueltas.<\/li>\n\n\n\n<li>Evite **consultas SELECT *** innecesarias.<\/li>\n\n\n\n<li>Consulte <strong>l\u00f3gica de aplicaci\u00f3n<\/strong> que desencadena estas lecturas.<\/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>Rendimiento del sistema o del almacenamiento<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Causa<\/strong>: Incluso cuando son necesarios escaneos completos (por ejemplo, trabajos por lotes), <strong>E\/S de disco lenta<\/strong> puede agravar esta espera.<\/li>\n\n\n\n<li><strong>Arregla<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Aseg\u00farese <strong>el subsistema de disco es r\u00e1pido<\/strong> (considere SSD, E\/S paralela, striping ASM).<\/li>\n\n\n\n<li>Aumentar <strong><code>DB_FILE_MULTIBLOCK_READ_COUNT<\/code><\/strong> (aunque Oracle lo sintoniza autom\u00e1ticamente en las versiones modernas).<\/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 Consultas de diagn\u00f3stico r\u00e1pido<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Identificar las sesiones en espera:<\/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>Mapa al objeto:<\/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>Encuentre los principales SQL causantes de escaneos completos:<\/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>Cuadro recapitulativo:<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Causa<\/th><th>Soluci\u00f3n<\/th><\/tr><\/thead><tbody><tr><td>Exploraciones innecesarias de tablas completas<\/td><td>A\u00f1adir\/ajustar \u00edndices, reescribir SQL, recopilar estad\u00edsticas<\/td><\/tr><tr><td>Sobrecarga de consulta paralela<\/td><td>Ajustar configuraciones paralelas, tablas de particiones<\/td><\/tr><tr><td>Filtrado deficiente en las consultas<\/td><td>A\u00f1adir cl\u00e1usulas WHERE, evitar SELECT *<\/td><\/tr><tr><td>Lentitud de almacenamiento<\/td><td>Mejorar el subsistema de E\/S, comprobar la configuraci\u00f3n de lectura multibloque<\/td><\/tr><tr><td>Mesas peque\u00f1as (inofensivas)<\/td><td>Generalmente no es necesaria ninguna acci\u00f3n<\/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 Consejo clave:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>archivo db lectura dispersa<\/strong> en un <strong>OLTP<\/strong> sistema suele ser un <strong>bandera roja<\/strong> \u2192 centrarse en <strong>indexaci\u00f3n y ajuste de consultas<\/strong>.<\/li>\n\n\n\n<li>En <strong>DSS\/BI<\/strong> entornos, a menudo es <strong>comportamiento esperado<\/strong> pero a\u00fan debe ser eficiente.<\/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\">Espera en cola<\/h2>\n\n\n\n<p>Esta m\u00e9trica representa el n\u00famero total de esperas por segundo que se produjeron durante una conversi\u00f3n u obtenci\u00f3n en cola porque la obtenci\u00f3n en cola se aplaz\u00f3.<\/p>\n\n\n\n<p><strong>En t\u00e9rminos sencillos:<\/strong> Imagina que tienes un tobog\u00e1n especial en el parque infantil que todo el mundo quiere usar. <\/p>\n\n\n\n<p>Cuando llegas al tobog\u00e1n y ves que otra persona ya est\u00e1 en \u00e9l, tienes que esperar tu turno. <\/p>\n\n\n\n<p>Cada vez que esperas porque el tobog\u00e1n est\u00e1 ocupado, es como una \u201cespera en cola\u201d.\u201d<\/p>\n\n\n\n<p>Perfecto, desglosemos <strong><code>poner en cola<\/code> espera<\/strong> en Oracle y c\u00f3mo resolverlos.<\/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 \u00bfQu\u00e9 son <code>poner en cola<\/code> \u00bfEspera?<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>En <strong>poner en cola<\/strong> es un tipo de <strong>cierre<\/strong> Oracle utiliza para <strong>controlar el acceso simult\u00e1neo a los recursos<\/strong> (como filas, tablas, \u00edndices o estructuras internas).<\/li>\n\n\n\n<li>Cuando una sesi\u00f3n <strong>no puede obtener inmediatamente un bloqueo necesario<\/strong>espera un <strong>evento en cola de espera<\/strong>.<\/li>\n<\/ul>\n\n\n\n<p>\ud83d\udc49 Las esperas en cola suelen verse como:<\/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>Por ejemplo:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>enq: TX - contenci\u00f3n de bloqueo de fila<\/code><\/li>\n\n\n\n<li><code>esq: TM - contenci\u00f3n<\/code><\/li>\n\n\n\n<li><code>esq: UL - contenci\u00f3n<\/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 Tipos comunes de cola de espera y soluciones<\/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 - contenci\u00f3n de bloqueo de fila<\/code> (M\u00e1s com\u00fan)<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Causa<\/strong>: Una sesi\u00f3n es <strong>modificar una l\u00ednea<\/strong> y otro intenta acceder a la misma fila \u2192 conduce a bloqueos TX (transacci\u00f3n).<\/li>\n\n\n\n<li><strong>Arregla<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Identificar y <strong>eliminar la contenci\u00f3n a nivel de aplicaci\u00f3n<\/strong> (la misma fila se actualiza con demasiada frecuencia).<\/li>\n\n\n\n<li>Implementar <strong>transacciones cortas<\/strong>: comprometen antes y evitan largas transacciones ociosas que mantienen bloqueos.<\/li>\n\n\n\n<li>Considere <strong>cambios en la l\u00f3gica de la aplicaci\u00f3n<\/strong> a <strong>serializar acceso<\/strong> a datos sensibles (colas, contadores).<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p>\ud83d\udc49 Diagn\u00f3stico:<\/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>Encontrar sesi\u00f3n de bloqueo:<\/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>esq: TM - contenci\u00f3n<\/code> (LMD sobre objetos)<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Causa<\/strong>: T\u00edpico de <strong>cuestiones clave en el extranjero<\/strong> o <strong>bloqueos de metadatos<\/strong>.<\/li>\n\n\n\n<li><strong>Arregla<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Aseg\u00farese de que <strong>las claves externas est\u00e1n indexadas<\/strong> (para evitar bloqueos de tabla en eliminaciones\/actualizaciones de padre-hijo).<\/li>\n\n\n\n<li>Evitar lo innecesario <strong>DDL<\/strong> mientras se ejecuta DML.<\/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 - contenci\u00f3n de \u00edndice<\/code> (Hot Index Blocks)<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Causa<\/strong>: Inserciones de alto valor monetario en el <strong>mismo \u00edndice bloque de hojas<\/strong> (por ejemplo, identificadores secuenciales).<\/li>\n\n\n\n<li><strong>Arregla<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Utilice <strong>\u00edndices de clave inversa<\/strong>.<\/li>\n\n\n\n<li>Utilice <strong>\u00edndices globales con partici\u00f3n hash<\/strong> para extender los insertos.<\/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>esq: SQ<\/code> (Contenci\u00f3n de secuencia)<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Causa<\/strong>: M\u00faltiples sesiones utilizando el <strong>misma secuencia<\/strong> sin cach\u00e9 \u2192 hotspot.<\/li>\n\n\n\n<li><strong>Arregla<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Definir secuencias con <strong>CACHE<\/strong> y\/o <strong>NOORDER<\/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> (Bloqueos definidos por el usuario)<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Causa<\/strong>: Aplicaci\u00f3n mediante <strong>DBMS_LOCK<\/strong> o colas personalizadas.<\/li>\n\n\n\n<li><strong>Arregla<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Revisar y optimizar <strong>l\u00f3gica de aplicaci\u00f3n<\/strong> utilizando estas cerraduras.<\/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> (Contenci\u00f3n de la marca de pleamar)<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Causa<\/strong>: Alta frecuencia de <strong>los insertos provocan el crecimiento del segmento<\/strong>.<\/li>\n\n\n\n<li><strong>Arregla<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Preasignar espacio utilizando: <code>ALTER TABLE mi_tabla ALLOCATE EXTENT;<\/code><\/li>\n\n\n\n<li>Considere <strong>insertos paralelos<\/strong> o la difusi\u00f3n de datos.<\/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 Consultas de diagn\u00f3stico para esperas en cola de espera<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Sesiones en espera en colas:<\/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>Bloqueador contra camarero:<\/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>Descodificaci\u00f3n detallada de colas (opcional):<\/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>Cuadro recapitulativo:<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Tipo de cola<\/th><th>Causa<\/th><th>Soluci\u00f3n<\/th><\/tr><\/thead><tbody><tr><td><code>TX - bloqueo de filas<\/code><\/td><td>Contenci\u00f3n a nivel de fila<\/td><td>Acortar las transacciones, arreglar la l\u00f3gica de la aplicaci\u00f3n<\/td><\/tr><tr><td><code>TM<\/code><\/td><td>Claves externas no indexadas<\/td><td>A\u00f1adir \u00edndices a claves externas<\/td><\/tr><tr><td><code>TX - \u00edndice<\/code><\/td><td>Bloque de \u00edndice caliente<\/td><td>Clave inversa o \u00edndice particionado<\/td><\/tr><tr><td><code>SQ<\/code><\/td><td>Contenci\u00f3n de secuencias<\/td><td>Utilizar cach\u00e9 secuencial, sin orden<\/td><\/tr><tr><td><code>UL<\/code><\/td><td>Bloqueos de usuario<\/td><td>Revisar el uso de la aplicaci\u00f3n<\/td><\/tr><tr><td><code>HW<\/code><\/td><td>Marca de pleamar<\/td><td>Preasignar extensiones<\/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 Consejo general:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>En la mayor\u00eda de los casos, <strong>las esperas en cola se deben a un dise\u00f1o ineficiente de la aplicaci\u00f3n o a la falta de \u00edndices<\/strong>.<\/li>\n\n\n\n<li>El ajuste a nivel de sistema (SGA, E\/S) tiene poco efecto...<strong>es sobre todo SQL y correcciones l\u00f3gicas<\/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\">Espacio del b\u00fafer de registro<\/h2>\n\n\n\n<p>Espera a que haya espacio en el b\u00fafer de registro porque estamos escribiendo en el b\u00fafer de registro m\u00e1s r\u00e1pido de lo que lgwr puede escribirlo.<\/p>\n\n\n\n<p><strong>En t\u00e9rminos sencillos:<\/strong> Imagina que tienes un cuaderno especial en el que apuntas notas r\u00e1pidamente. <\/p>\n\n\n\n<p>Hay un ayudante, LGWR, cuyo trabajo consiste en tomar tus notas y escribirlas en un libro grande y seguro. <\/p>\n\n\n\n<p>Si escribes notas demasiado deprisa y el bloc se llena antes de que tu ayudante pueda despejar algo de espacio, tendr\u00e1s que hacer una pausa y esperar hasta que vuelva a haber sitio. <\/p>\n\n\n\n<p>Este tiempo de espera se denomina espera de \"espacio de b\u00fafer de registro\".<\/p>\n\n\n\n<p>Excelente elecci\u00f3n: centr\u00e9monos en <strong><code>espacio de b\u00fafer de registro<\/code><\/strong> esperas en Oracle, que son menos comunes pero cr\u00edticas cuando aparecen.<\/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 \u00bfQu\u00e9 es <code>espacio de b\u00fafer de registro<\/code>?<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Este evento de espera ocurre cuando:\n<ul class=\"wp-block-list\">\n<li>Oracle intenta copiar <strong>rehacer entradas<\/strong> del <strong>b\u00fafer de registro (SGA)<\/strong> a la <strong>registros de rehacer en l\u00ednea<\/strong>pero hay <strong>no hay espacio libre<\/strong> en el b\u00fafer de registro porque los datos de rehacer a\u00fan no se han escrito en el disco.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p>Se\u00f1ala un cuello de botella entre <strong>procesos de usuario que generan rehacer<\/strong> y <strong>LGWR (Log Writer) descarg\u00e1ndolo a los 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 Causas y soluciones para <code>espacio de b\u00fafer de registro<\/code><\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"1-\ufe0f-redo-logs-on-slow-disk\">1\ufe0f\u20e3 <strong>Rehacer registros en disco lento<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Causa<\/strong>: La <strong>LBTR<\/strong> no puede escribir datos de rehacer en el disco lo suficientemente r\u00e1pido.<\/li>\n\n\n\n<li><strong>Arregla<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Lugar <strong>redo logs en el almacenamiento m\u00e1s r\u00e1pido disponible<\/strong> (preferiblemente SSD o discos dedicados).<\/li>\n\n\n\n<li>Utilice <strong>ASM<\/strong> con la configuraci\u00f3n adecuada del grupo de discos para los redo logs.<\/li>\n\n\n\n<li>Compruebe si <strong>latencia de almacenamiento<\/strong>.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p>\ud83d\udc49 Comprueba la E\/S del archivo de registro:<\/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>Buffer de Redo Log peque\u00f1o (<code>LOG_BUFFER<\/code>)<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Causa<\/strong>: En memoria <strong>El b\u00fafer de registro es demasiado peque\u00f1o<\/strong>causando esperas frecuentes cuando muchas sesiones generan rehacer.<\/li>\n\n\n\n<li><strong>Arregla<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Aumentar el <strong>LOG_BUFFER<\/strong> tama\u00f1o en el <strong>SPFILE o PFILE<\/strong>. <code>ALTER SYSTEM SET LOG_BUFFER =  SCOPE=SPFILE;<\/code><\/li>\n\n\n\n<li>Las versiones modernas de Oracle lo ajustan autom\u00e1ticamente, pero el ajuste manual puede seguir siendo \u00fatil para los sistemas de repetici\u00f3n intensiva.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p>\ud83d\udc49 Comprueba el tama\u00f1o actual del b\u00fafer de registro:<\/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>LBVR insuficiente o lenta<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Causa<\/strong>: La <strong>Proceso de la Legi\u00f3n<\/strong> no est\u00e1 a la altura del volumen de rehacer.<\/li>\n\n\n\n<li><strong>Arregla<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Aseg\u00farese <strong>LBTR<\/strong> no est\u00e1 compitiendo con otros procesos por la CPU.<\/li>\n\n\n\n<li>En RAC: verifique que <strong>LGWR y canales de E\/S<\/strong> est\u00e1n correctamente distribuidos.<\/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>Alta Generaci\u00f3n de Rehacer (Demasiado COMMIT o DML)<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Causa<\/strong>: Tasa muy alta de commits, DML o trabajos por lotes que generan grandes vol\u00famenes de rehacer.<\/li>\n\n\n\n<li><strong>Arregla<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Utilice <strong>confirmaciones por lotes<\/strong> en lugar de frecuentes commits por fila.<\/li>\n\n\n\n<li>Optimizar las operaciones DML para <strong>reducir rehacer<\/strong> (operaciones a granel, cargas directas por v\u00eda cuando sea factible).<\/li>\n\n\n\n<li>Considere <strong>NOLOGGING<\/strong> opciones para cargas de datos cuando no se requiere recuperabilidad.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p>\ud83d\udc49 Identificar las sesiones que generan rehacer:<\/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>Redo Log Files Demasiado Peque\u00f1o (Cambios Frecuentes de Log)<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Causa<\/strong>: Archivos de registro de rehacer peque\u00f1os \u2192 cambios de registro frecuentes \u2192 mayor presi\u00f3n de la LGWR \u2192 contenci\u00f3n de b\u00fafer.<\/li>\n\n\n\n<li><strong>Arregla<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Aumentar <strong>tama\u00f1o del archivo redo log<\/strong>: <code>ALTER DATABASE ADD LOGFILE SIZE 1G;<\/code><\/li>\n\n\n\n<li>Objetivo <strong>cambia de registro no m\u00e1s de 10-15 veces por hora<\/strong> en OLTP.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p>\ud83d\udc49 Compruebe la frecuencia del interruptor de registro:<\/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 Pasos r\u00e1pidos de diagn\u00f3stico<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Comprueba las sesiones en espera en el b\u00fafer de registro:<\/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>Comprueba el tama\u00f1o de rehacer y la tasa de commit:<\/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>Comprueba el rendimiento de escritura de la LGWR:<\/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>Cuadro recapitulativo:<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Causa<\/th><th>Soluci\u00f3n<\/th><\/tr><\/thead><tbody><tr><td>Disco de redo log lento<\/td><td>Mover los redo logs a un almacenamiento m\u00e1s r\u00e1pido<\/td><\/tr><tr><td>Peque\u00f1o b\u00fafer de registro (<code>LOG_BUFFER<\/code>)<\/td><td>Aumentar <code>LOG_BUFFER<\/code> talla<\/td><\/tr><tr><td>La LBTR no sigue el ritmo<\/td><td>Comprobar CPU, E\/S, proceso LGWR<\/td><\/tr><tr><td>Demasiado rehacer (commits\/DML frecuentes)<\/td><td>Optimizaci\u00f3n de la aplicaci\u00f3n, confirmaciones por lotes<\/td><\/tr><tr><td>Peque\u00f1os archivos redo log<\/td><td>Aumentar el tama\u00f1o del redo log<\/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 Notas clave:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>espacio de b\u00fafer de registro<\/strong> las esperas son <strong>poco frecuente en sistemas bien configurados<\/strong>.<\/li>\n\n\n\n<li>Las correcciones casi siempre implican <strong>hardware (discos m\u00e1s r\u00e1pidos), configuraci\u00f3n (tama\u00f1os de registro, b\u00fafer) y ajuste de aplicaciones (patrones 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\">Sincronizaci\u00f3n de archivos de registro<\/h2>\n\n\n\n<p>Es la espera para que la LGWR escriba en los archivos de registro de rehacer.<\/p>\n\n\n\n<p><strong>En t\u00e9rminos sencillos:<\/strong> Imagina que est\u00e1s jugando a un juego en el que cada movimiento que haces debes anotarlo en un diario especial para recordarlo.<\/p>\n\n\n\n<p>Hay un amigo llamado LGWR cuyo trabajo es anotar cada movimiento. <\/p>\n\n\n\n<p>Si haces un movimiento y luego tienes que esperar porque tu amigo todav\u00eda est\u00e1 escribiendo el movimiento anterior en el diario, eso es una espera de \u201csincronizaci\u00f3n de archivos de registro\u201d. <\/p>\n\n\n\n<p>Significa que est\u00e1s en pausa hasta que la LGWR termine de anotar tu movimiento en los archivos de registro.<\/p>\n\n\n\n<p>Gran elecci\u00f3n.<strong><code>sincronizaci\u00f3n de archivos de registro<\/code><\/strong> es uno de los <strong>acontecimientos de espera comunes e importantes<\/strong> en bases de datos Oracle, especialmente en sistemas OLTP. Desglos\u00e9moslo por completo.<\/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 \u00bfQu\u00e9 es <code>sincronizaci\u00f3n de archivos de registro<\/code>?<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Este evento de espera se produce cuando una sesi\u00f3n <strong>compromete una transacci\u00f3n<\/strong> y debe <strong>esperar a que el LGWR (Log Writer) escriba los datos de rehacer en el archivo de registro de rehacer<\/strong> y confirmar que est\u00e1 bien guardado.<\/li>\n\n\n\n<li>S\u00f3lo despu\u00e9s de que se confirme esta escritura se puede confirmar la confirmaci\u00f3n al usuario.<\/li>\n<\/ul>\n\n\n\n<p>\ud83d\udc49 En resumen:<br><strong>Compromete \u2192 LGWR escribe \u2192 Usuario espera \u2192 <code>sincronizaci\u00f3n de archivos de registro<\/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 Causas y soluciones para <code>sincronizaci\u00f3n de archivos de registro<\/code><\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"1-\ufe0f-frequent-commits-commit-flooding\">1\ufe0f\u20e3 <strong>Commits frecuentes (Commit Flooding)<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Causa<\/strong>: La aplicaci\u00f3n realiza commits despu\u00e9s de cada fila o con demasiada frecuencia.<\/li>\n\n\n\n<li><strong>Arregla<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Implementar <strong>confirmaciones por lotes<\/strong>: confirmar despu\u00e9s de procesar varias filas en lugar de despu\u00e9s de cada fila.<\/li>\n\n\n\n<li>Revisar la l\u00f3gica de la aplicaci\u00f3n para reducir las confirmaciones innecesarias.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p>\ud83d\udc49 Diagn\u00f3stico:<\/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>Escrituras lentas de Redo Log (cuello de botella de E\/S de disco)<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Causa<\/strong>: Los discos que contienen los <strong>archivos redo log<\/strong> son lentos o est\u00e1n sobrecargados, lo que retrasa las escrituras de la LGWR.<\/li>\n\n\n\n<li><strong>Arregla<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Colocar los registros de rehacer en <strong>almacenamiento de alta velocidad<\/strong> (SSD, Flash).<\/li>\n\n\n\n<li>Aislar los redo logs de los datafiles y otros discos ocupados.<\/li>\n\n\n\n<li>Utilice <strong>ASM<\/strong> con redundancia y striping.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p>\ud83d\udc49 Comprueba el rendimiento del 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>Archivos de Redo Log peque\u00f1os (demasiados conmutadores)<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Causa<\/strong>: Frecuente <strong>interruptores de registro<\/strong> provocando retrasos y una mayor actividad de la Legi\u00f3n.<\/li>\n\n\n\n<li><strong>Arregla<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Aumentar <strong>tama\u00f1o del archivo redo log<\/strong> para reducir el n\u00famero de interruptores por hora.<\/li>\n\n\n\n<li>Compruebe si <strong>registrar tormentas de conmutaci\u00f3n<\/strong> durante las horas punta.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p>\ud83d\udc49 Comprueba el historial del interruptor de registro:<\/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>Cuello de botella en la CPU que afecta a la LGWR<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Causa<\/strong>: La LGWR compite por la CPU con otros procesos, lo que provoca retrasos en la confirmaci\u00f3n.<\/li>\n\n\n\n<li><strong>Arregla<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Consulte <strong>Uso de la CPU<\/strong> y garantizar que la Legi\u00f3n de la Buena Voluntad no pase hambre.<\/li>\n\n\n\n<li>En sistemas altamente concurrentes, considere a\u00f1adir m\u00e1s CPU u optimizar la concurrencia de la aplicaci\u00f3n.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p>\ud83d\udc49 Comprueba las principales esperas de procesos en segundo plano:<\/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>Alta generaci\u00f3n de repeticiones (demasiado DML)<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Causa<\/strong>: Grandes vol\u00famenes de DML generando excesivo redo, abrumando LGWR.<\/li>\n\n\n\n<li><strong>Arregla<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Optimizar DML: utilizar <strong>procesamiento a granel<\/strong>minimizar <strong>rehacer innecesario<\/strong>.<\/li>\n\n\n\n<li>Utilice <strong>NOLOGGING<\/strong> cuando sea seguro (cargas ETL, \u00edndices).<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p>\ud83d\udc49 Comprobar rehacer generado por transacci\u00f3n:<\/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 Diagn\u00f3stico r\u00e1pido para <code>sincronizaci\u00f3n de archivos de registro<\/code><\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Comprobar sesiones en espera:<\/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>Revisar las estad\u00edsticas de commit y redo a nivel de sistema:<\/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 utiliza <strong>AWR o Statspack<\/strong>Busca:<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>sincronizaci\u00f3n de archivos de registro<\/code> tiempo medio de espera (deber\u00eda ser <strong>idealmente &lt; 1 ms<\/strong>problem\u00e1tico 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>Tabla resumen de soluciones:<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Causa<\/th><th>Soluci\u00f3n<\/th><\/tr><\/thead><tbody><tr><td>Demasiados compromisos<\/td><td>Batch commits, cambio de aplicaci\u00f3n<\/td><\/tr><tr><td>Discos de redo log lentos<\/td><td>Mover rehacer a un almacenamiento m\u00e1s r\u00e1pido<\/td><\/tr><tr><td>Peque\u00f1os registros de rehacer<\/td><td>Aumentar el tama\u00f1o del archivo redo log<\/td><\/tr><tr><td>Contenci\u00f3n de la CPU<\/td><td>A\u00f1adir CPU, reducir la concurrencia de procesos<\/td><\/tr><tr><td>Generaci\u00f3n excesiva de rehacer<\/td><td>Ajuste DML, considere NOLOGGING para el volumen<\/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 Principales conclusiones:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Alta <strong><code>sincronizaci\u00f3n de archivos de registro<\/code><\/strong> \u2192 indica <strong>tiempo de respuesta<\/strong> problemas, a menudo perceptibles para los usuarios finales.<\/li>\n\n\n\n<li>Est\u00e1 estrechamente vinculada a <strong>Rendimiento de la LGWR, subsistema redo y patrones de confirmaci\u00f3n de aplicaciones<\/strong>.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>Espero que te haya sido \u00fatil.<\/p>","protected":false},"excerpt":{"rendered":"<p>Los eventos de espera de Oracle son estad\u00edsticas que un proceso o hilo del servidor incrementa cuando espera a que se complete una operaci\u00f3n para continuar su procesamiento. A continuaci\u00f3n se explican algunos de los eventos de espera m\u00e1s comunes de Oracle.<\/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\/es\/wp-json\/wp\/v2\/posts\/6398","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rootfan.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/rootfan.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/rootfan.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/rootfan.com\/es\/wp-json\/wp\/v2\/comments?post=6398"}],"version-history":[{"count":33,"href":"https:\/\/rootfan.com\/es\/wp-json\/wp\/v2\/posts\/6398\/revisions"}],"predecessor-version":[{"id":6476,"href":"https:\/\/rootfan.com\/es\/wp-json\/wp\/v2\/posts\/6398\/revisions\/6476"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/rootfan.com\/es\/wp-json\/wp\/v2\/media\/6400"}],"wp:attachment":[{"href":"https:\/\/rootfan.com\/es\/wp-json\/wp\/v2\/media?parent=6398"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rootfan.com\/es\/wp-json\/wp\/v2\/categories?post=6398"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rootfan.com\/es\/wp-json\/wp\/v2\/tags?post=6398"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}