在 安装 Oracle 的时候需要调整 linux 的 内核参数 ,但是各参数代表什么含义呢,下面做详细解析。
Linux 安装文档中给出的最小值:
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 4294967295
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048586
各参数详解:
kernel.shmmax :
是核心参数中最重要的参数之一,用于定义单个共享内存段的最大值。设置应该足够大,能在一个共享内存段下容纳下整个的 SGA , 设置的过低可能会导致需要创建多个共享内存段,这样可能导致系统性能的下降。至于导致系统下降的主要原因为在实例启动以及 Server Process 创建的时候,多个小的共享内存段可能会导致当时轻微的系统性能的降低 ( 在启动的时候需要去创建多个虚拟地址段,在进程创建的时候要让进程对多个段进行“识别”,会有一些影响 ) ,但是其他时候都不会有影响。
官方建议值:
32 位 linux 系统:可取最大值为 4GB ( 4294967296bytes ) -1byte ,即 4294967295 。建议值为多于内存的一半,所以如果是 32 为系统,一般可取值为 4294967295 。 32 位系统对 SGA 大小有限制,所以 SGA 肯定可以包含在单个共享内存段中。
64 位 linux 系统:可取的最大值为物理内存值 -1byte ,建议值为多于物理内存的一半,一般取值大于 SGA_MAX_SIZE 即可,可以取物理内存 -1byte 。例如,如果为 12GB 物理内存,可取 12*1024*1024*1024-1=12884901887 , SGA 肯定会包含在单个共享内存段中。
kernel.shmall :
该参数控制可以使用的共享内存的总页数。 Linux 共享内存页大小为 4KB, 共享内存段的大小都是共享内存页大小的整数倍。一个共享内存段的最大大小是 16G ,那么需要共享内存页数是 16GB/4KB=16777216KB /4KB=4194304 (页),也就是 64Bit 系统下 16GB 物理内存,设置 kernel.shmall = 4194304 才符合要求 ( 几乎是原来设置 2097152 的两倍 ) 。这时可以将 shmmax 参数调整到 16G 了,同时可以修改 SGA_MAX_SIZE 和 SGA_TARGET 为 12G (您想设置的 SGA 最大大小,当然也可以是 2G~14G 等,还要协调 PGA 参数及 OS 等其他内存使用,不能设置太满,比如 16G )
kernel.shmmni :
该参数是共享内存段的最大数量。 shmmni 缺省值 4096 ,一般肯定是够用了。
fs.file-max :
该参数决定了 系统中所允许的文件句柄最大数目,文件句柄设置代表 linux 系统中可以打开的文件的数量。
fs.aio-max-nr :
此参数限制并发未完成的请求,应该设置避免 I/O 子系统故障。
kernel.sem :
以 kernel.sem = 250 32000 100 128 为例:
250 是参数 semmsl 的值,表示一个信号量集合中能够包含的信号量最大数目。
32000 是参数 semmns 的值,表示系统内可允许的信号量最大数目。
100 是参数 semopm 的值,表示单个 semopm() 调用在一个信号量集合上可以执行的操作数量。
128 是参数 semmni 的值,表示系统信号量集合总数。
net.ipv4.ip_local_port_range :
表示应用程序 可使用的 IPv4 端口范围。
net.core.rmem_default :
表示套接字接收缓冲区大小的缺省值。
net.core.rmem_max :表示套接字接收缓冲区大小的最大值。
net.core.wmem_default :表示套接字发送缓冲区大小的缺省值。
net.core.wmem_max :
表示套接字发送缓冲区大小的最大值。
--------------------------------end------------------------------------
查看更多关于linux中与Oracle有关的内核参数详解的详细内容...