Web And Application Developer & Oracle DBA
Oracle
Oracle İşlemleri (Process)
26 Şub
Merhabalar,
Bir Oracle instance’ını yönetmek için birçok arkaplan işlemi bulunmaktadır (background process). 5 tane işlem bir Oracle instance’ı için zorunludur ve diğerleri opsiyoneldir. Opsiyonel olan arkaplan işlemleri, veritabanı üzerinde kullanılan özelliklere göre değişiklik göstermektedir.
Olmazsa olmaz işlemler;
1) DBWn
2) LGWR
3) CKPT
4) PMON
5) SMON
Olmasa da olabilecek, opsiyonel işlemler;
1) ARCn
2) RECO
3) ASMB
4) RBAL
5) CJQn
6) Jnnn
7) QMNn
8 ) DIAG
9) DIA0
10) EMNC
11) FBDA
12) Qnnn
13) Dnnn
14) Snnn
15) MMAN
16) MMON
17) MMNL
18) RVWR
19) CTWR
Bir instance için koşturulan bütün arkaplan işlemlerini *nix sistemler üzerinden ps -ef komutu ile görebiliyorsunuz ve buna ek olarak Oracle’dan da V$BGPROCESS görüntüsünden de inceleme şansınız var.
SQL> SELECT name, description
2 FROM V$BGPROCESS;
NAME DESCRIPTION
----- ----------------------------------------------------------------
PMON process cleanup
DIAG diagnosibility process
FMON File Mapping Monitor Process
PSP0 process spawner 0
LMON global enqueue service monitor
LMD0 global enqueue service daemon 0
LMS0 global cache service process 0
LMS1 global cache service process 1
....
....
Bir instance için zorunlu olan arkaplan görevlerinin detayları ile devam edecek olursak;
1) Database Writer (DBWn)
DBWn’nin amacı dirty buffer içerisinde bulunan içeriğin fiziksel veri dosyalarına yazılmasını sağlamaktır. Varsayılan olarak Oracle yalnız 1 tane database writer işlemi çalıştırır. Bu sayıyı arttırmak elimizdedir ve 20′ye kadar database writer koşturabiliriz. Bu da performansı arttıracaktır yalnız önemli bir not, toplam CPU adedinden fazla tanımlanan database writer işlemlerinin bir faydası olmacaktır. Burada kullanacağımız parametre DB_WRITER_PROCESSES parametresidir ve bu parametreye 1-20 arasında bir sayı verebiliyorsunuz.
DBWn işlemi modifiye edilmiş olan buffer blok’larını diske yazarak, buffer cache üzerinde daha fazla buffer bulunmasına yardımcı olur. Bütün bu yazma işlemleri bir yığın olarak gruplanır ve işleme alınır. Bunun tabii ki en önemli sebebi ise disk üzerindeki çekişmeleri (contention) azaltmak.
DBWn aşağıdaki durumlar meydana geldiği zaman, modifiye edilmiş olan buffer’ları fiziksel veri dosyaları içerisine yazmaktadır;
1) Bir serbest buffer için çok fazla arama yapıldığı zaman.
2) Buffer cache üzerinde modifiye ve commit edilmiş buffer’ların boyutu çok fazla olduğu zaman.
3) Veritabanı genelinde bir Checkpoint (CKPT) işlemi çalıştığı zaman.
4) Shutdown abort dışında kalan bir yöntem ile veritabanı kapatıldığı zaman.
5) Bir tablespace backup moduna veya offline’a alındığı zaman.
6) Bir segment kaldırıldığı zaman.
2) Checkpoint (CKPT)
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 [GLOBAL];
RAC instance’ları için GLOBAL kullanılabilir.
3) Log Writer (LGWR)
Log writer işleminin amacı SGA içerisinde redolog buffer’dan ilgili blokları alıp, online redo log’lara yazmak. LGWR yazma işlemini sürdürdüğü sırada Oracle log buffer’a yeni bilgi girişi yapabilmektedir. Eğer redo log dosyaları çoğaltılmış (multiplexed) ise LGWR bütün dosyalara aynı anda yazmaktadır.
Hangi durumlarda LGWR tetiklenmektedir?
1) Her 3 saniyede bir.
2) Log buffer 1 MB bilgiye sahip olduğu zaman.
3) Herhangi bir kullanıcı bir transaction’ı commit ettiği zaman.
4) Redo log buffer’ın 1/3′ü dolu olduğu zaman.
5) Veritabanı checkpoint oluştuğu zaman.
Bir commit gönderildiği zaman commit edilen bilgi direkt olarak online redo log’lara yazılır ve varlığı kesinleştirilir. Herhangi bir felaket veya kurtarma durumunda da online redolog’lardaki bilgiler kullanılır ve veri kaybedilmemiş olur. LGWR’ın çalışma prensibi ile ilgili bir değişiklik yapılamamaktadır.
4) Process Monitor (PMON)
Process Monitor’ün amacı başarısız olan kullanıcı işlemlerini temizlemektir ve kaynakların serbest kalmasını sağlamaktır. Kullanıcı tarafından alınan bütün kilitler de bıraktırılır. PMON periyodik olarak uyanır ve herhangi bir işlem yapması gerekiyor mu kontrol eder. PMON ayrıca birkaç opsiyonel arka plan işleminin kontrolünü de yapar ve başarısız oldukları zaman yeniden başlatır.
5) System Monitor (SMON)
System monitor işlemi bir instance veya kazar (crash) kurtarma işlemi gerçekleştirir. Bu işlem veritabanı başlangıcında gerçekleşir ve online redo log’ları kullanır. SMON ayrıca tablespace’lerin üzerindeki geçici segmentlerin temizlenmesinden de sorumludur.
SMON işlemi periyodik olarak uyanır ve kendisine ihtiyaç olup olmadığını kontrol eder.
Yukarıdaki 5 işlemin varlığını sürdüremediği bir Oracle instance’ı olamaz zira diğer opsiyoneller olmadan da işler yürümektedir. DBWn, LGWR, CKPT, PMON veya SMON’un bir sebepten dolayı yapması gerekenleri yapamadığı durumda Oracle instance’ını ani olarak kapatma yetkisi bulunmaktadır. Küçük bir örnek;
ORA-00600: internal error code, arguments: [4194], [35], [34], [], [], [], [], []
SMON: terminating instance due to error 600
Instance terminated by SMON, pid = 28429
Thu Apr 19 16:52:05 2007
LGWR: terminating instance due to error 472
Instance terminated by LGWR, pid = 26049
İyi çalışmalar.
Source: http://www.ceturk.com/veri-tabani/oracle/oracle-islemleri-process.html
28 views
Oracle ORA Hataları
1 Kas
Oracle veritabanını yönetirken, yedeğini alırken, performansını ayarlarken veya sql-pl/sql sorguları hazırlarken hepimizin, yaptığımız hatalardan dolayı aldığımız hatalar ORA- ile başlar ve hatanın algılanması için son derece kritiktir.
Destek verdiğiniz kurum, şahıs veya kuruluşta Oracle konusunda hatalar oluşuyorsa, bunu çözmenin en mantıklı yolu ORA hatasına bakmaktadır. İkinci olaraksa alert.log’a bakılabilir.
Sıklıkla karşılaştığımız ORA hatalarını kısaca şu şekilde özetleyebiliriz;
ORA-06550 : PL/SQL kodu compile edilirken oluşan hatalardır. (PL/SQL compilation error)
ORA-00936 : Sorgumuzda atlanan veya unutulan bir bölüm olduğu zaman oluşan hatalardır. (missing expression)
ORA-01034 : Oracle veritabanı açık değildir. (ORACLE not avaliable)
ORA-01033 : Oracle kapatılma sürecindeyken log on olduğumuz durumlarda oluşan hatalardır. (ORACLE initialization or shutdown in progress)
ORA-01555 : Üzerine veri kaydedilmiş rollback kayıtları olduğu zaman oluşan hatalardır. (snapshot too old)
ORA-01017 : Kullanıcı adı veya parolayı yanlış girdiğimiz durumlarda aldığımız hatalardır. (invalid username/password; logon denied)
ORA-00932 : Veri tipleri (data type) uyuşmadığında aldığımız hatalardır. (inconsistent datatypes)
Oracle’da sık sık aldığımız hataların başında gelen bu hatalar, hata kodunu bildiğimiz durumlarda aslında çok kolaylıkla kurtulabileceğimiz ve düzeltebileceğimiz hatalardır. Hata kodunu bildiğimiz durumlarda müdahale etmemiz ne kadar kolaysa, bilmediğimiz durumlarda da yorum yapıp, müdahale etmemiz o kadar zordur!
ORA-00600 hataları, Oracle Yazılımının kernel kodundan kaynaklanan hatalardır. Bu problem ile karşı karşıya kaldığımız anlarda müdahale şansımız düşüktür ve bu hataların ürettiği logları alert.log larda bulabiliriz.
Bu hatalar beraberinde bir takım argümanları da getirmektedir.
Örneğin;
ORA-00600 [400][520][11][900][][]
Bu hatalara sadece Oracle hata analizcileri müdahale edebilir. Ayrıca, bu argümanların içerisindeki değerler versiyondan versiyona değişebildiği için, son kullanıcılara veya DBA’lere ezberlemeleri tavsiye edilmez.
Oracle konusunda eğer bir hatayı çözmek istersek, o hatanın en derinine inmemiz gerekir. Asıl sebep ile gerçek sonuca ulaşabilmek şüphesiz çok hızlı gerçekleşecektir. Onun dışında deneme-yanılma yöntemleri veya içgüdüsel duygularla yapacağımız işin sonucu pek de hayırlı olmayacaktır.
53 views