Pages

11 Temmuz 2011 Pazartesi

LOG_ARCHIVE_MAX_PROCESSES değerinin ayarlanması

Oracle LOG_ARCHIVE_MAX_PROCESSES parametresi Oracle tarafından başlangıçta çağrılan aktif ARCH proseslerinin(ARC0-ARCn) sayısını belirtir. LOG_ARCHIVE_MAX_PROCESSES parametresinin değeri,Oracle 10g itibariyle LOG_ARCHIVE_START başlangıç parametresinin geçersiz olmasına rağmen TRUE olarak ayarlandığında değerlendirmeye alınır. Oracle’da yüksek uygunluğa erişmek, Oracle’ı enterprise veritabanı olarak kullanan herkesin hayalidir ve bu hedefe ulaşmak için öncelikle LOG_ARCHIVE_MAX_PROCESSES parametresinin değerinin yükseltilmesi sıklıkla tavsiye edilmektedir. Bu yazıda, LOG_ARCHIVE_MAX_PROCESSES parametresinin değerinin yükseltilmesinin her zaman veritabanı sisteminde en iyi çözüm olmadığını ve LOG_ARCHIVE_MAX_PROCESSES  değerini ayarlarken neden dikkatli olunmasını inceleyeceğiz.

LOG_ARCHIVE_MAX_PROCESSES parametresinin değiştirilmesi:
ARCHIVELOG modunda çalışırken LOG_ARCHIVE_MAX_PROCESSES parametresinin değeri aşağıdaki gibi değiştirilebilir.
ALTER SYSTEM SET LOG_ARCHIVE_MAX_PROCESSES=3
ARCn proseslerinin sayısı log dosyalarının sayısı ve veritabanı işyüküne bağlı olarak tanımlanmalıdır. Örneğin;  eğer aktif veritabanı 6 veya daha fazla log dosyası grubu ile kullanılıyorsa, o zaman 2 veya daha fazla ARCHIVER prosesi tahsis edilebilir.
Oracle çoklu log yazıcı(LGWR) proseside, ARCn proseslerinin sayısını otomatik olarak artırmak için kullanılabilir, en iyi yaklaşım LOG_ARCHIVE_MAX_PROCESSES parametresini kullanmak olacaktır. Böylece tepeden yeni proseslerin dinamik olarak başlatılması önlenir ve ARCn  bu işyükünün üstesinden gelebilir.
LOG_ARCHIVE_MAX_PROCESSES değerinin network trafiğinin üstesinden gelmek için değiştirilmesi:
Bazen çalıştırılan uygulama üzerindeki yüksek network trafiğinden kaynaklanan yavaşlıklar meydana gelebilir ve LOG_ARCHIVE_MAX_PROCESSES parametresinin değerinin yükseltilmesine yönelinebilir, ancak bu her zaman en iyi çözüm olmaz. Uygulamada network trafiğinden kaynaklanan bir yavaşlama ile yüzyüze kalındığında, LOG_ARCHIVE_MAX_PROCESSES değerini artırmaktan ziyade bant genişliği arttırılmalı veya network gidiş-dönüşü veya değiştokuş olan byte sayıları azaltılmalıdır. Bant genişliği analizi ve optimal yapılandırma için yazımı inceleyebilirsiniz. Aslında bu noktada ilave olarak, benimde son 2 aydır muzdarip olduğum “SQL*Net message from client” bekleme olayınında aşırı yüksek değerlere ulaştığı  izlenirse, uygulama sunucusundaki uygulama mimarisi gözden geçirilmelidir. Ancak, bu bekleme olayı ile ilgili tespit, analiz ve çözümü ile ilgili bir yazıyı ayrıca ilerde hazırlayıp yayına alacağım.
LOG_ARCHIVE_MAX_PROCESSES değerinin arşiv boşlukları(gaps) çözümü için değiştirilmesi:
Bazen, aralıklarla arşivlenmiş redo log dosyaları oluşturulurken arşiv boşlukları(archive gaps) problemi ile karşılaşılabilir. Arşiv boşlukları, primary veritabanı tarafından oluşturulan bir sonraki arşivlenmiş redo log dosyalarının standby veritabanına uygulanmadığı zaman oluşur. Genellikle LOG_ARCHIVE_MAX_PROCESSES parametresini artırarak instance tarafından kullanılan ARC proses sayısı kontrol edilmek suretiyle sırasıyla arşiv boşlukları çözülür.
Oracle sunucusu arkaplan proseslerinide içeren her bir sunucu prosesi RAC düğümlerinde uygun bellek noktasında uyarısı veriyorsa, bu durumda ilk olarak PGA için bellek kullanımı belirlenmelidir.
SQL> SELECT NAME, VALUE FROM V$PGASTAT;
Yukarda, PGA için AGGEGRATE PGA hedefinden daha fazla olan 5GB bellek alanının tahsis edildiği görülmektedir. Şimdi bu noktada, aşağıdaki komut ile hangi proseslerin en çok PGA kullandığının belirlenmesi gerekmektedir.
SQL> SELECT PROGRAM, PGA_USED_MEM, PGA_ALLOC_MEM/(1024*1024) "ALLOCATION(MB)", PGA_FREEABLE_MEM FREEABLE, PGA_MAX_MEM FROM V$PROCESS ORDER BY PGA_ALLOC_MEM ASC;

PROGRAM               PGA_USED_MEM ALLOCATION(MB)    FREEABLE   PGA_MAX_MEM
-------------------   ------------ --------------    ---------  -----------
oracle@ARDA (ARC5)     36255251     48.63544150        0         48548778
oracle@ARDA (ARC4)     36265251     48.63544150        0         48548778
oracle@ARDA (ARC6)     36245251     48.63544150        0         48548778
oracle@ARDA (ARC1)     36267251     48.63544150        0         48548778
oracle@ARDA (ARC2)     36259251     48.63544150        0         48548778
oracle@ARDA (ARC0)     36264251     48.63544150        0         48548778
Yukardan her bir arşiv arkaplan prosesinin yaklaşık 49 MB bellek kullandığı görülmektedir. Daha fazla bellek tahsisinin önüne geçmek için LOG_ARCHIVE_MAX_PROCESSES parametresinin değerini değiştirirken dikkatli olunması gerekmektedir. Çok fazla bellek tahsisi ile veritabanı uygun bellek tahsisi noktasında sıkıntı yaşadığı durumda ALTER SYSTEM SET LOG_ARCHIVE_MAX_PROCESSES komutu ile gereksiz ARCH prosesleri sınırlandırılabilir ve pek çok bellek alanı tasarrufu sağlanır.

0 yorum:

Yorum Gönder