Logo Oracle Deutschland   DBA Community  -  November 2014
OraTop - RealTime Monitoring von Oracle Datenbanken
von Sebastian Solbach ORACLE Deutschland B.V. & Co.KG

Etwas versteckt hat sich mit dem Oracle Trace File Analyzer (kurz TFA), der in einem der letzten Community Tipps näher beleuchtet wurde, noch ein weiteres nützliches Werkzeug zum Monitoring von Datenbanken mit installiert: OraTop. Dabei handelt es sich um ein kleines Werkzeug, das wie der Befehl "top" bei Unix/Linux Betriebssystemen funktioniert. "top" liefert dabei für Betriebssysteme eine Liste aller aktuellen Prozesse und listet diese, ähnlich wie der Windows Task Manager, sortiert nach CPU Auslastung, Speicherverbrauch oder I/O Anforderungen. Genau gleich funktioniert "oratop", aber eben für eine 11.2 oder 12.1 Datenbank.

Damit hilft OraTop, aktuelle Datenbankauslastungen zu überwachen und Performanceengpässe aufzuzeigen.

Installation von OraTop

Wie schon erwähnt wird das OraTop Utility mit dem aktuellen TFA (Version 12.1.2) ausgeliefert. Neben dem veröffentlichten Community Tipp zum TFA findet man auch in der My Oracle Support Note "TFA Collector - Tool for Enhanced Diagnostic Gathering" (Doc ID 1513912.1) Informationen zum TFA und bei genauerem Studium des darin enthaltenen Handbuchs auch kurze Informationen zu OraTop.

Da TFA in der Grid Infrastruktur 11.2.0.4 und 12.1.0.2 bereits enthalten ist, ist auch hier unter Linux das oratop Utility schon vorhanden und muss nicht zusätzlich installiert werden. Dennoch gibt es auch eine Standalone Version von OraTop, da OraTop eigentlich nur einen Datenbankclient und eine Verbindung zu der zu überwachenden Datenbank braucht. So kann man OraTop, obwohl nur für Linux verfügbar, auch verwenden um Datenbanken auf anderen Plattformen zu überwachen. Näheres zur Standalone Version von OraTop findet man unter "oratop - Utility for Near Real-time Monitoring of Databases, RAC and Single Instance" (Doc ID 1500864.1).

Die Installation von OraTop ist dabei denkbar einfach, da es sich nur um ein kleines C Progamm handelt, welches ohne großen Aufwand direkt verwendet werden kann. Eine aufwändige Installation ist nicht notwendig, lediglich die Rechte zum Ausführen des Programms müssen angepasst und die Umgebung für einen Oracle Client vorbereitet werden (ORACLE_HOME, LD_LIBRARY_PATH, PATH und gegebenenfalls ORACLE_SID bei einer lokalen Datenbankverbindung).

Verwendung von OraTop

Der Aufruf von OraTop mit TFA sieht etwas anders aus als der Aufruf des Standalone Programms. Während OraTop in der Standalone Version einfach direkt mit "oratop" aufgerufen wird, sieht der Aufruf mit TFA wie folgt aus:

# tfactl analyze -comp oratop -database orcl sys/oracle@orcl as sysdba 
Die verfügbaren Optionen sind allerdings gleich:
# tfactl analyze -h

....

Oratop Options: Below options are available when using -comp oratop
                 -database   
   : default will be / as sysdba. Specify a different user using
            {username[/password][@connect_identifier] | / }
            [AS {SYSDBA|SYSOPER}]
            connect_identifier: host[:port]/[service_name]
  -database  Database name to run oratop
  :
  -k : FILE#:BLOCK#, section 4 lt is (EVENT/LATCH)
  -m : MODULE/ACTION, section 4 (default is USERNAME/PROGRAM)
  -s : SQL mode, section 4 (default is process mode)
  -c : database service mode (default is connect string)
  -f : detailed format, 132 columns (default: standard, 80 columns)
  -b : batch mode (default is text-based user interface)
  -n : maximum number of iterations (requires number)
  -i : interval delay, requires value in seconds (default: 5s)

....

# tfactl analyze -comp oratop -h

Usage:
         oratop [ [Options] [Logon] ]

         Logon:
                {username[/password][@connect_identifier] | / }
                [AS {SYSDBA|SYSOPER}]

                connect_identifier:
                     o Net Service Name, (TNS) or
                     o Easy Connect (host[:port]/[service_name])
         Options:
             -d : real-time (RT) wait events, section 3 (default is Cumulative)
             -k : FILE#:BLOCK#, section 4 lt is (EVENT/LATCH)
             -m : MODULE/ACTION, section 4 (default is USERNAME/PROGRAM)
             -s : SQL mode, section 4 (default is process mode)
             -c : database service mode (default is connect string)
             -f : detailed format, 132 columns (default: standard, 80 columns)
             -b : batch mode (default is text-based user interface)
             -n : maximum number of iterations (requires number)
             -i : interval delay, requires value in seconds (default: 5s)
             -v : oratop release version number
             -h : this help
Auch wenn man in der TFA Variante einen "DBName" angeben muss, so wird doch der hinten angegebene "Logon" String verwendet, um sich mit der Datenbank zu verbinden, für welche OraTop die aktuelle Systembelastung anzeigen soll. Der DB Name dient hier lediglich als Umgebung für das oratop Programm.

OraTop der Bildschirm

Oratop präsentiert sich nach dem Starten mit den wichtigsten Informationen:



Dabei werden ungünstige Konstellationen, wie hier zum Beispiel die sehr kleine PGA bzw. die Datenbank CPU Auslastung, direkt rot markiert.

Der obere Abschnitt beinhaltet den Header mit den globalen Datenbank Informationen. Darunter sieht man die Instanzinformationen, bzw. die einzelnen Informationen jeder Instanz (bei einem RAC). Im 3. Abschnitt befinden sich die Top5 DB Wait Events in RealTime oder kumulativ und in Abschnitt 4 die Top Prozesse bzw. SQLs.

Die einzelnen Abkürzungen in jedem Abschnitt bekommt man in der Hilfe erklärt, die mit "h" aufgerufen wird. Mit den nachfolgenden Eingabe von 1,2,3 oder 4 werden dann die Informationen zu den einzelnen Sektionen angezeigt. Leider wird je nach verwendetem Terminal die Information etwas verschoben dargestellt. In meiner Putty Session verschob sich das "Enter Selection Number" so, dass es nicht mit der eigentlichen Eingabezeile übereinstimmte. Trotzdem funktionieren die einzelnen Tasten. Die optimale Einstellung der Putty Session konnte ich bei mir zumindest noch nicht finden. Dennoch erhält man die wichtigsten Informationen. Hier z.B. die Abkürzungen für die Instanzinformationen, nach Eingabe von "2" und 2x Enter, aufgelistet:

Section 2 - instance
        Top 5 Instance(s) Activity
        o Ordered by Database time desc

   ID        [c,N]: inst_id (instance id)
   %CPU      [m,N]: host cpu busy %(busy/busy+idle). (red if > 90%)
   LOAD      [m,N]: current os load. (red if > 2*#cpu & high cpu)
   %DCU    [c,m,N]: db Service cpu as %host cpu. (red if > 99% & high AAS)
   AAS       [s,N]: Average Active Sessions. (red if > #cpu)
   ASC       [c,N]: active Sessions on CPU
   ASI       [c,N]: active Sessions waiting on user I/O
   ASW       [c,N]: active Sessions Waiting, non-ASI (red if > ASC+ASI)
   AST       [c,N]: Active user Sessions Total (ASC+ASI+ASW)
   IOPS      [m,N]: i/o requests per second
   %FR       [s,N]: shared pool free %
   PGA       [s,N]: total pga allocated
   UTPS      [s,N]: user transactions per sec
   UCPS    [c,m,N]: user calls per sec
   SSRT    [c,m,T]: sql service response time (T/call)
   %DBT    [c,m,N]: Service %Database Time (e.g. non-rac shows 100%)

Oratop die wichtigsten Tastenkürzel

Wie man auch der Hilfe entnehmen kann, lässt sich die Anzeige sehr schnell umschalten. Die wichtigsten Funktionen seien hier kurz erwähnt:

Tastenkürzel Bereich Funktion
f Alle Abschnitte Schaltet zwischen Kompaktformat (80 Zeichen) und Langformat (132 Zeichen) um
d Abschnitt 3: Events Schaltet zwischen Realtime Event Anzeige und Kumulativer Anzeige um
s / p Abschnitt 4: Prozesse / SQL Schaltet zwischen Anzeige der Prozesse (p) oder SQLs (s) in Abschnitt 4 um
k Abschnitt 4: Prozesse Schaltet zwischen der Prozess Anzeige von Event/Latch und #File#Block Informationen für die WaitEvents um
m Abschnitt 4: SQL Schaltet zwischen der SQL Anzeige von MODULE/ACTION und USERNAME/PROGRAM um
i + <Zahl> Aktualisierungszeit in Sekunden Hiermit wird das Zeitintervall eingestellt, mit der die Daten von oratop refreshed werden
t Zusätzliche Anzeige (unterhalb) Tablespace Informationen. Anmerkung: Anzeige braucht etwas, nach der Anzeige mit "Enter" bestätigen
a Zusätzliche Anzeige (unterhalb) ASM Diskgruppen Informationen. Anmerkung: Anzeige braucht etwas, nach Anzeige mit "Enter" bestätigen
x + SQLID Zusätzliche Anzeige (oberhalb!) Anzeige des Ausführungsplans einer SQLID


Wie oben schon erwähnt, ist die Anzeige in Putty nicht ganz optimal. Das merkt man leider auch bei der Veränderung des Anzeigeintervalls ("i") und bei der Anzeige des SQL Plans ("x"). Dass der SQL Plan oberhalb (nach oben scrollen im Putty Fenster) sichtbar wird, ist besonders gewöhnungsbedürftig. Hier gibt es bestimmt Verbesserungspotential - es sei denn, es liegt an der Einstellung meines Putty Fensters. Allerdings wurde auch im Linux Terminal Fenster dies nicht optimal dargestellt.

Selbstverständlich kann oratop auch bereits mit der neuen 12c Architektur und Multitenant umgehen. Dafür gibt es den speziellen "Service" Mode, den man beim Aufruf von oratop mit -c aktiviert. Hierdurch werden bestimmte Werte speziell für die PDB ausgewiesen, wie zum Beispiel der Anteil der PDB an der Host CPU, die Benutzercalls pro Sekunde oder die SQL Service Antwortzeit, die ansonsten nur für die komplette CDB ausgewiesen würden.

Im Detail findet man die Funktionen (mit Screenshots) auch in der Anleitung zu Oratop beschrieben, die es in der My Orace Support Note
"oratop - Utility for Near Real-time Monitoring of Databases, RAC and Single Instance" (Doc ID 1500864.1) zum Herunterladen gibt. Ebenfalls findet man Informationen auf welche Datenbank Views für die angezeigten Informationen zurückgegriffen wird, so dass auch ein "oratop" Benutzer in der Datenbank eingerichtet werden kann, der keine SYSDBA Rechte benötigt.

Fazit

Nützliche Links und Referenzen

  • Diagnose Daten einfach sammeln mit dem Oracle Trace File Analyzer
  • oratop - Utility for Near Real-time Monitoring of Databases, RAC and Single Instance (Doc ID 1500864.1)
  • TFA Collector - Tool for Enhanced Diagnostic Gathering (Doc ID 1513912.1)
  • RAC and DB Support Tools Bundle (Doc ID 1594347.1)
  • Zurück zur Community-Seite