安装oracle数据库时设置linux系统内核参数是比较重要的,关系到安装oracle是否成功。前几天面试时面试官提到主要内核参数那些及大页内存参数。
一: 下面是一些安装oracle数据库时需要在 vi /etc/sysctl.conf文件设置的参数
# vi /etc/sysctl.conf
#ORACLE SETTING
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmmax = 3221225472
kernel.shmall = 1048576
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048586
kernel.panic_on_oops = 1
vm.swappiness=10
vm.vfs_cache_pressure=200
解释几个比较重要的参数
1)kernel.shmmax 定义单个内存的最大值
64:kernel.shimmax > SGA <物理内存80%
32:<4G
例如:64G 物理内存设置如下
SGA <=物理内存的*0.8*0.8 <=40G , shimmax > 40g <64G-(2G至4G),如果是我的话kernel.shmmax=48G
SGA=40G(物理内存*0.8*0.8 ),PGA=10G(物理内存*0.8*0.2)
kernel.shmmax=48G*1024*1024*1024=51539607552
kernel.shmmax=51539607552(字节)
2)kernel.shmall 控制共享内存页数
查看系统默认的值
getconf PAGESIZE
默认是4096(字节 4K)
例如:64G物理内存设置如下
kernel.shmall=64G/60G=64*1024*1024/4=16777216
ORACLE默认是2097152
3)kernel.shmmni 共享内存段的最大数量
系统默认是4096 一般情况不需要修改
kernel.shmma*kernel.shmmni=
4)vm.swappiness
减少这个参数会使系统尽快通过swapout不适用的进程资源石峰更多的物理内存
swappiness建议设置为10 默认是60
查看系统里有swappines
1) cat /proc/sys/vm/swappiness ##默认是60
物理内存 - 60%= 40% 当物理内存使用达到40%会使用swap空间
vm.swappiness=10或者0 ## 当内存使用90%以上才能使用swap或者内存足够大不适用swap
5) vm.vfs_cache_pressure
默认是100 增大这个参数设置了虚拟内存回收directory 和 i-node缓冲的挺像,这个值越大,回收缓冲越快
vi /etc/sysctl.conf
vm.vfs_cache_pressure=200
二 : 大页内存
vi /etc/security/limits.conf
#如物理内存是64G 可以设置如下
* soft memlock 62914560 #软限制60G
* hard memlock 62914560 #硬限制60G
vi /etc/sysctl.conf
vm.nr_hugepages =30000m #大页内存
禁用oracle11G AMM
如果oracle 11G以后的版本那么默认创建实列会使用aotumatic memory management (AMM)的特性与hugepage不兼容
在设置huepage之前需要先禁用AMM 设置初始化参数 MEMORY_TARGET /MEMORY_MAX_TARGET为0
alter system reset memory_target scope=spfile sid='*';
alter system reset memory_max_target scope=spfile sid='*';
例如:64G物理内存
vi /etc/security/limits.conf
* soft memlock 62914560 #软限数据库制60G
* hard memlock 62914560 #硬限数据库制60G
锁定60G,vm.nr_hugepages的大小 大于oracle内存(SGA),小于物理内存
vm.nr_hugepages= (SGA+1)/2m
vm.nr_hugepages 不超过物理内存85% 不能大于memlock,不能小于kernel.shmmax
vm.nr_hugepages=(40+1)/2m =21495808 m
上面设置成功后启动数据在alter日志查看数据库是否启用大页内存。
三 :透明大页在ORACLE RAC环境中必须要关闭该功能
vi /etc/grub.conf
在quiet 后面加上 transparent_hugepage=never
reboot
查看是否设置成功
[root@ogg1 ~]# cat /sys/kernel/mm/redhat_transparent_hugepage/enabled
always madvise [never]
[root@ogg1 ~]#
[root@ogg1 ~]# cat /proc/meminfo|grep AnonHugePages
AnonHugePages: 0 kB