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.