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