Oracle DB Mimarisi

Ahmet Parpucu
6 min readFeb 8, 2023

Merhaba arkadaşlar, ilk yazımda sizlere Oracle Veritabanı Mimarisinden bahsedeceğim.

Şekil 1-Oracle DB

Mimariye geçmeden önce veri, bilgi ve veritabanı nedir kısaca değinelim.

Veri, tek başına bir şey ifade etmez. Analiz ve rafine edilerek bilgi elde etmek için kullanılır.
Bilgi ise toplanan verilerin işlenmesiyle anlam kazanan veri grubudur.
Veritabanı, verilerin dijital ortamda bütünlüğü bozulmadan tutulmasına ve erişilmesine olanak sağlayan alandır. Oracle, işlem boyutunun fazla olmasına karşın büyük verilere aynı anda birçok kullanıcının hızlı ve güvenli bir şekilde erişimine olanak sağlayan ilişkisel(RDBMS) bir veritabanıdır.

Oracle DB Mimarisi

Şekil 2-Oracle Database Architecture

Oracle veritabanı mimarisi, verilerin güvenli ve etkili bir şekilde depolanmasını, yönetilmesini ve erişilmesini sağlamak için tasarlanmıştır.

Instance ve database, birlikte Oracle veritabanı mimarisinin temel bileşenlerini oluştururlar.

Instance
Veritabanı yönetim sistemi tarafından kullanılan bellek ve işlemci kaynaklarını tanımlar. Instance, veritabanı için gerekli olan bellek yapısını ve süreci yönetir. Veritabanı için gerekli olan veri dosyalarına erişimi sağlar.

Database
Verilerin fiziksel olarak depolandığı veri depolama alanıdır. Database, tablo, görünüm, fonksiyon, prosedür, veri tipi, indeks gibi veri yapılarını içerir ve verilerin sorgulanması, güncellenmesi, silinmesi gibi işlemlerini destekler. Ayrıca, verilerin güvenliğini sağlamak ve performansı optimize etmek için yönetim araçları da içerir.

  • Instance Bileşenleri

#1-SGA
System Global Area (SGA), veritabanı tarafından kullanılan verilerin ve veritabanı tarafından yapılan işlemlerin bellekte tutulmasını sağlar.

  1. Shared Pool: Oracle veritabanının SGA içinde bulunan bir bölümdür. Shared Pool, veritabanı tarafından kullanılan sorgu planlarını, PL/SQL fonksiyonlarını, prosedürlerini ve diğer veri yapılarını saklar. Bu veri yapıları, veritabanı tarafından tekrar tekrar kullanılan sorgular için kullanılır ve veritabanı performansını artırır. Shared Pool, veritabanı tarafından yapılan sorguların hızlı bir şekilde yapılmasını ve veri erişim hızının artmasını sağlar.
    - Library Cache: Oracle veritabanına yazılan SQL/PLSQL komutunun daha önce çalıştırılıp çalıştırılmadığı Library Cache’ye bakılarak anlaşılır.
    Eğer sorgu daha önce çalıştırılmışsa Oracle bu sorguyu tekrar parse etmeden önceki execution planını kullanır. Bu işleme soft parse denir.
    Eğer sorgu daha önce çalıştırılmamışsa Oracle bu sorguyu parse edip library cache’de bulunan Shared SQL Area’ya kaydeder. Bu işleme hard parse denir.
    - Dictionary Cache: Bu alan veritabanının metadasını tutar. Bir tabloya erişim yetkisinin kimlerde olduğu, tablespace bilgileri, bir tablonun kolonları gibi alanlar burada tutulur.
  2. Database Buffer Cache: Bir SQL sorgusu çalıştırıldığında Oracle ilk olarak veriyi data files’a gitmeden bu tampon alanda arar. Sorgulanan veri eğer daha önce sorgulanmış ise veriyi direkt olarak tampon bölgeden kullanıcıya iletir.
    Eğer istenen veri burada yoksa sorguyla ilgili olan tabloları veri dosyalarından buffer cache’e kopyalayarak sorgu sonucunu bize döndürür.
    Insert, update, delete gibi DML işlemleri veritabanında ki veri dosyalarına hemen yazılmaz. İlk olarak değiştirilen veri Buffer Cache’de tutulur. Tampon alanda değişen bu veri bloklarına “Dirty Blocks” denir. Veri dosyalarına yazıldıktan sonra “Clean Blocks” olarak adlandırılır.
    Bu arka plan işlemleri DBWR process’i tarafından gerçekleştirilir.
  3. Redo Log Buffer: Bir tablo üzerinde DML komutlarıyla değişiklik yapıldığında sadece değişiklik yapılan veriler Redo Log Buffer’da tutulur. Eski veriler Rollback yapabilmek için Undo Tablespace’de tutulur. Belli aralıklarla Redo Log Buffer alanındaki kayıtlar LGWR process’i tarafından Online Redo Log dosyasına yazılır.
    LGWR 4 işlemden biriyle tetiklendiği zaman çalışmaktadır ve Online Redo Log’lara veriler aktarılır;
    - Her 3 saniyede bir,
    - Redo Log Buffer’ın 1/3'ü dolduğunda,
    - Redo Log Buffer 1MB olduğu zaman,
    - Commit işlemi gerçekleştiğinde
  4. Large Pool: Veritabanı üzerinde çalıştırılacak büyük işlemler için kullanılır. Recovery, backup ve I/O gibi işlemlerin yürütüldüğü alandır. Large Pool için RAM’dan hafıza ayrılmazsa bu işlemler Shared Pool alanından çalıştırılır.
  5. Streams Pool: Oracle Streams için gerekli olan veri yapılarını ve veri yapısı değişikliklerini saklamak için kullanılan bellek alanıdır.
  6. Java Pool: Java kodlarının veri tabanı içerisinde anlamlandırılması için kullanılmaktadır. Boyutu Java_Pool_Size parametresiyle belirlenmektedir.

#2-PGA
Program Global Area (PGA), veritabanı mimarisinde instance altında ki paylaşılmamış bellek alanıdır. Bir server process başlatıldığı zaman, server fiziksel belleğinden PGA bellek alanı tahsis edilir. Bu işlem bitene kadar bellek kullanılır, işlem bittikten sonra bellek geri bırakılır.

PGA bileşenlerinden bazıları şunlardır. Private SQL Area bir Sql sorgusu çalıştığında değişken değerleri, durum bilgisi, sorgu çalışma alanları gibi bilgileri tutar. Sql Work Alanı yoğun bellek işlemleri için kullanılır. Session Memory oturuma özel değişkenlerin tutulduğu alandır.

#3-Background Processes
Veritabanının doğru bir şekilde çalışması ve gereken performansı sağlamak için bir dizi arka plan işlemi (background process) yürütülür. Bunlar;

  1. PMON(Process Monitor): Beklenmedik şekilde sonlandırılan connectionların kullandığı sistem kaynaklarını serbest bırakıp sunucuya teslim eder. Cache temizlemekle görevlidir. Instance’ın listener ile iletişim kurmasını sağlar.
  2. SMON(System Monitor): Instance’ın tümünden sorumlu process’dir. Instance’da herhangi bir fail olduğunda instance’ı tekrar ayağa kaldırmakla görevlidir. Veritabanı başlatılırken control file dosyasını kontrol eder. Kontrol bittiğinde veritabanı mount moduna geçer.
  3. DBWR: Database Buffer Cache’de bulunan değişmiş değerleri databasedeki datafiles’a yazar. Bazı olaylar neticesinde tetiklenir ve yazma işlemini yerine getirir.
    Dbwr process’inin çalışmasını tetikleyen durumlar;
    - CKPT tarafından checkpoint atıldığı zaman,
    - Database Buffer Cache’de yeterli bellek alanı kalmadığı zaman,
    - Bir tablespace offline veya backup moduna alındığı zaman,
    - Bir tablo drop ya da truncate edildiği zaman
  4. LGWR: Redo log buffer’da bulunan log bilgilerini online redo log fiziksel dosyalarına yazar.
    Lgwr process’inin çalışmasını tetikleyen durumlar;
    - Bir transaction sonrasında commit edildiğinde
    - Her 3 saniyede bir,
    - Redo log buffer alanının 1/3'ü dolduğunda
  5. CKPT: Database buffer cache’de bulunan dirty blockları fiziksel datafile’lara yazar. Bu yazma işlemine başlarken bir checkpoint işlemi gerçekleştirilir. Checkpoint işlemi gerçekleştiğinde checkpoint ile ilgili bilgileri controlfile üzerine yazar. Aynı zamanda data file header bilgilerini günceller. Bu yüzden process’in tetiklenme sıklığını belirlemek önemlidir.
  6. ARCN: Online redo log grupları dolduğu zaman bu redolog dosyasının yedeğini archived log files üzerine yazar. Bu process, veritabanı archive log modundaysa çalışır.
  7. RECO: Veritabanında çeşitli sebeplerle yarım kalan işlemlerin tamamlamasını sağlar.
Şekil 3-Oracle Database Architecture
  • Database Bileşenleri
  1. Control File: Oracle veritabanının beynidir. İçinde database ile ilgili önemli bilgileri barındırır. Control file yoksa veya zarar görmüşse veritabanı mount moda geçemez. Control file’da tutulan bazı veriler şunlardır;
    - Veritabanı adı burada saklanır. Veritabanı açılırken veritabanı adının ne olduğu bilgisini instance bu dosyayı okuduktan sonra öğrenir.
    - Veritabanı verilerinin fiziksel olarak saklandığı datafile dosyalarının yerini içerir.
    - Kullanıcının başlattığı transactionların saklandığı Online Redo Log dosyalarının ve bunların arşivlendiği archive log dosyalarının fiziksel yerlerini içerir.
    - RMAN ile alınan backup bilgileri bu dosya altında tutulur. Dolayısıyla alınan bir full backup sırasında Control File’ın da Backup’ı alınmamışsa o backup geçersizdir, restore yapılamaz.
    - Veritabanı işlemlerinde kullanılan SCN(System Chance Number) numarasının güncel hali burada bulunur. SCN, veritabanına gelen transactionlar commitlendiği zaman verilen bir numaradır. SCN sırayla artan unique bir değerdir.
    - Checkpoint bilgisi burada bulunur.
    - Veritabanı oluşturulma tarihi bilgisi burada bulunur.
    - Transactionların tutulduğu log dosyalarının sequence number bilgisini tutar.
  2. Data Files: Oracle veritabanında kullanıcılara ve uygulamalara ait tutulan verilerin saklandığı .dbf uzantılı fiziksel dosyalardır. Data files içinde tablespaceler bulunur. Oracle veritabanı ilk oluşturulduğunda default olarak System, Sysaux, Undo, User ve Temp Datafiles oluşturulmuş olarak gelmektedir.
    Data files iki bölümden oluşur;
    - User Data, kullanıcı verilerinin saklandığı alanlardır.
    - System Meta Data, sistem nesneleriyle ilgili verilerin saklandığı alanlardır.
  3. Parameter Files: Oracle’ın çalışabilmesi için gerek duyduğu temel bazı öğeler parametre dosyalarında tutulur. Oracle çalışmaya başladığında parametre dosyalarını okur ve sisteme dair birçok ayara buradan ulaşır.
    2 çeşit parametre dosyası vardır;
    - PFile
    - SPFile
    Bunların yanında password file bulunur. Bu dosya, veritabanı yöneticilerinin veritabanı sunucusunun erişim haklarını yönetmelerine olanak tanır ve veritabanı güvenliğini artırır. Sysdba veya admin rolündeki kullanıcıların şifrelerinin saklandığı dosyalardır.
  4. Online Redo Log Files: Veritabanındaki tüm transactionların kaydedildiği fiziksel dosyalardır. Bu dosyalar veritabanındaki tüm değişikliği tutar. Redo Log Buffer alanında ki kayıtlar belirli aralıklarla buraya kaydedilir. Database archive moddaysa buradaki dosyalar belirli aralıklarla switch olarak arşivlenir. Databasede default olarak iki tane Online Redo Log dosyası vardır. Bu tip Redo Loglar kendi içinde de mirrorlanır.
    Bir online redo log dosyasına bilgi yazılırken(current) diğer dosya beklemededir(inactive mode). Online redo loglardan biri olduğu anda checkpoint atılır ve switch işlemi yapılarak active moda alınır, diğer dosya current moda geçirilir. Active modda olan redo log dosyasındaki veriler fiziksel diske yazılır ve inactive moda alınırlar. Redo logun switch etme süresinin 20 dakikadan az olmamasına önem verilmelidir. Yoksa performans sorununa yol açar.

Oracle Veritabanı Mimarisi hakkında anlatacaklarım bu kadar. Umarım sizler için faydalı bir kaynak olur. Bir daha ki yazıda görüşmek dileğiyle.

--

--