Oracle logging tips

Questa pagina riporta due semplici consigli utili nell'analisi e gestione dei file log dell'RDBMS Oracle.

Di solito sull'RDBMS Oracle scrivo di aspetti piu' complessi o articolati... questa volta si tratta di due banali comandi Unix/Linux, che ho voluto riportare lo stesso!

grep ORA-600

Probabilmente il file di log piu' importante dell'RDBMS Oracle e' il file di Alert. Sicuramente tra gli errori piu' insidiosi vi sono gli ORA-600. Oracle pero' e' logorroico e scrive un fracco di cose sul file di Alert e non solo gli errori piu' gravi.

Per cercare un codice d'errore all'interno di un file su Unix/Linux basterebbe il semplice comando grep. Peccato pero' che Oracle pone su piu' linee la segnalazione d'errore riportando prima la data, poi eventuali file di trace, poi l'indicazione dell'errore... tipicamente servono almeno tre righe prima dell'ORA-600 ed un paio dopo.

Per trovare le occorrenze degli errori ORA-600 e riportare tutte le righe utili del file di Alert e' possibile utilizzare il seguente comando:

grep -B 3 -A 2 ORA-00600 /u01/app/oracle/diag/rdbms/*/*/trace/alert_*.log

Ovviamente il trucco funziona anche con altri errori, con un numero diverso di righe e su altri file... mutatis mutandis!
[NdE non vuol dire cambiate le mutande ma cambiato cio' che si deve cambiare]

Rotate listener.ora

Le connessioni SQL*Net e tutti gli eventi relativi al listener vengono registrati sul log del listener. Il file di default era $ORACLE_HOME/network/log/listener.log fino alla versione 11g.

Dalla versione 11g i log ed i trace sono disponibili in doppio formato (testuale ed XML) su una struttura di directory piu' complessa posta $ORACLE_HOME/diag e vengono gestiti con l'Automatic Diagnostic Repository (ADR) Command Interpreter (ADRCI). Tra le molteplici funzionalita' dell'ADRCI vi e' l'Incident Packaging Service (IPS) che consente di estrarre problemi (identificati con PROBLEM_KEY) e gli incidenti (identificati con INCIDENT_ID).
Naturalmente con l'ADRCI gestisce la ritenzione dei file, la loro compressione, ... ma il vecchio listener.log? Beh se e' presente non e' in grado di trattarlo perche' il formato non e' piu' standard!

Per gestire la rotazione/compressione/cancellazione del file listener.log e' possibile utilizzare il comando di sistema operativo logrotate creando il file /etc/logrotate.d/oracle-listener che contiene:

/u01/app/grid/diag/tnslsnr/myhost/listener/trace/listener.log { weekly copytruncate rotate 4 compress }

Ovviamente si puo' cambiare il PATH, la ritenzione, il trattamento dei file, ... [NdE come ben documentato sulle pagine del man]


Titolo: Oracle RDBMS logging tips
Livello: Intermedio (2/5)
Data: 14 Febbraio 2015
Versione: 1.0.1 - 14 Febbraio 2016
Autore: mail [AT] meo.bogliolo.name