Oracle中调整limits资源限制和sysctl内存参数释义

本文介绍了Oracle数据库在Linux系统中配置limits资源限制和sysctl内核参数的重要性,详细解析了limits.conf和sysctl.conf文件的参数设置,包括nofile、nproc、stack等,并探讨了参数的含义和合理设置方法,以确保系统性能和稳定性。

 

 

    很多人安装数据库都会,配置limits资源限制和sysctl内存参数,参考oracle官方文档就能完成所有的配置。但是真正知道这些参数是做什么的吗?估计大部分人都不清楚。

 

    oracle官方文档是给所有使用oracle用户的参考建议,但是在安装时设置的某些参数,不一定就是合理的,需要根据自身业务系统来确定设置。那么哪些参数设置得不合理呢?我们首先需要仔细研读每个参数的含义,然后才能知道设置是否合理。

 

    下面介绍limitssysctl及如何设置合适的值:

 

1.下面是我之前写的脚本部署片段

 

#7.配置limits资源限制

echo "

oracle                soft                     nofile                  1024

oracle                hard          nofile                  65536

oracle                soft                     nproc                 2047

oracle                hard          nproc                 16384

oracle                soft                     stack                  10240

oracle                hard          stack                  32768

" >> /etc/security/limits.conf

 

#8.配置内核参数

echo "

fs.aio-max-nr = 1048576

fs.file-max = 6815744

kernel.shmall = 2097152

kernel.shmmax = 1052045312

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 = 1048576

" >> /etc/sysctl.conf

 

sysctl -p

 

 

2.limits资源限制解析

 

#####之所以对oracle用户做资源的限制,其实主要是出于性能上的考虑,防止oracle用户过渡消耗有限资源,使其系统变得臃肿缓慢。

2.1 limits.conf

    limits.conf 文件实际是 Linux PAM(插入式认证模块,Pluggable Authentication Modules)中pam_limits.so的配置文件,而且只针对于单个会话。

    limits.conf的格式如下:

username|@groupname   type   resource   limit

 

2.2 username|@groupname

    username|@groupname:设置需要被限制的用户名,组名前面加@和用户名区别。也可以用通配符*来做所有用户的限制。

 

2.3 type

    type:有 softhard 和“-”,soft 指的是当前系统生效的设置值。hard 表明系统中所能设定的最大值。soft 的限制不能比hard 限制高。用“-”就表明同时设置了soft hard 的值。

 

2.4 resource

主要有一下资源:

    core                            ### 限制内核文件的大小

    data                           ### 最大数据大小

    fsize                             ### 最大文件大小

    memlock                   ### 最大锁定内存地址空间

         nofile                         ### 打开文件的最大数目

         rss                                ### 最大持久设置大小

         stack                           ### 最大栈大小

         cpu                                       ### 以分钟为单位的最多 CPU 时间

         noproc                      ### 进程的最大数目

         as                                 ### 地址空间限制

         maxlogins                 ### 此用户允许登录的最大数目,等等

 

    要使 limits.conf 文件配置生效,必须要确保 pam_limits.so 文件被加入到启动文件中。查看 /etc/pam.d/login 文件中有:

session required /lib/security/pam_limits.so

    按下面说的,可以用ulimit -n 32768设置最大描述符,不过只对当前会话有用,而且要root,这个不好办。或者修改/etc/security/limits.conf,但要重启

 

2.5 ulimit命令

设置限制     可以把命令加到profile文件里,也可以在/etc/security/limits.conf文件中定义

限制。

命令参数

-a      显示所有限制

-c      core文件大小的上限

-d      进程数据段大小的上限

-f      shell所能创建的文件大小的上限

-m     驻留内存大小的上限

-s      堆栈大小的上限

-t      每秒可占用的CPU时间上限

-p     管道大小

-n     打开文件数的上限

-u     进程数的上限

-v     虚拟内存的上限

 

 

3. sysctl内核参数解析

 

3.1 kernel.参数

kernel.shmall = 2097152   

## 1> 表示所有内存大小。可以分配的所有共享内存段的总和最大值。(以页为单位)

## 2> 该参数以页为单位,linux共享内存页一般为4koracle默认参数是2097152,如果系统内存大于该参数,才考虑调整

## 3> 如何计算:2097152*4k/1024 = 8192M =8G

## 4> 如何设置该值:推荐设置为物理内存大小除以分页大小。

      获取分页大小   getconf PAGE_SIZE     4096 =4k

## 5> 假如linux系统内存为16G,如何设置shmall参数:

16G *1024*1024/4K = 4194304

## 6> 查看当前设置:cat /proc/sys/kernel/shmall

 

 

kernel.shmmax = 1052045312   

## 1> 表示最大共享内存,如果小的话可以按情况修改。一般为物理内存的一半。

## 2> 这个值的设置应该大于SGA_MAX_TARGETMEMORY_MAX_TARGET的值。因此对于安装oracle数据库的系统,shammax的值应该比内存的1/2大一些

## 3> 如何计算:1052045312/1024/1024=1003.30859375M   不到1G

## 4> 查看系统内存及当前shmmax设置:

      grep MemTotal /proc/meminfo

      cat /proc/sys/kernel/shmmax

 

 

kernel.shmmni = 4096   

## 1> 内核参数是共享内存段的最大数量(注意这个参数不是shmmin,shmmni, shmmin 表示内存段最小大小) shmmni 缺省值4096

## 2> 该值也是系统中可以启动oracle实例的最大数量。通常不需要更改

## 3> 查看当前设置:cat /proc/sys/kernel/shmmni

 

 

kernel.sem = 250 32000 100 128   

##  表示设置的信号量。4个参数依次是

      SEMMSL:每个用户拥有信号量最大数

      SEMMNS:系统信号量最大数

      SEMOPM:每次semopm系统调用操作数

      SEMMNI:系统辛苦量集数最大数。  

    4个参数为固定内容大小。

## 查看当前设置:cat /proc/sys/kernel/sem

 

 

3.2 net.参数

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 = 1048576    ## 发送缓冲区的最大值

 

 

## 如何查看当前设置:

cat /proc/sys/net/ipv4/ip_local_port_range

cat /proc/sys/net/core/rmem_default

cat /proc/sys/net/core/rmem_max

cat /proc/sys/net/core/wmem_default

cat /proc/sys/net/core/wmem_max

 

 

3.3 fs.参数

fs.aio-max-nr = 1048576    ## 指的是同时可以拥有的异步IO请求数目。

                       ## 计算:1048576/1024 =1024K

 

fs.file-max = 6815744    ## 表示一个进程可以打开的文件句柄的最大数量。文件句柄设置代表linux系统中可以打开的文件数量

 

 

## 如何查看当前设置:

cat /proc/sys/fs/aio-max-nr

cat /proc/sys/fs/file-max

 

 

最后注意:

修改好/etc/sysctl.conf 内核参数后,记得刷新系统内核

sysctl -p

 

 

 

 

 

reference        http://docs.oracle.com/cd/E11882_01/install.112/e24326/toc.htm#BHCJCGCB

      http://blog.youkuaiyun.com/halou90/article/details/49510747

      http://www.cnblogs.com/sopost/archive/2012/05/20/2509358.html

      http://www.2cto.com/database/201209/155244.html

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30130773/viewspace-2122120/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/30130773/viewspace-2122120/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值