Otomatik Sayfa Onarımı (Erişilebilirlik Grupları: Veritabanı Aynalama)

Şunlar için geçerlidir: SQL Server

Otomatik sayfa onarımı, veritabanı yansıtma ve Always On erişilebilirlik grupları tarafından desteklenir. Belirli türde hatalar bir sayfayı bozup okunamaz hale getirdikten sonra, bir veritabanı yansıtma ortağı (ana veya ayna) veya erişilebilirlik replikası (birincil veya ikincil) sayfayı otomatik olarak kurtarmaya çalışır. Sayfayı okuyamayan ortak/replika, partnerinden veya başka bir kopyadan sayfanın yeni bir kopyasını ister. Bu istek başarılı olursa, okunmayan sayfa okunabilir kopyayla değiştirilir ve bu genellikle hatayı çözer.

Genel olarak, veritabanı yansıtma ve Always On kullanılabilirlik grupları I/O hatalarını benzer biçimlerde işler. Burada birkaç fark açıkça belirtiliyor.

Note

Otomatik sayfa tamiri, DBCC tamirinden farklıdır. Tüm veriler otomatik sayfa onarımı ile korunur. Buna karşılık, DBCC REPAIR_ALLOW_DATA_LOSS seçeneğiyle hataları düzeltmek bazı sayfaların ve dolayısıyla verilerin silinmesini gerektirebilir.

Otomatik Page-Repair girişimine neden olan hata türleri

Veritabanını yansıtan otomatik sayfa onarımı, yalnızca aşağıdaki tabloda listelenen hatalardan biri için bir işlem başarısız olan veri dosyasındaki sayfaları onarmaya çalışır.

Hata numarası Description Otomatik sayfa onarım girişimine neden olan örnekler
823 İşlem, yalnızca işletim sistemi veriler üzerinde bir döngüsel artıklık denetimi (CRC) gerçekleştirdiyse ve bu denetim başarısız olduysa yapılır. ERROR_CRC. Bu hata için işletim sistemi değeri 23'tür.
824 Mantıksal hatalar. Mantıksal veri hataları, örneğin yırtık yazı veya kötü sayfa kontrol toplamı.
829 Bir sayfa, geri yükleme bekliyor olarak işaretlendi. Tümü.

Son 823 CRC hatalarını ve 824 hatalarını görmek için msdbveritabanındaki suspect_pages tablosuna bakabilirsiniz.

Otomatik Tamir Edilemeyen Sayfa Türleri

Otomatik sayfa onarımı aşağıdaki kontrol sayfası türlerini onaramaz:

  • Dosya başlığı sayfası (sayfa kimliği 0).

  • Sayfa 9 (veritabanı önyükleme sayfası).

  • Ayırma sayfaları: Genel Ayırma Haritası (GAM) sayfaları, Paylaşılan Genel Ayırma Haritası (SGAM) sayfaları ve Sayfa Boş Alanı (PFS) sayfaları.

Baş/birincil veritabanında I/O hatalarının işlenmesi

Baş/birincil veritabanında, otomatik sayfa onarımı yalnızca veritabanı SENKRONIZE durumdayken ve başlı/birincil veritabanı veritabanı için kayıt kayıtlarını ayna/ikincil sisteme göndermeye devam ettiğinde denenir. Otomatik sayfa onarım girişimindeki temel işlem dizisi şunlardır:

  1. Bir ana veritabanında bir veri sayfasında okuma hatası oluştuğunda, başlı/birincil suspect_pages tablosuna uygun hata durumuna sahip bir satır ekler. Veritabanı yansıtma için, müdür sayfanın aynadan bir kopyasını ister. Always On kullanılabilirlik gruplarında, birincil kopya isteği tüm ikincil kopyalara iletir ve sayfayı ilk yanıt verenden alır. İstek, sayfa kimliğini ve şu anda temizlenmiş günlüğün sonunda bulunan LSN'yi belirtir. Sayfa, geri yükleme beklemede olarak işaretlenmiştir. Bu da otomatik sayfa onarım girişiminde erişilmez hale getirir. Onarım sırasında bu sayfaya erişim girişimleri 829 hatasıyla başarısız olur (geri yükleme bekleniyor).

  2. Sayfa isteği alındıktan sonra, ayna/ikincil cihaz istekte belirtilen LSN'ye yeniden giriş yapana kadar bekler. Sonra, ayna/ikincil veritabanının kendi kopyasındaki sayfaya erişmeye çalışır. Sayfaya erişilebiliyorsa, ayna/ikincil sayfanın bir kopyasını asıl/birincil olana gönderir. Aksi takdirde, yansıtma/ikincil asıl/birincile bir hata döndürür ve otomatik sayfa onarma girişimi başarısız olur.

  3. Ana/birincil işlem, sayfanın güncel kopyasını içeren yanıtı işler.

  4. Otomatik sayfa onarım girişimi şüpheli bir sayfayı düzelttikten sonra, sayfa suspect_pages tablosunda restore edilmiş olarak işaretlenir (event_type = 5).

  5. Sayfa G/Ç hatası herhangi bir ertelenmiş işleme neden olduysa, sayfayı onardıktan sonra asıl/birincil sunucu bu işlemleri sonuçlandırmaya çalışır.

Ayna/İkincil Veritabanında I/O hatalarının Yönetilmesi

Yansı/ikincil veritabanında oluşan veri sayfalarındaki G/Ç hataları, veritabanı yansıtma ve Always On kullanılabilirlik grupları tarafından genel olarak aynı şekilde işlenir.

  1. Veritabanı yansıtmasında, ayna bir günlük kaydını yeniden yürütürken bir veya daha fazla sayfa G/Ç hatasıyla karşılaşırsa, yansıtma oturumu SUSPENDED durumuna geçer. Her Zaman Açık erişilebilirlik gruplarında, ikincil bir replika bir günlük kaydı yeniden yaparken bir veya daha fazla sayfa I/O hatası ile karşılaşırsa, ikincil veritabanı ASKIYA DURUMA girer. O noktada, ayna/ikincil, uygun hata durumuyla suspect_pages tablosuna bir satır ekler. Ayna/ikincil daha sonra sayfanın bir kopyasını ana/birincil olandan talep eder.

  2. Asıl/birincil, veritabanının kendi kopyasındaki sayfaya erişmeye çalışır. Sayfaya erişilebiliyorsa, ana/birincil sayfanın bir kopyasını yansıya/ikincil sisteme gönderir.

  3. Yansı/ikincil, talep ettiği her sayfanın kopyalarını alırsa yansılama oturumunu sürdürmeye çalışır. Otomatik sayfa onarım girişimi şüpheli bir sayfayı düzeltirse, sayfa suspect_pages tablosunda geri dönüştürülmüş olarak işaretlenir (event_type = 4).

    Bir ayna/ikincil, asıl/birincil düğümden istediği sayfayı alamazsa, otomatik sayfa onarım girişimi başarısız olur. Veritabanı yansıtmasında, yansıtma oturumu askıya alınmış durumda kalır. Always On kullanılabilirlik gruplarında ikincil veritabanı askıda kalır. Yansıtma oturumu veya ikincil veritabanı manuel olarak yeniden başlatılırsa, senkronizasyon aşamasında bozuk sayfalara yeniden erişilir.

Geliştirici İçin En İyi Uygulama

Otomatik sayfa onarımı, arka planda çalışan asenkron bir süreçtir. Bu nedenle, okunamaz bir sayfa talep eden veritabanı işlemi başarısız olur ve hataya sebep olan herhangi bir koşul için hata kodunu döndürür. Aynalı bir veritabanı veya erişilebilirlik veritabanı için bir uygulama geliştirirken, başarısız işlemler için istisnaları engellemeniz gerekir. SQL Server hata kodu 823, 824 veya 829 ise, işlemi daha sonra tekrar denemelisin.

Nasıl Yapılır: Otomatik Page-Repair Denemelerini Görüntülemek

Aşağıdaki dinamik yönetim görünümleri, belirli bir erişilebilirlik veritabanı veya yansıtılmış veritabanı üzerinde en son otomatik sayfa onarım girişimleri için satır döndürür; veritabanı başına maksimum 100 satır bulunur.

  • Her Zaman Açık Erişilebilirlik Grupları:

    sys.dm_hadr_auto_page_repair (Transact-SQL)

    Sunucu örneği tarafından herhangi bir kullanılabilirlik grubu için barındırılan bir kullanılabilirlik çoğaltması üzerindeki her bir kullanılabilirlik veritabanındaki otomatik sayfa onarımı girişimi için bir satır döndürür.

  • Veritabanı aynalama:

    sys.dm_db_mirroring_auto_page_repair (Transact-SQL)

    Sunucu örneğindeki yansıtılmış veritabanlarının herhangi birinde gerçekleştirilen her otomatik sayfa onarım girişimi için bir satır döndürür.