在测试ORACLE 10.2.0.4升级到10.2.0.5 Patch Set的过程中,遇到一个内核参数检查失败的问题,具体错误信息如下所示
实验环境:
操作系统:Oracle Linux Server release 5.7
内存:4G
数据库版本:10.2.0.4.0
Checking operating system requirements ...
Expected result: One of redhat-6,redhat-5,redhat-4,redhat-3,SuSE-11,SuSE-10,SuSE-9,asianux-3,asianux-2,asianux-1
Actual Result: redhat-5
Check complete. The overall result of this check is: Passed
=======================================================================
Checking operating system package requirements ...
Checking for make-3.81; found make-1:3.81-3.el5. Passed
Checking for binutils-2.17.50.0.6; found binutils-2.17.50.0.6-14.el5. Passed
Checking for gcc-4.1.1; found gcc-4.1.2-51.el5. Passed
Checking for libaio-0.3.106; found libaio-0.3.106-5. Passed
Checking for libstdc++-4.1.1; found libstdc++-4.1.2-51.el5. Passed
Check complete. The overall result of this check is: Passed
=======================================================================
Checking kernel parameters
Checking for semmsl=250; found semmsl=250. Passed
Checking for semmns=32000; found semmns=32000. Passed
Checking for semopm=100; found semopm=100. Passed
Checking for semmni=128; found semmni=128. Passed
Checking for shmmax=1073741824; found shmmax=68719476736. Passed
Checking for shmmni=4096; found shmmni=4096. Passed
Checking for shmall=2097152; found shmall=4294967296. Passed
Checking for file-max=101365; found file-max=65536. Failed <<<<
Checking for VERSION=2.6.18; found VERSION=2.6.32-200.13.1.el5uek. Passed
Checking for ip_local_port_range=9000 - 65500; found ip_local_port_range=1024 - 65000. Failed <<<<
Checking for rmem_default=1048576; found rmem_default=262144. Failed <<<<
Checking for rmem_max=1048576; found rmem_max=262144. Failed <<<<
Checking for wmem_default=262144; found wmem_default=262144. Passed
Checking for wmem_max=262144; found wmem_max=1048576. Passed
Check complete. The overall result of this check is: Failed <<<<
Problem: The kernel parameters do not meet the minimum requirements (see above).
Recommendation: Perform operating system specific instructions to update the kernel parameters.
=======================================================================
Checking Recommended glibc version
Expected result: ATLEAST=2.5-12 NOT_EQUALS=2.5-18
Actual Result: 2.5-65
Check complete. The overall result of this check is: Passed
=======================================================================
Checking physical memory requirements ...
Expected result: 922MB
Actual Result: 3956MB
Check complete. The overall result of this check is: Passed
=======================================================================
Checking available swap space requirements ...
Expected result: 3956MB
Actual Result: 13987MB
Check complete. The overall result of this check is: Passed
有点纳闷,为什么这些参数在10.2.0.1安装和升级到10.2.0.4的时候都通过检测,但是在应用补丁10.2.0.5时反而不能通过了呢?我们先看看原先的值
1:Checking for file-max=101365; found file-max=65536. Failed <<<<
这个失败,很好理解,因为processes为 150,而参数65536 = 512*128 , 我们的进程数为150,大于128(fs.file-max = 512 x processes (for example 65536 for 128 processes) ,所以系统给了一个推荐值(具体怎么计算,还没弄清楚)
SQL> show parameter processes;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
aq_tm_processes integer 0
db_writer_processes integer 1
gcs_server_processes integer 0
job_queue_processes integer 0
log_archive_max_processes integer 2
processes integer 150
2:Checking for ip_local_port_range=9000 - 65500; found ip_local_port_range=1024 - 65000. Failed <<<<
这个参数,官方文档推荐就是 net.ipv4.ip_local_port_range = 9000 65500 ,也没啥好说的。 The runInstaller (OUI) checks may expect this to be the old guidance of "1024 65000". The new guidance from Oracle development is "9000 65500". Please allow the runInstaller (OUI) to proceed with the new guidance from Oracle development.
3:关键是下面这几个参数为啥会失败,有点纳闷?
Checking for rmem_default=1048576; found rmem_default=262144. Failed <<<<
Checking for rmem_max=1048576; found rmem_max=262144. Failed <<<<
Check complete. The overall result of this check is: Failed <<<<
在官方文档Requirements For Installing Oracle10gR2 On RHEL 5/OEL 5 (x86_64) (文档 ID 421308.1)里面有下面介绍,也是上面的配置值
4. Set the kernel parameters
Add the following the lines in the file /etc/sysctl.conf
kernel.shmall = physical RAM size / pagesize For most systems, this will be the value 2097152. See Note 301830.1 for more information.
kernel.shmmax = 1/2 of physical RAM. This would be the value 2147483648 for a system with 4Gb of physical RAM. See Note 567506.1 for more information.
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 512 x processes (for example 65536 for 128 processes)
Development recommends a minimum of 327679 for active systems.
net.ipv4.ip_local_port_range = 9000 65500
(The runInstaller (OUI) checks may expect this to be the old guidance of 1024 65000.
The new guidance from Oracle development is 9000 65500.
Please allow the runInstaller (OUI) to proceed with the new guidance from Oracle development.)
net.core.rmem_default = 262144
net.core.rmem_max = 2097152
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
后面在官方文档 Requirements For Installing Oracle10gR2 On RHEL 5/OEL 5 (x86_64) (文档 ID 421308.1) 里面看到,这个是ORACLE的一个bug来的,可以忽略这个错误,具体见截图