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