Automatic Memory Management on 11g
Bu yazımda Automatic Memory Management(AMM) konusunda bilgi vermeye çalışacağım. Daha önceki versiyonlarda sga ve pga ayrı olarak yönetiliyordu. Orneğin 9i de pga PGA_AGGREGATE_TARGET parametresiyle kontrol ediliyordu, 10g de sga SGA_TARGET parametresiyle kontrol ediliyordu.Oracle 11g ile gelen bir özellik ile bu iki parametre için memory alanında bir bölümü allocate ederiz ve database dinamik olarak sga ve pga için memory alanını allocate eder.
1)MEMORY_TARGET=Oracle database in sga ve pga için dinamik olarak memory den kullandığı alanı belirtir.Bu parametre MEMORY_MAX_TARGET parametresini geçemez.Bu değer default olarak 0 dır.
2)MEMORY_MAX_TARGET=Bu parametre MEMORY_TARGET ulaşabileceği maksimum size gösterir.Bu alan belirtilmezse default olarak MEMORY_TARGET kabul edilir.
NOT: Unix/Linux sistemlerde AMM kullanmadan önce memory kontrol etmeliyiz.Herhangi bir hata ile karşılaşmamak için shared memory mount edilmelidir.
# df -k /dev/shm
tmpfs 1029884 350916 678968 35% /dev/shm
Bu makinada shared memory gözükmüyor. Az önce de belirttiğim gibi herhangi bir hata ile karşılaşılmaması için shared memory alanı mount edilmelidir. Bu alan MEMORY_TARGET veya MEMORY_MAX_TARGET parametrelerinde belirtilen değerden büyük veya eşit olmalıdır.Aksi halde database connection sırasında "ORA-00845: MEMORY_TARGET not supported on this system" hatasını alabiliriz. Bunu engellemek için ;
# mount -t tmpfs shmfs -o size=2048m /dev/shm-->size>=MEMORY_TARGET VE MEMORY_MAX_TARGET
Daha sonra mount edilen kısmın reboot dan sonrada aktif olabilmesi için fstab dosyasına yazarız.
# vi /etc/fstab
/dev/mapper/VolGroup-lv_root / ext4 defaults 1 1
UUID=9a9b0c22-cacf-491c-ad27-b636c69da3cf /boot ext4 defaults 1 2
/dev/mapper/VolGroup-lv_swap swap swap defaults 0 0
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
shmfs /dev/shm tmpfs size=2048m 0 0 <<<<<<<<<---- eklenen satır
AMM Kullanımı: AMM kullanmadan önce bize gerekli olan SGA ve PGA boyutunu gözden geçirmeliyiz.Eğer büyük boyutda bir SGA kullanacaksak bu yapıyla birlikte HugePages kullanmamız gerekebilir.Bu durumda AMM kullanamayacağız. Çünkü AMM ile HugePages linux sistemlerde uyumlu olarak çalışmıyor.Yani büyük database sistemlerde AMM pek tercih edilen bir seçenek değil.Daha çok küçük ve daha az öneme sahip database lerde kullanılır. Bu yüzden büyük sistemlerde automatic shared memory management ve automatic memory management ile huge pages kullanılır.