Professional Documents
Culture Documents
doc
Datum:25.04.2011.
Klasifikacija greaka
Razliite greke prouzrokuju razliite posljedice i tretiraju se na razliite naine. Najlaki oblik greke je onaj pri kojem ne dolazi do gubitka informacija, dok kod teeg oblika greaka dolazi do gubitka informacija iz bilo kojeg oblika memorije. Da bi smo znali primijeniti odgovarajui algoritma oporavka baze podataka nakon greke moramo poznavati: - tip ureaja na kojem su podaci pohranjeni, - tip greke i odrediti na koji nain ova greka utjee na sadraj baze podataka te - dizajnirati algoritme koji omoguavaju oporavak (recovery) baze podatka. Openito, algoritmi za oporavak baze podataka nakon greke odvijaju se u slijedea dva koraka: 1. U toku normalnog izvrenja transakcije pohranjuju se informacije o operacijama. Ove informacije treba da budu dovoljne za rekonstrukciju baze podataka nakon greke i obino se pohranjuju u log file-ovima (urnalima). 2. U sluaju greke, na osnovu informacija iz log filr-a, radi se oporavak (recovery) baze podataka operacijama REDO (ponovo izvriti transakciju) ili UNDO (ponititi transakciju). Greke klasificiramo na sljedei nain, ovisno o uzroku i posljedicama: 1. Logike greke su interne logike greke transakcije pri kojima dolazi do prekida transakcije ili pogrenog rada same transakcije. Mogui uzroci su: nevaljani ulazni podaci, nedovoljni resursi itd. 2. Sistemske greke se deavaju kada sistem ue u nepoeljno stanje (greka u DBMS-u ili operativnom sistemu). 3. Pad sistema je greka pri kojoj dolazi do gubitka informacija iz primarne memorije. 4. Hardverska greka pri kojoj gubimo informacije pohranjene u sekundarnoj memorije (na primjer kvar diska ili ak fiziko unitenje cijelog raunara). Jedino mogue rjeenje je odravati sigurnosne kopije baze podataka. Od savremenog DBMS-a oekuje se da u svim ovim sluajevima omogui oporavak baze podataka, dakle njen povratak u to aurnije i konzistentno stanje. Opravak baze podataka nakon greke bi se trebao, po mogunosti, automatski izvravati, ili bar na relativno jednostavan nain. Da bi oporavak bio mogu, DBMS osim same baze podataka mora odravati jo i neka pomona sredstva; tipino to su: rezervna kopija baze (backup copy) i urnal datoteka (journal file, log file). Rezervna kopija i urnal datoteka omoguuju razliite tipove oporavka. Dva najvanija oblika su: neutralizacija
Upravljanje bazama podataka::Predavanja http://dl.fit.ba/
ProgramiranjeI_sylabus.doc
prekinute ili pogrene transakcije, te ponovno uspostavljanje baze nakon njenog znatnijeg oteenja.
promjene
TRANSAKCIJA
LOG FILE
commit
BAZA
2
Upravljanje bazama podataka::Predavanja http://dl.fit.ba/
ProgramiranjeI_sylabus.doc
Procesiranje transakcija
Transakcija je skup operacija koje ine jednu logiku cjelinu rada ili jedinica izvrnog programa koji pristupa i aktualizira podatke baze podataka. Zahtijevamo da transakcije ne ugroze konzistentnost baze podataka. Ponekad je potrebno dozvoliti privremene nekonzistentnosti, to moe prouzrokovati probleme u sluaju greke. Primjer privremene nekonzistentnosti: Transakcija prenosi 500 KM sa rauna A na raun B. Aktualno stanje rauna A je 10000 KM i rauna B je 20000 KM.
Memorija
Disk
A=10 000
T1: read(A,a1) a1:= a1-500 write(A, a1) read(B, b1) b1:= b1+500 write(B, b1) Suma A+B mora biti konstantna.
3
Upravljanje bazama podataka::Predavanja http://dl.fit.ba/
ProgramiranjeI_sylabus.doc
Ispravno izvrena transakcija odrava konzistentnost baze podataka. Ispravnost transakcije je odgovornost programera. Atominost je osobina transakcije, sve operacije koje ine jednu transakciju se adekvatno izvre ili se ne izvri nijedna. Odravanje atominosti je odgovornost DBMS-a (manager transakcija). Ukoliko se desi graka u sistemu u toku izvrenja transakcije, transakcija se mora prekinuti. Prekinuta transakcija ne smije prihvatiti stanje u koje je dovela bazu podataka, ve se vraa u stanje u kojem se nalazila prije poetka izvrenja transakcije. Oporavak baze podataka predstavlja ponitenje efekata prekinute transakcije transakcije. Uspjeno zavrena transakcija (commit) se moe ponititi samo inverznom transakcijom. Za kreiranje inverzne transakcije zadueni su korisnici. Parcijalno potvrena
Potvrena
Aktivna
Neuspjela
Prekinuta
Slika 1: Dijagram stanja transakcija Iz prekinutog stanja transakcija se ponovo izvrava ukoliko se radi o hardverskoj ili softverskoj greci, a ponitava se ukoliko se radi o greci uzrokovanoj internom logikom transakcije.
ProgramiranjeI_sylabus.doc
Operacija COMMIT predstavlja uspjean zavretak transakcije i sve izmjene koje je napravila se mogu uiniti stalnim. Takoer garantiramo da se baza podataka ponovo nalazi u konzistentnom stanju. Operacija ROLLBACK predstavlja neuspjean zavretak transakcije sve izmjene koje je napravila neuspjela transakcija se moraju ponititi. Ukoliko se transakcija nalazi u parcijalno potvrenom stanju (sadraj primarne i sekundarne memorije su nesuglasni) i dogodi se greka, pri ponovnom pokretanju sistema, baza podataka e biti u nekonzistentnom stanju. Ukoliko ponovo izvrimo transakciju, ulazni podaci su neispravni i nemamo dovoljno informacija za rekonstrukciju baze podataka u konzistentno stanje, te e konano stanje baze podataka ponovo biti nekonzistentno.
start> <T2, start> A, 10 000, 9 500> <T2, C, 500, 600> B, 20 000, 20 500> <T2, D, 300, 200> REDO Upravljanje bazama podataka::Predavanja commit> http://dl.fit.ba/
5
UNDO
ProgramiranjeI_sylabus.doc
U SQL serveru imamo tri naina oporavka baze podataka: full (mogunost rekonstrukcije baze podataka do momenta greke ili do traenog momenta), simple (moemo rekonstruirati bazu podatka samo do momenta posljednjeg backupa) i bulk-logged (sve operacije mogu biti ponovljene) slika 3. U kompletnom modu (full) svaka transakcija nad bazom podataka (insert, update, delete) je registrirana u log file-u i mogu se rekonstruirati sve promjene nad bazom podataka u toku njenog postojanja. Koritenje ovog moda podrazumijeva da log file neogranieno raste i moe postati vei od same baze podataka.
6
Upravljanje bazama podataka::Predavanja http://dl.fit.ba/
ProgramiranjeI_sylabus.doc
Rjeenje problema nekontrolirane veliine log file-a je praviti sigurnosne kopije. Kada napravimo sigurnosnu kopiju, registri pohranjeni u log file-u se briu sa diska i ostavlja se slobodan prostor za registriranje novih transakcija. Pri kreiranju sigurnosne kopije ostavljamo slobodan prostor u log file-u, ali se ne smanjuje veliina log file-a (log file i dalje zauzima isti prostor na disku).
7
Upravljanje bazama podataka::Predavanja http://dl.fit.ba/
ProgramiranjeI_sylabus.doc
Primjer: <T1, start> <T1, A, 100, 50> <T1, B, 500, 600> <T1, commit> <T2, start> <T2, C, 300, 200> <T2, commit> <checkpoint> <T3, start> <T3, D, 300, 100> greka <checkpoint> Greka
UNDO T3
Na transakciju t1 ne utjee greka sistema i sam proces rekonstrukcije, jer je zavrena prije posljednjeg checkpointa. Iako su transakcije t2 i t4 zavrene, nalaze se poslije posljednjeg checkpointa i ulaze u proces rekonstrukcije. Transakcije t3 i t5 e se morati ponovo izvriti, jer nisu zavrene prije greke sistema. Smanjiti veliinu log file-a moemo na sljedei nain:
8
Upravljanje bazama podataka::Predavanja http://dl.fit.ba/
ProgramiranjeI_sylabus.doc
1. use Northwind U Queri Analyzer otvorimo kontekst eljene baze podataka. 2. CHECKPOINT pohranjuje sve blokove podataka iz buffera na disk. 3. EXEC sp_addumpdevice 'disk', 'CopiaMyBase', 'd:\LogMyBase.bak' kreira fiziki prostor za pohranjivanje sigurnosne kopije, file LogMyBase.bak na disku D. 4. BACKUP DATABASE Northwind TO CopiaMyBase kreira sigurnosnu kopiju baze podataka. 5. BACKUP LOG Northwind TO CopiaMyBase kreira sigurnosnu kopiju log file-a. Ovim smo oslobodili prostor u log file-u, meutim log file i dalje zauzima istu koliinu prostora na disku. 6. DBCC SHRINKFILE (Northwind_Log, 300) oslobaa prostor na disku. Prvi argument je logiki naziv file-a i drugi argument je eljena veliina file-a u MB. 1. 2. 3. 4. 5. 6. Ukoliko ne elimo sigurnosnu kopiju log file-a moemo koristiti bru metodu: use Northwind CHECKPOINT EXEC sp_addumpdevice 'disk', 'CopiaMyBase', 'd:\LogMyBase.bak' BACKUP DATABASE Northwind TO CopiaMyBase BACKUP LOG MyBase WITH TRUNCATE_ONLY DBCC SHRINKFILE (MiBase_Log, 100) Ova opcija umanjuje log file za njegov neaktivni dio. Gubitak log file-a je teka greka. Jedino rjeenje jeste imati sigurnosnu kopiju log file-a. Da se ne bi ponovio ovaj problem moramo imati plan odravanja koji realizira sigurnosne kopije baze podataka i log file-a u odreenim periodima. Koliko dug period mora proi izmeu dvije kopije ovisi o namjeni baze podataka i njenoj veliini, ali se kree od nekoliko puta dnevno do jednom sedmino. Checkpoint se izvrava kada: radimo modifikaciju strukture baze podataka (ALTER DATABASE), zaustavimo server (osim ako koristimo opciju shutdown with nowait) i aktivni log file prelazi 70% maksimalne dozvoljene veliine.
Ne znam koliko je potrebno istai da svaki put kad realiziramo zadae koje mogu imate opasne posljedice po bazu podataka je obavezno napraviti sigurnosnu kopiju.
Dvofazni protokol zavretka transakcija se izvrava sistemima koji imaju vie DBMS-ova u okviru distribuiranih sistema.
distribuiranim
Ukoliko imamo transakciju koja mijenja podatke u bazi podataka, ove promjene moraju biti zabiljeene od strane svih sistema za upravljanje bazama podataka. Ukoliko se transakcija uspjeno potvrdi ili prekine, to moraju registrirati svi DBMS-ovi i ponititi ono to su uradile prekinute transakcije. COMMIT (ili ROLLBACK) utjee na kompletan sistem. Ovim instrukcijama upravlja koordinator, koji koristi dvofazni protokol zavretka transakcija. Koordinator pripremi sve DBMS-ove na obe mogunosti.
9
Upravljanje bazama podataka::Predavanja http://dl.fit.ba/
ProgramiranjeI_sylabus.doc
Svaki od administratora pohranjuje odgovarajue registre u log-file. Ukoliko transakcija zavri pohranjivanjem izmjena na disk manager resursa alje potvrdan odgovor koordinatoru, u suprotnom negativan. Kada koordinator dobije pozitivne odgovore od oba managera resursa to pohranjuje u svoj log file. Ukoliko su svi odgovori bili pozitivni, transakcija se potvrdi (COMMIT). U koliko je jedan od odgovora bio negativan, vri se ROLLBACK. U svakom sluaju koordinator obavjetava sve administratore resursa i svaki od njih mora potvrditi ili ponititi transakciju.
10
Upravljanje bazama podataka::Predavanja http://dl.fit.ba/