Datenbankadministration 10. Monitoring AG DBIS University of Kaiserslautern, Germany Karsten Schmidt [email protected] (Vorlage TU-Dresden) Wintersemester 2008/2009 K. Schmidt 10. Monitoring Momentaufnahmen K. Schmidt 10. Monitoring Momentaufnahmen Momentaufnahme (snapshot) Zustandsaufnahme verwendet für Datenbank-Tuning Typen Database Table Space Tables Buffer Pools Locks Database Manager Applications K. Schmidt 10. Monitoring Beispiel DB2 => GET SNAPSHOT FOR DATABASE ON MYTPCH Datenbankname = MYTPCH Datenbankpfad = /home/db2inst1/db2inst1/NODE0000/SQ 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 K. Schmidt 10. Monitoring Erstellung von Momentaufnahmen Erstellung Kommandozeile K. Schmidt 10. Monitoring 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 K. Schmidt 10. Monitoring 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 K. Schmidt 10. Monitoring 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 Anzahl Kompilierungen Gesamte Ausführungszeit (sek.ms) Anweisungstext = = = = 2 1 0.003983 select count(*) from lineitem DB2 => RESET MONITOR ALL DB2 => GET SNAPSHOT FOR DYNAMIC SQL ON MYTPCH Anzahl Ausführungen Anzahl Kompilierungen Gesamte Ausführungszeit (sek.ms) Anweisungstext K. Schmidt = = = = 0 0 0.000000 select count(*) from lineitem 10. Monitoring 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 K. Schmidt 10. Monitoring Ereignismonitore K. Schmidt 10. Monitoring 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 K. Schmidt 10. Monitoring 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 ← ← ← K. Schmidt 10. Monitoring 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> K. Schmidt 10. Monitoring 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 K. Schmidt 10. Monitoring 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, ... K. Schmidt 10. Monitoring 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> K. Schmidt 10. Monitoring Zusammenfassung Momentaufnahmen kumulierte Informationen geringer Aufwand Ereignismonitore Detailinformationen hoher Aufwand K. Schmidt 10. Monitoring