Oracle 12c New Features : Partial Indexes

Oracle 12c ile birlikte partition tablolarda “indexing off” ve “indexing partial” clause ile indexleri sadece istemiş olduğumuz partitionlar üzerine create edebiliriz. Oracle 12c öncesinde partition tablolarda index create ederken local veya global olmak üzere 2 farklı şekilde index create edebiliyorduk. Artık partial index create edebilir durumdayız. İndex create ederken indexing off opsiyonu ile index create etmek demek ilgili partition üzerinde index create etmemek anlamına gelmektedir.

Sadece ilgilendiğimiz partitiona index create etmek opsiyonunu ne işimize yarar diye düşündüğümüz de ilk aklıma gelen nedeni, çok büyük tabloları partitionladığınız da sadece üzerinde çalışacağınız partitionlara index create ederek zamandan ciddi tasarruf edebilirsiniz.

Her zamanki gibi bir örnekle durumu açıklamaya çalışalım.

Bir partition tablo create edelim;

===> CREATE TABLE kamil.test_range
(id NUMBER(10),
name varchar2(10),
create_date date)
PARTITION BY RANGE(create_date)
INTERVAL( NUMTODSINTERVAL(1,’DAY’))
(PARTITION P1 VALUES LESS THAN (TO_DATE(’01-01-2000′, ‘DD-MM-YYYY’)))
Table created.
Continue reading

Oracle 12c – Multi threaded Model

Linux ve Unix tabanlı işletim sistemleri process based tabanlı çalışan işletim sistemleridir. Process based tabanlı işletim sistemlerinde her bir iş için işletim sistemi tarafında bir process create edilir. Şimdiye kadar da bu yapıyı oracle’ ın tüm sürümlerinde bu şekilde kullandık. Bu yapıyı kullanıyor olmanın bir takım avantajları ve dezavantajları bulıunmaktadır. Örneğin oracle tarafında processlerin sayısı artmaya başladığı zaman, (database de her bir processe karşılık gelen bir OS procesesi olacağından dolayı) prosess sayılarının çokluğundan dolayı performans problemleri ile karşılaşma ihtimalimide artmaktadır. Defaultta oracle 12c ile de aynı yapı ile geliyor. Ancak burada istersek bir parametre değişikliği ile process based tabanlı yapıdan thread based tabanlı yapıya geçebiliriz. Multithred yapı ile anlatılmak istenen her bir process aslında bir thread altında çalışıyor. Buda OS tarafında kaynakların daha verimli kullanılmasını sağlıyor.

Process based yapıda normalde oracle processlerinin nasıl izlendiğine ve kaç adet olduğuna bakalım ;

[oracle@Redhat70 admin]$ ps -ef|grep -v grep|grep ora_ ; ps -ef|grep -v grep|grep ora_ | wc -l
oracle 25240 1 0 23:26 ? 00:00:00 /u01/sq/ora_3/oracle/db/12.1.0.2/bin/tnslsnr listener_12c -inherit
oracle 25908 1 0 23:35 ? 00:00:00 ora_pmon_t1
oracle 25912 1 0 23:35 ? 00:00:00 ora_psp0_t1
oracle 25916 1 1 23:35 ? 00:00:00 ora_vktm_t1
oracle 25922 1 0 23:35 ? 00:00:00 ora_gen0_t1
oracle 25926 1 0 23:35 ? 00:00:00 ora_mman_t1
oracle 25934 1 0 23:35 ? 00:00:00 ora_diag_t1
oracle 25938 1 0 23:35 ? 00:00:00 ora_dbrm_t1
oracle 25942 1 0 23:35 ? 00:00:00 ora_vkrm_t1
oracle 25946 1 0 23:35 ? 00:00:00 ora_dia0_t1
oracle 25950 1 0 23:35 ? 00:00:00 ora_dbw0_t1
oracle 25954 1 0 23:35 ? 00:00:00 ora_dbw1_t1
Continue reading

ORA-00060: Deadlock detected

Ora-00060 deadlock hatası 2 veya daha sessionın aynı data setine lock koyması yapmaya çalışması aynı zamanda diğer sessionlardan da lock requestleri gelmesi sonucunda olayın dairesel bir hal alması durumunda ortaya çıkay durum olarak tanımlayabiliriz. Oracle deadlock hatasına internal olarak müdahale ederek kullanıcıya “ORA-00060: deadlock detected while waiting for resource” hatasını dönerek kiliti kendisi çözmektedir.

Bu yazı ile anlatmak istediğim tam olarak şu aslında, aşağıda ben test senaryosu oluşturmaya çalışırken çok basit bir şekilde 2 tane farklı session açarak senaryomu oluşturdum. Ancak concurrent olarak yüzlerce sessionın olduğu büyük yapıları düşündüğünüz de sorunun kaynağını tespit etmek çok da kolay olamayabiliyor. Dolayısıyla tamda bu nokta da işimizi nasıl kolaylaştırabiliriz ondan bahsediyor olacağım.

Aşağıdaki gibi bir deadlock durumu oluşturmadan önce, aşağıdaki event’ ı set ederek sonucunu gözlemleyelim ve üzerinde konuşalım;

SQL> ALTER SYSTEM SET EVENTS ‘10027 trace name context forever, level 2′;
System altered.
Continue reading

Spesifik olarak bir sql’ i AWR raporuna eklemek

Zaman zaman problem yaşadığınız bir sorgu olduğunu düşünün veya bir sorguyu tune ettiniz sonrasında izlemek istiyorsunuz veya spesifik olarak bir sorgunun zaman zaman database’ in performansına olumsuz etkileri olduğunu düşünüyosunuz ve bu sorgunun farklı zamanlardaki davranışlarını merak ediyosunuz. Yukarıda belirtmiş olduğum tüm bu soruların cevabını bulmak için neler yapardınız ? Internal olarak bir sürü aksiyon alınabilir ama inanın hiçbiri aşağıdaki çözüm yolu kadar basit ve etkili olmayacaktır.

Oracle bizim adımıza zaten her saat başında (default olarak ) sistemin genel durumu, olan bitenler hakkında bize bir rapor hazırlıyor, biz bu raporun içine varsa spesifik olarak isteklerimizi belirtip ekliyor olsaydık güzel olmazmıydı.

İşte aşağıdaki komut tam olarak bunu yapıyor. Tek yapmanız gereken sogunuzun sql_id’ sini bulmak ve aşadaki sorgu bloğunu çalıştırmak. Sonrasında alınacak olan tüm AWR raporlarında sizin sorgunuzunda olduğunuzu göreceksiniz.
Continue reading

Oracle 12c New Features: Enterprise Manager Express Konfigurasyonu (Container Db İçin)

EM Express manager oracle 12c ile kurulum sonrasında gelen bir tool’ dur. Enterprise Manager Express’ in konfigurasyonuna geçmeden önce EM Express tool’ u ile ilgili biraz bilgi verelim.

EM Expres, oracle 12c öncesinde kullanmış olduğumuz Oracle Em konsolun bir devamı değildir. 12c öncesindeki versiyonlarda kullanmış olduğumuz EM konsol oracle 12c ile birlikte artık support edilmemekterdir. Ayrıca EM Express bir Cloud Control veya Grid Control’ da değildir. Yani Grid ile yapmış olduğumuz birtakım management işlemlerini Express ile yapamayız. Dba’ ler olarak şu ana kadar kullandığımız EM konsole ile tüm database management işlemlerini yapabiliyor idik. Ancak maalesef express ile bunuda yapamıyoruz.

Oracle , 12c birlikte artık Grid’ i biraz daha ön plana çıkartarak artık Grid kullanımına zorluyor diyebiliriz. Database management işlemi Grid ile birlikte artık daha kolay ve daha hızlı bir hale gelmiş durumda, tabi dağınık yapılarda Grid’ in başka güzel özellikleride var onlara burada girmeyeceğim zira konumuz Grid değil.

Öncelikle EM express tool’ unu nasıl konfigure edebileceğimiz den bahsedelim sonrasında da kısaca ne işe yaradığından bahsediyor oluruz.
Continue reading