Sayfalar

3 Haziran 2012 Pazar

ORACLE DBMS Mimarisine Bir Bakış-2

Merhaba Arkadaşlar..
ORACLE'ın mimarisine değinirken kaldığımız konu başlığı olan Fiziksel Mimari'nin bellek birimleri kısmını incelemiştik. Bu konu altında SGA ve PGA nedir, hangi görevleri icra eder ve hangi alt fonksiyonlara sahiptir sorularına cevap bulduk. Şimdi de Proses Birimlerini öğrenelim...

1.2 Proses Birimleri
Konuya geçmeden önce prosesleri ve çeşitlerini tanımlayalım.
Proses: Belli bir işi gerçekleştiren programın çalışır hali olarak ifade edilir. Her bir işlem proses olabilmek için bellekten yer harcar. ORACLE'da 2 tür proses vardır;
1. Veritabanı Prosesleri: ORACLE tarafından oluşturulan proseslerdir. İki türlüdür;

    a. Server Processes (Sunucu Prosesleri): Veritabanına bağlanan bir kullanıcının isteklerine cevap vermek için oluşturulur. Örneğin kullanıcı SGA'da yer almayan bir bilgiyi çekmek istediğinde o bilginin SGA'ya gelmesini sağlayan bir proses başlamış olur. Kullanıcı bir SQL sorgusunu çalıştırdığında bazı veri bloklarından okuma yapılır veya kullanıcı uygulamaları bir takım sonuçlar döndürmek isterse server prosesleri oluşturulur.
    b. Background Processes (Arkaplan Prosesleri): Her veritabanı için özel olarak oluşturulur. Her veritabanı kendine ait backgorund proseslere sahiptir. ORACLE'da aynı anda pek çok kullanıcı aktif olur ve pek çok uygulamayı çalıştırır. Bu programlar da kullanıcıya ait işlemleri gerçekleştirirken arkaplan proseslere ihtiyaç duyarlar.Veritabanı performansı, güvenliği, çoklu kullanıcı desteği gibi yapısal özellikleri kullanmak için bu tip prosesler uygulanır. Bu proseslerin neler olduğunu belirtelim.

2. Kullanıcı Prosesleri: Kullanıcı veritabanına bağlandığında kullanıcı uygulamalarının çalışabilmesi için bu tip prosesler oluşturulur. ORACLE tarafından oluşturulur. Hazır olarak oluşturulmuş kullanıcı-program arayüzleri aracılığıyla sunucuya bağlantı gerçekleşir.

ORACLE mimarisinde background proseslerin yeri çok önemlidir. Bu proseslerin her birinin ne olduğuna ve neler yaptığına bir bakalım;

1.2.1. Background Prosesler ve Görevleri
Önceki yazımızdaki şekli yeniden hatırlayalım;

Burada proseslerin ne işe yaradığı aslında az çok belli. Fakat tüm prosesler burada yer almıyor. Zaten açıklayacağımızın dışında da ORACLE pek çok arkaplan prosesi barındırıyor. 
  • Database Writer Process-Veritabanı Yazıcısı (DBWn): Bu proses ön bellekteki değiştirilmiş verileri veri dosyalarına yazmakla görevlidir. Yani database buffer cache'de var olan veriler güncellendikçe bu işlemler diske yazılır. Birden fazla yazım işlemi gerektiği durumlarda bu DBW0, DBW1... gibi numaralandırarak prosesleri tanımlamak mümkündür. Bu tanımlama veritabanı çalışmadan önce gerçekleşir. Kullanıcı bir değişikliği COMMIT ettiğinde (onay) bu değişiklik hemen dikse uygulanamaz. Bu proses SGA'da çok az alan  kaldığında veya SGA'ya aktarılacak verinin boyutu çok fazla olduğunda aktive olur. 
  • Log Writer Process-Log Yazıcısı (LGWR): SGA'da bulunan Redo Log Buffer kısmındaki verileri diske yazan prosestir.Redo Log Buffer'da bulunan verileri aktif olarak kullanılan Redo Log Dosyası'na yazar. Redo Log Buffer'lardan birisi dolduğu anda, COMMIT komutu çalıştırıldığı anda ve DBWn prosesi çalışmaya başlamadan önce çalışır. Belirtmek gerekirse; bu işlem birden fazla Log Dosyası için uygulanabilir.
  • Check Point Process-Değişme Noktası(CKPT): DBWn'i tekrar hatırlayalım. Sistem değişen verileri diske yazıyordu. Bu aslında değişme noktasını oluşturan ilk aşamadır. Bu proses de (CKPT) DBWn'e değişme anında haber verir ve veritabanında bulunan bütün veri ve kontrol dosyalarını bu değişimden haberdar eder. Bunu sistem değişim numaralarını saklayarak yapar.
    Kontrol noktaları kontrol ve veri dosyalarında veri dosyası başlıklarına (data file header) yazılırlar. Kontrol noktaları kurtarma işlemleri için hayati değer taşımaktadır. CKPT prosesi diske yazma işlemi gerçekleştirmez. 
  • System Monitor Process-Sistem Analizi(SMON): Instance yani oturum başlatılırken oturumun kurtarılması gerekiyorsa bu proses devreye girer. Bunu kontrol dosyalarını kontrol ederek kurtarılacak her hangi bir işlem olup olmadığına bakarak yapar. Eğer böyle bir durum varsa geri alma işlemi başlar.  Eğer birden fazla veritabanı eşzamanlı aktifse, bu işlemi tüm kurtarılacak oturumlar için aynı anda yapar.
    Yine SMON  prosesi temp alanının temizlenmesini sağlar. Temp alanından kasıt kullanılmayan geçici verilerdir. Aynı zamanda SMON veritabanında alan sıkıntısının giderilmesine boş alanları birleştirerek katkı sağlamaktadır.
  • Process Monitor-İşlem Analizi(PMON): Kullanıcıya ait proses problemli olursa kurtarma işlemini PMON yapar. Data Base Buffer'da bulunan kurtarılacak prosese ait belleği ve kaynakları temizler. Ardından bu kaynakları tekrar aktif hale getirir. Askıda kalan oturumların (timeout error) izlenmesini ve veritabanı servislerini sorgulama işlerini de gerçekleştirir. Diğer deyişle sunucu işlemlerini kontrol eder ve kapandığı anda tekrar çalıştırır.
  • Archiver Process-Yedekleyici(ARCn): Redo Log Dosyalarını diske yazmakla görevlidir. Kullanılan Redo Log Dosyası dolduğu anda yedek depolama ünitelerine alınırlar. Burada DBWn'de olduğu gibi 1 adet yedekleyici gereken işi görebiliyor olsa da birden fazlası da desteklenmektedir. Zaten isimdeki "n" bu anlama gelmektedir. ARCn prosesi veritabanı ARCHIVELOG modundayken kullanılabilir durumdadır.
  • Recoverer-Geri Kurtarıcı(RECO): Bazen veritabanında sistem veya ağ hataları yüzünden beklemeler olabilir. Bu işlemleri RECO düzenler. Recoverer dağıtık veritabanı mimarilerinde kullanılabilir. Dağıtık veritabanı; bilgisayar ağı ile bağlı olan birbirinden bağımsız veritabanlarıdır.Yani sistemde birden fazla veritabanı mevcuttur. Bu gibi durumlarda RECO, başarısız olma ihtimali olan işlemlerde uzaktaki veritabanına bağlanır ve COMMIT/ROLLBACK işlemlerini uygular. Şüpheli işlemlere ait kayıtları temizler. 
  • Dispathcer (Dnnn): Opsiyonel yani isteğe bağlı bir prosestir. İletişim protokolleri için kullanılırlar. Her protokol en az bir Dispatcher'a sahiptir. Dnnn kullanıcı isteklerini server proseslerine yönlendirir ve dönen cevabı gereken kullanıcıya iletir.
  • Lock-Kilit(LCKO): Veritabanları arasında gereken kilitleme işlemlerini kontrol eder. Yani birden fazla veritabanı ile aktif olur.
  • Job Queue Coordinator-İş Kuyruğu(CJQn): Yine dağıtık veritabanı sistemlerde kullanılır. Anlık Görüntü Tablolarını (Snopshot) otomatik günceller.
  • Bunların dışında kullanılan Memory Monitor(MMON), MMON Lite(MMNL), Memory Manager(MMAN) gibi prosesler de mevcuttur. Fakat yukarıda açıklananlar en çok ihtiyaç duyulan ve bir DBA için vazgeçilmez olan bilinmesi gereken proseslerdir. 
Böylelikle 2. konu olan proses birimlerini de bitirmiş olduk. Bir sonraki içeriğimiz 1.3 Depolama Birimleri yani fiziksel dosyalar hakkında olacak. Bu dosyaları açıkladıktan sonra bir instance nasıl çalışır, hangi olaylar meydana gelir sorusuna cevap arayacağız.

İyi çalışmalar...


Hiç yorum yok:

Yorum Gönder