Monitorowanie bazy DB2 za pomocą procedur



Podobne dokumenty
DECLARE VARIABLE zmienna1 typ danych; BEGIN

Ćwiczenia 2 IBM DB2 Data Studio

Programowanie w SQL procedury i funkcje. UWAGA: Proszę nie zapominać o prefiksowaniu nazw obiektów ciągiem [OLIMP\{nr indeksu}] Funkcje użytkownika

Plan bazy: Kod zakładający bazę danych: DROP TABLE noclegi CASCADE; CREATE TABLE noclegi( id_noclegu SERIAL NOT NULL,

Język SQL, zajęcia nr 1

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

T-SQL dla każdego / Alison Balter. Gliwice, cop Spis treści. O autorce 11. Dedykacja 12. Podziękowania 12. Wstęp 15

Wykład 5 funkcje i procedury pamiętane widoki (perspektywy) wyzwalacze

Sprawdzenie poziomu izolacji transakcji (w aktualnym połączeniu):

Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik

Używany kiedy pełna treść instrukcji SQL jest nieznana przed uruchomieniem programu.

Wyzwalacz - procedura wyzwalana, składowana fizycznie w bazie, uruchamiana automatycznie po nastąpieniu określonego w definicji zdarzenia

SQL 4 Structured Query Lenguage

Wprowadzenie do projektowania i wykorzystania baz danych Relacje

E.14 Bazy Danych cz. 18 SQL Funkcje, procedury składowane i wyzwalacze

Oracle PL/SQL. Paweł Rajba.

PODSTAWY BAZ DANYCH 13. PL/SQL

BAZA DANYCH SIECI HOTELI

Języki programowania wysokiego poziomu. PHP cz.4. Bazy danych

Bazy danych. Wykład IV SQL - wprowadzenie. Copyrights by Arkadiusz Rzucidło 1

Bazy danych wykład dwunasty PL/SQL, c.d. Konrad Zdanowski ( Uniwersytet Kardynała Stefana Bazy danych Wyszyńskiego, wykładwarszawa)

Bazy Danych i Usługi Sieciowe

strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych

Hurtownia Świętego Mikołaja projekt bazy danych

Wprowadzenie do BD Operacje na bazie i tabelach Co poza zapytaniami? Algebra relacji. Bazy Danych i Systemy informacyjne Wykład 2.

Tworzenie raportów XML Publisher przy użyciu Data Templates

Wyzwalacze. do automatycznego generowania wartości kluczy głównych. Składnia instrukcji tworzacej wyzwalacz

Oracle11g: Wprowadzenie do SQL

Cele. Definiowanie wyzwalaczy

Programowanie MSQL. show databases; - pokazanie jakie bazy danych są dostępne na koncie

Wykład 8. SQL praca z tabelami 5

LAB 6 BEGIN TRANSACTION, COMMIT, ROLLBACK, SET TRANSACTION ISOLATION LEVEL,

Relacyjne bazy danych. Podstawy SQL

Wykład 5. SQL praca z tabelami 2

Bazy danych i usługi sieciowe

Instrukcja podwaja zarobki osób, których imiona zaczynają się P i dalsze litery alfabetu zakładamy, że takich osbób jest kilkanaście.

Pakiety podprogramów Dynamiczny SQL

Systemowe aspekty baz

KOLEKCJE - to typy masowe,zawierające pewną liczbę jednorodnych elementów

PL/SQL. Zaawansowane tematy PL/SQL

Programowanie w SQL. definicja bloku instrukcji BEGIN...END, warunkowe wykonanie instrukcji IF...ELSE, wyrażenie CASE,

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

Instrukcja instalacji aplikacji PlanSoft.org

Cheatsheet PL/SQL Andrzej Klusiewicz 1/9

Bazy danych 6. Klucze obce. P. F. Góra

Ref. 7 - Język SQL - polecenia DDL i DML

Bazy danych. Bazy danych. Podstawy języka SQL. Dr inż. Paweł Kasprowski.

DECLARE <nazwa_zmiennej> typ [(<rozmiar> )] [ NOT NULL ] [ { := DEFAULT } <wartość> ];

Przygotowanie bazy do wykonywania kopii bezpieczeństwa

Zarządzanie bazą danych. Bazy Danych i Systemy informacyjne Wykład 4. Piotr Syga

Bazy danych 10. SQL Widoki

Systemowe aspekty baz danych

15. Funkcje i procedury składowane PL/SQL

Relacyjne bazy danych. Podstawy SQL

Laboratorium nr 4. Temat: SQL część II. Polecenia DML

Procedury wyzwalane. (c) Instytut Informatyki Politechniki Poznańskiej 1

Projektowanie systemów baz danych

Wykład 05 Bazy danych

Uprawnienia, role, synonimy

SQL Server i T-SQL w mgnieniu oka : opanuj język zapytań w 10 minut dziennie / Ben Forta. Gliwice, Spis treści

Literatura: SQL Ćwiczenia praktyczne Autor: Marcin Lis Wydawnictwo: Helion. Autor: Joanna Karwowska

Programowanie po stronie serwera w SZBD. Robert A. Kłopotek Wydział Matematyczno-Przyrodniczy. Szkoła Nauk Ścisłych, UKSW

Kowalski Marcin Wrocław, dn Jaśkiewicz Kamil Bazy Danych 1 Podstawy Projekt Temat: Baza danych do zarządzania projektami

SQL> startup pfile=./admin/pfile/initdbx.ora. SQL> create spfile from pfile='$home/admin/pfile/initdbx.ora' create user bolek identified by bolek;

SQL (ang. Structured Query Language)

W SQL Serwerze 2008 wprowadzono parametry tablicowe (Table Valued Parameters - TVP).

Bazy danych 7. SQL podstawy

Administracja i programowanie pod Microsoft SQL Server 2000

Język PL/SQL Procedury i funkcje składowane

Przykład 3 Zdefiniuj w bazie danych hurtownia_nazwisko przykładową funkcję użytkownika fn_rok;

Materiały. Technologie baz danych. Plan wykładu Kursory. Wykład 5: Kursory jawne. Podprogramy. Kursory jawne. Kursory niejawne

Systemy GIS Tworzenie zapytań w bazach danych

Oracle PL/SQL. Paweł Rajba.

Zarzadzanie transakcjami. Transakcje

Database Connectivity

Instrukcja instalacji aplikacji Plansoft.org

1. Połączenie z bazą danych. W wybranym edytorze tworzymy plik sqltest.py i umieszczamy w nim poniższy kod. #!/usr/bin/python3 import sqlite3

ACESS- zadania z wykorzystaniem poleceń SQL

Wyzwalacze (triggery) Przykład

Oracle PL/SQL. Paweł Rajba.

BAZY DANYCH Cz III. Transakcje, Triggery

Przykładowa baza danych BIBLIOTEKA

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska

Tworzenie widoku CREATE OR REPLACE VIEW [nazwa_widoku] AS SELECT [nazwy_kolumn] FROM [nazwa_tablicy];

Comarch ERP XL Business Intelligence Start. Migracja do wersji 2018

Bazy danych. dr inż. Arkadiusz Mirakowski

Aspekty aktywne baz danych

w PL/SQL bloki nazwane to: funkcje, procedury, pakiety, wyzwalacze

Język PL/SQL. Rozdział 5. Pakiety podprogramów. Dynamiczny SQL

Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8

Odnawialne Źródła Energii I rok. Tutorial PostgreSQL

Bazy danych i usługi sieciowe

Programowanie w Ruby

1 Zaznacz poprawne stwierdzenia dotyczące grup plików (filegroup) możemy określić do której grupy plików trafi

SQL :: Data Definition Language

Nowe technologie baz danych

Baza danych Uczniowie.mdb

Część 1: OLAP. Raport z zajęć laboratoryjnych w ramach przedmiotu Hurtownie i eksploracja danych

Składowane procedury i funkcje

Transkrypt:

Monitorowanie bazy DB2 za pomocą procedur

AGENDA - Wstęp - Kluczowe wskaźniki efektywności - Automatyzacja monitorowania - Zarządzanie ATS - Prezentacja zebranych informacji 2

Wstęp Motywacja zbierania danych: - Każdy problem w bazie danych jest minusem i ciąży na DB2 oraz na DBA - Każdy problem jest problemem w bazie od jego zaistnienia - Nikt nie wspomina o katastrofalnym SQL'u lub aplikacji, która nie wykonuje "commit-ów" zbyt często - Nawet jeśli pierwsze oskarżenia nie potwierdzą się - to i tak pierwsze wrażenie zostanie zapamiętane 3

Wstęp Sondaż w projektach klientów(lub u siebie): Pytanie: -Jakie działania podejmujesz, aby pokazać, że nasza praca administratora DB2 jest wykonywana dobrze? Odpowiedź standardowa: "Brak" Gromadzenie wskaźników KPI Zarządzane baz danych Ale na pewno taka potrzeba jest spostrzegana! 4

Wstęp - Pytania dla DBA a W jaki sposób mogę jako administrator pokazać że wykonuję swoją prace dobrze? W jaki sposób mogę pokazać kierownictwu że baza jest zarządzana perfekcyjnie? Które ze zbieranych wskaźników efektywności (KPI's) są przydatne? W jaki sposób zebrać żądane wskaźniki bez zbytnich nakładów pracy? 5

Możliwe sposoby monitorowania: SNAPDB Widok administracyjne SNAPDB i funkcji tabeli SNAP_GET_DB_V97 zwracają migawkowe informacje z bazy danych. SELECT SUBSTR(DB_NAME, 1, 20) AS DB_NAME, DB_STATUS, SERVER_PLATFORM, DB_LOCATION, DB_CONN_TIME, DBPARTITIONNUM FROM SYSIBMADM.SNAPDB ORDER BY DBPARTITIONNUM DB_NAME DB_STATUS SERVER_PLATFORM DB_LOCATION DB_CONN_TIME DBPARTITIONNUM -------------------- ---------------- --------------- ------------ -------------------------- ------------ -- BUK01DB ACTIVE AIX64 LOCAL 2014-12-21-07.29.00.782907 0 6

Możliwe sposoby monitorowania MON_DB_SUMMARY Widok administracyjnego MON_DB_SUMMARY zwraca kluczowe wskaźniki zagregowane w stosunku do wszystkich klas usług w aktualnie podłączonej bazy danych. WYWOŁANIE call MONREPORT.DBSUMMARY Result set 1 -------------- TEXT -------------------------------------------------------------------------------- Monitoring report - database summary -------------------------------------------------------------------------------- Database: BUK01DB Generated: 02/23/2015 12:46:25 Interval monitored: 10 ================================================================================ 7

Możliwe sposoby monitorowania: db2pd - potężne narzędzie ale słabe wyjście tabelaryczne db2pd -d <database> -tcbstats -nocatalog -full awk '{print $2, $3, $9,$11, $12, $13 }' Table Stats: TableName SchemaNm Reads Inserts Updates Deletes SYSBOOT SYSIBM 1 0 0 0 INTERNAL SYSIBM 20 0 0 0 INTERNAL SYSIBM 24 0 0 0 SYSTABLES SYSIBM 6707635 5 13150 5 8

Możliwe sposoby monitorowania Moduły Monreport - Nowość w programie DB2 9.7 Fix 1 - przejrzyście sformatowany tekst wyjściowy - W oparciu o nowe funkcje MON_* SELECT APPLICATION_HANDLE, ACT_COMPLETED_TOTAL, TOTAL_RQST_TIME FROM TABLE(MON_GET_CONNECTION(CAST(NULL AS BIGINT), -2)) ORDER BY TOTAL_RQST_TIME DESC 9 APPLICATION_HANDLE ACT_COMPLETED_TOTAL TOTAL_RQST_TIME -------------------- -------------------- -------------------- 38775 441450 15815204 7157 55358 556806 23578 124275 368528

Przegląd możliwych KPI W przykładach pokazano parę aby zaprezentować możliwości Tylko od Nas zależy wybór i kombinacja wskaźników KPI Możliwe są różne poziomy INSTANCE DATABASE CONNECTS UOW s Statements 10

Przegląd możliwych KPI - system W systemie możemy posługiwać się liczbą: -Serwerów -Instancji -Baz danych Relatywnie statyczne i można obsługiwać ręcznie Automatyczne liczenie jest bardzo skomplikowane np. przy systemach -(różne wersje systemów operacyjnych) 11

Możliwe KPI Wielkość bazy danych Wykorzystanie procedury GET_DBSIZE_INFO - Komenda call GET_DBSIZE_INFO(?,?,?,-1) - Wykreowanie tablicy: SYSTOOLS.STMG_DBSIZE_INFO call GET_DBSIZE_INFO(?,?,?,-1) Value of output parameters -------------------------- Parameter Name : SNAPSHOTTIMESTAMP Parameter Value : 2015-02-24-13.24.14.151967 Parameter Name : DATABASESIZE Parameter Value : 15800724606976 Parameter Name : DATABASECAPACITY Parameter Value : 21458821967872 Return Status = 0 SELECT * FROM SYSTOOLS.STMG_DBSIZE_INFO SNAPSHOT_TIMESTAMP DB_SIZE DB_CAPACITY -------------------------- -------------------- -------------------- 2015-02-24-13.24.14.151967 15800724606976 21458821967872 12

Możliwe KPI - Wielkość bazy danych Zarządzanie pamięcią poprzez procedury db2 connect to DATABASE ; db2 call create_storagemgmt_tables('<tablespace name>') W schemacie SYSTOOLS powstaną: Zapełnienie tablic danymi: - Uruchomienie RUNSTAT na obiekty - call capture_storagemgnt_info() - Usunięcie tabel poprzez: - DROP_STORAGEMGMT_TABLES STMG_CONTAINER STMG_CURR_THRESHOLD STMG_DATABASE STMG_DBPARTITION STMG_DBPGROUP STMG_HIST_THRESHOLD STMG_INDEX STMG_OBJECT STMG_OBJECT_TYPE STMG_ROOT_OBJECT STMG_TABLE STMG_TABLESPACE STMG_TBPARTITION STMG_THRESHOLD_REGISTRY 13

Możliwe KPI Wielkość bazy danych Wykonanie Storage Snapshot Możliwe różne poziomy: 0: Database; 1: Partition; 2: Tablespace; 3: Container; 4: Table; 5: Index call CAPTURE_STORAGEMGMT_INFO(0, NULL, 'BUK01DB') Analiza poprzez zapytanie: SELECT SUM(total_size)/1024/1024 as Allocated_space_in_MB, MAX(percent_used) as Max_Used, SUM(data_size)/1024/1024 as Data_Size_in_MB FROM SYSTOOLS.STMG_TABLESPACE ALLOCATED_SPACE_IN_MB MAX_USED DATA_SIZE_IN_MB --------------------- -------- -------------------- 19653036 100 19631033 14

Możliwe KPI dostępność bazy danych Dostępność na poziomie bazy danych wartości monitora z SNAP_DB: db_conn_time & disconn_time Kompleksowa ocena, ponieważ dane są rozłożone na dwóch monitorach Konieczna aktywacja dla każdej bazy db2diag.log uruchomienie bazy danych i zatrzymania może być identyfikowane poprzez komunikaty o zdarzeniach (via EVENT) Dostępny od DB2 9.5 Fix 5 Analiza pliku db2diag.log poprzez narzędzia db2diag z wyjściem obróbki tekstowej za pośrednictwem funkcji tabelarycznej: PD_GET_DIAG_HIST: 15

Możliwe KPI dostępność bazy danych SELECT FACILITY, RECTYPE, TIMESTAMP, IMPACT, SUBSTR(MSG,1, 50) AS MSG FROM TABLE (PD_GET_DIAG_HIST( 'MAIN', 'E', '', NULL, NULL) ) AS T WHERE T.PROCESS_NAME = 'db2star2' OR T.PROCESS_NAME = 'db2stop2 FACILITY RECTYPE TIMESTAMP IMPACT MSG -------------------- ------- -------------------------- ------------------ -------------------------------------------------- MAIN EX 2014-12-19-19.38.51.086781 - ADM7514W Database manager has stopped. STOP : MAIN EI 2014-12-21-00.15.41.718689 - - MAIN EX 2014-12-21-00.15.43.393535 - ADM7513W Database manager has started. START : Aby dane nie zostały utracone możemy przechowywać je w tabeli: CREATE TABLESPACE DBAVTS; CREATE TABLE dba.dbav ( dbname varchar(8) not null, timestamp timestamp not null, eventtype varchar(10)) in DBAVTS; CREATE UNIQUE INDEX dba.idbav ON dba.dbav (dbname, timestamp); ALTER TABLE dba.dbav ADD PRIMARY KEY (dbname, timestamp); 16

Możliwe KPI dostępność bazy danych Załadowanie danych do tablicy: Poprzez zapytanie z MERGE Warunkowy insert MERGE INTO dba.dbav s USING (SELECT DBNAME, Timestamp, Eventtype FROM TABLE(PD_GET_DIAG_HIST('MAIN','E','', NULL,NULL)) as WHERE dbname is not null AND eventtype in ('START', 'STOP')) as t ON s.dbname = t.dbname AND s.timestamp = t.timestamp WHEN not matched THEN INSERT (DBNAME, Timestamp, Eventtype) values (t.dbname, t.timestamp, t.eventtype); 17

Możliwe KPI - Połączenia Liczba przetworzonych połączeń SNAPSHOT bazy danych i poglądów SNAPDB* CONNECTIONS_TOP: maksymalna liczba jednoczesnych połączeń TOTAL_CONS: liczba połączeń od pierwszego połączenia, aktywacji (lub reset) SELECT db_name, snapshot_timestamp, connections_top, total_cons, FROM sysibmadm.snapdb 18

Możliwe KPI - Połączenia Liczba przetworzonych transakcji (UOWs) poprzez Event Monitor UOW ale konieczne formatowanie i agregacja poprzez SNAPSHOT bazy danych i widoki SNAPDB commit_sql_stmts + int_commitsv+ Rollback_sql_stmts + int_rollbacks SELECT db_name, select snapshot_timestamp, connections_top, total_cons, insert commit_sql_stmts + int_commits update + rollback_sql_stmts + int_rollbacks as UOWs FROM sysibmadm.snapdb 19 UOW delete

Możliwe KPI Zapytania SQL Poprzez SNAPSHOT bazy danych i widoki SNAPDB SELECT_SQL_STMTS UID_SQL_STMTS (Update/Insert/Delete statements) DDL_SQL_STMTS COMMIT_SQL_STMTS 20 SELECT db_name, snapshot_timestamp, select_sql_stmts, uid_sql_stmts, ddl_sql_stmts, commit_sql_stmts FROM sysibmadm.snapdb;

Automatyzacja procesów Instrukcje SQL są odpowiednie do zadania ale muszą byc uruchamiana regularnie: W zależności od zapotrzebowania: godzinowa / dobę Wyniki muszą być przechowywane, aby zapobiec utracie danych Rozwiązanie 1: Tworzenie tabel do przechowywania wyników skrypty DB2 zautomatyzowane np. poprzez zastosowanie Centrum zadań DB2 ALE: db2tc jest przestarzała i DAS jest konieczne (często nie są dostępne) Rozwiązanie 2: Tworzenie tabel do przechowywania wyników SQL w procedurze przechowywanej Automatyzacja przez ATS (Automated Task Scheduler) 21

Automatyzacja procesów - ATS ATS - Administrative Task Scheduler Dostępne od DB2 9.5 Fixpack 2 Zadanie administracyjne = procedura składowana - na przykład ADMIN_CMD () Autonomic Computing DB2 Demon (db2acd) - sprawdza, co 5 minut, jeśli istnieje nowe zadania - jest niezależne od DAS & Task Center - zarządza również zadaniami Health Monitor i Automatic Maintenance Utilities Gdy zostanie osiągnięty zdefiniowany harmonogram ADC łączy się z bazą danych i wykonuje zadanie w sytuacjach błędów - Wejście błędu jest dodawany do powiadamiania i pliku db2diag.log - To będzie ponawiał wykonanie co 60 sekund 22

Automatyzajca procesów - ATS Aktywacja ATS'a poprzez DB2_ATS_ENABLE: db2set DB2_ATS_ENABLE = YES TRUE 1 ON SYSTOOLSPACE jest konieczny! ACTIVATE DATABASE BUK01] ATS zależy od tabel SYSTOOLSPACE do przechowywania informacji historycznych danych i konfiguracji. Większość użytkowników ma już te tablespace'y zdefiniowane w bazie danych. Można to sprawdzic za pomocą następującego SQL'a: db2 select TBSPACE from SYSCAT.TABLESPACES where TBSPACE = SYSTOOLSPACE' 23

Automatyzacja procesów - ATS Uruchomienie nowego zadania z ADMIN_TASK_ADD Zostanie wykonane z prawami użytkownika, który je wykonuje generuje ADMINTASKS & ADMINTASKSTATUS tabele Syntax for SYSPROC.ADMIN_TASK_ADD >>-CALL-SYSPROC.ADMIN_TASK_ADD--(--name-,-------------------------> >--+-begin-timestamp-+-,--+-end-timestamp-+-,---------------------> '-NULL------------' '-NULL----------' Format cron UNIX >--+-max-invocations-+-,--+-schedule-+-,--+-procedure-schema-+-,--> '-NULL------------' '-NULL-----' >--procedure-name-,--+-procedure-input-+-,--+-options-+-,---------> '-NULL------------' '-NULL----' >--+-remarks-+--------------------------------------------------->< '-NULL----' ATS tasks 24

Automatyzacja procesów - ATS Zadanie ADMIN_TASK_ADD przykład: CALL SYSPROC.ADMIN_TASK_ADD ( 'DAILY TAB_IND_UTIL_SIZE', NULL, NULL, NULL, '35 14 * * *', 'DB2INST1', 'TAB_IND_UTIL_SIZE', NULL, NULL, NULL ) ; Kwalifikator procedury Nazwa procedury 0 Minuta Pełna godzina 14 Godzina 0-23 co godzina * Dzień miesiąca każdy dzień * miesiąc 1-12 * Dzień tygodnia 0-7 25

Automatyzacja procesów - ATS Zadanie ADMIN_TASK_ADD przykład 2 db2 call SYSPROC.ADMIN_TASK_ADD ( 'PROJ BACKUP', NULL, NULL, NULL, '0 1 * * sun', 'SYSPROC', 'ADMIN_CMD', 'values(''backup database P1 online to /home/backup'') ', NULL, NULL ) 26

Automatyzacja procesów - ATS Sprawdzenie zadań ATS poprzez widok administracyjny ADMIN_TASK_LIST: 27 select NAME, OWNER, BEGIN_TIME, END_TIME, MAX_INVOCATIONS, SCHEDULE, PROCEDURE_SCHEMA, PROCEDURE_NAME, PROCEDURE_INPUT from SYSTOOLS.ADMIN_TASK_LIST Monitorowanie zadań ATS poprzez widok administracyjny ADMIN_TASK_STATUS: select NAME, BEGIN_TIME, END_TIME, INVOCATION, STATUS from SYSTOOLS.ADMIN_TASK_STATUS Status: RUNNING - zadanie jest uruchomione COMPLETED - zadanie przebiegały pomyślnie NOTRUN - zadanie nie można uruchomić UNKNOW - stan zadania jest nieznany

Automatyzacja procesów - ATS Widok ADMIN_TASK_STATUS zwraca również szereg kolumn z przydatny mi informacjami diagnostycznymi. select TASKID, STATUS, SQLCODE, SQLSTATE, RC, SQLERRMC from SYSTOOLS.ADMINTASKSTATUS where TASKID=61; 61 COMPLETE -440 42884 0 x'4442412e6c6f61645f61646d696e5f6d6f6e5f6765745f6d656d6f72795f70 6F6F6CFF50524F434544555245 Aby odczytać powyższe informacje diagnostyczne możemy użyć wbudowanej funkcji skalarnej: select TASKID, STATUS, varchar( sqlerrm( 'SQL' char( abs(sqlcode) ), SQLERRMC, x 42', 'en_us', 1 ), 256) as MSG_TXT from SYSTOOLS.ADMINTASKSTATUS where TASKID=61 61 COMPLETE SQL0440N No authorized routine named "D" of type "A.load_admin_mon_get_memory_pool" having compatible arguments was found. 28

Automatyzacja procesów - ATS Modyfikacja zadania z procedurą ADMIN_TASK_UPDATE: Składnia podobna do ADMIN_TASK_ADD Ale: Nazwa procedury i / lub - parametr nie może być zmieniony >>-CALL-SYSPROC.ADMIN_TASK_UPDATE--(--name-,----------------------> >--+-begin-timestamp-+-,--+-end-timestamp-+-,---------------------> '-NULL------------' '-NULL----------' >--+-max-invocations-+-,--+-schedule-+-,--+-options-+-,-----------> '-NULL------------' '-NULL-----' '-NULL----' >--+-remarks-+--------------------------------------------------->< '-NULL----' 29

Automatzyacja procesów - ATS >>-CALL-SYSPROC.ADMIN_TASK_REMOVE ---------------------------------> (--name-,------------+-end-timestamp-+--------------------------------------> '-NULL--' '-NULL--------------' NAME End- Timestamp Efekt NULL NULL Wszystkie zadania i wpisy będą usuwane nazwa NULL Zadanie i wszystkie stany wpisów zostaną usunięte NULL wartość Wszystkie wpisy statusu starsze niż <wartość> zostaną usunięte, ale nie zadania nazwa wartość Wszystkie wpisy stan zadania <nazwa> starszy niż <wartość> zostaną usunięte, ale nie zadania 30

Automatyzacja procesów - ATS Bezpieczeństwo - interfejs ATS ogranicza operacje zadań do właścicieli i użytkowników uprzywilejowanych (SYSADM, SYSCTRL, SYSMAINT) - inni użytkownicy nie mogą przeglądać lub manipulować zadaniami - włączenie audytu śledzącego zadania ATS'a create audit policy ATSPOLICY categories execute with data status both error type audit audit table SYSPROC.ADMINTASKS using policy ATSPOLICY audit table SYSPROC.ADMINTASKSTATUS using policy ATSPOLICY commit 31

Automatyzacja wykreowanie tablic Tablice są niezbędne do przechowywania wyników: indywidualnie dla każdego zapytania monitoringu ewentualnie w oddzielnym table space-ie dodatkowe informacje, takie jak znaczniki czasu lub nazw baz danych - mogą zostać dodane create table dba.dbp_mem AS ( select * from table (sysproc.admin_get_dbp_mem_usage()) as t ) with no data in PERFORMTS ; --GROUP BY DB_NAME order by DB_NAME) 32

Automatyzacja wykreowanie tablic Przykłady: Suma połączeń do bazy danych zdefiniowana jako: create table dba.conn_db_summary AS ( SELECT db_name, snapshot_timestamp, connections_top, total_cons, commit_sql_stmts + int_commits + rollback_sql_stmts + int_rollbacks as UOWs FROM sysibmadm.snapdb) with no data in PERFORMTS ; create table dba.cpu_db_summary AS ( SELECT SUBSTR(DB_NAME,1,8) AS DB_NAME, SUM(AGENT_USR_CPU_TIME_S) as SUM_USER_CPU_S, SUM(AGENT_USR_CPU_TIME_MS) as SUM_USER_CPU_MS, SUM(AGENT_SYS_CPU_TIME_S) as SUM_SYS_CPU_S, SUM(AGENT_SYS_CPU_TIME_MS) as SIM_SYS_CPU_MS, SNAPSHOT_TIMESTAMP FROM TABLE (SNAP_GET_APPL_V95(CAST(NULL AS VARCHAR(128)),-1)) GROUP BY DB_NAME,SNAPSHOT_TIMESTAMP order by DB_NAME) with no data in PERFORMTS ; Suma CPU zdefiniowana jako: 33

Automatyzacja czyszczenie tablic Z czasem tabele mogą się zapełnić. Triggery mogą być stosowane do automatycznego czyszczenia Indywidualne dla każdego monitoringu CREATE TRIGGER dba.bphit_prune AFTER INSERT ON dba.bphit FOR EACH STATEMENT MODE DB2SQL BEGIN ATOMIC DELETE FROM dba.bphit WHERE TIMESTAMP < (timestamp(current timestamp 90 days));-- END; 34

Automatyzacja - Procedury W jaki sposób można zakodować procedurę składowaną: - Poprzez Data Studio - Napisanie procedury ręcznie: CREATE PROCEDURE MON_PROC ( ) P1: BEGIN INSERT INTO monitor.mon_db_summary ( SELECT SYSIBMADM.MON_DB_SUMMARY);-- END P1 35

Procedury przykład 1 CREATE PROCEDURE UOW_DB_PROC ( ) P1: BEGIN INSERT INTO DBA.UOW_DB_SUMMARY ( SELECT db_name, snapshot_timestamp, select_sql_stmts, uid_sql_stmts, ddl_sql_stmts, commit_sql_stmts FROM sysibmadm.snapdb);-- END P1 ; W przypadku gdy jest taka kolumna w tablicy 36

Procedury przykład 2 CREATE PROCEDURE TAB_IND_UTIL_SIZE ( ) P1: BEGIN INSERT INTO DBA.TAB_IND_UTIL_SIZE ( select current timestamp, char(tabname, 70), data_object_l_size, index_object_l_size from sysibmadm.admintabinfo where tabschema = 'UK' order by data_object_l_size desc);-- END P1 ; Gdy brak timestamp a w tablicy to możemy użyć frazy current timestamp 37

Procedury przykład 3 CREATE PROCEDURE SELMAXID9 ( IN sch_name VARCHAR(128), IN tb_name VARCHAR(50)) LANGUAGE SQL BEGIN DECLARE s1 STATEMENT; DECLARE cur CURSOR FOR s; DECLARE cur1 CURSOR FOR s1;... SELECT c.colname, c.typename, c.generated, s.maxvalue, s.minvalue, s.nextcachefirstvalue, s.increment INTO col_name, col_type, is_identity, col_maxvalue, col_minvalue, col_cur_value, col_increment from syscat.sequences s, syscat.tables t, syscat.columns c where s.seqschema=t.tabschema... SET stmttxt1 = 'SELECT MAX("' col_name '"), MIN("' col_name '") FROM "' sch_name '"."' tb_name '"'; PREPARE s1 FROM stmttxt1; SET colc_maxvalue = 0; OPEN cur1; FETCH cur1 INTO colc_maxvalue,colc_minvalue ; CLOSE cur1; EXECUTE IMMEDIATE 'insert into dba.test9 values (''aixuk1'',''db2inst1'',''db2_978'',''buk01db'',''' sch_name ''',''' tb_name ''',''' col_name ''',''' col_type ' '',''' is_identity ''',' col_maxvalue ', ' col_minvalue ',' col_increment ', CURRENT DATE, ' col_cur_value ',' colc_maxvalue ', ' colc_minvalue ')'; END @ 38

Prezentacja danych Surowe dane analizuje się bardzo ciężko Konieczność przekształcenia zebranych danych metody graficzne, liczbowe, histogramy Przygotowywanie raportów wybrać dodatkowe użyteczne kolumny jak DATE / TIMESTAMP trzymamy zapytanie tak aby było widoczne na raporcie możliwość utworzenia widoków 39

09/19/2013 09/20/2013 09/20/2013 09/20/2013 09/20/2013 09/20/2013 09/20/2013 09/20/2013 09/27/2013 09/27/2013 09/27/2013 10/03/2013 10/23/2013 11/19/2013 12/11/2013 01/10/2014 01/30/2014 02/28/2014 03/19/2014 04/18/2014 05/13/2014 06/06/2014 06/30/2014 07/24/2014 08/07/2014 09/10/2014 10/03/2014 10/28/2014 11/20/2014 12/12/2014 01/09/2015 01/30/2015 02/26/2015 Prezentacja danych Formatowanie danych DB-Size 30000000000000 25000000000000 20000000000000 15000000000000 10000000000000 DB_SIZE DB_CAPACITY 5000000000000 0 40

02/19/2015 02/19/2015 02/20/2015 02/21/2015 02/21/2015 02/22/2015 02/23/2015 02/23/2015 02/24/2015 02/25/2015 02/25/2015 02/26/2015 02/27/2015 02/27/2015 02/28/2015 03/01/2015 03/01/2015 03/02/2015 03/03/2015 03/03/2015 03/04/2015 03/05/2015 02/19/2015 02/19/2015 02/20/2015 02/20/2015 02/21/2015 02/21/2015 02/22/2015 02/23/2015 02/23/2015 02/24/2015 02/24/2015 02/25/2015 02/26/2015 02/26/2015 02/27/2015 02/27/2015 02/28/2015 02/28/2015 03/01/2015 03/02/2015 03/02/2015 03/03/2015 03/03/2015 03/04/2015 03/05/2015 Prezentacja danych Formatowanie danych: Connections 12000 TOTAL_CONS per day 8000000 UOWS per day 10000 7000000 8000 6000000 5000000 6000 4000 4000000 3000000 2000000 2000 0 1000000 0 41

03/01/2015 03/01/2015 03/01/2015 03/01/2015 03/02/2015 03/02/2015 03/02/2015 03/02/2015 03/03/2015 03/03/2015 03/03/2015 03/03/2015 03/04/2015 03/04/2015 03/04/2015 03/04/2015 03/05/2015 03/05/2015 Tytuł osi Prezentacja danych Formatowanie danych: UOW 6 000 000 000,00 5 000 000 000,00 4 000 000 000,00 3 000 000 000,00 UOW COMMIT_SQL_STMTS UID_SQL_STMTS SELECT_SQL_STMTS 03/01/2015 SELECT_SQL_STMTS UID_SQL_STMTS DDL_SQL_STMTS COMMIT_SQL_STMTS 2 000 000 000,00 1 000 000 000,00 0% 4% 21% 0,00 75% 42

03/01/2015 03/01/2015 03/01/2015 03/01/2015 03/01/2015 03/01/2015 03/01/2015 03/02/2015 03/02/2015 03/02/2015 03/02/2015 03/02/2015 03/02/2015 03/02/2015 03/03/2015 03/03/2015 03/03/2015 03/03/2015 03/03/2015 03/03/2015 03/03/2015 03/04/2015 03/04/2015 03/04/2015 03/04/2015 03/04/2015 03/04/2015 03/04/2015 03/05/2015 03/05/2015 03/05/2015 Prezentacja danych Formatowanie danych: DB2 CPU 900000000 800000000 700000000 600000000 500000000 400000000 300000000 200000000 SUM_USER_CPU_S SUM_USER_CPU_MS SUM_SYS_CPU_S SIM_SYS_CPU_MS 100000000 0 43

Prezentacja danych Formatowanie Wielkość tablicy 250000 Przyrosty danych i indeksów dla tablicy "x" 200000 150000 INDEX[KB] DATA[KB] 100000 50000 0 44

Prezentacja danych Formatowanie: Obciążenie motoru przez poszczególne aplikacje (za jeden dzień): 45 400000000 APP10 APP11 350000000 APP12 APP13 300000000 APP14 APP15 250000000 APP16 APP18 200000000 APP19 APP2 150000000 APP20 APP4 APP5 100000000 APP6 APP7 50000000 APP8 APP9 0

Dalsze informacje Proste wykreowanie procedury za pomocą DATA STUDIO Bieżąca wersja DB2 10.5 Express-C http://www-01.ibm.com/software/data/db2/express-c/download.html Data Studio w. 4.1.1 http://www-01.ibm.com/support/docview.wss?uid=swg24037681 Przed podłączeniem do bazy danych DB2 z Microsoft Office a: https://support.office.com/en-us/article/connect-to-an-ibm- DB2-database-0163e2e8-2944-4f24-85c0-10ecb1bc731f 46

Dalsze informacje Data Studio : - Programowanie - Tworzenie procedury składowanej - Nowy projekt Data Development 47

Dalsze informacje Kreowanie procedury cd. 48

Dalsze informacje Kreowanie procedury 49

Dalsze informacje Kreowanie procedury 50

Dalsze informacje Wdrażanie procedury 51

Dalsze informacje Uruchomienie procedury 52

Dalsze informacje Formatowanie graficzne W naszym przypadku Excel 2010 Dodatek do Excela Wybieramy: Power Query Z bazy danych 53

Dalsze informacje Formatowanie graficzne Z programu bazy danych IBM DB2 Importuj dane z bazy danych programu DB2 Localhost: SAMPLE 54

Dalsze informacje Konfiguracja połączenia 55

Dalsze informacje Konfiguracja Pobranie danych z tablicy DBA.CONN_DB_SUMMARY 56

Dalsze informacje Pobranie danych: Zamknij i załaduj do 57

Dalsze informacje Pobranie danych prezentacja graficzna 58

Dalsze informacje Pobranie danych Open Calc: Plik -> Nowy -> Baza Danych Połączenie ODBC musi istnieć! 59

Dalsze informacje Pobranie danych Open Calc: Źródło danych zarejestrowane W ODBC 60

Dalsze informacje Pobranie danych: 61 Wybieramy: - Kwerendy - Utwórz kwerendę SQL

Dalsze informacje Pobranie danych: Uruchomienie zapytania Uwaga: Nazwa tablicy oraz pól pisane z dużych liter 62

Dalsze informacje Pobranie danych: Źródło danych 63

Dalsze informacje Pobranie danych: 64

Dziękuje za uwagę!!! Tomasz Kraszucki Asseco Poland S.A Tomasz.Kraszucki@asseco.pl Tel. 503-180-305

66 Tytuł dla nastepnych slajdow