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