4 Eylül 2012 Salı

                            
                                 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.

Automatic Memory Managament(AMM) Parametre:İki temel parametresi vardır.

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.