ÇözümPark'a hoş geldiniz. Oturum Aç | Üye Ol
 
Ana Sayfa Makale Video Forum Resimler Dosyalar Etkinlik Hizmetlerimiz Biz Kimiz

Oracle index rebuild

Son Mesajınız 05-16-2018, 23:52 Ahmet Şirin tarafından gönderildi. 5 yanıt.
Mesajları Sırala: Önceki Sonraki
  •  11-30-2017, 20:09 522269

    Oracle index rebuild

    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.


    Bir Garip Saha Destek Uzmanı
  •  12-01-2017, 0:24 522276 Cevap 522269

    Cevap : Oracle index rebuild

    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.


    H. Koray Gündüz
    Senior System and Database Consultant
  •  12-01-2017, 10:23 522287 Cevap 522276

    Cevap : Oracle index rebuild

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


    Bir Garip Saha Destek Uzmanı
  •  12-01-2017, 17:42 522323 Cevap 522287

    Cevap : Oracle index rebuild

    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


    H. Koray Gündüz
    Senior System and Database Consultant
  •  12-01-2017, 21:07 522334 Cevap 522323

    Cevap : Oracle index rebuild

     

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


    Bir Garip Saha Destek Uzmanı
  •  05-16-2018, 23:52 531005 Cevap 522334

    Cevap : Oracle index rebuild

    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

     

     


    Bir Garip Saha Destek Uzmanı
RSS haberlerini XML olarak görüntüle