Unusuable ve Invisible Indexler Uzerine

Indexler ile ilgili daha önce “İndex Kullanımı, Oluşturulması, Çeşitleri, Faydaları Üzerine” (http://www.kamilturkyilmaz.com/2012/04/08/index-kullanimi-olusturulmasi-cesitleri-faydalari-uzerine– ) diye bir yazı yazmıştım. Indexlerin unusable ve invisible özellikleri ile devam edeceğim.

Unusable indexler defaultta optimizer tarafından kullanılmayan indexlerdir. Yani unusable statüsündeki bir index normal şartlar altında (defaultta) optimizer tarafından dikkate alınmazlar. Tablolar üzerinde bulk load işlem yapacaksanız önce indexi drop create etmek yerine önce unusable sonrasında rebuild ederek eski haline alaiblirsiniz. Unusable index’ i düzeltmenin bikça tane yöntemi var, unusable olan index (veya partition index) rebuild edilebilir, index drop – create edilebilir veya her zaman mümkün olmasa da tabloyu truncate etmek indexi VALID hale getirecektir.

Unusable indexler ile ilgili SKIP_UNUSABLE_INDEXES diye bir initial parametremiz var. Bu parametrenin default değeri TRUE olarak gelmektedir.

SQL> sho parameter SKIP_UNUSABLE_INDEXES
Continue reading

ORA-08104: this index object XXXXX is being online built or rebuilt

İndex dropetmeye çalışırken veya rebuilt etmeye çalışırken aşağıdaki gibi bir hata almanız durumunda yapılması gerekenler ;

— indexi drop etmeye çalışalım ;

drop index kamil.INDX_BIG_TABLE_1;
ORA-08104: this index object 95987 is being online built or rebuilt

— aynı indexi rebuilt etmeye çalışalım ;

ALTER INDEX kamil.INDX_BIG_TABLE_1 REBUILD TABLESPACE TBS_INDEX_2;
ORA-08104: this index object 95987 is being online built or rebuilt
Continue reading

DBMS_SQLTUNE Paketi İle SQL Tuning Nasıl Yapılır

Bu paketi kullanarak sql_id bazında advisor’ i kullanarak bir takım öneriler edinebiliriz. Bu paket kullanılarak alınabilecek önerileri aşağıdaki şekilde kategorize edebiliriz;

• Istatistiği eski veya eksikse,
• Daha iyi bir execution planı varsa,
• Objeye erişimde daha hızlı olması açısından index, materialized view önerisi,
• SQL’ in yapısı ile ilgili öneriler

sunar.
Continue reading

ORA-04031:unable to allocate xxxx bytes of shared memory ….

Bu konuya nereden geldik öncelikle biraz ondan bahsetmek istiyorum. 11gr2 upgrade’ lerimiz sonrasında kimi test ortamlarımızdan aşağıdaki alert logda detayını görebileceğiniz gibi sıkça ORA-04031 hataları görmeye başlamıştık. Sorunu aslında ilk başlangıçda utlrp’ yi çalıştırdığımızda aldığımızı farkettik. Aslında hatada kendi içerisinde problemin kaynağını işaret ediyordu. Shared memoryde bir darboğaz yaşanıyor ama neden utlrp çalışırken bu hatayı alıyorduk ?

Biraz araştırınca problemin utlrp ile ilişkisinide bulmuş olduk. Problemin asas kaynağı large pool’ daki memory problemi idi. Utlrp’ yi çalıştırdığınızda aslında oracle arka tarafda (database’nizin kaynaklarına bağlı olarak) bu işlemi parallel process ler çalıştırarak yapmaya çalışıyor. Parallel processler de large pool’ dan beslendiği için buradaki bir memory problemide bizi aşağıdaki gibi bir hataya götürüyordu.
Continue reading

Historydeki İstatistikleri Tekrar Nasıl Kullanabiliriz

Database’ inizde örneğin gather_stats_job’ ınız disable değil ise database’ in istatistikleri belli aralıklarla güncelleniyor demektir. Alınan her bir istatistik belli bir süre boyunca history’ de saklanır. Aslında bu özellik çok sık kullanılmamakla birlikte bazen çok işimize yarayabilmektedir.

Örneğin, çok büyük bir tablonuz var ve bir gün önce bu tablo üzerindeki tüm sorgularınızın performans şikayeti olmadan çalıştığını ancak şu anda sorguların büyük bir çoğunluğunun index kullanmadığını yani full table scan yaptığını farkettiniz. Bu durumun bir çok nedeni olabilir. Biz bunun nedenin istatistiklerde yaşanan bir problem den dolayı kaynaklandığını düşünelin veya bu ihtimal üzerinde duralım ve neler yapabiliriz onlar üzerinde konuşalım.
Continue reading