Skip to main content

Command Palette

Search for a command to run...

Cómo comprimir índices y... que sea sustentable en el tiempo

El objetivo es que los índices actuales se compriman y los nuevos que se creen en el futuro, también.

Updated
2 min read

El parámetro DB_INDEX_COMPRESSION_INHERITANCE con sus posibles valores (TABLESPACE | TABLE | ALL | NONE) indica si el índice debe heredar la compresión del tablespace, de la tabla o de ningún lugar. Por omisión el valor es NONE, por ende no hereda los atributos de compresión.

Para definir la compresión a nivel tablespace, se debe ejecutar lo siguiente:

ALTER TABLESPACE <tablespace_name> DEFAULT INDEX COMPRESS ADVANCED HIGH;

Esto provocará que todos los índices que se creen a futuro tendrán la compresión del tipo ADVANCED HIGH.

Para comprimir un índice en el momento, se debe ejecutar lo siguiente:

ALTER INDEX <owner>.<index_name> REBUILD COMPRESS ADVANCED HIGH ONLINE;

Esto hará que el índice en cuestión se re-cree comprimido de manera online, es decir, no provocará un bloqueo.

Si querés comprimir todos los índices de tu base, te dejo un script que te será de utilidad:

Este script relevará todos los índices no particionados:

SELECT 'ALTER INDEX '||OWNER||'.'||INDEX_NAME||' REBUILD COMPRESS ADVANCED HIGH ONLINE;' 
FROM DBA_INDEXES 
WHERE OWNER LIKE 'USR_%'
AND PARTITIONED='NO'
AND COMPRESSION = 'DISABLED'
AND INDEX_NAME NOT LIKE 'SYS%'
AND INDEX_NAME NOT LIKE 'BIN$%'
ORDER BY OWNER;

Y este relevará todos los índices particionados:

SELECT 'ALTER INDEX '||INDEX_OWNER||'.'||INDEX_NAME||' REBUILD PARTITION '||PARTITION_NAME||' COMPRESS ADVANCED HIGH ONLINE;' 
FROM DBA_IND_PARTITIONS 
WHERE INDEX_OWNER LIKE 'USR_%'
AND COMPRESSION = 'DISABLED'
AND INDEX_NAME NOT LIKE 'SYS_%'
AND INDEX_NAME NOT LIKE 'BIN$%'
ORDER BY INDEX_OWNER;

Hasta el próximo post 🙂

Saludos desde Buenos Aires, Argentina.

13 views

More from this blog

D

DBA DE TRINCHERA

16 posts

En este blog encontrarás artículos técnicos de bases de datos Oracle breves que van al hueso, directo al problema y a la solución.