L'espace de table temporaire peut augmenter de manière significative, notamment pour inclure des requêtes, des opérations d'index ou de tri. Lors de la création de bases de données Oracle RDS, l'option auto extend est activée pour l'ensemble des tablespaces. Cela signifie que chaque tablespace continue à croître jusqu'à l'obtention de l'espace nécessaire ou jusqu'à ce que la totalité de l'espace de stockage alloué soit utilisée.

Les bases de données Oracle utilisent l'espace disque pour différents types de fichiers : fichiers de contrôle, fichiers redo log en ligne, fichiers redo log archivés, fichiers de données et fichiers temporaires (également appelés fichiers temp). La majeure partie de l'espace disque est généralement utilisée par les fichiers de données et les fichiers temporaires.

Les instances DB Oracle RDS spécifient le stockage en termes de taille de fichier de données, ce qui peut ou non avoir un impact sur les données réellement stockées dans le fichier. Par exemple, vous pouvez parfaitement allouer un fichier de données de 200 Go contenant uniquement 100 Go de données (ou moins). En fait, la métrique « FreeStorageSpace » de CloudWatch du service RDS répertorie uniquement l'espace libre qui n'est pas déjà stocké dans un fichier de données. Les requêtes suivantes permettent de déterminer la quantité d'espace allouée à votre instance DB Oracle RDS :

Pour déterminer la quantité d'espace allouée aux données par rapport à celle allouée aux fichiers temporaires, exécutez les requêtes suivantes :

     SELECT TABLESPACE_NAME, SUM(BYTES)/1024/1024/1024 AS GBYTES FROM
     DBA_DATA_FILES GROUP BY TABLESPACE_NAME;
     SELECT TABLESPACE_NAME, SUM(BYTES)/1024/1024/1024 AS GBYTES FROM
     dba_temp_files GROUP BY TABLESPACE_NAME;

Lors de la suppression de données d'une base de données, la quantité d'espace libre allouée à la base de données augmente d'une quantité correspondante et, par conséquent, l'espace total alloué à la base de données demeure inchangé. Pour déterminer la quantité totale d'espace libre allouée à vos bases de données, exécutez la requête suivante :

     SELECT TABLESPACE_NAME, SUM(BYTES)/1024/1024/1024 AS GBYTES FROM
     DBA_FREE_SPACE GROUP BY TABLESPACE_NAME;

Pour déterminer la quantité d'espace allouée aux fichiers redo log en ligne, exécutez la requête suivante :

     SELECT SUM(bytes*members) bytes FROM v$log;

Pour déterminer la quantité d'espace allouée aux fichiers de contrôle, exécutez la requête suivante :

     SELECT SUM(block_size * file_size_blks) bytes FROM v$controlfile;

Pour déterminer la quantité d'espace allouée aux répertoires ADUMP des fichiers d'audit et BDUMP des fichiers de trace et log, exécutez les requêtes suivantes :

     SELECT * FROM DBA_DIRECTORIES;
     SELECT * FROM table(rdsadmin.rds_file_util.listdir('ADUMP'));
     SELECT * FROM table(rdsadmin.rds_file_util.listdir('BDUMP'));
     SELECT SUM(FILESIZE)/1024/1024 as total_mb FROM 
     table(rdsadmin.rds_file_util.listdir('ADUMP'));
     SELECT SUM(FILESIZE)/1024/1024 as total_mb FROM
     table(rdsadmin.rds_file_util.listdir('BDUMP'));

Pour résoudre ce problème, procédez comme suit :

  1. Réduisez tous les tablespaces consommant plus d'espace de stockage que nécessaire. Vous pouvez commencer par redimensionner un fichier afin de lui donner une valeur moindre s'il utilise beaucoup plus d'espace de stockage que prévu. Par exemple, si le tablespace temp consomme 100 Go d'espace de stockage, vous pouvez exécuter la commande suivante pour réduire sa taille à 10 Go :
         ALTER TABLESPACE temp RESIZE 10g;
    Remarque
    Cette commande échouera avec une erreur si le tablespace inclut des étendues allouées au-delà de la limite de 10 Go. Dans ce cas, réexécutez la commande en spécifiant une valeur graduellement plus élevée pour le paramètre de redimensionnement. Vous pouvez également exécuter la commande suivante :
         ALTER TABLESPACE temp SHRINK SPACE KEEP 10g;
  2. Si le redimensionnement à l'aide de valeurs progressivement plus importantes n'est pas une option envisageable, il est possible de mettre fin aux sessions ayant des segments temporaires actuellement alloués. Pour déterminer les sessions avec des segments temporaires alloués, exécutez la requête suivante :
         SELECT * FROM v$sort_usage;
  3. Si la fermeture des sessions n'est pas une option envisageable, il est possible de procéder d'une autre façon. Par exemple, créez un autre tablespace temp2 par défaut, supprimez le tablespace temp d'origine, recréez un nouveau tablespace temp par défaut avec les paramètres requis, puis supprimez le tablespace temp2. Pour plus d'informations sur cette procédure, consultez Création d'informations d'identification de sécurité temporaires.
  4. Pour un tablespace non temporaire, il peut s'avérer nécessaire de déplacer des segments afin de libérer de l'espace à la fin du fichier de données, de manière à réduire sa taille. Lors de la manipulation d'un tablespace alloué à des fichiers redo log en ligne, cette procédure peut s'avérer laborieuse et un certain temps peut s'écouler avant la libération automatique d'espace pour l'achèvement de la procédure de réduction du fichier de données.
  5. Pour afficher les paramètres actuels de conservation des journaux d'archivage et des fichiers de trace, exécutez les commandes suivantes :
         SET SERVEROUTPUT ON;
         EXEC rdsadmin.rdsadmin_util.show_configuration;
  6. Vérifiez l'existence de fichiers .dmp qui ne sont plus nécessaires et peuvent être supprimés. Pour vérifier si le répertoire data_pump_dir contient des fichiers .dmp qui n'ont pas été nettoyés après une importation, exécutez la requête suivante :
         SELECT * FROM TABLE(RDSADMIN.RDS_FILE_UTIL.LISTDIR('DATA_PUMP_DIR'))
         ORDER by mtime;
    Si la requête identifie des fichiers .dmp, vous pouvez les supprimer à l'aide de la requête suivante, en spécifiant le nom des fichiers :
         EXEC utl_file.fremove('DATA_PUMP_DIR','[nom fichier]');

Amazon RDS, stockage, réduire tablespace, FreeStorageSpace, espace de stockage excessif, volume de stockage Oracle


Cette page vous a-t-elle été utile ? Oui | Non

Retour au Centre de connaissances AWS Support

Vous avez besoin d'aide ? Consultez le site du Centre AWS Support.