Les répertoires de destination des fichiers d'audit pour une instance ASM peuvent croître pour contenir un très grand nombre de fichiers s'ils ne sont pas régulièrement mis à jour. Le fait d'avoir un très grand nombre de fichiers peut entraîner un manque d'espace disque libre ou d'inodes dans le système de fichiers, ou peut entraîner un fonctionnement très lent d'Oracle en raison des limites de mise à l'échelle du répertoire du système de fichiers, ce qui peut donner l'impression que l'instance ASM est suspendue. démarrage.
Cet article explique comment utiliser l'utilitaire Linux cron pour gérer le nombre de fichiers dans les répertoires de destination des fichiers d'audit. Ces étapes doivent être effectuées pour l'instance ASM sur chaque serveur de base de données. Ce document explique comment gérer les répertoires de destination des fichiers d'audit pour les instances ASM uniquement.
Étape 1 :Identifiez les répertoires d'audit ASM
Trois répertoires peuvent contenir des fichiers d'audit. Tous les trois doivent être gérés pour contrôler une croissance excessive.
Deux emplacements par défaut sont basés sur les paramètres de variable d'environnement au démarrage de l'instance ASM. Pour déterminer les emplacements par défaut de votre système, connectez-vous en tant que propriétaire du logiciel Grid Infrastructure (généralement oracle ou grid), configurez votre environnement de manière à pouvoir vous connecter à l'instance ASM, puis exécutez les commandes "echo" fournies ci-dessous. Dans cet exemple, les deux répertoires d'audit par défaut sont /u01/app/11.2.0/grid/rdbms/audit et /u01/app/oracle/admin/+ASM1/adump.
$ . /usr/local/bin/oraenv ORACLE_SID = [+ASM1] ? +ASM1 The Oracle base for ORACLE_HOME=/u01/app/11.2.0/grid is /u01/app/oracle
$ echo $ORACLE_HOME/rdbms/audit /u01/app/11.2.0/grid/rdbms/audit
$ echo $ORACLE_BASE/admin/$ORACLE_SID/adump /u01/app/oracle/admin/+ASM1/adump
Le troisième répertoire d'audit ASM peut être trouvé en se connectant à l'instance ASM avec SQL*Plus et en exécutant cette instruction :
$ sqlplus '/ as sysasm' SQL> select value from v$parameter where name = 'audit_file_dest'; VALUE -------------------------------------------------------------------------------- /u01/app/11.2.0/grid/rdbms/audit
Les trois répertoires d'audit ASM seront gérés avec cron.
Étape 2 – Autoriser le propriétaire du logiciel Grid Infrastructure à utiliser cron
Les fichiers d'audit appartiennent au propriétaire du logiciel Grid Infrastructure, qui est généralement Oracle ou Grid. Les commandes de déplacement ou de suppression des fichiers d'audit doivent être exécutées en tant que propriétaire du logiciel Grid Infrastructure. En tant qu'utilisateur root, ajoutez le propriétaire du logiciel Grid Infrastructure au fichier /etc/cron.allow. Les exemples ci-dessous utilisent l'oracle utilisateur.
# echo oracle >> /etc/cron.allow
Étape 3 – Ajouter une commande à crontab pour gérer les fichiers d'audit chaque semaine
En tant que propriétaire du logiciel Grid Infrastructure, ajoutez une entrée au fichier crontab. La commande suivante lancera une session d'édition de la commande vi(P) pour modifier le fichier crontab existant ou créer un nouveau fichier crontab s'il n'en existe pas déjà.
$ crontab -e
Ajoutez ce qui suit à ce fichier sur une seule ligne :
0 2 * * sun /usr/bin/find /u01/app/11.2.0/grid/rdbms/audit /u01/app/11.2.0/grid/rdbms/audit /u01/app/oracle/admin/+ASM1/adump -maxdepth 1 -name '*.aud' -mtime +30 -delete
Cette entrée crontab exécute la commande find à 2h du matin tous les dimanches. La commande find supprime tous les fichiers d'audit des trois répertoires d'audit ASM datant de plus de 30 jours.
Si vous souhaitez conserver les fichiers d'audit plus longtemps, au lieu de supprimer les fichiers d'audit avec la commande find(1), vous pouvez archiver les fichiers d'audit dans un répertoire ou un périphérique de stockage différent à l'aide d'une entrée crontab comme suit :
0 2 * * sun /usr/bin/find /u01/app/11.2.0/grid/rdbms/audit /u01/app/11.2.0/grid/rdbms/audit /u01/app/oracle/admin/+ASM1/adump -maxdepth 1 -name '*.aud' -mtime +30 -execdir /bin/mv {} /archived_audit_dir \;
Cette entrée crontab exécute la commande find à 2h du matin tous les dimanches. La commande find déplace tous les fichiers d'audit des trois répertoires d'audit ASM datant de plus de 30 jours vers /archived_audit_dir. Enregistrez et quittez le fichier crontab à l'aide des commandes vi ([ESC] :wq), puis vérifiez le contenu de la crontab.
$ crontab -l 0 2 * * sun /usr/bin/find /u01/app/11.2.0/grid/rdbms/audit /u01/app/11.2.0/grid/rdbms/audit /u01/app/oracle/admin/+ASM1/adump -maxdepth 1 -name '*.aud' -mtime +30 -delete
Dépannage
Si les anciens fichiers d'audit ne sont pas supprimés, procédez comme suit :
1. Pour vérifier que cron exécute la commande find dans les délais et en tant que propriétaire correct du logiciel Grid Infrastructure, consultez /var/log/cron fichier en tant qu'utilisateur root pour une entrée comme celle-ci :
Feb 20 02:00:01 dm01db01 crond[6936]: (oracle) CMD (/usr/bin/find /u01/app/11.2.0/grid/rdbms/audit /u01/app/11.2.0/grid/rdbms/audit /u01/app/oracle/admin/+ASM1/adump -maxdepth 1 -name '*.aud' -mtime +60 -delete)
2. Connectez-vous en tant qu'utilisateur propriétaire de l'entrée crontab (c'est-à-dire le propriétaire du logiciel Grid Infrastructure). Exécutez la commande find manuellement pour vérifier l'exactitude de la syntaxe de la commande et qu'aucune erreur n'a été signalée.