¿Cómo cambio el tamaño del espacio de tablas de mi instancia de base de datos de Amazon RDS para Oracle?
Quiero saber cómo administrar o cambiar el tamaño del espacio de tablas de mi instancia de base de datos Amazon Relational Database Service (Amazon RDS) para Oracle.
Descripción corta
El tipo de espacio de tablas predeterminado para una instancia de base de datos de Amazon RDS para Oracle es bigfile. No se recomienda usar espacios de tablas smallfile para instancias de bases de datos de RDS para Oracle.
Una instancia de base de datos de RDS para Oracle que usa un espacio de tablas smallfile tiene las siguientes limitaciones:
- No puedes ejecutar el comando ALTER DATABASE para cambiar el tamaño o la configuración de los archivos de datos. Para obtener más información, consulta Limitaciones para los privilegios de DBA en RDS para Oracle.
- Debes administrar manualmente el parámetro db_files para definir el número máximo de archivos de datos en la base de datos. Si el número de archivos de datos está cerca de su cuota, debes cambiar el parámetro db_files.
Cuando creas espacios de tablas y no especificas un tamaño de archivo de datos, Amazon RDS activa AUTOEXTEND ON de forma predeterminada. El tamaño máximo de los espacios de tablas bigfile es de 16 TiB. Al insertar datos en el espacio de tablas, el tamaño del espacio de tablas aumenta hasta la cuota máxima que configures o la cuota máxima para el almacenamiento asignado.
Si el almacenamiento asignado a la instancia de base de datos de RDS para Oracle está lleno, la instancia cambia al estado STORAGE_FULL y los espacios de tabla no se pueden ampliar. Para resolver este problema, debes agregar espacio de almacenamiento a la instancia. Para obtener más información, consulta ¿Cómo puedo solucionar los problemas que surgen cuando las instancias de base de datos de Amazon RDS se quedan sin almacenamiento?
Cuando eliminas datos de un espacio de tablas, el tamaño del espacio de tablas no disminuye. Al insertar datos nuevos, puedes reutilizar los bloques libres. Debes cambiar el tamaño del espacio de tablas manualmente para recuperar el espacio no utilizado.
Resolución
Nota: En los siguientes comandos, sustituye TABLESPACE_NAME o example-tablespace por el nombre de su espacio de tablas.
Comprobación de la configuración del espacio de tablas
Para identificar el tipo de espacio de tablas, ejecuta la siguiente consulta:
SELECT TABLESPACE_NAME, CONTENTS, BIGFILE FROM DBA_TABLESPACES;
El comando anterior puede devolver el siguiente resultado:
- La columna BIGFILE puede tener un valor de SÍ para BIGFILE o NO para SMALL FILE.
- La columna CONTENIDO puede ser permanent, undo o temporary.
Para comprobar el tamaño del archivo de datos, la cuota máxima que configuraste y si la característica de extensión automática está activada, ejecuta una de las siguientes consultas.
Para los espacios de tablas permanent y undo, ejecuta la siguiente consulta:
SELECT TABLESPACE_NAME, ROUND(SUM(BYTES)/(1024*1024*1024),2) SUM_GB, ROUND(MAXBYTES/(1024*1024*1024),2) MAX_GB, AUTOEXTENSIBLE FROM DBA_DATA_FILES GROUP BY TABLESPACE_NAME, MAXBYTES,AUTOEXTENSIBLE;
Para los espacios de tablas temporary, ejecuta la siguiente consulta:
SELECT TABLESPACE_NAME, ROUND(SUM(BYTES)/(1024*1024*1024),2) SUM_GB, ROUND(MAXBYTES/(1024*1024*1024),2) MAX_GB, AUTOEXTENSIBLE FROM DBA_TEMP_FILES GROUP BY TABLESPACE_NAME, MAXBYTES,AUTOEXTENSIBLE;
Los comandos anteriores pueden devolver los siguientes resultados:
- Si la característica de extensión automática no está activada, el valor de MAX_GB es igual a 0.
- Si el tipo de espacio de tablas es smallfile, el valor de MAX_GB depende del tamaño de bloque que usas para crear el espacio de tablas. Por ejemplo, si el tamaño del bloque es de 8 K, el valor de MAX_GB es de 32 GB. Para obtener más información, consulta Nonstandard block sizes (Tamaños de bloque no estándar) en el sitio web de Oracle.
- Si el tipo de espacio de tablas es bigfile, el valor de MAX_GB aparece como 32 TB. El tamaño máximo de un solo archivo para las instancias de bases de datos de RDS para Oracle es de 16 TiB.
Para recuperar la información necesaria sobre el espacio de tablas del lenguaje de descripción de datos (DDL), ejecuta los siguientes comandos:
SET LINESIZE 400;
SET LONG 99999;
SELECT DBMS_METADATA.GET_DDL('TABLESPACE','example-tablespace') FROM DUAL;
Aumento del tamaño del espacio de tablas
Si activas la característica de extensión automática, no necesitas aumentar el tamaño del espacio de tablas.
Sin embargo, si activas la característica de extensión automática y, a continuación, cambias el tamaño del espacio de tablas, debes realizar las siguientes acciones al cambiar el tamaño:
-
Para los espacios de tablas bigfile, ejecuta el siguiente comando para cambiar el tamaño del espacio de tablas:
ALTER TABLESPACE example-tablespace RESIZE 50G;Nota: Especifica el tamaño en kilobytes, megabytes, gigabytes o terabytes. El espacio de tablas bigfile tiene un solo archivo de datos y el comando ALTER TABLESPACE cambia el tamaño del archivo de datos que pertenece al espacio de tablas. Para obtener más información, consulta ALTER TABLESPACE en el sitio web de Oracle.
-
Para espacios de tablas smallfile, ejecuta el siguiente comando para agregar archivos de datos y aumentar el tamaño del espacio de tablas:
ALTER TABLESPACE example-tablespace ADD DATAFILE SIZE 1G AUTOEXTEND ON; -
Para espacios de tablas smallfile, ejecuta el siguiente comando para usar el procedimiento rdsadmin_util.resize_datafile para poder cambiar el tamaño de un archivo de datos original:
select file_id,file_name, bytes/1024/1024/1024 gb from dba_data_files where tablespace_name='TEST';Nota: Sustituye TEST por el nombre del espacio de tablas.
Ejemplo de salida de procedimiento:
FILE_ID FILE_NAME GB ======================================================================= 6 /rdsdbdata/db/TESTDB_A/datafile/o1_mf_test_m03xlfq8_.dbf 1 SQL> exec rdsadmin.rdsadmin_util.resize_datafile(6,'2G') PL/SQL procedure successfully completed. SQL> select file_id,file_name, bytes/1024/1024/1024 gb from dba_data_files where tablespace_name='TEST'; FILE_ID FILE_NAME GB ========================================================================= 6 /rdsdbdata/db/TESTDB_A/datafile/o1_mf_test_m03xlfq8_.dbf 2
Reducción del tamaño de un espacio de tablas smallfile
Para reducir el tamaño de un espacio de tablas smallfile, sigue estos pasos:
- Utiliza el procedimiento rdsadmin_util.resize_datafile.
Nota: No se puede reducir el tamaño de un archivo de datos a un valor inferior al límite máximo del archivo de datos. - Crea un nuevo espacio de tablas y, a continuación, configura el espacio según tus necesidades.
- Traslada manualmente todos los datos al nuevo espacio de tablas.
Reducción del tamaño del espacio de tablas bigfile
Si usas un espacio de tablas bigfile, elige uno de los siguientes métodos para reducir el tamaño del espacio de tablas.
Espacios de tablas permanent
Cuando intentas reducir el tamaño del espacio de tablas permanent a un valor inferior al límite máximo del espacio de tablas, se produce un error en la operación de cambio de tamaño. A continuación, recibes el siguiente mensaje de error:
«ORA-03297: file contains used data beyond requested RESIZE value».
Si el tamaño del espacio de tablas es mayor que el límite máximo, puedes reducir el tamaño del espacio de tablas permanent al valor del límite máximo.
Por ejemplo, si el límite máximo es de 40 GB y el tamaño del espacio de tablas es de 50 GB, entonces se reduce el espacio de tablas a 40 GB.
Ejemplo de comando para cambiar el tamaño del espacio de tablas:
ALTER TABLESPACE example-tablespace RESIZE 40G;
Si no puedes reducir el tamaño del espacio de tablas a un valor que sea igual al límite máximo, realiza las siguientes acciones:
- Reorganiza los objetos del espacio de tablas.
- Crea un nuevo espacio de tablas y traslada todos los objetos al nuevo espacio de tablas. A continuación, elimina el espacio de tablas antiguo.
Espacio de tablas temporary
Ejecuta el siguiente comando para reducir un espacio de tablas temporary:
ALTER TABLESPACE example-tablespace SHRINK SPACE KEEP 100M;
Para cambiar el tamaño del espacio de tablas temporary en una réplica de lectura, incluye rdsadmin.rdsadmin_util.resize_temp_tablespace en el siguiente comando:
EXEC rdsadmin.rdsadmin_util.resize_temp_tablespace('example-tablespace','100M');
O bien, crea otro espacio de tablas temporary y establece el nuevo espacio de tablas como predeterminado.
Sigue estos pasos:
-
Ejecuta la siguiente consulta para ver el espacio de tablas temporary predeterminado actual:
SELECT PROPERTY_VALUE FROM DATABASE_PROPERTIES WHERE PROPERTY_NAME = 'DEFAULT_TEMP_TABLESPACE';Nota: Para obtener más información, consulta Viewing information about tablespaces (Visualización de información sobre espacios de tablas) en el sitio web de Oracle.
-
Ejecuta el siguiente comando para crear otro espacio de tablas temporary y configurar el tamaño requerido:
CREATE TEMPORARY TABLESPACE example-tablespace TEMPFILE SIZE 100M; -
Ejecuta la siguiente consulta, para establecer el nuevo espacio de tablas temporary como el espacio de tablas temporary predeterminado:
EXEC RDSADMIN.RDSADMIN_UTIL.ALTER_DEFAULT_TEMP_TABLESPACE(TABLESPACE_NAME => 'example-tablespace');
Para modificar un espacio de tablas temporary para un usuario específico, sigue estos pasos:
-
Ejecuta la siguiente consulta para ver el espacio de tablas temporary predeterminado actual para el usuario:
SELECT USERNAME, TEMPORARY_TABLESPACE FROM DBA_USERS where USERNAME='example_username'; -
Ejecuta el siguiente comando para cambiar el espacio de tablas temporary predeterminado:
ALTER USER example_username TEMPORARY TABLESPACE example-tablespace;
Espacios de tablas undo
Sigue estos pasos:
-
Para identificar el espacio de tablas undo que está en uso actualmente, ejecuta la siguiente consulta:
SHOW PARAMETER UNDO_TABLESPACE; -
Ejecuta el siguiente comando para reducir el tamaño del espacio de tablas undo:
`ALTER TABLESPACE example-tablespace RESIZE 40G;`
Si la consulta no se ejecuta, sigue estos pasos:
-
Ejecuta el siguiente comando para crear un nuevo espacio de tablas undo:
CREATE UNDO TABLESPACE example-new-tablespace DATAFILE SIZE 1G AUTOEXTEND ON MAXSIZE 100G;Nota: Sustituye example-new-tablespace por el nombre del nuevo espacio de tablas undo.
-
Ejecuta el siguiente comando para establecer el espacio de tablas undo como espacio de tablas predeterminado en los grupos de parámetros:
UNDO_TABLESPACE = example-new-tablespaceNota: Como UNDO_TABLESPACE es un parámetro dinámico, no se produce tiempo de inactividad al modificarlo. Sin embargo, se recomienda reiniciar la instancia de base de datos después de modificar un parámetro. Para obtener más información, consulta Managing undo (Administración de Undo) en el sitio web de Oracle.
-
Ejecuta la siguiente consulta para comprobar que el nuevo espacio de tablas undo es el espacio de tablas predeterminado:
SHOW PARAMETER UNDO_TABLESPACE; -
Ejecuta el siguiente comando para eliminar el antiguo espacio de tablas undo:
DROP TABLESPACE example-tablespace INCLUDING CONTENTS AND DATAFILES;
Información relacionada
- Idioma
- Español
Vídeos relacionados


Contenido relevante
- preguntada hace 25 días
- preguntada hace 7 meses
- preguntada hace 7 meses
- preguntada hace 2 meses