在安裝oracle Grid Infrastructure檢查約束時遇到一個錯誤,大體是說當前可打開的文件描述符的最大數爲1024,而要求是65536。
於是在gird用戶下執行ulimit -a, 顯示可打開的最大文件數爲1024,這是默認值;執行ulimit -n 65536不允許修改,轉到root下面執行ulimit -n 65536,執行ulimit -a 顯示爲65536,在grid用戶下執行依然爲1024。當時想到用sudo的方式執行,對gird用戶賦予所有權限,執行ulimit -n 65536依然報錯。後來想起在配置/etc/profile文件裏,對oracle有ulimit -n 65536的命令,如下:
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
umask 022
fi
添加grid用戶後,source /etc/profile,
if [ $USER = "oracle" ] || [ $USER = "grid" ] ; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
umask 022
fi
在grid執行ulimit -a依然爲1024,後來檢查安裝步驟發現忘了在/etc/security/limits中添加grid用戶了,添加下面即可:
grid soft nproc 2047
grid hard nproc 16384
grid soft nofile 1024
grid hard nofile 65536
看來是作用域的問題,增大文件描述符,可參考下面兩篇文章:
通過 ulimit 改善系統性能
http://www.ibm.com/developerworks/cn/linux/l-cn-ulimit/
Linux: Increasing the number of open file descriptors
http://www.cs.uwaterloo.ca/~brecht/servers/openfiles.html