一、Hugepage

11g的AMM和HugePages不兼容,但可以使用ASMM

好处:

不需要内存页交换

减轻快表压力

减轻换页表的负载

配置

1设置memlock

/etc/security/limits.conf

如物理内存是64GB,可以设置为如下:

* soft memlock 60397977

* hard memlock 60397977

>DB内存

<物理内存

kernel.shmmax =60397977*1024

2验证memlock

ulimit -l

su - oracle

ulimit -l

3禁用AMM

alter system reset memory_target scope = spfile sid='*';

alter system reset memory_max_target scope =spfile sid='*';

4.vm.nr_hugepages的建议值

cat /proc/meminfo

2048K 默认2m一个页

vi /etc/sysctl.conf

vm.nr_hugepages =30000 (60G/2m)

vm.nr_hugepages 大于oracle内存 小于物理内存

经验计算:(SGA+1G)/2M

不经验计算:不超过85% 不能大于memlock 不能小于kernel.shmmax

我的方法:比物理内存低点 直接除2 60G/2M =30720 页

注意保留内存问题

sysctl -p

重启数据库实例

5查看参数

cat /proc/meminfo

alert log 里边

Large Pages Information

二、透明大页

oracle建议关闭

红帽6.5之后已去除

查看是否使用

more /sys/kernel/mm/transparent_hugepage/enabled

cat /sys/kernel/mm/redhat_transparent_hugepage/enabled

grep AnonHugePages /proc/meminfo

当值大于,表示正在使用

如果不关闭 可能会在ocssd.log中报错

clssscMonitorThreads clssnmvKillBlockThread not scheduled for 7500 msecs

clssscMonitorThreads clssnmvWorkerThread not scheduled for 8030 msecs

影响RAC性能 不稳定

如何关闭:

建议 法1. /etc/grub.conf文件中添加

kernel 行后面加transparent_hugepage=never

法2. 在/etc/rc.local文件中加入如下内容并重启操作系统

if test -f /sys/kernel/mm/transparent_hugepage/enabled; then

echo never > /sys/kernel/mm/transparent_hugepage/enabled

fi

if test -f /sys/kernel/mm/transparent_hugepage/defrag;then

echo never > /sys/kernel/mm/transparent_hugepage/defrag

fi