740 likes | 891 Views
Tworzenie przestrzeni tabel. CREATE [UNDO] TABLESPACE nazwa przestrzeni tabel DATAFILE nazwa pliku danych rozmiar [instrukcja przechowywania] [BLOCKSIZE rozmiar [K]] [TEMPORARY] [EXTENT MANAGEMENT DICTIONARY] [EXTENT MANAGEMENT LOCAL[AUTOALLOCATE]]
E N D
Tworzenie przestrzeni tabel CREATE [UNDO] TABLESPACE nazwa przestrzeni tabel DATAFILE nazwa pliku danych rozmiar [instrukcja przechowywania] [BLOCKSIZE rozmiar [K]] [TEMPORARY] [EXTENT MANAGEMENT DICTIONARY] [EXTENT MANAGEMENT LOCAL[AUTOALLOCATE]] [EXTENT MANAGEMENT LOCAL[UNIFORM SIZE rozmiar [K/M]]] [SEGMENT SPACE MANAGEMENT AUTO] [SEGMENT SPACE MANAGEMENT MANUAL]
Tworzenie przestrzeni tabel UNDO – parametr określa, że tworzona przestrzeń tabel będzie zawierać informacje służące do cofania operacji instrukcja przechowywania - określa nazwę pliku, rozmiar itp. BLOCKSIZE – tworzenie przestrzeni tabel o nie standardowych rozmiarach bloków TEMPORARY – przestrzeń tabel będzie wykorzystywana jako tymczasowa EXTEND MANAGEMENT – określa, czy przestrzeń tabel będzie zarządzana słownikiem danych, czy lokalnie SEGMENT SPACE MANAGEMENT – instrukcja wykorzystywana do ustawienia automatycznego (za pomocą bitmapy) bądź ręcznego (za pomocą listy wolnych bloków) zarządzania wolną przestrzenią w segmentach
segmenty, ekstenty i bloki danych ekstent plik danych blok segment
Ekstenty Aby system zarządzania bazą danych Oracle osiągał max elastyczność i jednocześnie był jak najbardziej wydajny, konieczne było stworzenie mechanizmu, w którym ciągłe bloki byłyby tworzone i zarządzane razem • Ekstent jest zbiorem ciągłych bloków • Taki zbiór bloków jest tworzony za każdym razem, kiedy do obiektu wymagana jest dodatkowa przestrzeń • Segmentysą po prostu zbiorem ekstentów
Istnieje kilka typów segmentów: segment danych – podstawowy typ segmentu, który może być wykorzystywany do przechowywania tabel oraz klastrów segment indeksu – do przechowywania indeksów segment przywracania – przechowywane są informacje służące do wycofywania operacji. Segmenty te zostały zastąpione przestrzeniami tabel cofania segment tymczasowy – do przechowywania danych generowanych podczas działania Oracle’a. Mogą być one używane do sortowania i złączeń
Globalna przestrzeń systemowa SGA • Globalna przestrzeń systemowa SGA jest obszarem pamięci współużytkowanej wykorzystywanym przez Oracle’a do przechowywania informacji kontrolnych instancji Oracle’a • SGA jest przydzielana podczas uruchamiania instancji i zwalniana podczas jej zatrzymywania
W skład informacji zawartych w SGA wchodzą: • bufory pamięci podręcznej bazy danych – przechowują ostatnio używane bloki danych • bufory dziennika powtórzeń – czyli zmian wprowadzonych do bazy – wykorzystywane do odtwarzania po awarii systemu • pula współużytkowania – struktury współużytkowanej pamięci, takie jak współużytkowany obszar SQL, wewnętrzne informacje słownika danych
Globalna przestrzeń systemowa SGA Dzięki temu, że pamięć podręczna przechowuje bloki w oparciu o algorytm preferujący ostatnio używane elementy, częściej wykorzystywane bloki pozostają w pamięci, co pozwala na zmniejszenie operacji we/wy i podniesienie wydajności
Budowa serwera bazy danych Serwer bazy danych składa się z: • Plików na dysku zawierających tabele z danymi i inne obiekty bazy danych oraz pomocnicze struktury danych • Instancji (jednej lub więcej) - czyli oprogramowania operującego na bazie danych (jest to zbiór procesów i wspólna pamięć umożliwiająca korzystanie użytkownikom z bazy danych)
Procesy Oracle komunikacji sieciowej • komunikacja między każdą aplikacją użytkownika a bazą danych odbywa się za pośrednictwem tzw procesu usługowego. Jego rolą jest obsługa żądań użytkowników
Zadania serwera bazy danych: • Wykonywanie instrukcji SQL • Przechowywanie i organizacja danych • Sprawowanie kontroli nad: • spójnością, • zarządzanie dostępem, • transakcje, • konta, • zasoby, • zarządzanie zasobami
Wykorzystanie systemu zarządzania bazą danych dla współbieżnej pracy wielu użytkowników • Bazy są przewidziane do współbieżnej pracy wielu użytkowników • Transakcje to niepodzielne operacje wykonywane przez serwer na zamówienie klienta • System pilnuje aby wszystkie operacje zostały prawidłowo wykonane i dopiero gdy wszystko zakończy się sukcesem, wtedy transakcja jest zatwierdzana • Gdy którakolwiek z części transakcji się nie powiedzie, wtedy cała transakcja jest anulowana • Dostęp do danych poprzez transakcje, blokady, konta
Łączenie się z egzemplarzem bazy danych • Aby połączyć się z egzemplarzem bazy danych z poziomu klienta, należy skonfigurować plik tnsnames.ora znajdujący się w katalogu: $ORACLE_HOME/network/admin • w edytorze tekstu • za pomocą programu Net Menager ORCL= (DESCRIPTION= (ADDRESS=(PROTOCOL=TCP) (HOST= ) (PORT= )) (CONNECT_DATA= (SERVER=DEDOCATED (SERVICE_NAME=orcl))) nazwa lub adres IP serwera Numer portu dla serwera DB Nazwa usługi lub identyfikatorSID
SQL*Plus - wersje • SQL*Plus uruchamiany z wiersza poleceń systemu Unix • Klient z graficznym interfejsem użytkownika dla SQL*Plus • SQL Worksheet • iSQL*Plus
SQL*Plus uruchamiany z wiersza poleceń systemu Unix Aby połączyć się z egzemplarzem bazy, należy wpisać w wierszu poleceń sqlplus system/oracle@orcl • Lepiej jest łączyć się używając nazwy użytkownika z symbolem@ wraz z nazwą usługi sieciowej sqlplus system@orcl • Instrukcja CONNECT umożliwia nawiązanie nowego połączenia w aktualnej sesji np. CONNECT ctxsys@orcl
Klient z graficznym interfejsem użytkownika dla SQL*Plus • Graficzny interfejs użytkownika programu SQL*Plus nie obejmuje żadnych zaawansowanych funkcji, które nie byłyby dostępne w wersji uruchamianej z wiersza poleceń • Aby uruchomić ten interfejs w systemie Windows należy otworzyć: Start/WszystkieProgramy/PodstawowyKatalogOracle/ Application Development i wybrać opcję SQL Plus
SQL Worksheet Oferuje funkcje niedostępne z wiersza poleceń oraz przez graficzny interfejs: • możliwość przywołania starszych instrukcji z historii i ponownego wczytania ich do bufora w celu ich uruchomienia • wyświetlenie planu wykonania uruchamianych instrukcji SQL Plan wykonania to metoda dostępu wybrana przez Oracle w celu jak najbardziej efektywnego wykonania określonych instrukcji SQL
iSQL*Plus • umożliwia wyświetlenie wielobajtowych znaków np. japońskich • Aby zmienić kodowanie czcionek w przeglądarce Internet Explorer, należy wybrać opcję Widok/Kodowanie/Unicode(UTF-8) • wystarczy zalogować się do iSQK*Plus przy użyciu adresu URL określonego w trakcie tworzenia egzemplarza bazy, a system wyświetli wszystkie czcionki z obsługą UTF-8
Zmienianie ustawień sesji w SQL*Plus • W trakcie logowania SQL*Plus uruchamia skrypt glogin.sql z katalogu $ORACLE_HOME/sqlplus/admin, konfiguruje środowisko na potrzeby sesji • Możliwa jest zmiana ustawień po zalogowaniu się do SQL*Plus • Łatwiej jest dodać najczęściej używane opcje do skryptu glogin.sql, aby system ustawił je automatycznie Niestandardowe ustawienia: • SET pages 99 - rozmiar strony • SET echo OFF • SET long 6400
JDEVELOPER SQL*Plus jest wygodny, ponieważ jest wbudowany w każdą aktualną wersję bazy danych i stanowi podstawowy interfejs serwera bazodanowego Funkcje JDeveloper obejmują: • wyświetlanie w ramkach wszystkich obiektów bazodanowych • możliwość edycji kodu PL/SQL bazy danych w JDeveloper • szablony kodu przyspieszające generowanie kodu • porady związane z optymalizacją działania SQL • mechanizmy diagnostyczne – przechodzenie przez kod
JDEVELOPER Środowisko JDeveloper można pobrać ze strony otn.oracle.com • Nie ma on instalatora – wszystkie pliki są spakowane w archiwum Zip – proces rozpakowywania powoduje zainstalowanie aplikacji
PAKIETY WBUDOWANE Pakiety udostępniane w Oracle (pakiety wbudowane) dają programistom dostęp do funkcjonalności, która znacznie rozszerza możliwości rozwiązywania złożonych problemów
PAKIETY WBUDOWANE UŻYTKOWNIKA SYS • Każdy pakiet ma publiczny synonim • Ten synonim umożliwia wywoływanie danego pakietu • Do utworzenia pakietu służy skrypt catproc.sql, który należy wywołać w czasie tworzenia bazy danych • Jeśli korzystamy z asystenta konfiguracji bazy danych skrypt zostanie uruchomiony automatycznie • Aby używać tych pakietów, trzeba przyznać danemu użytkownikowi uprawnienia EXECUTE
PAKIETY WBUDOWANE UŻYTKOWNIKA SYS • Jedną z najważniejszych funkcjonalności jest możliwość umieszczania w jednej bazie danych bloków o różnych rozmiarach • Umożliwia to czerpanie korzyści z dużych bloków w systemach wspomagania decyzji oraz z małych bloków w przetwarzaniu transakcji na bieżąco • Żeby korzystać z wielu rozmiarów bloków, trzeba skonfigurować bufor pamięci podręcznej Oracle’a tak, żeby był podzielony na różne części w oparciu o rozmiar bloku oraz stworzyć przestrzeń tabel, używając niestandardowych rozmiarów bloków
Rozproszone bazy danych Rozproszona baza danych - logicznie powiązany zbiór danych (oraz opis tych danych) współużytkowanych przez wiele osób, fizycznie rozproszony w sieci komputerowej. Bazując na tej definicji spróbujmy zdefiniować rozproszony SZBD. Rozproszony SZBD (RSZBD) - oprogramowanie umożliwiające zarządzanie rozproszoną bazą danych oraz sprawiające, że fakt rozproszenia danych jest niewidoczny (przezroczysty) dla użytkownika.
Cechy i własności rozproszonego SZBD Zbiór logicznie powiązanych współużytkowanych danych Dane są podzielone na fragmenty (części) Poszczególne fragmenty mogą być powielane Fragmenty są rozmieszczone na różnych komputerach Komputery są połączone za pomocą sieci komunikacyjnej Dane znajdujące się w każdym z węzłów systemu znajdują się pod kontrolą lokalnego SZBD Każdy lokalny SZBD może niezależnie uruchamiać lokalne aplikacje Każdy SZBD jest wykorzystywanyw co najmniej jednej aplikacji globalnej
Węzeł 1 BD Węzeł 4 Węzeł 2 Sieć komputerowa BD BD Węzeł 3 Rozproszony system zarządzania bazą danych
Węzeł 1 Węzeł 4 Węzeł 2 Sieć komputerowa BD Węzeł 3 Przetwarzanie rozproszone
procesor procesor procesor procesor Sieć komputerowa pamięć pamięć dzielona
pamięć pamięć pamięć pamięć procesor procesor procesor procesor Sieć komputerowa dzielony dostęp do dysku
pamięć pamięć procesor procesor Sieć komputerowa procesor procesor pamięć pamięć żaden zasób nie jest współużytkowany
Zalety RSZBD • Odzwierciedlenie struktury organizacyjnej • Większe możliwości współużytkowania danych oraz lokalna autonomia • Zwiększenie dostępności danych • Większa wiarygodność • Większa wydajność systemu • Koszty • Rozwój modularny
Wady RSZBD • Złożoność • Koszty • Trudniejsze zapewnienie bezpieczeństwa • Trudniejsza kontrola integralności • Brak standardów • Brak doświadczeń • Bardziej skomplikowane projektowanie bazy danych
Homogeniczne i heterogeniczne RSZBD • Homogeniczne • wszystkie węzły wykorzystują tę samą wersję oprogramowania SZBD, • projektowanie i zarządzanie proste, • możliwy przyrostowy rozwój systemu • Heterogeniczne • węzły mogą wykorzystywać różne oprogramowanie SZBD, • różne modele danych (relacyjne, sieciowe, hierarchiczne, obiektowe), • konieczność tłumaczenia między protokołami i językami stosowanymi przez różne SZBD, • odwzorowania struktur danych,
Funkcje RSZBD • Rozszerzone usługi komunikacyjne • Rozszerzenie katalogu systemowego • Przetwarzanie rozproszonych zapytań, ich optymalizacja, dostęp do odległych danych • Rozszerzona ochrona bezpieczeństwa umożliwiająca stosowanie metod autoryzacji, nadawanie praw dostępu do danych rozproszonych • Rozszerzona kontrola wielodostępu - zachowanie spójności danych • Rozszerzone możliwości odtwarzania danych po awarii węzła oraz łączy komunikacyjnych
Globalny schemat zewnętrzny Globalny schemat zewnętrzny Globalny schemat zewnętrzny . . . Globalny schemat konceptualny Schemat fragmentacji Schemat alokacji Lokalny schemat odwzorowania Lokalny schemat odwzorowania Lokalny schemat odwzorowania . . . Lokalny schemat konceptualny Lokalny schemat konceptualny Lokalny schemat konceptualny Lokalny schemat wewnętrzny Lokalny schemat wewnętrzny Lokalny schemat wewnętrzny DB DB DB Architektura wzorcowa dla RSZBD
Globalny katalog systemowy Węzeł 1 RSZBD Komponent Lokalny komunikacyjny SZBD Sieć komputerowa RSZBD Komponent komunikacyjny DB Węzeł 3 Globalny katalog systemowy Komponenty rozproszonego RSZBD
Zarządzanie transakcjami rozproszonymi • Problem określania poprawnego uporządkowania operacji współbieżnie wykonywanych transakcji jest rozwiązywany za pomocą metod, które możemy podzielić na trzy grupy: • metody porządkowania według etykiet czasowych, • metody walidacji • blokowania • W praktyce, w zdecydowanej większości komercyjnych systemów baz danych, w tym w systemie Oracle, stosowane są wyłącznie metody blokowania • W czasie szeregowania operacji, realizowanych w ramach transakcji dotyczących tych samych danych, system zarządzania bazą danych wykorzystuje protokół blokowania dwufazowego (ang. two-phase locking) • W fazie pierwszej transakcja modyfikująca dane uzyskuje wszystkie niezbędne blokady na tych danych • Blokady te utrzymywane są przez cały czas trwania transakcji • Zdejmowane są dopiero po zakończeniu transakcji, czyli w fazie drugiej
Zarządzanie transakcjami rozproszonymi • W systemie Oracle transakcję kończy się poprzez jej zatwierdzenie lub wycofanie • Domyślnie, każda transakcja jest jawnie kończona przez użytkownika • Zakończenie jednej transakcji (zatwierdzenie lub wycofanie) jest początkiem transakcji następnej • Transakcję zatwierdza się poleceniem commit, a wycofuje poleceniem rollback • Należy pamiętać, że w Oracle wszystkie polecenia grupy DML (np. create table, create view, alter table, drop synonym) i polecenia grupy DCL (np. grant, revoke) kończą się niejawnym poleceniem commit
Zarządzanie transakcjami rozproszonymi • Długą transakcję można podzielić na mniejsze, logicznie spójne fragmenty, wprowadzając w transakcji tzw. punkty zachowania (ang. savepoints) • Transakcję taką można następnie wycofywać do wskazanego punktu zachowania Wprowadzenie punktu zachowania realizuje się poleceniem savepoint nazwa_pz; nazwa_pz - oznacza nadaną przez użytkownika nazwę punktu zachowania Wycofanie do wskazanego punktu zachowania realizuje się poleceniem rollback to savepoint nazwa_pz;
Blokowanie danych • W systemie Oracle wyróżniamy dwa typy blokad: • na rekordzie (ang. rów lock) • na tabeli (ang. table lock) • Wprowadzenie blokady na całej tabeli zmniejsza stopień współbieżności transakcji • Zaletami blokowania całej tabeli są: • łatwość zarządzania blokadami • szybsze wykrywanie konfliktów blokad
Blokowanie danych • Dwie blokady są zgodne (ang. compatible), jeżeli mogą być jednocześnie założone na te same dane przez wiele różnych transakcji • W przeciwnym razie mówimy o blokadach niezgodnych • W przypadku gdy jedna transakcja blokuje tabelę, a druga żąda blokady niezgodnej z blokadą założoną wcześniej, wówczas konflikt jest wykrywany już na poziomie blokady tabeli • Jeżeli na rekordzie tabeli system założy blokadę, to zawsze będzie to blokada wyłączna (ang. exclusive), oznaczana jako X • Dwie blokady X nie są zgodne
Blokowanie danych • Blokada RX jest zakładana automatycznie w wyniku wykonania poleceń: insert, update, delete • Oznacza to, że niektóre lub wszystkie rekordy tej tabeli są wstawiane, modyfikowane lub usuwane • Dwie blokady RX na tej samej tabeli są zgodne warunkiem że każda z transakcji blokuje inne rekordy
Tryby pracy transakcji SZBD Oracle umożliwia pracę transakcji w trzech następujących trybach • read-committed • read-only • serializable
Transakcja rozproszona Transakcja rozproszona (ang. distributed transaction) jest to transakcja, której polecenia DML odwołują się do tabel znajdujących się co najmniej w dwóch węzłach rozproszonej bazy danych • Transakcja rozproszona jest reprezentowana przez zbiór transakcji lokalnych • W każdej z baz danych, do której odwołuje się transakcja rozproszona, tworzona jest jedna transakcja lokalna
Węzły uczestniczące w transakcji rozproszonej • Transakcja rozproszona odwołuje się do kilku węzłów rozproszonej bazy danych • Każdy z tych węzłów pełni ściśle określoną funkcję Wyróżnia się następujące rodzaje węzłów: • koordynator globalny - KG (ang. global coordinator) • koordynator lokalny - KL (ang. local coordinator) • węzeł zatwierdzania - WZ (ang. commit point site) • uczestnik - U (ang. node)
Graf wywołań transakcji BANK1 update rachunki... koordynator globalny COMMIT_POINT STRENGTH=15 update rachunki@bank2 .... update rachunki@bank3 BANK3 koordynator lokalnyCOMMIT_POINT_STRENGTH=20 BANK2 węzeł zatwierdzania COMMIT_POINT_STRENGTH=100 insert innsurachunki@bank5 ... delete from rachunki@bank4 ... BANK4 BANK5 uczestnik COMMIT POINT STRENGTH=1 uczestnik COMMIT POINT STRENGTH=1
Protokół zatwierdzania dwufazowego 2PC • Protokół 2PC składa się z dwóch głównych faz • przetwarzania • jednej fazy końcowej • W fazie pierwszej następuje przygotowanie transakcji lokalnych do zatwierdzania lub wycofywania • W fazie drugiej następuje zatwierdzanie lub wycofywanie transakcji lokalnych • W fazie końcowej transakcja rozproszona jest kończona i usuwana z systemu koordynatora globalnego
Faza przygotowania • Koordynator globalny wybiera węzeł zatwierdzania spośród wszystkich węzłów biorących udział w transakcji rozproszonej • KG wysyła do wszystkich węzłów, z wyjątkiem węzła zatwierdzania, komunikat prepare, wymuszający przygotowanie się transakcji lokalnych do zatwierdzenia • Po zakończeniu operacji przygotowania do zatwierdzenia transakcji każdy węzeł przesyła do koordynatora globalnego komunikat prepared, jeżeli operacje się powiodły
Faza przygotowania • Jeżeli transakcja nie może zostać przygotowana do zatwierdzenia, wówczas przez SZBD wycofywane są wszystkie wprowadzone przez nią zmiany, zwalniane blokady, a do KG przesyłany jest komunikat abort • Jeżeli w węźle nie modyfikowano danych, wówczas węzeł przesyła do KG komunikat read-only • Jeżeli węzeł jest koordynatorem lokalnym, wówczas po otrzymaniu komunikatu prepare przygotowuje się do zatwierdzania i sam rozsyła komunikat prepare do podległych mu węzłów