1. Start
  2. Unternehmen
  3. Blog
  4. Trace Dateien unter Windows mit ADRCI aufräumen

Trace Dateien unter Windows mit ADRCI aufräumen

Oracle-Datenbanken erzeugen allerlei Trace- und Log-Dateien. Je mehr Datenbanken auf einem Server laufen, desto mehr Trace- und Logdateien werden auch erzeugt. Oracle liefert schon seit langem das Kommandozeilen-Tool "adrci" ("Automatic Diagnostic Repository Commandline Interface") aus, mit dem sich diese Dateien verwalten lassen.

Die Anmeldung am ADRCI ist dabei denkbar einfach:

 

C:\Users\administrator>adrci
ADRCI: Release 19.0.0.0.0 - Production on Fr Mai 12 11:34:38 2023
Copyright (c) 1982, 2021, Oracle and/or its affiliates.  All rights reserved.
ADR base = "C:\app\oracle"
adrci>

 

Mittels "show homes" kann man anzeigen lassen, welche Komponenten Trace- oder Logdateien erzeugen. Diese werden als ADR Homes bezeichnet:

 

adrci> show homes
ADR Homes:
diag\asm\+asm\+asm
diag\clients\user_OracleServiceORCL19\host_3831685081_110
diag\clients\user_SYSTEM\host_3831685081_110
diag\clients\user_SYSTEM\host_3831685081_82
diag\crs\rdsnt037\crs
diag\kfod\rdsnt037\kfod
diag\rdbms\orcl19\orcl19
diag\rdbms\orcl19a\orcl19
diag\tnslsnr\rdsnt037\listener
diag\tnslsnr\rdsnt037\standby

 

Um Dateien zu löschen, die zum Standard-Listener gehören und mehr als einen Tag als sind, kann die Funktion "purge" des Tools verwendet werden:

 

adrci> set home diag\tnslsnr\rdsnt037\listener
adrci> purge -age 1440

 

Natürlich ist es etwas mühselig, das Ganze für alle Homes durchzuführen. Auf Linux- oder Unix-Systemen kann man hier relativ einfach mit der Shell eine For-Schleife erstellen, die den "purge"-Befehl für jedes Home durchführt.

Auf Windows hat man standardmäßig leider keine Shell. Allerdings gibt es seit vielen Windows-Versionen die Powershell, die ähnlich mächtig wie die Shell ist. Damit kann man ein Skript erstellen, das durch alle Homes geht und jeweils die Dateien löscht, die älter als einen Tag sind:

 

PS> $homes=@(adrci exec="show homes"|findstr diag);foreach ($h in $homes){$h = $h.replace('\','\\'); write-output "ADR Home: $h"; adrci exec="set home $h;purge -age 1440"}
ADR Home: diag\\asm\\+asm\\+asm
ADR Home: diag\\clients\\user_martin.wendler\\host_3831685081_110
ADR Home: diag\\clients\\user_SYSTEM\\host_3831685081_110
ADR Home: diag\\crs\\rdsnt037\\crs
ADR Home: diag\\rdbms\\orcl19a\\orcl19
ADR Home: diag\\tnslsnr\\rdsnt037\\listener

 

Dieses Skript kann man nun auch nach Bedarf automatisieren, beispielsweise über die Windows Aufgabenplanung, um die Verzeichnisse regelmäßig aufzuräumen. 

Kommentare

Keine Kommentare

Kommentar schreiben

* Diese Felder sind erforderlich