linux 下安装oracle11g内核参数介绍

    xiaoxiao2021-03-29  27

    Linux系统里安装oracle11g时,当前期的准备工作完成后(例如相关硬件配置完毕、所需要软件包安装完毕),就需要进行Linux内核配置

       内核参数大致可以分为4类:共享内存(shared memory)、信号量(semaphores)、网络(network)、打开文件(openfiles)。

    1:共享内存

    oracle实例启动时,调用SGA分配内存,SGA由oracle多个进程共享,这部分内存会以共享内存的形式分配,如果共享内存参数设置错误,会让oracle不能为实例分配足够的SGA 从而导致实例启动失败   具体的共享内存内核参数含义:

    (1):kernel.shmmax:每个内存段的最大大小,以字节为单位,是设置共享内存时最重要的一个内核参数,其值要大于或者等于SGA_MAX_SIZE初始化参数的大小,否则SGA会由多个内存段组成,导致效率降低,另外这个参数还要不小于物理内存的1/2或2GB

    (2):kernel.shmmni:系统可分配的共享内存段的最大数量。其值也是在系统中可以启动的oracle实例的最大数量,其默认值为4096,通常在生产情况下一个服务器同时启动的实例数达不到这个数字,所以默认就OK

    (3):kernel.shmall:指定任意时刻,系统中可以分配的所有共享内存段的总和的最大值,也可以保留默认值

    2:信号量

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

    通过sem内核参数来制定各个信号量参数值 如kernel.sem=250 32000 100 128

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

    (1):semmsl用于指定每个信号量集合中的最大信号量个数,其值或者取其最小值100,或者为所有数据库中最大的processes参数加10,选取较大者

    (2):semmns用于指定整个系统范围内信号量总数的最大值,默认值为32000,保留即可

    (3):semopm用于指定每个semop()系统调用可以设置的信号量操作的最大数量,推荐10

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

    (4):semmni用于指定信号量集合的最大数量 最小为100,oracle推荐取128

    3:打开文件

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

    4:网络

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

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

    第一组为net.ipv4.tcp_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  这四个内核参数用于设置socket数据发送缓冲区及接收缓冲区的默认值大小与最大大小  这几个参数默认值为:

    net.core.rmem_default=110592

    net.core.wmem_default=110592

    net.core.rmem_max=131071

    net.core.wmem_max=131071

    修改内核参数指令:

    vi /etc/sysctl.conf

    在sysctl.conf文件末尾加入要取非默认值的参数及其对应值   保存退出后  执行以下命令生效:

    sysctl -p

    
    转载请注明原文地址: https://ju.6miu.com/read-664970.html

    最新回复(0)