tugas3_mabd-d_ 28_55_115_178

Upload: tetha-kuosaki

Post on 07-Jul-2018

226 views

Category:

Documents


0 download

TRANSCRIPT

  • 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