Post on 07-Jul-2018
8/19/2019 TUGAS3_MABD-D_ 28_55_115_178
1/52
Monday, 21 March 2016, 23:00 PM MABD KELAS D 2016 KELOMPOK 6
OLEH KELOMPOK 6
1.
SAFRINA KHARISMA IMANDANI 5213100028
2.
TETHA VALIANTA 52131000553.
BAGAS ANANTA PRAKOSO 5213100115
4.
DENNY ANGGA SETYAWAN 5213100178
8/19/2019 TUGAS3_MABD-D_ 28_55_115_178
2/52
Monday, 21 March 2016, 23:00 PM MABD KELAS D 2016 KELOMPOK 6
DAFTAR ISI
Soal 1 ...................................................................................................................................................... 3
Melakukan Set Autocommit menjadi Off melalui Options .................................................................... 3
A.
Bereksperimenlah dengan rollback dan commit statement .......................................................... 7
Melakukan Set Autocommit menjadi Off melalui Query ..................................................................... 15
A. Bereksperimenlah dengan rollback dan commit statement ........................................................ 19
B. Perbedaan commit dan rollback pada autocommit on dan off ................................................... 24
Soal 2 .................................................................................................................................................... 26
MENJAWAB SOAL 2 A ............................................................................................................................ 26
A. INTRODUCTION ............................................................................................................................ 26
b. TRANSACTION 1 ............................................................................................................................ 27
b. TRANSACTION 2 ............................................................................................................................ 28
b. TRANSACTION 3 ............................................................................................................................ 29
b. TRANSACTION 4 ............................................................................................................................ 30
MENJAWAB SOAL 2 B ............................................................................................................................ 31
1. Efek Save Transaction .................................................................................................................... 31
2. PERAN Save Transaction ................................................................................................................ 32
3. Efek Checkpoints ........................................................................................................................... 34
Soal 3 .................................................................................................................................................... 36
Soal 4 .................................................................................................................................................... 46
Soal 5 .................................................................................................................................................... 48
JAWABAN 5 a .................................................................................................................................... 48
JAWABAN 5 B .................................................................................................................................... 49
JAWABAN 5 c ..................................................................................................................................... 50
REFERENSI ............................................................................................................................................. 52
8/19/2019 TUGAS3_MABD-D_ 28_55_115_178
3/52
Monday, 21 March 2016, 23:00 PM MABD KELAS D 2016 KELOMPOK 6
SOAL 1
Set Autocommit dalam SQL Server Management studio menjadi Off
a.
Bereksperimenlah dengan rollback dan commit statement
b.
Perbedaan commit dan rollback pada autocommit on dan off
Jawaban :
Autocommit adalah sebuah perintah dimana setiap proses yang berhasil dilaksanakan akan
secara otomatis secara fisik disimpan dalam database. Biasanya dalam Microsoft SQL server akan
secara otomatis autocommit aktif sehingga tidak perlu dilakukan commit disetiap akhir traksaksi.
Karena akan secara otomatis dilakukan commit dan semua transaksi akan tersimpan secara
otomatis pada database. Untuk menonaktifkan autocommit pada SQL Server Management Studio
adalah sebagai berikut :
Melakukan Set Autocommit menjadi Off melalui Options,
Melakukan Set Autocommit menjadi Off dengan Query
MELAKUKAN SET AUTOCOMMIT MENJADI OFF MELALUI OPTIONS
Langkah untuk melakukan Set Autocommit dalam SQL Server Management Studio
menjadi Off melalui options adalah sebagai berikut :
1.
Setelah mengaktifkan aplikasi SQL Server Management Studio, lakukan koneksi
database seperti biasa :
2.
Langkah selanjutnya adalah pada Menu bar, pilih Tools kemudian pilih pilhan options.
Maka akan muncul jendela options.
8/19/2019 TUGAS3_MABD-D_ 28_55_115_178
4/52
Monday, 21 March 2016, 23:00 PM MABD KELAS D 2016 KELOMPOK 6
Akan muncul jendela options berikut ini :
3.
Selanjutnya pada jendela option pilihlah Query Execution kemudian akan muncul
beberapa pilihan, pilih SQL Server kemudian pilih kembali ANSI
4.
Setelah itu untuk melakukan Set Autocommit, centang pada bagian SETIMPLICIT_TRANSACTIONS setelah itu pilih OK.
8/19/2019 TUGAS3_MABD-D_ 28_55_115_178
5/52
Monday, 21 March 2016, 23:00 PM MABD KELAS D 2016 KELOMPOK 6
Untuk membuktikan apakah benar Set Autocommit sudah tidak berfungsi lakukan update data tanpa
melakukan commit, dan apakah data akan berubah atau tidak :
Berikut ini adalah database pada tabel CUSTOMER sebelum dilakukan update :
Setelah itu dilakukan update dengan mengubah nomer telpon dari customer dengan melakukan update
pada query berikut :
BEGIN TRANSACTION
UPDATE CUSTOMER
SET CUS_PHONE = '556-9877'
WHERE CUS_CODE = '10010'
8/19/2019 TUGAS3_MABD-D_ 28_55_115_178
6/52
Monday, 21 March 2016, 23:00 PM MABD KELAS D 2016 KELOMPOK 6
Maka hasil dari tabel Customer setelah dilakukan update akan tetap berubah sesuai yang diupdate, seperti
berikut :
Namun saat sql query akan di lakukan close maka akan ada pesan permintaan dimana apakah ingin
dilakukan commit seperti gambar dibawah ini, hal ini menunjukkan bahwa perintah commit sudah tidak
aktif, sehingga Set Autocommit ke Off sudah berhasil dilakukan.
8/19/2019 TUGAS3_MABD-D_ 28_55_115_178
7/52
Monday, 21 March 2016, 23:00 PM MABD KELAS D 2016 KELOMPOK 6
Maka jika pesan diatas dipilih NO dimana tidak melakukan commit maka data yang berhasil di update
akan kembali seperti sebelumnya, yaitu sebagi berikut :
A.
BEREKSPERIMENLAH DENGAN ROLLBACK DAN COMMIT STATEMENT
Commit :
Untuk mencoba melakukan transaksi commit maka akan dilakukan perubahan dengan
melakukan update pada tabel customer dimana dilakukan perubahan pada customer
PHONE dengan query sebagai berikut, untuk commit pada SQL Server Management
studio terdapat dua penggunaan query yaitu dengan :
o COMMIT TRANSACTION
o COMMIT WORK
Berikut ini adalah contoh penggunaan dari COMMIT TRANSACTION dimana dengan
melakukan perubahan update pada SQL Server Management Studio, pada kasus inidilakukan perubahan pada nomor telpon dari pelanggan dengan query sebagai berikut :
BEGIN TRANSACTION
UPDATE CUSTOMER
SET CUS_PHONE = '556-9877'
WHERE CUS_CODE = '10010'
8/19/2019 TUGAS3_MABD-D_ 28_55_115_178
8/52
Monday, 21 March 2016, 23:00 PM MABD KELAS D 2016 KELOMPOK 6
COMMIT TRANSACTION
Maka hasil update data adalah seperti gambar berikut, dimana terjadi perubahan padanomor telpon dari pelanggan. Dalam hal ini karena dalam query sudah dilakukan commit
maka pesan commit tidak muncul saat query di keluarkan karena sudah dilakukan commit.
Sebelum update :
Sesudah update :
8/19/2019 TUGAS3_MABD-D_ 28_55_115_178
9/52
Monday, 21 March 2016, 23:00 PM MABD KELAS D 2016 KELOMPOK 6
Berikut ini adalah contoh penggunaan dari COMMIT WORK dimana dengan melakukan
perubahan update pada SQL Server Management Studio, pada kasus ini dilakukan
perubahan pada nomor telpon dari pelanggan dengan query sebagai berikut :
BEGIN TRANSACTION
UPDATE CUSTOMER
SET CUS_PHONE = '220-2200'
WHERE CUS_CODE = '10015'
COMMIT WORK
Maka hasil update data adalah seperti gambar berikut, dimana terjadi perubahan pada
nomor telpon dari pelanggan. Dalam hal ini karena dalam query sudah dilakukan commit
maka pesan commit tidak muncul saat query di keluarkan karena sudah dilakukan commit.
Sebelum update :
8/19/2019 TUGAS3_MABD-D_ 28_55_115_178
10/52
Monday, 21 March 2016, 23:00 PM MABD KELAS D 2016 KELOMPOK 6
Setelah update :
ROLLBACK :
Untuk mencoba melakukan transaksi rollback maka akan dilakukan dengan melakukanperubahan kembali pada customer phone yang telah dilakukan update.
Berikut ini adalah data setelah berhasil dilakukan update sebelumnya :
8/19/2019 TUGAS3_MABD-D_ 28_55_115_178
11/52
Monday, 21 March 2016, 23:00 PM MABD KELAS D 2016 KELOMPOK 6
Berikut ini adalah contoh penggunaan dari ROLLBACK dimana dengan mengembalikannomer telpon pelanggan yang telah di update menjadi 100-1100 kembali seperti semua
yaitu 297-3809 dengan query sebagai berikut :
BEGIN TRANSACTION
GO
UPDATE CUSTOMER
SET CUS_PHONE = '110-1100'
WHERE CUS_CODE = '10019'
ROLLBACK TRANSACTION
Sebelum update :
8/19/2019 TUGAS3_MABD-D_ 28_55_115_178
12/52
Monday, 21 March 2016, 23:00 PM MABD KELAS D 2016 KELOMPOK 6
Setelah update :
Setelah dilakukan ROLLBACK :
Berikut ini adalah data setelah berhasil dilakukan commit sebelumnya :
8/19/2019 TUGAS3_MABD-D_ 28_55_115_178
13/52
Monday, 21 March 2016, 23:00 PM MABD KELAS D 2016 KELOMPOK 6
Berikut ini adalah contoh penggunaan dari ROLLBACK dimana dengan mengembalikan
nomer telpon pelanggan yang telah di update menjadi 220-2200 kembali seperti semua
yaitu 442-3381 dengan query sebagai berikut :
BEGIN TRANSACTION;
UPDATE CUSTOMERSET CUS_PHONE = '442-3381'
WHERE CUS_CODE = '10015'
ROLLBACK TRANSACTION;
Sebelum update :
8/19/2019 TUGAS3_MABD-D_ 28_55_115_178
14/52
Monday, 21 March 2016, 23:00 PM MABD KELAS D 2016 KELOMPOK 6
Setelah update :
Setelah dilakukan ROLLBACK :
Data tidak dapat dilakukan ROLLBACK karena data yang sudah dilakukan COMMIT sudah
disimpan secara permanen sehingga tidak dapat dilakukan ROLLBACK.
8/19/2019 TUGAS3_MABD-D_ 28_55_115_178
15/52
Monday, 21 March 2016, 23:00 PM MABD KELAS D 2016 KELOMPOK 6
MELAKUKAN SET AUTOCOMMIT MENJADI OFF MELALUI QUERY
Langkah untuk melakukan Set Autocommit dalam SQL Server Management Studio
menjadi Off melalui query adalah sebagai berikut :
1.
Setelah mengaktifkan aplikasi SQL Server Management Studio, lakukan koneksi
database seperti biasa :
2.
Langkah selanjutnya adalah pada database, klik kanan dan pilih New Query
Akan muncul jendela sql query berikut ini :
8/19/2019 TUGAS3_MABD-D_ 28_55_115_178
16/52
Monday, 21 March 2016, 23:00 PM MABD KELAS D 2016 KELOMPOK 6
3.
Selanjutnya pada jendela option pilihlahSQL Query tuliskan perintah berikut, SET
IMPLICIT_TRANSACTIONS ON, untuk menonaktifkan Autocommit.
Untuk membuktikan apakah benar Set Autocommit sudah tidak berfungsi lakukan update data tanpa
melakukan commit, dan apakah data akan berubah atau tidak :
Berikut ini adalah database pada tabel VENDOR sebelum dilakukan update :
8/19/2019 TUGAS3_MABD-D_ 28_55_115_178
17/52
Monday, 21 March 2016, 23:00 PM MABD KELAS D 2016 KELOMPOK 6
Setelah itu dilakukan update dengan mengubah kode area dari vendor dengan melakukan update pada
query berikut :
BEGIN TRANSACTION;
UPDATE VENDOR
SET V_AREACODE = '600'
WHERE V_CODE = '21225'
Maka hasil dari tabel Customer setelah dilakukan update akan tetap berubah sesuai yang diupdate, seperti
berikut :
8/19/2019 TUGAS3_MABD-D_ 28_55_115_178
18/52
Monday, 21 March 2016, 23:00 PM MABD KELAS D 2016 KELOMPOK 6
Namun saat sql query akan di lakukan close maka akan ada pesan permintaan dimana apakah ingin
dilakukan commit seperti gambar dibawah ini, hal ini menunjukkan bahwa perintah commit sudah tidak
aktif, sehingga Set Autocommit ke Off sudah berhasil dilakukan.
Maka jika pesan diatas dipilih NO dimana tidak melakukan commit maka data yang berhasil di update
akan kembali seperti sebelumnya, yaitu sebagi berikut :
8/19/2019 TUGAS3_MABD-D_ 28_55_115_178
19/52
Monday, 21 March 2016, 23:00 PM MABD KELAS D 2016 KELOMPOK 6
A.
BEREKSPERIMENLAH DENGAN ROLLBACK DAN COMMIT STATEMENT
Commit :
Untuk mencoba melakukan transaksi commit maka akan dilakukan perubahan dengan
melakukan update pada tabel customer dimana dilakukan perubahan pada customer
PHONE dengan query sebagai berikut, untuk commit pada SQL Server Managementstudio terdapat dua penggunaan query yaitu dengan :
o COMMIT TRANSACTION
o COMMIT WORK
Berikut ini adalah contoh penggunaan dari COMMIT TRANSACTION dimana dengan
melakukan perubahan update pada SQL Server Management Studio, pada kasus ini
dilakukan perubahan pada kode area dari vendor dengan query sebagai berikut :
BEGIN TRANSACTION UPDATE VENDOR
SET V_AREACODE = '600'
WHERE V_CODE = '21225'
COMMIT TRANSACTION
Maka hasil update data adalah seperti gambar berikut, dimana terjadi perubahan pada
kode area dari vendor. Dalam hal ini karena dalam query sudah dilakukan commit maka
pesan commit tidak muncul saat query di keluarkan karena sudah dilakukan commit.
8/19/2019 TUGAS3_MABD-D_ 28_55_115_178
20/52
Monday, 21 March 2016, 23:00 PM MABD KELAS D 2016 KELOMPOK 6
Sesudah update :
Berikut ini adalah contoh penggunaan dari COMMIT WORK dimana dengan melakukan
perubahan update pada SQL Server Management Studio, pada kasus ini dilakukan
perubahan pada kode area dari vendor denganquery sebagai berikut :
BEGIN TRANSACTION
UPDATE VENDOR
SET V_AREACODE = '800'
WHERE V_CODE = '25595'
COMMIT WORK
8/19/2019 TUGAS3_MABD-D_ 28_55_115_178
21/52
Monday, 21 March 2016, 23:00 PM MABD KELAS D 2016 KELOMPOK 6
Maka hasil update data adalah seperti gambar berikut :
Data sebelumnya :
8/19/2019 TUGAS3_MABD-D_ 28_55_115_178
22/52
Monday, 21 March 2016, 23:00 PM MABD KELAS D 2016 KELOMPOK 6
ROLLBACK :
Untuk mencoba melakukan transaksi rollback maka akan dilakukan dengan melakukan
perubahan kembali pada customer phone yang telah dilakukan update.
Berikut ini adalah data setelah berhasil dilakukan update sebelumnya :
Berikut ini adalah contoh penggunaan dari ROLLBACK dimana dengan mengembalikan
kode area pelanggan yang telah di update menjadi 700 kembali seperti semua yaitu 904
dengan query sebagai berikut :
BEGIN TRANSACTION
GO
UPDATE VENDOR
SET V_AREACODE = '700'
WHERE V_CODE = '21226'
ROLLBACK TRANSACTION
8/19/2019 TUGAS3_MABD-D_ 28_55_115_178
23/52
Monday, 21 March 2016, 23:00 PM MABD KELAS D 2016 KELOMPOK 6
Setelah dilakukan ROLLBACK data kembali ke nilai awal yaitu 904 :
Sama seperti sebelumnya data yang sudah dilakukan commit tidak dapat dilakukan
ROLLBACK karena data yang sudah dilakukan COMMIT sudah disimpan secara permanen
sehingga tidak dapat dilakukan ROLLBACK.
8/19/2019 TUGAS3_MABD-D_ 28_55_115_178
24/52
Monday, 21 March 2016, 23:00 PM MABD KELAS D 2016 KELOMPOK 6
B.
PERBEDAAN COMMIT DAN ROLLBACK PADA AUTOCOMMIT ON DAN OFF
Commit
NO Autocommit on Autocommit off
1 Pada saat autocommit diaktifkan makadalam SQL Server Management studio
akan secara otomatis menyimpan data
tanpa perlu menuliskan query commit.
Langsung saja melakukan perintah
update untuk melakukan perubahan pada
data seperti berikut :
Meskipun tidak dilakukan commit pada
saat sql dikeluarkan, dan dibuka kembali
hasil update masih tetap ada dan
tersimpan seperti berikut :
Pada saat autocommit dimatikan dalam SQL ServerManagement studio maka harus dilakukan commit
pada setiap kali melakukan transaksi karena jika
tidak data yang telah dilakukan update tidak akan
tersimpan.
Jikatidak dilakukan commit maka tidak akan ada
perubahan dalam data seperti berikut :
2 Pada saat autocommit diaktifkan maka
setiap transaksi selesai akan dilakukan
commit otomatis tanpa ada
pemberitahuan
Pada saat autocommit dinonaktifkan maka setiap
transaksi selesai dan sql query di close maka akan
muncul permintaan pesan untuk melakukan
commit seperti berikut :
8/19/2019 TUGAS3_MABD-D_ 28_55_115_178
25/52
Monday, 21 March 2016, 23:00 PM MABD KELAS D 2016 KELOMPOK 6
Rollback
NO Autocommit on Autocommit off
1 Pada saat autocommit diaktifkan maka
secara otomatis commit akan menyimpan
data secara permanen sehingga tidak dapat
dilakukan ROLLBACK, data yang tersimpan
tidak dapat dikembalikan seperti semulai
lagi seperti berikut :
Pada saat autocommit dinonaktifkan
dapat dilakukan ROLLBACK untuk
mengembalikan data sebelumnya,
dengan syarat belum dilakukan commit ,
seperti berikut ini
2 Jika ingin mengembalikan data seperti
semula pada autocommit yang aktif harus
menggunakan transaksi update data
merubah data ke data semula
Jika autocommit dimatikan perubahan
data dapat dilakukan dengan ROLLBACK
dan transaksi update data merubah data
ke data semula
8/19/2019 TUGAS3_MABD-D_ 28_55_115_178
26/52
Monday, 21 March 2016, 23:00 PM MABD KELAS D 2016 KELOMPOK 6
SOAL 2
Buatlah sebuah transaksi dengan skenario bebas. Db req=2, ada update menggunakan database “sale_co”
a.
Jalankan transaksi tersebut
b.
Jelaskan aplikasikan dan tunjukkan dampak dari “save transaction” dan “checkpoint”
Jawaban :
MENJAWAB SOAL 2 A
A. INTRODUCTION
1.
Sebagai langkah pertama, kami akan menjalankan query untuk membuat database yang
direkomendasikan :
2.
Bila dilihat struktur datanya akan terbentuk seperti gambar di bawah ini :
8/19/2019 TUGAS3_MABD-D_ 28_55_115_178
27/52
Monday, 21 March 2016, 23:00 PM MABD KELAS D 2016 KELOMPOK 6
B. TRANSACTION 1
3.
A. VENDOR BEFORE QUERY INSERT :
B. VENDOR AFTER QUERY INSERT
8/19/2019 TUGAS3_MABD-D_ 28_55_115_178
28/52
Monday, 21 March 2016, 23:00 PM MABD KELAS D 2016 KELOMPOK 6
B. TRANSACTION 2
4.
A. PRODUCT BEFORE QUERY INSERT
B. PRODUCT AFTER QUERY INSERT
8/19/2019 TUGAS3_MABD-D_ 28_55_115_178
29/52
Monday, 21 March 2016, 23:00 PM MABD KELAS D 2016 KELOMPOK 6
B. TRANSACTION 3
5.
A. CUSTOMER BEFORE QUERY INSERT
B. CUSTOMER AF TER QUERY INSERT
8/19/2019 TUGAS3_MABD-D_ 28_55_115_178
30/52
Monday, 21 March 2016, 23:00 PM MABD KELAS D 2016 KELOMPOK 6
B. TRANSACTION 4
6.
A. PRODUCT BEFORE QUERY UPDATE
B. PRODUCT AFTER QUERY UPDATE
8/19/2019 TUGAS3_MABD-D_ 28_55_115_178
31/52
Monday, 21 March 2016, 23:00 PM MABD KELAS D 2016 KELOMPOK 6
MENJAWAB SOAL 2 B
1. EFEK SAVE TRANSACTION
Melihat efek dari save transaction adalah dengan cara membiarkan database pada kondisi default
(Database SaleCo), kemudian jalankan query berikut :
BEGIN TRANSACTION
SAVE TRANSACTION kenyamanan
Query di atas berfungsi untuk menyimpan kondisi database pada saat belum terjadi transaction, dimana
kondisi tersebut disimpan dengan nama kenyamanan. Kemudian dikombinasikan dengan query yang
sebelumnya dimasukkan yakni INSERT dan UPDATE :
INSERT INTO VENDOR VALUES (21290, 'SUBUR_EYANG', 'SUBUR', 212, 212-5213, 'SB', 'N');
INSERT INTO PRODUCT VALUES ('11NOV/55', 'CELANA KOMPRANK', 2005-11-11, 10, 5, 15, 0, 21290);
INSERT INTO CUSTOMER VALUES (10020, 'WARAS', 'SEGER', 'T', '713', '031-5555', 0);UPDATE PRODUCT SET P_PRICE = 20 WHERE V_CODE = 21290 ;
Jika query tersebut dijalankan, maka database akan dieksekusi menjadi empat transaksi seperti yang
sudah dituliskan tadi.
Database akan memiliki data baru berupa vendor, product, customer dan mengupdate data product.
Selanjutnya untuk melihat log aktifitas yang telah dieksekusi pada database dapat dilakukan dengan cara
menjalankan query berikut :
SELECT [Current LSN], [Operation] FROM fn_dblog (NULL, NULL);
Query tersebut berfungsi untuk menampilkan Log Sequence Numbers (LSN) yang isinya adalah aktivitas
eksekusi dari database.
8/19/2019 TUGAS3_MABD-D_ 28_55_115_178
32/52
Monday, 21 March 2016, 23:00 PM MABD KELAS D 2016 KELOMPOK 6
Dalam log ini tersimpan juga aktivitas checkpoint dan aktivitas lain yang mungkin tidak terlihat oleh user.
Didukung dengan gambar yang menunjukkan 4 transaksi yang dieksekusi oleh database, dimana transaksi
yang diakomodir adalah :
1.
Insert data VENDOR
2.
Insert data PRODUCT3.
Insert data CUSTOMER
4.
Update data PRODUCT
Dalam gambar tersebut juga muncul LOP_MARK_SAVEPOINT dimana terjadi pencatatan kondisi database
yang ditandai dengan perintah SAVE TRANSACTION.
2. PERAN SAVE TRANSACTION
Peran save transaction dipakai, ketika user ingin mengembalikan kondisi database pada kondisi semula,
dimana user dapat melakukan proses rollback transaction. Rollback digunakan untuk mengembalikan
kondisi ke database pada kondisi ‘kenyamanan’ dimana tidak terdapat aktivitas transaction. Berikut
adalah query yang digunakan :
ROLLBACK TRANSACTION kenyamanan ;
Setelah Query dijalankan maka untuk melihat apakah rollback berjalan lancer dapat dicek melihat data
product yang berada pada kondisi awal, dimana tidak ada product “CELANA KOMPRANK”
8/19/2019 TUGAS3_MABD-D_ 28_55_115_178
33/52
Monday, 21 March 2016, 23:00 PM MABD KELAS D 2016 KELOMPOK 6
Adapun jika didokumentasikan lognya dapat dilihat dengan gambar berikut ini :
8/19/2019 TUGAS3_MABD-D_ 28_55_115_178
34/52
Monday, 21 March 2016, 23:00 PM MABD KELAS D 2016 KELOMPOK 6
3. EFEK CHECKPOINTS
Fungsi dari checkpoints adalah untuk membuang data yang kotor (dirty data) dari cache buffer yang
ada pada database disk, yang berguna untuk memastikan jumlah data pada database log tetap dalam
jumlah yang wajar sehingga sistem tidak mengalami load dalam ukuran yang besar.
Pada dasarnya, checkpoints sudah berjalan ketika sql server di start, adapun untuk melihatnya dapatmenggunakan query berikut ini :
SELECT [Current LSN], [Operation] FROM fn_dblog (NULL, NULL);
Berikut adalah hasil querynya :
Untuk mengetahui efek checkpoints dapat dijalankan dengan query berikut :
BEGIN TRANSACTION
SAVE TRANSACTION baradaaINSERT INTO VENDOR VALUES (21290, 'SUBUR_EYANG', 'SUBUR', 212, 212-5213, 'SB', 'N');
INSERT INTO PRODUCT VALUES ('11NOV/55', 'CELANA KOMPRANK', 2005-11-11, 10, 5, 15, 0, 21290);
INSERT INTO CUSTOMER VALUES (10020, 'WARAS', 'SEGER', 'T', '713', '031-5555', 0);
UPDATE PRODUCT SET P_PRICE = 20 WHERE V_CODE = 21290;
Kemudian setelah query dijalankan, ketikkan query berikut :
DBCC SQLPERF('LOGSPACE')
Query tersebut berfungsi untuk melihat penggunaan log space dari masing-masing database.
8/19/2019 TUGAS3_MABD-D_ 28_55_115_178
35/52
Monday, 21 March 2016, 23:00 PM MABD KELAS D 2016 KELOMPOK 6
Gambar di atas terlihat bahwa penggunaan log dari database afterbebas adalah 41.33858%, untuk
mengetahui dampak dari checkpoint.
Untuk menjalankan perintah checkpoint secara manual, kita dapat menjalankannya dengan query :
CHECKPOINT;
Kemudian setelah query dijalankan, ketikkan kembali query log space berikut :
DBCC SQLPERF('LOGSPACE')
Dari hasil perbandingan kedua gambar di atas, terlihat bahwa penggunaan log space meningkat sekitar
16.92914% setelah eksekusi checkpoint secara manual yang telah dilakukan. Hal tersebut dapat terjadi
karena sistem mencatat aktivitas baru berupa checkpoint pada Log Sequence Number, efeknya adalah
sistem memiliki load tambahan pada usage log space.
Jika kita ingin mengetahui log aktivitas untuk menunjukkan bahwa log ditambahkan karena query
checkpoints dijalankan adalah dengan cara menjalankan query :
SELECT [Current LSN], [Operation] FROM fn_dblog (NULL, NULL) ;
Hasilnya adalah sebagai berikut :
8/19/2019 TUGAS3_MABD-D_ 28_55_115_178
36/52
Monday, 21 March 2016, 23:00 PM MABD KELAS D 2016 KELOMPOK 6
SOAL 3
Jelaskan macam-macam Isolation Level pada SQL Server
a.
Tunjukkan cara merubah settingan isolation level
Jawaban :
Isolation level sendiri terdiri atas:
1. READ UNCOMMITTED
Pada read uncommitted, tidak terdapat isolation pada transaksi sehingga data yang telah dimodifikasi
masih dapat dibaca meskipun transaksi tersebut belum dicommit.
Contoh:
Pada transaksi yang pertama akan dilakukan update P_QOH pada P_CODE=’11QER/31’ denganwaktu delay selama 20 detik. Untuk melakukan hal tersebut dapat memasukkan query seperti
dibawah ini:
BEGIN TRAN
UPDATE PRODUCT SET P_ONHAND = 2 WHERE P_CODE ='13-Q2/P2' ;
WAITFOR DELAY '00:00:20'
ROLLBACK
8/19/2019 TUGAS3_MABD-D_ 28_55_115_178
37/52
Monday, 21 March 2016, 23:00 PM MABD KELAS D 2016 KELOMPOK 6
Selanjutnya kita ingin melihat daftar product dengan memasukkan query SELECT * FROM PRODUCT.
Transaksi kedua tersebut tidak menunggu hingga transaksi yang pertama selesai. Transaksi kedua
tetap dapat tereksekusi tanpa adanya jeda karena tidak perlu menunggu commit.
Kemudian masukkan query berikut ini:
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
SELECT * FROM PRODUCT
Fungsi query diatas adalah untuk melakukan setting isolation level.
8/19/2019 TUGAS3_MABD-D_ 28_55_115_178
38/52
Monday, 21 March 2016, 23:00 PM MABD KELAS D 2016 KELOMPOK 6
2.
READ COMMITTED
Read committed merupakan kebalikan dari read uncommitted. Disini terdapat isolation pada
transaksi sehingga database hanya dapat membaca transaksi yang sudah dicommit. Read
committed terbebas dari gangguan dirty reads.
Contoh:
Pada transaksi pertama akan dilakukan update P_QOH pada P_CODE=’11QER/31’ dengan
waktu delay selama 20 detik. Untuk melakukan hal tersebut dapat memasukkan query
seperti dibawah ini:
BEGIN TRAN
UPDATE PRODUCT SET P_ONHAND = 14 WHERE P_CODE ='13-Q2/P2' ;
WAITFOR DELAY '00:00:20'
COMMIT
8/19/2019 TUGAS3_MABD-D_ 28_55_115_178
39/52
Monday, 21 March 2016, 23:00 PM MABD KELAS D 2016 KELOMPOK 6
Selanjutnya kita ingin melihat daftar product dengan memasukkan query SELECT * FROM PRODUCT.
Transaksi kedua tersebut menunggu hingga transaksi yang pertama selesai.
Kemudian masukkan query berikut ini:
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
SELECT * FROM PRODUCT
Hasilnya dapat dilihat dibawah ini, dimana transaksi kedua hanya dapat tereksekusi saat transaksi
sebelumnya selesai dilakukan.
3.
REPEATABLE READ
8/19/2019 TUGAS3_MABD-D_ 28_55_115_178
40/52
Monday, 21 March 2016, 23:00 PM MABD KELAS D 2016 KELOMPOK 6
Repeatable read memastikan transaksi terjaga dari upaya modifikasi hingga proses transaksi
selesai dilakukan. Jadi transaksi tersebut tidak dapat diganggu sampai proses commit sehingga
terlindungi dari dirty reads dan non-repeatable reads.
Contoh:
Kemudian masukkan query berikut ini untuk menyetting isolation level:
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ
BEGIN TRAN
SELECT * FROM PRODUCT
WAITFOR DELAY '00:00:20'
SELECT * FROM PRODUCT
ROLLBACK
Akan tetapi transaksi pertama tersebut belum selesai sehingga transaksi yang lainnya tidak dapat
tereksekusi. Masukkan query dibawah ini:
UPDATE PRODUCT SET P_ONHAND = 14 WHERE P_CODE ='13-Q2/P2' ;
8/19/2019 TUGAS3_MABD-D_ 28_55_115_178
41/52
Monday, 21 March 2016, 23:00 PM MABD KELAS D 2016 KELOMPOK 6
Jadi transaksi dua baru dapat dieksekusi setelah transaksi yang pertama selesai.
Isolation Level ini tidak bisa melakukan modifikasi dengan perintah update tetapi dapat
melakukan input baru pada baris baru dengan perintah insert.
4.
SERIALIZABLE
Pada serialiazable mencegah transaksi update, insert, dan delete. Pada serializable sebelum
transaksi selesai dilakukan maka transaksi yang lain tidak dapat dimodifikasi. Data pada transaksi
yang belum selesai juga tidak dapat dibaca.
Contoh:
Masukkan query berikut ini:
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
BEGIN TRAN
8/19/2019 TUGAS3_MABD-D_ 28_55_115_178
42/52
Monday, 21 March 2016, 23:00 PM MABD KELAS D 2016 KELOMPOK 6
SELECT * FROM VENDOR
WAITFOR DELAY '00:00:20'
SELECT * FROM VENDOR
ROLLBACK
Dapat dilihat bahwa transaksi kedua tidak tereksekusi karena transaksi pertama masih belum
selesai dilakukan. Hali ini menyebabkan transaksi pertama hasilnya sama. Jadi tunggulah transaksi
pertama selesai baru eksekusi transaksi kedua.
Kemudian masukkan query dibawah ini:
INSERT VENDOR (V_CODE, V_NAME, V_CONTACT, V_AREACODE, V_PHONE, V_STATE, V_ORDER)
VALUES ('21228','Nintendo', 'Nigo','667', '111-223', 'JP', 'N')
8/19/2019 TUGAS3_MABD-D_ 28_55_115_178
43/52
Monday, 21 March 2016, 23:00 PM MABD KELAS D 2016 KELOMPOK 6
Kemudian untuk mengecek hasilnya masukkan query:
SELECT * FROM VENDOR
Dapat dilihat di row nomor empat telah muncul Nintendo.
5.
SNAPSHOT
Snapshot berfungsi untuk melindungi dari permasalahan concurrency. Pada snapshot tidak terjadi
lock pada tabel sehingga memungkinkan modifikasi/uptade pada transaksi yang lain. Jadi pada
snapshot data lamanya mempertahankan versi Tempdb.
Contoh:
8/19/2019 TUGAS3_MABD-D_ 28_55_115_178
44/52
Monday, 21 March 2016, 23:00 PM MABD KELAS D 2016 KELOMPOK 6
Agar dapat mempraktekkan snapshot, kita harus melakukan alter terlebih dahulu dengan
memasukkan query dibawah ini:
ALTER DATABASE tugaskelompokbaru
SET ALLOW_SNAPSHOT_ISOLATION ON
Selanjutnya lakukan perintah select dengan memasukkan query dibawah ini:
SET TRANSACTION ISOLATION LEVEL SNAPSHOT
BEGIN TRAN
SELECT * FROM VENDOR
WAITFOR DELAY '00:00:20'
SELECT * FROM VENDOR
ROLLBACK
8/19/2019 TUGAS3_MABD-D_ 28_55_115_178
45/52
Monday, 21 March 2016, 23:00 PM MABD KELAS D 2016 KELOMPOK 6
Dapat dilihat bahwa pada transaksi kedua ingin melakukan penambahan row dan transaksi kedua
akan langsung tereksekusi dan tidak perlu menunggu transaksi pertama selesai. Hal ini disebabkan
snapshot tidak melakukan lock pada tabel sehingga dapat dilakukan dimodifikasi.
Cobalah masukkan query dibawah ini untuk menambahkan row baru:
INSERT VENDOR (V_CODE, V_NAME, V_CONTACT, V_AREACODE, V_PHONE, V_STATE, V_ORDER)
VALUES ('21227','Sega', 'Mike','666', '111-222', 'GB', 'N')
Kemudian untuk mengecek hasilnya masukkan query:
SELECT * FROM VENDOR
Dapat dilihat di row nomor tiga telah muncul Sega.
8/19/2019 TUGAS3_MABD-D_ 28_55_115_178
46/52
Monday, 21 March 2016, 23:00 PM MABD KELAS D 2016 KELOMPOK 6
SOAL 4
Jalankan prosedur built in yang bernama “sp_lock”
a.
Jalankan transaksi yang telah anda buat sebelumnya, lalu jalankan sp_lock. Amati dan jelaskan
hasil dari prosedur tersebut
Jawaban :
Sp lock, merupakan procedure yang menyediakan informasi tentang locks yang ada pada SQL Server
Connections.
Secara eksplisit, procedure ini memberikan system proses ids yang dicari. Tetapi apabila
menjalankan sp_lock tanpa parameter juga dapat dilakukan seperti gambar diatas, hasilnya sistem akan
memberikan pengembalian data yang dipegang oleh semua spids pada server.
Hasil dari procedure ini adalah berupa laporan semua lock yang sedang aktif pada Database Engine.
Penjelasan dari Laporan procedure sp_lock :
1.
spid : Database Engine session ID yang meminta Lock
2.
dbid : Nomor identifikasi dari database di mana kunci diadakan. Dapat menggunakan fungsi
DB_NAME () untuk mengidentifikasi database.
3.
objld : Nomor identifikasi dari objek yang kunci diadakan. Dapat menggunakan fungsi
OBJECT_NAME () dalam database terkait untuk mengidentifikasi objek.
4.
indld : Nomor identifikasi dari indeks yang kunci diadakan.
8/19/2019 TUGAS3_MABD-D_ 28_55_115_178
47/52
Monday, 21 March 2016, 23:00 PM MABD KELAS D 2016 KELOMPOK 6
Type - type pada sp_lock
1.
RID = Lock pada satu baris dalam tabel diidentifikasi oleh pengenal baris (RID).
2.
KEY = Kunci dalam indeks yang melindungi berbagai kunci dalam transaksi
serializable.
3.
PAG = Lock pada halaman data atau indeks.
4.
EXT = Lock pada Extent.
5.
TAB = Lock pada seluruh tabel, termasuk semua data dan indeks.
6.
DB = Lock pada database.
7.
FIL = Lock pada file database.
8.
APP = Lock pada sumber daya aplikasi-ditentukan.
9.
MD = Kunci pada metadata, atau informasi katalog.10.
HBT = Lock di atas tumpukan atau indeks B-Tree. Informasi ini tidak lengkap dalam
SQL Server.
11.
AU = Lock pada unit alokasi. Informasi ini tidak lengkap dalam SQL Server.
8/19/2019 TUGAS3_MABD-D_ 28_55_115_178
48/52
Monday, 21 March 2016, 23:00 PM MABD KELAS D 2016 KELOMPOK 6
SOAL 5
5.
Jelaskan macam-macam recovery model yang ada pada SQL Server
a.
Jelaskan perbedaan masing-masing model
b.
Jelaskan nilai default model ketika kita create database
c.
Jelaskan cara merubah recovery model dari sebuah database
Jawaban :
Recovery adalah suatu proses dimana untuk melakukan update pada database dengan file backup yang
telah tersimpan terakhir kali. Dalam Recovery terdapat beberapa model yaitu sebagai berikut :
a.
Full Recovery Model,
Pada model ini, transaction log akan dipotong saat dilakukan backup transaction log. Pada full
recovery, bckup transaction log harus dilakukan secara berkala agar transaction log tidak
membengkak.b.
Bulk-Logged Recovery Model,
Pada model ini akan dituliskan data page yang telah dimodifikasi kedalam file data sebelum
transaksi dinyatakan selesai.
c.
Simple Recovery Model,
Pada model ini pemotongan pada transaction log secara otomatis akan terpotong pada saat
checkpoint selesai dilakukan.
JAWABAN 5 A
Restore Operation Full Recovery Bulk-Logged Recovery Simple Recovery
Log Backup Membutuhkan log
backup
Membutuhkan log
backup
Tidak ada log backup
Data recovery Complete recovery (jika
log masih tersedia)
Sebagian data hilang Data yang terakhir
dilakukan backup
Recover to point in
time?
Dapat pulih dititik waktu
tertentu dengan asumsi
bahwa backup lengkap
pada titik tersebut.
Dapat pulih ke akhir
cadangan. Point-in-
time tidak didukung
Dapat memulihkan
hanya untuk cadangan
akhir
File Restore Full support Terkadang Hanya untuk file read-
only
Page Restore Full support Terkadang Tidak support
Piecemeal (file-
group level) restore
Full support Terkadang Hanya untuk file read-
only
8/19/2019 TUGAS3_MABD-D_ 28_55_115_178
49/52
Monday, 21 March 2016, 23:00 PM MABD KELAS D 2016 KELOMPOK 6
Work loss exposure Biasanya tidak ada. Jika
log rusak perubahan log
terbaru harus diulang
Jika log rusak sejak
backup log terbaru
perubahan sejak
backup terakhir harus
diulang.
Perubahan sejak
backup terbaru. Dalam
terjadi bencana
perubahan yang terjadi
akan terulang
JAWABAN 5 B
Pada saat pertamakali melakukan create database nilai default dari model recovery database adalah
simple recovery Nilai tersebut dapat dilihat dari properties pada database baru yaitu seperti berikut ini :
1.
Buatlah sebuah database atau lakukan create database
2.
Setelah database berhasil di create lihat nilai recovery dengan melalui properties
3.
Setelah jendela properties muncul pilih pilihan options, lihat pada kolom recovery model
akan terlihat nilai default dari recovery.
8/19/2019 TUGAS3_MABD-D_ 28_55_115_178
50/52
Monday, 21 March 2016, 23:00 PM MABD KELAS D 2016 KELOMPOK 6
JAWABAN 5 C
Cara mengubah recovery model pada database dapat dilakukan melalui Properties pilih
Options kemudian pilih atau lakukan perubahan dengan memilih recovery model yang
diinginkan. Langkah untuk mengubah dijelaskan sebagai berikut :
1.
Lakukan koneksi database seperti biasa
2.
Pilih database yang ingin dirubah klik kanan kemudian pilih properties
3.
Setelah itu akan muncul jendela properties dimana pilih options
8/19/2019 TUGAS3_MABD-D_ 28_55_115_178
51/52
Monday, 21 March 2016, 23:00 PM MABD KELAS D 2016 KELOMPOK 6
4.
Setelah itu klik drop down pada recovery model kemudian pilih recovery model yang
diinginkan.
5.
Setelah dipilih untuk mengaktifkan perubahan klik tombol OK maka perubahan recoverymodel akan tersimpan.
8/19/2019 TUGAS3_MABD-D_ 28_55_115_178
52/52
Monday, 21 March 2016, 23:00 PM MABD KELAS D 2016 KELOMPOK 6
REFERENSI
http://stackoverflow.com/questions/1090240/how-do-you-set-autocommit-in-an-sql-server-session
https://suneethasdiary.wordpress.com/tag/disabling-auto-commit-mode-in-sql-server-management-
studio/
https://msdn.microsoft.com/en-us/library/ms189275.aspx
https://risqajulia.wordpress.com/2014/08/27/backup-dan-recovery-data/
http://hikaruyuuki.lecture.ub.ac.id/files/2010/08/11-Backup-Recovery.pdf
http://gavindraper.com/2012/02/18/sql-server-isolation-levels-by example/#
http://www.besttechtools.com/articles/article/sql-server-isolation-levels-by-example
http://stackoverflow.com/questions/1090240/how-do-you-set-autocommit-in-an-sql-server-sessionhttps://suneethasdiary.wordpress.com/tag/disabling-auto-commit-mode-in-sql-server-management-studio/https://suneethasdiary.wordpress.com/tag/disabling-auto-commit-mode-in-sql-server-management-studio/https://msdn.microsoft.com/en-us/library/ms189275.aspxhttps://risqajulia.wordpress.com/2014/08/27/backup-dan-recovery-data/http://hikaruyuuki.lecture.ub.ac.id/files/2010/08/11-Backup-Recovery.pdfhttp://gavindraper.com/2012/02/18/sql-server-isolation-levels-by%20example/http://www.besttechtools.com/articles/article/sql-server-isolation-levels-by-examplehttp://www.besttechtools.com/articles/article/sql-server-isolation-levels-by-examplehttp://gavindraper.com/2012/02/18/sql-server-isolation-levels-by%20example/http://hikaruyuuki.lecture.ub.ac.id/files/2010/08/11-Backup-Recovery.pdfhttps://risqajulia.wordpress.com/2014/08/27/backup-dan-recovery-data/https://msdn.microsoft.com/en-us/library/ms189275.aspxhttps://suneethasdiary.wordpress.com/tag/disabling-auto-commit-mode-in-sql-server-management-studio/https://suneethasdiary.wordpress.com/tag/disabling-auto-commit-mode-in-sql-server-management-studio/http://stackoverflow.com/questions/1090240/how-do-you-set-autocommit-in-an-sql-server-session