Sedikit review mengenai transaction theory pada suatu database. Mekanisme Oracle untuk mengelola transaction integrity sendiri menkombinasikan undo segment dan redo log files, database lain memiliki mekanisme sendiri untuk data processing mereka. Singkat cerita setiap relational database harus memenuhi kriteria ACID (Atomicity, Consistency, Isolation, dan Durability)
Atomicity
Prinsip dari atomicity adalah seluruh transaksi harus dilaksanakan semua (complete) atau tidak sama sekali. Sebagai contoh pada payroll processing: pada setiap kenaikan gaji karyawan maka grade dari karyawan tersebut juga harus ikut berubah, maka „atomic“ transaction akan terdiri dari dua update. Database harus dapat menggaransi bahwa kedua bagian update tersebut harus berhasil atau tidak sama sekali untuk semuanya. Jika hanya satu update saja yang berhasil, maka anda akan memiliki karyawan dengan pendapatan/gaji yang tidak sesuai/kompatibel dengan grade yang seharusnya: istilah bisnisnya adalah data corruption. Jika terjadi sedikit kesalahan saja/error/sesuatu yang tidak di kehendaki, maka database harus dapat memastikan bahwa tidak ada satu bagian pun yang tersimpan (tidak ada satupun update yang di lakukan), dan ini harus terjadi secara otomatis.
Oracle menjamin atomicity ini dengan menggunakan undo segment.
Consistency
Prinsip dasar dari consistency adalah hasil dari sebuah query harus konsisten dengan apa yang ada di database pada saat query di jalankan. Misalkan saja sebuah query sederhana untuk melihat rata-rata nilai pada satu kolom sebuah tabel. Jika tabel tersebut besar, maka akan membutuhkan waktu beberapa menit untuk menyelesaikannya. Jika pada query berjalan dan pada saat yang sama ada user yang meng-update kolom tersebut, apakah query tersebut mengikutkan baris baru tersebut atau tidak? Pada dasarnya sesuai dengan prinsip consistency, database akan memastikan perubahan nilai tidak di lihat oleh query: hal ini akan memberikan nilai rata-rata kolom sama seperti saat query pertama kali di jalankan, tidak peduli berapa lama eksekusi query berlangsung atau adanya aktifitas lain yang terjadi pada table tersebut.
Seringkali jika konfigurasi undo segment tidak benar akan muncul Oracle error, „ORA-1555 snapshot too old.“
Isolation
Prinsip dari isolation adalah incomplete transaction (uncommitted) (harus) tidak dilihat. Ketika sebuah transaction sedang berjalan, hanya satu session saja yaitu session yang mengeksekusi transaksi yang diijinkankan untuk melihat perubahan dari hasil transaksi tersebut: session yang lain harus melihat data asli, yaitu data sebelum adanya perubahan dari transaksi. Logikanya, pertama, full transaction tidak akan melewati (ingat prinsip atomicity) dan tidak ada satu user pun yang di ijikan melihat perubahan yang mungkin di terimanya. Kedua pada saat progress sebuah transaksi maka datanya (istilah bisnisnya) incoherent: terdapat sedikit jeda waktu ketika data pendapatan (salary) seorang karyawan (employee) telah berubah, tetapi grade employee tersebut tidak berubah. Transaction isolation membutuhkan database harus menyembunyikan transaksi (conceal transactions) yang sedang berjalan dari user lain: user hanya akan melihat versi sebelum update (preupdate) sampai transaksi tersebut benar benar selesai (complete). Oracle menjamin transaction isolation ini melalui undo segments.
Durability
Prinsip durability pada dasaranya adalah satu transation dinyatakan complete dengan sebuah COMMIT. Pada saat transaksi sedang berjalan, konsep Isolation menghendaki tidak ada satupun (selain session tersebut) yang dapat melihat perubahan data yang telah di buat. Setelah transactions completes, maka semua session akan dapat melihat perubahan data tersebut dan database harus menjamin perubahan tersebut tidak akan hilang. Pada kasus tertentu bisa saja database kehilangan datanya dikarenakan user error: DML yang tidak baik atau dropping objects.
Oracle memenuhi Durability ini melalu penggunaan logfiles. Logfiles terdiri dari dua bentuk: Online redo log files, dan archive redo log files.
P.S: Dari buku ORACLE DATABASE 10g OCP Certification All-in-One Exam Guide (Exams #1Z0-042 and #1Z0-043)





