Rozdział 17. Zarządzanie współbieżnością zadania

Podobne dokumenty
Język SQL. Rozdział 8. Język manipulowania danymi DML zadania

Ćwiczenie 3. Współbieżność i transakcje

Język SQL. Rozdział 9. Język definiowania danych DDL, część 2. zadania

Oracle Application Express

Plan ćwiczenia. Rozdział 17. zarządzania współbieżnością. Dostęp współbieżny a dostęp spójny. Spójność bazy danych

6. Formularze tabelaryczne, obiekty nawigacji - rozgałęzienia

Plan ćwiczenia. Rozdział 17 Zarządzanie współbieżnością. Dostęp współbieżny a dostęp spójny. Spójność bazy danych

Ćwiczenie 9 współbieŝność

5. Integracja stron aplikacji, tworzenie zintegrowanych formularzy i raportów

Język SQL. Rozdział 9. Język definiowania danych DDL, część 2.

Oracle PL/SQL. Paweł Rajba.

Język SQL. Rozdział 8. Język manipulowania danymi DML

1 Przetwarzanie transakcyjne Cechy transakcji Rozpoczęcie i zakończenie Punkty bezpieczeństwa... 3

Dane wejściowe. Oracle Designer Generowanie bazy danych. Wynik. Przebieg procesu

7. Formularze master-detail

Transakcje. (c) Instytut Informatyki Politechniki Poznańskiej

Oracle Application Express

SQL do zaawansowanych analiz danych część 1.

Bazy danych wykład dziewiaty Transakcje. Konrad Zdanowski ( Uniwersytet Kardynała Stefana Bazy danych Wyszyńskiego, wykładwarszawa)

Ćwiczenie 4. Użytkownicy

Uprawnienia, role, synonimy

Cwiczenie 7. Retrospekcja

Zarządzanie obiektami bazy danych Oracle11g

przykłady problemów; realizacja dostaw części od producenta do klienta:

4. Budowa prostych formularzy, stany sesji, tworzenie przycisków

Plan. Formularz i jego typy. Tworzenie formularza. Co to jest formularz? Typy formularzy Tworzenie prostego formularza Budowa prostego formularza

Zasady transformacji modelu DOZ do projektu tabel bazy danych

"Kilka słów" o strojeniu poleceń SQL w kontekście Hurtowni Danych wprowadzenie. Krzysztof Jankiewicz

Wprowadzenie do projektowania i wykorzystania baz danych. Katarzyna Klessa

3. Budowa prostych raportów opartych o bazę danych

Podstawy SQL. 1. Wyświetl całość informacji z relacji ZESPOLY. 2. Wyświetl całość informacji z relacji PRACOWNICY

Optymalizacja poleceń SQL Wprowadzenie

Język SQL. Rozdział 10. Perspektywy Stosowanie perspektyw, tworzenie perspektyw prostych i złożonych, perspektywy modyfikowalne i niemodyfikowalne.

Wykład V. Indeksy. Struktura indeksu składa się z rekordów o dwóch polach

Ustawienie na poziomie sesji (działa do zmiany lub zakończenia sesji zamknięcia połączenia).

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

Cwiczenie 1. Wys wietlanie plano w wykonania polecen SQL

(a) T (b) N (c) N (d) T

Bazy danych. Andrzej Łachwa, UJ, /15

Multimedialne bazy danych - laboratorium

Rozdział 17. Zarządzanie współbieżnością zadania dodatkowe

Optymalizacja poleceń SQL Indeksy

Wprowadzenie do Doctrine ORM

Optymalizacja poleceń SQL Metody dostępu do danych

Instytut Mechaniki i Inżynierii Obliczeniowej fb.com/groups/bazydanychmt/

Tworzenie tabeli przez select CREATE TABLE PRAC2 AS SELECT P.NAZWISKO, Z.NAZWA FROM PRAC P NATURAL JOIN ZESP Z

77. Modelowanie bazy danych rodzaje połączeń relacyjnych, pojęcie klucza obcego.

Bazy danych 9. SQL Klucze obce Transakcje

1: 2: 3: 4: 5: 6: 7: 8: 9: 10:

Bazy danych Karta pracy 1

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

XML-owe bazy danych ćwiczenia 1

8. Listy wartości, dodatkowe informacje dotyczące elementów i przycisków

Język SQL. Rozdział 2. Proste zapytania

startup pfile= '$HOME/admin/pfile/initDBx.ora'; create spfile from pfile= '$HOME/admin/pfile/initDBx.ora';

Podstawy technologii WWW

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

Access - Aplikacja. Tworzenie bazy danych w postaci aplikacji

1. Wyzwalacze BD (ang. triggers)

15. Funkcje i procedury składowane PL/SQL

INDEKSY. Biologiczne Aplikacje Baz Danych. dr inż. Anna Leśniewska

Lista zadań nr 1. Bazy danych laboratorium. dr inż. Grzegorz Bazydło, dr inż. Jacek Tkacz

Systemy baz danych 2 laboratorium Projekt zaliczeniowy

Pakiety podprogramów Dynamiczny SQL

BAZY DANYCH. CREATE TABLE dbo.wydzialy (ID INT, Akronim VARCHAR(4) NOT NULL, Wydzial VARCHAR(30) NOT NULL, CONSTRAINT Kluczyk PRIMARY KEY(ID) )

Język SQL. Rozdział 4. Funkcje grupowe Funkcje grupowe, podział relacji na grupy, klauzule GROUP BY i HAVING.

Klasyczna Analiza Danych

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

Wyzwalacze TWORZENIE WYZWALACZY

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

Zarządzanie obiektami bazy danych Oracle11g

Oracle Application Express

Ćwiczenie 2. Struktura bazy danych Oracle

Laboratorium 10. Odkrywanie cech i algorytm Non-Negative Matrix Factorization.

Informatyka Ćwiczenie 10. Bazy danych. Strukturę bazy danych można określić w formie jak na rysunku 1. atrybuty

Lokalizacja jest to położenie geograficzne zajmowane przez aparat. Miejsce, w którym zainstalowane jest to urządzenie.

Założenia do ćwiczeń: SQL Server UWM Express Edition: \SQLEXPRESS. Zapoznaj się ze sposobami użycia narzędzia T SQL z wiersza poleceń.

Indeksy. Indeks typu B drzewo

Ćwiczenie 2. Struktura bazy danych Oracle

Bazy danych kwerendy (moduł 5) 1. Przekopiuj na dysk F:\ bazę M5KW.mdb z dysku wskazanego przez prowadzącego

Plan ćwiczenia. Rozdział 16 Uwierzytelnianie i autoryzacja w bazie danych. Użytkownicy i schematy (1) Użytkownicy i schematy (2) baza danych: ZESP99

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

Polecenie 3.1: Uruchom SQL Server Management Studio, zaloguj się do serwera.

Cwiczenie 4. Połączenia, struktury dodatkowe

Wdrożenie modułu płatności eservice. dla systemu Gekosale 1.4

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

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Optymalizacja poleceń SQL

Instrukcje SQL można podzielić na pięć kategorii, które zostały przedstawione w poniższej tabeli.

Bazy danych. dr inż. Arkadiusz Mirakowski

LK1: Wprowadzenie do MS Access Zakładanie bazy danych i tworzenie interfejsu użytkownika

Autor: Joanna Karwowska

Funkcje w PL/SQL Funkcja to nazwany blok języka PL/SQL. Jest przechowywana w bazie i musi zwracać wynik. Z reguły, funkcji utworzonych w PL/SQL-u

Ćwiczenie zapytań języka bazy danych PostgreSQL

Microsoft.NET: ASP.NET MVC + Entity Framework (Code First)

Przestrzenne bazy danych Podstawy języka SQL

ACESS- zadania z wykorzystaniem poleceń SQL

CREATE DATABASE ksiegarnia_internetowa DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

PODSTAWY BAZ DANYCH 13. PL/SQL

Transkrypt:

Rozdział 17. Zarządzanie współbieżnością zadania Transakcja DML 1. Uruchom narzędzie Oracle SQL Developer i przyłącz się do bazy danych. Następnie rozpocznij nową transakcję, zmieniając pracownikowi o nazwisku MATYSIAK etat na ADIUNKT. 2. W drugim poleceniu usuń z relacji PRACOWNICY wszystkie informacje o pracownikach na etacie ASYSTENT. 3. Sprawdź (wykonaj zapytanie), czy wprowadzone przez Ciebie w punktach 1. i 2. modyfikacje rzeczywiście miały miejsce. 4. Zakończ transakcję z wycofaniem efektów wszystkich operacji, jakie miały miejsce w transakcji. Sprawdź, czy zmiany, wprowadzone przez polecenia z punktów 1. i 2., zostały anulowane. Transakcja DDL 1. Rozpocznij nową transakcję, wykonując polecenie zwiększenia płacy podstawowej wszystkim adiunktom o 10%. Sprawdź, czy operacja została poprawnie wykonana (wykonaj odpowiednie zapytanie). 2. Wykonaj kolejne polecenie, które dokona modyfikacji typu kolumny placa_dod w relacji PRACOWNICY na number(7,2). 3. Spróbuj anulować zmiany, wprowadzone w punktach 1. i 2., wykonując polecenie rollback. Sprawdź efekty wykonania tego polecenia. Punkty bezpieczeństwa transakcji 1. Rozpocznij nową transakcję poleceniem, które pracownikowi MORZY doda do płacy dodatkowej 200 złotych. Następnie utwórz punkt bezpieczeństwa S1. 2. Daj Pracownikowi BIALY 100 złotych płacy dodatkowej i utwórz punkt bezpieczeństwa S2. 3. Usuń pracownika o nazwisku JEZIERSKI. 4. Wycofaj transakcję do punktu S1 i zobacz zawartość relacji PRACOWNICY. 5. Spróbuj wycofać transakcję do punktu S2. Czy polecenie zakończyło się sukcesem?

6. Wycofaj całą transakcję. Współbieżność, blokady 1. Uruchom drugą sesję (sesja B) pracy z bazą danych. W narzędziu Oracle SQL Developer możesz to zrobić, klikając na przycisk lub kombinacją klawisz Ctrl + Shift + N. Sprawdź, czy rzeczywiście pracujesz w dwóch różnych sesjach (czy też nowo otwarta zakładka nie należy do tej samej sesji co zakładka, w której do tej pory pracowałaś/eś). W tym celu w obu sesjach wykonaj poniższe zapytanie, odczytujące unikalny identyfikator sesji (ang. sid): select sys_context('userenv', 'SID') from dual; Jeśli uzyskałaś/eś dwie różne liczby, oznacza to, że pracujesz w dwóch różnych sesjach. Zapamiętaj (najlepiej zapisz!) identyfikator każdej sesji. Będą potrzebne w kolejnych ćwiczeniach. 2. W sesji A rozpocznij nową transakcję poleceniem, które podniesie płacę podstawową pracownikowi o nazwisku HAPKE o 100 zł. Sprawdź, jakie blokady zostały założone przez tą transakcję. W tym celu wykonaj poniższe zapytanie i zanalizuj otrzymane wyniki: select * from table(sbd.blokady); Blokady jest funkcją potokową, umieszczoną w pakiecie SBD. Funkcja ta zwraca wynik w postaci zbioru rekordów, pokazujących: typ blokady (tabeli TM lub rekordu TX), jakie uzyskała bądź których żąda transakcja w sesji kolumna typ, jakie blokady uzyskała transakcja w sesji kolumna blokada_uzyskana, jakich blokad żąda transakcja w sesji kolumna blokada_zadana, nazwa i właściciel obiektu, którego dotyczą informacje kolumna obiekt, czy założona blokada blokują inną transakcję kolumna czy_blokuje_inna. Jeśli uruchomisz funkcję bez parametru, wówczas zaprezentowane informacje będą dotyczyły bieżącej sesji (tej, w której została uruchomiona funkcja). Jeśli przekażesz do funkcji parametr, będący identyfikatorem sesji, wyniki będą opisywały blokady założone lub żądane we wskazanej sesji. 3. W sesji B rozpocznij nową transakcję. Najpierw odczytaj wartość płacy podstawowej pracownika o nazwisku HAPKE. Czy zaobserwowałaś/eś zmiany, wprowadzone przez aktywną transakcję w sesji A? Następnie spróbuj pracownikowi HAPKE podnieść płacę dodatkową o 50 zł. Co teraz się dzieje z sesją? Czy obserwujesz efekt zawieszenia narzędzia? 4. Wróć do sesji A. Wykonaj ponownie zapytanie wyświetlające blokady dla sesji A. Czy widzisz różnicę (zwróć uwagę na kolumnę czy_blokuje_inna)? Wykonaj ponownie

zapytanie o blokady, tym razem jako parametr podaj identyfikator sesji B. Na uzyskanie jakiej blokady czeka sesja B? 5. Wycofaj transakcję w sesji A. Co się dzieje z sesją B? Odczytaj, jakie blokady posiada teraz transakcja w sesji B. 6. Wycofaj transakcję w sesji B. Współbieżność, poziomy izolacji 1. W sesji A rozpocznij nową transakcję i określ jej poziom izolacji na read commited. Następnie odczytaj w tej transakcji wartość płacy podstawowej pracownika o nazwisku KONOPKA. Zapamiętaj odczytaną wartość. 2. W sesji B również rozpocznij nową transakcję z poziomem izolacji read commited a następnie odczytaj wartość płacy podstawowej pracownika KONOPKA. W kolejnym poleceniu transakcji ustaw płacę podstawową pracownika KONOPKA na wartość większą o 300 zł od wartości odczytanej przez zapytanie. Zakończ transakcję zatwierdzeniem wprowadzonych zmian. 3. W sesji A wykonaj polecenie, które ustawi pracownikowi KONOPKA płacę podstawową na wartość mniejszą o 200 zł od wartości odczytanej w punkcie 1. Czy polecenie zakończyło się powodzeniem? Zakończ transakcję zatwierdzeniem wprowadzonych zmian. 4. Określ, jaką anomalię zasymulowały operacje w p. 1, 2 i 3. Jaka jest aktualna płaca podstawowa pracownika KONOPKA? Jaka byłaby wartość płacy tego pracownika w sytuacji sekwencyjnego wykonania obu transakcji? 5. Wykonaj ponownie ćwiczenie, tym razem określając poziom izolacji transakcji w sesji A na serializable. Skomentuj zaobserwowane wyniki. 6. Spróbuj doprowadzić do wystąpienia anomalii skrośnego zapisu na poziomie izolacji serializable. Zakleszczenie 1. Wygeneruj zakleszczenie trzech transakcji (musisz do sesji A i B dodać trzecią sesję, sesję C). Blokady a klucze obce 1. W sesji A rozpocznij nową transakcję. Wykonaj w niej polecenie, które doda do relacji ZESPOLY nowy zespół o identyfikatorze 70 i nazwie Zespół testowy. Zatwierdź transakcję.

2. W sesji B rozpocznij nową transakcję poleceniem, które pracownikowi o nazwisku KONOPKA podwyższy płacę podstawową o 200 zł. Pozostaw transakcję aktywną. 3. W sesji A rozpocznij kolejną transakcję poleceniem, które spróbuje zmodyfikować identyfikator zespołu, dodanego w p. 1, na wartość 80. Co zaobserwowałaś/eś? 4. W sesji B wyświetl blokady, założone i żądane przez obie transakcje (z sesji A i sesji B). Skomentuj otrzymane wyniki. 5. Wycofaj transakcję w sesji B. 6. Usuń w sesji A dodany w p. 1. zespół. Zatwierdź transakcję. 7. Powtórzysz teraz zadanie, ale z istniejącym na kluczu obcym z relacji PRACOWNICY do ZESPOLY indeksem. Utwórz w sesji A indeks poniższym poleceniem: create index test_fk on pracownicy(id_zesp); 8. Powtórz zadanie od p. 1. do 6. Co zaobserwowałaś/eś? 9. Usuń indeks, założony w p. 7., poniższym poleceniem: drop index test_fk; Zadania dodatkowe (dla chętnych) 1. Odroczone ograniczenia integralnościowe. Utwórz relację TEST z jednym atrybutem id typu number(5). Zdefiniuj na atrybucie id klucz podstawowy o nazwie TEST_PK, którego weryfikacja ma być przeprowadzana po zakończeniu transakcji modyfikującej relację TEST. Wstaw do relacji TEST kilka rekordów z tą samą wartością atrybutu id. Spróbuj zatwierdzić transakcję. Co zaobserwowałeś/aś? Odczytaj bieżącą zawartość relacji TEST. Zmień definicję ograniczenia w taki sposób, aby było weryfikowane natychmiast. Spróbuj teraz wstawić kilka rekordów z tą samą wartością atrybutu id. 2. Przetestuj działanie transakcji autonomicznych. W tym celu utwórz dwie tabele: TAB1 i TAB2 o identycznym schemacie: id number(1). Wstaw do obu tabel po dwa rekordy z dowolnymi wartościami kolumny id. Następnie utwórz procedurę ProcAut, która w ramach transakcji autonomicznej wstawi do TAB2 jeden rekord, policzy liczby rekordów w obu tabelach, wypisze tą informację na konsoli i dokona zatwierdzania transakcji. W kolejnym kroku przygotuj kod anonimowego bloku PL/SQL, który wykona po kolei następujące czynności: wstawi jeden rekord to tabeli TAB1, policzy liczby rekordów w obu tabelach i wypisze tą informację na konsoli, wywoła utworzoną wcześniej procedurę ProcAut, znowu policzy liczby rekordów w obu tabelach i wypisze tą informację na konsoli, wycofa transakcję, ostatecznie policzy liczby rekordów w obu tabelach i wypisze tą informację na konsoli.

Uruchom blok (nie zapomnij przedtem ustawić wartość zmiennej SERVEROUTPUT na ON!) i zanalizuj otrzymane wyniki.