Blog 
Brauchen Sie wirklich Logdateien und Tracefiles, die ein Jahr alt sind?

Oracle hat mit der Datenbank Version 11g das so genannte Automatic Diagnostic Repository (kurz ADR) eingeführt. In einem von der Datenbank Software unabhängigen Verzeichnisstruktur werden jetzt (theoretisch) alle Logdateien, Tracefiles und andere Dateitypen (z.B. Core, Audit) abgelegt. In den meisten Fällen werden die Dateien doppelt abgelegt, zunächst einmal klassisch als Textdatei (z.B. die gute alte Alert-Datei) und dann noch einmal im XML-Format. Dadurch können die einzelnen Verzeichnisse sehr schnell eine Größe von einigen Gigabyte erreichen. Zwar fällt das bei den heutigen Festplattengrößen kaum ins Gewicht. Wenn man allerdings auf die Suche nach bestimmten Informationen gehen muss, kann das schon mal recht mühsam werden.

Kaum bekannt ist, dass Oracle auch einen Mechanismus liefert, alte Logs und Traces automatisch zu löschen (Purge). Zuständig hierfür sind zwei Paramter SHORTP_POLICY (Standardmäßig 720 Stunden) und LONGP_POLICY (Standardmäßg 8720 Stunden). Das bedeutet, dass Traces und Logfiles in der Regel ein Jahr (LONGP_POLICY) aufbewahrt werden.

Natürlich sind Parameter nur dann gut, wenn man sie auch ändern kann. Und so ist es auch in diesem Fall möglich, die Parameter über das Kommandozeilen Interface adrci entsprechend anzupassen.

% adrci:
adrci> show homes
diag/rdbms/rac112/RAC1122
diag/rdbms/rac112/TEST
diag/rdbms/rac112/RAC1121
diag/rdbms/ron112/RON112_2
diag/rdbms/ron112/RON1121
diag/rdbms/ron112/RON112_1
adrci> set home diag/rdbms/rac112/RAC1122
adrci> show control
ADR Home = /u01/app/oracle/diag/rdbms/rac112/RAC1122:
*************************************************************************
ADRID                SHORTP_POLICY        LONGP_POLICY         LAST_MOD_TIME                            LAST_AUTOPRG_TIME                        LAST_MANUPRG_TIME                        ADRDIR_VERSION       ADRSCHM_VERSION      ADRSCHMV_SUMMARY     ADRALERT_VERSION     CREATE_TIME
-------------------- -------------------- -------------------- ---------------------------------------- ---------------------------------------- ---------------------------------------- -------------------- -------------------- -------------------- -------------------- ----------------------------------------´
1122254562           720                  8760                 2011-01-11 13:08:51.956565 +01:00        2011-03-23 23:08:36.314710 +01:00                                                 1                    2                    76                   1                    2011-01-11 13:08:51.956565 +01:00
1 rows fetched
adrci> set control (SHORTP_POLICY = 168)
adrci> set control (LONGP_POLICY = 720)

Da, wie in diesem Beispiel, oftmals mehrere Datenbanken auf einem Rechner laufen oder weitere Komponenten installiert wurden, gibt es mehrere ADR-Home Verzeichnisse. Die Anpassung der Parameter SHORTP_POLICY und LONGP_POLICY ist jedoch Verzeichnisspezifisch, so dass man zunächst ein entsprechendes ADR-Home auswählen muss und erst dann die Parameter anpassen kann.

Da der adrci mit zusätzlichen Parametern aufgerufen werden kann, bietet es sich an, ein entsprechendes Skript zu bauen, was einmalig die Parameter auf die gewünschten Werte einstellt. Im folgenden Beispiel wird SHORTP auf eine Woche und LONGP auf einen Monat bzw. 30 Tage eingestellt

#!/bin/sh
for ADRHOME in `adrci exec="show home"`
do
    if [ $ADRHOME = "ADR" -o $ADRHOME = "Homes:" ]
    then
        continue;
    fi
    echo $ADRHOME
    adrci << EOF
         set home $ADRHOME
         set control (SHORTP_POLICY = 168)
         set control (LONGP_POLICY = 720)
         purge
    exit
EOF
done

Damit lässt sich viel Platz in den ADR-Verzeichnissen (Standardmäßig $ORACLE_BASE/diag) sparen und bei Bedarf können die notwendigen Dateien einfacher gefunden werden.

Keine Kommentare zu “Brauchen Sie wirklich Logdateien und Tracefiles, die ein Jahr alt sind?

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Was kann CarajanDB für Sie tun?