我正在阅读有关在 Redhat 6 上安装数据库的 Oracle 指南,但我不明白为什么 Oracle 建议在 /etc/sysctl.conf 中设置 file-max 系统参数和 nofile
http://docs.oracle.com/cd/B28359_01/install.111/b32285/toc.htm#LTDQI127
因此,如果我为 oracle 用户在 /etc/security/limits.conf 中设置了 nofile,为什么我需要为系统范围设置限制?
/etc/sysctl.conf 中的 Oracle 参数示例:
fs.file-max = 65536 <------ UMMMMMMM ---->
kernel.shmall = 2097152
kernel.shmmax = 2147483648
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 = 1048576
Oracle 参数示例 /etc/security/limits.conf:
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536 <----- UMMM so the hard limits of the oracle users is equal to the maximum system wide ---->
我认为这个 oracle 参数不正确,但我希望得到一些关于此的反馈。
答案1
文档说:
验证下表中显示的内核参数是否设置为大于或等于显示的最小值。表格后面的过程描述了如何验证和设置这些值。
因此,您不必将系统范围的限制设置为该值,只需至少(我个人认为那里的系统范围限制太低了)。
将每个用户的限制设置为 65536 似乎是合理的。
答案2
当 Oracle 验证此值时,它会使用超级用户进行验证,我在 Red Hat 6 中安装 Oracle 11 时遇到了这个问题。我在 /etc/sysctl.conf 中配置此值后解决了这个问题