DBCC CHECKFILEGROUP

Bu makalede DBCC CHECKFILEGROUP komutunu detaylı bir şekilde görmüş olacağız. DBCC CHECKFILEGROUP komutu, SQL Server’da belirli bir dosya grubundaki (filegroup) tüm veri dosyalarının tutarlılığını kontrol etmek için kullanılır. Bu komut, veritabanındaki filegroup üzerindeki tüm tablo ve indexed view’lerin tutarlılığını tespit etmeye yardımcı olur. Veri dosyalarının fiziksel bozulmalarını ve diğer tutarsızlıkları kontrol etmek için kullanılır.

DBCC CHECKFILEGROUP komutunun temel amacı  özellikle büyük ve karmaşık veritabanları olan sistemlerde, dosya gruplarındaki verilerin bütünlüğünü sağlamak amacıyla çalıştırılır. Bu komut, belirli bir dosya grubundaki veri dosyalarını ve bu dosyalara ait sayfalarda meydana gelebilecek bozulmaları tespit etmek için kullanılır.

Bir dosya grubu, SQL Server’da bir veya daha fazla veri dosyasını içerebilir. Veritabanında farklı dosya grupları bulunabilir ve her dosya grubunda verilerin depolandığı veri dosyaları bulunur.

DBCC CHECKFILEGROUP aslında arka planda filegroup üzerinde DBCC CHECKALLOC’u, filegroup üzerindeki tüm tablolarda da DBCC CHECKTABLE’ı çalıştırır. DBCC CHECKDB ve DBCC CHECKTABLE ile çok benzer yapıda çalışır.

DBCC CHECKFILEGROUP Komutunun Genel Kullanımı

DBCC CHECKFILEGROUP (filegroup_id | N'filegroup_name' ,[NOINDEX])

Parametreler

  1. filegroup_id veya filegroup_name: Hangi dosya grubunun kontrol edileceğini belirler. Bu, dosya grubunun ID’si veya adı olabilir. Bu parametre, hangi dosya grubunun denetleneceğini belirtir.
  2. NOINDEX (isteğe bağlı): Bu seçenek, non clustered indeksler dışındaki hatalar tespit edilmektedir.

Örnek Kullanım

  1. Aşağıdaki komut ile  PRIMARY filegroup’daki mantıksal ve fiziksel hatalar tespit edilir.
DBCC CHECKFILEGROUP (N'PRIMARY');

Bu komut, PRIMARY adındaki dosya grubunu kontrol eder. PRIMARY genellikle veritabanında varsayılan olarak kullanılan dosya grubudur. Bu komut, PRIMARY dosya grubundaki veri dosyalarında fiziksel bozulmaları, tutarsızlıkları kontrol eder.

  1. Eğer filegroup’un ID’sini biliyorsanız, bu komutu şu şekilde kullanabilirsiniz:
DBCC CHECKFILEGROUP (1);

Bu komut, dosya grubunun ID’si 1 olan dosya grubundaki veri dosyalarını kontrol eder.

  1. Nonclustered indeksler dışındaki hatalar tespit edilmektedir.
DBCC CHECKFILEGROUP (N'PRIMARY',NOINDEX);

Bu komut, PRIMARY dosya grubundaki veri dosyalarını denetler, ancak indekslere dokunmaz. Bu, daha hızlı bir işlem yapmanıza yardımcı olabilir, çünkü indeksler büyük veri kümesine sahip olabilir.

DBCC CHECKFILEGROUP, dosya grubundaki her bir veri dosyasını tarar ve bu dosyalardaki sayfaları (pages) kontrol eder. Sayfa tutarsızlıkları, bozulmalar veya veritabanı yapısındaki herhangi bir fiziksel sorun tespit edilirse, komut bir hata mesajı döndürür.

Veri dosyalarındaki sayfalar, SQL Server’ın veri saklama birimidir. Bu sayfalarda tutarsızlıklar, fiziksel bozulmalar, dosya hataları veya yanlış yapılandırmalar olabilir. Bu tür durumlar, veritabanının bütünlüğünü riske atabilir, bu nedenle DBCC CHECKFILEGROUP komutu ile düzenli olarak denetimler yapılması önerilir.

Aşağıdaki komut ile PRIMARY filegroup üzerindeki tablolardaki non clustereded index’lerdeki hataları veri kaybı olmadan düzeltecek şekilde DBCC CHECKFILEGROUP komutunu çalıştırabilirsiniz.

ALTER DATABASE AdventureWorks2014 SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO
DBCC CHECKFILEGROUP (N'PRIMARY',REPAIR_REBUILD) WITH NO_INFOMSGS, ALL_ERRORMSGS;
GO
ALTER DATABASE AdventureWorks2014 SET MULTI_USER;

Aşağıdaki komutu kullanarak PRIMARY filegroup üzerindeki hataları veri kaybı riski ile beraber düzeltecek şekilde DBCC HECKFILEGROUP komutunu çalıştırabilirsiniz.

ALTER DATABASE AdventureWorks2014 SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO
DBCC CHECKFILEGROUP (N'PRIMARY', REPAIR_ALLOW_DATA_LOSS) WITH NO_INFOMSGS, ALL_ERRORMSGS;
GO
ALTER DATABASE AdventureWorks2014 SET MULTI_USER;

Not: DBCC CHECKFILEGROUP komutunu REPAIR_REBUILD ya da REPAIR_ALLOW_DATA_LOSS ile çalıştırdıktan sonra DBCC CHECKCONSTRAINTS komutunu çalıştırmanızı öneririm. 

Aşağıdaki komut kontrol işleminin ne kadar kaynak kullanacağını ve ne kadar süreceğini tahmini olarak bildirir.

DBCC CHECKFILEGROUP (N'PRIMARY') WITH ESTIMATEONLY,NO_INFOMSGS, ALL_ERRORMSGS;

Aşağıdaki komutu kullanarak çalıştırırsanız internal database snapshot kullanmak yerine veritabanı üzerinde exclusive lock koyar.

DBCC CHECKFILEGROUP (N'PRIMARY') WITH TABLOCK,NO_INFOMSGS, ALL_ERRORMSGS;

Not: DBCC CHECKFILEGROUP’ın daha hızlı tamamlanması için DBCC CHECKFILEGROUP çalıştırmadan önce server konfigurasyonlarından maxdop(max degree of paralellism)’u arttırabilirsiniz. Eğer sisteminiz oltp bir sistemse ve tamamen küçük transaction lardan oluşuyorsa maxdop’u arttırmak çalışan sistemin performansını yavaşlatabilir.

Not: Partition yapılmış bir tablo birden fazla filegroup üzerindeyse tablonun sadece ilgili filegroup üzerindeki kısmı kontrol edilir.

DBCC CHECKFILEGROUP Komutunun Çıktısı

Komut çalıştırıldığında aşağıdaki gibi bir çıktı alabilirsiniz:

  • Eğer herhangi bir sorun yoksa, komut genellikle başarılı bir şekilde tamamlanır ve “komut başarıyla tamamlandı” mesajı döndürür. DBCC CHECKFILEGROUP for ‘PRIMARY’ succeeded. mesajını görmüş oluruz.
  • Eğer tutarsızlıklar veya bozulmalar varsa, SQL Server hata mesajlarıyla bu durumları rapor eder. Örneğin:

Msg 823, Level 24, State 2, Line 1

I/O error (device, file, or filegroup) occurred while processing the page.

Bu hata, belirli bir dosya grubunda fiziksel bir bozulma olduğunu gösterir.

DBCC CHECKFILEGROUP Komutunun Kullanım Alanları

Veri Bütünlüğü Kontrolü: Özellikle disk hataları, sistem çökmesi veya diğer fiziksel bozulmalar sonucu veri dosyalarının tutarsızlık gösterdiği durumlarda kullanılır.

Veritabanı Bakımı: Büyük veritabanları olan sistemlerde düzenli olarak çalıştırılarak, olası sorunlar tespit edilip giderilebilir.

Sorun Giderme: Eğer veritabanı üzerinde performans sorunları veya veri hataları yaşıyorsanız, bu komutla dosya grubu seviyesinde bir tarama yaparak olası tutarsızlıkları tespit edebilirsiniz.

Büyük veritabanlarında sadece read-write filegroup üzerinde sadece bu komut çalıştırılabilir. DBCC CHECKDB komutu ile tüm filegrouplar taranmaz.

DBCC CHECKFILEGROUP komutu, SQL Server’da veri dosyalarının fiziksel tutarlılığını kontrol etmek için çok önemli bir araçtır. Dosya gruplarındaki herhangi bir tutarsızlık veya bozulma, veritabanı üzerinde ciddi sorunlara yol açabilir. Bu komut, veritabanı yöneticilerine, bu tür sorunları erken tespit etme ve çözme imkanı sunar. Veritabanı bakımının bir parçası olarak, düzenli olarak çalıştırılması önerilir.

Bu makalede DBCC CHECKFILEGROUP komutunu detaylı bir şekilde görmüş olduk. Başka bir makalede görüşmek dileğiyle.

İnkar edenlere de ki: “Yakında yenilgiye uğratılacaksınız ve toplanıp cehenneme sürüleceksiniz.” Ne kötü yataktır o.Al-i İmran Suresi, 12. Ayet

Author: Yunus YÜCEL

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir