扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
最近,对Linux大页的调整,所以重温了一些Linux内存及SGA等相关概念、参数和配置,这里进行一下记录,省的总Google.
创新互联公司长期为成百上千家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为浦城企业提供专业的网站设计制作、成都做网站,浦城网站改版等技术服务。拥有10余年丰富建站经验和众多成功案例,为您定制开发。
limits.conf文件实际是Linux PAM(插入式认证模块,Pluggable Authentication Modules)中 pam_limits.so 的配置文件,突破系统的默认限制,对系统访问资源有一定保护作用。 limits.conf 和sysctl.conf区别在於limits.conf是针对用户,而sysctl.conf是针对整个系统参数配置。
limits.conf是 pam_limits.so的 配置文件,然後/etc/pam.d/下的应用程序调用pam_***.so模块。譬如说,当用户访问服务器,服务程序将请求发送到PAM模块,PAM模块根据服务名称在/etc/pam.d目 录下选择一个对应的服务文件,然後根据服务文件的内容选择具体的PAM模块进行处理。
格式为:
-c 指定修改core文件的大小,1000指定了core文件大小。也可以对core文件的大小不做限制,如: ulimit -c unlimited
对於需要做许多套接字连接并使它们处於打开状态的应用程序而言,最好通过使用ulimit -n,或者通过设置nofile参数,为用户把文件描述符的数量设置得比默认值高一些
maxlogins - 此用户允许登录的最大数目
注意:要使 limits.conf 文件配置生效,必须要确保 pam_limits.so 文件被加入到启动文件中。查看 /etc/pam.d/login 文件中有:session required /lib/security/pam_limits.so
详细说明:
username|@groupname:设置需要被限制的用户名,组名前面加@和用户名区别。也可以用通配符*来做所有用户的限制。
type:有 soft,hard 和 -,
soft 指的是当前系统生效的设置值。
hard 表明系统中所能设定的最大值。
soft 的限制不能比har 限制高。
用 - 就表明同时设置了 soft 和 hard 的值。
resource:
示例,若机器上部署了ORACLE数据库,我们需要对oracle用户的资源做下调整,如下:
要使 limits.conf 文件配置生效,必须要确保 pam_limits.so 文件被加入到启动文件中。查看 /etc/pam.d/login 文件中有:
--查看当前系统配置文件ulimit的全局配置
ulimit -a
如果未进行具体设置的话,会使用默认配置,如下查看:
批注:当使用*号让全局用户生效的时候,生效的nproc的值大小是受文件/etc/security/limits.d/90-nproc.conf中nproc值大小制约的,而如果仅仅是针对某个用户,那麽就不受该文件nproc值大小的影响。
Linux系统 /etc/security/limits.conf 配置
参考自
在oracle 11g中,使用一个参数memory_target就能够实现SGA和PGA组件依据工作负荷进行自动内存分配。oracle推荐使用自动内存管理简化内存分配。 oracle 11g依然支持手工内存分配: 1:oracle11g使用memory_target来支持内存自动分配。 2:使用sg...
如果是10g,那么修改参数,sga_target,和sga_maxsize以及pga_xxxxx(具体的名字忘记了,自己show parameter pga查一下)
修改语句举例:alter system set sga_target=xxxxx;scope=spfile;全部修改后重起数据库。
如果是11g,那么是修改参数memory_target.修改参数一致。
如果是linux系统,还要修改操作系统文件system文件(操作系统不同,该文件名称也不同),其中有一个值,最好改一下,不过要停库后修改。(不改也可以)
以dba身份连接数据库后,敲入命令show SGA 就能查询到Oracle的内存大小了。
可以通过修改数据库的初始化文件init_sid.ora文件中的有关SGA的参数修改大小,修改完成后,重启数据库。
ORACLE 10g的话看你是否使用ASMM(自动共享内存管理,11g就是AMM了),如果是的话,就设置参数:sga_target、pga_aggregate_target两个参数就O了,至于比例看系统,OLTP系统前者设计大一点,占用整个INSTANCE百分之六七十比较正常,OLAP的时候SGA没有必要要那么大了。
不过你要自己设置每一个细节参数的话,就将上述参数设置为0就会自动关闭ASMM(对应进程MMAN,10g和11g没有变化都是这个进程),然后一般设置一下参数:
1、数据缓冲区:
db_cache_size 数据缓冲区DEFAULT区域大小,也是默认的大小
db_keep_cache_size 数据缓冲区keep区域大小,几乎不会被替换掉的内存区
db_recycle_cache_siez 数据recycle区域大小,几乎用完就回收掉的内存区
2、共享池
shared_pool_size
内部保存SQL信息、数据字典、控制信息,其实这部分最好不用自己去控制,它自己管理就行。里面有个参数:shared_pool_reserved_size适当的时候也可以配置一下。
如果你要用rman相关的东西,要配置一下大池,如果没有JAVA PROD在ORACLE内部,JAVA池几乎无用,做Stream复制,就设置一下stream池。
PGA一般设置一个最大值就行,内部它一般自己去调节(PGA内部一般有一段内存和一些后台进程组成),分专用模式还是共享模式的区别(MTS系统中),内部有些细节参数会根据CPU去配置的(如DBWR最多可以20个,最少是1个,可根据CPU的个数设置,但是一个INSTANCE最多20个),另外可以设置内部的SORT_AREA_SIZE、hash_area_size等等用于用户进程查询时产生的内存开销(超过这个值就会到临时表空间去做了),
如果是10g,那么修改参数,sga_target,和sga_maxsize以及pga_xxxxx(具体的名字忘记了,自己show parameter pga查一下)
修改语句举例:alter system set sga_target=xxxxx;scope=spfile;全部修改后重起数据库。
如果是11g,那么是修改参数memory_target.修改参数一致。
如果是linux系统,还要修改操作系统文件system文件(操作系统不同,该文件名称也不同),其中有一个值,最好改一下,不过要停库后修改。(不改也可以)
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流