ORACLE DATABASE INSTANCE

Orale Mimarisinde databasenin çalışması için disklerden gerekli bilgilerin database açılışında okunup memoriye yazılması gerekir. Instance dediğimiz yapıda memoriye kaydedilmiş bu database kısmına denir. Instance Ram üzerindeki SGA ve Background processlerinden oluşur.

SGA (System(Shared) Global Area). Oracle Instance nin veri ve kontrol bilgilerini tutan memory gruplarından oluşur. SGA Bileşenleri;

  • Buffer Cache (db_cache_size)
  • Redo Log Buffer (log_buffer)
  • Shared Pool (shared_pool_size)
  • Java pool (java_pool_size)
  • Streams pool (streams_pool_size)
  • Large pool (large_pool_size)

SGA az olursa;

  1. I/O artışı ve performasta düşme
  2. Out of memory hataları

Buffer Cache : İçerisinde Transactionların sonucu datafile lardan gelen bilgiler tutulur. Oracle bir sql i ilk defa çalıştırdığında Fiziksel disklerden I/O yaparak veriyi getirir, bu veri buffer cachelerde saklanır ve daha sonra bu sql çalıştırıldığında buffer cache alanından fiziksel I/O yapılmadan bu alandan okunarak getirilir ve çok daha hızlıdır. Veritabanında yapılan güncellemeler buffer cachede Dirty Buffer olarak saklanır.

Redo Log Buffer Veritabanı üzerideki bütün değişikliklerin saklandığı alandır ve en geç 3 saniyede birOnline Redo Log dosyalarına yazar.

Shared Pool: SQL ve PL/SQL kodlarının çalışma planlarının oluşturulduğu alandır .

Large Pool: I/O server processleri ve backup/restore operasyonları için ayrılmış alandır (RMAN operasyonları gibi) .

Çalışmakta olan Oracle veritabanın da SGA bileşenlerini V$SGA_DYNAMIC_COMPONENTS viewinden görebiliriz veya;

SQL> Show SGA ;

Total System Global Area 2432696320 bytes
Fixed Size 2927288 bytes
Variable Size 1509950792 bytes
Database Buffers 905969664 bytes
Redo Buffers 13848576 bytes

PGA (Program Global Area) : Oracle kullanan her bir process (server process) için bellekte  reserve edilen alandır. Kullanıcı  tarafından gelen isteğe User proses e, oracle serverde karşılayan process de server proces s ‘ dir. Her server process için bir PGA alanı oluşacaktır. Ve bu server process için bellekte bir alan ayrılacaktır. Toplam PGA alanı ise her bir server process tarafından ayrılan alanların toplamıdır. Ve PGA_AGGREGATE_TARGET parametresi ile set edilebilir.

PGA Bileşenleri ;

  • PrivateSQL AREA
  • CURSOR(imleç):  Bir SQL sorgusu çalıştırıldığı zaman onun için bir cursor oluşturulur. Sorgu sonucunda dataların getirilmesi dataya bilgi gönderilmesi gibi önceliklerin ve işlemlerin yapılması işlemlerini Cursor sağlar.
  • SQL WORK AREA:
    Birleştirme(hash-join) ve sıralama(order by, group by) komutları gibi işlemlr için ayrılmış büyük bir alandır. Örnek olarak istenilen sorgu sonucunda  bir sıralama talebi varsa , database buffer cahce ‘ den getirilen verileri sıralamak için bir alana ihtiyaç olacaktır.Ve bulan da “sort area” yada “Work area” olarak bilinir. Bir diğer örnek ise, birden fazla tabloyu join edeceğiz. Burada en büyük  tablo bu alana getirilir. Sonra diğerleri ve bu alanda da join işlemi yapılır.

Background Processes : Bir Instance bir çok background process içerir.

SMON ( System Monitor process ) : Oracle başlatılırken ilk olarak SMON arka plan işlemi devreye girer. Açılış sırasından önce instance başlatılır. Oracle veritabanı açılışında oluşan bu ilk duruma NOMOUNT modu denir. SMON, nomount durumunda eğer veritabanı daha önceden “Shutdown Abort” komutu veya işletim sistemi üzerinden Oracle veritabanı işlemlerinin öldürülmesi ile instance ani bir şekilde kapatılmış ise Online Redo Log dosyalarını okuyarak kurtarma işlemini gerçekleştirir. Aniden sonlandırılan işlemler (transactions) yine SMON tarafından kurtarılır. SMON ayrıca tablespace’lerin üzerindeki geçici segmentlerin (TEMP) temizlenmesinden de sorumludur

PMON (Proccess Monitor Proccess):   User Process fail olduğunda,process kurtarma işlemini gerçekleştirir.Database Buffer Cache alanını temizler. User Process tarafından kullanılan kaynakları boşaltır. Zaman aşımına uğrayan oturumları monitör eder. Listenerlar ile veritabanı servislerini anlık olarak kaydeder. Instance açılırken Listenerların açık olup olmadıklarını kontrol eder.

DBWn (Database Writer Process) : Database Writer’ın görevi DML (Insert,Update,Delete) komutları ile değiştirilen veri bloklarını Database Buffer Cache’den alıp Data file (Veri dosyalarına) yazmaktır. Database Writer Process aşağıdaki durumlarda değişen veri bloklarını Data file’lara yazar.

  1. Database Buffer Cache doluysa
  2. Checkpoint oluşursa
  3. Bir tablo drop yada truncate edilirse
  4. Bir tablespace backup moduna getirilirse
  5. Bir tablespace read-only yapılırsa
  6. Shutdown abort dışında kalan bir yöntem ile veritabanı kapatıldığı zaman .

CKPT (Checkpoint) :

Bir checkpoint, DBWn işleminin bütün dirty buffer’ları veri dosyalarına yazdığı zamandır. Bir checkpoint oluştuğu zaman, Oracle bu checkpoint işlemini kayda almak için bütün veri dosyalarının başlıklarını ve kontrol dosyasını günceller. Bu güncelleme CKPT işlemi tarafından yapılmaktadır. Checkpoint’ler bir instance kurtarımı durumunda zamanı kısaltmaya yardımcı olmaktadırlar. Eğer checkpoint’ler çok sık oluşmaktaysa disk çekişmeleri veri dosyaları için bir problem teşkil etmeye başlayacaktır. Checkpoint olayı otomatik olarak, bir redo log geçişi yapıldıktan sonra tetiklenmekte ve çalıştırılmaktadır. Checkpoint’in tetiklenmesini beklemek zorunda değiliz;
SQL> ALTER SYSTEM CHECKPOINT;

LGWR (Log Writer) : Redo Log Buffer daki bilgileri online redo loglara yazmakla görevli background process tir. Aşağıdaki durumlarda LGWR tetiklenmektedir.

  1. Her 3 saniyede bir.
  2. Herhangi bir kullanıcı bir transactionı commit ettiği zaman.
  3. Redo log buffer’ın 1/3’ü dolu olduğu zaman.
  4. Veritabanı checkpoint oluştuğu zaman.
  5. 1 MB Redo kaydı oluştuğunda.

ARCn (Archiver Process) : Bu proses Oracle Archive log modunda çalıştıgı zaman, online redo log dosyalarının üzerine tekrar yazılmadan başka bir yere kopyalamasını yedeklemesini saglamaktadır. Çalışma mantıgına bakacak olursak veritabanımızda birden fazla redo log dosyası olacağından ilk redo log dosyasına yazma işlemi bittiğinde artık log bufferdan gelen veriler 2. Redo log dosyasına yazılacak  bu sıradada ARCn prosesi 1.redo log dosyasının kopyasını alacak ve bu şekilde veri güvenliği daha da güçlenmiş olacaktır.

RECO (Recovery Process) : Adı Recovery Process olsada ismiyle bir alakası yoktur. Dblink ve Dağıtık database configurasyonları ile birlikte kullanı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.

Bu Background processler mutlaka bilinmesi gereken processlerdir. Bunların dışında Oracle Database de MMON, MMNL,MMAN,CJQ0,QMNC gibi birçok background process de vardır.