zoukankan      html  css  js  c++  java
  • 谈谈ORACLE内核参数

    以服务器内存为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的大小。

  • 相关阅读:
    利用virtual box安装ubuntu16.4,没有继续(下一步)的解决方案
    最好用的几个谷歌镜像(推荐理由:无广告)
    vs2017和vs2019专业版和企业版
    c# List根据某个属性进行分类,变成以属性名称作为分类的多个List
    vs2015安装编辑神器:resharper10.0
    c# 正则表达式替换字符串中常见的特殊字符
    IL中间语言指令大全
    c#进阶一:使用ILDASM来查看c#中间语言
    SQL server脚本语句积累
    SQLServer事务在C#当中的应用
  • 原文地址:https://www.cnblogs.com/shihao/p/2087655.html
Copyright © 2011-2022 走看看