SQL Server Log Dosyasını Shrink Etmek

4 Eki by NURULLAH ÇAKIR

SQL Server Log Dosyasını Shrink Etmek

SQL Server Log dosyasını shrink etmeden önce bu dosyanın ne olduğunu anlamak için “SQL Server Transaction Log Nedir” isimli makalemi ve bu dosyayı ilgilendiren “Veritabanı recovery modelleri” isimli makalemi okumanızı tavsiye ederim. Log dosyasını shrink etmek demek dosyanın kullanılmayan alanlarını işletim sistemine iade etmek demektir. Örneğin 100 GB boyuta sahip bir log dosyanız var ve bu dosyanın Yüzde 99’u boş durumda. Shrink ederek bu dosyanın boyutunu 1 GB’a düşürebilirsiniz.

 

Normal şartlar altında log dosyasını shrink etmek çok mantıklı değildir. Çünkü shrink etsek bile dosya bir kere o boyuta ulaşmışsa yine aynı boyuta ulaşma ihtimali çok yüksektir. Ama bazı durumlarda büyük bir transaction gelir ve boyutu 100 GB olan log dosyasını 500 GB’a çıkarabilir. Ve transaction’ın tekrar gelmezse gerçek boyutu 100 GB olan log dosyası diskte gereksiz yere 500 GB alan kaplamış olur. Böyle bir durumda log dosyasını shrink ederek boyutunu 100 GB’a düşürmek mantıklı olacaktır.

 

İkinci bir senaryoda ise log dosyasında vlf sayısı çok fazla olduğu için recover,restore süreleri çok uzamış olabilir. Böyle bir durumda shrink edip sağlıklı bir auto growth değeri set edilebilir. Bu işlemle ilgili daha detaylı bilgi için “Vlf(Virtual Log File) count nedir” isimli makalemi okumanızı tavsiye ederim.

 

Önemli bir not olarak log dosyasını shrink edeceğim derken yanlışlıkla data dosyasını shrink etmemelisiniz. Data dosyasıda shrink edilebilir fakat başka bir çözüm yolu varsa sonuna kadar bu işlemden kaçınılmalıdır. Bu işlemle ilgili “SQL Server Data Dosyasını Shrink Etmek” isimli makalemi okumanızı tavsiye ederim.

 

Gelelim shrink işleminin nasıl yapılacağına:

 

Veritabanı üzerinde sağ tıklayarak aşağıdaki gibi Tasks->Shrink->Files’a tıklıyoruz.

 

 

Açılan ekranda aşağıdaki gibi,

 

 

File type olarak Log’u,

File name olarak shrink etmek istediğimiz log dosyasını(Birden fazla log dosya olabilir),

Shrink action olarak da Reorganize pages before releasing unused space

 

Seçimlerini yapıyoruz ve aşağıdaki gibi Script Action to New Query Window’u seçiyoruz.

 

 

Gördüğünüz gibi Available free space kısmında 0,60 mb boş alan gözüküyor. Dosyamız %60 oranında boş.

Currently allocated space kısmında ise dosyanın şu anda mevcut büyüklüğünü gösteriyor.

Reorganize pages before releasing unused space’i seçtiğimizde, shrink file to: kısmında 1 MB değeri çıktı. Bu değer ilk etapta default olarak dosyanın mevcut büyüklüğünü getiriyor.

 

Yukarıdaki gibi script’ini aldığımızda bize aşağıdaki script’i veriyor.

 

USE [Test]
GO
DBCC SHRINKFILE (N'Test_log' , 1)
GO

 

Yukarda gördüğünüz script Test_log dosyasının boyutunu 1 MB’a kadar düşür anlamına geliyor. Bizim dosyamız zaten 1 MB olduğu için bu 1’i düşürerek işlemimizi gerçekleştirebiliriz. Örneğimizde dosyamız çok küçük olduğu için bu işlemi yapmamıza gerek yok. Ama dosyamızın boyutu 1 GB olsaydı ve %60 oranında boşluk olsaydı yukardaki 1 değerini MB cinsinden istediğimiz seviyeye çekerek bu işlemi yapabilirdik.

Log Dosyanız Shrink olmuyorsa “Log Dosyasının Truncate ya da Shrink Olmaması ve Diski Doldurması Durumu” isinli makalemi okuyabilirsiniz.

Loading

2 Comments

  1. çok teşekkür ederim kaç tane bilgisayarcı çağırdım yapamadıllar çok işime yaradı 50 gb lık dosya 1 mb düştü

Bir yanıt yazın

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