Comment puis-je éviter les erreurs « ORA-01653 : impossible d’étendre la table SYS.AUD$ ou FGA_LOG$ dans l'espace table SYSTEM » quand j’utilise Amazon RDS for Oracle ?

Date de la dernière mise à jour : 24/06/2020

J'ai activé la fonctionnalité d'audit Oracle sur ma base de données Amazon Relational Database Service (Amazon RDS) pour consigner les événements sur les tables d’audit de la base de données. Mais l'espace table SYSTEM croît davantage que prévu, ou j'ai reçu le message d'erreur suivant :

« ORA-01653 : impossible d’étendre la table... » pour SYS.AUD$ ou FGA_LOG$ dans l'espace table SYSTEM. »

Comment résoudre cette erreur ?

Brève description

L'erreur ORA-01653 est provoquée par un manque d'espace libre sur la table SYS.AUD dans l'espace table SYSTEM . C'est là que les tables d'audit Oracle AUD $ et FGA_LOG $ sont définies, par défaut. L'erreur se produit lorsque la table tente de s’étendre elle-même pour accueillir des données supplémentaires, mais ne peut pas se développer. Pour plus d'informations sur les actions d’audit qui peuvent entraîner le remplissage complet de l'espace table, consultez la documentation Oracle relative à Configuration et administration de l’audit.

Remarque : AUDIT_SYS_OPERATIONS est activé par défaut sur Amazon RDS for Oracle.

Solution

Pour résoudre ce problème, envisagez une ou plusieurs des solutions suivantes :

Migrer les tables d’AUDIT vers un espace table dédié

Les tables d’audit croissent indéfiniment jusqu'à ce qu'une routine de purge manuelle ou automatique à l'aide des instructions DELETE efface les enregistrements. Étant donné que l'espace libre est récupéré uniquement pour le segment concerné, la purge des tables dans l'espace table SYSTEM n’entraîne aucune modification fonctionnelle de la taille des tables AUD$ et FGA_LOG$. Cela peut entraîner des problèmes de fragmentation.

La migration des tables d’AUDIT à partir de l'espace table SYSTEM vers un autre espace table vous permet de mieux contrôler la taille de vos tables d’audit de l’instance de base de données RDS. Vous pouvez migrer les tables vous-même ou, si vous exécutez Oracle11g R2 sur votre instance RDS, vous pouvez utiliser le package DBMS_AUDIT_MGMT.

Pour migrer la table manuellement, procédez comme suit :

1.    Créez un nouvel espace table en exécutant une commande similaire à celle qui suit :

CREATE TABLESPACE <name>;

Remarque : la création d'un espace table avec gestion de l’espace du segment AUTOEXTENSIBLE (activée par défaut pour les nouveaux espaces table) vous permet de redimensionner facilement la table ultérieurement.

2.    Migrez votre table AUD$ vers le nouvel espace table en exécutant des commandes similaires à ce qui suit :

BEGIN
SYS.DBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_LOCATION(audit_trail_type => SYS.DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD,
audit_trail_location_value => '<name>');
END;
/ 

3.    Migrez votre table FGA_LOG$ vers le nouvel espace table en exécutant des commandes similaires à ce qui suit :

BEGIN
SYS.DBMS_AUDIT_MGMT.set_audit_trail_location(audit_trail_type => SYS.DBMS_AUDIT_MGMT.AUDIT_TRAIL_FGA_STD, audit_trail_location_value => '<name>');
END;
/

Remarque : en fonction de la taille de votre table, cette opération peut prendre du temps. Si vous avez des tables volumineuses ou fréquemment consultées, vous pouvez également rencontrer des erreurs de blocage. Pour résoudre les erreurs de blocage, définissez temporairement DB_AUDIT_TRAIL sur NONE (AUCUN), redémarrez la base de données et essayez à nouveau. Vous pouvez rétablir DB_AUDIT_TRAIL une fois le processus terminé.

Suivre les meilleures pratiques pour les tables d'audit

Pour maintenir des tables d'audit raisonnables, diminuez l'espace utilisé par les tables d'audit. De plus, minimisez l’occurrence de l'erreur ORA-01653 par l'audit de l'ensemble minimal d'actions pertinentes. Enfin, archivez et purgez fréquemment les enregistrements de piste d'audit. Pour plus d'informations, consultez Directives pour l’audit de l’activité des bases de données typiques dans la documentation Base de données Oracle.

Activer AUTOEXTEND pour l'espace table SYSTEM

Pour les instances de base de données RDS qui exécutent Oracle, AUTOEXTEND pour l'espace table SYSTEM est défini sur ON (ACTIVÉ) par défaut. Si vous déactivez AUTOEXTENDmanuellement, la capacité de votre base de données pour provisionner un espace supplémentaire pour l'espace table SYSTEM peut être affectée. Vous pouvez activer ce paramètre pour l'espace table SYSTEM en exécutant la commande ALTER TABLESPACE (MODIFIER l'espace table) :

ALTER TABLESPACE SYSTEM AUTOEXTEND ON;

Pour plus d'informations, consultez Création et dimensionnement des espaces table.

Définir MAXSIZE pour l'espace table SYSTEM sur une valeur supérieure

Si les paramètres de l’espace table SYSTEM pour MAXBYTES or MAXBLOCKS sont définies sur des valeurs trop faibles, définissez MAXSIZE pour l’espace table SYSTEM sur une plus grande valeur.

Vous pouvez également supprimer des limites concernant la taille maximale de l’espace table SYSTEM en exécutant une commande similaire à celle qui suit :

ALTER TABLESPACE SYSTEM AUTOEXTEND ON MAXSIZE UNLIMITED;