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.

 

MVS-Dateien vom Mainframe mit WinSCP herunterladen

Dass man mit WinSCP auf die Unix-System-Services bzw. auf das Linux-Filesystem eines IBM-Mainframes zugreifen kann, ist keine große Kunst. Entgegen vieler Blogeinträge funktioniert jedoch auch ein Zugriff mit WinSCP auf MVS-Datasets eines Mainframes. Der Trick bei der ganzen Sache ist nur, dass man weiß wie man auf dem hierarchischen Dateisystem – auf dem es keine Ordner oder Verzeichnisse gibt – WinSCP dennoch ein Verzeichnis vorgaukelt.

Natürlich muss man zuerst eine funktionierende Verbindung zum Mainframe herstellen können – entweder durch die Angabe einer IP-Adresse oder eines vom DNS aufgelösten Namen und dem entsprechenden Port (i. d. R. 22).

Nach erfolgreicher Anmeldung erscheint wie in WinSCP gewohnt, auf der linken Seite, die Verzeichnisstruktur des lokalen Rechners. Auf der rechten Seite des WinSCP-Fensters wird der zuletzt gespeicherte Ort angezeigt – sofern man bereits einmal erfolgreich in einem „MVS-Verzeichnis“ navigieren konnte.

Anderenfalls benutzt man entweder die Tastenkombination CTRl + O, welche den Dialog zum Wechsel in ein bestimmtes Verzeichnis öffnet, oder man klickt das entsprechende Symbol zum Wechsel in ein Verzeichnis in der Menüleiste an. Jetzt folgt die entscheidende Angabe: Durch Eingabe eines Schrägstriches, gefolgt von zwei Unterstrichen, sowie (mindestens) dem First-Level-Qualifier eines Datasetnamens, plus der Eingabe eines Punktes, öffnet WinSCP alle Dateien die mit dem angegebenen Dateinamen beginnen.

Um bspw. alle Dateien anzuzeigen, die mit dem First- , sowie Second-Level Datasetnamen BAT.PO.* beginnen, gibt man beim Verzeichniswechsel in WinSCP folgenden String ein:

/__BAT.PO.

Wichtig ist der Schrägstrich, gefolgt von zwei Unterstrichen, sowie der Punkt am Ende – danach mit Enter bestätigen und WinSCP listet alle gewünschten Dateien auf. Auch bei großen Dateimengen (z.B. > 50.000) funktioniert das einwandfrei, allerdings dauert es bei großen Mengen doch eine Weile bis alle Dateien angezeigt werden. Nicht irritieren lassen sollte man sich von der Dateigrößenangabe, die generell mit 0 Byte angegeben wird. Offensichtlich kann von WinSCP die korrekte Dateigröße bei MVS-Dateien nicht ermittelt werden. Überträgt man eine MVS-Datei vom Mainframe mit WinSCP – z.B. mit Drag and Drop – wird auf dem lokalen Rechner die Dateigröße sofort angezeigt.

Möchte man auf die Unix-Ebene wechseln, so ist im Gegensatz zu „normalen“ Unix-Systemen bspw. das Home-Directory eines Users nicht unter /home/userid, sondern unter /u/userid zu finden. Unter dem Wurzelverzeichnis findet man auch auf dem Mainframe bekannte Verzeichnisse wie /etc, /bin, /var und noch Weitere.