View a markdown version of this page

Reducción de espacios de tabla en RDS para Oracle - Amazon Relational Database Service

Reducción de espacios de tabla en RDS para Oracle

A partir de Oracle Database 26ai (26.0.0.0), Amazon RDS para Oracle admite la reducción del espacio de tablas con el procedimiento rdsadmin.rdsadmin_util.shrink_tablespace. Utilice este procedimiento para recuperar el espacio no utilizado de un espacio de tabla reduciendo sus archivos de datos. La reducción disminuye el consumo de almacenamiento sin necesidad de migrar los datos ni recrear los espacios de tabla.

Descripción general

Con el tiempo, los espacios de tabla de una base de datos de Oracle pueden acumular espacio no utilizado a partir de datos eliminados o reorganizados. El procedimiento rdsadmin.rdsadmin_util.shrink_tablespace incluye la funcionalidad DBMS_SPACE.SHRINK_TABLESPACE de Oracle y gestiona los privilegios internos necesarios en su nombre.

La reducción del espacio de tabla admite los siguientes modos:

  • Modo de análisis (DBMS_SPACE.TS_MODE_ANALYZE): evalúa el espacio de tablas e informa sobre cuánto espacio puede reclamar, sin realizar cambios.

  • Modo de reducción (DBMS_SPACE.TS_MODE_SHRINK): mueve los objetos y cambia el tamaño de los archivos de datos del espacio de tablas para recuperar el espacio no utilizado. Este es el modo predeterminado.

Requisitos

Para utilizar la reducción de espacios de tabla, la instancia de base de datos debe cumplir los siguientes requisitos:

  • Oracle Database 26ai o superiores

  • Oracle Enterprise Edition

Sintaxis

EXEC rdsadmin.rdsadmin_util.shrink_tablespace( p_tablespace_name => 'tablespace_name', p_shrink_mode => mode, p_target_size => target_bytes);

Parameters

parámetros de shrink_tablespace
Nombre del parámetro Tipo de datos Valor predeterminado Obligatorio Descripción

p_tablespace_name

VARCHAR2

El nombre del espacio de tabla que se va a reducir.

p_shrink_mode

NUMBER

2 (TS_MODE_SHRINK)

No

El modo de reducción. Utilice DBMS_SPACE.TS_MODE_ANALYZE (1) solo para analizar o DBMS_SPACE.TS_MODE_SHRINK (2) para realizar la reducción.

p_target_size

NUMBER

0

No

El tamaño del destino, en bytes. Utilice 0 (opción predeterminada) para reducir el tamaño al mínimo posible. Especifique un valor positivo para reducirlo a un objetivo específico.

Ejemplos

Análisis de un espacio de tabla en busca de espacio recuperable

Para analizar un espacio de tabla sin realizar cambios, ejecute el comando siguiente:

EXEC rdsadmin.rdsadmin_util.shrink_tablespace('USERS', DBMS_SPACE.TS_MODE_ANALYZE);

A continuación, se muestra un ejemplo de la salida:

-------------------ANALYZE RESULT-------------------
Total Movable Objects: 0
Total Movable Size(GB): 0
Original Datafile Size(GB): .1
Suggested Target Size(GB): .06
Process Time: +00 00:00:00.021513

Reducción de un espacio de tabla al tamaño mínimo

Para reducir un espacio de tabla y recuperar todo el espacio no utilizado, ejecute el siguiente comando:

EXEC rdsadmin.rdsadmin_util.shrink_tablespace('USERS');

A continuación, se muestra un ejemplo de la salida:

-------------------SHRINK RESULT-------------------
Total Moved Objects: 0
Total Moved Size(GB): 0
Original Datafile Size(GB): .1
New Datafile Size(GB): .05
Process Time: +00 00:00:00.281151

Reducción de un espacio de tabla a un tamaño de destino específico

Para reducir un espacio de tabla a un tamaño de destino en bytes, especifique el parámetro p_target_size. Si el objetivo es menor que el tamaño mínimo alcanzable, Oracle lo ajusta automáticamente al alza:

EXEC rdsadmin.rdsadmin_util.shrink_tablespace('USERS', DBMS_SPACE.TS_MODE_SHRINK, 52428800);

Consideraciones

Tenga en cuenta lo siguiente cuando reduzca un espacio de tabla:

  • La reducción del espacio de tabla es una operación en línea. Los objetos del espacio de tabla permanecen accesibles durante la reducción.

  • Es posible que la operación de reducción mueva objetos, como tablas e índices, dentro del espacio de tabla para consolidar el espacio libre antes de cambiar el tamaño de los archivos de datos.

  • Los índices siguen siendo válidos tras la operación de reducción y se preserva la integridad de los datos.

  • Si el valor de p_target_size es menor que el espacio que ocupan los objetos actualmente, Oracle ajusta el objetivo al tamaño mínimo alcanzable.

  • El valor de p_target_size no debe superar el tamaño del espacio de tabla actual. Especifique un objetivo que sea inferior o igual al tamaño actual.

  • Es posible que las transacciones activas en los objetos del espacio de tabla impidan que la operación reclame todo el espacio disponible. Para obtener los mejores resultados, ejecute la reducción durante un periodo de baja actividad.

  • No se admite llamar a DBMS_SPACE.SHRINK_TABLESPACE directamente sin el encapsulador rdsadmin_util. Utilice siempre el encapsulador rdsadmin.rdsadmin_util.shrink_tablespace.

Recursos relacionados