Blog ' da Ara

Loading

3 Haziran 2011

Oracle Database Mimarisi

Merhabalar,
Çağımızda, Yazmanın ve bilgiyi yayınlayarak paylaşmanın güzel olduğuna inanan insanların az olduğunu düşünmekteyim. Ve bende mesleki anlamda naçizane bilgilerimi bir blogda yayınlayarak, bu azınlık gurubun içinde olmayı bir mutluluk saydım.
Bu bağlamda yazılarımı elimden geldiğince anlaşılacak şekilde ve Türkçe yazmaya karar verdim. Bununla Birlikte Oracle Database hakkında en temel seviyeden başlayarak zamanla tüm konulara değinmeye çalışacağım. Böylece sizlerinde bu yazılardan oracle database hakkında genel esasları yada bazende hiç bilmediğiniz detayları öğrenmenizi yada bildiklerinizi daha sistematik anlatarak hatırlamanızı amaçlamaktayım.Ancak oracle’ ı anlayabilmek için ingilizce bilmenin şart olduğuda kesindir.
         
         Neyse, Lafı fazla dolandırmadan ilk yazımız olan Oracle Database Architecture ile muhabbetimize devam edelim.
Bir Oracle Database Server Şekil 1 de görüldüğü gibi, Oracle Database, bir veya daha fazla instance den oluşur.Instance ise memory ve background proseslerden oluşur.Bir instance başlatıldığında, Shared Global Area (Genel olarak SGA ) oluşturulur ve background prosesler başlatılır.

Şekil 1.Oracle Database Mimarisi


Oracle Database Server yapısı 3 ana kategoride incelenebilir.
1- Memory Birimleri,
2-Process Birimleri,
3-Depolama Birimleri

                Oracle Database Memory Birimleri;

Şekil 2. Oracle Database Memory Birimleri
Şekil 2 de Oracle Database Memory Birimleri çzilmiştir.Oracle Memory birimleri aslında 2 temel bölümden oluşur;
System Global Area (SGA): Sga bir oracle instance için, data ve control bilgilerinin tutulduğu, bütün server ve processler tarafından kullanılan, paylaşımlı memory alanıdır.
Process Global Area (PGA):Bir oracle server veya background process başlatıldığında oluşturulan, paylaşımlı olmayan, herbir process in kendine ait alanının bulunduğu , data ve control bilgilerinin tutulduğu memory alanıdır.
Temel Olarak Memory birimlerini böylece bahsetmiş olduk.
Şimdi SGA memory bölümünde saklanan data birimlerinden bahsedelim.
  • Database Buffer Cache: Database den queryler yardımıyla çekilen dataların tutulduğu yada saklandığı alandır.Tüm kullanıcılar tarafından ortak kullanılır.
  • Redo Log Buffer:Instance crash olduğunda recover edilebilmesi için gerekli bilgilerin cache lendiği alandır.Belli bir süre sonra fiziksel olarak diskte saklanmak için redolog dosyalarına yazdırılır.Ayrıca DML ve DDL işlemlerde diske yazılmadan önce burada tutulur.
  • Shared Pool: Database Userları tarafından paylaşılan çeşitli yapıların tutulduğu alandır.Data Dictionary, Sql query sonuçları, pl/sql block sonuçları, paralel çalışan işlemler için gerekli memory shared pool içinde barındırılır.Bir Yapı çalıştırıldığında oracle shared pool kontrolu yapar ve sonuç buraya daha önceden eklenmişse, diske başvurmadan sonucu buradan alabilir. Buda query lerin hzılı çalışmasını sağlar.
  • Large Pool : Geniş memory alanı gerektiren, oracle Backup ve Recover gibi yada I/O prosesleri gibi işlemlerin yerleştirildiği alan olup, opsiyoneldir.
  • Java Pool : Java Virtual Machine (JVM) deki dataların yada Sessionlara ait Java kodlarının tutulduğu alandır.
  • Streams Pool : Oracle Streams Tarafından kullanılır.Enterprise manager yada SQL*Plus gibi uygulamalardan eğer bir instance başlatırsanız, ilgili datalar bu alanda tutulur.


·
                  Oracle Database Process Birimleri; 
Şekil 3. Oracle Database Process Birimleri
Şekil 3.de Oracle Database Process Birimleri Bulunmaktadır.Processler Kullanıcıların oracle’a bağlanmaları ile oluşan processler (User Process) ve birde Oracle Database tarafından oluşturulan processler (Database Process) diye ikiye ayırabiliriz.
Bir kullanıcı SQL*PLUS gibi bir uygulama kullanarak oracle database ‘e bağlandığında Oracle Database Bu kullnıcının uygulamalarını çalıştırabilmesi için bir process oluşturur. Buna user process denir.
Database Processlerde oracle database tarafından oluşturulan processlerdir.Bunların bir kısmı Background processler ve bir kısmıda server processlerdir.Bir kullanıcı oracle bağlandıktan sonra , bir sql ‘i parse ve run ettiğinde yada bazı blocklardan data okumaya çalıştığında yada bu kullanıcı tarafından çalıştırılan uygulamalar bazı sonuçlar dönmek istediğinde server processler oluşturulur.
Diğer Taraftan Db çalışma güvenliği, performansı, çoklu user desteği vs.. gibi oracle özelliklerini kullanabilmemiz için Background processler vardır.Oracle Process mantığı dendiğinde genel olarak background processlerden bahsedildiğini düşünürüz.Şimdi bu background processlerden bahsedelim.
  • Database Writer Process (DBWn):Daha önce bahsettiğim memory bölümü olan Database Buffer Cache içeriğini diske yazan process dir. Ancak  bu yazma işlemi buffer içerisindeki datalar modifiye edildiğikten sonra belli bir sıra ile gerçekleşir.
  • Log Writer Process (LGWR):Redolog Buffer daki verileri  redolog file’ lara yazan processdir.Bu process ‘in çalıştığı anları şöyle özetleyebiliriz.

  1. Bir kullanıcı commit transaction çalıştırdığında.
  2. Redolog buffer lardan biri dolduğunda
  3. DBWn process ‘i çalışmadan önce.

  • Checkpoint Process  (CKPT):Chechkpoint bir tur system değiştirme numaraları saklayan data birimleridir.Checkpointler kontrol file ‘lere ve datafile header lara yazılır.System bir checkpoint oluştuğunda control file lerin içeriğini ve datafile headerları güncelleme işlemini Checkpoint process üstlenir. Checkpoint process burda diske yazmı işlemi yapmaz.Checkpointler recover için kritik öneme sahiptir.
  • System Monitor Process (SMON):Instance başlatıldığında eğer instance recovery gerekli ise bunu Smon process gerçekleştirir. Ayrıca temp alanının boşaltılaması, eğer gerekli ise instance başlaması sırasında başka bir processin çalıştırılması gibi işlemler SMON tarafından gerçekleştirilir.
  • Process Monitor Process (PMON):Bir kullanıcı process’ i fail olduğunda process recovery işlemini PMON yapar. Bu noktada Database buffer cache yi temizlemek bu user tarafından kullanılan kaynakları tekrar kullanılabilir yapmak Pmon görevlerindendir.Ayrıca timeout olan veya askıda kalan session ların izlenmesi ve ayrıca listener yardımları ile database servisleri register etmekte yine Pmon tarafından yapılır.
  • Recoverer Process  (RECO): Dağınık database configurasyonları ile birlikte kullnılır. RECO process otomotik olarak  , fail olma olasılığı olan transactionlara sahip databaselere bağlanır.Ve bu şüpheli transactionların çözümlenmesini yapar.Sonrasında bu şüpheli transactionlara uygun kayıtları siler.
  • Archiver Process  (ARCn): Redolog dsoyalarını log switch olştuktan sonra diske yazan process dir.ARCn processinin çalışması için database ARCHIVELOG MODE da olmalı ve Automaticarchiving enable olmalıdır.

Bu Background processler mutlaka bilinmesi gerekn processlerdir. Bunların dışında Oracle Database de MMON, MMNL,MMAN,CJQ0,QMNC gibi processlerde vardır. Ancak biz bunları şu aşamada incelemeyeceğiz.



                  Oracle Database Depolama Birimleri;
Şekil 4. Oracle Database Depolama Birimleri
Oracle Database Dosyaları Şekil4 teki bir organizasyon içerisinde saklar.

  • Control Files : Database ile ilgili bilgilerin, control datalarının tutulduğu dsoyalardır. Control file’ ler olmaksızın datafileleri açıp database ile datalara ulaşamazsınız.
  • Data Files : Kullnıcı ve uygualamalara ait dataların tutulduğu dosyalardır.
  • Online RedoLog Files :İnstance recovery dosyalarının tutulduğu filelerdir.Eğer database crash olursa , instance databaseyi redolog dosyalarındaki bilgiler ile recover edebilir.
  • Parameter File : İnstance configurasyon bilgilerinin tutulduğu dosyadır.
  • Password File: Remote olarak db ye bağlanıp yönetimsel taskların gerçekleştirilemsine izin verir.          
  • Backup Files :Database Recovery için kullanılır.
  • Archived Redo Log Files :Historik olarak data değişim bilgilerini tutar.Bu dosyalar ile birlikte backup dosyaları kullanılarak kayıp datalar recover edilebilir.
  • Trace and Alert Files: Herbir server ve background processlerin kayıtlarının tutulduğu, hataların yazıldığı dosyalardır. Bu dosyalardan faydalanılarak processler izlenebilir, sessionlar monitor edilebilir.




Şekil 5. Oracle Database Mantıksal ve fiziksel organisayon

          Oracle Database Fiziksel Data oraganizasyonu biraz önce inceledik. Şekildede Görüldüğü üzere oracle Database Mantıksal depolama birimlerinide inceleyeceğiz.
  • Schemas: Tablo, view, prosedure, fonksiyon, paket, trigger, index ... vs gibi mantıksal database objelerinin tutulduğu, yani database ‘e ait bir koleksiyondur.Direkt olarak kendi adı ile database ‘e bağlanabilir yani aynı anda bir kullanıcıdır.Genel olarak şema objeleri , uygulama bazında oluşturulabilecek her türlü objeyi kapsar.Bir database 1 yada daha fazla şemadan oluşur.
  • Tablespaces:Database, mantık olarak tablespaceler’ e bölünmüştür. Yani tablespaceler mantıksal depolama birimleridir.Herbir tablespace içinde datafileler bulundurur.
  • DataBlocks: Oracle Database datalarını data blocklar içinde bulundurur.Bir data block fiziksel olarak byte lara dank gelir.
  • Extents: Extentler birbirlerini takip eden Datab blocklar ‘dan meydan gelir.
  • Segments : Segmentlerde birbirlerini takip eden extentlerden oluşur. Bir segment ; data segmenti ,İndex segmenti, undo segmetni yada temporary segment olabilir.
Bu yazımızda Oracle Database Mimarisi hakkında bir çerçeve çizip ana hatlarıyla açıklamaya çalıştık ve Oracle Database Server yapısını anlayabilmek için üç ana unsur olan Memory, Process ve Storage mimarilerini ve bileşenlerini tanımladık. Umarım faydalı olmuştur.
Özcan YILDIRIM



5 yorum:

  1. Teşekkürler,

    Çok güzel bir yazı olmuş,

    Yazılarının devamını bekliyoruz,

    Başarılar.

    YanıtlaSil
  2. hocam ;

    elinize sağlık.

    birikimler zamanla oluşuyor ve bunları aktarmak ise daha fazla enerji istiyor.

    teşekkürler.
    devamını bekliyoruz.

    YanıtlaSil
  3. Rica ederim yazdıklarınızın okunduğunu ve makalelerinizden faydalanıldığını bilmek gerçekten gurur verici ve asıl güç veren unsur oluyor.
    İlgi duyan herkese ben teşekkür ederim,

    YanıtlaSil
  4. Çok teşekürler hocam elinize saglık türkçe olarak yazılarınızın devamını bekliyoruz

    YanıtlaSil
  5. ben daha yeni başladım okumaya teşekkürler paylaşımda bulunduğunuz için.

    YanıtlaSil

"Sorularınız ve Eleştirileriniz Değerlidir"