6.修改linux内核参数以及其他相应配置
[root @linux1 /root]# vi /etc/sysctl.conf
在该文件末尾添加如下内容:
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.shmall = 2097152
kernel.sem = 250 32000 100 128
fs.file-max = 65536
这里,对每个参数值做个简要的解释和说明。
(1)shmmax:该参数定义了共享内存段的最大尺寸(以字节为单位)。缺省为32M,对于oracle来说,该缺省值太低了,通常将其设置为2G。
(2)shmmni:这个内核参数用于设置系统范围内共享内存段的最大数量。该参数的默认值是 4096 。通常不需要更改。
(3)shmall:该参数表示系统一次可以使用的共享内存总量(以页为单位)。缺省值就是2097152,通常不需要修改。
(4)sem:该参数表示设置的信号量。
(5)file-max:该参数表示文件句柄的最大数量。文件句柄设置表示在linux系统中可以打开的文件数量。
修改好内核以后,执行下面的命令使新的配置生效。
[root @linux1 /root]# /sbin/sysctl -p
通常,出于性能上的考虑,还需要进行如下的设定,以便改进Oracle用户的有关 nofile(可打开的文件描述符的最大数)和nproc(单个用户可用的最大进程数量)。方法如下:
[root @linux1 /root]# vi /etc/security/limits.conf
在该文件里添加如下内容:
oracle soft nofile 65536
oracle hard nofile 65536
oracle soft nproc 16384
oracle hard nproc 16384
7.配置 hangcheck-timer 内核模块
Oracle9202以前,都是使用watchdog来检查系统是否挂起。从9202以后,oracle使用hangcheck-timer模块。hangcheck-timer模块被加载到内核中,能够定时检查系统是否挂起。有个可配置的参数用来表示多少时间以后系统没响应就认为是挂起。该模块在AS3中是自带的。
使用如下命令检查该模块是否存在:
[root @linux1 /root]# find /lib/modules -name "hangcheck-timer.o"
使用相应的参数加载该模块:
[root @linux1 /root]# /sbin/insmod hangcheck-timer hangcheck_tick=30
hangcheck_margin=180
这里解释一下两个参数的含义:
hangcheck_tick:该参数定义了模块启动的间隔时段。其默认值为 60 秒。 Oracle建议将其设置为 30 秒。
hangcheck_margin:该参数定义了多少时间以后系统没响应就认为是挂起。以秒为单位。其默认值为 180秒。Oracle 建议将其设置为 180 秒。
检查该模块是否被成功加载:
[root @linux1 /root]# grep Hangcheck /var/log/messages
为了在linux重启以后,自动加载该模块,可以将加载模块的命令添加到/etc/modules.conf中
[root @linux1 /root]# echo "options hangcheck-timer hangcheck_tick=30
hangcheck_margin=180" >> /etc/modules.conf
![]()
