Le directory di destinazione del file di controllo per un'istanza ASM possono aumentare fino a contenere un numero molto elevato di file se non vengono mantenute regolarmente. Avere un numero molto elevato di file può causare l'esaurimento dello spazio libero su disco o degli inode nel file system oppure può causare l'esecuzione molto lenta di Oracle a causa dei limiti di ridimensionamento della directory del file system, che possono avere l'impressione che l'istanza ASM sia sospesa avvio.
Questo post spiega come utilizzare l'utilità cron di Linux per gestire il numero di file nelle directory di destinazione dei file di controllo. Questi passaggi devono essere eseguiti per l'istanza ASM su ogni server di database. Questo documento spiega come gestire le directory di destinazione del file di controllo solo per le istanze ASM.
Fase 1:identificare le directory di audit ASM
Esistono tre directory che possono contenere file di controllo. Tutti e tre devono essere gestiti per controllare la crescita eccessiva.
Due percorsi predefiniti si basano sulle impostazioni delle variabili di ambiente all'avvio dell'istanza ASM. Per determinare le posizioni predefinite per il tuo sistema, accedi come proprietario del software Grid Infrastructure (in genere Oracle o grid), imposta il tuo ambiente in modo da poterti connettere all'istanza ASM, quindi esegui i comandi "echo" forniti di seguito. In questo esempio, le due directory di controllo predefinite sono /u01/app/11.2.0/grid/rdbms/audit e /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
La terza directory di controllo ASM può essere trovata accedendo all'istanza ASM con SQL*Plus ed eseguendo questa istruzione:
$ sqlplus '/ as sysasm' SQL> select value from v$parameter where name = 'audit_file_dest'; VALUE -------------------------------------------------------------------------------- /u01/app/11.2.0/grid/rdbms/audit
Tutte e tre le directory di audit ASM verranno gestite con cron.
Fase 2:autorizza il proprietario del software Grid Infrastructure a utilizzare cron
I file di audit sono di proprietà del proprietario del software Grid Infrastructure, che in genere è Oracle o Grid. I comandi per spostare o rimuovere i file di controllo devono essere eseguiti come proprietario del software Grid Infrastructure. Come root, aggiungi il proprietario del software Grid Infrastructure al file /etc/cron.allow. Gli esempi seguenti utilizzano l'oracolo dell'utente.
# echo oracle >> /etc/cron.allow
Passaggio 3:aggiungi il comando a crontab per gestire i file di controllo settimanalmente
In qualità di proprietario del software Grid Infrastructure, aggiungi una voce al file crontab. Il comando seguente avvierà una sessione di modifica del comando vi(P) per modificare il file crontab esistente o creare un nuovo file crontab se non esiste già.
$ crontab -e
Aggiungi quanto segue a questo file come una singola riga:
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
Questa voce crontab esegue il comando find alle 2 del mattino ogni domenica. Il comando find elimina tutti i file di controllo nelle tre directory di controllo ASM che hanno più di 30 giorni.
Se desideri conservare i file di controllo per un periodo di tempo più lungo, invece di eliminare i file di controllo con il comando find(1), puoi archiviare i file di controllo in una directory o un dispositivo di archiviazione diversi utilizzando una voce crontab come la seguente:
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 \;
Questa voce crontab esegue il comando find alle 2 del mattino ogni domenica. Il comando find sposta tutti i file di controllo nelle tre directory di controllo ASM che hanno più di 30 giorni in /archived_audit_dir. Salva ed esci dal file crontab usando i comandi vi ([ESC] :wq), quindi verifica il contenuto di 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
Risoluzione dei problemi
Se i vecchi file di controllo non vengono rimossi, procedi nel seguente modo:
1. Per monitorare che cron stia eseguendo il comando find nei tempi previsti e come proprietario del software Grid Infrastructure corretto, rivedere il /var/log/cron file come utente root per una voce come la seguente:
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. Accedi come l'utente che possiede la voce crontab (ovvero il proprietario del software Grid Infrastructure). Esegui manualmente il comando find per verificare la correttezza della sintassi del comando e che non siano stati segnalati errori.