ÇözümPark - Oracle index rebuild
Son Mesajınız 05-16-2018, 23:52 Ahmet Şirin tarafından gönderildi. 5 yanıt.
11-30-2017, 20:09 522269
Öncelikle baştan söylemek isterim ki Oracle konusuna yabancıyım. Win7 işletim sistemi kullanıyorum.
Oracle veritabanı üzerinde yapmak isteyipte yapamadığım bazı işlemler var. Bunlardan bir tanesi de açık kalan indexleri kapatmak.
Normal şartlarda bu işlemi Toad üzerinden sorunsuz yapabiliyorum ama ben Dos üzerinden yapmak istiyorum.
Mesela aşağıdaki işlemi yaptığım zaman açık indexleri kapatabiliyorum.
26000 satırdan oluşan indextablosu.sql dosyasının örnek içeriği:
ALTER index ACCOUNTXXXXX_I04 REBUILD;
ALTER index ACCOUNTZZZZZ_I06 REBUILD;
ALTER index ACCOUNTCCCCC_I09 REBUILD;
Bat dosyası üzerinden verdiğim komut:
sqlplus -s xxxxxxx/yyyyyyyy @C:\indextablosu.sql
Lakin bu işlem 10 dakika gibi bir süre alıyor ve de veritabanının doluluk oranını arttırıyor. Sonrasında Oracle nin performansı artıyor mu düşüyor mu hiç denemedim.
Sadece açık indexleri (sorgulayıp) kapatabileceğim, (bat dosyası ile) yönteme ihtiyacım var.
12-01-2017, 0:24 522276 Cevap 522269
Üye Oluş Tarihi 03-17-2013
İzmir - İstanbul / Türkiye
Cevap : Oracle index rebuild
Açık olan indexleri kapatmak derken neyi yapmak istediğinizi anlamamız gerekiyor.
Ayrıca diğer bir sorum da neden sürekli indexleri rebuild etmek istediğinizdir ? Bu işlemi performans için mi yapıyorsunuz ?
Bu soruları yanıtlarmısınız ? Buna göre yardımcı olmaya çalışayım.
Senior System and Database Consultant
12-01-2017, 10:23 522287 Cevap 522276
Ne kadar anlaşılır olurum bilmiyorum ama anlatmaya çalışayım.
Birimlerimizde local oracle veritabanı kullanılmaktadır. Arkaplanda çalışan bir program vasıtası ile local veriler Genel Merkeze gönderilmektedir.(CANLI ya alınmaktadır)
Local veritabanların boyutu 11GB olup boş alan sorunumuz vardır. Merkezimiz tarafından yapılan bir program vasıtası ile eski dataları sildiriyorum. Sürekli olmasada indexler açık kalıyor, teknik adı nedir bilmiyorum, TOAD üzerinde Invalid Object olarak gözüküyor.
Son zamanlarda çok fazla veri girişi yapılmaya başlandı ve her hafta bakıma almak zorunda kalıyorum. Merkezimizin yapmış olduğu programı çalıştırıyorum yani. Haliyle de çok fazla çalıştırdığım içinde indexler sürekli açık kalıyor, Invalid e düşüyor. Bu sebeplede birimlerimizin kullandığı programı hataya düşürüyor. Şirketimiz yakın zamanda (belki de 1 yıl sonra) tamamen online sisteme geçecek ama bu zamana kadar birimlerimi çalışır durumda tutmam gerekiyor.
İndexleri rebuild etmek isteme nedenim işlem gördüklerinde bazılarının invalid e düşebiliyor olması.
12-01-2017, 17:42 522323 Cevap 522287
Konuyu anladım. Şöyle bir durum var. eğer sorgulama olmayan bir sistem ve sürekli veri girişi oluyorsa sistemde bir index olması açıkcası çok istenmez. bu durum veri girişini yavaşlatır.
Bu yüzden bu konuyu index olmadan değerlendirmenizi öneriyorum.
Diğer bir konu da sadece invalid olmuş indexlerin de rebuild edilmesi. Bu konuda herhangi bir komut yok. Ancak veritabanı programlayabilen bir yazılımcı varsa burada sadece invalid objeleri sorgulayıp bir de komut yazdırarak bu değişkenleri atar ve onları derletir bu işlemde daha kısalır.
Ancak tüm objeleri rebuild etmeniz zaman alsa da sisteme bir etkisi yoktur. Sadece alan büyür ve küçülür.
Invalid index'leri aşağıdaki komut ile sorgulayabilirsiniz.
12-01-2017, 21:07 522334 Cevap 522323
Yaptığım testlerde bu sorgu işimi görecek gibi duruyor. Çok teşekkür ediyorum.
05-16-2018, 23:52 531005 Cevap 522334
Belki konuyu gereksiz yere canlandıracağım ama bu kod dizilimi çok işime yarıyor. Bu nedenle tekrar teşekkür etmek istedim.