Selasa, 29 Mei 2012

[belajar-access] SQL Server 2005 Express [10/11]

 

TERJADINYA HAL-HAL YANG MUNGKIN TIDAK KITA INGINKAN

Sedialah payung sebelum hujan, siapkan lilin dan korek api sebelum listrik padam. Siapapun tidak ada yang tahu kejadian dimasa mendatang, maka berdo'alah, agar kita dimudahkan oleh Allah dalam setiap pekerjaan yang kita lakukan.

Mungkin saja kita mengalami hal-hal yang tidak kita inginkan terhadap database SQL Server Express yang sudah kita buat. Taruhlah, misalnya kita mengalami kejadian seperti ini:

- Bertahun-tahun database lancar, namun pas suatu hari database mengalami corrupt (rusak/error).
- Terjadinya kebakaran, jangankan PC yang kebakaran, kantornya pun sebagian hangus terbakar.
- PC Server dan Client hilang karena dicuri orang.
- Dan hal-hal lainnya yang membuat kita sebagai penanggung jawab database mengalami kesulitan, karena kita bertanggung jawab menyimpan semua data yang ada.

Maka pada bagian ini, saya coba susun langkah demi langkah, agar kita bisa mengatasi hal seperti diatas, seandainya terjadi. Mudah-mudahan jangan sampai terjadi.

1. BERDO'ALAH KEPADA ALLAH AGAR DATABASE KITA LANCAR DAN TIDAK ADA MASALAH

Suatu hari saya mengalami hal-hal yang diluar kesanggupan saya, diantaranya ketika saya mengalami kebuntuan dalam membuat suatu program penting, dimana program ini akan dilaunching dan direalisasikan di perusahaan saya, dan yang kedua ketika database utama pada SQL Server mengalami kerusakan yang saya sendiri tidak tahu sebabnya, apakah karena mati listrik mendadak sehingga ada sebagian sector harddisk mengalami kerusakan, atau memang ada proses update data yang tidak sempurna sehingga data menjadi error. Berjam-jam saya coba atasi, namun tetap gagal. Pikiran pun sudah jauh melayang, memikirkan hal terburuk yang mungkin terjadi. Apakah sampai disini saja akhir dari program dan database ini, ataukah ada jalan keluar? Akankah usaha ini berakhir? Dan pikiran-pikiran negatif lainnya yang tidak dapat saya ceritakan disini.

Maka saya berusaha tenangkan pikiran saya, kemudian ambil air wudhu, shalat dan berdo'a. Alhamdulillah, itu yang namanya solusi dari berbagai masalah yang saya hadapi ini, langsung dibukakan jalan keluarnya oleh Allah. Saya merasa ada petunjuk di dalam pikian saya akan apa yang harus saya lakukan. Dan benar, tidak lama dari itu, setelah saya melakukan apa yang "diilhamkan" di dalam hati dan pikiran saya itu, terbukti sudah, itulah solusinya, padahal sebelumnya pikiran saya benar-benar buntu. Sungguh saya berkata saat itu, "Sungguh, ini adalah bukti nyata keberadaan Engkau, Maha Pintar Allah, Maha Luas Ilmu-Nya. Alhamdulillah". Dia memberitahu solusi dari berbagai masalah saya tanpa harus Dia belajar dahulu, bahkan saya lah yang belajar dari-Nya.

2. SELALULAH BACKUP DATABASE ANDA SECARA PERIODIK

Backup database disini bukan hanya melakukan job backup harian sebagaimana yang saya sampaikan pada tips sebelum ini, namun backup database complete secara berkesinambungan, sehingga backup tersebut dibagi lagi menjadi:

Backup Harian, yakni:
- Backup Hari Senin
- Backup Hari Selasa
- Backup Hari Rabu
- Backup Hari Kamis
- Backup Hari Jum'at
- Backup Hari Sabtu
- Backup Hari Minggu

Backup Mingguan, yakni:
- Backup Minggu ke-1
- Backup Minggu ke-2
- Backup Minggu ke-3
- Backup Minggu ke-4
- Backup Minggu ke-5

Backup Bulanan, yakni:
- Backup Bulan ke-1
- Backup Bulan ke-2
- Backup Bulan ke-3
- Backup Bulan ke-4
- Backup Bulan ke-5
- Backup Bulan ke-6
- Backup Bulan ke-7
- Backup Bulan ke-8
- Backup Bulan ke-9
- Backup Bulan ke-10
- Backup Bulan ke-11
- Backup Bulan ke-12

Backup Tahunan, yakni:
- Backup Tahun ke-1
- Backup Tahun ke-2
- Backup Tahun ke-3
- Backup Tahun seterusnya.

Namun itu semua tergantung seberapa penting database yang Anda gunakan. Jika tidak begitu penting, cukup backup harian saja. Hal tekhnis seperti ini tergantung keperluan Anda terhadap database itu sendiri.

Software untuk melakukan proses backup ini ada yang bagus dan free, yakni software "Cobian Backup" yang cukup banyak feature yang disertakannya, silahkan download di: http://www.cobian.se/

Selain melakukan backup diatas, kita pun harus melakukan metode tertentu, agar (misalnya) ketika terjadi kebakaran ataupun PC hilang karena dicuri, kita masih mempunyai backupnya. Karena itu saya sampaikan metode berikut ini:

- Buatlah backup secara silang. Misalnya, jika kantor yang Anda gunakan cukup luas areanya, backuplah database yang terletak pada PC di kantor1 ke PC yang terletak di kantor2. Dan begitu juga sebaliknya. Jadi backup tersebut ada pada dua lokasi, atau bisa lebih sesuai yang Anda inginkan. Seandainya kantor1 kebakaran, maka masih ada backup pada kantor2. Seandainya kita khawatir seluruh kantor tersebut kebakaran, maka persiapkan metode kedua dibawah ini.

- Backuplah database tersebut pada media external, misalnya tape, cd/dvd, harddisk external, USB Flash Disk, dan lain-lain. Kemudian, media ini disimpan oleh kita sendiri, tentunya ditempat yang paling aman, baik aman dari kebakaran maupun dari pencurian. Kalau punya lemari besi, simpanlah disana. Jika tidak ada, boleh dilemari lainnya yang tahan api. Jika tidak ada tempat yang aman, bawalah ke rumah, dan simpanlah pada lemari Anda yang jauh dari jangkauan anak kecil. Untuk hal tekhnis seperti ini, Anda mungkin lebih mengetahui dari saya.

- Jangan hanya database yang dibackup, backuplah seluruh file yang diperlukan, misalnya file MDB, MDW, dan lain-lain yang digunakan oleh program, termasuk flowchart, help, dan semuanya.

3. KETIKA DATABASE CORRUPT

Janganlah langsung melakukan proses restore database ketika database Anda mengalami corrupt. Restore database ini hanya jalan terakhir ketika database yang corrupt tersebut tidak bisa kita perbaiki. Untuk memperbaiki database yang corrupt bisa melakukan beberapa langkah-langkah dibawah ini:

-> Pastikan tidak ada satupun user yang sedang terhubung ke database yang error tersebut.

-> Lakukan proses reindex dahulu, misalnya:

- Jika kita sudah mengetahui table yang corrupt, maka bisa reindex table tersebut, misal:

USE Nama_Database;
GO
ALTER INDEX ALL ON Nama_Table
REBUILD WITH (FILLFACTOR = 90);
GO

- Jika kita belum mengetahui table yang corrupt, maka bisa reindex seluruh table pada database tersebut, misal:

DBCC DBREINDEXALL ('Nama_Database')

Jika proses diatas sukses, restart PC, kemudian check kembali database yang corrupt tersebut. Jika database sudah lancar kembali, maka tidak perlu melakukan proses dibawah ini.

-> Menggunakan DBCC CHECKDB. Perintah ini akan mencheck logical dan physical integrity terhadap seluruh object pada database Anda, diantaranya termasuk operasi sbb:

- DBCC CHECKALLOC.
- DBCC CHECKTABLE.
- DBCC CHECKCATALOG.
- Melakukan proses validasi terhadap isi setiap index pada database.
- Melakukan proses validasi Service Broker data pada database.

Syntax nya adalah:

DBCC CHECKDB
[
[ ( 'database_name' | database_id | 0
[ , NOINDEX
| , { REPAIR_ALLOW_DATA_LOSS | REPAIR_FAST | REPAIR_REBUILD } ]
) ]
[ WITH
{
[ ALL_ERRORMSGS ]
[ , NO_INFOMSGS ]
[ , TABLOCK ]
[ , ESTIMATEONLY ]
[ , { PHYSICAL_ONLY | DATA_PURITY } ]
}
]
]

Terlihat pada syntax diatas, 3 metode repair (perbaikan), yakni:

- REPAIR_ALLOW_DATA_LOSS, mencoba memperbaiki seluruh error yang ada. Metode ini mungkin akan membuat beberapa data menjadi hilang dalam database.

- REPAIR_FAST, mencoba memperbaiki secara cepat.

- REPAIR_REBUILD, mencoba memperbaiki secara cepat, kemudian memperbaiki extra key di dalam nonclustered index, dan juga proses reindex. Proses ini lebih aman, karena terhindar dari resiko kehilangan data.

Jangan gunakan ketiga metode repair diatas secara langsung, gunakankah dahulu DBCC CHECKDB yang biasa. Gunakan metode repair jika memang database tidak bisa diperbaiki lagi.

Contoh 1:

-- Check the current database.
DBCC CHECKDB;
GO
-- Check the Northwind database without nonclustered indexes.
DBCC CHECKDB ('Northwind', NOINDEX);
GO

Contoh 2:

DBCC CHECKDB WITH NO_INFOMSGS;
GO

Jika seluruh proses diatas tidak berhasil, maka tidak ada jalan lain selain kita harus melakukan proses restore database, dengan mengambil backup database terakhir yang masih OK (tidak corrupt).

4. RESTORE DATABASE

Restore database dapat dilakukan dengan berbagai cara, misalnya:

- Menggunakan Transact-SQL, misalnya:

RESTORE DATABASE Northwind
FROM DISK = 'D:\SQLServerExpressBackups\Northwind_Harian.bak'
WITH FILE = 6
NORECOVERY;

- Menggunakan restore wizard bawaan SQL Server Management Studio Express, yakni dengan cara klik kanan database yang corrupt tersebut, lalu pilih menu Tasks -> Restore -> Database. Pilih From Device, lalu klik tombol titik tiga dikanannya. Klik tombol Add. Pilihlah file backup Anda (*.bak), lalu klik Ok. Klik Ok, lalu klik Ok kembali. Maka proses restore akan segera dijalankan.

- Dan cara-cara lainnya yang tidak dapat saya sampaikan saat ini, silahkan Anda pelajari sendiri pada SQL Server Books Online.

Restore database adalah alternatif terakhir. Dengan melakukan proses restore, maka data yang hilang harus diinput ulang, minimal sejak dari hari terjadinya error sampai dengan hari terakhir database tersebut ketahuan error (direstore).

Wassalaamu'alaikum Warahmatullahi Wabarakatuh,
Sofyan Efendi
http://imopi.wordpress.com/

__._,_.___
Recent Activity:
SPAM IS PROHIBITED
.

__,_._,___

Tidak ada komentar:

Posting Komentar