Knowledge Center Monthly Newsletter - March 2025
Stay up to date with the latest from the Knowledge Center. See all new and updated Knowledge Center articles published in the last month and re:Post’s top contributors.
¿Por qué mi instancia de base de datos de Amazon RDS para Oracle utiliza más almacenamiento del esperado?
Tengo una instancia de base de datos de Amazon Relational Database Service (Amazon RDS) para Oracle que utiliza más espacio del que esperaba.
Descripción breve
Varios componentes pueden utilizar el almacenamiento subyacente de las instancias de Amazon RDS para Oracle. Estos componentes incluyen espacios de tablas, registros de archivos, archivos de registro, archivos de registro de rehacer en línea y archivos de volcado de datos.
Para administrar el crecimiento del almacenamiento en su instancia, identifique cuánto espacio de almacenamiento utilizan sus componentes:
1. Encuentre la cantidad de espacio que se asigna a los datos en todos los espacios de tablas, incluidos los espacios de tablas temporales.
2. Compruebe la asignación de espacio para los registros de archivos o los archivos de seguimiento.
3. Compruebe la asignación de espacio para el directorio de volcado de datos.
Nota: El espacio de almacenamiento asignado a una instancia de RDS representa el volumen de datos. Al crear una instancia, Amazon RDS asigna el almacenamiento asignado al volumen de datos. Este proceso también utiliza un pequeño porcentaje de espacio en disco sin procesar para crear el sistema de archivos sobre el volumen de almacenamiento físico.
Resolución
Encuentre la cantidad de espacio asignado a los datos en los espacios de tablas
Para determinar la distribución del espacio que se asigna a los diferentes componentes de la base de datos Oracle, utilice la siguiente consulta:
set pages 200 select '===========================================================' || chr(10) || 'Total Database Physical Size = ' || round(redolog_size_gib+dbfiles_size_gib+tempfiles_size_gib+ctlfiles_size_gib,2) || ' GiB' || chr(10) || '===========================================================' || chr(10) || ' Redo Logs Size : ' || round(redolog_size_gib,3) || ' GiB' || chr(10) || ' Data Files Size : ' || round(dbfiles_size_gib,3) || ' GiB' || chr(10) || ' Temp Files Size : ' || round(tempfiles_size_gib,3) || ' GiB' || chr(10) || ' Archive Log Size - Approx only : ' || round(archlog_size_gib,3) || ' GiB' || chr(10) || ' Control Files Size : ' || round(ctlfiles_size_gib,3) || ' GiB' || chr(10) || '===========================================================' || chr(10) || ' Used Database Size : ' || used_db_size_gib || ' GiB' || chr(10) || ' Free Database Size : ' || free_db_size_gib || ' GiB' ||chr(10) || ' Data Pump Directory Size : ' || dpump_db_size_gib || ' GiB' || chr(10) || ' BDUMP Directory Size : ' || bdump_db_size_gib || ' GiB' || chr(10) || ' ADUMP Directory Size : ' || adump_db_size_gib || ' GiB' || chr(10) || '===========================================================' || chr(10) || 'Total Size (including Dump and Log Files) = ' || round(round(redolog_size_gib,2) +round(dbfiles_size_gib,2)+round(tempfiles_size_gib,2)+round(ctlfiles_size_gib,2) +round(adump_db_size_gib,2) +round(dpump_db_size_gib,2)+round(bdump_db_size_gib,2),2) || ' GiB' || chr(10) || '===========================================================' as summary FROM (SELECT sys_context('USERENV', 'DB_NAME') db_name, (SELECT SUM(bytes) / 1024 / 1024 / 1024 redo_size FROM v$log) redolog_size_gib, (SELECT SUM(bytes) / 1024 / 1024 / 1024 data_size FROM dba_data_files) dbfiles_size_gib, (SELECT nvl(SUM(bytes), 0) / 1024 / 1024 / 1024 temp_size FROM dba_temp_files) tempfiles_size_gib, (SELECT SUM(blocks * block_size / 1024 / 1024 / 1024) size_gib FROM v$archived_log WHERE first_time >= SYSDATE - ( (SELECT value FROM rdsadmin.rds_configuration WHERE name = 'archivelog retention hours') / 24 )) archlog_size_gib, (SELECT SUM(block_size * file_size_blks) / 1024 / 1024 / 1024 controlfile_size FROM v$controlfile) ctlfiles_size_gib, round(SUM(used.bytes) / 1024 / 1024 / 1024, 3) db_size_gib, round(SUM(used.bytes) / 1024 / 1024 / 1024, 3) - round( free.f / 1024 / 1024 / 1024) used_db_size_gib, round(free.f / 1024 / 1024 / 1024, 3) free_db_size_gib, (SELECT round(SUM(filesize) / 1024 / 1024 / 1024, 3) FROM TABLE(rdsadmin.rds_file_util.listdir('BDUMP'))) bdump_db_size_gib, (SELECT round(SUM(filesize) / 1024 / 1024 / 1024, 3) FROM TABLE(rdsadmin.rds_file_util.listdir('ADUMP'))) adump_db_size_gib, (SELECT round(SUM(filesize) / 1024 / 1024 / 1024, 3) FROM TABLE(rdsadmin.rds_file_util.listdir('DATA_PUMP_DIR'))) dpump_db_size_gib FROM (SELECT bytes FROM v$datafile UNION ALL SELECT bytes FROM v$tempfile) used, (SELECT SUM(bytes) AS f FROM dba_free_space) free GROUP BY free.f);
De forma predeterminada, las instancias de base de datos de Amazon RDS para Oracle activan la ampliación automática de todos los espacios de tablas. Esto incluye los espacios de tabla de datos, los espacios de tablas de DESHACER y los espacios de tablas temporales. Esto significa que cada espacio de tablas crece para dar cabida a más datos. Esta característica continúa hasta que ya no se necesite más almacenamiento o se utilice todo el espacio de almacenamiento asignado.
Cambie el tamaño de los espacios de tablas
Espacio de tablas de datos y espacio de tablas de DESHACER
Para cambiar el tamaño de los espacios de tabla de datos y de DESHACER, consulte ¿Cómo puedo cambiar el tamaño del espacio de tablas de mi instancia de base de datos de Amazon RDS para Oracle?
Espacio de tablas temporal
1. Para ver información sobre el uso del espacio de tablas temporal, ejecute la siguiente consulta en la vista DBA_TEMP_FREE_SPACE:
SQL> SELECT * FROM dba_temp_free_space;
2. Para cambiar el tamaño del espacio de tablas temporal (por ejemplo, a 10 GB), ejecute la siguiente consulta en base al resultado de la consulta del uso del espacio de tablas:
SQL> ALTER TABLESPACE temp RESIZE 10g;
Si el espacio de tablas asignado supera el umbral de 10 GB, es posible que este comando falle.
3. Si el comando falla, reduzca el espacio de tablas temporal:
SQL> ALTER TABLESPACE temp SHRINK SPACE KEEP 10g;
4. Compruebe si hay sesiones de larga duración que realicen una clasificación activa en el disco y tengan asignados segmentos temporales. Para ello, ejecute la siguiente consulta:
SQL> SELECT * FROM v$sort_usage;
5. Si la lógica y el negocio de la aplicación le permiten finalizar la sesión, entonces finalice la sesión. A continuación, vuelva a cambiar el tamaño del espacio de tablas temporal, como se muestra en el paso 2.
6. Si no puede finalizar las sesiones, cree un nuevo espacio de tablas temporal. A continuación, establezca el nuevo espacio de tablas como predeterminado y elimine el antiguo espacio de tablas temporal:
SQL> SELECT property_name,property_value FROM DATABASE_PROPERTIES where PROPERTY_NAME='DEFAULT_TEMP_TABLESPACE'; SQL> create temporary tablespace temp2; SQL> exec rdsadmin.rdsadmin_util.alter_default_temp_tablespace(tablespace_name => 'temp2'); <wait for a few minutes and verify if the default temporary tablespace for all users have been updated> SQL> set pages 2000 SQL> column username for a30 SQL> select username, TEMPORARY_TABLESPACE from dba_users; SQL> drop tablespace temp including contents and datafiles;
Compruebe la asignación de espacio para los registros de archivos o los archivos de seguimiento
1. Compruebe la retención actual del registro de archivos:
SQL> SELECT value FROM rdsadmin.rds_configuration WHERE name ='archivelog retention hours';
En las instancias de Amazon RDS para Oracle, la retención de registros de archivos se establece en 0 de forma predeterminada. Esto significa que, después de cargar los registros de archivos a Amazon S3, Amazon RDS los elimina automáticamente del host subyacente. Si tiene que utilizar registros de archivos con productos como Oracle LogMiner o GoldenGate, aumente la retención de los registros de archivos.
2. Calcule el espacio que utilizan los registros de archivos en el host subyacente. Primero, cree un directorio de registros de archivos:
SQL> EXEC rdsadmin.rdsadmin_master_util.create_archivelog_dir;
A continuación, identifique el uso exacto del registro de archivos en una instancia de RDS:
SQL> SELECT sum(FILESIZE)/1024/1024/1024 archivelog_usage_GiB FROM TABLE(rdsadmin.rds_file_util.listdir(p_directory => 'ARCHIVELOG_DIR'));
3. Si el espacio asignado para los registros de archivos es superior al esperado, actualice el valor de la política de retención. A continuación, permita que la automatización de Amazon RDS borre los archivos de registro de archivos más antiguos. El siguiente ejemplo configura la instancia de RDS para Oracle para retener durante 24 horas los registros de archivos:
begin rdsadmin.rdsadmin_util.set_configuration(name => 'archivelog retention hours', value => '24'); end; / commit;
Para obtener más información sobre cómo enumerar y depurar archivos de seguimiento, consulte Depuración de archivos de seguimiento.
Compruebe la asignación de espacio para el directorio de volcado de datos
1. Si el espacio asignado al directorio de volcado de datos es superior al esperado, busque archivos .dmp que se puedan eliminar:
SQL> SELECT * FROM TABLE(RDSADMIN.RDS_FILE_UTIL.LISTDIR('DATA_PUMP_DIR')) ORDER by mtime;
2. Si esta consulta encuentra archivos .dmp, elimínelos con la siguiente consulta. Sustituya el nombre del archivo por el nombre de los archivos .dmp:
SQL> EXEC utl_file.fremove('DATA_PUMP_DIR','[file name]');
Información relacionada
Trabajo con almacenamiento para instancias de base de datos de Amazon RDS
Supervisión de métricas en una instancia de Amazon RDS
La instancia de base de datos de Amazon RDS se está quedando sin almacenamiento
Vídeos relacionados


Contenido relevante
- preguntada hace 3 meseslg...
- preguntada hace 2 meseslg...
- preguntada hace 21 díaslg...
- Respuesta aceptadapreguntada hace 18 díaslg...
- preguntada hace un meslg...
- OFICIAL DE AWSActualizada hace 3 meses
- OFICIAL DE AWSActualizada hace 3 meses
- OFICIAL DE AWSActualizada hace 2 años