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.
Soy una persona, luego un ingeniero y magister que posee más de 15 años de experiencia administrando base de datos Oracle y diseñando arquitecturas para satisfacer las necesidades del negocio y también para innovar.
Eventos como orador: • Speaker del Oracle Developer Community Tour 2018 • Speaker del Oracle Groundbreakers Tour 2019 LATAM
Experiencia Técnica: • Oracle Cloud Infrastructure (OCI). • Exadata Cloud at Customer. • Migración de base de datos utilizando Golden Gate con corte de servicio tendiendo a cero. • Administrador de PDBaaS, dentro de una nube privada interna de Oracle. • Oracle In-Memory. • Oracle Data Masking / Oracle Data Redaction. • Automatización de aplicación de parches PSU utilizando el Cloud Control. • Actualmente me desempeño como Administrador de Bases de Datos, principalmente de Oracle, versiones 11g, 12c, 18c y 19c con arquitectura multitenant. • Utilización del comando DUPLICATE para actualizar ambientes de testeo con información productiva. • Realizo todo lo que concierne a la administración de bases de datos, como ser instalaciones de motores (Single Instance, RAC y RAC Extendido) 11g, 12c, 18c y 19c. Realizo upgrades y, migraciones de bases de datos entre servidores con distintos sistemas operativos, aplicaciones de parches PSU, CPU, OOP, respaldos y recuperaciones a través de RMAN. • Recuperación de objetos rápida y retroceso de la instancia en el tiempo utilizando la tecnología Oracle Flashback. • Creación de ambientes de contingencia utilizando Oracle Data Guard. Pruebas de Switchover y Failover. También utilizo Oracle Snapshot StandBy para aprovechar mejor estos ambientes de contingencia. • Instalación y configuración del Cloud Control 12c/13c. • Administro bases de datos que se alojan en el Oracle Exadata Machine. • Experiencia en la administración de bases de datos que soportan el sistema SAP, realizo tareas como refresh, particionamiento de tablas, etc. • Oracle Golden Gate 11g, 12c, 18c y 19c. • Sistemas operativos: AIX, Unix (HP-UX), Linux (RedHat – Centos), Windows. • Scripting en bash. • He configurado bases espejos (Stand By) de manera manual para motores con licencia Standard.
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.

