Datenbankadministration 10. Monitoring AG DBIS University of Kaiserslautern, Germany Karsten Schmidt kschmidt@informatik.uni-kl.de (Vorlage TU-Dresden) Wintersemester 2008/2009
Momentaufnahmen
Momentaufnahmen Momentaufnahme (snapshot) Zustandsaufnahme verwendet für Datenbank-Tuning Typen Database Table Space Tables Buffer Pools Locks Database Manager Applications
Beispiel DB2 => GET SNAPSHOT FOR DATABASE ON MYTPCH Datenbankname = MYTPCH Datenbankpfad = /home/db2inst1/db2inst1/node0000/sql Aliasname der Eingabedatenbank = MYTPCH Datenbankstatus = Aktiv Datenbankpartitionsnummer für Katalog = 0 Katalogname des Netzwerkknotens = Betriebssystem auf Datenbank-Server = LINUX Position der Datenbank = Lokal Zeitmarke für erste Datenbankverbindung = 2009-01-10 09.00.46.955453 Zeitmarke für letzte Zurücksetzung = Zeitmarke für letztes Backup = Zeitmarke für Momentaufnahme = 2009-01-10 09.01.04.188117 Anzahl Pfade für dynamischen Speicher = 1 Pfad für dynamischen Speicher Obere Grenze für Verbindungen = 4 Anwendungsverbindungen = 1 Gesamtanzahl sekundärer Verbindungen = 3 Aktuell verbundene Anwendungen = 1 Aktuell im DB-Manager ausgeführte Anwendungen = 0 Zu Anwendungen gehörende Agenten = 4 Max. Anzahl zu Anwendungen gehörender Agenten = 4 Max. Anzahl koordinierender Agenten = 4
Erstellung von Momentaufnahmen Erstellung Kommandozeile
Monitore auf Instanzebene Monitor Überwacht System liefert kumulierte Daten (für Momentaufnahme) Monitore auf Instanzebene gelten für alle Datenbanken einer Instanz Aktivierung über Parameter in der Instanzkonfiguration DFT_MON_STMT DFT_MON_TABLE DFT_MON_LOCK DFT_MON_BUFFERPOOL DFT_MON_SORT DFT_MON_UOW DFT_MON_TIMESTAMP Beispiel UPDATE DBM CFG USING DFT_MON_STMT ON
Monitore auf Applikationsebene Monitore auf Applikationsebene gelten nur für aktuelle Datenbankverbindung Aktivierung: UPDATE MONITOR SWITCHES USING <name> [ON OFF] STATEMENT TABLE LOCK BUFFERPOOL SORT UOW TIMESTAMP Abfragen: GET MONITOR SWITCHES
Rücksetzen von Monitoren Rücksetzen Rücksetzen aller aufgezeichneten Werte ggf. erforderlich, da Monitor kumulativ RESET MONITOR [ALL FOR DATABASE <name>] Beispiel DB2 => GET SNAPSHOT FOR DYNAMIC SQL ON MYTPCH Anzahl Ausführungen = 2 Anzahl Kompilierungen = 1 Gesamte Ausführungszeit (sek.ms) = 0.003983 Anweisungstext = select count(*) from lineitem DB2 => RESET MONITOR ALL DB2 => GET SNAPSHOT FOR DYNAMIC SQL ON MYTPCH Anzahl Ausführungen = 0 Anzahl Kompilierungen = 0 Gesamte Ausführungszeit (sek.ms) = 0.000000 Anweisungstext = select count(*) from lineitem
SQL Snapshot-Funktionen Snapshot-Tabellenfunktionen erzeugen Tabelle aus Snapshot Namen SNAPSHOT_DATABASE SNAPSHOT_TABLE SNAPSHOT_LOCK SNAPSHOT_DYN_SQL... Parameter Datenbankname Partitionsnummer Beispiel SELECT * FROM TABLE (SNAPSHOT_TABLE( MYTPCH,0)) AS T SNAPSHOT_TIMESTAMP ROWS_WRITTEN... TABLE_NAME -------------------------- ------------... ---------- 2009-01-10-10.05.15.557598 273... REGION
Ereignismonitore
Ereignismonitore Ereignismonitore (event monitor) fortlaufende Überwachung über feste Zeitdauer Datenbankobjekt liefert detailierte Informationen über Databases Tables Deadlocks Table Spaces Buffer Pools Connections Statements Transactions hoher Aufwand
Beispiel Beispiel (Anweisungsmonitor) CREATE EVENT MONITOR MYEVT FOR STATEMENTS WRITE TO FILE /home/db2inst1/myevt/...?> db2evmon -db MYTPCH -evm MYEVT 20) Statement Event... Appl Handle: 46 Appl Id: *LOCAL.db2inst1.080110103426 Appl Seq number: 00012... Text : select count(*) from lineitem... Start Time: 01/10/2009 11:40:47.341598 Stop Time: 01/10/2009 11:40:47.341692 Exec Time: 0.000094 seconds... Fetch Count: 1
Erstellung von Ereignismonitoren Erstellung von Ereignismonitoren CREATE EVENT MONITOR <evm-mon> FOR [DATABASE TABLES DEADLOCKS TABLESPACES BUFFERPOOLS CONNECTIONS STATEMENTS TRANSACTIONS]+ [WHERE APPL_ID AUTH_ID APPL_NAME = <value> [AND OR...]] WRITE TO TABLE [<table-options>] FILE <path> [MANUALSTART AUTOSTART] [<file-options>] Entfernen von Ereignismonitoren DROP EVENT MONITOR <name>
Erstellung von Ereignismonitoren Ablage in Tabellen logische Ereignisgruppe <evm-group> logische Dateneinheit eines Monitors definieren Relationen z.b. STATEMENT CONNHEADER, STMT, SUBSECTION, CONTROL DATABASE DB, CONTROL, DBMEMUSE Angabe der Tabelle und der gewünschten Spalten (u.a.). <table-options> ::= <evm-group> ([TABLE <tab-name>, [INCLUDES (<col-list>)]) [,...] graphisches Frontend: db2eva Beispiel CREATE EVENT MONITOR MYEVT FOR DATABASE WRITE TO TABLE DB (TABLE DB_MYEVT) erzeugt Relation mt 129 Spalten
Erstellung von Ereignismonitoren Ablage in Dateien oft für erweiterte Auswertung verwendet schreibt in mehrere Dateien <file-options> ::= [MAXFILES <number>] [MAXFILESIZE <pages>] [BLOCKED NONBLOCKED] [APPEND REPLACE] Abfragen mit db2evmon -db <db-name> -evm <evm-name> db2evmon -path <path> Beispiel CREATE EVENT MONITOR MYEVT FOR STATEMENTS WRITE TO FILE /home/db2inst1/myevt/ MAXFILES 10 MAXFILESIZE 100 erteugt 00000000.evt, 00000001.evt,...
Arbeiten mit Ereignismonitoren Aktivieren starten/stopen der Aufzeichnung SET EVENT MONITOR <name> STATE [0 1] Statusabfrage Katalogtabelle SYSCAT.EVENTMONITORS SQL Funktion EVENT_MON_STATE SELECT EVENT_MONT_STATE( MYEVT ) FROM SYSIBM.SYSDUMMY1 Ausschreiben gepufferte Daten ausschreiben FLUSH EVENT MONITOR <name>
Zusammenfassung Momentaufnahmen kumulierte Informationen geringer Aufwand Ereignismonitore Detailinformationen hoher Aufwand