Sistem recovery basis data Komponen dalam RDBMS yang digunakan untuk mengembalikan basis data ke kondisi yang benar (consistent state) jika terjadi system failure (kegagalan sistem) Natural physical disasters bencana fisik yg natural, seperti kebakaran, air bah, gempa Carelessness / human error Kekurang telitian atau kerusakan pada data atau fasilitas yg tidak disengaja disebabkan oleh operator atau pengguna Sabotase, kerusakan pada data, fasilitas perangkat lunak & keras yg disengaja System crash (kerusakan sistem), akibat kesalahan Media failure (kegagalan pada media), seperti media Application software error (kesalahan pada pada perangkat keras atau lunak, menyebabkan kehilangan memori utama tidak dapat dibaca, menyebabkan kehilangan sebagian dari penyimpanan sekunder perangkat lunak aplikasi, seperti kesalahan logika yg mengakses data base menyebab kan satu atau lebih transaksi mengalami kegagalan, basis data menjadi tdk konsisten) 3 Jenis Kerusakan : 1. Kegagalan Transaksi (Transaction error) a. Kesalahan Logika (Logical Error) input salah, data not found, overflow, memori habis b. Kesalahan Sistem (System Error) Deadlock 2. Kerusakan Sistem (System Crash) Hardware macet (hang), data pada memori sementara hilang 3. Kerusakan pada Disk (Disk Failure) Bad sector / disk macet pada saat operasi I/O Jenis Media Penyimpanan : 1. Media Penyimpanan Sementara (Volatile Storage) RAM, Cache, Register 2. Media Penyimpanan Permanen (Non Volatile Storage) Tape, Disk 3. Media Penyimpanan Stabil (Stable Storage) Diperlukan suatu mekanisme untuk menjamin basis data konsisten dan keatomikan transaksi walaupun terjadi kegagalan/kerusakan. Recovery Basis data secara permanen tersimpan pada media permanen disk. Ruang penyimpanan pada disk dipilah berdasarkan Blok yang disebut dengan Blok data. Operasi database : disisipkan pada program aplikasi atau langsung dibuat interaktif dengan bahasa query misal SQL. Dalam program aplikasi , transaksi diawali dengan statement begin transaction dan end transaction Transaksi merupakan unit logika dari proses database yang mencakup satu atau lebih operasi pengaksesan database – meliputi insert, delete, modifikasi atau operasi retrieve. Sebuah program aplikasi dapat berisi lebih dari satu transaksi Read-only transaction. Transaksi dalam database hanya mengambil (retrieve) data, tidak melakukan update Diagram transisi transaksi : BEGIN_TRANSACTION : memulai transaksi READ or WRITE : operasi baca atau tulis dari item database yang dieksekusi sebagai bagian dari transaksi END_TRANSACTION : operasi transaksi READ atau WRITE selesai dilakukan 1. Begin transaction : keadaan awal transaksi 2. Partially Committed : keadaan setelah suatu pernyataan berhasil dilaksanakan 3. Committed: keadaan setelah transaksi berhasil dijalankan 4. Failed : keadaan setelah suatu pernyataan gagal melaksanakan tugas, kemudian keadaan dipulihkan pada keadaan sebelum transaksi (ABORT) 5. Terminated: keadaan transaksi berakhir (disetujui atau di batalkan) Mekanisme backup melakukan backup secara periodik terhadap data base yg ada Fasilitas Logging Mencatat transaksi dan perubahan-perubahan yang terjadi terhadap data base. DBMS memelihara file khusus yang disebut Log (Journal) yang menyediakan informasi mengenai seluruh perubahan yang terjadi pada data base. Fasilitas Checkpoint Mengizinkan update terhadap data base yang akan menjadi data base yang permanen Manager recovery Mengizinkan sistem untuk menyimpan kembali data base ke keadaan sebelum terjadi kegagalan Untuk mengcover kegagalan dari transaksi, sistem mempunyai catatan yang disebut dengan log file untuk menjaga jalannya semua operasi yang mempengaruhi nilai dari item database. Informasi ini mungkin akan dibutuhkan untuk mengcover adanya kegagalan. Log file disimpan di storage, dan secara berkala di backup ke storage lainnya untuk menjaga dari kerusakan yang fatal. Log file adalah komponen yang penting dalam data base. Bila terjadi system failure, log file diperlukan untuk mengembalikan data base ke consistent state. Struktur log file menyerupai relasi ( tabel ) yang terdiri dari sejumlah field (kolom) dan sejumlah record (baris) Field-field dalam log file terdiri dari: Nama Keterangan LSN (Log Sequence Number) TransactionID tanda pengenal (identifier) tiap log record Operation Database jenis operasi dari transaksi yang bisa berupa: start, commit, abort, insert, update, atau delete nama data base yang akan dimodifikasi Table nama tabel yang akan dimodifikasi Field field apa saja yang akan dimodifikasi dari tabel yang bersangkutan. OldRecordID, NewRecordID berisi kode record lama sebelum dimodifikasi. Kode record diperoleh dari sistem storage management yang berperan dalam menyimpan data base secara fisikal. kode record baru setelah dimodifikasi. BeforeImage nilai field sebelum operasi dijalankan AfterImage nilai field setelah operasi dijalankan pPtr, pointer menunjuk ke log record yang berisi operasi sebelumnya dari transaksi yang sama berfungsi sebagai identifier suatu transaksi Restore dari backup. - Jika terjadi kerusakan ke sebagian data base, misalnya disk crash, metode recovery yang digunakan adalah merestore copy sebelumnya dari data base yang sudah diback-up ke storage khusus (biasanya tape) - Membangun kembali status dengan redo operasi dari transaksi yang commit dari log backed-up sampai waktu dimana terjadi kegagalan Undo Operasi Jika data base tidak secara fisik rusak tetapi hanya menjadi tidak konsisten karena adanya kesalahan (system crash, system error, local error, concurrency control), Ada 2 teknik utama dalam melakukan recovery kesalahan transaksi : 1. Deferred update 2. Immediate update DEFERRED/TUNDA UPDATE Update tidak dilakukan secara langsung pada data base, tetapi update dilakukan setelah transaksi menyelesaikan eksekusinya dengan sukses dan mencapai titik commit. Sebelum mencapai commit semua transaksi yang di update disimpan pada buffer local hanya dicatat pada system log dan transaction workspace. Setelah transaksi commit dan log sudah dituliskan ke disk, maka update dituliskan ke data base Karena data base tidak pernah ter-update pada disk hingga transaksi mencapai commit, operasi UNDO tidak diperlukan. Operasi ini dikenal dengan algoritma recovery NO UNDO/ REDO. REDO dibutuhkan saat sistem gagal setelah transaksi mencapai commit tetapi sebelum perubahan disimpan pada data base di disk. 1. START 2. INSERT A 3. UPDATE B 4. DELETE A 5. COMMIT Untuk langkah 1, proses yang terjadi adalah: Pada langkah 2, proses yang terjadi adalah: Pada langkah 3, proses yang terjadi adalah: Pada langkah 4, proses yang terjadi adalah: Pada langkah 5, proses yang terjadi adalah: Keuntungan Kekurangan Lebih aman karena operasi tidak langsung mengubah data base sebelum transaksi di-commit, sehingga bila terjadi system failure atau transaksi abort, data base tetap dalam consistent state. Teknik deferred update menuntut kapasitas temporary database yang lebih besar karena harus menyimpan semua blok data base yang dimodifikasi dalam temporary database hingga commit. Update dilakukan langsung pada data base tanpa menunggu transaksi mencapai titik commit Operasi tetap harus dituliskan ke log (pada disk) sebelum update dilakukan pada data base WriteAhead Logging protocol Langkah-langkah teknik immediate update dengan algoritma UNDO/NO-REDO adalah: 1) Ketika transaksi mulai, tulis sebuah record START ke log file. 2) Setiap operasi transaksi diterima, log record berisi data yg relevan akan ditambahkan ke dalam log file. 3) Temporary database akan meng-copy blok data base yang mengandung data yang diperlukan bila blok tersebut belum ada. 4) Jalankan operasi transaksi terhadap blok data base dalam temporary database. 5) Langsung salin kembali blok data base yang telah termodifikasi dari temporary database ke data base. 6) Ketika transaksi commit, semua modifikasi terhadap data base diselesaikan sebelum COMMIT TRANSACTION ditambahkan ke log file. 1. START 2. INSERT A 3. UPDATE B 4. DELETE A 5.COMMIT Untuk langkah 1 START, proses yang terjadi adalah: Pada langkah 2 INSERT , proses yang terjadi adalah: Pada langkah 3 UPDATE, proses yang terjadi adalah: Pada langkah 4 DELETE , proses yang terjadi adalah: Pada langkah 5 COMMIT, proses yang terjadi adalah: Keuntungan Kekurangan Efek dari operasi langsung tercatat pada database - Bila seorang pengguna telah mengcommit suatu transaksi tapi ternyata terjadi kegagalan saat pemrosesan, maka seluruh transaksi dianggap gagal karena record commit belum tercatat di log. - Perpindahan blok database dari dan ke temporary database akan lebih dinamis (cepat berubah). Akibatnya penggunaan disk I/O akan lebih boros. Hal ini akan menurunkan kinerja sistem. PEMULIHAN SISTEM Penyebab : gangguan pada sistem (misal : mati listrik). Data pada RAM hilang dan ada transaksi yg tidak selesai, transaksi harus dibatalkan pada saat sistem diaktifkan kembali (UNDO) dan transaksi yang commit harus dijamin telah ditulis (proses REDO) PEMULIHAN MEDIA Penyebab : kegagalan media (disk rusak) -Memuat kembali (RESTORE) backup database,