GNU/Linux >> Linux Esercitazione >  >> Linux

Come gestire la crescita della directory dei file di audit del database Oracle con cron (solo istanze ASM)

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.


Linux
  1. Come creare un database in MySQL con MySQL Workbench

  2. Linux:come far funzionare Oracle Java 7 con Setcap Cap_net_bind_service+ep?

  3. Gestisci i file di audit ASM con syslog:configura lograte e auditing

  4. Come controllare l'accesso ai file su Linux

  5. Come riempire un file con FF usando dd?

Come leggere un file con spazi in Linux

Gestisci le autorizzazioni di directory e file con chmod Recursive

Come pianificare i lavori con Cron in Linux

Come gestire le autorizzazioni/proprietà di file e directory in Linux

Come ottenere solo il nome del file con Linux "trova"?

Come elencare tutti i file con solo il percorso del file arbitrario letto, ma nessun elenco di directory né sudo?