设置Oracle 环境变量的时候报错:
[oracle@www.linuxidc.com ~]$ source .bash_profile
-bash: ulimit: open files: cannot modify limit: 不允许的操作
设置的环境变量如下:
# Oracle Settings
TMP=/tmp; export TMP
TMPDIR=$TMP; export TMPDIR
ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1; export ORACLE_HOME
ORACLE_SID=orcl; export ORACLE_SID
ORACLE_TERM=xterm; export ORACLE_TERM
PATH=/usr/sbin:$PATH; export PATH
PATH=$ORACLE_HOME/bin:$PATH; export PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/jre:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
把最后一段if 判断去掉后,在source正常. 思考了一下这个问题。 仔细的看了一下官网文档上在Oracle 安装这块对环境变量的设置,没有这一段配置。而是采用的是另一种方法:
在/etc/security/limits.conf 文件里添加:
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
我们cat limits.conf 文件时,在最上面有参数的解释:
# - nofile - max number of open files
# - nproc - max number of processes
这个参数的意思和ulimit 的-u 和-n 参数作用是一样的。
-u
用户最大可用的进程数。
-n
可以打开最大文件描述符的数量。
关于ulimit 的更多内从,参考:
通过 ulimit 改善系统性能
所以,在安装Oracle 添加环境变量的时候,不用在添加:
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
这段ulimit的设置了。
从这个变量上,可以推断出,在.bash_profile 文件里添加if 判断是以前版本的一个设置。 现在变量设置更新了方法,但是以前的文档还存在。 所以大家都在网上搜来搜去,没有留意到这个问题。
知识的更新很重要啊。