安装Oracle相关Linux内核参数释义

Linux上安装Oracle时,需对Linux相关内核参数进行配置和调整。其中,相关内核参数大致可分为4类:共享内存(shared memory),信号量(semaphores),网络(network)、打开文件(openfiles)。

1.共享内存
Oracle实例启动时,系统为SGA分配内存,SGA为Oracle系统的共享内存,如果其相关内存参数设置有误,则Oracle不能正确合理的为实例分配共享内存,从而导致系统出现相关问题。其相关共享内存内核参数具体如下所示:
1)kernel.shmall:指定系统可以分配的所有共享内存的最大值,单位为系统页大小(pagesize)。
2)kernel.shmmax:指定系统可分配的单个共享内存段的最大大小,单位为字节(bytes)。
3)kernel.shmmni:指定系统可分配的共享内存段的最大数量。默认值为4096,通常该值就可以满足绝大部分场景需求。

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。
4)semmni:指定整个系统信号量集合的最大数量 最小为100,oracle推荐为128。
semmsl指定了每个信号量集合中信号量的最大数量,而semmni指定了信号量集合的最大数量,因此,系统能够分配的信号量最大数量取决于semmns与semmni*semmsl的较小者。

3.打开文件

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

4.网络

1)net.ipv4.ip_local_port_range:数据库服务器进程启动时,系统会为其分配一个端口,用于与用户进程通信,默认情况下,分配给非root用户进程的端口范围为32768~61000,对于并发数较高的数据库,需修对该值进行修改,一般可以设定为1024~65000,1024下的端口保留给root用户使用。

此外,还有两组参数用于设置socket数据发送及接受缓冲区的大小。第一组为net.ipv4.tcp_rmem及net.ipv4.tcp_wmem,具体介绍如下:
2)net.ipv4.tcp_rmem:指定socket数据发送缓冲区的最小值、默认值及最大值。
3)net.ipv4.tcp_wmem:指定socket数据接收缓冲区的最小值、默认值及最大值。
系统运行期间将会根据两个内核参数设定值进行自动调整。
第二组为net.core.rmem_default、net.core.wmem_default、net.core.rmem_max、net.core.wmem_max。该四个内核参数用于设置socket数据发送缓冲区及接收缓冲区的默认值与最大值,具体介绍如下:
4)net.core.rmem_default:指定socket数据发送缓冲器的默认值,单位为字节(bytes)。
5)net.core.wmem_default:指定socket数据接收缓冲区的默认值,单位为字节(bytes)。
6)net.core.rmem_max:指定socket数据发送缓冲区的最大值,单位为字节(bytes)。
7)net.core.wmem_max:指定socket数据接收缓冲区的最大值,单位为字节(bytes)。
 

你可能感兴趣的:(Oracle,Linux,sysctl,kernel,shm,oracle,linux)