A continuación, veremos casos típicos de problemas de rendimiento después de aplicar un patch y cómo solucionarlos:
Caso 1: Consultas más lentas después del parche
Caso 2: Alto consumo de CPU después del patching
Caso 3: Contención en bloqueos después del parche
Caso 4: Problemas con el Plan de Ejecución (SQL Plan Baseline afectado)
Caso 5: Problemas de I/O después de un parche en Oracle ASM


CASO 1: Consultas más lentas después del parche

Escenario:

Después de aplicar un parche de seguridad en Oracle 19c (Patch 33828591), algunas consultas clave que antes tardaban 2 segundos, ahora tardan 20 segundos o más.

Diagnóstico: Verificar el historial de ejecución

Identificar la consulta afectada usando V$SQL

SELECT SQL_ID, EXECUTIONS, ELAPSED_TIME/EXECUTIONS AS AVG_ELAPSED_TIME
FROM V$SQL
WHERE SQL_TEXT LIKE '%FROM EMPLOYEES%'
ORDER BY ELAPSED_TIME DESC;

Salida antes del patch:

Salida después del patch:

Solución: Forzar un nuevo cálculo de estadísticas

BEGIN
   DBMS_STATS.GATHER_TABLE_STATS(OWNNAME => 'HR', TABNAME => 'EMPLOYEES');
END;
/

Verificar nuevamente el tiempo de ejecución.
Si sigue lento, forzar un nuevo plan de ejecución:

ALTER SYSTEM FLUSH SHARED_POOL;

CASO 2: Alto consumo de CPU después del patching

Escenario:

Después de aplicar el parche Patch 33568938, el uso de CPU en el servidor aumentó del 30% al 90%, afectando el rendimiento de la base de datos.

Diagnóstico: Ver qué procesos consumen más CPU

SELECT SID, SERIAL#, SQL_ID, SQL_TEXT
FROM V$SESSION
WHERE STATUS = 'ACTIVE'
AND USERNAME IS NOT NULL
AND SID IN (SELECT SID FROM V$SESSTAT WHERE STATISTIC# = (SELECT STATISTIC# FROM V$STATNAME WHERE NAME='CPU used by this session'))
ORDER BY SID;

Salida:

Solución: Identificar el SQL y optimizarlo

Obtener el plan de ejecución

SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR('4df9a2j8', NULL, 'ALLSTATS LAST'));

Si se observa un Full Table Scan inesperado, crear un índice o recomputar estadísticas

CREATE INDEX IDX_LARGE_TABLE ON LARGE_TABLE(COLUMN_A);

CASO 3: Contención en bloqueos después del parche

Escenario:

Después de un parche de seguridad, varias sesiones quedan bloqueadas en espera de recursos.

Diagnóstico: Identificar bloqueos activos

SELECT blocking_session, sid, serial#, wait_class, seconds_in_wait
FROM V$SESSION
WHERE blocking_session IS NOT NULL;

Salida:

Solución: Verificar qué SQL está causando el bloqueo y actuar

Identificar el SQL bloqueante

SELECT SQL_TEXT FROM V$SQL WHERE SQL_ID = (SELECT SQL_ID FROM V$SESSION WHERE SID = 123);

Si es seguro, matar la sesión bloqueante

ALTER SYSTEM KILL SESSION '123,45678' IMMEDIATE;

CASO 4: Problemas con SQL Plan Baseline después del parche

Escenario:

Después del parche, una consulta dejó de usar un índice y comenzó a hacer un Full Table Scan, causando lentitud.

Diagnóstico: Revisar el plan de ejecución antes y después

SELECT * FROM DBA_HIST_SQL_PLAN
WHERE SQL_ID = '4df9a2j8'
AND OBJECT_NAME IS NOT NULL;

Salida antes del parche:

Salida después del parche:

Solución: Forzar el plan anterior

BEGIN
   DBMS_SPM.LOAD_PLANS_FROM_CURSOR_CACHE(sql_id => '4df9a2j8');
END;
/

CASO 5: Problemas de I/O después de un parche en Oracle ASM

Escenario:

Después de aplicar el parche Patch 32842214, se observa un alto tiempo de espera en I/O.

Diagnóstico: Revisar tiempos de espera en I/O

SELECT EVENT, TOTAL_WAITS, TIME_WAITED/100 AS AVG_WAIT_TIME_MS
FROM V$SYSTEM_EVENT
WHERE EVENT LIKE 'db file%read%'
ORDER BY AVG_WAIT_TIME_MS DESC;

Salida:

Antes del parche, el tiempo era 2-3 ms.

Solución: Verificar configuración de ASM y reubicar datos

Ver qué discos están siendo más utilizados

SELECT GROUP_NUMBER, DISK_NUMBER, TOTAL_MB, FREE_MB
FROM V$ASM_DISK;

Rebalancear los discos

ALTER DISKGROUP DATA REBALANCE POWER 10;

Si es un problema de latencia, habilitar Adaptive I/O

ALTER SYSTEM SET DBWR_ADAPTIVE_FLUSHING=TRUE;

Deja un comentario

Tendencias