Blog ' da Ara

Loading

15 Mayıs 2012

Oracle Data Guard Architecture



Oracle teknolojilerinin işletmeler tarafından en önemli kısımlarından biride Data Guard Teknolojisidir.  Çünkü data guard ile işletmeler datalarını daha sağlam bir zeminde korumaya almış, data kaybetme riskini neredeyse yok denebilecek seviyeye almış ve erişilebilirliği ise maximum seviyede tutumuş olurlar.Bu da işletmleri gerek müşterilerine karşı gerekse katma deer bakımında daha güvenilir göstermektedir.
 Öyleyse yazımızın devamında data guard nedir? Data guard mimarisi ve temel terminolojileri konusun da açıklamalar yapacağız ve mantıksal anlamda anlamay çalışacağız.Sonraki yazılarımızda da teknolojik anlamda derinlemesine inceleyecek ve pratik örnekler ve kurulum odelleri sunacağız.

Data Guard Konfigurasyon
DataGuard temel anlamda bir veritabanının başka bir yere anlık kopyalanması ve her hangi bir anda kopya veritabanının açılarak production olarak hizmet sunabilmesi denilebilir. Biz burada asıl veritabanına primary kopya veritabanına ise standby diyeceğiz. Bir Dataguard Konfigurasyonunda en az bir adet primary veritabanı olmalıdır.Yine data guard konfigürasyonunda  bir veya birden fazla standby veritabanı bulunabilir.Konfigurasyon içersinde primary  ve standby veritabanları arasındaki haberleşme Oracle NET ile sağlanır. Yani listener ve tns ler yardımıyla.
Ayrıca Belirtmekte fayda varki primary ve standby veritabanları farklı şehirlerde bile olabileceği gibi aynı makinada bile olabilir.
Standby veritabanı fiziksel olabileceği gibi mantıksalda olabilir. Ama temel bir data guard konfigürasyonu aşağıdaki gibi şematize edilebilir.

Şekil-1: Temel Data Guard Konfigurasyonu

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.

14 Mart 2012

Latch Nedir Ve Latch Contention Sebepleri

      

Latch Nedir?
Latch SGA içerisindeki shared data yapısını korumak amacıyla ile geliştirilmiş düşük seviyeli seri data erişim mekanizmasıdır.Yani prosesiın SGA içerisinde memory parçasının tutmmasıdır.Proses bittiğinde ise ilgili latch başka bir prosese verilir. Latch İşletim sisteminden bağımsız değildir. Çünkü bir prosesin ne zaman biteceği ve ne kadar süreceği işletim sistemine bağlıdır.
                Latch bir çeşit lock dır.Şöyleki bir den çok kod betiklerinin aynı memory birimini kullanmaya çalışması ile meydana gelir. Çünkü latch tutan proses eğer sonlandırılırsa ilgili latch temizlenmiş olacaktır.
                Latch ve Enqueue arasındaki farklar Nelerdir?
                Enqueue bir oracle lock mekaizması olmasına karşın , birkaç prosesion aynı zmaanlı olarak bir kaynağı kullanımına izin verebilir.Tablo lock ları burada en iyi örnektir.Çünkü iki proses bir tabloyu share modda yada share update modda  lock edebilir.
                Latch ve enqueue arasındaki en belirgin fark burada Enqueue İşletim sistemi lock mekanizması tarafından oluşturulabilir ve .Latch ise işletim sistemi lock larından bağımsız olarak meydana gelir.Enqueue  kullanıcının lock içerisinde veri girişine izin verir. Eğer bir proses bir kaynağı lock edebilecek yapıya sahip değilse işletim sistemi tarafında enqueu mekanizmasında FIFO yasasına göre bekelmeye girer.
                Diğer bir önemli fark ise latchler enqueu ler gibi kaynağı sürekli tutamazlar.Çünkü belli zamanlama ile proses tekrarlanır ve eğer multi prosessor varsa spin yapabilir. Dolayısıyla beleten tüm prosesler aynı anda işlem yapmayı denerler.

17 Şubat 2012

Log File Sync & Log File Parallel Write Wait Event

                Analiz ve Çözüm Yöntemleri

                Oracle Veritabanında bir user commit işlemi çalıştırdığında, user’a ait session bilgileri memory den alınıp diske yazılmak üzere redolog dosyalarına yazılır. Commit işlemi sırasında session LGWR prosessine geçip log buffer içeriğini redolog dosyalarına  yazacaktır.

Log buffer sessiona ait commitlenmiş ancak redolog dosyalarına henüz yazılamamış bilgiler içerir. LGWR prosesi redolog dosyalarına yazma işlemini tamamladığında işlem bitmiş olacaktır. Redolog dosyalarına yazma sırasında LGWR prosesesini beklerken kaybedilen zamana “Log File Sync” denir.

                Ayrıca “log file sync” yaşanırken başka sessionlarda eğer commit işlemi çalıştırıyorsa aynı şekilde “log file sync” wait event göreceklerdir.

                Log File Sync Wait Event yüksek olmasının sebebi nedir?

                Bekleme; kullanıcılar tarafından onaylanan işlemlerin (commits) log buffer dan diske yazılmasına kadar her an da gerçekleşebilir. Ancak bir genelleme yapılacak olursa log file sync beklemelerinin 3 ana sebebi vardır;

8 Şubat 2012

Oracle Sql Tuning Metodları

Sql Tuning Metodoloji si aslında sql querylerin yani uygulama tarafından sürekli kullanılmakta olan sqllerin performansının artırılması için oluşturulmuş standart çalışmalar bütünüdür diyebiliriz. İşte bu yazımızda inefficient (kötü yazılmış sql) nedir tanımlayacak ve daha sonra bu sqlleri belirlerken yada monitör ederken kullanılacak ttolları ve yöntemleri inceleyeceğiz. En son kısımda da performans geliştirme için neler yapılabilir listeleyeceğiz.
    Bir sql Neden Yavaş Çalışır?
•    Bir sql in nasıl çalışacağınız belirleyen oracle optimizer (10g ve Sonrasında COST Based Optimizer) ‘ın kullandığı data yoğunluğu ve dağılımına dair istitistiklerin güncel olmamaıs ve doğruyu bilgiler sağlamaması.
•    Sql’in veriye erişirken kullandığı index, view gibi yapıların bozulması yada geçerliliğiniz yitirmesi.
•    Optimizerın bir sql için cost,cardinality gibi değerleri yanlış hesaplaması ve dolayısıyla yanlış bir şekilde sql i çalıştırması.
•    Kötü yazılmış sqller.Örneğin Union all yerine union kullanmak yada join içerisine gereksiz tabloların sokulması yada indexi kullanılmayacak hale sokan filtrelerin yazılması.

Şekil1:Performans Monitor ve Tuning Metodları
   

1 Şubat 2012

Administering ASM Diskgroups

           
    Bir önceki yazımızda asm instance nasıl yönetilir anlatmaya çalışmıştık.Bu yazımızda ise asm diskgroupların yönetilmesi yada monitör edilmesi üzerine değineceğiz.Konuya başlamadan önce asm instance, oracle database, rac instance ve asm instance arasındaki ilişkiyi şema olarak gösterebileceğimiz şekil1 e göz atabilirsiniz.
    
Şekil1:Asm Disk Groups
       
    Şekil1 de görüldüğü üzere her makinada sadece bir adet asm instance bulunabilir.Bir makinada birden fazla database oluşturulabilir.Makinalar RAC sisteminde olabilir.Tüm asm instanceler tekbir storage gurubundan beslenir. Şekil1 de ki storage gurubunda Disk Group A ve Disk Group B şeklinde iki adet Asm disk group mevcuttur.Şimdi Bu diskgrouplar üzerinde ne gibi işlemler yapabiliriz ve yönetimini nasıl yaparız anlamaya çalışalım.

24 Ocak 2012

Administrating Asm Instance

    Daha önceki ayzılarımızda da belirttiğimiz gibi asm bir instance dir.Yani kendine has memeory alanları vardır.Nasılki oracle instance verileri yönetiyor , tutuyor ve erişimii sağlayıp kouyorsa, asm instance de aynı şekilde storage yönetimi için geliştirilmiştir.Ancak bir makinada birden fazla oracle instance olabilir.Neticede oracle instance database i yönetir.Ancak bir makinada sadece bir asm instance olur ve o makinanın gördüğü storage yapılarını asm instance yönetir.Şekil1 de asm instance storage yapısı şematize edilmiştir.
Şekil 1 : Asm Instacne storage structure

           
    Asm instancenin de kendi intialization parametreleri vardır.Memory_taget, Instance_type bunlara örnek olarak verilebilir.Bu parametreler dpfile yada pfile içerisine yazılmalıdır.asm instance parametre dosyası  “<grid_home>/dbs/spfile+ASM.ora” şeklindededir.