Skip to content

Comment puis-je gérer le stockage de mon instance de base de données Amazon RDS for Oracle ?

Lecture de 8 minute(s)
0

Je souhaite utiliser les bonnes pratiques pour gérer le stockage de mon instance de base de données Amazon Relational Database Service (Amazon RDS) for Oracle.

Brève description

Vous pouvez prendre un certain nombre de mesures pour éviter un espace de stockage plein sur votre instance de base de données Amazon RDS for Oracle. Lorsque l'espace de stockage de l'instance de base de données est plein, la connexion à votre instance est bloquée et la croissance de la base de données s'arrête. Tant que vous n'augmentez pas l'espace de stockage gratuit, toute extension permettant d'obtenir plus d'espace de stockage gratuit échoue avec une erreur similaire à l’erreur suivante :

« ORA-27061: waiting for async I/Os failed
Erreur : Linux-x86_64 Error: 28: No space left on device »

Résolution

Surveiller la métrique FreeStorageSpace

Une baisse rapide de FreeStorageSpace indique que l’utilisation de votre base de données a augmenté et que l’espace de stockage risque d’être plein. Si l’espace FreeStorageSpace diminue et que votre instance de base de données utilise plus de 90 % du stockage alloué, la base de données rencontre des événements LOW_STORAGE. Si vous avez activé l’autoscaling, votre instance ajoute de l'espace de stockage.

Créez des alarmes Amazon CloudWatch pour surveiller la métrique FreeStorageSpace et vous avertir lorsque l'espace de stockage atteint sa valeur seuil.

Vérifier tous les espaces de table étendus automatiquement

Le type d'espace de table par défaut pour les instances de bases de données RDS for Oracle est bigfile avec AUTOEXTEND activé. La taille maximale des espaces de table de fichiers volumineux est de 16 TiB. L'espace disque logique augmente jusqu'au quota maximum pour l'espace de table ou jusqu'au stockage alloué à votre instance de base de données. Si votre espace de stockage alloué est plein, votre instance passe en mode stockage plein et vos espaces de table ne peuvent pas s'étendre. Pour plus d'informations, consultez la section Espace de table étendu sur le site Web d'Oracle.

Il est recommandé de planifier l'extension de l’espace de table en fonction des besoins de votre application. Pour éviter les problèmes de stockage plein avant un chargement en masse, redimensionnez les espaces de table ou allouez plus d'espace. Si vous mettez votre espace de stockage à l’échelle, les performances de l'instance de base de données ne sont généralement pas affectées et aucune panne ne se produit. Une fois que vous avez modifié la taille de stockage, votre instance de base de données est en état d'optimisation du stockage.

Remarque : Avant de modifier votre instance de base de données, consultez la section Utilisation du stockage pour les instances de bases de données Amazon RDS.

Vérifier les quotas de taille de fichier Oracle for Amazon RDS

La taille maximale d'un seul fichier dans vos instances de base de données RDS pour Oracle est de 16 TiB. Si vous redimensionnez un fichier de données dans un espace de table de fichiers volumineux au-delà de ce quota, une erreur similaire à l’erreur suivante s’affiche :

« ORA-01237: cannot extend datafile 6
ORA-01110: data file 6: '/rdsdbdata/db/mydir/datafile/myfile.dbf'ORA-27059:
could not reduce file sizeLinux-x86_64 Error: 27:
File too large Informations supplémentaires : 2 »

Résoudre l'erreur « Storage quota exceeded »

Si le stockage alloué au niveau de votre compte AWS atteint son quota et que vous essayez de créer une nouvelle instance de base de données RDS, une erreur similaire à l’erreur suivante s’affiche :

« Storage quota exceeded by  <x>; requested size : <x> »

Pour résoudre cette erreur, demandez une augmentation de quota ou supprimez les sauvegardes non utilisées pour libérer immédiatement de l'espace sur votre compte.

Gérer les fichiers de trace volumineux qui occupent le répertoire BDUMP

De temps en temps, des fichiers de trace volumineux sont créés dans le répertoire BDUMP. Ces fichiers occupent de l'espace de stockage et sont effacés conformément à la politique de rétention. Ils peuvent également contribuer à des occurrences de stockage plein sur vos instances de base de données.

Les fichiers de trace peuvent s'accumuler et utiliser de l'espace disque. Par défaut, Amazon RDS efface les fichiers de trace et les fichiers journaux datant de plus de 7 jours. Pour définir la période de rétention du fichier de trace, utilisez show_configuration. Pour afficher les résultats de configuration, exécutez la commande SET SERVEROUTPUT.

Pour plus d'informations sur la gestion de vos fichiers de trace, consultez la section Fichiers journaux de la base de données Oracle.

Pour trier les fichiers du répertoire BDUMP par taille, exécutez une commande similaire à la commande suivante :

select FILENAME, FILESIZE/1024/1024/1024"GB",MTIME from TABLE  
 (rdsadmin.rds_file_util.listdir(p_directory => 'BDUMP')) order by 3 desc

Après avoir identifié les fichiers qui ne sont pas utilisés, utilisez le package fremove dbms pour supprimer les fichiers volumineux dans le cadre de la rétention des fichiers de trace :

exec UTL_FILE.FREMOVE ('BDUMP',' <TRACEFILENAME');

L'exemple suivant montre la période de rétention actuelle des fichiers de trace, puis définit une nouvelle période de rétention des fichiers de trace :

# Show the current tracefile retentionSQL> EXEC rdsadmin.rdsadmin_util.show_configuration;  
NAME:tracefile retentionVALUE:10080  
DESCRIPTION:tracefile expiration specifies the duration in minutes before tracefiles in bdump are automatically deleted.  

# Set the tracefile retention to 24 hours:SQL> EXEC rdsadmin.rdsadmin_util.set_configuration('tracefile retention',1440);SQL> commit;  

#show the new tracefile retentionSQL> EXEC rdsadmin.rdsadmin_util.show_configuration;  
NAME:tracefile retentionVALUE:1440  
DESCRIPTION:tracefile expiration specifies the duration in minutes before tracefiles in bdump are automatically deleted.

Gérer un répertoire Data Pump volumineux qui utilise le répertoire DATA_PUMP_DIR

Si vous utilisez Oracle Data Pump pour déplacer vos données, vous risquez de copier des fichiers dump volumineux, ce qui réduit votre espace de stockage disponible. Pour résoudre ce problème, intégrez Amazon RDS for Oracle à Amazon Elastic File System (Amazon EFS). Lorsque vous utilisez cette configuration, vous n'avez pas besoin d'utiliser DATA_PUMP_DIR pour actualiser la base de données.

Vérifier la conservation de vos journaux d'archivage

Amazon RDS sauvegarde les journaux d'archivage sur la mémoire interne en fonction de la conservation des sauvegardes à des fins PITR. Selon les paramètres de conservation des journaux d'archivage pour RDS for Oracle, les journaux d'archivage stockés localement sur le stockage RDS contribuent à l'utilisation du stockage alloué.

Pour conserver les journaux de rétablissement archivés, exécutez rdsadmin.rdsadmon_util.set_configuration avec les paramètres suivants :

begin  
    rdsadmin.rdsadmin_util.set_configuration(  
        name  => 'archivelog retention hours',  
        value => '24');  
end;  
/  
commit;
NAME:archivelog retention hours  
VALUE:24  
DESCRIPTION:ArchiveLog expiration specifies the duration   
in hours before archive/redo log files are automatically deleted.

Pour vérifier la quantité d'espace utilisée par votre instance de base de données pendant une période donnée, exécutez la requête suivante. Remplacez X par le nombre d'heures que vous souhaitez interroger :

SELECT SUM(BLOCKS * BLOCK_SIZE) bytes   
  FROM V$ARCHIVED_LOG  
 WHERE FIRST_TIME >= SYSDATE-(X/24) AND DEST_ID=1;

Pour afficher les journaux d'archivage conservés, exécutez la commande suivante pour créer un objet de répertoire ARCHIVELOG_DIR :

EXEC rdsadmin.rdsadmin_master_util.create_archivelog_dir;
SELECT * FROM TABLE(rdsadmin.rds_file_util.listdir(p_directory => 'ARCHIVELOG_DIR'));

Vérifier la présence d'objets fragmentés dans votre base de données

La fragmentation ralentit la base de données et utilise une quantité inutile d'espace de stockage. Pour identifier les objets fragmentés qui utilisent le plus d'espace, exécutez une commande similaire à la commande suivante :

select  owner,table_name,round((blocks8),2)/1024 "size (mb)" ,  
round((num_rowsavg_row_len/1024/1024),2) "actual_data (mb)",  
(round((blocks8),2) - round((num_rowsavg_row_len/1024/1024),2)) "wasted_space (mb)"  
from  dba_tables  
where (round((blocks8),2) > round((num_rowsavg_row_len/1024/1024),2)) and owner='&schema_name'  
order by 4 desc;

Pour supprimer la fragmentation, vous pouvez utiliser l'exportation et l'importation, recréer des tables ou déplacer des tables vers un nouvel espace disque logique.

Remarque : Les métriques de stockage gratuit ne sont affectées que lorsque vous supprimez l’espace de table fragmenté après avoir vidé et déplacé des objets fragmentés vers un nouvel espace de table.

Utiliser AWR pour analyser les tendances de croissance de votre instance de base de données

Avec l'édition Oracle Enterprise, vous pouvez utiliser AWR Explorer pour interroger vos informations historiques et analyser les tendances de croissance de votre base de données. Pour vérifier la croissance de votre schéma de base de données par type d'objet pendant un certain nombre de jours, exécutez la commande suivante :

title "Total Disk Used by Object Type"  
select c.segment_type, sum(space_used_delta) / 1024 / 1024 "Space used (M)", sum(c.bytes) / 1024 / 1024 "Total Space (M)",  
round(sum(space_used_delta) / sum(c.bytes) * 100, 2) || '%' "Percent of Total Disk Usage"  
from  
dba_hist_snapshot sn,  
dba_hist_seg_stat a,  
dba_objects b,  
dba_segments c  
where end_interval_time > trunc(sysdate) - &days_back  
and sn.snap_id = a.snap_id  
and b.object_id = a.obj#  
and b.owner = c.owner  
and b.object_name = c.segment_name  
and space_used_delta > 0  
and c.owner = '&schema_name'  
group by rollup(segment_type);

Implémenter d'autres méthodes

Implémentez les méthodes suivantes pour éviter que le stockage ne soit plein sur votre instance :

Articles connexes

Comment puis-je réduire la taille de stockage totale provisionnée de mon instance de base de données Amazon RDS ?

Pourquoi mon instance de base de données Amazon RDS for Oracle utilise-t-elle plus d'espace de stockage que prévu ?