Forum

Oracle index rebuil...
 
Bildirimler
Hepsini Temizle

Oracle index rebuild

Ahmet Şirin
(@ahmetsirin)
Üye

Merhabalar

Ö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.

Alıntı
Konu başlatıcı Gönderildi : 30/11/2017 23:09

H. Koray GUNDUZ
(@h-koraygunduz)
Üye Forum Yöneticisi

Merhaba;

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.

Teşekkürler.

CevapAlıntı
Gönderildi : 01/12/2017 03:24

Ahmet Şirin
(@ahmetsirin)
Üye

Öncelikle ilginiz için teşekkür ederim.

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ı. 

CevapAlıntı
Konu başlatıcı Gönderildi : 01/12/2017 13:23

H. Koray GUNDUZ
(@h-koraygunduz)
Üye Forum Yöneticisi

Selamlar;

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.

 

select
 index_name
from
  all_indexes
where
  owner not in ('SYS', 'SYSTEM')
  and
  status != 'VALID'
  and (
    status != 'N/A'
    or
    index_name in (
      select
        index_name
      from
        all_ind_partitions
      where
        status != 'USABLE'
        and (
          status != 'N/A'
          or
          index_name in (
            select
              index_name
            from
              all_ind_subpartitions
            where
              status != 'USABLE'
          )
        )
    )
);

 

Teşekkürler

CevapAlıntı
Gönderildi : 01/12/2017 20:42

Ahmet Şirin
(@ahmetsirin)
Üye

 

Yaptığım testlerde bu sorgu işimi görecek gibi duruyor. Çok teşekkür ediyorum.

CevapAlıntı
Konu başlatıcı Gönderildi : 02/12/2017 00:07

Ahmet Şirin
(@ahmetsirin)
Üye

Belki konuyu gereksiz yere canlandıracağım ama bu kod dizilimi çok işime yarıyor. Bu nedenle tekrar teşekkür etmek istedim.

 

Teşekkür ederim yardımlarınız için

 

 

CevapAlıntı
Konu başlatıcı Gönderildi : 17/05/2018 02:52

Paylaş: