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
| Nombre del parámetro | Tipo de datos | Valor predeterminado | Obligatorio | Descripción |
|---|---|---|---|---|
|
|
|
— |
Sí |
El nombre del espacio de tabla que se va a reducir. |
|
|
|
|
No |
El modo de reducción. Utilice |
|
|
|
|
No |
El tamaño del destino, en bytes. Utilice |
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_sizees menor que el espacio que ocupan los objetos actualmente, Oracle ajusta el objetivo al tamaño mínimo alcanzable. -
El valor de
p_target_sizeno 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_TABLESPACEdirectamente sin el encapsuladorrdsadmin_util. Utilice siempre el encapsuladorrdsadmin.rdsadmin_util.shrink_tablespace.
Recursos relacionados
-
DBMS_SPACE.SHRINK_TABLESPACE
en la documentación de Oracle Database -
Para obtener más información, consulte Ejecución de tareas comunes de base de datos para instancias de base de datos.