21 ■ WSPÓLBIEŻNOŚĆ W SYSTEMIE ORACLE -228-
Modyfikowane rekordy są zawsze blokowane w trybie EXCLUSIVE (X).
Pojawienie się blokady tego typu oznacza, że niektóre lub wszystkie rekordy tabeli zostały zmodyfikowane.
Właściwości blokady s (share)
Zakładana jest gdy transakcja Ti chce uniemożliwić zmianę danych w tabeli przez inne równolegle działające transakcje i jednocześnie sama nie będzie ich modyfikowała.
Transakcje nie zmieniające zawartości tabeli (SELECT ...) mogą współpracować z transakcją Ti.
Właściwości blokady SRX (share row exclusive)
Zakładana jest wtedy gdy transakcja T| będzie modyfikować zawartość tabeli i jednocześnie chce uniemożliwić zmianę danych w tej tabeli przez inne równolegle działające transakcje.
Inne transakcje wymagające aby w trakcie ich pracy zawartość tabeli pozostała niezmieniona lub chcące ją zmodyfikować nie mogą współpracować z transakcją Ti.
Właściwości blokady X (exclusive)
Uniemożliwia modyfikowanie danych dopuszczając tylko ich przeglądanie (SELECT ...). Założenie innej blokady nie jest możliwe.
Można ją uzyskać z widoku systemowego V$LOCK w połączeniu z danymi pomocniczymi pochodzącymi z widoków V$SESSION oraz SYS . OB J$ .
Rok akademicki - 2007/2008 -1
21 ■ WSPÓŁBIEŻNOŚĆ W SYSTEMIE ORACLE_-229-
Przyklad 21.4.1. Przykład składni SELECT wyświetlającej informacje o założonych blokadach:
SELECT s.sid, s.serial#, s.username, l.type, o.name,
DECODE(L.LMODE,0,'BRAK',2,'RS',3,'RX',4,'S',5,'SRX',6,'X',L.LMODE)
AS TYP_BLOKADY,
DECODE(1.reąuest,0,'brak',2,'rs',3,'rx',4,'s',5,'srx',6,'x',
L.REQUEST)AS TYP_BLOKADY_OCZEKUJACEJ, s.status, s.osuser, s.machinę, s.program FROM v$session s, v$lock 1, sys.obj$ o WHERE s.sid=l.sid AND 1.idl=o.obj#(+);
W wyniku realizacji powyższej składni w kolumnie typ_blokady uzyskamy typ założonej blokady a w kolumnie typ_blokady_oczekujacej typ blokady oczekującej na założenie.
W kolumnie TYPE wartość TM oznacza blokadę tabeli natomiast TX blokadę rekordu.
Pozostałe kolumny to:
USERNAME
NAME
SID
STATUS
OSUSER
MACHINĘ
PROGRAM
- nazwa użytkownika bazy danych
- nazwa obiektu którego dotyczą blokady
- status sesji użytkownika
- nazwa użytkownika w systemie operacyjnym
- nazwa komputera z którego użytkownik dołączył się do bazy danych
- nazwa programu za pomocą którego użytkownik dołączy! się do bazy