LGWR, CKPT, DBWR ve LOG_BUFFER
Bir oracle veritabanı arka plan görevi olan LGWR'ın (log writer) amacı log buffer'daki bulunan ve online redo log'lara yazılmayı bekleyen bilgileri online redo log'lara aktarmaktır.
LGWR görevi bu işlemi 4 farklı aşama tetiklendiği zaman gerçekleştirmektedir;
1) Her 3 saniyede bir redo log buffer'ı,
2) Redo log buffer'ın 1/3'ü dolduğu zaman,
3) Redo log buffer 1 megabyte olduğu zaman,
4) Herhangi biri "commit" ederse,
Redo log buffer boşaltılır ve online redo log'lara veriler aktarılır. Online redo log gruplarının boyutlandırması ne kadar önemli ise redo log buffer'ın da boyutlandırılması o kadar önemlidir. Hatalı boyutlandırıldıkları durumlarda veritabanın bekleme olayları meydana gelmektedir.
Aslında DBWR ve LGWR birbiri ile senkronize çalışmaktadır diyebiliriz zira bir transaction içerisinde iken devreye ilk giren görev LGWR'dır. LGWR'ın online redo log'lara yazdığı transaction kayıtları CKPT görevinin tetiklenmesi ve DBWR aracılığı ile fiziksel veri dosyalarına yazılmaktadır. Dolayısıyla bu döngü içerisinde bir aksama meydana geliyorsa, diğerleri de mutlaka etkilenecek demektir.
LGWR'ı CKPT ve DBWR'dan ayıran bir özellik ise yukarı saydığım 4 maddenin değiştirilemez ve değiştirilmesi de teklif edilemez olmasıdır :) Bu işleyişe log writer'ın kendine özel hareketleri de diyebiliriz ancak CKPT ve DBWR için aynı şey geçerli değildir. CKPT ve DBWR görevlerinin tuning'i yapılabilir ve belirli durumlarda da yapılması gerekmektedir.
Örneğin CKPT görevini elle çalıştırabilirsiniz;
SQL> ALTER SYSTEM CHECKPOINT [GLOBAL];
Aynı şekilde bir veritabanı üzerinde ne kadar DBWR çalışabileceğini sisteme gösterebilirsiniz;
Gönderen Ogan Ozdogan zaman: 16:05
Etiketler: checkpoint, CKPT, database writer, DBWR, LGWR, LOG WRITER, log_buffer
Savaş Külah dedi ki...
Log Writer için Oracle veritabanında dar boğaza neden olan ve buna katlanmak zorunda olduğumuz tek noktadır desek yanlış bir yorum yapmış olmayız sanırım. DBWR verileri diske asenkron yazarken LGWR anlık olarak RAM'deki değişen blokları diske yazmak zorunda kalıyor.
16 Eylül 2010 17:47
Katılıyorum ve yorum için teşekkür ederim.
16 Eylül 2010 17:58
enq: CF - contention / log_archive_max_processes
Sihirli Kelime "Partitioning"
Private strand flush not complete / Checkpoint not...