You are on page 1of 4

Manajemen Transaksi

Server Oracle menjamin konsistensi data berdasarkan transaksi. Transaksi memberikan kemungkinan fleksibilitas dan control ketika mengubah data, dan memungkinkan konsistensi data ketika sebuah user proses mengalami kegagalan atau ketika terjadi kegagalan sistem. Transaksi pada sebuah database dapat terdiri dari salah satu dari: Pernyataan DML yang melakukan perubahan pada data. Satu pernyataan DDL. Satu pernyataan DCL.

Sebuah transaksi terjadi ketika pernyataan pertama dari sebuah DML dilakukan dan berakhir ketika ketika salah satu dari kejadian berikut ini terjadi: Pernyataan COMMIT atau ROLLBACK dijalankan Sebuah pernyataan DDL dijalankan Sebuah pernyataan DCL dijalankan User keluar dari iSQL*Plus Mesin mengalami kegagalan atau sistem mengalami crash

Keuntungan dari pernyataan COMMIT dan ROLLBACK adalah: Memastikan konsistensi data Melihat perubahan pada data sebelum membuat perubahan permanen Operasi yang berhubungan secara logika

28 Danny Kriestanto, S.Kom., M.Eng

Waktu

COMMIT Transaction DELETE SAVEPOINT A INSERT UPDATE SAVEPOINT B INSERT ROLLBACK TO SAVEPOINT B ROLLBACK TO SAVEPOINT A ROLLBACK

Savepoint merupakan penanda dari transaksi yang sedang berlangsung. Fungsi dari savepoint adalah membagi sebuah transaksi menjadi bagian-bagian yang lebih kecil. Untuk kembali ke savepoint tertentu digunakan perintah ROLLBACK TO SAVEPOINT. Ketika menggunakan perintah DDL atau DCL atau keluar secara normal dari iSQL*Plus, perintah COMMIT akan dijalankan secara otomatis. Perintah ROLLBACK akan dijalankan secara otomatis pada saat iSQL*Plus dimatikan secara tidak normal atau terjadi kegagalan sistem. Menutup window dapat dikategorikan mematikan iSQL*Plus secara tidak normal. Setiap data yang mengalami perubahan dalam sebuah transaksi hanya bersifat sementara sampai sebuah transaksi di-commit. Kondisi data sebelum COMMIT atau ROLLBACK hanya mempengaruhi buffer dari database oleh karena itu data masih dapat dikembalikan ke kondisi semula. User yang aktif dapat mereview hasil dari operasi DML dengan melakukan query pada tabel yang diubah, akan tetapi user lain tidak dapat melihat perubahan tersebut sebelum COMMIT dilakukan. Hal ini untuk menjamin terjadinya konsistensi data (pre-consistency). Selain itu, baris yang akan mengalami

29 Danny Kriestanto, S.Kom., M.Eng

perubahan akan dikunci oleh Oracle sehingga tidak ada user lain yang boleh mengubah data pada data tersebut. Keadaan data setelah melakukan COMMIT sifatnya permanen. Dengan kata lain, semua perubahan yang telah dilakukan telah disimpan di dalam database sehingga kondisi data yang sebelumnya telah hilang dan semua savepoint yang ada otomatis dihapus. Oleh karena perubahan telah bersifat permanen, user yang lain dapat melihat perubahan yang terjadi. Penguncian pada data pun akan dilepaskan sehingga memungkinkan bagi user lain untuk mengubahnya. Sedangkan jika perintah ROLLBACK dipanggil, yang terjadi pada data adalah perubahan yang telah dilakukan dibatalkan. Dengan demikian data dikembalikan ke keadaan semula dan semua kunci yang mengikat akan dilepaskan. Contoh 1: 1. Buat tabel baru yang isinya sama dengan tabel employees beri nama copy_emp. Lihat isinya. CREATE TABLE copy_emp AS SELECT * FROM employees; 2. Buat tabel baru yang isinya sama dengan tabel departments beri nama copy_dept. Lihat isinya. CREATE TABLE copy_dept AS SELECT * FROM employees; 3. Buat query tabel copy_dept, tunjukkan departemen yang kodenya 240 dan 250. SELECT * FROM copy_dept WHERE department_id = 240 OR department_id = 250; 4. Buat query tabel copy_emp, tunjukkan pegawai dengan kode pegawai 206. SELECT * FROM employees WHERE employee_id = 206; 5. Hapus kode departemen 240 dan 250 dari tabel copy_dept. DELETE FROM copy_dept WHERE department_id = 240 OR department_id = 250; 6. Lihat isi tabel copy_dept. SELECT * FROM copy_dept; 7. Lakukan ROLLBACK. ROLLBACK;
30 Danny Kriestanto, S.Kom., M.Eng

8. Lihat kembali isi tabel copy_dept. SELECT * FROM copy_dept; 9. Update tabel copy_emp. Pada pegawai dengan kode pegawai 206, ubah kode departemen menjadi 80. UPDATE copy_emp SET department_id = 80 WHERE employee_id = 206; 10. Lakukan commit. COMMIT; 11. Lihat isi tabel copy_emp. SELECT * FROM copy_emp WHERE employee_id = 206; Contoh 2: 1. Hapus semua isi tabel copy_emp. DELETE FROM copy_emp; 2. Lihat isinya. SELECT * FROM copy_emp; 3. Panggil rollback. ROLLBACK; 4. Lihat kembali isinya. SELECT * FROM copy_emp; Perintah ROLLBACK juga terjadi secara otomatis untuk level pernyataan. Maksudnya, apabila terjadi kesalahan dalam mengeksekusi perintah DML, perintah ROLLBACk akan dijalankan tapi dikhususkan hanya untuk satu perintah itu saja. Selain itu, Oracle juga secara otomatis menjalankan commit secara otomatis sebelum dan sesudah sebuah perintah DDL dijalankan. Maka, jika terdapat kesalahan pada perintah DDL sehingga perintah tersebut tidak dapat dieksekusi, ROLLBACK tidak dapat dilakukan.

31 Danny Kriestanto, S.Kom., M.Eng