Sep 19, 2012

3 + 1 τρόποι για να δούμε το alert log της Oracle στην έκδοση 11g

Σε αυτό το σημείο θα ήθελα να κάνω μια σύνοψη για τις επιλογές εμφάνισης των περιεχομένων του alert log στην 11g, καθώς παρουσιάζονται εμπλουτισμένες σε σχέση με προηγούμενες εκδόσεις.

Καταρχήν, η τυποποιημένη text μορφή του βρίσκεται όπως πάντα στη διαδρομή που υποδεικνύεται από την βασική παράμετρο background_dump_dest, ως εξής:

select value from v$parameter where name = 'background_dump_dest';

Υπάρχει όμως και η XML εκδοχή αυτού του αρχείου, που μπορεί να μας διευκολύνει στην ανάλυση. Αυτή θα τη βρούμε σε ποιο κατάλογο βρίσκεται με το ακόλουθο statement:

select value from v$diag_info where name='Diag Alert';

Σε αυτό τον κατάλογο, γίνονται archive τα alert logs και έχουν το ονομασία log.xml για το τρέχον, και log_.xml για τα αποθηκευμένα. Εξαιτίας του ότι αυτά τα αρχεία περιγράφονται σε XML, μπορούν να γίνουν αντικείμενο ανάλυσης με την χρήση XPath ή XQuery ώστε να απομονώσουμε, υπό συνθήκες, τα περιεχόμενά τους. Ένα παράδειγμα αναζήτησης κειμένου Oracle λαθών (ORA-xxxxx) σε αυτόν τον κατάλογο, που αφορούν την χθεσινή ημέρα, θα μπορούσε να είναι το εξής (σε Linux):

find . -mtime -1 | xargs grep -B20 "ORA-" | grep -A20 `date --date='yesterday' +"%Y-%m-%d"`

Η εντολή θα τυπώσει τις 20 γραμμές που προηγούνται του λάθους, και τις επόμενες 20 που ακολουθούν, εφόσον αφορούν την χθεσινή ημέρα.
Ένας τρίτος τρόπος, μας προσφέρεται από το command-line interface του Automatic Diagnostic Repository (ADR) ώστε να μπορούμε να κάνουμε spool, tail ή αναζήτηση στο alert log μέσω του ADRCI (http://docs.oracle.com/cd/E11882_01/server.112/e22490/adrci.htm#SUTIL700)

Τέλος, αν δεν έχουμε φυσική πρόσβαση στον database server, τότε υπάρχει και το καταφύγιο της SQL. Με την ακόλουθη εντολή μπορούμε να δούμε τις σημερινές εγγραφές στο alert log.

select message_text from X$DBGALERTEXT where trunc(originating_timestamp) = trunc(sysdate) order by originating_timestamp asc;

No comments: