2-amaliy mashg’ulot. Ma’lumotlar bazasini qayta tiklash algoritmlari. Reja: 1. Ma'lumotlar bazasini tiklash; 2. To'liq tiklash vazifasi; 3. Ma'lumotlar bazasini jurnalning zahira nusxasi ichidagi vaqt nuqtasiga nisbatan tiklash; 4. Ma'lumotlar bazasini tiklash usullari: zaxiradan tiklash, "qayta tiklash" usuli, soya sahifasi usuli; 5. Tarqalgan ma'lumotlar bazalarining muammolari.
1.Ma'lumotlar bazasini tiklash. Ma'lumotlar bazasini tiklash - bu mantiqiy va jismoniy nosozliklar yuz berganda ma'lumotlar bazasini yangilangan va izchil holatga keltiradigan DBMS funksiyasi.
Bitta tranzaksiya uchun mantiqiy nosozlik yoki orqaga qaytarish signali bo'lsa, o'zgartirish jurnali orqaga qarab skanerlanadi va orqaga qaytarilgan tranzaksiyaning barcha yozuvlari jurnaldan tranzaksiya boshlanishigacha olinadi. Olingan ma'lumotlarga ko'ra, bitim harakatlarini bekor qiluvchi harakatlar amalga oshiriladi. Bu jarayon orqaga qaytarish deb ataladi.
Texnik xatolik yuz bergan taqdirda, agar o'zgarishlar jurnali ham, ma'lumotlar bazasining o'zi ham buzilmasa, oldinga siljish jarayoni amalga oshiriladi. Jurnal oldingi nazorat punktidan boshlab oldinga yo'nalishda skanerlanadi. Barcha yozuvlar jurnaldan jurnalning oxirigacha olinadi. Jurnaldan olingan ma'lumotlar jurnalda qayd etilganidan kamroq o'zgarish raqami belgisiga ega bo'lgan tashqi xotira ma'lumotlar bloklariga kiritiladi. Agar ishga tushirish yana muvaffaqiyatsiz bo'lsa, jurnalni skanerlash boshidan qayta boshlanadi, lekin tiklash aslida to'xtagan joydan davom etadi.
Texnik xatolik yuz bergan taqdirda, agar o'zgarishlar jurnali mavjud bo'lsa, lekin ma'lumotlar bazasining o'zi buzilgan bo'lsa, ma'lumotlar bazasini zaxiradan tiklash jarayoni amalga oshirilishi kerak. Qayta tiklashdan so'ng, ma'lumotlar bazasi zaxira nusxasini yaratish vaqtida holatda bo'ladi. Ma'lumotlar bazasini ishlamay qolgan holatga qaytarish uchun siz o'zgarishlar jurnalidan foydalangan holda barcha o'zgarishlarni bajarishingiz kerak.
Texnik xatolik yuz bergan taqdirda, agar o'zgartirish jurnali mavjud bo'lmasa, lekin ma'lumotlar bazasining o'zi buzilmagan bo'lsa, tiklash faqat oldingi nazorat punkti nuqtasiga mumkin.
Texnik nosozlik bo'lsa, o'zgarishlar jurnali ham, ma'lumotlar bazasining o'zi ham shikastlangan bo'lsa, qayta tiklash faqat zaxira nusxasini yaratish vaqtida mumkin.
Agar xatolikdan keyin ma'lumotlar bazasini avtomatik ravishda tiklash mumkin bo'lmasa, ma'lumotlar bazasini tiklash ikki bosqichda amalga oshiriladi:
1-ma'lumotlar bazasining zaxira nusxasini ishlaydigan diskka o'tkazish;
2-ma'lumotlar bazasi serverini qayta ishga tushirish, zaxira nusxasi yaratilgandan keyin va nosozlik yuzaga kelgunga qadar amalga oshirilgan barcha tranzaktsiyalarni qayta bajarish.
Agar tizimda tranzaktsiyalar arxivi mavjud bo'lsa, u holda qayta operatsiyalar avtomatik ravishda yoki foydalanuvchi nazorati ostida amalga oshirilishi mumkin. Agar server jarayoni muvaffaqiyatsiz bo'lsa, ma'lumotlar bazasini tiklash uchun serverni qayta ishga tushirish talab qilinadi. Qayta ishga tushirilganda, DBMS tizim fayllari tarkibidan nosozlik yuz berganligini bilib olishi va avtomatik ravishda tiklashni amalga oshirishi mumkin (agar iloji bo'lsa). Bunday holatda ma'lumotlar bazasini tiklash ma'lumotlar bazasidagi barcha ma'lumotlarni izchil holatga keltirishni anglatadi, tugallanmagan tranzaksiyalarni orqaga qaytarish va tugallangan tranzaktsiyalar tomonidan kiritilgan barcha o'zgarishlar diskka kiritilganligini tekshirish. O'zgarishlar jurnalini optimallashtirish uchun ba'zi DBMSlar tugallanmagan tranzaktsiyalar to'g'risidagi ma'lumotlarni ularning tugashini kutgan holda jurnalga kiritishlari mumkin. Bundan tashqari, tranzaktsiyani tasdiqlashni kutmasdan, ma'lumotlar bazasi o'zgartirilgan bloklarni diskka qayta yozadi. Shu sababli, istalgan vaqtda tranzaktsiyalar jurnali va ma'lumotlar bazasi to'liq bo'lmagan operatsiyalar bilan o'zgartirilgan oz sonli yozuvlarni o'z ichiga olishi mumkin. Ushbu yozuvlar mos ravishda belgilanadi. Boshqa tomondan, beri O'zgartirishlar avval tranzaktsiyalar jurnaliga, keyin esa ma'lumotlar bazasi fayliga tushadi, istalgan vaqtda ma'lumotlar bazasida amalga oshirilgan tranzaktsiyalar bilan o'zgartirilgan ma'lumotlar bloklari bo'lmasligi mumkin.
Shunday qilib, muvaffaqiyatsizlik natijasida ikkita potentsial vaziyat yuzaga kelishi mumkin:
• Ma'lumotlar fayllariga kiritilgan o'zgartirishlarni o'z ichiga olgan bloklar yozilmagan, shuning uchun bu o'zgarishlar faqat tranzaktsiyalar jurnalida aks etadi. Shunday qilib, tranzaktsiyalar jurnali ma'lumotlar fayllariga yozilishi kerak bo'lgan ma'lumotlarni o'z ichiga oladi.
• Tranzaksiya jurnali va ma'lumotlar bloklarida amalga oshirilmagan o'zgarishlar mavjud. Ma'lumotlar bazasini qayta tiklash vaqtida bajarilmagan tranzaktsiyalar tomonidan kiritilgan o'zgarishlar ma'lumotlar fayllaridan olib tashlanishi kerak.
Ushbu vaziyatlarni hal qilish uchun DBMS avtomatik ravishda nosozlikni tiklashning ikki bosqichini amalga oshiradi: oldinga siljish va orqaga qaytish.
1. Oldinga siljitish - tranzaktsiyalar jurnalida qayd etilgan barcha o'zgarishlarni ma'lumotlar fayllariga qo'llash. Oldinga aylantirilgandan so'ng, ma'lumotlar fayllari tranzaktsiyalar jurnaliga kiritilgan barcha kiritilgan va o'tkazilmagan o'zgarishlarni o'z ichiga oladi.
2. Orqaga o'tish amalga oshirilmagan barcha o'zgarishlarni bekor qilishdir. Buning uchun tranzaktsiyalar jurnali va orqaga qaytarish segmentlari qo'llaniladi, ularning ma'lumotlari ma'lumotlar bazasi fayllarida diskda saqlangan bo'lsa-da, tasdiqlanmagan tranzaktsiyalarni aniqlash va bekor qilish imkonini beradi.