很多文档,似乎包括  Oracle 官方文档,都要第四步(执行 ulimit),其实这是误导,完全是画蛇添足!!!
ulimit 是由 pam_limits 根据 limits.conf 中的设置配置的。

至于用 root 登录后,su 切换到 oracle 出错,而直接用用 oracle 登录正常。则是因为:

用 oracle 登录使用配置 /etc/pam.d/login,它包含了对 pam_limits 的调用,因此已经设置了 ulimit,
那么再设置不大于 limits.conf 中的配置的限额,当然不会出错。

用 root 登录后,su 切换到 oracle,使用配置 /etc/pam.d/su,它对 pam_limits 的调用被注释掉了,
所以根本没有设置 ulimit,用的是默认 ulimit,再设置大于默认配置的限额,当然要出错。

所以用 root 登录后,你要切换到 oracle,必须修改 /etc/pam.d/su,或者使用 sudo。

2010/5/4 wolfman.wu <r6...@21cn.com>

>  参照 oracle 11g 安装文档要求, 作了相应设定(由于步骤比较长,在问题后面罗列出):
>
>
> 8X============================================================================X8
>
>
> 1. 如果在终端用 root 登录, 每次从 root 执行:
>       su -l oracle
>     时, 系统报错:
>       -su: ulimit: max user processes: connot modify limit: Operation not
> permitted
>
> 2. 如果用 oracle 登录,则无上面错误
>
>
>
> 问题:
>    由于这个问题,
>    1) 如果是用 oracle 用户直接登录,执行 dbstart $ORACLE_HOME 则无此错误
>
>    2) 如果在启动脚本(initscript)里 或 先以 root 登录后执行:
>        su - oracle -c "dbstart $ORACLE_HOME"
>       将会报如前面所述出错信息.
>
>
>
>    !!!期待各位朋友指教,我该如何操作才可以 在 initscript 里执行 oracle的启动脚本?!!!
>
>
>
>
> 8X============================================================================X8
>
> 具体设定(修改并且重启过系统了):
> 1. /etc/sysctl.confi 修改成:
>  fs.aio-max-nr = 1048576
>  fs.file-max = 6815744
>  kernel.shmall = 2097152
>  kernel.shmmax = 536870912
>  kernel.shmmni = 4096
>  kernel.sem = 250 32000 100 128
>  net.ipv4.ip_local_port_range = 9000 65500
>  net.core.rmem_default = 262144
>  net.core.rmem_max = 4194304
>  net.core.wmem_default = 262144
>  net.core.wmem_max = 1048586
>
>
> 2. /etc/pam.d/login 中确认已有:
>     session    required   pam_limits.so
>
>
> 3. /etc/security/limits.conf 添加:
>     oracle   hard    nproc     16384
>     oracle   soft    nproc     2047
>     oracle   hard    nofile    65536
>     oracle   soft    nofile    1024
>
>
> 4. 修改 /etc/profile, 加入
>  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
>
>

回复