Oracle数据库在linux系统上的安装过程中,涉及到设置linux内核参数;
这些内核参数究竟代表什么含义,如何调整这些参数?
共享内存:
可以通过ipcs -lm
命令查看目前系统共享内存的参数限制:
ipcs -lm —— Shared Memory Limits ——– max number of segments = 4096 max seg size (kbytes) = 1048576 max total shared memory (pages) = 2097152 min seg size (bytes) = 1 |
这里涉及到3个于共享内存相关的参数:SHMMAX,SHMMNI,SHMALL
SHMMAX
- 含义:单个共享内存段最大字节数
- 设置:比SGA略大
- 查看:cat /proc/sys/kernel/shmmax
$ cat /proc/sys/kernel/shmmax 1073741824 |
- 修改:
sysctl -w kernel.shmmax=1073741824 echo “kernel.shmmax=1073741824” >> /etc/sysctl.conf |
SHMMNI
- 含义:共享内存段最大个数
- 设置:至少4096
- 查看:cat /proc/sys/kernel/shmmni
# cat /proc/sys/kernel/shmmni 4096 |
- 修改:
# sysctl -w kernel.shmmni=4096 # echo “kernel.shmmni=4096” >> /etc/sysctl.conf |
SHMALL
- 含义:系统中共享内存页总数
- 设置:至少ceil(shmmax/PAGE_SIZE);ORACLE DOC 默认值:2097152*4096=8GB
- 查看:cat /proc/sys/kernel/shmall
$ getconf PAGE_SIZE 4096 # cat /proc/sys/kernel/shmall 2097152 |
- 修改:
# sysctl -w kernel.shmall=2097152 # echo “kernel.shmall=2097152” >> /etc/sysctl.conf |
信号量:
oracle@lab-rd-01:~$ ipcs -ls —— Semaphore Limits ——– max number of arrays = 128 max semaphores per array = 250 max semaphores system wide = 32000 max ops per semop call = 100 |
SEMMSL
SEMMNI
- 含义:linux系统信号量set最大个数
- 设置:最少128
SEMMNS
- 含义:linux系统中信号量最大个数
- 设置:至少32000;SEMMSL * SEMMNI
SEMOPM
- 含义:semop系统调用允许的信号量最大个数
- 设置:至少100;或者等于SEMMSL
查看信号量设置:cat /proc/sys/kernel/sem
order:SEMMSL, SEMMNS, SEMOPM, SEMMNI
oracle@lab-rd-01:~$ cat /proc/sys/kernel/sem 250 32000 100 128 |
修改:
sysctl -w kernel.sem=”250 32000 100 128″ echo “kernel.sem=250 32000 100 128” >> /etc/sysctl.conf |
ORACLE提供了sysresv工具管理共享内存以及信号量,操作系统级别可以通过ipcs管理。