Anda di halaman 1dari 5

TRANSAKSI DATABASE

Transkasi database adalah pengelompokan beberapa perintah SQL sebagai satu kesatuan
unit kerja. Misalkan satu transaksi terdiri dari beberapa perintah INSERT, UPDATE, dan
DELETE, jika transaksi berhasil maka hasil proses INSERT, UPDATE, dan DELETE
tersimpan semua secara permanen, tetapi sebaliknya jika transaksi gagal maka data akan
dikembalikan ke posisi sebelum proses INSERT, UPDATE, dan DELETE.

Contoh suatu transaksi adalah transfer antar rekening bank.Transfer uang berarti melakukan
dua proses UPDATE yaitu:

1. Update (mengurangi) uang rekening pengirim.


2. Update (menambah) ke rekening penerima.

Jika transaksi berhasil maka rekening pengirim berkurang dan sebaliknya rekening penerima
bertambah. Tetapi jika transaksi gagal maka nilai rekening pengirim dan penerima
dikembalikan ke posisi sebelum terjadi proses transfer.

COMMIT dan ROLLBACK

Perintah COMMIT digunakan untuk menjadikan transaksi bersifat permanen sedangkan


perintah ROLLBACK untuk membatalkan transaksi.

Contoh penggunaan COMIIT

Contoh perintah ROLLBACK

Awal dan Akhir Transaksi


Transaksi adalah satu kesatuan unit kerja yang memungkinkan untuk membagi suatu proses
besar menjadi beberapa proses yang lebih kecil. Suatu transaksi tentunya ada awal dan
akhirnya.
Suatu transaksi diawali pada saat :
1. Login ke database dan mulai menulis perintah DML seperti INSERT, UPDATE, dan
DELETE.
2. Transaksi sebelumnya berakhir dan akan dimulai kembali perintah DML yang lain.

Suatu transaksi berakhir pada saat:

1. Perintah COMMIT dan ROLLBACK. Jika COMMIT berarti transaksi menjadi


permanen dan jika ROLLBACK berarti transaksi dibatalkan.
2. Peritah pendefinisian data seperti CREATE TABLE, dalam hal ini atomatis akan
terjadi COMMIT sehingga transaksi menjadi permanen.
3. Perintah DCL (Data Control Language) seperti GRANT yaitu pemberian hak akses ke
user, dalam hal ini juga akan terjadi atomatis COMMIT.
4. Melakukan disconnect dari database dengan mengetik perintah EXIT maka akan
terjadi atomatis COMMIT. Kecuali tiba tiba komputer mati maka akan terjadi
ROLLBACK karena dianggap abnormal disconect.

SAVEPOINT

Perintah Savepoint digunakan untuk mengelompokkan suatu transaksi yang panjang menjadi
beberapa tahap. Savepoint juga bisa digunakan untuk mengontrol apakah sampai tahap tahap
tertentu suatu transaksi sudah sesuai dengan yang diharapkan. Jika satu tahap salah maka
kembalikan ke tahap sebelumnya, tidak ke awal transaksi.

Berikut ini adalah ilustrasi Proses COMMIT, ROLLBACK, dan SAVEPOINT

Penjelasan:

1. Jika melakukan ROLLBACK berarti data dikembalikan ke kondisi COMMIT yang


sebelumnya.
2. Jika melakukan ROLLBACK TO SAVEPOINT tahap2 maka data dikembalikan ke
kondisi sebelum savepoint tahap2, dan masih bisa melakukan ROLLBACK TO
SAVEPOINT tahap1.
3. Jika melakukan ROLLBACK TO SAVEPOINT tahap1 maka data dikembalikan ke
kondisi sebelum SAVEPOINT tahap1 sedangkan SAVEPOINT tahap2 akan dihapus
sehingga tidak bisa melakukan ROLLBACK TOSAVEPOINT tahap 2
Contoh penggunaan SAVEPOINT
FLASHBACK QUERY
Sering kali terjadi kesalahan dalam melakukan modifikasi data. Jika
kesalahan diketahui sebelum transaksi di COMMIT maka untuk
memperbaikinya bisa dengan menggunakan ROLLBACK. Tetapi jika
kesalahan baru disadari beberapa hari kemudian, dan lupa kapan
melakukan modifikasi datanya. Mulai oracle 10g, oracle menyediakan fitur
untuk melakukan pelacakan perubahan data yang disebut flashback query.
Dengan flashback query bisa dilihat data pada kondisi sebelumnya.
Flashback query bisa dilakukan berdasarkan waktu (datetime) atau system
change number (SCN). Oracle menggunakan SCN untuk mencatat
perubahan data.
Contoh

Untuk mengetahui perubahan atau harga barang 30 menit yang lalu


caranya adalah sebagai berikut:
1. Set kondisi data ke 30 menit yang lalu

2. Lakukan query terhadap barang dengan kode 40422


(SYSDATE 30/1440) nilai 1440 menunjukkan dalam satu hari 1440
menit, yaitu 24 jam x 60 menit.
Flashbackquery hanya melihat menampilkan informasi data, tidak
melakukan perubahan data. Untk mengembalikan data barang ke
harga semula, lakukan update secara manual. Sebelum melakukan
update disable-kan dahulu mode flashback.

FLASHBACK VERSION QUERY


Flashback Version Query merupakan fitur yang fungsinya hampir sama
dengan flashback query. Bedanya jika flashback query hanya melihat
data pada suatu waktu sebelumnya sedangkan flashback version query
menampilkan semua perubahan data yang terjadi pada interval waktu
tertentu. Berikut ini adalah ilustrasi flashback version query

Langkah - langkah:
1. Periksa System Change Number (SCN) dan waktu sistem saat

2. Update harga jual barang 30433 menjadi 450000

Tunggu sekitar satu menit, supaya perubahan suatu nilai ke nilai


yang lainnya lebih mudah dilihat.
3. Update harga jual barang 30433 menjadi 460000

Tunggu sekitar satu menit


4. Update harga jual barang 30433 menjadi 475000

Tunggu sekitar satu menit


5. Update harga jual barang 30433 menjadi 500000

6. Periksa nilai SCN sekarang

Sekarang saatnya untuk melihat perubahan harga_jual pada barang


dengan kode_brg 30433 mulai dari SCN 983473 sampai dengan SCN
98680. Untuk menampilkan nilai SCN ketika terjadi perubahan gunakan
pseudocolumn VERSIONS_STARTSCN dan VERSIONS_ENDSCN

Dari informasi diatas maka bisa diketahui bahwa perubahan harga_jual


dari 435000 menjadi 450000 terjadi pada SCN 983492. Perubahan dari
450000 menjadi 460000 terjadi pada SCN 983598 dan seterusnya.
Jika ingin menampilkan perubahan yang terjadi berdasarkan waktu,
bisa gunakan psudocolumn VERSIONS_STARTTIME dan
VERSIONS_ENDTIME seperti berikut.

Dari informasi diatas bisa diketahui bahwa perubahan harga_jual dari


435000 menjadi 450000 trjadi pada waktu 03-FEB-2010:20:30:32.
Perubahan dari 450000 menjadi 460000 terjadi pada waktu 03-FEB-
2010:20:32:20

Anda mungkin juga menyukai