Oracle BI Publisher Tipp

Diagnose von Problemen in der Laufzeitumgebung des BI Publisher

Autor

Jürgen Menge

Version

11.1.1.x.0

Datum

25.03.2012


Treten bei der Ausführung von Berichten Fehler auf oder ist die Performance der Ausführung schlecht, liefern die Diagnose-Werkzeuge der Fusion Middleware (Oracle Diagnostic Logging) bzw. des BI Publisher detaillierte Informationen.
Der folgende Tipp beschreibt verschiedene Möglichkeiten der Diagnose im aktuellen Release 11g des Oracle BI Publisher.

Logging der Berichtserzeugung (auf Server-Ebene)

Schritte:

Im Log-Verzeichnis befinden sich nach der Ausführung von Berichten folgende Ergebnisse:

*xdo.log Übersicht der Generierung
*rtf_out.xsl Aus dem RTF-Template erzeugtes XSL-FO Style Sheet
*fo_data.xml Erzeugtes Daten-File (XML)
*rtf_template.rtf Verwendetes RTF-Template
*xdo.out Erzeugtes Output-File (Format hängt vom gewählten Output-Format ab)

Der Nachteil dieses Verfahrens besteht darin, dass das Logging für alle Berichte eines BI Publisher Server aktiviert wird. Wird die Java Runtime Umgebung von mehreren Servern genutzt, wird das Logging für alle BI Publisher Server gleichzeitig eingeschaltet.

Logging der Berichtserzeugung (auf Report-Ebene)

Kennt man bereits den Übeltäter, kann man das Logging auf einen Bericht beschränken. Dies ist ab der Version 10.1.3.4.1 des BI Publisher möglich.
Schritte:

Logging des Server

Diese Diagnose-Möglichkeit ist an den Oracle Enterprise Manager (Fusion Middleware Control) gebunden. Die erzeugten Log-Files verwenden das gemeinsame Log-Format ODL (Oracle Diagnostic Logging). Die Fusion Middleware Console bietet viele Möglichkeiten der Konfiguration und Auswertung.
Der Aufruf der Fusion Middleware Console erfolgt über die URL:
    http://<host>:<port>/em
Aus der Liste der Application Deployments muss der BI Publisher Server ausgewählt werden. Danach kann man aus dem Menü Application Deployment das Untermenü Logs mit den beiden Optionen View Log Messages und Log Configuration auswählen.



Im folgenden Dialog wird eine Liste von Log Handlern angezeigt.



Wir verwenden für die Konfiguration den bipublisher-handler, indem wir ihn auswählen und mit Edit Configuration in den Dialog zur Konfiguration gelangen.
Hier lassen sich das Ausgabeformat (Text oder XML), der Log Level (Binäre Stufen von 1 bis 32) und Eigenschaften der Logs (Größe, Rotation etc.) einstellen.



Die Anzeige der Log-Files kann über die Console des Fusion Middleware Control oder direkt aus dem Dateisystem des Servers erfolgen.
Sollen die Log-Informationen in der Console angezeigt werden, wählt man aus dem Menü Application Deployment das Untermenü Logs mit der Option View Log Messages aus.
In den Log-Files kann man nach bestimmten Einträgen und Kriterien suchen.



Über die Schaltfläche Target Log Files wird eine Liste der Log-Files angezeigt.
Einzelne Log-Files können zum Betrachten oder Herunterladen ausgewählt werden.



Will man die Log-Files direkt aus dem Dateisystem des Servers öffnen, kann man in der Liste der Log-Files die genauen Pfadangaben innerhalb der BI Foundation Domain finden.

JVM Diagnose

Da die Erzeugung eines Berichts als Thread in der Java Virtual Machine (JVM) ausgeführt wird, kann auch eine Analyse der Thread Dumps (Abzüge des aktuellen Status) oder die Diagnose-Möglichkeiten von JRockit Mission Control (falls JRockit als JVM zum Einsatz kommt) eine Hilfestellung geben.
Bevor man Dumps laufender Threads erzeugt, sollte die Standard- und Fehlerausgabe (STDOUT/STDERR) aus dem Console-Fenster in eine Log-Datei umgeleitet werden.
Dies geschieht über die WebLogic Server Console:
    http://<host>:<port>/console
Über die Auswahl des Servers (Environment => Servers) erreicht man die Registerkarte Logging und dort den Bereich Advanced. In diesem Bereich müssen die beiden Optionen:
    Redirect stdout logging enabled
    Redirect stderr logging enabled
aktiviert werden.



Die Thread Dumps werden von der Kommandozeile mit dem Befehl:
    kill -3 <process-ID>
erzeugt.
Die Process ID muss vorab aus der Liste der aktiven Prozesse ermittelt werden, z.B. unter Linux mit ps -ef | grep java oder jps -m.