我们正在运行RHEL 4 Update 6,并正在进行Oracle安装。 根据Oracle安装指南,我正在尝试更新shmmax值。 根据指南,我已经添加了以下行/etc/sysctl.conf:
kernel.shmmax = 5319303168
但是当我随后input以下命令来检查:
/sbin/sysctl -a | grep shm
我可以看到值仍然是1024335872.如果我执行以下操作:
cat /proc/sys/kernel/shmmax
我也可以看到值1024335872.我已经尝试重新启动系统,但仍然无法正常工作。 任何想法如何使这个设置生效?
首先,编辑sysctl.conf不会更改该值,直到您重新引导或执行:
sysctl -p
要重新加载值。
你提到这是一个32位的Linux。 这就限制了您可以设置SHMMAX的大小以及Oracle SGA的大小。 请参阅在FC2上安装Oracle9i以获取有关您将在此处遇到的限制的更多信息。 最常用的设置是:
kernel.shmmax=2147483648
而且由于你尝试的那个大于4GB,所以它完全失败了。
许多人似乎使用一些指导或甲骨文的build议,在这里设置一个神奇的数字,而没有真正考虑共享内存值是否真的对他们的系统有意义。 我写了下面的小脚本来为我在Linux上生成设置。 正如所写的,它将共享内存块限制在内存总量的50%,这对于您的Oracle使用来说可能很轻松; 容易调整到更高的百分比。 我讨厌看到人们把这个值设置得高于他们服务器中的RAM数量。
#!/bin/bash mem_bytes=`awk '/MemTotal:/ { printf "%0.f",$2 * 1024}' /proc/meminfo` mem_max=`expr $mem_bytes / 2` page_size=`getconf PAGE_SIZE` shmall=`expr $mem_bytes / $page_size` echo \# Maximum shared segment size in bytes echo kernel.shmmax = $mem_max echo \# Maximum number of shared memory segments in pages echo kernel.shmall = $shmall
从这个输出可以写到sysctl.conf的末尾,运行“sysctl -p”,然后用一个合理但安全的设置closures。
好的,我想我知道为什么。 这是Linux的32位版本。 在这种情况下,看起来shmmax的最大值是2GB。
我的拼凑在一起的Oracle说明显示了相同的说明。 我唯一不同的做法是首先运行echo 5319303168> / proc / sys / kernel / shmmax 。 我知道这是正在运行的configuration,其他设置将使其在重新启动后生存下来。
什么版本的Oracle? 我正在遵循我的9i指令,我不确定在4.x上运行9i的版本。 我不得不看看10g的安装,因为我还没有完成其中的一个。