2012/12/26

Oracle Bellek Yapısı

Oracle sunucusu,bellek yapılarını ve işlerini veritabanı yönetmek ve erişmek için kullanılır.Bu bölümde anlatılacak olan mimari özellikler oracle sunucusunun şunları desteklemesini sağlamaktadır.
     *Çok sayıda kullanıcının aynı anda tek bir veritabanına ulaşmaları,
     *Aynı anda çok sayıda kullanıcının ve uygulamanın bağlandığı bir veritabanının ihtiyaç duyduğu yüksek performans,
Oracle 11g Database Server, çalışır durumdayken belirli bir alanı kendi işlemleri ve kullanıcı işlemleri için ayırır. Rezerve edilen bu bellek yapıları SGA(system global area) ve PGA(program global area) olarak adlandırılmaktadır.
Oracle sunucusu bir database ve database instance den oluşur.Oracle database'in her açılışında bellek de SGA alanı tahsis edilir ve oracle background process işlemleri başlatılır.Bu işlemler ve tahsis edilen buffer memory birleşimi Oracle instance oluşturur.
1-)System Global Area(SGA)
SGA tek bir oracle instance'in ihtiyaç duyduğu veri ve kontrol bilgilerinin tutuldığu paylaşıma açık bellek alanıdır.Oracle açıldığı zaman tahsis edilir,kapatıldığı zaman sisteme geri verilir.En iyi performansı sağlaması için SGA'nın ana bellek boyutlarını aşmama koşuluyla olabildiğince büyük olması gerekir.Bu sayede bellekde daha fazla veri tutulur ve disk okuma yazmasını azaltır. SGA bileşenlerinin en önemlileri şu şekilde sıralanabilir.




  • Database buffer cache
  • Log buffer
  • Shared pool
  • Large pool
  • Java pool





  • Database buffer cache

Kullanıcı oturumları Sql komutlarını çalıştırarak tablolar üzerinde insert,update,delete işlemleri yaptığı zaman değişiklikler direk veri tabanına yazılmazlar.Bunun yerine ilk olarak database buffer cache kaydedilirler.İçinde en yakın zaman da kullanılmış ve en sık kullanılan veri blokları tutulur.Bunun amacı bellekte saklayıp disk okuma yazmasını azaltmaktır. Tüm sql sorguları buffer cache den geçer. Bildiğimiz gibi COMMIT ile veriler üzerinde değişiklikleri kalıcı hale getirmekteyiz. Bu verilerin datafile dosyalarına yazılması anlamına gelmez.Bunun yerine değişiklikler kalıcılığı sağlamak üzere log buffer'a ardından da log dosyalarına yazılırlar.
  • Log buffer

Log buffer çok sık aralıklarla verilerin giriş-çıkış yaptıkları bir bellek alanıdır.Veritabanı üzerinde yapılan değişikliklerin kayıtları tutulur.Belli aralıklarla içeriği o anda kullanımda olan ve veritabanının kurtarılmasında kullanılan Redo log dosyalarına atılır.

  • Shared pool

Systeme gönderilmiş olan sql cümlelerinin çalıştırma planı gibi bilgilerin tutulduğu,tüm uygulamalar tarafından paylaşılan alandır.Kendi alt bileşenleri vardır.
     *Library Cache
     *Data Dictionary Cache
     *PL/SQL alanı
 
*Library Cache;
Yakın geçmişte çalıştırılan sql kodlarının derlenmiş ve sonuç vermeye hazır biçimde depolandığı bellek alanıdır.
*Data Dictionary Cache;
  En son erişilen nesnelerin tanımlarının depolandığı bellek alanıdır.Her oracle veritabanının bir data dictionary'si vardır.Oracle data dictionary veritabanı hakkında referans bilgisi içeren tablolar ve viewler kümesinden oluşur.Data dictionary veritabanı yaratılması sırasında yaratılır.Veritabanı yürütmekde olan işleri kayıt etmek ve onaylamak için data dictionary kullanır.
*PL/SQL alanı;
En çok calıştırılan PL/SQL nesneleri ham halleriyle ve derlenmiş halleriyle PL/SQL alanı adı verilen bellek yapısında depolanır.

  • Large pool

Veri yedekleme ve kurtarma,sunucu okuma yazma işlemleri,oturum bellegi ve birden fazla veritabanı üzerinde çalışan hareketleri gibi işlerde kullanılır.Eğer large pool belleğine sistem belleğinden belirli bir miktar yer ayırmazsanız bahsedilen bu process'ler paylaşılan havuz alanını kullanacaktır.

  •   Java pool
Java tabanlı prosedürlere sahipseniz bu prosedürler java pool alanındaki belleği kullanır.Java pool sadece java  prosedürler başlatılırken tanımlama bilgilerinin yüklenmesi için kullanılmaktadır.
2-)Program Global Area(PGA)
PGA sunucu işlemleri için gereken veri ve kontrol bilgilerini tutmak için tahsis edilen tampon bellekdir.Oracle tarafından bir sunucu işlemi başladığında otomatik olarak tahsis edilir.İçinde tutulacak bilgi oracle konfigrasyonuna bağlıdır. Çalışmak da olan oracle veritabanının geçerli PGA yapısını görüntülemek için şu sorguyu kullanabiliriz.
    * SQL>  SELECT * FROM V$PGASTAT ORDER BY VALUE;

İyi okurlar.
 

Hiç yorum yok:

Yorum Gönder