CentOS5u11 Oracle 10g 安装部署的内核参数设置简析

简单说明:

内核参数配置文件 /etc/sysctl.conf 配置项可以重复出现,以最后一次出现的配置项为最终生效项
生效方法:重启主机,或者使用命令 sysctl -p
官档地址:https://docs.oracle.com/cd/B19306_01/install.102/b15667/pre_install.htm
查看 Configuring Kernel Parameters 章节部分

fs.aio-max-nr

同时可以拥有的的异步IO请求数,默认是65536
如果该参数设置过小可能会导致BUG:
Errors in file ...XXX.trc:
ORA-27090: Unable to reserve kernel resources for asynchronous disk I/O
Linux-x86_64 Error: 4: Interrupted system call
Additional information: 3
Additional information: 128
Additional information: 65536
曾经在一个业务架构不合理的11g RAC上遇到过该问题,解决方法就是优化该参数
将改参数设置一个较大的数值,比如3M
echo 'fs.aio-max-nr = 3145728'>>/etc/sysctl.conf

fs.file-max

设置Linux系统可以打开的文件句柄上限,该参数是整个系统的上限
至少应设置成65536以上,CentOS5u11默认值为210372,无需更改

kernel.shmall

系统允许使用的内存页总数量,内存页大小是固定的,默认是4K,命令getconf PAGESIZE查看
一个共享内存段由多个内存页构成,系统可以使用的共享内存总大小 = kernel.shmall * 4K
如果共享内存总大小小于物理内存,则物理内存无法完全被利用
直接将该参数设置成一个远大于物理内存的数量即可
如果系统默认小于2097152,则该项至少应设置为2097152
2097152 * 4K = 8G,也就是说Oracle的推荐值是基于8G内存的机器推荐设置的
ipcs -lm|grep 'max total shared memory' 查看当前系统的该值信息
ipcs -lm|grep 'max total shared memory'|awk -F'=' '{print $2/4}'
换算之后的数据,因为该值单位是KB,而一个内存页是4KB,因此除以4,得出数据和配置文件吻合
CentOS5u11默认值为68719476736,共享内存总大小 = 68719476736 * 4K = 16384G,无需更改

kernel.shmmax

系统中最大共享内存段的大小,单位是Byte
最好大于等于SGA,也就是将SGA全部放在一个段里面
即便是大于整个物理内存也是可以的,因为这只是一个上限设置
Oracle官档推荐是物理内存的一半,但只是推荐
如果系统默认小于2147483648,则该项至少应设置为2147483648
2147483648=2G,根据Oracle的推荐,推断出该主机的物理内存4G
ipcs -lm|grep 'max seg size' 查看当前系统的该值状态
ipcs -lm|grep 'max seg size'|awk -F'=' '{print $2*1024}'
换算之后的数据,因为该值单位是KB,而配置文件中的单位是Byte,因此乘以1024,得出数据和配置文件吻合
CentOS5u11默认值为68719476736,68719476736B=64GB,当物理内存少于64G时无需更改,如果物理内存128G,则:
echo 'kernel.shmmax = 137438953472'>>/etc/sysctl.conf

kernel.shmmni

整个系统的共享内存段的总个数
共享内存总大小 = kernel.shmall * 4K,这部分共享内存最多被分成4096个区域
如果系统默认小于4096,则该项设置为4096
ipcs -lm|grep 'max number of segments' 查看当前系统的该值状态,得出数据和配置文件吻合
CentOS5u11默认值为4096,无需更改

kernel.shmmin

系统中最小共享内存段的大小,其值为1bytes,但是在centos中未找到该参数配置项
ipcs -lm|grep 'min seg size' 查看当前系统的该值状态

kernel.sem

该配置是Semaphore信号量相关的配置
信号量是多线程环境下使用的一种设施,协调各个线程,保证它们能够正确、合理的使用公共资源
该配置项依次配置了以下四个配置:
SEMMSL SEMMNS SEMOPM SEMMNI
SEMMSL: max semaphores per array   每个信号集的最大信号数量
SEMMNS: max semaphores system wide 整个系统的最大信号数量 SEMMNS = SEMMNI * SEMMSL
SEMOPM: max ops per semop call     系统方法semop可以操作的最大信号数量
                                   一个信号集的最大信号量为SEMMSL,因此建议SEMOPM = SEMMSL
                                   即系统方法semop一次可以完全操作一个信号集
                                   Oracle建议将SEMOPM的值至少设置为大于等于100
SEMMNI: max number of arrays       整个系统的最大信号集数量
ipcs -ls 查看当前系统的该配置项配置的四个参数的状态
CentOS5u11默认值为250 32000 32 128,SEMOPM配置不足,需要更改:
echo 'kernel.sem = 250 32000 100 128'>>/etc/sysctl.conf

net.ipv4.ip_local_port_range

当某个服务程序对外提供会话服务时,会在本地打开一个临时端口,占用这个端口提供服务
比如有100个client连接到oracle库,那么经过监听处理之后,库所在服务器会打开100个临时端口响应这些会话请求
该参数控制了这些临时端口的范围,默认为32768~61000,28232个端口
如果会话连接较多、还有其他非oracle服务抢占这些临时端口的话
会导致临时端口不足,无法建立会话,当然正常情况下28232个端口其实是够用的
1024之前一般用作系统服务的监听端口,比如22的sshd端口
因此Oracle推荐端口从1024开始,到65000止:
echo 'net.ipv4.ip_local_port_range = 1024 65000'>>/etc/sysctl.conf

net.core.rmem_default、net.core.rmem_max

网络相关的参数配置,单位是Byte
udp接收数据的socket默认缓存为rmem_default,最大为rmem_max
CentOS5u11默认值为129024和131071,需要修改:
echo 'net.core.rmem_default = 262144'>>/etc/sysctl.conf
echo 'net.core.rmem_max = 262144'>>/etc/sysctl.conf

net.core.wmem_default、net.core.wmem_max

网络相关的参数配置,单位是Byte
udp发送数据的socket默认缓存为wmem_default,最大为wmem_max
CentOS5u11默认值为129024和131071,需要修改:
echo 'net.core.wmem_default = 262144'>>/etc/sysctl.conf
echo 'net.core.wmem_max = 262144'>>/etc/sysctl.conf

系统安装后统一调整语句

echo 'fs.aio-max-nr = 3145728'>>/etc/sysctl.conf
# 如果物理内存大于64G,则打开使用
# echo 'kernel.shmmax = 137438953472'>>/etc/sysctl.conf
echo 'kernel.sem = 250 32000 100 128'>>/etc/sysctl.conf
echo 'net.ipv4.ip_local_port_range = 1024 65000'>>/etc/sysctl.conf
echo 'net.core.rmem_default = 262144'>>/etc/sysctl.conf
echo 'net.core.rmem_max = 262144'>>/etc/sysctl.conf
echo 'net.core.wmem_default = 262144'>>/etc/sysctl.conf
echo 'net.core.wmem_max = 262144'>>/etc/sysctl.conf
sysctl -p

[TOC]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值