Oracle 설치/Oracle 11g RAC 구축

[Oracle 11g RAC 구축] 3. RAC 구성을 위한 각종 OS 환경설정

빵순이^^ 2011. 3. 2. 10:34


1. 필수 RPM 패키지 설치

OEL5.5 설치 iso 이미지를 마운트 합니다.

VMware Server 2에서는 Summary > CD/DVD Drive 1 > Edit 를 클릭합니다.


- 위와 같이 설정 한 후 Browse를 클릭하여 OEL5.5 iso 파일을 선택하여 줍니다.

마운트 후 CD가 정상적으로 마운트 되었는 지 확인하고 CD로 이동합니다.

# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1             7.6G  3.8G  3.5G  53% /
/dev/sda3              18G   15G  2.0G  89% /ORACLE
tmpfs                 1.5G  615M  886M  41% /dev/shm
/dev/hdc              3.4G  3.4G     0 100% /media/Enterprise Linux dvd 20100405
# cd /media/Enterprise\ Linux\ dvd\ 20100405/


- 이동시 디렉토리 경로가 이상하게 보이는데 경로 입력시 "cd /media/En" 까지만 입력한 후 Tab키를 눌러주면 경로가 자동완성 됩니다.

rpm 설치 패키지는 Server 디렉토리 하위에 포함되어 있기 때문에 해당 경로로 이동합니다.

[root@rac1 Enterprise Linux dvd 20100405]# ls
blafdoc.css     eula.en_US  isolinux          RELEASE-NOTES-en.html  supportinfo
Cluster         eula.py     README-en         RPM-GPG-KEY            TRANS.TBL
ClusterStorage  GPL         README-en.html    RPM-GPG-KEY-oracle     VT
EULA            images      RELEASE-NOTES-en  Server
[root@rac1 Enterprise Linux dvd 20100405]# cd Server


해당 경로로 이동이 완료 되었으면 아래의 필수 패키지를 전부 복사하여 터미널에 붙여넣은 후 Enter를 입력하여 설치를 해줍니다.

rpm -Uvh binutils-2.*
rpm -Uvh compat-libstdc++-33*
rpm -Uvh elfutils-libelf-0.*
rpm -Uvh elfutils-libelf-devel-*
rpm -Uvh gcc-4.*
rpm -Uvh gcc-c++-4.*
rpm -Uvh glibc-2.*
rpm -Uvh glibc-common-2.*
rpm -Uvh glibc-devel-2.*
rpm -Uvh glibc-headers-2.*
rpm -Uvh ksh-2*
rpm -Uvh libaio-0.*
rpm -Uvh libaio-devel-0.*
rpm -Uvh libgcc-4.*
rpm -Uvh libstdc++-4.*
rpm -Uvh libstdc++-devel-4.*
rpm -Uvh make-3.*
rpm -Uvh sysstat-7.*
rpm -Uvh unixODBC-2.*
rpm -Uvh unixODBC-devel-2.*
rpm -Uvh oracleasm-2.6.18-194.el5-2.0.5-1.el5.x86_64.rpm \
              oracleasm-support-2.1.3-1.el5.x86_64.rpm



2. tmpfs 수정

tmpfs는 리눅스에서 사용되는 "가상 메모리 파일시스템"입니다. 램디스크 메커니즘으로 최대 크기를 지정해 두면 가변적으로 크기가 변경되면서 할당됩니다.

tmpfs를 Automatic Memory Manager가 작동할 수 있도록 언마운트 후 크기를 늘려 다시 마운트를 해줍니다.

# umount tmpfs
# mount -t tmpfs shmfs -o size=1500m /dev/shm

그리고 재부팅 시에도 적용될 수 있도록 "/etc/fstab"에 아래의 항목을 추가해 줍니다.

tmpfs                   /dev/shm                tmpfs   size=1500m      0 0

3. hosts 파일 수정

hosts 파일은 도메인에 접속할때 DNS보다 우선하여 연결할 IP를 지정해 줍니다. 또한 도메인 Alias의 역할도 하기때문에 ssh와 같은 외부접속 시 'ssh rac1.pangsun.co.kr' 을 입력하지 않고 Alias를 이용해 'ssh rac1'만 입력해도 해당 IP로 접속이 가능합니다.

vi 에디터로 "/etc/hosts" 파일을 열어 아래와 같이 수정해 줍니다.

127.0.0.1               localhost.localdomain localhost
# Public
192.168.17.101  rac1.pangsun.co.kr      rac1
192.168.17.102  rac2.pangsun.co.kr      rac2
# Private
192.168.0.101   rac1-priv.pangsun.co.kr rac1-priv
192.168.0.102   rac2-priv.pangsun.co.kr rac2-priv
# Virtual
192.168.17.111  rac1-vip.pangsun.co.kr  rac1-vip
192.168.17.112  rac2-vip.pangsun.co.kr  rac2-vip
# SCAN
192.168.17.201  rac-scan.pangsun.co.kr  rac-scan

Public IP는 eth0 네트워크 장치로 구성되어 있는 네트워크 대역으로 구성해 주고 Private IP는 eth1 네트워크 장치로 구성되어 있는 네트워크 대역으로 구성해 줍니다.

SCAN IP는 실제는 hosts 파일로 정의되지 않습니다. 하지만 DNS에 등록되어 있지 않기때문에 hosts파일에 등록하여 연결될 수 있도록 해줍니다. 설정은 Public IP와 동일한 대역의 IP로 설정해 줍니다.

Virtual IP는 clusterware 설치 시 오라클에서 구성하는 가상의 IP 입니다. Public IP와 동일한 네트워크 대역으로 설정해 줍니다.


4. OS 커널 수정

오라클 설치 및 운영에 필요한 OS 커널 설정을 "/etc/sysctl.conf"에 아래의 내용을 입력 및 수정해 줍니다.

# Oracle Setting

fs.aio-max-nr = 1048576
fs.file-max = 6815744
#kernel.shmall = 2097152
#kernel.shmmax = 1054504960
kernel.shmmni = 4096
# semaphores: semmsl, semmns, semopm, semmni
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

sysctl.conf 수정 후 변경된 커널 파라메터 값을 바로 적용하기 위해 다음의 명령을 입력해 줍니다.

# /sbin/sysctl -p

5. PAM을 이용한 oracle 자원 제한

"/etc/pam.d/login" 파일에 다음의 내용을 추가해 줍니다.

session    required     pam_limits.so

"/etc/security/limits.conf" 파일에 아래의 내용을 입력하여 oracle 유저의 자원을 제한합니다.

# Oracle Setting
oracle               soft    nproc   2047
oracle               hard    nproc   16384
oracle               soft    nofile  1024
oracle               hard    nofile  65536

6. NTP를 이용한 시간 동기화

NTP는 세계 여러나라의 타임서버에 주기적으로 접속하여 해당서버의 시스템 시간을 맞춰주는 네트워크 타임 프로토콜 서비스 입니다. RAC를 구성하기 위해서는 각 노드간 시간이 동기화 되어야 하는데 NTP를 이용해서 시간을 동기화 합니다.

NTP를 구동하기 위해서는 NTP 패키지가 설치되어 있어야 하고 '/etc/ntp.conf' 또는 '/etc/ntpd.conf'의 설정 파일이 존재하여야 구동이 가능합니다. OEL5.5 에서는 기본 패키지에 설치는 되어 있지만 설정파일이 없기때문에 바로 구동되지는 않습니다. 하지만 '/etc/ntp.conf.org'원본 파일은 존재하기 때문에 NTP를 구동하기 위해 복사해줍니다.

# cp /etc/ntp.conf.org /etc/ntp.conf

"/etc/sysconfig/ntpd" 파일을 vi 에디터로 열어 OPTION 항목에 아래와 같이 "-x"를 넣어줍니다.

OPTIONS="-x -u ntp:ntp -p /var/run/ntpd.pid"

NTP 데몬을 구동시켜 줍니다.

# service ntpd start
ntpd: Synchronizing with time server:                      [  OK  ]
Starting ntpd:                                             [  OK  ]

NTP가 정상적으로 구동되고 있는지 확인합니다.

# ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 222.239.76.226  132.239.1.6      2 u   17   64    1   11.887    0.075   0.001
 send.mx.cdnetwo 131.107.13.100   2 u   16   64    1   10.559   -0.709   0.001
 121.131.26.39   141.223.182.106  2 u   15   64    1   11.240    1.514   0.001
 LOCAL(0)        .LOCL.          10 l   14   64    1    0.000    0.000   0.001

OS 재부팅 시에도 NTP 데몬이 자동으로 구동되도록 설정해 줍니다.

ntsysv 명령을 이용하여 OS가 부팅될때 자동으로 실행되는 서비스를 활성화 또는 비활성화 할 수 있습니다. ntsysv의 인터페이스는 텍스트 모드 설치프로그램과 비슷한 방식으로 실행되어 설정이 편리합니다.

# ntsysv

 
아래와 같은 화면이 출력되면 방향키로 이동하여 ntpd 항목에서 스페이스를 눌러 활성화 합니다. 그리고 Tap키를 눌러 "ok" 이동한 후 Enter를 입력하면 완료됩니다.

 
7. Oracle OS User 생성

Oracle 설치에 필요한 group (oinstall, dba)와 oracle user를 생성하고 oracle 패스워드를 생성해 줍니다.

# groupadd oinstall
# groupadd dba
# useradd -g oinstall -G dba oracle
# passwd oracle
Changing password for user oracle.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.

Oracle이 설치될 디렉토리를 생성해 주고 권한을 변경해 줍니다.

# mkdir -p /ORACLE/grid
# mkdir -p /ORACLE/base/product/11.2.0/db_1
# chwon -R oracle:oinstall /ORACLE
# chmod -R 775 /ORACLE

- 필자는 ORACLE_BASE의 경로를 "/ORACLE/base"로 설정 할 것이므로 위와같이 디렉토리를 생성했습니다. Oracle 설치경로를 다르게 할 경우 맞추어 디렉토리를 생성해 줍니다.


8. Oracle 설치를 위한 profile 추가

Oracle user로 이동한 후 ".bash_profile"을 열어 아래의 내용을 추가해 줍니다.

# su - oracle
# vi .bash_profile

# Oracle Setting

TMP=/tmp; export TMP
TMPDIR=$TMP; export TMPDIR

ORACLE_HOSTNAME=rac1.pangsun.co.kr; export ORACLE_HOSTNAME
ORACLE_UNQNAME=RAC; export ORACLE_UNQNAME
ORACLE_BASE=/ORACLE/base; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1; export ORACLE_HOME
ORACLE_SID=RAC1; export ORACLE_SID
ORACLE_TERM=xterm; export ORACLE_TERM
PATH=/usr/sbin:/ORACLE/grid/bin:$PATH; export PATH
PATH=$ORACLE_HOME/bin:$PATH; export PATH
EDITOR=vi; export EDITOR
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH

if [ $USER = "oracle" ]; then
  if [ $SHELL = "/bin/ksh" ]; then
    ulimit -p 16384
    ulimit -n 65536
  else
    ulimit -u 16384 -n 65536
  fi
fi

- ORACLE_HOSTNAME 및 ORACLE_BASE는 꼭 자신의 시스템에 맞는 항목으로 기입하여 줍니다.