Rastgele Yazılar : Qlikview Mobile for IOS
Rastgele Yazılar : Veri Madenciliği Nedir
Rastgele Yazılar : Canlı Bir Transportable Tablespace Operasyonu
Rastgele Yazılar : SQL Server 2008 de Database Snaphot Kullanımı
Rastgele Yazılar : Microsoft Datawarehouse'a Varım diyor!
Rastgele Yazılar : Data Guard Switchover "ORA-16139: media recovery requi...
Rastgele Yazılar : Oracle Data Integrator(ODI) Genel Bakış
Rastgele Yazılar : Tablespace Yönetimi - 5
Rastgele Yazılar : Maximum Datafile Size Nasıl Hesaplanır
Rastgele Yazılar : Oracle ASM Disklerinin Konfigürasyonu
Merhaba,
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; SQL> ALTER SYSTEM SET DB_WRITER_PROCESSES=CPU_COUNT/8 SCOPE=SPFILE; Veritabanının üzerinde bulunduğu sistemin CPU adedi bölü 8 bize kaç adet DBWR görevi olabileceğini göstermektedir. Bu sayıdan fazla da DBWR görevi tanımlanabilir.
İyi çalışmalar. oganozdogan