在solaris10上安装ORACLE 12c时遇到:Soft limit:maxmum open file descriptors错误

--配置oracle最大打开文件数限制

 

Solaris操作系统具有打开文件数量的限制,数据库的db_files参数设置会受操作系统的参数限制。

在solaris10安装12c的过程中出现这样的一个环境检查错误:

在solaris10上安装ORACLE 12c时遇到:Soft limit:maxmum open file descriptors错误_第1张图片

 

 

 

 

 

Soft Limit: maximum open file descriptors - This is a prerequisite condition to test whether the soft limit for "maximum open file descriptors" is set correctly.
Expected Value : 1024
Actual Value   : 256




--查看参数限制:
bash-3.2# ulimit -a
core file size          (blocks, -c) unlimited
data seg size           (kbytes, -d) unlimited
file size               (blocks, -f) unlimited
open files                      (-n) 256
pipe size            (512 bytes, -p) 10
stack size              (kbytes, -s) 10240
cpu time               (seconds, -t) unlimited
max user processes              (-u) 28565
virtual memory          (kbytes, -v) unlimited
bash-3.2# 


##建议使用第三种方法:
(1)修改/etc/system参数
在Solaris10上,这种方法已经不建议使用,但这种方式仍然有效。/etc/system中设置参数是全局有效的,即所有用户均会受影响。并且设置后,需要重启系统才能生效。
设置方法是在/etc/system文件中增加以下两个参数,然后重启系统。
set rlim_fd_cur=1024
set rlim_fd_max=65535



(2)使用ulimit命令修改(立即生效,一旦当前SHELL退出设置即失效)
ulimit命令只能修改当前SHELL及其子进程的设置,设置后立即生效,'一旦当前SHELL退出设置即失效。-S参数用于设置软限制,-H参数用于设置硬限制'。
ulimit -S -n 65536 
ulimit -H -n 65536
--ulimit命令中open files显示的是软限制,可以用prctl命令显示硬限制,即privileged值。
bash-3.2# prctl -i process $$
process: 13110: bash
NAME    PRIVILEGE       VALUE    FLAG   ACTION                       RECIPIENT
process.max-address-space
        privileged      16.0EB    max   deny                                 -
        system          16.0EB    max   deny                                 -
process.max-file-descriptor
        basic             256       -   deny                             13110
        privileged      65.5K       -   deny                                 -
        system          2.15G     max   deny                                 -
process.max-core-size
        privileged      8.00EB    max   deny                                 -
        system          8.00EB    max   deny                                 -
process.max-stack-size
        basic           10.0MB      -   deny                             13110
        privileged       125TB    max   deny                                 -
        system           125TB    max   deny                                 -
....
...
...

 

 

 

 

 

(3)使用project(立即生效,永久)

 

 

project是Solaris10新增加的特性,可以通过设置project参数为一个用户或一组用户设置参数值。设置后可立即生效。
'但是,root用户的结果只受/etc/system里参数的影响,而不受project user.oracle影响,root用户不属于此project. '
以下是设置示例:



bash-3.2# :/ #>projadd user.oracle  (创建project user.oracle) 
bash-3.2# :/ #>id -p oracle 
uid=100(oracle) gid=1(other) projid=100(user.oracle)   (oracle用户属于project user.oracle)
bash-3.2# :/ #>projmod -a -K "process.max-file-descriptor=(basic,65534,deny)" user.oracle 
bash-3.2# :/ #>projmod -a -K "process.max-file-descriptor=(priv,65535,deny)" user.oracle 
bash-3.2# :/ #>grep 'user.oracle' /etc/project 
user.oracle:100::::process.max-file-descriptor=(basic,65534,deny),(priv,65535,deny)
设置basic和privilege值分别为65534和65535,不能越过/etc/system中的最大硬限制65535;
bash-3.2# :/ #>tail -2 /etc/system 
set rlim_fd_cur=1024 
set rlim_fd_max=65535
bash-3.2# plimit $$
13110:  bash
   resource              current         maximum
  time(seconds)         unlimited       unlimited
  file(blocks)          unlimited       unlimited
  data(kbytes)          unlimited       unlimited
  stack(kbytes)         10240           unlimited
  coredump(blocks)      unlimited       unlimited
  nofiles(descriptors)  256             65536
  vmemory(kbytes)       unlimited       unlimited
bash-3.2# 


root用户的结果只受/etc/system里参数的影响,而不受project user.oracle影响,root用户不属于此project. 
bash-3.2# su - oracle 
Oracle Corporation      SunOS 5.10      Generic Patch   January 2005
-sh: TEMP=/tmp: is not an identifier
$ bash
bash-3.2$ plimit $$ 
14704:  bash
   resource              current         maximum
  time(seconds)         unlimited       unlimited
  file(blocks)          unlimited       unlimited
  data(kbytes)          unlimited       unlimited
  stack(kbytes)         10240           unlimited
  coredump(blocks)      unlimited       unlimited
  nofiles(descriptors)  65534           65535
  vmemory(kbytes)       unlimited       unlimited

 

bash-3.2$ 

 

其他资源限制的添加如下:

--同样如上进行需要修改其他参数:
noexec_user_stack=1
semsys:seminfo_semmni=100
semsys:seminfo_semmns=1024
semsys:seminfo_semmsl=256
semsys:seminfo_semvmx=32767
shmsys:shminfo_shmmax=4294967295
shmsys:shminfo_shmmni=100
rlim_fd_max=65536
rlim_fd_cur=4096
maxuprc=16384
max_nprocs=3000


projmod -a -K  "project.max-sem-ids=(priv,100,deny)" user.oracle
projmod -a -K  "process.max-sem-nsems=(priv,256,deny)" user.oracle
projmod -a -K  "project.max-shm-memory=(priv,4294967295,deny)" user.oracle
projmod -a -K  "project.max-shm-ids=(priv,100,deny)" user.oracle

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(Oracle,系列)