Blog ' da Ara

Loading

30 Nisan 2012

Enqueue Waits & Locks Nedir Ve Nasıl Tune Edilir?


            Enqueue bir oracle shared memory (paylaşımlı memory) birimidir.enqueue ile database kaynaklarına gelen erişimler serileşitirlir.Bir proses Kaynağa erişirken, yapacağı işlemi bitirinceye kadar bu kaynağı lock konumunda tutar. Yani başka proseslerin erişmesine izin vermez. Gelen diğer proseslerde  bu lock durumunun bitmesini bekler.Lock oluşturan prosesin yaptığımı işleme görede lock tipi şekillenir. Kaynak locklı durumda iken gelen prosesler bir kuyruğa girerler. İşte bu tip locklara enqueue lock denir. Genel olarak gösterimi “enq: .. contention” gibidir.Biz bu yazımızda en yaygın görülen aşağıdaki enqueue tipleri detaylı inceleyeceğiz ve diğer enque tiplerini de tanımlayacağız.
            TX       à Transaction Locks
            TM      à DML Locks
            ST        à Space Management Enqueue

            Bekleme Parametreleri
            P1:Enqueue adı ve bekleyen prosesin beklediği mode.Aşağıdaki sql ile v$session_wait view den enque tipini öğrenebilirsiniz.
                SELECT sid,
              CHR (BITAND (p1, -16777216) / 16777215)
              || CHR (BITAND (p1, 16711680) / 65535)
                 "Name",
              (BITAND (p1, 65535)) "Mode"
             FROM v$session_wait
 WHERE event = 'enqueue';
            P2:Lock Kaynağını belirtir. V$lock tablosundaki ID1 kolonu ile aynıdır.v$lock.id1
            P3:Lock Kaynağını belirtir. V$lock tablosundaki ID2 kolonu ile aynıdır.v$lock.id2

18 Nisan 2012

Buffer Busy Wait Nedir ve Nasıl Tune Edilir?


Buffer Busy Wait event, bir session buffer cache içerisinde ki bir data bloğuna erişmek istediğinde, bu blok başka bir session tarafından kullanılıyorsa ortaya çıkan bir bekleme durumudur.  Buffer cache deki bahsedilen durumda olan data bloğu datafileden buffer cache alınıyor yada buffer cache içerisinde değiştiriliyor olabilir.
Buffer Busy wait eventi ile karıştırılmamalıdır.Buffer busy eventi Automatic Storage Management (ASM) kullanan veritabanlarında cache edilen metadaya erişimde yaşanan bekleme olayı olarak tarif edilir.
V$SESSION gibi viewlara baktığınızda buffer busy wait event’e ait parametreler görürsünüz.Şimdi bu parametrelerin ne olduğunu ve nasıl kullanılabileceğini inceleyelim.

13 Nisan 2012

Oracle RAC Servis Yönetimi

Belli bir gruba ait iş yükünü yönetmek yada database gelen bağlantıları yaptıkları işe göre guruplandırıp, bu guruplara benzer  karakteristiklerde kurallar tanımlamak için oracle veritabanında servisler kullanılır. Örneğin çalışan Batch joblarda  İnsan kaynakalrı  ile alakalı olanlar için HR adında bir servis tanımlayıp insan kaynakları uygulamalarından gelen bağlantıları HR servisi üğzerinden database ulaştırabilir, sonrasında hr servisnin kullandığı cpu yu kısıtlayabilir veya farklı bir bağlantı metodu tanımlayabilir yad istersek bir rac sisteminin sadece belli bir noduna bağlanmasını sağlayabiliriz.
                Bir servisi tüm node larda çalışacak şekilde oluşturursak buna UNIFORM servis denir. Yada tam Tersi olarak sadece tek bir makinada hizmet verecek şekilde oluşturursak buna da SINGLETON servise denir.
                Yine bir servisi öncelikli olarak rac1 instancede çalışacak ancak rac1 instance online olmadığında yada crash durumu olduğunda rac2 instacede çalışacak şekilde oluşturusak; bu durumda rac1 PREFERRED , rac2 ise AVAILABLE instanceler olmuş olur.
                Oracle Servisleri yukarıda tanıtmaya çalıştık. Şimdi bu servisler nedir, nasıl oluşturulur ve nasıl yönetilir  konularında açıklamalar ve örneklemeler yapmaya çalışacağız.
                Default Servisler
                Bir database de en fazla 115 servis uygulama için oluşturulabilir. SYS$BACKGROUND ve SYS$USERS ise oracle tarafından default oluşturulan , silinemeyen ve değiştirlemeyen servislerdir.Yani internal servislerdir diyebiliriz. Default servisler tüm rac nodelarında daima erişilebilir durumdadır yani avail dir.
                Servis oluşturma ve yönetme
                Servisleri Enterprise Managerda, Cluster Managed Database Services sayfasında oluşturabilir ve yönetebilirsiniz. Ayrıca srvctl de bu işlemi daha pratik ve hızlı yapabileceğim bir komut yönetcisidir. Burada daha çok srvctl ile devam edeceğiz.

10 Nisan 2012

Rac Database Wait Events

                                                                
Bu yazımızda RAC veritabanını tüne ederken kullanabileceğimiz tool lardan, Rac instance Tuning nasıl yapılır, Rac veritabanında sıkça görülen wait eventlerden , AWr ve ADDM Rac veritabanı için yorumlama konularında paylaşımda bulunacağız.

Sekil 1: Cpu ve Wait time arasındaki ilişki
       
Cpu Time ve Wait Time arasındaki İlişki
Öncelikle genel mantık olarak belirtelimki : Cpu Time ve Wait time değerlerini oranladığımızda eğer CPU Time baskın çıkıyorsa Cpu maliyeti yüksek sql lerin olduğunuz ve bu sqllerin tüne edilmesi gerektiğini çıkarabiliriz.Bu sqlleri de gv$sql view ‘ında Cpu_time kolonuna göre order by yaparak bulabiliriz. Eğer tüne edilebilecek sql yoksa yada sql tuning ile yeterli performans kazanımı elde edemediysek bu durumda CPU eklemek faydalı olacaktır. Eğer Wait Time baskın çıkıyorsa bu durumda Cpu eklemenin hiçbir faydası olmayacaktır.Wait eventleri gözlemlemeli ve performans darboğazlarda geliştirme yapmalıyız sonucunu çıkarabiliriz.Şekil 1 e de bakıldığında bu yorumları çıkarabilirsiniz.
                Rac veritabanını tüne ederken her zmana çıkış noktamız her bir instanceyi tek başına çalışıyormuş gibi tüne etmeye yönelmektir. Sonrasında tabiki rac veritabanlarında ardaki intercnnect trafik hesaba katılmalı ve Rac veritabanı tüne edilirken istatiktiklerin yada tuning tollarının RAC yapısına oluştuğu ve buna göre yorumlanması gerektiği düşünülmelidir.