
Promon
Administratorzy baz danych stają czasem przed problemem: jak analizować parametry generowane w narzędziu promon w funkcji czasu. Wszystkie te parametry pochodzą z tablic VST i można łatwo napisać odpowiedni program w języku ABL. Problem polega jednak na tym, że administratorzy często nie mają uprawnień do kompilacji.
Sytuacja nie jest jednak beznadziejna i można sobie z nią poradzić bez większych problemów.
Promon to narzędzie które można obsługiwać ręcznie, przeglądając określone statystyki lub generować zrzuty ekranowe w sposób automatyczny. Zrzuty takie można potem analizować na różne sposoby. Wystarczy stworzyć wejściowy plik tekstowy, zawierający zestaw znaków sterujących, odpowiadający dokładnie takim samym klawiszom które użylibyśmy przeglądali określone statystyki ręcznie.
Zanim stworzymy taki plik, musicie wiedzieć, że dla wersji OE12 znajdują się w katalogu [DLC]\bin skrypty dla serwera bazy Enterprise: gather-script-enterprise.bat
oraz Workgroup: gather-script-wrkgrp.bat.
Wystarczy uruchomić taki skrypt na naszej bazie i powstanie plik wynikowy zawierający wiele ekranów z menu podstawowego oraz R&D. We wcześniejszych wersjach OE trzeba poszukać skryptu gather. Dokładniejszy opis jest w bazie wiedzy.
Dla naszych potrzeb stwórzmy prostszy plik sterujący promon_in.txt:
R&D # Opcje R&D 5 # Adjust Monitor Options 1 # Display page length 9999 # Enter 9999 for length 3 # Monitor sampling interval 30 # Ustaw na 30 sek. 4 # Pause between displays 30 # Ustaw na 30 sek. 6 # Number of auto repeats 10 # Ustaw 10 odświeżeń t # Powrót do głównego menu R&D 2 # Activity Displays 1 # Summary A # Tryb automatyczny
Plik ten zawiera określone wybory menu i ustawienia oraz komentarz. Oczywiście dla wysterowania promona komentarz musimy usunąć. Plik więc będzie wyglądał następująco:
R&D 5 1 9999 3 30 4 30 6 10 t 2 1 A
W tym prostym przykładzie dostaniemy zrzut 10 ekranów z ogólnej aktywności bazy. Każdy ekran wygeneruje się co 30 sekund.
Uruchamiamy zatem promona na bazie testowej poleceniem:
promon sports2000 < promon_in.txt > promon_out.txt
Można użyć opcjonalnie parametru -NL, szczególnie do analizy problemów z konfliktami aktywności w pamięci współdzielonej. Tutaj można go pominąć. Nas będzie interesował parametr BI Writes.
Pominąłem jeden krok, uruchomiłem wcześniej program, który dokonuje losowo transakcji na tablicy Customer. Krok ten zostawiam czytelnikom, o ile będzie potrzebny.
Promon wygeneruje plik wynikowy promon_out.txt, zawierający zrzuty ekranowe. Z uwagi na jego obszerność wyświetlam tylko interesujący nas fragment. Zgodnie z ustawieniami plik zawiera 10 wygenerowanych takich ekranów.
Event Total Per Sec |Event Total Per Sec Commits 17245004 99.4 |DB Reads 332 0.0 Undos 1864747 10.8 |DB Writes 904278 5.2 Record Reads 38455612 221.7 |BI Reads 61998 0.4 Record Updates 15614825 90.0 |BI Writes 1380881 8.0 Record Creates 1630171 9.4 |AI Writes 0 0.0 Record Deletes 1630180 9.4 |Checkpoints 20601 0.1 Record Locks 82489712 475.5 |Flushed at chkpt 883672 5.1 Record Waits 0 0.0 |Active trans 0
Dla nas jest ważne aby wyekstrahować określone informacje, np. linie zawierające określone dane, jak badany parametr BI Writes.
W systemie Windows możemy posłużyć się komendą findstr. Poniżej ściąga jak używać tej komendy:
findstr [szukane słowo] promon_out.txt > wynik.txt
findstr /C:”[szukana fraza]” promon_out.txt > wynik.txt
W systemie Linux/Unix możemy posłużyć się komendą grep.
Uruchamiamy tutaj następująca komendę.
findstr /C:”BI Writes” promon_out.txt > bi.txt
Zawartość pliku bi.txt wygląda następująco.
Record Updates 10859 362.0 |BI Writes 938 31.3 Record Updates 10879 362.6 |BI Writes 1005 33.5 Record Updates 10476 349.2 |BI Writes 872 29.1 Record Updates 10930 364.3 |BI Writes 1005 33.5 Record Updates 10933 364.4 |BI Writes 938 31.3 Record Updates 10850 350.0 |BI Writes 938 30.3 Record Updates 10578 352.6 |BI Writes 939 31.3 Record Updates 10847 361.6 |BI Writes 938 31.3 Record Updates 10855 361.8 |BI Writes 1006 33.5 Record Updates 10828 360.9 |BI Writes 938 31.3
Juz jest nieźle, bo mamy tylko 10 potrzebnych linii. Teraz trzeba zaimportować te dane do arkusza jak Excell czy LibreOffice. Tu posłużyłem się LibreOffice, w którym można wygodnie ustalić miejsca podziału kolumn.
Niepotrzebne kolumny można usunąć. Potrzebujemy jeszcze osi czasu, ale to prosta sprawa bo odczytujemy tylko czas dla pierwszego odczytu, dodajemy 30 sekund do następnego a pozostałe czasy wygenerują się automatycznie po przeciągnięciu kursorem myszy.
Na koniec generujemy wykres w celu analizy. Tutaj jest akurat w Excellu.
Jak widać cały proces nie jest trudny i gdy raz go przejdziemy nie będzie kłopotu aby powtarzać go dla innych danych.
Następnym razem napiszę o jeszcze kilku analizach w promonie.