如何在 Solaris 10 系统范围内永久设置/更改限制

如何在 Solaris 10 系统范围内永久设置/更改限制

我收到了来自 oracle 的电子邮件,要求更改 solaris 10 服务器上的限制以使 oracle 应用程序正常工作,

不幸的是我没有 Solaris 经验,所以需要帮助

值如下所示

A00110 This rule verifies that the ulimit settings are adequate Oracle Database 11g R2. The recommended values are not less than: 
ulimit(TIME) = unlimited
ulimit(FILE) = unlimited
ulimit(DATA) = 1048576
Soft ulimit(NOFILES) = 1024
Hard ulimit(NOFILES) = 65536
ulimit(VMEMORY) = 4194304
and not more than 
Soft ulimit(STACK) = 10240
Hard ulimit(STACK) = 32768
VmemoryNotDefined 
StackHardUnlimited Review the ulimit settings: 
Set the hard ulimit(STACK) to a maximum of 32768 
ulimit(VMEMORY) is not defined

答案1

不建议提高全局文件描述符限制,因为这可能会使 32 位程序失败,除非它们了解如何使用 > 255 的文件描述符,请参阅:enable_extended_FILE_stdio(3C)

因此,最好通过 shell 脚本调用 oracle 数据库,该脚本首先执行所需的ulimit调用来设置限制,然后调用数据库。

让我展示一个可以使用 Bourne Shell 检索的典型 Solaris 限制集(如我的示例)。请注意,此处使用ksh93没有帮助,因为 ksh93 包含来自其他不可设置资源的信息。这是 Solaris 上的默认设置:

LC_ALL=C ulimit -aSH
-t: time(seconds) unlimited:unlimited
-f: file(blocks) unlimited:unlimited
-d: data(kbytes) unlimited:unlimited
-s: stack(kbytes) 10240:unlimited
-c: coredump(blocks) unlimited:unlimited
-n: nofiles(descriptors) 256:65536
-v: memory(kbytes) unlimited:unlimited

如您所见,除了打开的文件描述符之外,所有默认值都高于所需值。我不确定是否应该减少堆栈硬限制。

如果您想修改这些值,请编写 shell 脚本并输入:

ulimit -nS 1024

这将软文件描述符限制提高到 1024 并产生新的限制:

-n: nofiles(descriptors) 1024:65536

如果您需要减少硬堆栈限制,还需输入:

ulimit -sH 32768

这将硬堆栈限制减少到 32 MB,结果是:

-s: stack(kbytes) 10240:32768

之后将启动oracle数据库的命令输入到脚本中,然后运行该脚本。

相关内容