Segmenty wycofania - Politechnika Poznańska

Transkrypt

Segmenty wycofania - Politechnika Poznańska
Przeznaczenie
Segmenty wycofania
(ang. rollback segments)
segments)
(c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ
• struktura fizyczna przechowująca dane sprzed modyfikacji
• wykorzystywany:
wykorzystywany:
– do zapewnienia spójności odczytu
– do wycofania zmian w przypadku wycofania transakcji
– w czasie odtwarzania bazy danych
(c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ
Mechanizm spójności odczytu
update T1 set ...
Koncepcja
RB01
SCN=205
Select sum(placa)
sum(placa)
from pracownicy
SCN, nazwisko, płaca
SCN=210
Update pracownicy
set placa=2200
where nazwisko=‘Wrembel’
nazwisko=‘Wrembel’
update T2 set ...
RB02
00201, Jezierski, 2000
00200, Koszlajda,
Koszlajda, 4000
00203, Morzy, 6000
00201, Wrembel,
1900
Wrembel, 2200
00210,
00210, Wrembel,
Wrembel, 1900
00199, Bębel,
bel, 2100
(c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ
segment wycofania
delete T2 ...
• bufor cykliczny
• wiele transakcji w tym samy segmencie wycofania
• jedna transakcja tylko w jednym segmencie
(c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ
Cykliczny zapis do segmentów wycofania
Zapis do wolnego
rozszerzenia
Ponowne wykorzystanie
rozszerzenia
E3
T1
T1
E3
E1
E1
E2
E2
wolne rozszerzenia
E4
E1
zajęte rozszerzenia
E3
E2
(c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ
Tworzenie
create [public] rollback segment nazwa_segm
tablespace nazwa_przestrzeni
[storage (initial n [K|M]
next n [K|M]
minextents n
• SYSTEM
• niesystemowe
– prywatne
• włączane przez instancję tylko,
tylko, gdy wymienione w
parametrze konfig.
konfig. ROLLBACK_SEGMENTS
– publiczne
• włączane przez instancję automatycznie,
automatycznie, gdy
wymagane
Sposób włączania
alokacja nowego
rozszerzenia
T2
Rodzaje segmentów wycofania
• wszystkie wskazane parametrem ROLLBACK_SEGMENTS
• jeśli jest ich zbyt mało,
mało, to włączane są segmenty publiczne
• wymagana liczba segmentów wycofania:
wycofania:
l_rbs =
TRANSACTIONS
TRANSACTIONS_PER_ROLLBACK_SEGMENT
(c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ
Tworzenie - przykład
create rollback segment rb06
tablespace LAB_RBS
storage ( initial 256K
next 256K
minextents 2
maxextents 20
optimal 512K );
maxextents n|UNLIMITED
optimal n [K|M|NULL]]);
• initial = next
• pctincrease = 0
• minextents przynajmniej 2
(c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ
Włączanie i wyłączanie
alter rollback segment nazwa online;
online;
alter rollback segment nazwa offline;
offline;
(c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ
Modyfikowanie
alter rollback segment nazwa_segm
storage (next n [K|M]
minextents n
maxextents n|UNLIMITED
Skurczanie segmentów wycofania przez
wykorzystanie parametru OPTIMAL
ZałoŜenia:
INITIAL=NEXT,
OPTIMAL=3*NEXT
T1
E4
E1
E3
E2
optimal n [K|M|NULL]);
Usuwanie
T2:commit
T1
T2
T1
E1
alter rollback segment rb01 offline;
offline;
E4
E1
E3
E2
wolne rozszerzenia
E2
zajęte rozszerzenia
drop rollback segment rb01;
E3
(c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ
Problemy
• błąd ORAORA-01560 -> brak miejsca w przestrzeni tabel
– zwiększyć rozmiar przestrzeni
• dodanie pliku
• włączenie AUTOEXTEND
• błąd ORAORA-01628 -> osiągnięcie liczby rozszerzeń określonej
przez MAXEXTENTS
– zwiększyć MAXEXTENTS
• błąd ORAORA-01555 -> snapshot too old
– zwiększyć minextents
– zwiększyć rozmiar NEXT
– zwiększyć rozmiar OPTIMAL
(c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ
(c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ
Perspektywy słownika bazy danych
•
• DBA_ROLLBACK_SEGS
– SEGMENT_NAME
– TABLESPACE_NAME
– OWNER (PUBLIC, SYS)
– STATUS (ONLINE, OFFLINE)
DBA_SEGMENTS
– SEGMENT_NAME
– SEGMENT_TYPE (ROLLBACK)
– TABLESPACE_NAME
– BYTES, BLOCKS
– EXTENTS
– INITIAL_EXTENT, NEXT_EXTENT
– MIN_EXTENTS, MAX_EXTENTS
select segment_name,
segment_name,
tablespace_name,
tablespace_name,
initial_extent,
initial_extent, next_extent,
next_extent, pct_increase,
pct_increase,
min_extents,
min_extents, max_extents,
max_extents,
bytes,
bytes, blocks
from dba_segments
where segment_type='ROLLBACK'
segment_type='ROLLBACK'
and segment_name='RB06';
(c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ
Dynamiczne tabele systemowe (2)
• V$ROLLNAME
– USN
– NAME
• V$ROLLSTAT
– USN
– EXTENTS
– OPTSIZE
– AVEACTIVE
– STATUS (OFFLINE,
PENDING OFFLINE)
– CUREXT
– CURBLK
select name,
name, status, optsize,
optsize, curext
from v$rollname rn,
rn, v$rollstat rs
where rn.usn=rs.usn
and name='RB06';
(c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ
Transakcje w segmencie wycofania
• przypisywanie transakcji do segmentu wycofania ->
równowaŜenie obciąŜenia segmentów
• jawne przypisanie transakcji do sgmentu wycofania
set transaction use rollback segment nazwa_segmentu;
• informacje nt. transakcji przypisanych do segmentu
wycofania
select r.name "RBS",
nvl(s.username,
nvl(s.username, ''-') "DB USER",
from v$lock l, v$session s, v$rollname r
where l.sid=s.sid(+)
l.sid=s.sid(+)
and trunc(l.id1/65536)=r.usn
order by r.name;
r.name;
(c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ
Przestrzeń wycofania
Przestrzeń wycofania (od ver.
ver. 9i)
(ang. undo tablespace)
tablespace)
• Specjalna przestrzeń tabel przeznaczona do
przechowywania danych wycofania
• Zawiera segmenty wycofania automatycznie zarządzane
przez system (liczebność, wielkość) o nazwach wg.
konwencji _SYSSMUnn
$
_SYSSMUnn$
• Zwalnia admina z konieczności ustalania niezbędnej liczby
segmentów wycofania i ułatwia ustalenie wielkości
przestrzeni dyskowej dla danych wycofania
• Uaktywnienie - ustawienie parametrów inicjalizacyjnych:
inicjalizacyjnych:
– UNDO_MANAGEMENT = AUTO
– UNDO_TABLESPACE = nazwa_przestrzeni_wycofania
• System wykorzystuje jednocześnie tylko jedną przestrzeń
wycofania
• Zmiana aktywnej przestrzeni wycofania:
ALTER SYSTEM SET UNDO_TABLESPACE= nazwa_przestrzeni_wycof
(c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ
(c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ
Tworzenie przestrzeni wycofania
Określenie długości czasu przechowywania
starych wersji danych w przestrzeni wycof.
wycof.
• Podczas tworzenia bazy danych
• Parametr inicjalizacyjny UNDO_RETENTION, np.:
CREATE DATABASE
...
UNDO TABLESPACE nazwa_przestrzeni_wycofania DATAFILE ...
• Po utworzenia bazy danych
CREATE UNDO TABLESPACE nazwa_przestrzeni_wycofania
DATAFILE ...
Usuwanie przestrzeni wycofania
• Przełączenie aktywnej przestrzeni tabel za pomocą parametru
UNDO_TABLESPACE
• Usunięcie przestrzeni wycofania po zakończeniu aktywnych
transakcji
DROP TABLESPACE nazwa_przestrzeni_wycofania
(c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ
Szacowanie wielkości przestrzeni wycofania
dla wskazanej wartości UNDO_RETENTION
(1/2)
SELECT to_char(begin_time,'dd-mm-yyyy hh24:mi')
begin_time, to_char(end_time, 'hh24:mi') end_time,
undoblks,txncount,
maxquerylen
FROM v$undostat;
BEGIN_TIME
---------------23-11-2004 19:00
23-11-2004 18:50
23-11-2004 18:40
23-11-2004 18:30
23-11-2004 18:20
23-11-2004 18:10
END_T
UNDOBLKS
TXNCOUNT MAXQUERYLEN
----- ---------- ---------- ----------19:03
332
6231
149
19:00
19
5939
1112
18:50
17
5628
738
18:40
3
5379
298
18:30
13
5056
2
18:20
4
4862
3
(c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ
ALTER SYSTEM SET UNDO_RETENTION= 900
zaleca systemowi przechowanie starych wersji danych
przez minimum 900 sekund
• Ułatwia unikanie błędu snapshot too old - wystarczy
ustawić parametr UNDO_RETENTION na wartość
odpowiadającą czasowi wykonania najdłuŜszego zapytania
• W ver.
ver. 10g ustawienie UNDO_RETENTION=0 (wartość
domyślna) powoduje automatyczne zarządzanie danymi
wycofania, w taki sposób aby zaspokoić najdłuŜsze
zapytanie bez konieczności powiększania plików
przestrzeni wycofania, powiększenie jednak nastąpi, jeŜeli
okres dostępności danych wycofania jest krótszy niŜ 900s
• Ver 10g umoŜliwia wymuszenie przechowywania danych
wycofania zgodnie z parametrem UNDO_RETENTION,
mechanizm powoduje zatrzymanie aktywnych transakcji
ALTER
RETENTION
(c)
1997-2005,TABLESPACE
Politechnika Poznańska,undotbs1
Instytut Informatyki:
JJ, RW, MZ
GUARANTEE;
Szacowanie wielkości przestrzeni wycofania
dla wskazanej wartości UNDO_RETENTION
(2/2)
• UR - UNDO_RETENTION w sekundach
• UPS - liczba bloków danych wycofania generownych na
sekundę
• DBS - DB_BLOCK_SIZE
UndoSpace=UR*(UPS*DBS)+24*DBS
(c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ
Ignorowanie ręcznego zarządzania
segmentami wycofania przy automatycznym
zarządzaniu danymi wycof.
wycof.
• Próba wykonania poleceń
– SET TRANSACTION USE ROLLBACK SEGMENT ...
– ALTER ROLLBACK SEGMENT ...
Przy włączonym automatycznym zarządzaniu danymi
wycofania kończą się błędem ORAORA-30019
• Ustawienie parametru inicjalizacyjnego
UNDO_SUPPRESS_ERRORS=TRUE powoduje ignorowanie
niedozwolonych poleceń
(c) 1997-2005, Politechnika Poznańska, Instytut Informatyki: JJ, RW, MZ