[리눅스]커널값 변경
다른 UNIX 시스템과 달리, Linux 운영체제에서는 시스템이 실행 중인 상태에서 대부분의 커널 매개변수를 수정할 수 있습니다.
커널 매개변수를 변경한 뒤에 시스템을 리부팅할 필요도 없습니다. Oracle Database 10g 가 요구하는 커널 매개변수 설정이 아래와 같습니다. 아래 설정된 수치는 최소값을 의미하며, 시스템이 아래 명시된 것보다 높은 수치로 설정되어 있는 경우에는 변경하지 마시기 바랍니다.
kernel.shmall = 2097152
kernel.shmmax = 2147483648 (실 메모리의 반) physical memory *0.5 ~2147483648(2G)
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
cat /proc/sys/kernel/sem
cat /proc/sys/kernel/shmall
cat /proc/sys/kernel/shmmax
cat /proc/sys/kernel/shmmni
cat /proc/sys/fs/file-max
cat /proc/sys/net/ipv4/ip_local_port_range
본 문서의 설명대로 Linux 운영체제를 설치한 경우라면 커널 매개변수가 디폴트 값으로 설정되어 있으므로, root로 로그인한 후
아래 명령을 복사하여 붙여 넣는 방법으로 실행할 수 있습니다.
cat >> /etc/sysctl.conf <<EOF
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
EOF
/sbin/sysctl -p
Ex:
# cat >> /etc/sysctl.conf <<EOF
> kernel.shmall = 2097152
> kernel.shmmax = 2147483648
> kernel.shmmni = 4096
> kernel.sem = 250 32000 100 128
> fs.file-max = 65536
> net.ipv4.ip_local_port_range = 1024 65000
> EOF
# /sbin/sysctl -p
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
kernel.sysrq = 0
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
설정을 확인하기 위해 아래 명령을 실행합니다:
/sbin/sysctl -a | grep shm
/sbin/sysctl -a | grep sem
/sbin/sysctl -a | grep file-max
/sbin/sysctl -a | grep ip_local_port_range
Ex:
# /sbin/sysctl -a | grep shm
kernel.shmmni = 4096
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shm-use-bigpages = 0
# /sbin/sysctl -a | grep sem
kernel.sem = 250 32000 100 128
# /sbin/sysctl -a | grep file-max
fs.file-max = 65536
# /sbin/sysctl -a | grep ip_local_port_range
net.ipv4.ip_local_port_range = 1024 65000
시스템의 매개변수가 위에 명시된 값보다 낮게 설정된 경우, /etc/sysctl.conf의 매개변수를 추가하거나 수정해야 합니다.
작업이 완료되면, 아래 명령을 실행하여 변경된 설정을 반영시킵니다:
/sbin/sysctl -p
Novell SUSE Linux 운영체제의 경우 아래 명령을 사용합니다.
/sbin/chkconfig boot.sysctl on
oracle 사용자 계정의 Shell Limit 설정
오라클은 Linux 계정 별로 실행되는 프로세스와 열린 파일의 수를 제한하는 것을 권장합니다. 이를 위해, root 계정에서 아래 명령을
복사하여 붙여 넣는 방법으로 실행합니다:
"open file descriptors"의 최대 값인 nofile (max number of open files)을 "65536"으로 single user에 대한 최대 활용 가능한 프로세스의 수인
nproc(max number of processes)를 "16384"로 수정한다
cat >> /etc/security/limits.conf <<EOF
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65535
EOF
cat >> /etc/pam.d/login <<EOF
session required /lib/security/pam_limits.so
EOF
RHEL 2.1 / 3의 경우, 아래 명령을 사용합니다:
cat >> /etc/profile <<EOF
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
umask 022
fi
EOF
cat >> /etc/csh.login <<EOF
if ( $USER == "oracle" ) then
limit maxproc 16384
limit descriptors 65536
umask 022
endif
EOF
SLES8의 경우, 아래 명령을 사용합니다:
cat >> /etc/profile.local <<EOF
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
umask 022
fi
EOF
cat >> /etc/csh.login.local <<EOF
if ( $USER == "oracle" ) then
limit maxproc 16384
limit descriptors 65536
umask 022
endif
EOF
- Oracle 10g를 설치하고 지원가능한 OS : RHEL4(CentOS 4.x included), SLES9
- 한국에서는 주로 레드햇 계열을 많이 사용하므로 RHEL에 맞추어 기술한다.
- /etc/sysctl.conf에 다음을 추가 :
kernel.shmall = 2097152
kernel.shmmax = 536870912
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default=262144
net.core.wmem_default=262144
net.core.rmem_max=262144
net.core.wmem_max=262144
vi 편집기로 열어서 편집하면 된다.
'02.서버-Linux' 카테고리의 다른 글
[리눅스]Find 명령어 완정 정복 가이드 (0) | 2012.12.19 |
---|---|
[리눅스]루트 패스워드 분실 시 (0) | 2012.12.19 |
[리눅스]VIP 셋팅 방법 (0) | 2012.12.19 |
[리눅스]RawDevice 설정 (0) | 2012.12.19 |
[리눅스]fstab 오류 발생 처리 (0) | 2012.12.19 |