Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

19.4. Verifying Kernel Parameters

To see all kernel parameters, execute:
su - root
sysctl -a
For Oracle 10g, the following kernel parameters have to be set to values greater than or equal to the recommended values which can be changed in the proc file system:
To verify shmmax, execute:
cat /proc/sys/kernel/shmmax
shmmax  = 2147483648
To verify shmmni, execute:
cat /proc/sys/kernel/shmmni
shmmni  = 4096
To verify the shmall parameter, execute the command below. shmall is used in 10g R1.
cat /proc/sys/kernel/shmall
shmall  = 2097152
To verify shmmin, execute:
ipcs -lm |grep "min seg size"
shmmin  = 1
Note that shmseg is hardcoded in the kernel, the default is much higher.
shmseg  = 10
To verify semmsl, execute:
cat /proc/sys/kernel/sem | awk '{print $1}'
semmsl  = 250
To verify semmns, execute:
cat /proc/sys/kernel/sem | awk '{print $2}'
semmns  = 32000
To verify semopm, execute:
cat /proc/sys/kernel/sem | awk '{print $3}'
semopm  = 100
To verify semmni, execute:
cat /proc/sys/kernel/sem | awk '{print $4}'
semmni  = 128
To verify file-max, execute:
cat /proc/sys/fs/file-max
file-max = 65536
To verify ip_local_port_range, execute:
cat /proc/sys/net/ipv4/ip_local_port_range
ip_local_port_range = 1024 65000

Note

Do not change the value of any kernel parameter on a system where it is already higher than listed as minimum requirement.
On the following versions of Red Hat Enterprise Linux 4 x86, 3 U5 x86, 3 U5 x86-64, and 2.1; you may have to increase the kernel parameters shmmax, semopm, and filemax to meet the minimum requirement. On Red Hat Enterprise Linux 4 x86-64 you may have to increase shmmax and semopm.
Oracle also recommends to set the local port range ip_local_port_range for outgoing messages to "1024 65000" which is needed for high usage systems. This kernel parameter defines the local port range for TCP and UDP traffic to choose from.
In order to meet these requirements, you may have to add the following lines to the /etc/sysctl.conf file which are read during the boot process:
kernel.shmmax=2147483648
kernel.sem=250 32000 100 128
fs.file-max=65536
net.ipv4.ip_local_port_range=1024 65000
Adding these lines to the /etc/sysctl.conf file will cause the system to change these kernel parameters after each boot using the /etc/rc.d/rc.sysinit script which is invoked by /etc/inittab. But in order that these new added lines or settings in /etc/sysctl.conf become effective immediately, execute the following command:
su - root
sysctl -p
For more information on shmmax, shmmni, shmmin, shmseg, and shmall, see Chapter 7, Setting Shared Memory. For more information on semmsl, semmni, semmns, and semopm, see Chapter 24, Creating Oracle Directories. For more information on filemax, see Chapter 9, Setting File Handles.
Starting with 10g R2 some network settings must be adjusted as well which is checked by OUI. Oracle recommends the default and maximum send buffer size (SO_SNDBUF socket option) and receive buffer size (SO_RCVBUF socket option) to be set to 256 KB. The receive buffers are used by TCP and UDP to hold the received data for the application until it is read. This buffer cannot overflow because the sending party is not allowed to send data beyond the buffer size window. This means that datagrams will be discarded if they do not fit in the receive buffer. This could cause the sender to overwhelm the receiver.
The default and maximum window size can be changed in the proc file system without reboot by running the following commands: The default setting in bytes of the socket receive buffer.
# sysctl -w net.core.rmem_default=262144
The default setting in bytes of the socket send buffer.
# sysctl -w net.core.wmem_default=262144
The maximum socket receive buffer size which may be set by using the SO_RCVBUF socket option.
# sysctl -w net.core.rmem_max=262144
The maximum socket send buffer size which may be set by using the SO_SNDBUF socket option.
# sysctl -w net.core.wmem_max=262144
To make the change permanent, add the following lines to the /etc/sysctl.conf file, which is used during the boot process:
net.core.rmem_default=262144
net.core.wmem_default=262144
net.core.rmem_max=262144
net.core.wmem_max=262144