J'ai mis en place une instance de base de données Oracle Amazon Relational Database Service (Amazon RDS), mais elle continue à être plus grande que ce à quoi je m'attendais. Pourquoi, et comment puis-je résoudre le problème ?

L'espace de table temporaire peut augmenter considérablement pour prendre en charge les opérations nécessaires aux fonctions de base de données. 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 espace de table ne cesse de croître pour accueillir davantage de données, jusqu'à ce qu'il n'en soit plus besoin ou que le stockage alloué soit utilisé.

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

Trouver la quantité d'espace allouée aux données dans les espaces table

1.    Déterminez la quantité d'espace allouée aux données par rapport à la quantité d'espace allouée aux fichiers temporaires :

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; 

2.    Déterminez la quantité d'espace libre alloué à vos bases de données :

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

3.    Déterminez la quantité d'espace allouée pour les journaux de rétablissement en ligne :

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

4.    Déterminez la quantité d'espace allouée pour les fichiers de contrôle :

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

5.    Déterminez la quantité d'espace allouée aux répertoires ADUMP des fichiers d'audit et BDUMP des fichiers de trace et log :

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'));

Réduisez tous les tablespaces consommant plus d'espace de stockage que nécessaire

1.    Redimensionnez les fichiers à une valeur plus raisonnable s'ils utilisent plus de stockage que prévu. Par exemple, si le tablespace temp consomme 100 Go d'espace de stockage, exécutez la commande suivante pour réduire sa taille à 10 Go :

ALTER TABLESPACE temp RESIZE 10g;

Remarque : Cette commande échoue si l'espace table a alloué des extensions au-delà du seuil de 10 Go. Réessayez la commande et spécifiez une valeur incrémentalement plus grande pour le paramètre Redimensionner. Ou, essayez d'exécuter la commande suivante :

ALTER TABLESPACE temp SHRINK SPACE KEEP 10g;

2.    Si le redimensionnement à des valeurs incrémentalement plus grandes n'est pas une option, supprimez les sessions avec les 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, vous pouvez 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.

4.    Pour un tablespace non temporaire, déplacez 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.    Pour obtenir la taille des fichiers journaux d'archivage sur l'instance, exécutez la commande suivante :

select nvl(sum(BLOCKS * BLOCK_SIZE),0) bytes from V$ARCHIVED_LOG
  where FIRST_TIME >= SYSDATE-(replace_archivelog_retention_hours/24) and DEST_ID=1; 

7.    Vérifiez l'existence de fichiers .dmp inutiles qui peuvent être supprimés pour libérer de l'espace. 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 cette requête trouve des fichiers .dmp, vous pouvez les supprimer avec la requête suivante en spécifiant le nom de fichier approprié :

EXEC utl_file.fremove('DATA_PUMP_DIR','[file name]');

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.

Date de publication : 30/10/2015

Date de mise à jour : 04/05/2018