Oracle Diagnostic Logging (ODL) und Essbase
Beim Aufbau einer Backup-Lösung erstelle ich meistens einen täglichen und einen wöchentlichen Prozess. Um die Log-Dateien in einem gesunden Umfang zu halten, werden diese in einem wöchentlichen Arbeitsschritt in das Backup-Verzeichnis kopiert und danach die Originaldateien gelöscht. Im Backup-Verzeichnis werden dann alle Dateien durch den allgemeinen Backup-Prozess weiterverarbeitet.
Beim Aufbau des Backup-Prozesses konnte ich erst einmal die Log-Dateien nicht finden. Diese liegen ja in Version 11 nicht mehr unter E:\Oracle\Middleware\user_projects\epmsystem1\EssbaseServer\essbaseserver1\\, sondern ich hätte in dem Pfad im Ordner epmsystem1 in den Diagnostics-Baum abbiegen sollen. Nach einigem Klicken waren sie dann doch gefunden… doch was gibt es da? Hunderte Dateien mit einer Struktur Sample_ODL_1328272957.log. Alle etwas unter 1 MB groß. Was war das denn?
Nun wurde mir klar, ich war zum ersten Mal auf einem System, das mit Oracle Diagnostic Logging (ODL) ausgestattet war. ODL gibt es seit der Version 11.1.2.0. Diese Dateien kamen alle vom ODL und wurden über die letzten Wochen durch Essbase erstellt.
Das Oracle Diagnostic Logging (ODL) ist ein Teil des Oracle Middleware Components, es definiert einen Standard, wie und was in die Log-Dateien kommt. Es ist also zu erwarten, dass unser vertrautes essbase.log und die Applikation-Logs in nicht allzu langer Zeit verschwinden werden. Aber was sind die Vorteile?
Oracle sagt dazu, dass Administratoren konfigurieren können, was in die Log-Dateien aufgenommen werden soll. Nun, das können wir ja schon mit den Funktionen AGENTLOGMESSAGELEVEL und AGENTDISPLAYMESSAGELEVEL. Warten wir mal ab, ob es eine Verbesserung ist.
Ein weiterer Punkt ist, dass ältere Log-Dateien umbenannt und in chronologischer Weise vorgehalten werden. Auch das haben wir letztlich schon mit den Essbase.cfg-Einstellungen APPMAXLOGFILESIZE und AGTMAXLOGFILESIZE bekommen.
Der letzte Punkt ist, dass alte Log-Dateien entfernt werden können, ohne dass die Applikationen gestoppt werden müssen. Wenn die beiden oben genannten Einstellungen schon genutzt werden, dann haben wir auch ohne ODL bereits diese Funktionalität.
Es liegt an Sie was Sie wollen. Im Essbase ist es etwas mehr Arbeit als in ODL.
Hier folgt eine Beschreibung wie Sie ODL einrichten können.
Das Oracle Diagnostic Logging (ODL) wird in E:\Oracle\Middleware\user_projects\epmsystem1\EssbaseServer\essbaseserver1\bin\logging.xml konfiguriert. Hier kann man einstellen, welche Informationen in das Log aufgenommen werden sollen. Standard-Einstellung ist “Trace:1” und das bedeutet, das alles in die Log-Datei aufgenommen wird, was Oracle für sinnvoll für den Enduser hält. Hier aber zunächst einen Auszug aus dieser XML-Datei:
<logging_configuration>
<log_handlers>
…
<log_handler name=’agenthandler‘ class=’oracle.core.ojdl.logging.ODLHandlerFactory‘>
<property name=’path‘ value=’${HYPERION_LOGHOME}\essbase’/>
<property name=’maxFileSize‘ value=’1000000’/>
<property name=’maxLogSize‘ value=’1000000000’/>
</log_handler>
…
</log_handlers>
<loggers>
…
<logger name=’EssbaseAgentODLLogger‘ level=’TRACE:1′ useParentHandlers=’false‘>
<handler name=’agenthandler’/>
</logger>
…
</loggers>
</logging_configuration>
Im Abschnitt log_handlers wird die Dateigröße in Byte eingestellt. Deshalb waren auch die gefundenen Dateien alle etwas kleiner als 1 MB. Es kann auch die gesamte Größe aller Log-Dateien dieses Typs angegeben werden. Wenn dieses Limit überschritten wird, werden die ältesten entfernt. Getestet habe ich es noch nicht, es sieht aber gut aus.
Im Abschnitt loggers kann je Log-Dateityp ein Level angegeben werden, was protokolliert wird.
Je höher der ausgewählte Level, desto mehr Informationen werden in die Log-Datei geschrieben. Die verschiedenen Levels sind in der nachfolgenden Tabelle beschrieben:
Level Beschreibung
ERROR:1 Einträge, die auf ernste Probleme hinweisen und sofort den System Administrator erreichen sollen. Die Art der Probleme kommen nicht durch einen Fehler in einem Produktteil der EPM suite.
WARNING:1 Nachrichten die ein potentielles Problem darstellen können und die sich der System Administrator ansehen sollte.
NOTIFICATION:1 Einträge, die sich auf Aktivierung oder De-aktivierung von einem Teil der Software suite oder einer Funktionalität dieser beziehen.
NOTIFICATION:16 Normale Nachrichten zur Funktion der EPM System Programme.
TRACE:1 Informationen und Berichte von Funktionen die für Endanwender wichtig sind.
TRACE:16 Detaillierte Informationen und Einträge die durch den Oracle Support (und erfahrene Berater) zur Fehleranalyse genutzt werden können.
TRACE:32 Sehr detaillierte Einträge für Entwickler die Fehler in der Software suchen.
Wie schon beschrieben, werden die Essbase-Server-Diagnostics unter dem Pfad E:\Oracle\Middleware\user_projects\epmsystem1\diagnostics\logs\essbase\essbase_0\ abgelegt. Die Dateien der Applikation Diagnostics liegen im Pfad E:\Oracle\Middleware\user_projects\epmsystem1\diagnostics\logs\essbase\essbase_0\app\\ .
Wie sehen denn dann solche Einträge aus? Nun, hier ein kleiner Ausschnitt einer Berechnung der Datenbank CAPX_PRJ:
[2012-03-02T22:30:10.272-21:30] [CAPX_PRJ] [REQ-210] [NOTIFICATION] [16][] [ecid:1330003918957,0] [tid:2060] User [epmadmin@Native Directory] set active on database [Capex]
[2012-03-02T22:30:10.272-21:30] [CAPX_PRJ] [REQ-162] [NOTIFICATION] [16][] [ecid:1330003918957,0] [tid:5720] Received Command [Calculate] from user [epmadmin@Native Directory]
[2012-03-02T22:30:10.272-21:30] [CAPX_PRJ] [CAL-675] [NOTIFICATION] [16][] [ecid:1330003918957,0] [tid:6688] Commit Blocks Interval for the calculation is [3000]
[2012-03-02T22:30:10.272-21:30] [CAPX_PRJ] [CAL-714] [NOTIFICATION] [16][] [ecid:1330003918957,0] [tid:6688] Regular member [PER] depends on dynamic-calc member [Book Value].
[2012-03-02T22:30:10.272-21:30] [CAPX_PRJ] [CAL-714] [NOTIFICATION] [16][] [ecid:1330003918957,0] [tid:6688] Regular member [PER] depends on dynamic-calc member [YearTotal].
[2012-03-02T22:30:10.272-21:30] [CAPX_PRJ] [CAL-714] [NOTIFICATION] [16][] [ecid:1330003918957,0] [tid:6688] Regular member [PER] depends on dynamic-calc member [Book Value].
[2012-03-02T22:30:10.272-21:30] [CAPX_PRJ] [CAL-714] [NOTIFICATION] [16][] [ecid:1330003918957,0] [tid:6688] Regular member [PER] depends on dynamic-calc member [YearTotal].
[2012-03-02T22:30:10.335-21:30] [CAPX_PRJ] [CAL-717] [NOTIFICATION] [16][] [ecid:1330003918957,0] [tid:6688] Remote bitmap cache is [Disabled]
[2012-03-02T22:30:10.335-21:30] [CAPX_PRJ] [CAL-569] [NOTIFICATION] [16][] [ecid:1330003918957,0] [tid:6688] Formula on (or backward dependence from) member [PER] forces calculation to execute in serial mode
[2012-03-02T22:30:10.335-21:30] [CAPX_PRJ] [CAL-668] [NOTIFICATION] [16][] [ecid:1330003918957,0] [tid:6688] Calculating [ VIEW(PER)] with fixed members [PERIOD(BegBalance); DATA(Input Target); ASSET CLASS(Asset_Class_NA); LINE ITEM(1001_500, 1001_502, 1001_503, 1001_504, 1001_505, 1001_506, 1001_507, 1001_508, 1001_509, 1001_510, 1001_511, 1001_512, ]
[2012-03-02T22:30:10.335-21:30] [CAPX_PRJ] [CAL-677] [NOTIFICATION] [16][] [ecid:1330003918957,0] [tid:6688] Calculating in serial
[2012-03-02T22:30:11.632-21:30] [CAPX_PRJ] [CAL-675] [NOTIFICATION] [16][] [ecid:1330003918957,0] [tid:6688] Commit Blocks Interval for the calculation is [3000]
[2012-03-02T22:30:11.632-21:30] [CAPX_PRJ] [CAL-714] [NOTIFICATION] [16][] [ecid:1330003918957,0] [tid:6688] Regular member [PER] depends on dynamic-calc member [YearTotal].
[2012-03-02T22:30:11.632-21:30] [CAPX_PRJ] [CAL-714] [NOTIFICATION] [16][] [ecid:1330003918957,0] [tid:6688] Regular member [PER] depends on dynamic-calc member [YearTotal].
[2012-03-02T22:30:11.694-21:30] [CAPX_PRJ] [CAL-717] [NOTIFICATION] [16][] [ecid:1330003918957,0] [tid:6688] Remote bitmap cache is [Disabled]
[2012-03-02T22:30:11.694-21:30] [CAPX_PRJ] [CAL-668] [NOTIFICATION] [16][] [ecid:1330003918957,0] [tid:6688] Calculating [ VIEW(PER)] with fixed members [PERIOD(BegBalance); DATA(Input Target); ENT(GR02_5139020000); CURRENCY(LC); PROJECT(Project_NA); TRAD_PARTNER(TPart_NA); SCENARIO(F01, F02, F03, F04); VERSION(WRK); YEAR(FY12)]
[2012-03-02T22:30:11.694-21:30] [CAPX_PRJ] [CAL-678] [NOTIFICATION] [16][] [ecid:1330003918957,0] [tid:6688] Calculating in parallel with [4] threads
[2012-03-02T22:30:11.694-21:30] [CAPX_PRJ] [CAL-679] [NOTIFICATION] [16][] [ecid:1330003918957,0] [tid:6688] Calculation task schedule [1]
[2012-03-02T22:30:11.694-21:30] [CAPX_PRJ] [CAL-680] [NOTIFICATION] [16][] [ecid:1330003918957,0] [tid:6688] Parallelizing using [2] task dimensions.
[2012-03-02T22:30:13.85-21:30] [CAPX_PRJ] [CAL-550] [NOTIFICATION] [16][] [ecid:1330003918957,0] [tid:6688] Total Calc Elapsed Time : [2.813] seconds
Wie sind die Einträge aufgebaut? Hier eine Auflistung.
[2012-03-02T22:30:13.85-21:30] Zeitstempel
[CAPX_PRJ] Datenbank-Name
[CAL-550] mir noch unbekannt. Wer weiß es? Kommentare erwünscht!
[NOTIFICATION] [16] ist der Level von Nachricht bzw. Nachrichten-Typ, wie in der Tabelle oben angegeben.
[ECID] ist die Execution Context ID. Es ist eine eindeutige Nummer, die sich auf einen Ausführungsprozess bezieht.
[TID] ist die Thread ID. Das ist die Kennung des Thread welcher diesen Log-Eintrag initiiert hat.
Total Calc Elapsed Time : [2.813] seconds Die Nachricht, die wir aus dem standard Essbase Application Log kennen.
Weitere Referenzen: http://docs.oracle.com/cd/E14571_01/core.1111/e10105/logs.htm
Schreibe einen Kommentar