Oracle Database Architecture
Database Instance
Oracle Relational Database Management System (RDBMS) İlişkilendirilmiş Veritabanı Yönetim Sistemi
büyük miktardaki verilerin saklanabildiği,verilerin güvenliğinin sağlanabildiği, veriye hızlı erişimi
sağlayabildiği ve bütün bu işlemleri tutarlı ve bütünlük içinde saklayabildiği, aynı zamanda birden fazla
kullanıcıya aynı anda bilgiye erişim imkanı tanıyan sistemdir.
Oracle Server Bağlantısı
3 farklı şekilde bağlantı:
1. İşletim sisteminin komut istemcisi
2. Uygulama (SQL Developer vb.)
3. Web tarayıcı
Kullanıcı SQL Plus gibi veritabanına bağlantı kurmak için kullanılan bir uygulama ile istemci makinede
kullanıcı işlemi (user process) başlatılır. Kullanıcı adını, şifresini ve ulaşmak istediği veritabanının ismini
girerek Oracle sunucusuna bağlanır ve o anda sunucu makinede sunucu işlemi
(server process) oluşturulur. Eğer Dedicated Server yerine Shared Server yapısı kullanılıyorsa her
kullanıcı işlemi için ayrı bir sunucu işlemi oluşturulmaz. Her oturum yönlendirici tarafından paylaşımlı
sunucu işlem havuzuna yönlendirilerek, kullanıcı işleminin faaliyette olan bir sunucu işlemi ile
ilişkilendirilmesi sağlanır. Kullanıcı işlemi isteklerini sunucu işlemine iletir. Sunucu işlemi istekleri yerine
getirir ve sonucunu kullanıcı işlemine verir. Kullanıcı bağlantıyı kestiğinde sunucu ve kullanıcı işlemleri
bitirilir.
Oracle sunucusunda sunucu işlemi dışında, disk I/O işlemleri gibi arkaplan işlemlerini gerçekleştirilir.
Bunlar kullanıcı işlemi ile doğrudan ilişkili değildir. Belirli zaman aralıklarında veya belirli koşulların
sağlanması durumunda çalışırlar. Her çalışan Oracle veritabanı bir instance ile
ilişkilendirilir. ORACLE_SID parametresi ile işletim sistemine tanıtılan instance, belirli bir zamanda
sadece bir veritabanını açıp kullanabilir.
Oracle Veritabanı Mimarisi
Instance iki işlemden oluşur. Bunlar: Memory ve Background’dur. Oracle 1 veya 1’den çok instance’tan
oluşabilir.
Veritabanı Bağlantısı
İlk olarak uygulama aracılığıyla bağlantı, diğeri ise sunucuya doğrudan bağlantı şeklindedir. Uygulama
aracılığı ile bağlantı: bir banka ATM ile bağlanırken ATM uygulama sunucusuna bağlanır ve o sunucuda
ana sunucuya bağlar. Temelde uygulama sunucusu tek bir kullanıcı ile ana sunucuyla bağlantı
kurmaktadır ancak biz farklı kullanıcılar ile uygulama sunucusuna bağlanırız. Bağlantı hakları uygulama
sunucusu ile belirlenir. Doğrudan bağlantı ise geliştirici ya da yöneticilerin bağlantı şeklidir.
Instance
Oracle’ın çalışmasını sağlayan bileşendir. RAM üzerinde çalışır. Veri dosyalarına(Datafile) erişmemizi
sağlar. Ayrıca RAM üzerinde belirli alanları ayırarak kullanmamızı sağlar. Çeşitli Arkaplan
İşlemlerini (Background Process) kullanır ve böylece veritabanının çalışmasını sağlar.
Oracle Veritabanı Sunucu Yapısı 3 Gruba ayrılır.
1. Bellek Birimleri (SGA/PGA)
2. İşlem Birimleri (Background Process)
3. Depolama Birimleri (Physical Files)
Oracle Veritabanının Bellek Altyapısı
Oracle RAM üzerinde kullanmak için belirli bir alanı kendine ayırır. Bu alan iki kısımdan oluşur bunlar:
SGA(System Global Area) ve PGA(Program Global Area)’dır.
Oracle veritabanının yönetiminin sağlanmasında kullanılan işlemleri ve bellek yapılarını içermektedir.
Tüm bellek yapıları veritabanının oluşturulduğu bilgisayarın RAM’inde yer almaktadır. Bu bilgi çoklu
kullanıcının aynı anda veritabanına bağlanıp işlemlerini gerçekleştirmesinin nasıl olduğunu anlamak
açısından önemlidir. Oracle işlemlerini gerçekleştirmek için bellek yapıları oluşturur ve kullanır. Bir
Oracle veritabanında 2 adet bellek yapısı yönetilmektedir. Bu belleklerinde kendi içerisinde bileşenlere
ayrılır. Bileşenlerin her biri farklı amaçlara hizmet etmektedir. Bütün verilerin bulunduğu alan disklerdir.
Buna depolama alanı(storage area) denir.
Makinemize bulunan RAM’den Oracle servislerini açtığımızda, bir kısmı veritabanımız için adreslenir. Bu
adreslenen bellek Oracle 11g veritabanında MEMORY_TARGET parametresi ve üst sınırı da
MEMORY_MAX_TARGET parametresi ile kontrol edilir.
Memory iki parçadan oluşur:
1. SGA: System Global Area (Bellek içinde)
2. PGA: Program Global Area (Bellek dışında)
System Global Area (SGA) :
SGA, RAM üzerinde ayrılmış belleğin içerisinde kendisine ayırdığı alandır. Başka bir deyişle SGA bir
Oracle instance için, veri ve kontrol bilgilerinin tutulduğu, bütün sunucu ve işlemler tarafından
kullanılan paylaşımlı bellek alanıdır.
SGA Bileşenleri
1. Veritabanı Tampon Belleği (Database Buffer Cache)
Temel olarak tanımlamak gerekirse, veritabanından sorgu ile çekilen verilerin tutulduğu ya da
saklandığı alandır. Tüm kullanıcılar tarafından ortak olarak kullanılır. Kullanıcılar oturum
açtıklarında, INSERT, UPDATE, DELETE vb. işlemleri yaptıkları zaman, yapılan değişiklikler doğrudan
veritabanı üzerine yazılmaz. Yapılan tüm o değişiklikler buffer cache üzerinde tutulur.
Bir SELECT işleminde veritabanı ilk olarak veritabanı buffer cache’e bakarak işlemi veritabanına buffer
cache’den döndürür. Eğer bu alan boş ise o zaman sorguyla ilgili olan
tabloları datafile’den buffer cache’e kopyalayarak sorgu sonucunu geriye döndürür. Bu işlem
sırasında datafile üzerinde sorguyla ilgili kaç tablo varsa hepsi kopyalanacaktır. Bu sırada disk yazma ve
okuma hızlarına bağlı olarak performans kaybı olabilir. Ayrıca hiçbir veritabanı satır bazında taşıma
yapmaz.
Bu şekilde Oracle verilere erişimi hızlı bir hale getirmiştir. Çünkü disklerin belirli bir okuma/yazma hızı
vardır. Okuma/Yazma hızları sorguların geriye döndürme süresi açısından önemlidir. Belleğinde bir
kapasitesi var ve kapasitesi dolduğu an veritabanı kullanım sıklığına göre verileri ayrıştırır ve en az
kullanılanlardan silmeye başlar. Yeni veriler eklendiğinde eski veriler bir COMMIT ya
da ROLLBACK yapılana kadar undo tablespace’e gönderir.
Buffer cache içerisinde segmentler(tablo ve indeksler) bulunur. Önemli nokta mümkün olduğunca
indeks ve tabloları bellekte tutmak gerekir. Yapılan işlemleri kalıcı hale getirmek
için COMMIT komutunu kullanırız. Ancak COMMIT komutunun kullanılması verilerin diske yazılacağı
anlamına gelmez. COMMIT komutu kullanılan veriler Log Buffer’a yazılır.
2. Hazır Log Tamponu (Redo Log Buffer)
Instance'da bir sorun olduğunda recovery işlemi için gerekli olan bilgiler burada saklanır. Belirli bir süre
sonra fiziksel olarak diskte saklanmak için redo log dosyalarına yazılır. Ayrıca DML ve DDL işlemleri de
diske yazılmadan önce burada tutulur.
Veriler çok sık aralıklarla burada işlem görürler (I/O yaparlar). bu alana yazılan veriler bir tabloda
değiştirilen bir satırın tamamı değildir. Sadece değişim verisi log belleğine yazılır. Bunun bir başka
ifadesi, bir tablodaki satırlardan birinin veya bazılarını UPDATE ile güncellediğimiz zaman, sadece yeni
verinin Redo Log Buffer’ a yazacak olmasıdır. Eski veriler ise UNDO tablolarına yazılır
ve ROLLBACK komutu çalışırsa UNDO tablolarından geriye yani eski haline döner.
COMMIT komutunun çalıştırılmasından sonra LGWR arkaplan işlemi devreye girer ve tampondaki bu
değişikliği Online Redo Log dosyasına yazar. Böylece veritabanında gerçekleştirilmiş olan değişiklikler
kalıcı olmuş olur.
3. Paylaşım Havuzu (Shared Pool)
Veritabanı kullanıcıları tarafından paylaşılan çeşitli yapıların tutulduğu alandır. Data dictionary, SQL
sorgu sonuçları, PL/SQL blok sonuçları, paralel çalışan işlemler için gerekli olan bellek paylaşım
havuzu içinde barındırılır. Kendi içinde alt bileşenlere ayrılır.
Kütüphane Tamponu (Library Cache)
Veritabanı bir sorguyu getirmek için birden çok metot üretir. En kısa sürede ve en az güç tüketimi
hangi metot ile gerçekleşecek ise onu seçer. Seçtiği metodu da Library Cache içindeki Shared SQL
Area’nın içine atar. Library Cache içinde kullanıcıların yazmış oldukları SQL ve PL/SQL
kodlarının execution planları saklanır. Alternatifler çoğaldığında yani tablo yapısıyla alakalı bir değişiklik
olduğunda execution planları yeniden yapılandırılıp Library Cache’in içinde yeniden planlanır.
Veri Sözlük Tamponu (Data Dictionary Cache)
En son erişilen, eriştiğimiz tanımlamaların bellek alanıdır. Oracle bir nesneye erişirken tanımlamaya
ihtiyaç duyar ve bu tanımlama Data Dictionary Cache’te tutulur. Data Dictionary
Cache veritabanının metadata’sını tutar. Kullanıcıların yetki ve bağlantı bilgilerinin kontrolleri buradan
sağlanır. Nesne bilgileri ve nesnelere erişim bilgileri burada tutulur.
4. Large Pool (İsteğe Bağlı)
Geniş bellek alanı gerektiren durumlarda(backup ve recovery vb.) kullanılabilir. Backup ve Recovery gibi
işlemler için Large Pool da alan ayrılmaz ise bu işlemleri Shared Pool üzerinden gerçekleştirecektir.
Paralel işlemlerde Large Pool daha çok öneme sahiptir.
5. Java Pool
JVM (Java Virtual Machine)’deki verilerin ya da oturumların ait java kodlarının tutulduğu alandır.
6. Streams Pool
Bu yapı çok kullanılmamasına rağmen replikasyon için kullanılır. Streams Pool yerine data guard gibi
yapılar daha çok kullanılıyor. Uzak lokasyonlar arasında iletişimi sağlar.
7. Keep Buffer Pool (İsteğe Bağlı)
Veritabanının buffer cache’inden tamamen ayrı bir alandır. Buffer cache dolduğunda en az kullanılan
veri buffer cache'de tutulmaz. Belirlenen sık kullanılan verileri keep buffer pool alanına aktararak uzun
süre tutulması sağlanabilir.
8. Recycle Buffer Pool (İsteğe Bağlı)
Daha az kullanılan verileri recycle buffer alanında saklanmasını sağlanabilir.
9. nK Buffer Cache
Veritabanlarında genellikle 8 KB’lık bloklar kullanılır. Ancak bazı özel tablespace’leri için başka blok
boyutu belirlemek gerekebilir ve bu amaçla nK buffer cache alanı kullanılır.
PGA (Program Global Area)
Kullanıcıların yapmış olduğu SQL sorgularının sonuçları private area üzerinde saklanır. Oracle
veritabanının bu bölgede kullandığı alan ise PGA (Program Global Area) olarak adlandırılır. PGA için
ayrılacak belleği hesaplamak için kullanıcı sayısını 40 MB ile çarpmak yeterli olacaktır. PGA’nın
kullandığı bazı işlemler vardır.
Oracle PGA İşlem Yapısı Simülasyonu
Kullanıcı İşlemi (User Process)
Oracle veritabanına bir uygulama ile bağlanıldığı anda kullanıcı tarafında açılan işlemin kendisidir.
Veritabanı İşlemi (Database Process)
Oracle tarafından oluşturulan bağlantıdır. Bu işlemlerin bir kısmı arkaplan işlemleri(background
process) bir kısmı da sunucu işlemidir.
Sunucu İşlemi (Server Process)
Kullanıcı Oracle’a bağlanarak bir işlem yaptığında ya da tablolardan veri okumaya çalıştığında ya da
çalıştırdığı programdan geriye sonuç döndürmek istediğinde oluşan işlemlerdir. Belleğin son
kısmıdır. PGA alanına ayrılan bellek yetmediğinde sıralama ya da verinin düzenlenme işlemi veritabanı
tarafında depolama alanında bulunan Temp File’da yapılır.
Diğer taraftan veritabanı çalışma güvenliği, performansı, çoklu kullanıcı desteği vb. gibi Oracle özelliğini
kullanabilmemiz için arkaplan işlemleri vardır.
Arkaplan İşlemleri (Background Process)
Oracle açıldığı andan kapatıldığı zamana kadar geçen süre içerisinde bir takım işlemler veritabanının
işlevlerini yapmasını sağlamaktadır. Bu işlemler SGA ve PGA bellek yapılarıyla bir araya gelerek Oracle
veritabanı instance olarak bilinen yapıyı oluşturmaktadır. Oracle 11g veritabanı açık ve çalışır haldeyken
arka planda mutlaka işlemler çalışıyor olacaktır.
Database Writer Process (DBWn):
Veritabanında buffer cache içeriğini diske yazan işlemdir. DBWn UPDATE, INSERT, DELETE vb.
işlemlerinde değişiklik olan alanları alıp ilgili veritabanının alanlarına yazar. Ancak bu yazma
işlemi buffer cache içerisindeki veriler düzenledikten sonra belirli bir sıra ile gerçekleşir. Ayrıca
kullanılan yazılım ne kadar hızlı olursa olsun, yapılan değişiklikler, verilerin saklanmakta
olduğu datafile dosyalarına anında işlenmezler.
Yazma işlemi sırasıyla SGA içerisinde yer alan Log Buffer alanına ve ardından LGWR işlemiyle Online
Redo Log dosyalarına yazılır. Daha sonra DBWn işlemi değişmiş olan veriyi son haliyle datafile
dosyalarına yazar. Buffer Cache alanında tablolardan okunup kopyalandıkları haliyle bulunan veri
blokları Clean Blocks olarak adlandırılır. Eğer bir tablodaki verilerde değişiklik meydana gelirse, buffer
bellekte ilgili tablodaki verilere ait bloklar 'Dirty' hale gelir. Dirty blokların belirli aralıklarla fiziksel disk
üzerindeki datafile dosyalarına yazılarak Clean hale getirilmesi DBWn işleminin görevidir. DBWn
işleminin sonundaki 'n' harfi, birden çok Database Writer işleminin aynı anda çalışabildiği içindir.
DBWn İşlem Simülasyonu
Log Writer Process (LGWR):
Redo Log Buffer’daki verileri Redo Log File’lara yazma işlemini yapar. Veriyi değil sadece log bilgileri
yazılır. LGWR 3 dosyadan oluşur, bir dosya dolduktan sonra diğerine yazmaya devam eder. 3 dosya da
dolduğunda tekrar ilk dosyanın üzerine yazmaya başlar. Yazma işlemlerini COMMIT yapıldıktan
sonra, Redo Log Buffer’lardan biri dolduğunda, DBWn işlemi çalışmadan önce yapar.
LGWR İşlem Simülasyonu
Checkpoint Process (CKPT):
Veritabanındaki tutarlılığın bir göstergesi olan işlemdir. Checkpoint bir tür sistem değiştirme
numaralarını saklayan veri birimleridir. Kontrol ve veri dosyalarına yazılır. Sistem bir checkpoint
oluşturduğunda kontrol dosyalarının içeriğini ve veri dosyalarının başlıklarını güncelleme
işlemini Checkpoint işlemi üstlenir. Diske yazım işlemi yapmaz. Recovery için kritik öneme sahiptir.
System Monitor Process (SMON):
Kullanılmayan geçici segmentleri temizleme işi yapar. Tutarsızlığı önler ve recovery gerekirse yapar.
Eğer gerekirse instance başlaması sırasında başka bir işlemin çalışması gibi işlemler SMON tarafından
gerçekleştirilir. Oracle 11g başlatılırken SMON işlemi devreye girer, açılış sırasında öncelikle instance
başlatılır. Oracle veritabanı açılışında oluşan bu ilk duruma NOMOUNT modu adı verilir. Sonrasında
veritabanına ait kontrol dosyasına erişir ve buradaki bilgileri geçerli olup olmadığını denetler. Kontrol
dosyası başarılı ise MOUNT moduna geçer. Sonrasında bütün datafile’ları denetler. Redo
Log dosyalarının konum ve içeriklerini denetler. Sonrasında OPEN moduna geçer ve hizmete başlar.
Process Monitor Process (PMON):
Kullanıcı oturum açtığında, kullanıcı ve sunucu işlemiyle bağlantı kuracaktır. Kullanıcı eğer kullandığı
programı çıkış komutunu ya da SQL Developer’da dosya ve çıkış alanını kullanarak yaptıysa oturum
sona erecektir. İstek dışı bir çıkma olursa işte burada PMON devreye girer. PMON tüm kullanıcı
oturumlarını denetler ve askıda kalan bir oturum fark ettiğinde o oturuma gider ve sunucu
işlemini bitirir. Eğer ki INSERT, UPDATE, DELETE vb. DML sorguları yazılmış
fakat COMMIT edilmemişse, PMON COMMIT edilmemiş bütün DML işlemlerini ROLLBACK edecektir.
Bütün bu süreç sonunda askıda kalan oturum kapatılır. ROLLBACK gereken durumlarda yapar
ve PGA belleği boşaltılır. Ayrıca RDBMS'lerin tümü COMMIT işlemi yapılmış veriler için kayıp
yaşanmayacağını garanti eder.
PMON İşlem Simülasyonu
Recover Process (RECO):
Dağınık bir veritabanı yapısı var ise bu yapı ile birlikte çalışır ve riskli transactionların çözümlemesini
yapar. Sonrasında ise bu transactionlara uygun kayıtları siler.
Archiver Process (ARCn):
Veritabanında yapılan INSERT, UPDATE ve DELETE vb. işlemler ile yapılan değişiklikler
anında datafile’lere yazılmaz. DML komutları ile yapılan değişiklikler ilk olarak SGA içindeki Log Buffer
Cache’e kaydedilirler. Sonrasında diskteki Online Redo Log dosyalarına yazılırlar.
Online Redo Log dosyalarının yedeklenemeyeceğini, ancak birçok farklı bir yerde çoğaltılarak garantiye
alınabilir.
Redo Log dosyaları 3 adettir. Varsayılan olarak %ORACLE_BASE%/Oradata klasörü altında
saklanır. LGWR işlemi ile SGA altındaki Log Buffer’da yer alan veriler ilk Redo Log dosyasından yazmaya
başlar ve son dosya dolduğunda ki dosya boyutları varsayılan olarak 50 MB’dir, ilk dosyanın üzerine
yazmaya başlar. Bu da ilk dosyadaki verilerin silinmesi anlamına gelir. Yazma işlemi ilk dosyaya
geçmeden yedeklenmesi gerekmektedir. Online Redo Log yazma işlemleri bittiği an yedeği bir başka
konuma kopyalanır ve bu işleme Archiving (Arşivleme) denir. Bu yedeklenen dosyalar
artık Archivelog olarak adlandırılır. Ancak bu işlemlerin yani yedeklemelerin olabilmesi için Oracle
11g’nin ARCHIVELOG modunda çalışması gerekmektedir.
Arşivleme işlemini gerçekleştiren işlem Archiver Process (ARCn)’dir. ARCn aynı anda 9 tane arşivleme
işlemi gerçekleşebilir.
ARCn İşlem Simülasyonu
Process Startup Sequence
Veritabanının Windows ortamında çalışmasıyla, Linux ortamında çalışması arasında birçok fark vardır.
Oracle 11g R2’ ye kadar Linux de işletim sistemini başlattığımızda bazı önemli servisleri otomatik
olarak başlatılmazdı(ASM instance, Listener, DB Instance vb.). Bu servisleri manuel olarak başlatmamız
gerekirdi.

Oracle database architecture

  • 1.
    Oracle Database Architecture DatabaseInstance Oracle Relational Database Management System (RDBMS) İlişkilendirilmiş Veritabanı Yönetim Sistemi büyük miktardaki verilerin saklanabildiği,verilerin güvenliğinin sağlanabildiği, veriye hızlı erişimi sağlayabildiği ve bütün bu işlemleri tutarlı ve bütünlük içinde saklayabildiği, aynı zamanda birden fazla kullanıcıya aynı anda bilgiye erişim imkanı tanıyan sistemdir. Oracle Server Bağlantısı 3 farklı şekilde bağlantı: 1. İşletim sisteminin komut istemcisi 2. Uygulama (SQL Developer vb.) 3. Web tarayıcı Kullanıcı SQL Plus gibi veritabanına bağlantı kurmak için kullanılan bir uygulama ile istemci makinede kullanıcı işlemi (user process) başlatılır. Kullanıcı adını, şifresini ve ulaşmak istediği veritabanının ismini girerek Oracle sunucusuna bağlanır ve o anda sunucu makinede sunucu işlemi (server process) oluşturulur. Eğer Dedicated Server yerine Shared Server yapısı kullanılıyorsa her kullanıcı işlemi için ayrı bir sunucu işlemi oluşturulmaz. Her oturum yönlendirici tarafından paylaşımlı sunucu işlem havuzuna yönlendirilerek, kullanıcı işleminin faaliyette olan bir sunucu işlemi ile ilişkilendirilmesi sağlanır. Kullanıcı işlemi isteklerini sunucu işlemine iletir. Sunucu işlemi istekleri yerine getirir ve sonucunu kullanıcı işlemine verir. Kullanıcı bağlantıyı kestiğinde sunucu ve kullanıcı işlemleri bitirilir. Oracle sunucusunda sunucu işlemi dışında, disk I/O işlemleri gibi arkaplan işlemlerini gerçekleştirilir. Bunlar kullanıcı işlemi ile doğrudan ilişkili değildir. Belirli zaman aralıklarında veya belirli koşulların sağlanması durumunda çalışırlar. Her çalışan Oracle veritabanı bir instance ile ilişkilendirilir. ORACLE_SID parametresi ile işletim sistemine tanıtılan instance, belirli bir zamanda sadece bir veritabanını açıp kullanabilir. Oracle Veritabanı Mimarisi Instance iki işlemden oluşur. Bunlar: Memory ve Background’dur. Oracle 1 veya 1’den çok instance’tan oluşabilir.
  • 3.
    Veritabanı Bağlantısı İlk olarakuygulama aracılığıyla bağlantı, diğeri ise sunucuya doğrudan bağlantı şeklindedir. Uygulama aracılığı ile bağlantı: bir banka ATM ile bağlanırken ATM uygulama sunucusuna bağlanır ve o sunucuda ana sunucuya bağlar. Temelde uygulama sunucusu tek bir kullanıcı ile ana sunucuyla bağlantı kurmaktadır ancak biz farklı kullanıcılar ile uygulama sunucusuna bağlanırız. Bağlantı hakları uygulama sunucusu ile belirlenir. Doğrudan bağlantı ise geliştirici ya da yöneticilerin bağlantı şeklidir. Instance Oracle’ın çalışmasını sağlayan bileşendir. RAM üzerinde çalışır. Veri dosyalarına(Datafile) erişmemizi sağlar. Ayrıca RAM üzerinde belirli alanları ayırarak kullanmamızı sağlar. Çeşitli Arkaplan İşlemlerini (Background Process) kullanır ve böylece veritabanının çalışmasını sağlar.
  • 4.
    Oracle Veritabanı SunucuYapısı 3 Gruba ayrılır. 1. Bellek Birimleri (SGA/PGA) 2. İşlem Birimleri (Background Process) 3. Depolama Birimleri (Physical Files) Oracle Veritabanının Bellek Altyapısı Oracle RAM üzerinde kullanmak için belirli bir alanı kendine ayırır. Bu alan iki kısımdan oluşur bunlar: SGA(System Global Area) ve PGA(Program Global Area)’dır. Oracle veritabanının yönetiminin sağlanmasında kullanılan işlemleri ve bellek yapılarını içermektedir. Tüm bellek yapıları veritabanının oluşturulduğu bilgisayarın RAM’inde yer almaktadır. Bu bilgi çoklu kullanıcının aynı anda veritabanına bağlanıp işlemlerini gerçekleştirmesinin nasıl olduğunu anlamak açısından önemlidir. Oracle işlemlerini gerçekleştirmek için bellek yapıları oluşturur ve kullanır. Bir Oracle veritabanında 2 adet bellek yapısı yönetilmektedir. Bu belleklerinde kendi içerisinde bileşenlere ayrılır. Bileşenlerin her biri farklı amaçlara hizmet etmektedir. Bütün verilerin bulunduğu alan disklerdir. Buna depolama alanı(storage area) denir. Makinemize bulunan RAM’den Oracle servislerini açtığımızda, bir kısmı veritabanımız için adreslenir. Bu adreslenen bellek Oracle 11g veritabanında MEMORY_TARGET parametresi ve üst sınırı da MEMORY_MAX_TARGET parametresi ile kontrol edilir. Memory iki parçadan oluşur: 1. SGA: System Global Area (Bellek içinde) 2. PGA: Program Global Area (Bellek dışında) System Global Area (SGA) :
  • 5.
    SGA, RAM üzerindeayrılmış belleğin içerisinde kendisine ayırdığı alandır. Başka bir deyişle SGA bir Oracle instance için, veri ve kontrol bilgilerinin tutulduğu, bütün sunucu ve işlemler tarafından kullanılan paylaşımlı bellek alanıdır. SGA Bileşenleri 1. Veritabanı Tampon Belleği (Database Buffer Cache) Temel olarak tanımlamak gerekirse, veritabanından sorgu ile çekilen verilerin tutulduğu ya da saklandığı alandır. Tüm kullanıcılar tarafından ortak olarak kullanılır. Kullanıcılar oturum açtıklarında, INSERT, UPDATE, DELETE vb. işlemleri yaptıkları zaman, yapılan değişiklikler doğrudan veritabanı üzerine yazılmaz. Yapılan tüm o değişiklikler buffer cache üzerinde tutulur. Bir SELECT işleminde veritabanı ilk olarak veritabanı buffer cache’e bakarak işlemi veritabanına buffer cache’den döndürür. Eğer bu alan boş ise o zaman sorguyla ilgili olan tabloları datafile’den buffer cache’e kopyalayarak sorgu sonucunu geriye döndürür. Bu işlem sırasında datafile üzerinde sorguyla ilgili kaç tablo varsa hepsi kopyalanacaktır. Bu sırada disk yazma ve okuma hızlarına bağlı olarak performans kaybı olabilir. Ayrıca hiçbir veritabanı satır bazında taşıma yapmaz. Bu şekilde Oracle verilere erişimi hızlı bir hale getirmiştir. Çünkü disklerin belirli bir okuma/yazma hızı vardır. Okuma/Yazma hızları sorguların geriye döndürme süresi açısından önemlidir. Belleğinde bir kapasitesi var ve kapasitesi dolduğu an veritabanı kullanım sıklığına göre verileri ayrıştırır ve en az kullanılanlardan silmeye başlar. Yeni veriler eklendiğinde eski veriler bir COMMIT ya da ROLLBACK yapılana kadar undo tablespace’e gönderir. Buffer cache içerisinde segmentler(tablo ve indeksler) bulunur. Önemli nokta mümkün olduğunca indeks ve tabloları bellekte tutmak gerekir. Yapılan işlemleri kalıcı hale getirmek için COMMIT komutunu kullanırız. Ancak COMMIT komutunun kullanılması verilerin diske yazılacağı anlamına gelmez. COMMIT komutu kullanılan veriler Log Buffer’a yazılır. 2. Hazır Log Tamponu (Redo Log Buffer) Instance'da bir sorun olduğunda recovery işlemi için gerekli olan bilgiler burada saklanır. Belirli bir süre sonra fiziksel olarak diskte saklanmak için redo log dosyalarına yazılır. Ayrıca DML ve DDL işlemleri de diske yazılmadan önce burada tutulur. Veriler çok sık aralıklarla burada işlem görürler (I/O yaparlar). bu alana yazılan veriler bir tabloda değiştirilen bir satırın tamamı değildir. Sadece değişim verisi log belleğine yazılır. Bunun bir başka ifadesi, bir tablodaki satırlardan birinin veya bazılarını UPDATE ile güncellediğimiz zaman, sadece yeni verinin Redo Log Buffer’ a yazacak olmasıdır. Eski veriler ise UNDO tablolarına yazılır ve ROLLBACK komutu çalışırsa UNDO tablolarından geriye yani eski haline döner. COMMIT komutunun çalıştırılmasından sonra LGWR arkaplan işlemi devreye girer ve tampondaki bu değişikliği Online Redo Log dosyasına yazar. Böylece veritabanında gerçekleştirilmiş olan değişiklikler kalıcı olmuş olur. 3. Paylaşım Havuzu (Shared Pool) Veritabanı kullanıcıları tarafından paylaşılan çeşitli yapıların tutulduğu alandır. Data dictionary, SQL sorgu sonuçları, PL/SQL blok sonuçları, paralel çalışan işlemler için gerekli olan bellek paylaşım havuzu içinde barındırılır. Kendi içinde alt bileşenlere ayrılır. Kütüphane Tamponu (Library Cache) Veritabanı bir sorguyu getirmek için birden çok metot üretir. En kısa sürede ve en az güç tüketimi hangi metot ile gerçekleşecek ise onu seçer. Seçtiği metodu da Library Cache içindeki Shared SQL Area’nın içine atar. Library Cache içinde kullanıcıların yazmış oldukları SQL ve PL/SQL kodlarının execution planları saklanır. Alternatifler çoğaldığında yani tablo yapısıyla alakalı bir değişiklik olduğunda execution planları yeniden yapılandırılıp Library Cache’in içinde yeniden planlanır. Veri Sözlük Tamponu (Data Dictionary Cache)
  • 6.
    En son erişilen,eriştiğimiz tanımlamaların bellek alanıdır. Oracle bir nesneye erişirken tanımlamaya ihtiyaç duyar ve bu tanımlama Data Dictionary Cache’te tutulur. Data Dictionary Cache veritabanının metadata’sını tutar. Kullanıcıların yetki ve bağlantı bilgilerinin kontrolleri buradan sağlanır. Nesne bilgileri ve nesnelere erişim bilgileri burada tutulur. 4. Large Pool (İsteğe Bağlı) Geniş bellek alanı gerektiren durumlarda(backup ve recovery vb.) kullanılabilir. Backup ve Recovery gibi işlemler için Large Pool da alan ayrılmaz ise bu işlemleri Shared Pool üzerinden gerçekleştirecektir. Paralel işlemlerde Large Pool daha çok öneme sahiptir. 5. Java Pool JVM (Java Virtual Machine)’deki verilerin ya da oturumların ait java kodlarının tutulduğu alandır. 6. Streams Pool Bu yapı çok kullanılmamasına rağmen replikasyon için kullanılır. Streams Pool yerine data guard gibi yapılar daha çok kullanılıyor. Uzak lokasyonlar arasında iletişimi sağlar. 7. Keep Buffer Pool (İsteğe Bağlı) Veritabanının buffer cache’inden tamamen ayrı bir alandır. Buffer cache dolduğunda en az kullanılan veri buffer cache'de tutulmaz. Belirlenen sık kullanılan verileri keep buffer pool alanına aktararak uzun süre tutulması sağlanabilir. 8. Recycle Buffer Pool (İsteğe Bağlı) Daha az kullanılan verileri recycle buffer alanında saklanmasını sağlanabilir. 9. nK Buffer Cache Veritabanlarında genellikle 8 KB’lık bloklar kullanılır. Ancak bazı özel tablespace’leri için başka blok boyutu belirlemek gerekebilir ve bu amaçla nK buffer cache alanı kullanılır. PGA (Program Global Area) Kullanıcıların yapmış olduğu SQL sorgularının sonuçları private area üzerinde saklanır. Oracle veritabanının bu bölgede kullandığı alan ise PGA (Program Global Area) olarak adlandırılır. PGA için ayrılacak belleği hesaplamak için kullanıcı sayısını 40 MB ile çarpmak yeterli olacaktır. PGA’nın kullandığı bazı işlemler vardır. Oracle PGA İşlem Yapısı Simülasyonu
  • 7.
    Kullanıcı İşlemi (UserProcess) Oracle veritabanına bir uygulama ile bağlanıldığı anda kullanıcı tarafında açılan işlemin kendisidir. Veritabanı İşlemi (Database Process) Oracle tarafından oluşturulan bağlantıdır. Bu işlemlerin bir kısmı arkaplan işlemleri(background process) bir kısmı da sunucu işlemidir. Sunucu İşlemi (Server Process) Kullanıcı Oracle’a bağlanarak bir işlem yaptığında ya da tablolardan veri okumaya çalıştığında ya da çalıştırdığı programdan geriye sonuç döndürmek istediğinde oluşan işlemlerdir. Belleğin son kısmıdır. PGA alanına ayrılan bellek yetmediğinde sıralama ya da verinin düzenlenme işlemi veritabanı tarafında depolama alanında bulunan Temp File’da yapılır. Diğer taraftan veritabanı çalışma güvenliği, performansı, çoklu kullanıcı desteği vb. gibi Oracle özelliğini kullanabilmemiz için arkaplan işlemleri vardır. Arkaplan İşlemleri (Background Process) Oracle açıldığı andan kapatıldığı zamana kadar geçen süre içerisinde bir takım işlemler veritabanının işlevlerini yapmasını sağlamaktadır. Bu işlemler SGA ve PGA bellek yapılarıyla bir araya gelerek Oracle veritabanı instance olarak bilinen yapıyı oluşturmaktadır. Oracle 11g veritabanı açık ve çalışır haldeyken arka planda mutlaka işlemler çalışıyor olacaktır. Database Writer Process (DBWn): Veritabanında buffer cache içeriğini diske yazan işlemdir. DBWn UPDATE, INSERT, DELETE vb. işlemlerinde değişiklik olan alanları alıp ilgili veritabanının alanlarına yazar. Ancak bu yazma işlemi buffer cache içerisindeki veriler düzenledikten sonra belirli bir sıra ile gerçekleşir. Ayrıca kullanılan yazılım ne kadar hızlı olursa olsun, yapılan değişiklikler, verilerin saklanmakta olduğu datafile dosyalarına anında işlenmezler. Yazma işlemi sırasıyla SGA içerisinde yer alan Log Buffer alanına ve ardından LGWR işlemiyle Online Redo Log dosyalarına yazılır. Daha sonra DBWn işlemi değişmiş olan veriyi son haliyle datafile dosyalarına yazar. Buffer Cache alanında tablolardan okunup kopyalandıkları haliyle bulunan veri blokları Clean Blocks olarak adlandırılır. Eğer bir tablodaki verilerde değişiklik meydana gelirse, buffer bellekte ilgili tablodaki verilere ait bloklar 'Dirty' hale gelir. Dirty blokların belirli aralıklarla fiziksel disk üzerindeki datafile dosyalarına yazılarak Clean hale getirilmesi DBWn işleminin görevidir. DBWn işleminin sonundaki 'n' harfi, birden çok Database Writer işleminin aynı anda çalışabildiği içindir.
  • 8.
    DBWn İşlem Simülasyonu LogWriter Process (LGWR): Redo Log Buffer’daki verileri Redo Log File’lara yazma işlemini yapar. Veriyi değil sadece log bilgileri yazılır. LGWR 3 dosyadan oluşur, bir dosya dolduktan sonra diğerine yazmaya devam eder. 3 dosya da dolduğunda tekrar ilk dosyanın üzerine yazmaya başlar. Yazma işlemlerini COMMIT yapıldıktan sonra, Redo Log Buffer’lardan biri dolduğunda, DBWn işlemi çalışmadan önce yapar. LGWR İşlem Simülasyonu Checkpoint Process (CKPT): Veritabanındaki tutarlılığın bir göstergesi olan işlemdir. Checkpoint bir tür sistem değiştirme numaralarını saklayan veri birimleridir. Kontrol ve veri dosyalarına yazılır. Sistem bir checkpoint oluşturduğunda kontrol dosyalarının içeriğini ve veri dosyalarının başlıklarını güncelleme işlemini Checkpoint işlemi üstlenir. Diske yazım işlemi yapmaz. Recovery için kritik öneme sahiptir. System Monitor Process (SMON): Kullanılmayan geçici segmentleri temizleme işi yapar. Tutarsızlığı önler ve recovery gerekirse yapar. Eğer gerekirse instance başlaması sırasında başka bir işlemin çalışması gibi işlemler SMON tarafından gerçekleştirilir. Oracle 11g başlatılırken SMON işlemi devreye girer, açılış sırasında öncelikle instance başlatılır. Oracle veritabanı açılışında oluşan bu ilk duruma NOMOUNT modu adı verilir. Sonrasında veritabanına ait kontrol dosyasına erişir ve buradaki bilgileri geçerli olup olmadığını denetler. Kontrol dosyası başarılı ise MOUNT moduna geçer. Sonrasında bütün datafile’ları denetler. Redo Log dosyalarının konum ve içeriklerini denetler. Sonrasında OPEN moduna geçer ve hizmete başlar. Process Monitor Process (PMON): Kullanıcı oturum açtığında, kullanıcı ve sunucu işlemiyle bağlantı kuracaktır. Kullanıcı eğer kullandığı programı çıkış komutunu ya da SQL Developer’da dosya ve çıkış alanını kullanarak yaptıysa oturum sona erecektir. İstek dışı bir çıkma olursa işte burada PMON devreye girer. PMON tüm kullanıcı oturumlarını denetler ve askıda kalan bir oturum fark ettiğinde o oturuma gider ve sunucu işlemini bitirir. Eğer ki INSERT, UPDATE, DELETE vb. DML sorguları yazılmış fakat COMMIT edilmemişse, PMON COMMIT edilmemiş bütün DML işlemlerini ROLLBACK edecektir. Bütün bu süreç sonunda askıda kalan oturum kapatılır. ROLLBACK gereken durumlarda yapar ve PGA belleği boşaltılır. Ayrıca RDBMS'lerin tümü COMMIT işlemi yapılmış veriler için kayıp yaşanmayacağını garanti eder.
  • 9.
    PMON İşlem Simülasyonu RecoverProcess (RECO): Dağınık bir veritabanı yapısı var ise bu yapı ile birlikte çalışır ve riskli transactionların çözümlemesini yapar. Sonrasında ise bu transactionlara uygun kayıtları siler. Archiver Process (ARCn): Veritabanında yapılan INSERT, UPDATE ve DELETE vb. işlemler ile yapılan değişiklikler anında datafile’lere yazılmaz. DML komutları ile yapılan değişiklikler ilk olarak SGA içindeki Log Buffer Cache’e kaydedilirler. Sonrasında diskteki Online Redo Log dosyalarına yazılırlar. Online Redo Log dosyalarının yedeklenemeyeceğini, ancak birçok farklı bir yerde çoğaltılarak garantiye alınabilir. Redo Log dosyaları 3 adettir. Varsayılan olarak %ORACLE_BASE%/Oradata klasörü altında saklanır. LGWR işlemi ile SGA altındaki Log Buffer’da yer alan veriler ilk Redo Log dosyasından yazmaya başlar ve son dosya dolduğunda ki dosya boyutları varsayılan olarak 50 MB’dir, ilk dosyanın üzerine yazmaya başlar. Bu da ilk dosyadaki verilerin silinmesi anlamına gelir. Yazma işlemi ilk dosyaya geçmeden yedeklenmesi gerekmektedir. Online Redo Log yazma işlemleri bittiği an yedeği bir başka konuma kopyalanır ve bu işleme Archiving (Arşivleme) denir. Bu yedeklenen dosyalar artık Archivelog olarak adlandırılır. Ancak bu işlemlerin yani yedeklemelerin olabilmesi için Oracle 11g’nin ARCHIVELOG modunda çalışması gerekmektedir. Arşivleme işlemini gerçekleştiren işlem Archiver Process (ARCn)’dir. ARCn aynı anda 9 tane arşivleme işlemi gerçekleşebilir.
  • 10.
    ARCn İşlem Simülasyonu ProcessStartup Sequence Veritabanının Windows ortamında çalışmasıyla, Linux ortamında çalışması arasında birçok fark vardır. Oracle 11g R2’ ye kadar Linux de işletim sistemini başlattığımızda bazı önemli servisleri otomatik olarak başlatılmazdı(ASM instance, Listener, DB Instance vb.). Bu servisleri manuel olarak başlatmamız gerekirdi.