Mantenimiento y purgado de STATSPACK en Oracle (PERFSTAT)

miércoles, 30 de septiembre de 2026

Mantenimiento y purgado de STATSPACK en Oracle (PERFSTAT)


En más de una ocasión, los que administramos bases de datos donde no disponemos de licenciamiento para el Diagnostics Pack nos apoyamos en Statspack como nuestra principal herramienta de diagnóstico histórico. Sin embargo, si no mantenemos una política de limpieza estricta, el esquema PERFSTAT puede crecer de forma desmesurada en nuestros discos.

Continuando con las buenas prácticas para mantener saludable nuestro esquema PERFSTAT, hoy veremos un enfoque de control absoluto: cómo purgar por rangos específicos de snap_id, cómo recuperar físicamente el espacio en disco mediante el comando SHRINK SPACE y algunas recomendaciones de rendimiento asociadas.

Antes de ejecutar cualquier acción, el primer paso es consultar los snapshots disponibles en el repositorio para definir con exactitud el rango que deseamos eliminar.

Nota: Ejecuta la siguiente consulta conectado con el usuario administrador o PERFSTAT:

SELECT snap_id, snap_time
FROM perfstat.stats$snapshot
ORDER BY snap_id ASC;


Además, puedes revisar cuánto espacio están consumiendo actualmente las tablas más pesadas antes de iniciar el mantenimiento.

SELECT segment_name,ROUND(SUM(bytes)/1024/1024/1024, 2) AS size_gb
FROM dba_segments
WHERE owner = 'PERFSTAT' 
AND segment_name IN ('STATS$SQL_SUMMARY', 'STATS$SQLTEXT', 'STATS$FILESTATXS')
GROUP BY segment_name
ORDER BY size_gb DESC;


Una vez definido el intervalo, utilizamos el procedimiento statspack.purge especificando los parámetros de rango i_begin_snap e i_end_snap:
BEGIN 
perfstat.statspack.purge( i_begin_snap => 90160 , i_end_snap => 106699); 
END; 
/ 
COMMIT;
 

Al realizar un purge, las filas son eliminadas de las tablas, pero los segmentos lógicos (High Water Mark) y el espacio en los ficheros de datos no se liberan automáticamente de forma predeterminada. Las tablas siguen reteniendo el tamaño anterior en disco.

Para compactar las tablas más pesadas del esquema PERFSTAT y devolver el espacio libre al tablespace, aplicamos la habilitación de movimiento de filas (ROW MOVEMENT) y el comando SHRINK SPACE:

-- 1. Mantenimiento sobre STATS$SQL_SUMMARY 
ALTER TABLE perfstat.STATS$SQL_SUMMARY ENABLE ROW MOVEMENT; 
ALTER TABLE perfstat.STATS$SQL_SUMMARY SHRINK SPACE; 
ALTER TABLE perfstat.STATS$SQL_SUMMARY DISABLE ROW MOVEMENT; 

-- 2. Mantenimiento sobre STATS$SQLTEXT 
ALTER TABLE perfstat.STATS$SQLTEXT ENABLE ROW MOVEMENT; 
ALTER TABLE perfstat.STATS$SQLTEXT SHRINK SPACE; 
ALTER TABLE perfstat.STATS$SQLTEXT DISABLE ROW MOVEMENT; 

  -- 3. Mantenimiento sobre STATS$FILESTATXS 
ALTER TABLE perfstat.STATS$FILESTATXS ENABLE ROW MOVEMENT; 
ALTER TABLE perfstat.STATS$FILESTATXS SHRINK SPACE; 
ALTER TABLE perfstat.STATS$FILESTATXS DISABLE ROW MOVEMENT;


Recomendación: Este tipo de operaciones de SHRINK generan bloqueos momentáneos y consumo de recursos, por lo que se recomienda ejecutarlas en ventanas de mantenimiento o periodos de baja actividad (fuera de horario pico).

Volvemos a revisar cuánto espacio están consumiendo actualmente las tablas más pesadas después de ejecutado el mantenimiento. Observamos un decrecimiento en el consumo por parte de 2 de ellas.


Tras un proceso masivo de borrado y compactación física de tablas, los índices asociados pueden quedar fragmentados. Para asegurar que el optimizador de Oracle continúe accediendo de manera óptima a los datos, puedes reconstruir los índices principales en línea:
ALTER INDEX perfstat.stats$sql_summary_pk REBUILD ONLINE; 
ALTER INDEX perfstat.stats$sqltext_pk REBUILD ONLINE;
El mantenimiento preventivo de Statspack es una tarea ineludible para cualquier DBA que gestione entornos sin Diagnostics Pack. Purgar los datos históricos innecesarios y recuperar el espacio físico liberado es un proceso sencillo pero crítico. Implementando esta rutina mantendrás tus bases de datos optimizadas, evitarás alertas innecesarias por falta de espacio y asegurarás diagnósticos precisos por mucho más tiempo.

Saludos.

 

0 comentarios :

Publicar un comentario