Datenbank-Monitoring mit DB2TOP

In meinem aktuellen Data Warehouse Projekt verwende ich das db2-Monitoring Tool DB2TOP. Mit diesem textbasierten Tool können db2-Umgebungen überwacht werden.

Starten und Beenden von DB2TOP

Um DB2TOP aufzurufen, muss man sich über putty mit dem DB-Server verbinden und anschließend auf der Kommandozeile db2top eingeben (in manchen Fällen gefolgt vom Parameter -d für den DB-Namen und den Namen der Datenbank):

Aufruf von db2top
[y0e6844@blbbddbentw01] $ db2top -d dbbded01

Anschließend wird DB2TOP gestartet und das Hauptmenü angezeigt.

DB2TOP Startseite

Im oberen Bereich von DB2TOP werden verschiedene Werte angezeigt.

Kopfzeile 1:

  • linker Bereich in der Kopfzeile
  • [/]: Wenn dieses Symbol rotiert, bedeutet es, dass DB2TOP zwischen zwei Snapshots wartet – anderenfalls wartet DB2TOP auf eine Antwort von DB2h
  • 08:25:29: aktuelle Uhrzeit
  • refresh=2secs: Zeit Intervall für die Aktualisierung zwischen zwei Snapshots
  • refresh=!secs: Ein angezeigtes Ausrufezeichen bedeutet, dass die Verarbeitungszeit eines Snapshots länger dauert als die refresh-Zeit. Wenn dies der Fall ist, erhöht DB2TOP den Zeitintervall um 50%.
  • (0.001): Dauer die benötigt wurde, um den Snapshot zu erzeugen
  • rechter Bereich in der Kopfzeile
  • Linux: Plattform, auf der die DB2-Instanz läuft
  • member=[1/1]: Zeigt im Falle von Partitionen die aktive von gesamt vorhandenen Partitionen an
  • BADISE01: DB-Instanz-Name
  • DBBDBD01: Datenbank-Name

Kopfzeile 2:

  • linker Bereich in der Kopfzeile
  • d=Y/N: Delta oder Kumulativer Snapshot Indikator (-k oder k Option)
  • a=Y/N: Nur aktive oder alle Objekte (-a oder i Option)
  • e=Y/N: erweiterte Anzeige
  • p=ALL: Alle Datenbank-Partitionen (p=CUR aktuelle DB-Partition, p=2: Partition 2, sofern partitioniert) (-P Option ohne Angabe einer Partition)
  • rechter Bereich in der Kopfzeile
  • qp=on/off: Query patroller an/aus

Zusätzlich werden auf der Startseite von DB2TOP die möglichen Tastenkommandos zur Navigation angezeigt (Achtung: Groß-/Kleinschreibung beachten).

Beenden von DB2TOP

DB2TOP kann durch die Eingabe von q (quit) beendet werden. Möchte man DB2TOP nicht beenden, dennoch auf der Linux-Shell Befehle ausführen, so kann durch die Eingabe eines Ausrufezeichens temporär auf die Linux-Shell gewechselt werden – durch Eingabe von exit wird die Shell wieder verlassen und man befindet sich wieder in der DB2TOP Ansicht.

d (Database)

Auf der Datenbank-Seite werden eine Reihe von Performance Monitoring Elemente für die gesamte Datenbank angezeigt

Database

Auslastungs-Anzeige (durch Eingabe von g aktivier-/deaktivierbar)

  • MaxActSessions: Aktive Sessions
  • AssAgents: ??
  • SortMemory: Auslastung Sortier-Speicher
  • LogUsed: Auslastung des DB2-Transaktions-Logs (WICHTIG!!) von „uncommitted transactions“
  • FCM BufLow: FCM (Fast Communication Manager) buffer shared memory

Neben der Auslastungs-Anzeige werden Informationen (Datum/Uhrzeit/Log) zum letzten Backup angezeigt (Hinweis: Diese Angabe wird nur dann angezeigt, wenn das putty-Fenster entsprechend groß gewählt wird).

Felder:

  • Start Date Start Time: Startdatum und Uhrzeit wann die Datenbank hochgefahren wurde
  • Status:  Status der Datenbank
  • Shthres: Sort heap threshold Konfigurations-Parameter
  • Buffers: konfigurierter Buffer-Speicher in Mega-/Gigabyte
  • FCMBuf: konfigurierter FCM-Speicher in Mega-/Gigabyte
  • OtherMem: sonstiger konfigurierter Speicher im Mega-/Gigabyte
  • Sessions: Anzahl Sessions
  • ActSess: Anzahl aktiver Sessions
  • LockUsed:  Prozentuale Auslastung des LOCK-Bereichs – zusammen mit LockEscals: Lock Escalation interessant bei Locking-Problemen
  • DeadLocks:
  • LogReads:
  • LogWrites:
  • L_Reads: Logical Reads
  • P_Reads: Physical Reads
  • HitRatio:
  • A_Reads: Asynchronous Reads
  • Writes:
  • A_Writes: Asynchronous Writes
  • Lock Wait:
  • Sortheap:
  • SortOvf: Sort Overflow (dieser Wert geht hoch, wenn Sortheap nicht groß genug ist)
  • PctSortOvf: Percentage Sort Overflow
  • AvgPRdTime: Average Physical Read Time
  • AvgDRdTime: Average Direct Read Time
  • AvgPWrTime: Average Physical Write Time
  • AvgDWrTime: Average Direct Write Time

B (Bottleneck)

Bottleneck

Durch die Eingabe eines großen B’s bekommt man die Hauptkonsumenten kritischer Serverressourcen zu sehen. Hierüber können Engpässe analysiert werden. In der Darstellung werden (typischerweise) alle 2 Sekunden die Analyseergebnisse aktualisiert. Möchte man eine Eingabe „einfrieren“ so kann über die Taste f die Anzeige eingefroren werden – durch die Eingabe von <ENTER> erfolgt wieder die dynamische Anzeige.

Im oberen Bereich des Monitors erfolgt eine Pegel-Anzeige mit prozentualer Angabe der „Ausschläge“. Durch die Eingabe von z oder Z kann die Sortierreihenfolge (nach anschließender Eingabe der Spalten-Nummer) ausgewählt werden. Soll nach mehreren Spalten sortiert werden, so sind die Spalten-Nummern getrennt durch Komma anzugeben. Soll diese Sortierreihenfolge dauerhaft beibehalten bleiben, so besteht die Möglichkeit durch die Eingabe von w die „Konfiguration“ zu speichern. Die Konfigurationsdatei heißt .db2toprc.

l (Sessions)

Über die Sessions werden Anweisungsanzeigen aufgerufen.

Sessions

Benötigt man zu einer Anweisung (Application Handle) detailliertere Informationen, so kann durch die Eingabe eines kleinen a’s (agent) und anschließender Eingabe des in der ersten Spalte angezeigten Application-Handles (sowas Ähnliches wie eine Prozess-ID – ist aber nicht zu verwechseln mit der Linux/Unix Prozess-ID) ein Application Handle ausgewählt werden. Ein Application-Handle manuell eingeben funktioniert nicht – am Besten die ID mit der Maus markieren und copy/paste mit anschließendem <ENTER> drücken.

Sessions

Spaltenreihenfolge der Anzeige (dauerhaft) ändern, funktioniert wie folgt:

  • Im Sessions-Screen die Taste c eingeben. Dadurch werden alle verfügbaren und aktuell sortierten Spalten aufgelistet.
  • Danach im unteren Bildschirmbereich bei „Enter new columns order for sessions“ durch Komma getrennt die Nummer der oben angeführten Spalten in der gewünschten Reihenfolge angeben und mit <ENTER> bestätigen.
  • Soll die Darstellung dauerhaft gespeichert werden, einfach w eingeben und mit <ENTER> bestätigen.

D (Dynamic SQL)

Dynamic SQL zeigt detaillierte Informationen zu gecachten SQL Statemens an. Über die Angabe des angezeigten HashValues des SQL-Statements kann ein vollständiges SQL-Statement eingeblendet werden.

Dynamic SQL

O (Settings)

Über die Settings-Funktion werden die aktuellen Einstellungen von DB2TOP angezeigt:

DB2TOP Einstellungen

h (Help)

Über die Taste h wird eine Hilfeseite mit den zur Verfügung stehenden Tastaturkürzeln und eine kurze Beschreibung angezeigt. Die Hilfeseite beendet man durch die Eingabe von <ENTER>.

DB2TOP Hilfe

Weiterführende Informationen zum DB2TOP Monitoring Tool findet man auf den developerWorks Seiten von IBM. Besonders interessant ist der Bereich unter „What can be monitored by db2top“ von Tao Wang und Shen Li.

 

Unix-System-Services (USS) auf dem Mainframe aufrufen

Eine Unix-Shell auf einem Mainframe – geht das? Ja, das geht – und sogar sehr einfach.

Der schon seit mehreren Jahrzehnten totgesagte Mainframe existiert noch immer. Ein Grund dafür ist, dass es angeblich mehr COBOL oder PL1-Code als Java-Code weltweit geben soll. Mainframe Gegner behaupten – alles Legacy-Code – egal! Dennoch gibt es Menschen wie mich, die gerne mit dem Mainframe arbeiten. Genauso gerne arbeite ich aber auch mit Unix, Windows oder dem Mac.

Wer jedoch in der Unix-Welt zu Hause ist und mit Begriffen wie ISPF, TSO oder JCL nicht viel anfangen kann, den wird es freuen, dass es auch auf dem Mainframe eine Unix-Shell gibt. Diese Unix-Shell kann im ISPF-Hauptmenü aufgerufen werden. Durch Eingabe des Befehles

tso omvs

wird die Unix-Shell aufgerufen. Standardmäßig befindet man sich nach dem Aufruf im Home-Directory, welches im Vergleich zu „normalen“ Unix-Systemen nicht unter /home/userid, sondern unter /u/userid liegt. Die Anzeige nach Befehlseingabe ist in der Regel nicht sehr flüssig, wie z.B auf einem reinen Unix-System. Dennoch funktionieren viele bekannte Unix-Befehle und Programme auf Anhieb und auch Linuxer fühlen sich damit schnell wohl(er). Und so sieht es in etwa aus: