Solaris

如何在 Solaris 10 系統範圍內永久設置/更改限制

  • August 2, 2018

我收到了來自 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

不建議提高全域文件描述符限制,因為這可能會使 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數據庫到腳本,然後執行這個腳本。

引用自:https://unix.stackexchange.com/questions/459167