Anda di halaman 1dari 28

MODUL 14 – DATABASE MAINTENANCE

LAPORAN PRAKTIKUM
Performing Ongoing Database Maintenance

DOSEN PENGAMPU :
Nahindi Putra Gitama, S.Pd., M.Pd

Disusun Oleh:

Nama : ABD GHAFUR


NIM : 2131750001
Kelas : 2A-MI
Mata kuliah : Manajemen Basis Data

PROGRAM STUDI MANAJEMEN INFORMATIKA


POLITEKNIK NEGERI MALANG KAMPUS PAMEKASAN
2023

1
1.1 Daftar Isi

1.1 DAFTAR ISI.............................................................................................................................. 2

1.2 TUJUAN PRAKTIKUM .......................................................................................................... 3

1.3 DATABASE MAINTENANCE ............................................................................................... 3

1.4 MEMASTIKAN INTEGRITAS DATABASE ........................................................................ 3

1.4.1 PENGENALAN DBCC ............................................................................................................................. 3


1.4.2 DBCC CHECKDB ................................................................................................................................ 4
Opsi Perbaikan .............................................................................................................................................. 4
Operasi Bersamaan Online............................................................................................................................ 4
Ruang Penyimpanan ...................................................................................................................................... 4
1.4.3 DBCC CHECKDB OPTIONS ................................................................................................................. 5
1.4.4 DBCC CHECKDB REPAIR OPTIONS..................................................................................................... 6
Opsi Perbaikan .............................................................................................................................................. 6
1.4.5 LANGKAH-LANGKAH PRAKIKUM............................................................................................................ 6

1.5 PEMELIHARAAN INDEKS ................................................................................................ 13

1.4.1 INDEKS................................................................................................................................................. 13
1.4.2 FRAGMENTASI INDEKS ......................................................................................................................... 14
Fragmentasi Internal vs. Eksternal .............................................................................................................. 14
Mendeteksi Fragmentasi .............................................................................................................................. 15
1.4.3 PEMELIHARAAN INDEKS ...................................................................................................................... 15
Rebuild ......................................................................................................................................................... 16
Reorganize ................................................................................................................................................... 16
1.4.4 PRAKTIKUM 2. PEMELIHARAAN INDEKS .............................................................................................. 16

1.6 OTOMASI PEMELIHARAAN DATABASE RUTIN ......................................................... 21

1.4.5 SQL SERVER DATABASE MAINTENANCE PLAN ................................................................................... 21


1.4.6 PRAKTIKUM 3. OTOMASI PEMELIHARAAN DATABASE........................................................................... 22
MODUL 14 – DATABASE MAINTENANCE

1.2 Tujuan Praktikum

Setelah melakukan materi praktikum ini, mahasiswa mampu:


1. Memastikan integritas basis data.
2. Memelihara indeks.
3. Melakukan pemeliharaan database rutin.

1.3 Database Maintenance

Mesin basis data Microsoft® SQL Server® mampu berjalan dengan baik, meskipun tidak dilakukan
pemeliharaan(maintenance) berkala. Namun, untuk mendapatkan performa terbaik dari basis data
membutuhkan operasi pemeliharaan rutin. Kerusakan (corruption) database relatif jarang tetapi salah
satu tugas paling penting dalam pemeliharaan database yang sedang berjalan adalah untuk memeriksa
bahwa tidak ada kerusakan yang terjadi dalam database. Indeks SQL Server juga dapat terus bekerja
tanpa dilakukan pemeliharaan tetapi mereka akan berkinerja lebih baik jika fragmentasi yang terjadi di
dalamnya secara berkala dihapus. Dalam SQL Server terdapat fitur untuk membantu menciptakan SQL
Server Agent Jobs yang melakukan tugas pemeliharaan

1.4 Memastikan Integritas Database

1.4.1 Pengenalan DBCC

DBCC adalah utilitas yang disediakan dengan SQL Server yang menyediakan sejumlah besar fasilitas
manajemen. Dalam dokumentasi sebelumnya, DBCC disebut sebagai Database Consistency Checker.
Memeriksa konsistensi database dengan menggunakan opsi CHECKDB adalah penggunaan utama
DBCC, selain itu DBCC memiliki banyak kegunaan lain. Dalam versi produk saat ini, DBCC disebut
sebagai Database Console Commands, karena lebih mencerminkan beragam tugas yang dapat
dilakukan melalui DBCC.

3
MODUL 14 – DATABASE MAINTENANCE

1.4.2 DBCC CHECKDB


Opsi CHECKDB pada utilitas DBCC melakukan pemeriksaan menyeluruh dari struktur database,
untuk mendeteksi hampir semua bentuk potensi corruption. Serangkaian fungsi yang terkandung dalam
DBCC CHECKDB juga tersedia sebagai opsi yang dapat dilakukan secara terpisah jika diperlukan.
Yang paling penting dari opsi-opsi tersebut ditunjukkan pada tabel berikut:

Opsi Perbaikan
Meskipun DBCC CHECKDB memiliki opsi perbaikan, untuk memperbaiki database tanpa kehilangan
data, tidak selalu dimungkinkan. Biasanya, opsi terbaik untuk pemulihan basis data adalah restore basis
data. artinya DBCC CHECKDB harus disinkronkan dengan kebijakan penyimpanan back up Anda,
untuk memastikan bahwa Anda selalu dapat memulihkan (restore) database dari database yang tidak
rusak dan bahwa semua cadangan log yang diperlukan sejak saat itu tersedia.
Operasi Bersamaan Online
DBCC CHECKDB dapat membutuhkan waktu lama untuk mengeksekusi dan menghabiskan banyak
sumber daya I / O dan CPU. Untuk alasan ini, DBA sering perlu menjalankannya saat database sedang
digunakan.

Ruang Penyimpanan
Penggunaan snapshot internal menyebabkan DBCC CHECKDB membutuhkan ruang penyimpanan
(disk space/strorage) tambahan. DBCC CHECKDB membuat file tersembunyi (menggunakan NTFS
Alternate Streams) pada volume yang sama dengan file database berada.
Ruang kosong yang cukup pada volume harus tersedia agar DBCC CHECKDB dapat berjalan dengan
sukses. Jumlah ruang disk yang diperlukan pada volume tergantung pada seberapa banyak data diubah
selama pelaksanaan DBCC CHECKDB. DBCC CHECKDB juga menggunakan ruang dalam tempdb
saat menjalankan. Untuk memberikan perkiraan jumlah ruang yang diperlukan dalam tempdb, DBCC
CHECKDB menawarkan opsi ESTIMATEONLY.

4
MODUL 14 – DATABASE MAINTENANCE

1.4.3 DBCC CHECKDB Options

DBCC CHECKDB menyediakan sejumlah opsi yang mengubah perilakunya saat dijalankan.

• Opsi PHYSICAL_ONLY sering digunakan pada sistem yang sedang berjalan(production) karena
secara substansial mengurangi waktu yang diperlukan untuk menjalankan DBCC CHECKDB pada
database besar. Jika Anda secara teratur menggunakan opsi PHYSICAL_ONLY, Anda masih perlu
menjalankan Full Version secara berkala.
• Opsi NOINDEX memjadikan pemeriksaan intensif terhadap indeks non-Clustered untuk tabel user
tidak dilakukan. Ini juga mengurangi waktu eksekusi keseluruhan tetapi tidak mempengaruhi tabel
sistem karena pemeriksaan integritas selalu dilakukan pada indeks tabel sistem.
• EXTENDED_LOGICAL_CHECKS hanya dapat dilakukan ketika database berada dalam tingkat
kompatibilitas database 100 (SQL Server 2008) atau lebih tinggi. Opsi ini melakukan pemeriksaan
terperinci atas struktur internal objek seperti tipe data yang ditentukan CLR user dan tipe data spasial.
• Opsi TABLOCK digunakan agar DBCC CHECKDB dapat melakukan table lock pada setiap tabel
sambil melakukan consistency check. Hal ini mengurangi kebutuhan ruang penyimpanan tetapi
membuat user lain tidak dapat memperbarui tabel.
• Opsi ALL_ERRORMSGS dan NO_INFOMSGS hanya memengaruhi output dari perintah tetapi
bukan operasi yang dilakukan oleh perintah.
• Opsi ESTIMATEONLY memperkirakan kebutuhan ruang dalam tempdb

5
MODUL 14 – DATABASE MAINTENANCE

1.4.4 DBCC CHECKDB Repair Options

Selain memberikan rincian kesalahan yang telah ditemukan, output DBCC CHECKDB menunjukkan
opsi perbaikan yang akan diperlukan untuk memperbaiki masalah. Dalam contoh pada slide, empat
kesalahan konsistensi ditemukan dan opsi REPAIR_ALLOW_DATA_LOSS akan diperlukan untuk
memperbaiki database.
Opsi Perbaikan
DBCC CHECKDB menawarkan dua opsi perbaikan. Untuk kedua opsi, basis data harus dalam mode
pengguna tunggal. Opsinya adalah:
• REPAIR_REBUILD membangun kembali indeks. Page data yang rusak dihapus. Opsi ini hanya
berfungsi untuk corruption ringan dan tidak mengakibatkan kehilangan data.
• REPAIR_ALLOW_DATA_LOSS hampir selalu mengakibatkan kehilangan data. Prosen ini
merelokasi page yang rusak/corrupt dan mengubah page lain yang merujuk ke page yang rusak.
Kehilangan data yang signifikan bisa saja terjadi. Operasi perbaikan juga tidak mempertimbangkan
kendala apa pun yang mungkin ada di atau di antara tabel. Jika tabel yang ditentukan terlibat dalam satu
atau beberapa kendala, disarankan agar untuk menjalankan DBCC CHECKCONSTRAINTS setelah
operasi perbaikan selesai.

1.4.5 Langkah-langkah prakikum

Praktikum 1. DMCC Check DB

1. Buka Microsoft SQL Server 2012, klik SQL Server Management Studio. Connect ke Server
Window, type Proseware dan klik Connect. Pada File menu, klik Open, klik

6
MODUL 14 – DATABASE MAINTENANCE

Project/Solution, buka D:\10775A_Labs\10775A_12_PRJ\10775A_12_PRJ.ssmssln dan


Open.
2. Pada View menu, klik Solution Explorer. Buka dan jalankan 00 – Setup.sql.
Hasil:

3. Jalankan DBCC CHECKDB dengan opsi Default

Hasil:

4. Catat output, dan arahkan ke pesan terakhir yang menunjukkan bahwa tidak ada error!
(screenshot)
5. Jalankan DBCC CHECKDB tanpa pesan informasi, hanya pesan kesalahan yang akan muncul
dengan opsi ini.

7
MODUL 14 – DATABASE MAINTENANCE

Hasil:

6. Catat perbedaan output dengan perintah sebelumnya. Bagaimana output query ini? Mengapa
Demikian?
7. Restore database yang rusak (corrupt). Perhatikan bahwa basis data ini di back up dalam
keadaan rusak.

8. Catat output, dan arahkan ke pesan terakhir yang menunjukkan bahwa restore berhasil!
(screenshot)
Hasil:

8
MODUL 14 – DATABASE MAINTENANCE

9. Jalankan DBCC CHECKDB terhadap CorruptDB.

10. Catat output, ada berapa jumlah error? Table apa yang error?
11. Baris output terakhir memberi tahu anda tingkat perbaikan minimum yang diperlukan

Hasil:

12. Cobalah untuk mengakses tabel Order

13. Perhatikan bahwa terdapat error Msg 824. Ini adalah kesalahan umum yang berhubungan
dengan masalah subsistem disk.

14. Perhatikan bahwa error mungkin hanya berlaku untuk page tertentu dalam tabel. Cobalah
mengakses order tertentu

Hasil:

9
MODUL 14 – DATABASE MAINTENANCE

15. Perhatikan bahwa baris dapat di return, mengapa demikian?


16. Solusi terbaik untuk permasalahan ini adalah restore dari back up yang dibuat sebelum
kerusakan terjadi. Tetapi, satu-satunya back up yang dimiliki rusak atau corrupt sehingga kita
tidak memiliki pilihan selain mencoba recover database. Ini adalah opsi darurat dan hanya
boleh digunakan sebagai pilihan terakhir. Tidak ada jaminan konsistensi dalam database yang
disediakan dan bias terdapat kehilangan data.
17. Atur basis data dalam mode SINGLE_USER dan lakukan repair.

18. Tunjukkan pesan bahwa error telah diperbaiki! (screenshot)


H

19. Lakukan rollback ke multi user mode

20. Cek apakah kita sudah bias mengakses tabel Order, tunjukkan hasilnya! (screenshot)

10
MODUL 14 – DATABASE MAINTENANCE

Hasil:

21. Jalankan DBCC CHECKDB terhadap CorruptDB lagi, apakah terdapat error? (screenshot)

22. Apakah kami kehilangan data? Perhatikan bahwa ada foreign key antara tabel Orders dan tabel
[Order Details] berdasarkan PesananID.

Hal ini berarti bahwa suatu Order harus ada untuk setiap Order Details. Lakukan query untuk melihat
order detail yang tidak memiliki Order ID yang sesuai .

11
MODUL 14 – DATABASE MAINTENANCE

23. Ada berapa banyak data yang hilang? (screenshot)

12
MODUL 14 – DATABASE MAINTENANCE

1.5 Pemeliharaan Indeks

Aspek penting lain dari SQL Server yang membutuhkan pemeliharaan (maintenance) berkelanjutan
untuk kinerja optimal database adalah pengelolaan indeks. Indeks digunakan untuk mempercepat
operasi di mana SQL Server perlu mengakses data dalam sebuah tabel. Seiring waktu, indeks dapat
menjadi terfragmentasi dan kinerja aplikasi basis data yang menggunakan indeks akan berkurang.
Defragmentasi atau pembangunan kembali indeks akan mengembalikan kinerja database.
Opsi manajemen indeks sering dimasukkan dalam jadwal rencana pemeliharaan database reguler.
Sebelum mempelajari cara mengatur rencana perawatan, penting untuk memahami lebih lanjut tentang
bagaimana indeks bekerja dan bagaimana mereka dipelihara.

SQL Server dapat mengakses data dalam tabel dengan membaca semua table page (dikenal sebagai
table scan) atau dengan menggunakan page indeks untuk menemukan baris yang diperlukan.

1.4.1 Indeks

Setiap kali SQL Server perlu mengakses data dalam sebuah tabel, SQL Server membuat keputusan
tentang apakah akan membaca semua page tabel atau apakah ada satu atau lebih indeks pada tabel yang
akan mengurangi jumlah upaya yang diperlukan dalam menemukan baris yang diperlukan.
Indeks tidak selalu diperlukan, tetapi mengakses data dengan membaca sejumlah besar page biasanya
jauh lebih lambat daripada metode dengan menggunakan indeks yang sesuai.

13
MODUL 14 – DATABASE MAINTENANCE

Indeks dapat membantu meningkatkan kinerja pencarian (searching), pengurutan (sorting), dan
penggabungan (join) tetapi mereka dapat memengaruhi kinerja modifikasi data, dan indeks
membutuhkan manajemen berkelanjutan, ruang penyimpanan tambahan.
Terkadang, SQL Server akan otomatis membuat indeks sementara untuk meningkatkan kinerja kueri.
Namun, hal tersebut tergantung pada optimalisasi dan di luar kendali administrator atau programmer
basis data, sehingga pembahasan untuk membuat indeks sementara ini tidak akan dibahas dalam modul
ini. Indeks hanya digunakan untuk meningkatkan query plan, jika pengindeksan yang tepat sudah ada.

1.4.2 Fragmentasi Indeks

Fragmentasi indeks adalah penggunaan page yang tidak efisien dalam indeks. Fragmentasi terjadi
seiring waktu ketika data diubah.
Untuk operasi membaca data, indeks dapat berkinerja dengan sangat baik ketika setiap page indeks
terisi penuh. Meskipun indeks pada awalnya penuh (atau relatif penuh), aktifitas modifikasi pada data
dalam indeks menyebabkan perlu untuk memecah page indeks. Menambahkan entri indeks baru ke
akhir indeks itu mudah tetapi prosesnya lebih rumit jika entri perlu dibuat di tengah page indeks penuh
yang telah ada.
Fragmentasi Internal vs. Eksternal
Fragmentasi internal terjadi ketika page tidak menahan data sebanyak yang mampu mereka tahan. Ini
sering terjadi ketika page terpecah selama operasi penyisipan (insert) dan juga dapat terjadi saat operasi
pembaruan (update) yang menyebabkan baris dipindahkan ke page lain. Dalam kedua situasi tersebut,
ruang kosong tersisa di dalam page.
Fragmentasi eksternal terjadi ketika page yang diurutkan secara logis tidak disimpan dalam nomor page
yang diurutkan. Jika page indeks baru perlu dialokasikan, maka page tersebut akan dimasukkan secara

14
MODUL 14 – DATABASE MAINTENANCE

logis ke lokasi yang benar dalam daftar page tetapi bisa juga ditempatkan di akhir indeks. Hal ini berarti
bahwa suatu proses yang perlu membaca page indeks agar perlu mengikuti petunjuk untuk menemukan
page dan proses akan melibatkan mengakses page yang tidak berurutan dalam database.
Mendeteksi Fragmentasi
Untuk mendeteksi fragmentasi, SQL Server menyediakan kolom avg_fragmentation_in_percent dari
sys.dm_db_index_physical_stats pada dynamic management view. SQL Server Management Studio
juga menyediakan rincian indeks fragmentasi di page properti untuk setiap indeks seperti yang
ditunjukkan pada tangkapan layar berikut dari database MarketDev:

1.4.3 Pemeliharaan Indeks

15
MODUL 14 – DATABASE MAINTENANCE

Karena indeks selalui diperbarui selama modifikasi data, seiring waktu indeks dapat terfragmentasi.
SQL Server menyediakan dua opsi untuk menghapus fragmentasi dari indeks clustered dan
nonclustered:
• Membangun kembali (Rebuild)
• Mengatur ulang (Reorganize)
Rebuild
Rebuild indeks artinya menghapus dan menciptakan kembali indeks dalam rangka menghilangkan
fragmentasi, menggunakan kembali kembali disk space dengan memadatkan page berdasarkan
pengaturan faktor pengisian yang ditentukan atau yang ada sebelumnya, kemudian menata ulang baris
indeks di page yang berdekatan. Ketika opsi ALL ditentukan, semua indeks di pada table dihapus dan
dibangun kembali dalam satu operasi. Jika ada bagian operasi gagal, seluruh operasi dibatalkan. Karena
rebuild dilakukan sebagai single operation dan dicatat (logged), operasi rebuild dapat menggunakan
sejumlah besar ruang dalam log transaksi. Disk space kosong harus tersedia saat rebuild indeks.
Reorganize
Reorganize indeks memerlukan sumber daya sistem yang lebih minimal. Reorganize indeks juga
memadatkan page indeks. Pemadatan didasarkan pada nilai fill factor yang ada. Dimungkinkan untuk
menghentikan proses Reorganize tanpa kehilangan pekerjaan yang telah dilakukan. Hal tersebut berarti
bahwa pada indeks yang besar, reorganisasi parsial dapat dilakukan setiap hari.

1.4.4 Praktikum 2. Pemeliharaan Indeks

1. Gunakan database tempdb

2. Buat tabel phoneLog dengan primary key seperti berikut

16
MODUL 14 – DATABASE MAINTENANCE

3. Masukkan beberapa data ke tbel tersebut

17
MODUL 14 – DATABASE MAINTENANCE

4. Periksa fragmentasi dengan mengecek properties pada Indeks yg terdapat pada database
PhoneLog

5. Berapa persen fragmentasi dan page yang digunakan pada tabel tersebut? (screenshot)

18
MODUL 14 – DATABASE MAINTENANCE

6. Lakukan modifikasi data pada table PhoneLog

7. Periksa tingkat fragmentasi melalui sys.dm_db_index_physical_stats.

8. Perhatikan avg_fragmentation_in_percent dan avg_page_space_used_in_percent lagi, berapa


angkanya? (screenshot)

19
MODUL 14 – DATABASE MAINTENANCE

9. Rebuild tabel PhoneLog

10. Periksa kembali prosentse fragmentasi dan page yg terpakai! (screenshot)

20
MODUL 14 – DATABASE MAINTENANCE

1.6 Otomasi Pemeliharaan Database Rutin

Sebelumnya, ditunjukkan beberapa tugas pemeliharaan basis data umum secara manual yang perlu
dijalankan secara teratur. SQL Server menyediakan Database Maintenance Plan Wizard yang dapat
digunakan untuk membuat jobs menggunakan SQL Server Agents yang melakukan tugas-tugas
maintenance database. Selain Database Maintenance Plan Wizard membuat proses otomasi
pemeliharaan database mudah untuk diatur, kita bisa menggunakan output wizard sebagai titik awal
untuk membuat rencana perawatan sendiri, atau kita bisa membuat rencana perawatan dari nol.

1.4.5 SQL Server Database Maintenance Plan

Database Maintenance Plan Wizard dapat men-create SQL Server Agents yang dapat melakukan tugas
(jobs) pemeliharaan basis data rutin dan menjadwalkan pekerjaan tersebut untuk memastikan bahwa
basis data Anda dicadangkan (backup) secara teratur, berkinerja baik, dan diperiksa apakah terdapat
ketidakkonsistenan.
Wizard membuat SQL Server Integration Services packages yang dieksekusi oleh SQL Server Agent.
Anda dapat menjadwalkan banyak tugas perawatan untuk dijalankan secara otomatis, termasuk:
• Membuat cadangan file database dan log transaksi. Database dan back up log dapat disimpan
untuk jangka waktu tertentu dan kemudian dihapus secara otomatis.
• Menjalankan pekerjaan SQL Server Agent yang melakukan berbagai tindakan.
• Memadatkan file data dengan menghapus halaman database kosong.
• Melakukan pemeriksaan konsistensi internal data dan halaman data dalam database untuk
memastikan bahwa masalah sistem atau perangkat lunak tidak merusak data.
• Mengatur kembali informasi pada halaman data dan indeks halaman dengan rebuild indeks.

21
MODUL 14 – DATABASE MAINTENANCE

• Memperbarui statistik indeks untuk memastikan query optimizer memiliki informasi terkini
tentang distribusi nilai data dalam tabel.

1.4.6 Praktikum 3. Otomasi Pemeliharaan Database


1. Buat backup folder menggunakan windows Explorer E:\SQLBackUp
2. Buka Maintenance Plan Wizard, di Object Explorer, expand Server, expand Management,
right-click Maintenance Plans, and click Maintenance Plan Wizard).

3. Buat plan baru dengan klik next dan beri nama daily maintenance

4. Atur Schedule dengan klik change dan set jadwal maintenance tiap hari pada pukul 9 malam,
klik OK, Klik Next,

22
MODUL 14 – DATABASE MAINTENANCE

5. Pilih Maintenance Task, Pada halaman Select Maintenance Task pilih BackUp Database
(Full) dan Check Database Integrity, klik Next.

6. Atur pengecekan Integritas database. Pada halaman Define database Integity Check pilih
semua database kecuali CoreAdmin, klik OK, klik Next

23
MODUL 14 – DATABASE MAINTENANCE

7. Atur pencadangan database penuh.


Pada halaman Define Backup Database (Full), tab General, pilih All Database, Klik OK

8. Pada tab Destination set folder ke E:\SQLBackUp dan centang (check) opsi Create sub-
directory, klik next

24
MODUL 14 – DATABASE MAINTENANCE

9. Atur opsi pelaporan dan selesaikan wizard.


Pada halaman select report options check write a report dan set folder ke E:\SQLBackUp, klik Next,
Klik finish

10. Setelah itu pastikan pembuatan maintenance plan sukses, dan klik close

25
MODUL 14 – DATABASE MAINTENANCE

26
MODUL 14 – DATABASE MAINTENANCE

11. Eksekusi Daily maintenance secara manual, expand Maintenance Plan, klik kanan, klik
Execute

12. Tunggu Hingga Proses Sukses, dan klik Close,

13. Lihat Daily Maintenance History

27
MODUL 14 – DATABASE MAINTENANCE

14. Pada Log File Viewer Summary Klik baris Check Database Integrity dan klik view T-SQL

15. Perhatikan window yang muncul, jelaskan maksudnya! (screenshot)

16. Lihat file Backup, folder, dan laporan, Menggunakan Windows Explorer, navigasikan ke folder
E:\SQLBackup dan periksa isinya dan isi dari sub folder. Jelaskan apa yang ada fahami dari
proses ini! (Screenshot)

17. Dalam folder E:\SQLBackup buka dokumen teks menggunakan editor teks, lihat Laporan Daily
Maintenance, Jelaskan apa yang ada fahami dari proses ini! (Screenshot)

28

Anda mungkin juga menyukai