Breaking News
Loading...
13/03/2013

Database bị hư, làm thế nào phát hiện? (Phần 1)

I. VẤN ĐỀ ĐẶT RA:
  • SQL Server trao dữ liệu cho hệ điều hành để ghi lên thiết bị lưu trữ như đĩa cứng, nhưng lại không đảm bảo quá trình ghi dữ liệu có được thực thi chính xác hay không. Điều này dẫn đến dữ liệu cần ghi và dữ liệu đã được ghi có thể không giống nhau, hay không nhất quán với nhau, và SQL Server không nhận ra đã có sự cố sai lệch dữ liệu cho đến khi nó đọc lại dữ liệu đó.
  • Nguyên nhân gây ra việc ghi sai dữ liệu có thể do hư hỏng phần cứng (Hardware), Firmware hay trình điều khiển thiết bị (Driver). Khi Database của bạn tồn tại sự không nhất quán, tức bạn đang có một Database bị hư, và bạn sẽ đối mặt với những cảnh báo lỗi khi thực hiện truy vấn trên Database này, và những câu truy vấn không thể thực hiện thành công.
  • Bởi vì điều này xảy ra bên trong hệ thống, DBA phải thường xuyên kiểm tra Database có đảm bảo tính nhất quán hay không trước khi người dùng cuối thực hiện những câu truy vấn bị lỗi.
II. GIẢI PHÁP
  • Để giải quyết sự cố này, ta nên thường xuyên chạy câu lệnh DBCC CHECKDB.
  • DBCC CHECKDB kiểm tra tính toàn vẹn về vật lý và logic của tất cả các đối tượng trong một Database cụ thể, sửa những lỗi trong khả năng của nó, đảm bảo những đối tượng Database đã được lưu trữ đúng đắn và không chứa những giá trị không hợp lệ.
  • Không may, đối với những Database lớn, quá trình này tốn nhiều thời gian, và ảnh hưởng đến người dùng cuối.
  • Nếu không có một cách hiệu quả để để kiểm tra hàng ngày hay hàng tuần, hãy cân nhắc sử dụng tùy chọn PHYSICAL_ONLY. Quá trình kiểm tra sẽ nhanh hơn, nó vẫn kiểm tra những vấn đề liên quan đến phần cứng, nhưng kiểm tra cục bộ cho dữ liệu sẽ không được thực hiện, ví dụ những cột được tính toán động (computed column) có giá trị sai, hay trường datetime có một giá trị không hợp lệ sẽ không được phát hiện. Do đó, khi sử dụng PHYSICAL_ONLY, cân nhắc sử dụng DBCC CHECKDB ít nhất một lần mỗi tháng để tóm những lỗi đã xảy ra.
    • Câu lệnh đầy đủ: DBCC CHECKDB WITH PHYSICAL_ONLY
  • DBCC CHECKDB có thể được đặt lịch sử dụng SQL Server’s Maintenance Plans hay SQL Server Agent Job để chạy trực tiếp T-SQL.
  • Quá trình kiểm tra tính nhất quán của Database nên được thực hiện trước khi Full Backup diễn ra, nếu không ta sẽ có một bản Backup bị hư.
  • Kết quả kiểm tra phải được giữ lại và gửi đến DBA để có thể giải quyết kịp thời.
  • Kiến thức về DBCC CHECKDB chưa hoàn chỉnh, còn tiếp.
Quang Vinh mai.quangvinh@sqlvn.com

1 comments:

 
Toggle Footer