IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

谈谈ORACLE内核参数

DBA Blog 2011-05-25 13:52:50 累计浏览 1,728 次
本机暂存

以服务器内存为4G
修改/etc/sysctl.conf文件 (ROOT账户)

kernel.shmmax = 2147483648
//公式:2G*1024*1024*1024=2147483648(字节)
//表示最大共享内存,如果小的话可以按实际情况而定,一般为物理内存的一半(单位:字节)

kernel.shmmni=4096
//表示最小共享内存固定4096KB(由于32位操作系统默认一页为4K)

kernel.shmall=1048576
//公式:4G*1024*1024/4K = 1048576(页)
//表示所有内存大小(单位:页)

kernel.sem=250 32000 100 128
//4个参数依次是SEMMSL:每个用户拥有信号量最大数,SEMMNS:系统信号量最大数,SEMOPM:每次semopm系统调用操作数,SEMMNI:系统辛苦量集数最大数。这4个参数为固定内容大小

fs.file-max=65536
//file-max固定大小65536

net.ipv4.ip_local_port_range=1024 65000
//ip_local_port_range表示端口的范围,为指定的内容

以上步骤做完执行 /sbin/sysctl -p 使内核生效

验证参数(root账户执行):
#/sbin/sysctl -a | grep shm
#/sbin/sysctl -a | grep sem
#/sbin/sysctl -a | grep file-max
#/sbin/sysctl -a | grep ip_local_port_range

1、与oracle相关的信号量和共享内存段参数

   一般unix系统中和信号量相关的是三个参数SEMMNI SEMMSL SEMMNS。他们相互关联决定系统可以分配的信号量。Oracle使用信号量完成内部进程之间的通信。

   关于共享内存段使用shmmx参数进行总体控制。它指定了系统可以分配的共享内存段最大大小,实际并没有分配那么多只是给出一个可以使用的最大限制。

   对于类核参数的修改必须要重新启动系统之后才会生效。
2
、出现信号量和共享内存段相关问题的情况

   oracle只有在startup nomount的时候才会请求os的这些资源,用于建立SGA和启动后台进程。

   有些情况下因为oracle崩溃之后os没有清除oracle分配的SGA,也可能造成共享内存段不足,需要人工清除。

3、如何解决相关的问题

   你可以简单的修改init参数减少oracle对共享内存段和信号量的需求。

   对于控制信号量的三个参数SEMMNI SEMMSL SEMMNS 。最终可以使用的信号量由下面公式 提取 (semmsl * semmni) 或者 semmns中最小的值。

    例如在linux. 进入目录/proc/sys/kernel;用cat命令或more命令查看semaphore当前参数的值:
cat sem
命令运行后将会出现如下的结果:
250 32000 32 128
其中, 250 是参数SEMMSL的值,32000是参数SEMMNS的值, 32是参数SEMOPM的值,而128则是参数SEMMNI的值。250*128=32000

对于oracle7需要信号量的设置等于initprocesses的设置。对于8i 9i需要等于processes*2

对于信号量参数的设定一定要小心,因为不正确的设置可能会让系统使用默认值。这个值一般比oracle系统要求的低。在HP unix上遇到过这样的问题,当时在参数配置的时候指定两个不同的sem-mni造成系统使用默认的设置。

对于共享内存段,系统的设置至少要等于SGA的大小。

同分类推荐文章

  1. 使用deepseek进行Oracle恢复,引起重大故障 (2026-06-22 10:56:00)
  2. 接手一个只差临门一脚的数据库恢复 (2026-06-18 00:13:09)
  3. 我做了一个 AI 版的 StarRocks 升级风险扫描工具,直接帮我定位到一个风险 (2026-06-15 01:00:00)

查看更多 数据库 文章 →

建议继续学习

  1. Linux如何统计进程的CPU利用率 (累计阅读 16,307)
  2. Oracle MTS模式下 进程地址与会话信息 (累计阅读 14,406)
  3. 我的 RHCA 之路 (累计阅读 14,011)
  4. Linux内存点滴 用户进程内存空间 (累计阅读 13,228)
  5. 给程序员新手的一些建议 (累计阅读 13,088)
  6. Linux 性能监控、测试、优化工具 (累计阅读 13,010)
  7. 关于linux内存free的一些事情 (累计阅读 12,866)
  8. ps - 按进程消耗内存多少排序 (累计阅读 12,685)
  9. Google怎么用linux (累计阅读 12,580)
  10. Linux Used内存到底哪里去了? (累计阅读 11,866)