内核参数大致可以分为4类:

  1. 共享内存(shared memory)
  2. 信号量(semaphores)
  3. 网络(network)
  4. 打开文件(open files)

一、共享内存

共享内存是用于进程间通信的一种机制,共享内存可以由指定的多个进程共用,是一种系统资源。共享内存以段的形式分配,段有一个最大大小,可以分配的段数有限。

Oracle实例启动时,执行shmget()系统调用为SGA分配内存,SGA由Oracle的多个进程共享,这部分内存会以共享内存的形式分配。如果共享内存参数设置错误,会使得Oracle不能为实例分配足够的SGA,从而导致实例启动失败。

涉及SGA大小及其内部各部分内存区域大小的两个重要的初始化参数是sga_target及sga_max_size(注意:这里的初始化参数是指Oracle实例的初始化参数,而不是操作系统的内核参数)。sga_max_size指定在数据库运行过程中,SGA可以达到的最大大小;sga_target指定当前SGA的大小,如果其值非0,也表示由Oracle自动分配SGA中的各个内存区域大小。

下面是具体的共享内存内核参数及其含义。

kernel.shmmax:每个内存段的最大大小,以字节为单位,是设置共享内存时最重要的一个内核参数,其值应该大于或等于sga_max_size初始化参数的大小,否则SGA会由多个内存段构成,导致效率降低,另外这个参数还要小于物理内存的1/2或2GB。默认情况下,在32位x86系统中,Oracle SGA最大不能超过1.7GB。

kernel.shmmni:系统可分配的共享内存段最大数量。其值也是在系统中可以启动的Oracl实例的最大数量,其默认值为4096,显然在生产环境下,一个服务器上同时启动的实例个数很难达到这个数量,为了正常运行Oracle,此值不需要修改,保留其默认值即可。

kernel.shmall:指定在任意时刻,系统中可以分配的所有共享内存段的总和的最大值(shmmax指定一个共享内存段的最大大小),以数据项(page)为单位。其值应该设置为不小于shmmax/page_size。在32位x86系统中,shmall的默认值为2097152,数据页大小默认为4KB,这样,在32位x86系统中可以分配的共享内存最大可以为8GB。在Itanium系统,shmall的默认值为524288,数据页大小默认为16KB,通过简单计算可以得知共享内存的部和最大也是8GB。如果服务器上运行的所有实例的SGA总和不超过8GB,则可以保留shmall的默认值。

可以使用ipcs -lm 命令查看当前分配的共享内存段情况,如下:

  1. [root@localhost ~]# ipcs -lm
  2. ------ Shared Memory Limits --------
  3. max number of segments = 4096
  4. max seg size (kbytes) = 524288
  5. max total shared memory (kbytes) = 8388608
  6. min seg size (bytes) = 1

二、信号量

信号量是一种控制资源访问的方法。Oracle实例主要使用信号量来控制共享内存的访问。信号量基于PROCESSES初始化参数分配,每个Oracle实例启动时都要分配一个信号量集合,其中的信号量数量至少要等于PROCESSES初始化参数的值,如果不能分配足够的信号量,Oracle实例将不能启动。

通过sem内核参数来指定各个信号量参数值,如:

  1. kernel.sem = 250 32000 100 128

其中,等号右边的4个整数分别表示semmsl、semmns、semopm、semmni的值。

  1. semmsl用于指定第个信号量集合中的最大信号量个数,其值或者取其最小值100,或者为所有数据库中最大的PROCESSES参数加10,选取其较大者;
  2. semmns用于指定整个系统范围内信号量总数的最大值。默认值为32000,一般保留此默认值即可。
  3. semopm用于指定每个semop()系统调用可以设置的信号量操作的最大数量,一个semop()系统调用可以设置多个信号量,推荐取值为100;
  4. semmni用于指定信号量集合的最大数量,最小取值为100,Oracle推荐此参数取值为128。

因为semmsl指定了每个信号量集合中的最大信号量个数,而semmni指定了信号量集合的最大值,最后,系统能够分配的信号量个数取决于semmns与semmni*semmsl(semmns与semmsl的乘积)的较小者。

三、打开文件

fs.file-max用于指定每个进程可以打开的最大文件数量。Oracle数据库文件在数据库运行期间一直要保持打开状态。应该设置为数据库中的数据文件个数的最大值,推荐设置为一个较大的数值,如65536。

四、网络

net.ipv4.ip_local_port_range:在数据库专用服务器进程启动时,会被分配一个IP端口,用来与用户进程通信,默认情况下,分配给非root用户进程的端口范围为32768~61000,对于用户数很多的数据库,需要修改这个默认值,一般可以设置为1024~65000,小于1024的端口保留给root用户启动的进程使用。

另外还有两组参数用于设置socket数据发送及接收缓冲区的大小。

第一组为net.ipv4.txp_rmem及net.ipv4.tcp_wmem。

net.ipv4.tcp_rmem用于指定socket数据发送缓冲区的最小值、默认值及最大值。

net.ipv4.tcp_wmem用于指定socket数据接收缓冲区的最小值、默认值及最大值。

这两个内核参数的实际取值会在系统运行时根据其设置自动调整。

第二组为net.core.rmem_default、net.core.wmem_default、net.core.rmem_max、net.core.wmem_max。这4个内核参数用于设置socket数据发送缓冲区及接收缓冲区的默认大小与最大大小。

Oracle推荐设置为262144,否则在安装Oracle软件时,会发出警告信息。

在两组内核参数中,默认值的取值以第一组为准,最大值的取值以第二组为准。所以,要注意,第一组内核参数的默认值要设置为Oracle推荐的262144,在Oracle软件安装完毕后,应该修改第二组参数中的最大值为524288,而安装时,为了避免警告信息,可心设置为262144。

为了Oracle数据库正常运行,下面是Oracle推荐要修改的内参数及相应数值的一个总结:

  1. kernel.shmall=2097152
  2. kernel.shmmax=536870912(物理内存的一半)
  3. kernel.shmmni=4096
  4. kernel.sem=250 32000 100 128
  5. fs.file-max=65536
  6. net.ipv4.ip_local_port_range=1024 65000
  7. net.core.rmem_default=262144
  8. net.core.wmem_default=262144
  9. net.core.rmem_max=262144
  10. net.core.wmem_max=262144

转载于:https://blog.51cto.com/pythonman/1147972

Oracle内核参数介绍相关推荐

  1. linux安装oracle 操作系统内核参数 aio,Oracle Study之案例--安装Oracle内核参数配置

    Oracle Study之案例--安装Oracle内核参数配置 在Linux系统下,安装Oracle之前,除了检查操作系统的硬件和软件是否满足安装需要之外,一个重点就是修改内核参数,其中最主要的是和内 ...

  2. oracle 内核参数设置

    oracle 内核参数设置 共享内存的相关内核参数设置 Kernel.shmmax shmmax 指的是单个共享内存段的最大尺寸,单位为字节 oracle 建议,kernel.shmmax的值不能少于 ...

  3. Linux 下 Oracle 内核参数优化

    数据库的性能优化涉及到整个数据库运行环境的方方面面,诸如操作系统,Oracle自身,存储,网络等等几个大块.而操作系统则是Oracle稳定运行与最大化性能的基石.本文主要描述基于Linux系统下 Or ...

  4. Oracle 内核参数

    安装Oracle的时候,可以参考Oracle 的安装文档,来设置相关内核参数的值,但是有些参数的值还是需要根据我们自己的情况来进行调整.注:不同系统的参数不同,本篇针对linux. 一.Linux 系 ...

  5. ORACLE内核参数

    服务器内存为4G的情况下 修改/etc/sysctl.conf文件 (ROOT账户) kernel.shmmax = 2147483648 //公式:2G*1024*1024*1024=2147483 ...

  6. aix内核是linux,linux和aix内核参数检查

    安装oracle软件时需要设置操作系统级别的用户限制,后期检查可以使用如下命令,方便问题的排查工作 linux: tail -15 /etc/security/limits.conf tail -30 ...

  7. oracle solaris 内核 源码,Oracle和SUN Solaris内核参数

    Oracle和SUN Solaris内核参数 2010-4-11文字大小:大中小 本文描画了Sun Solaris上运转Oracle数据库所须要配置的一些内核参数. 一些预备知识shared memo ...

  8. 修改oracle用户资源限制,RHEL5中安装Oracle11gR2修改用户SHELL限制、环境配置、内核参数...

    修改用户的SHELL的限制[root@localhost -]# vi /etc/security/limits.conf # /etc/security/limits.conf # #Each li ...

  9. oracle中affirm,2.Oracle Data Guard 参数介绍

    Oracle Data Guard 参数介绍 Data Guard作为Oracle提供的一个高可用及灾备解决方案,理解并可以实施它对于DBA来说是非常重要套的技能 上节介绍了有关Data Guard的 ...

最新文章

  1. Index of XML
  2. 程序员跳槽全攻略pdf
  3. 4K 海思 联咏 芯片_老电视也有春天,换装海美迪4K电视盒子H7 Plus
  4. java logger使用_这才是JAVA中打印日志的正确姿势
  5. Crontab 计划任务
  6. Win7下MATLAB 7.0下载地址+详细安装+运行错误解决
  7. html出现滚动条页面闪动,CSS3 calc实现滚动条出现页面不跳动闪动
  8. 科技文献检索(六)——检索语言
  9. Boost电路的参数设计
  10. 牛客小白月赛2 J.美
  11. 用docker跑机器学习环境
  12. C实现 费氏查找算法
  13. 大数据能否带来风控革命
  14. python开发之Socket网络编程
  15. 先成家后立业还是先立业后成家?
  16. 计算机终端mac是什么,Mac电脑终端操作
  17. unresolved external symbol __imp__timeGetTime@0
  18. ZC706 GTX折腾记
  19. DAMA数据治理学习笔记-数据管理成熟度评估
  20. Linux eth0网络设备无法激活解决办法

热门文章

  1. 女朋友存好多网上男明星的照片,我准备用python全部换成我的脸
  2. linux防火墙伦堂,「linux专栏」自从看了这篇文章,我彻底搞懂了selinux和防火墙...
  3. Linux中的环境变量知多少?
  4. 三种云存储加密的方法
  5. php 字符串转时间戳_php如何将时间字符串转换为时间戳
  6. 用matlab读取三角波及其频谱,信号与系统利用MATLAB分析信号频谱作业(第四章)以及结论.doc...
  7. python 数据库支持sql_Python 对数据库进行SQL操作
  8. 红书《题目与解读》第一章 数学 题解《ACM国际大学生程序设计竞赛题目与解读》
  9. 【牛客挑战赛】我是 A 题
  10. 0x02.基本算法 — 递推与递归