Lob Segmentler Nasıl Shrink Edilir ?

Bir önceki yazımda database’ deki tablolar üzerindeki fragmantasyonu nasıl tespit edebileceğimizden ve oluşan bu fragmantasyonaları nasıl elimine edebilceğimizden bahsetmiştim.
(http://www.kamilturkyilmaz.com/2012/01/15/oracle%E2%80%99-da-shrink-operasyonu-nasil-yapilir/)
Aslında aynı konu içerisinde değerlendirilmesi gereken ama yapısı itibari ile bir takım farklılıklar gösteren “lob segment” lerin üzerinde bu tarz işlemleri nasıl yapabiliriz, ondan bahsedeceğim ;

Öncelikle örnek lob data oluşturmak için; http://www.idevelopment.info/data/Oracle/DBA_tips/LOBs/LOBS_85.shtml linkindeki scriptlerden faydalandığımı belirtmek istiyorum. Buradaki scriptleri bizim testimizde kullanabileceğimiz şekliyle editleyip kullanıyor olacağım.

Lob segementler üzerinde shrink işlemine geçmeden önce üzerinde çalışacağımız test data datasını oluşturalım ;
Continue reading

Oracle’ da Shrink Operasyonu Nedir / Nasıl Yapılır …

Veritanımızdaki objeler zaman içerisinde tablo üzerinde sürekli olarak delete – insert – … işlemlerinin yapılmasından dolayı fragmantasyona uğrayıp aslında olması gereken size’ larından çok daha fazla yer işgal eder duruma gelebilirler. Bu tarz operasyonlarda bilinen en büyük yanlışlık tablodaki eski verileri belirli kritere göre silmeme rağmen neden bu tablo sürekli olarak büyüyor ? şeklindeki itirazlardır. Özellikle dba’ lerin zaman zaman tablolarda oluşan fragmantasyonları yazılımcılara bildirdiklerinde ve bunun için çözüm üretmeye çalıştıklarında sıklıkla aldıkları cevap ; biz tabloda zaten X günlük veri tutuyoruz neden büyüyor şeklinde oluyor şeklindeki dönüşlerdir. Delete işlemi tabloya yer kazandırmaz, oracle daki segment büyüme mantığı kullanılan blogun delete ile silinse dahi tekrar kullanılmadan bir sonraki blok üzerinden devam etme mantığına dayanır. (delete blok üzerindeki high water mark’ ı geri çekmez) Bu durumu bir örnekle açıklayıp tabloya orijinal size’ ını nasıl kazandırabileceğimizden bahsedelim.
Continue reading