28 Ekim 2016 Cuma

Oracle Database Architecture(Database and Database Instance)

Database and Database Instance


1.1 Database: Disk üzerine konumlandırılan  dosyalar kümesidir. Veriyi depolar. Disk üzerindeki dosyalar, bir database instance’ından bağımsız olarak oluşurlar.

1.2 Database Instance:Veritabanı dosyalarını yöneten bellek yapıları(SGA, PGA) kümesidir. Instance’lar SGA olarak adlandırılan paylaşılmış bellek alanlarından ve background process’lerden  oluşurlar. Bir Instance,  veritabanı dosyalarından bağımsız olarak oluşabilir. Database instance start edildiğinde SGA olarak adlandırılan bir bellek alanı ayırır. Bir user database instance üzerinden database'e erişebilir.

                         

Database Instance aşağıda belirlilen birbirinden ayrı 2 yapıda yapılandırılabilir.
  • Single Instance Configuration:
          Database ve database instance arasında bire bir ilişkiyi ifade eder.
  • Oracle Real Application Cluster
         Database ve database instance arasında bire n ilişkiyi ifade eder.



SGA(System Global Area): Bir Oracle Instance'a atanan paylaşılmış bellek alanı grubudur. Tüm oracle process'leri bilgileri tutmak için SGA'yı kullanır. SGA, database'den gelen verileri  ve database'in ihtiyaç duyulan internal kontrol bilgilerini depolamak için kullanılır. SGA'da bulunan veriler tüm database kullanıcılarının paylaşımına açıktır. Bazı oracle initialization parametreleri(db_cache_size, shared_pool_size,log_buffer) ayarlanarak SGA'ya ayrılacak(allocated) bellek miktarı kontrol edilebilir. 



SGA(System Global Area) Neler Yapar

  • Disk'ten okunan data block'larını cache'ler.
  • Sql Execution Plan'larını depolar.
  • Redo data'larını, online redo log file'lara yazmadan önce ara belleğe alır.
  • Aynı anda bir çok process ve threat'ler tarafından erişilen internal verileri maintain eder.
SGA Üzerinde Bulunan Componentler
  • Database Buffer Cache(Buffer Cache):Sql işlemlerini gerçekleştirmek için data file'lardan okunan data ve index block'larının copy'lerini depolayan bellek alanlarıdır. Böylece data'lara daha hızlı erişim sağlanır. Buffer cache'deki bir block aşağıda belirtilen 3 durumdan biri olabilir.               
                             Free Block:Şuanda hiç bir durum için kullanılmayan block
                             Pinned Block:Şuanda erişilen block 
                             Dirty Block:Değiştirilmiş ama henüz disk'e yazılmayan block


  • Redo Log Buffer:Instance'ın database'de yaptığı değişikliklerin kaydedildiği alandır. Gerektiğinde recovery işlemlerinde kullanılmak üzere bu bilgiler belirli aralıkta background process olan LGWR tarafından disk üzerindeki online redo log file'lara aktarılır.

  • Shared Pool:SGA üzerinde, database buffer cache'ten sonra en önemli componenttir. Shared Pool, library cache, dictionary cache ve result cache'i içerir
                            Library cache:Herhangi bir sql sorgusu çalıştırıldığında sorgu parse edilir ve                                       sorgunun execution'ı planı oluşturulur.Bu plan hangi tabloada hangi indexler nereye                             bağlantılı yapıldı, costu ne gibi bir takım özellikler barındırır. Bir sorgu çalıştırıldığı                             zaman execution plan bu alanda tutulur.Bu bellek alanı en son executed edilen sql                                 ve plsql ifadeleri cache'ler. Shared sql area ve private sql area'yı içerir.Shared sql                                   area tüm user'ların erişebildiği alandır. private sql area sadece user'ın  erişebildiği                                 alandır.
                  
                            Dictionary cache:En son kullanılan veri tanımlamaları depolamak için                                                                               kullanılır. Bu veri tanımlamaları, database files, table,                                                                             index,priviliges, users hakkında verileri içerir. Bellekte bu bilgiyi                                                           cache'lemek özellikle  query ve update için performansı artırır.

                            Result cache:Sql sorgu sonuçlarını ve plsql sorgu sonuçlarını cache'ler.
                         
  • Large Pool:Backup/Recovery işlemleri ve I/O işlemleri gibi bazı büyük işlemler    için büyük  miktarda bellek tahsisi gerektiğinde kullanılan bellek alanıdır.
  • Java Pool:Java Sanal Makines(JVM) tarafında kullanılan tüm oturum-bazlı  java  kodu verisini saklar.
  • Stream Pool:Capture ve apply işlemleri için gerekli olan bilgileri saklamak için oracle stream tarafından kullanılır.
Database Instance'nına her bir kullanıcı bağlantısı için client process uygulama çalıştırır. Her bir client process kendi server process'i ile ilişkilidir. Server process, Program Global Area(PGA) olarak bilinen kendine özel bir session memory'e sahiptir.

Program Global Area(PGA): Bellekteki server process için veri ve kontrol bilgilerini içeren  bellek alanıdır. 

PGA aşağıdaki bilgileri içerir. 

Sort Area: Sql process ile  gerekli herhangi bir sort için kullanılır.
Session Information: Kullanıcı yetkilerini içerir.
Curse State: Sql process aşamasını belirtir.
Stack Space:Session variable'larını içerir.




Şükrü ERGÜNTOP

Author & Editor

Bilecik Şeyh Edebali Üniversitesi Bilgisayar Mühendisi mezunuyum 2015 yılından beri Sigorta Bilgi ve Gözetim Merkezinde İş Zekası alanında çalışmaktayım

0 yorum:

Yorum Gönder