Als PDF Downloaden!

Werbung
Tipps & Tricks: Januar 2011
Bereich:
DBA
Erstellung:
01/2011 MP
Versionsinfo:
11.1, 11.2
Letzte Überarbeitung:
01/2011 MP
Frühjahrsputz in der Datenbank
Wir beginnen mit unserem Frühjahrsputz dieses Mal sehr früh :-) und räumen die alten Trace-Dateien der
Datenbank auf.
Die Oracle Version 11g stellt uns dafür ein eigenes Tool zur Verfügung: ADRCI
ADRCI steht hierbei für ADR Command Interpreter, wobei ADR ganz klassisch für Automatic Diagnostic
Repository steht.
ADRCI wird auf der Kommandozeile gestartet (liegt im ORACLE_HOME/bin Pfad) mit dem sprechenden Namen
adrci:
dos/unix> adrci
Da im diag-Ordner mehrere Tools ihre Dateien ablegen können, muss zuerst angegeben werden, welcher
Bereich administriert werden soll. Dafür verwendet man den Befehl:
adrci> show homes
ADR Homes:
diag\clients\user_marco\host_1186817538_11
diag\clients\user_marco\host_1186817538_76
diag\clients\user_system\host_1186817538_11
diag\rdbms\o11g\o11g
diag\rdbms\o11g2\o11g2
diag\tnslsnr\myserver\listener
adrci> set home diag\rdbms\o11g2\o11g2
Zuständig für das Löschen von alten Trace-Dateien ist der MMON Prozess.
Zwei verschiedene Policies existieren als Voreinstellung:
SHORTP_POLICY = Wird verwendet für Trace-Dateien. Default-Einstellung 720 Stunden = 30 Tage. Geändert
wird dieser Wert durch:
adcri> set control (SHORTP_POLICY = 3600)
LONGP_POLICY = Wird verwendet für Metadaten. Default 8760 Stunden = 1 Jahr.
adcri> set control (LONGP_POLICY = 8760)
Muniqsoft GmbH
Schulungszentrum, Grünwalder Weg 13a, 82008 Unterhaching, Tel. 089 / 679090-40
IT-Consulting & Support, Witneystraße 1, 82008 Unterhaching, Tel. 089 / 6228 6789-0
Seite 1 von 4
MMON führt die Aktion dann innerhalb von 7 Tagen einmal aus.
Mit show control kann die Einstellung geprüft werden. Bevor Show control verwendet werden kann, muss
zuerst ein Home gesetzt werden, sonst erhält man folgenden Fehler:
adrci> show control
DIA-48448: This command does not support multiple ADR homes
In Windows Vista, Windows 7 und Windows 2008 muss das Dos Fenster als Administrator geöffnet werden, sonst
erscheint folgender Fehler:
adrci> show control
DIA-48251: Failed to open relation due to following error
DIA-48122: error with opening the ADR block file
[d:\oracle\diag\rdbms\o112\o112\metadata\ADR_CONTROL.ams] [0]
DIA-27041: Message 27041 not found; product=RDBMS; facility=DIA
OSD-04002: Datei kann nicht geöffnet werden
O/S-Error: (OS 5) Zugriff verweigert
Wenn die DB nicht permanent durchläuft, kann das Löschen auch über Monate ausfallen. Dann muss manuell
gelöscht werden!
Folgendes Beispiel kann unter SQL*PLus und WINDOWS verwendet werden:
REM Lösche alle Trace-Datein älter als 2 Tage
DEFINE del_days=2
COL del_hours NEW_VALUE del_hours
SELECT &&del_days*24 as del_hours FROM dual;
REM Wie lautet der Name von Instanz und DB ?
COL db_name NEW_VALUE db_name
COL sid NEW_VALUE sid
SELECT lower(name) as db_name, lower(instance_name) as sid FROM v$instance,v$database;
REM Unter Windows mussten bei unseren Tests unter Win 7 64 Bit Doppelbackslashes verwendet werden !
host adrci exec="set homepath diag\\rdbms\\&&sid\\&&db_name;purge -age &&del_hours
-type trace"
host adrci exec="set homepath diag\\rdbms\\&&sid\\&&db_name;purge -age &&del_hours
-type incident"
host adrci exec="set homepath diag\\rdbms\\&&sid\\&&db_name;purge -age &&del_hours
-type utscdmp"
Die Dokumentation drückt sich etwas schwammig aus, was mit der Alert-Datei passieren soll.
Fakt zum Zeitpunkt Januar 2011 ist:
1.Es gibt zwei Alert-Dateien ab 11g (XML Variante unter
ORACLE_BASE/diag/rdbms/<sid>/<db_name>/alert und Trace Datei mit Namen alert<sid>.log im
Muniqsoft GmbH
Schulungszentrum, Grünwalder Weg 13a, 82008 Unterhaching, Tel. 089 / 679090-40
IT-Consulting & Support, Witneystraße 1, 82008 Unterhaching, Tel. 089 / 6228 6789-0
Seite 2 von 4
1.Es gibt zwei Alert-Dateien ab 11g (XML Variante unter
ORACLE_BASE/diag/rdbms/<sid>/<db_name>/alert und Trace Datei mit Namen alert<sid>.log im
ORACLE_BASE/diag/rdbms/<sid>/<db_name>/trace Ordner)
2.Nur die XML Datei wird bereinigt, die Trace-Datei nicht (My Oracle Support Note: Doc ID 751082.1 Bug
6800147, der aber wohl nicht gefixt wird)
3.Sie müssen/können die Alert.log Trace-Datei manuell ohne ADRCI verschieben/archivieren/löschen.
host adrci exec="set homepath diag\\rdbms\\&&sid\\&&db_name;purge -age &&del_hours
-type alert"
Für UNIX verwenden Sie bitte folgendes Skript:
REM Lösche alle Trace-Datein älter als 2 Tage
DEFINE del_days=2
COL del_hours NEW_VALUE del_hours
SELECT &&del_days*24*60 as del_hours FROM dual;
REM Wie heisst Instanz und DB ?
COL db_name NEW_VALUE db_name
COL sid NEW_VALUE sid
SELECT name as db_name, lower(instance_name) as sid FROM v$instance,v$database;
host adrci exec="set homepath diag/rdbms/&&sid/&&db_name;purge -age &&del_hours -type
trace"
host adrci exec="set homepath diag/rdbms/&&sid/&&db_name;purge -age &&del_hours -type
incident"
host adrci exec="set homepath diag/rdbms/&&sid/&&db_name;purge -age &&del_hours -type
utscdmp"
host adrci exec="set homepath diag/rdbms/&&sid/&&db_name;purge -age &&del_hours -type
alert"
Oder wenn Sie bereits im ADRCI angemeldet sind und die Schritte manuell durchführen möchten (Trace-Dateien
älter 10 Tage löschen):
adrci>set homepath diag\rdbms\o11g2\o11g2
adrci>purge -age 240 -type trace
Ach ja, es soll ja noch Oracle Kunden geben, die keine Oracle Version 11 einsetzen (habe ich gehört :-))
Für die ein paar Code Schnipsel:
UNIX:
Löschen aller Trace-Dateien (im aktuellen Ordner), die älter als 7 Tage sind:
find ./ -ctime +7 -name "*.trc" -exec rm -f {} \; -ls
Das gleiche für Logs:
find ./ -ctime +7 -name "*.log" -exec rm -f {} \; -ls
Muniqsoft GmbH
Schulungszentrum, Grünwalder Weg 13a, 82008 Unterhaching, Tel. 089 / 679090-40
IT-Consulting & Support, Witneystraße 1, 82008 Unterhaching, Tel. 089 / 6228 6789-0
Seite 3 von 4
Windows:
Leider kann mit dem del Kommando nicht angegeben werden, aus welchem Zeitraum Dateien gelöscht werden
sollen.
Verwenden Sie deshalb entweder vba/wsh oder die Power-Shell.
Alternativer Workaround:
Mit XCOPY neuere Dateien in Hilfsordner kopieren, dann Ordner löschen und Hilfsdateien zurückkopieren
Für die ganz Mutigen:
Ordnerinhalt immer komplett löschen. Dann kann natürlich auch kein älterer Fehler nachvollzogen werden,
deswegen wird diese Vorgehensweise nur für unwichtige Test-Datenbanken empfohlen.
Weitere schöne Beispiele zum Aufräumen in der Datenbank erhalten Sie in unserem Reorg & Wartungskurs.
Muniqsoft GmbH
Schulungszentrum, Grünwalder Weg 13a, 82008 Unterhaching, Tel. 089 / 679090-40
IT-Consulting & Support, Witneystraße 1, 82008 Unterhaching, Tel. 089 / 6228 6789-0
Seite 4 von 4
Herunterladen