System zarzadzania ˛ bazami danych IBM DB2 Anna Fiedorowicz Wydział Matematyki, Informatyki i Ekonometrii 28.02.2017 Literatura [1] Raul Chong, Ian Hakes, Rav Ahuja, Wprowadzenie do DB2 Express-C, Wydanie II, IBM Corporation, 2008 (e-book, wydanie uaktualnione do wersji DB2 9.5). [2] Raul Chong, Clara Liu, Sylvia F. Qi, Dwaine R. Snow, Zrozumieć DB2. Nauka na przykładach, Wydawnictwo Naukowe PWN, 2006. [3] Whei-Jen Chen, John Chun, Naomi Ngan, Rakesh Ranjan, Manoj K. Sardana, DB2 Express-C: The Developer Handbook for XML, PHP, C/C++, Java, and .NET, IBM Redbooks, 2006 (e-book). [4] Rafe Coburn, SQL dla każdego, Helion, 2001 [5] Dokumentacja dost˛epna na stronie IBM. Krótka historia IBM DB2 I 1970 - IBM opracowuje model relacyjnych baz danych (System-R) I 1974 - powstaje j˛ezyk SEQUEL (późniejszy SQL) I system na platformy mainframe, jak Virtual Machine (VM), Virtual Storage Extended (VSE) i Multiple Virtual Storage (MVS). I 1983 - DATABASE 2 (DB2) (wersja na platform˛e Multiple Virtual Storage (MVS)) I 1987 - DB2 jako pierwsza relacyjna baza danych przeznaczona na platform˛e otwarta˛ (dla systemu OS/2) I lata 90-te - powstaja˛ wersje DB2 dla innych systemów operacyjnych (Linux, Unix, Windows) I rok 1996 - powstaje DB2 UDB v 5 (Universal DataBase): obsługuje wiele różnych systemów operacyjnych, umożliwia przechowywanie każdego rodzaju danych elektronicznych (nie tylko relacyjnych, ale też audio, video, dokumentów tekstowych) Najnowsze wersje DB2: 2013 - DB2 10.5 (LUW: na systemy Linux, UNIX, Windows) 2016 - DB2 11.1 Wspierane platformy systemowe Aktualnie serwer IBM DB2 jest dost˛epny dla systemów: AIX, Solaris, HP-UX, Windows (32 bit i 64 bit) Linux, iSeries, zSeries Edycje DB2 I Advanced Enterprise Server Edition i Enterprise Server Edition — bez ograniczeń na wykorzystywane zasoby, przeznaczone dla dużych i średnich przedsi˛ebiorstw; I Advanced Workgroup Server Edition i Workgroup Server Edition — ograniczenia na ilość wykorzystywanych procesorów (16) i pami˛eci RAM (128GB), sektor średnich przedsi˛ebiorstw; I Direct Advanced Edition i Direct Standard Edition — z możliwościa˛ wykorzystania w chmurze; I Express Edition — W pełni funkcjonalny serwer danych DB2, na poziomie podstawowym, dla małych i średnich przedsi˛ebiorstw. I Developer Edition — dla jednego twórcy aplikacji, umożliwia projektowanie, kompilowanie i tworzenie prototypów aplikacji, nie można jej używać jako systemu produkcyjnego. I Express-C Edition — Bezpłatna, podstawowa edycja serwera DB2, przeznaczona dla programistów i partnerów. Łatwa w obsłudze i instalacji. Zawiera opcje automatycznego zarzadzania ˛ i wszystkie podstawowe możliwości produktów DB2, takie jak pureXML. Ograniczenie na wykorzystane zasoby: procesory 2, pami˛eć 16GB. Skad ˛ wziać ˛ dalsze informacje? I Strona główna produktu http://www-01.ibm.com/software/data/db2/ I Centrum informacyjne IBM http://www-01.ibm.com/support/knowledgecenter/ SSEPGG/welcome I Ebook: Wprowadzenie do DB2 Express-C ftp://ftp.software.ibm.com/software/data/ db2/express-c/wiki/Wprowadzenie_do_DB2_ExpressC_PL.pdf Instalacja produktu IBM DB2 Express-C Uwaga. Instalacj˛e DB2 Express-C na systemie Windows należy wykonać z konta użytkownika o uprawnieniach Administratora systemu. Instalacja za pomoca˛ graficznego kreatora. Po pobraniu i rozpakowaniu plików instalatora uruchamiamy kreator za pomoca: ˛ pliku setup.exe w katalogu EXPC. Wybieramy opcj˛e zainstaluj nowy produkt. Na kolejnych ekranach kreatora, wybieramy ustawienia domyślne: I typ instalacji (typowa) I wprowadzamy nazw˛e użytkownika systemu, który b˛edzie zarzadzał ˛ instancja˛ i innymi usługami (można wybrać istniejace ˛ konto użytkownika lokalnego systemu, ale lepiej jest stworzyć osobne konto użytkownika, domyślna nazwa db2admin) I po zakończeniu instalacji warto zrestartować system! Co zostało zrobione podczas instalacji? I Instalacja oprogramowania I Utworzony użytkownik - administrator DB2. Utworzone usługi: I I I I Instancja DB2 - DB2COPY1 Serwer administracyjny DB2DAS - DB2DAS00 dodatkowe usługi (DB2 Governor, DB2 Licence Server, ...) Co zostało zrobione podczas instalacji? I Instalacja oprogramowania I Utworzony użytkownik - administrator DB2. I Utworzone usługi: I I I Instancja DB2 - DB2COPY1 Serwer administracyjny DB2DAS - DB2DAS00 dodatkowe usługi (DB2 Governor, DB2 Licence Server, ...) Aby sprawdzić poprawność instalacji, użyjemy poleceń procesora wiersza komend DB2: I db2level wyświetla informacje o zainstalowanym produkcie (wersja, pakiety poprawek, katalog, itp.) I db2licm -l informacje o licencji I db2val walidacja instalacji - sprawdza poprawność podstawowych funkcji serwera DB2. Łaczenie ˛ si˛e z baza˛ Dost˛epne narz˛edzia: Pierwsze kroki w programie DB2: umożliwia szybkie instalowanie i konfigurowanie produktu, udost˛epnia odsyłacze do przydatnych materiałów referencyjnych, typowych zadań i narz˛edzi, umożliwia stworzenie przykładowej bazy danych SAMPLE (o ile nie została stworzona podczas instalacji). Polecenie tekstowe: Procesor wiersza komend DB2 - zadania administracyjne i SQL Narz˛edzia graficzne: IBM Data Studio - rozbudowane narz˛edzie, bazujace ˛ na Eclipsie, umożliwia administracj˛e bazami danych, wspomaga tworzenie skryptów SQL, XQuery, procedur zapami˛etanych,... Polecenia wiersza komend Procesor wiersza komend można uruchamiać w dwóch trybach: interaktywnym (uruchamianym poleceniem db2) oraz w trybie linii komend. W trybie interaktywnym poleceń nie poprzedzamy db2. I Polecenia administracyjne I I I I I Narz˛edzia systemowe I I I db2 list applications db2 force application all db2 create database baza1 ... db2start db2stop Polecenia j˛ezyka SQL I I I I db2 connect to SAMPLE db2 connect reset db2 select * from employee ... I I I I I I I I I Jak sprawdzić, kto jest podłaczony ˛ do DB2? db2 list applications Jak rozłaczyć ˛ wszystkich użytkowników od bazy? db2 force application all Jak sprawdzić list˛e dost˛epnych poleceń? db2 ? jak sprawdzić składni˛e polecenia, np. backup? db2 ? backup Jak podłaczyć ˛ si˛e do bazy? db2 connect to nazwa_bazy Jak podłaczyć ˛ sie do bazy jako inny użytkownik? db2 connect to nazwa_bazy user login using hasło Jak odłaczyć ˛ si˛e od bazy? db2 connect reset Jakiego użytkownika użyłem przy połaczeniu? ˛ db2 values current user Do jakiej bazy jestem podłaczony? ˛ db2 get connection state I Wersja DB2: db2level I Informacje o licencji: db2licm -l I Uruchomienie bieżacej ˛ instancji: db2start I Zatrzymanie bieżacej ˛ instancji: db2stop Instancja nie zostanie zatrzymana, jeżeli sa˛ aktywne połaczenia, ˛ aby wymusić zatrzymanie instancji (i zamkni˛ecie wszystkich należy użyć polecenia połaczeń) ˛ db2stop force Uwagi: W trybie interaktywnym (wejście w tryb interaktywny - polecenie db2), nie poprzedzamy poleceń db2. Aby wyjść z trybu interaktywnego - polecenie terminate. Aby wyjść z linii komend - quit. Środowsko DB2 Podstawowe środowisko serwera DB2 składa si˛e z instancji, bazy danych oraz zwiazanych ˛ z nimi plików konfiguracyjnych. Podczas instalacji w systemie Windows tworzona jest instancja domyślnie o nazwie DB2COPY1, nasłuchujaca ˛ na porcie 50000. Instancja jest to niezależne środowisko, w którym moga˛ być uruchamiane aplikacje oraz tworzone bazy danych. Środowsko DB2 Podstawowe środowisko serwera DB2 składa si˛e z instancji, bazy danych oraz zwiazanych ˛ z nimi plików konfiguracyjnych. Podczas instalacji w systemie Windows tworzona jest instancja domyślnie o nazwie DB2COPY1, nasłuchujaca ˛ na porcie 50000. Instancja jest to niezależne środowisko, w którym moga˛ być uruchamiane aplikacje oraz tworzone bazy danych. Na serwerze można tworzyć wiele instancji, np. do przechowywania bazy do celów produkcyjnych; w roli środowiska testowego. Wszystkie te instancje sa˛ niezależne (czynności wykonywane na jednej instancji nie wpływaja˛ na pozostałe). Rysunek: Serwer DB2 z dwoma instancjami. Każda instancja ma swój własny numer portu Środowsko DB2 Podstawowe środowisko serwera DB2 składa si˛e z instancji, bazy danych oraz zwiazanych ˛ z nimi plików konfiguracyjnych. Podczas instalacji w systemie Windows tworzona jest instancja domyślnie o nazwie DB2COPY1, nasłuchujaca ˛ na porcie 50000. Instancja jest to niezależne środowisko, w którym moga˛ być uruchamiane aplikacje oraz tworzone bazy danych. W obr˛ebie każdej z dost˛epnych instancji możemy utworzyć wiele baz danych. Baza danych jest kolekcja˛ obiektów, takich jak tabele, widoki, indeksy, itd. Każda baza jest niezależna i nie współdzieli swoich obiektów z innymi bazami danych. Rysunek: Serwer DB2: dwie instancje, w obr˛ebie każdej utworzono bazy danych Środowsko DB2 Podstawowe środowisko serwera DB2 składa si˛e z instancji, bazy danych oraz zwiazanych ˛ z nimi plików konfiguracyjnych. Serwer DB2 może być skonfigurowany na czterech różnych poziomach: I zmienne środowiskowe; I rejestr profilu DB2; I plik konfiguracyjny menedżera bazy danych (dbm cfg); I plik konfiguracyjny bazy danych (db cfg). Środowsko DB2 '%6HUZHU:LQGRZV ϮdžƉƌĞƐƐͲ^ĞƌǀĞƌ ,QVWDQFMD'%&23< ŵŝĞŶŶĞƑƌŽĚŽǁŝƐŬŽǁĞ ,QVWDQFMD1RZD,QVW /ŶƐƚĂŶĐũĂϮKWzϭ WůŝŬŬŽŶĨŝŐƵƌĂĐLJũŶLJ ŵĞŶĂĚǏĞƌĂďĂnjLJ ĚĂŶLJĐŚ ĂnjĂĚĂŶLJĐŚ^DW> WůŝŬ ŬŽŶĨŝŐƵƌĂĐLJũŶLJ ďĂnjLJĚĂŶLJĐŚ ZĞũĞƐƚƌ ƉƌŽĨŝůƵϮ 3257 WKZd 3257 Rysunek: Parametry konfiguracyjne DB2 Środowsko DB2 '%6HUZHU:LQGRZV ϮdžƉƌĞƐƐͲ^ĞƌǀĞƌ ,QVWDQFMD'%&23< ŵŝĞŶŶĞƑƌŽĚŽǁŝƐŬŽǁĞ ,QVWDQFMD1RZD,QVW /ŶƐƚĂŶĐũĂϮKWzϭ WůŝŬŬŽŶĨŝŐƵƌĂĐLJũŶLJ ŵĞŶĂĚǏĞƌĂďĂnjLJ ĚĂŶLJĐŚ ĂnjĂĚĂŶLJĐŚ^DW> WůŝŬ ŬŽŶĨŝŐƵƌĂĐLJũŶLJ ďĂnjLJĚĂŶLJĐŚ ZĞũĞƐƚƌ ƉƌŽĨŝůƵϮ 3257 WKZd 3257 Zmienne środowiskowe sa˛ umieszczone na poziomie systemu operacyjnego serwera. Plik konfiguracyjny menedżera bazy danych jest na poziomie instancji. Parametry konfiguracji bazy danych - na poziomie bazy danych. Rejestr profilu DB2 określa parametry konfiguracyjne, które moga˛ dotyczyć serwera lub instancji. Środowsko DB2 Zmienne środowiskowe sa˛ zmiennymi ustawianymi na poziomie systemu operacyjnego serwera. Zmienne te, to np. DB2INSTANCE - wskazuje na bieżac ˛ a˛ (aktywna) ˛ instancj˛e, na której pracuje użytkownik i na rzecz której sa˛ wykonywane polecenia DB2. Uwaga. może być tylko jedna bieżaca ˛ instancja. DB2PATH - wskazuje ścieżk˛e do plików wykonywalnych DB2. Odczytanie bieżacej ˛ instancji: db2 get instance (odczyta wartość zmiennej DB2INSTANCE). Ustawienie bieżacej ˛ instancji: db2 set dbinstance=nazwainstancji. Środowisko DB2 Rejestr profilu DB2 określa parametry konfiguracyjne, które moga˛ dotyczyć serwera lub instancji. Znaczna cz˛eść środowiska DB2 jest kontrolowana z tego poziomu. Rejestr profilu DB2 pełni rol˛e głównego repozytorium dla kluczowych czynników kontrolnych, które wpływaja˛ na serwer DB2 poza instancja˛ oraz dla ustawień konfiguracyjnych bazy danych. Z tego poziomu można ustawiać np. protokoły komunikacyjne, sposób przydzielania pami˛eci, definiować, jak system ma si˛e zachować w określonych sytuacjach. Rejestr profilu składa si˛e z czterech cz˛eści: zmienne defniowane na poziomie instancji (Instance Level); globalnie (Global Level); na poziomie w˛ezła (dla środowiska partycjonowanego) (Instance Node Level); informacja o wszystkich instancjach w systemie (Instance Profile Registry) (aby wyświetlić nazwy wszystkich instancji: db2ilist). Środowisko DB2. Rejestr profilu DB2 DB2 używa bardzo wielu zmiennych rejestru. W celu odczytu lub zmiany wartości zmiennych profilu rejestru DB2, używamy polecenia db2set. Wyświetlenie, jakie sa˛ możliwe zmienne: db2set -lr. Aby odczytać, jakie zmienne sa˛ aktualnie ustawione dla środowiska: db2set -all. Środowisko DB2. Rejestr profilu DB2 Zmienne określone na poziomie instancji sa˛ oznaczone [i], globalne: [g] (jeżeli zmienna jest ustawiona na poziomie instancji, przesłania odpowiednie ustawienie globalne), środowiska: [e]. Środowisko DB2. Rejestr profilu DB2 Zmiany zmiennych rejestru powinno si˛e dokonywać za pomoca˛ polecenia db2set. Wówczas nie zachodzi konieczność restartowania serwera, aby zmiany te zostały uwzgl˛ednione (sa˛ wprowadzane dynamicznie). Ustawienie wartości parametru (dla bieżacej ˛ instancji): db2set parametr=wartość, globalnie: db2set parametr=wartość -g. Środowisko DB2. Plik konfiguracyjny menedżera bazy Plik konfiguracyjny menedżera bazy danych zawiera parametry, które wpływaja˛ na dana˛ instancj˛e i wszystkie bazy danych przez nia˛ zarzadzane. ˛ Dost˛ep z poziomu linii komend: db2 get dbm cfg - pobiera informacje o konfiguracji menedżera bazy danych; db2 update dbm cfg using <nazwa_parametru> <wartość> modyfikacja wartości parametru. Wiele parametrów jest dynamicznych (ich zmiany sa˛ widoczne natychmiast), niektóre wymagaja˛ zatrzymania (db2stop) i ponownego uruchomienia instancji (db2start). (Konfigurowanie instancji można też przeprowadzić z poziomu IBM Data Studio.) Środowisko DB2. Plik konfiguracyjny bazy danych Plik konfiguracyjny menedżera bazy danych zawiera parametry, które wpływaja˛ na dana˛ baz˛e danych. Dost˛ep z poziomu linii komend: db2 get db cfg for <nazwa_bazy_danych> - pobiera informacje o konfiguracji bazy danych (nie wymaga, aby użytkownik był podłaczony ˛ do danej bazy); db2 update db cfg using <nazwa_parametru> <wartość> modyfikacja wartości parametru. (Konfigurowanie bazy danych można też przeprowadzić z poziomu IBM Data Studio.) Uwaga. nie wszystkie parametry w pliku konfiguracyjnym bazy moga˛ zostać zmienione - można zmieniać tylko te, które maja˛ określone nazwy. Architektura DB2 - model przechowywania danych Podczas tworzenia bazy danych automatycznie tworzone sa˛ inne obiekty: przestrzenie tablicowe, tabele, pula buforów i pliki logów. Strona - najmniejsza jednostka przchowujaca ˛ dane w DB2. Rozmiar strony może byc równy: 4KB, 8KB,16KB, 32KB. Grupa stron stanowi ekstent (inaczej obszar). DB2 pracuje na całych ekstentach, a nie na pojedynczych stronach. Pula buforów - pami˛eć podr˛eczna dla danych (tablicowych i indeksowych). Poprawia wydajność (zmniejsza ilość sekwencyjnych operacji I/O, wykorzystuje asynchroniczne operacje czytania i zapisu danych). DB2 przewiduje, które strony b˛eda˛ potrzebne i ładuje je z dysku do puli buforów. Powinna istnieć przynajmniej jedna pula buforów dla każdej bazy danych oraz dla każdej wielkości strony przestrzeni tablicowej. Architektura DB2 - model przechowywania danych Przestrzenie tablicowe należy rozumieć jako logiczna˛ warstw˛e pomi˛edzy logicznymi tabelami, a fizycznymi zasobami, takimi jak np. dysk lub pami˛eć. I Przestrzeń tablicowa SYSCATSPACE zawiera tabele katalogu, inaczej słownik danych. Zawieraja˛ informacje o systemie, które nie powinny być modyfikowane lub usuwane. W przeciwnym wypadku baza danych może nie działać poprawnie. I Przestrzeń tablicowa TEMPSPACE1 jest używana przez DB2, kiedy zaistnieje potrzeba wykorzystania dodatkowego miejsca, aby wykonać pewne czynności, np. sortowanie. I Przestrzeń tablicowa USERSPACE1 jest zwykle używana do przechowywania tabel użytkownika (dla których użytkownik nie określi przestrzeni tablicowej podczas tworzenia tabeli). I Można utworzyć własna˛ przestrzeń tablicowa˛ (polecenie CREATE TABLESPACE). W obr˛ebie utworzonej przestrzeni tablicowej można tworzyć kolejne obiekty, jak tabele, widoki, indeksy.