Pourquoi mon instance de base de données Amazon RDS for Oracle utilise-t-elle plus d’espace de stockage que prévu ?
J’ai une instance de base de données Amazon Relational Database Service (Amazon RDS) for Oracle qui utilise plus d’espace que prévu.
Brève description
Différents composants peuvent utiliser le stockage sous-jacent pour les instances Amazon RDS for Oracle. Ces composants incluent les tablespaces, les journaux d’archivage, les fichiers journaux, les fichiers de journaux redo en ligne et les fichiers de pompe à données.
Pour gérer la croissance du stockage dans votre instance, identifiez la quantité d’espace de stockage utilisée par vos composants :
1. Déterminez la quantité d’espace allouée aux données dans tous les tablespaces, y compris les tablespaces temporaires.
2. Vérifiez l’espace alloué aux journaux d’archivage ou aux fichiers de trace.
3. Vérifiez l’allocation d’espace pour le répertoire des pompes à données.
Remarque : L’espace de stockage alloué à une instance RDS représente le volume de données. Lorsque vous créez une instance, Amazon RDS mappe le stockage alloué au volume de données. Ce processus utilise également un faible pourcentage d’espace disque brut pour créer le système de fichiers au-dessus du volume de stockage physique.
Résolution
Trouver la quantité d’espace alloué aux données dans les tablespaces
Pour déterminer la répartition de l’espace alloué aux différents composants de la base de données Oracle, utilisez la requête suivante :
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);
Par défaut, les instances de base de données Amazon RDS for Oracle activent l’extension automatique pour tous les tablespaces. Cela inclut les tablespaces de données, les tablespaces UNDO et les tablespaces temporaires. Cela signifie que chaque tablespace s’agrandit pour accueillir davantage de données. Cette fonctionnalité est maintenue jusqu’à ce que vous n’ayez plus besoin d’espace de stockage supplémentaire ou que vous utilisiez tout l’espace de stockage alloué.
Redimensionner les tablespaces
Tablespace de données et tablespaces UNDO
Pour redimensionner les tablespaces de données et UNDO, consultez Comment redimensionner le tablespace de mon instance de base de données Amazon RDS for Oracle ?
Tablespace temporaire
1. Pour afficher des informations sur l’utilisation du tablespace temporaire, exécutez la requête suivante sur la vue DBA_TEMP_FREE_SPACE :
SQL> SELECT * FROM dba_temp_free_space;
2. Pour redimensionner le tablespace temporaire (par exemple, à 10 Go), exécutez la requête suivante en fonction du résultat de la requête d’utilisation du tablespace :
SQL> ALTER TABLESPACE temp RESIZE 10g;
Si le tablespace alloué s’étend au-delà du seuil de 10 Go, cette commande peut échouer.
3. Si la commande échoue, réduisez l’espace sur le tablespace temporaire :
SQL> ALTER TABLESPACE temp SHRINK SPACE KEEP 10g;
4. Vérifiez les sessions de longue durée qui effectuent un tri actif sur le disque et auxquelles des segments temporaires sont alloués. Pour ce faire, exécutez la requête suivante :
SQL> SELECT * FROM v$sort_usage;
5. Si la logique de l’application et les activités vous permettent de mettre fin à la session, mettez-y fin. Ensuite, redimensionnez de nouveau le tablespace temporaire, comme indiqué à l’étape 2.
6. Si vous ne pouvez pas mettre fin à vos sessions, créez un tablespace temporaire. Ensuite, définissez le nouveau tablespace comme paramètre par défaut et supprimez l’ancien tablespace temporaire :
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;
Vérifier l’espace alloué aux journaux d’archivage ou aux fichiers de trace
1. Vérifiez la conservation actuelle du journal d’archivage :
SQL> SELECT value FROM rdsadmin.rds_configuration WHERE name ='archivelog retention hours';
Dans les instances Amazon RDS for Oracle, par défaut, la conservation des journaux d’archivage est définie sur 0. Cela signifie qu’une fois les journaux d’archivage chargés sur Amazon S3, Amazon RDS les supprime automatiquement de l’hôte sous-jacent. Si vous devez utiliser des journaux d’archivage avec des produits tels qu’Oracle LogMiner ou GoldenGate, augmentez la conservation des journaux d’archivage.
2. Calculez l’espace utilisé par les journaux d’archivage sur l’hôte sous-jacent. Tout d’abord, créez un répertoire archivelog :
SQL> EXEC rdsadmin.rdsadmin_master_util.create_archivelog_dir;
Identifiez ensuite l’utilisation exacte d’archivelog sur une instance RDS :
SQL> SELECT sum(FILESIZE)/1024/1024/1024 archivelog_usage_GiB FROM TABLE(rdsadmin.rds_file_util.listdir(p_directory => 'ARCHIVELOG_DIR'));
3. Si l’espace alloué aux journaux d’archivage est plus important que prévu, mettez à jour la valeur de la politique de conservation. Autorisez ensuite Amazon RDS Automation à effacer les anciens fichiers journaux d’archivage. Ce qui suit est un exemple de configuration de l’instance RDS for Oracle permettant de conserver les journaux d’archivage pendant 24 heures :
begin rdsadmin.rdsadmin_util.set_configuration(name => 'archivelog retention hours', value => '24'); end; / commit;
Pour plus d’informations sur la liste et la purge des fichiers de trace, consultez la section Purger des fichiers de trace.
Vérifier l’allocation d’espace pour le répertoire des pompes à données
1. Si l’espace alloué sur le répertoire de la pompe à données est plus important que prévu, recherchez les fichiers .dmp qui peuvent être supprimés :
SQL> SELECT * FROM TABLE(RDSADMIN.RDS_FILE_UTIL.LISTDIR('DATA_PUMP_DIR')) ORDER by mtime;
2. Si cette requête trouve des fichiers .dmp, supprimez-les en exécutant celle-ci. Remplacez le nom du fichier par le nom des fichiers .dmp :
SQL> EXEC utl_file.fremove('DATA_PUMP_DIR','[file name]');
Informations connexes
Utilisation du stockage pour les instances de base de données Amazon RDS
Surveillance des métriques dans une instance Amazon RDS
L’instance de base de données Amazon RDS manque d’espace de stockage
Vidéos associées
Contenus pertinents
- demandé il y a 2 moislg...
- demandé il y a 8 moislg...
- demandé il y a 3 moislg...
- demandé il y a un anlg...
- AWS OFFICIELA mis à jour il y a 2 ans
- AWS OFFICIELA mis à jour il y a 3 ans
- AWS OFFICIELA mis à jour il y a 2 ans
- AWS OFFICIELA mis à jour il y a 2 ans