1. VirtualBox Guest Addition 설치

1번 노드가 부팅이 됩니다.

"root" 유저로 접속합니다.

root 유저의 암호(“oracle”)를 입력합니다.

VirtualBox로 구축된 환경에서는 편의를 위해 VBOXADDITIONS (이하 Guest Addition)를 설치합니다.

호스트 머신의 VirtualBox 메뉴에서 '장치' > '게스트 확장 CD 이미지 삽입'을 클릭하여, Guest Addition CD를 mount 시켜줍니다.

Guest Addition 이미지를 mount하면 자동으로 폴더가 열립니다.

VBoxLinuxAdditions.run을 더블 클릭합니다.

실행 여부를 뭍는 창이 나오면 <실행>을 클릭합니다.

자동으로 설치가 진행되며, 설치가 완료되면 "엔터"를 입력하여 창을 닫아줍니다.

Guest Addition을 적용하기 위해서 재부팅이 필요합니다.

화면 상단의 메뉴바에서 '시스템' > '끄기'를 순서대로 클릭합니다.

<다시 시작> 버튼을 클릭하여 재부팅합니다.

2. 서비스 정리 및 패키지 확인

root 유저로 수행합니다.
chkconfig --level 123456 xinetd off
chkconfig --level 123456 sendmail off
chkconfig --level 123456 cups off
chkconfig --level 123456 cups-config-daemon off
chkconfig --level 123456 smartd off
chkconfig --level 123456 iptables off
chkconfig --level 123456 ip6tables off
chkconfig --level 123456 bluetooth off
chkconfig --level 123456 yum-updatesd off 
[root@rac1 ~]# chkconfig --level 123456 xinetd off
[root@rac1 ~]# chkconfig --level 123456 sendmail off
[root@rac1 ~]# chkconfig --level 123456 cups off
[root@rac1 ~]# chkconfig --level 123456 cups-config-daemon off
[root@rac1 ~]# chkconfig --level 123456 smartd off
[root@rac1 ~]# chkconfig --level 123456 iptables off
[root@rac1 ~]# chkconfig --level 123456 ip6tables off
[root@rac1 ~]# chkconfig --level 123456 bluetooth off
[root@rac1 ~]# chkconfig --level 123456 yum-updatesd off

리소스 낭비를 줄이기 위해 불필요한 서비스를 끕니다.

root 유저로 수행합니다.
rpm -q binutils-2.*
rpm -q compat-libstdc++-33-*
rpm -q elfutils-libelf-0.*
rpm -q elfutils-libelf-devel-*
rpm -q gcc-4.*
rpm -q gcc-c++-4.*
rpm -q glibc-2.*
rpm -q glibc-common-2.*
rpm -q glibc-devel-2.*
rpm -q glibc-headers-2.*
rpm -q ksh-2*
rpm -q libaio-0.*
rpm -q libaio-devel-0.*
rpm -q libgcc-4.*
rpm -q libstdc++-4.*
rpm -q libstdc++-devel-4.*
rpm -q make-3.*
rpm -q sysstat-7.*
rpm -q unixODBC-2.*
rpm -q unixODBC-devel-2.* 
[root@rac1 ~]# rpm -q binutils-2.*
binutils-2.17.50.0.6-26.el5
[root@rac1 ~]# rpm -q compat-libstdc++-33-*
compat-libstdc++-33-3.2.3-61
[root@rac1 ~]# rpm -q elfutils-libelf-0.*
elfutils-libelf-0.137-3.el5
[root@rac1 ~]# rpm -q elfutils-libelf-devel-*
elfutils-libelf-devel-0.137-3.el5
[root@rac1 ~]# rpm -q gcc-4.*
gcc-4.1.2-55.el5
[root@rac1 ~]# rpm -q gcc-c++-4.*
gcc-c++-4.1.2-55.el5
[root@rac1 ~]# rpm -q glibc-2.*
glibc-2.5-123.0.1
[root@rac1 ~]# rpm -q glibc-common-2.*
glibc-common-2.5-123.0.1
[root@rac1 ~]# rpm -q glibc-devel-2.*
glibc-devel-2.5-123.0.1
[root@rac1 ~]# rpm -q glibc-headers-2.*
glibc-headers-2.5-123.0.1
[root@rac1 ~]# rpm -q ksh-2*
ksh-20100621-20.el5
[root@rac1 ~]# rpm -q libaio-0.*
libaio-0.3.106-5
[root@rac1 ~]# rpm -q libaio-devel-0.*
libaio-devel-0.3.106-5
[root@rac1 ~]# rpm -q libgcc-4.*
libgcc-4.1.2-55.el5
[root@rac1 ~]# rpm -q libstdc++-4.*
libstdc++-4.1.2-55.el5
[root@rac1 ~]# rpm -q libstdc++-devel-4.*
libstdc++-devel-4.1.2-55.el5
[root@rac1 ~]# rpm -q make-3.*
make-3.81-3.el5
[root@rac1 ~]# rpm -q sysstat-7.*
sysstat-7.0.2-13.0.1.el5
[root@rac1 ~]# rpm -q unixODBC-2.*
unixODBC-2.2.11-10.el5
[root@rac1 ~]# rpm -q unixODBC-devel-2.*
unixODBC-devel-2.2.11-10.el5

오라클 설치를 위해 필요한 OS 패키지가 제대로 설치되어 있는지 확인합니다.

만약 이전에 설치 과정을 잘 따라왔다면 모든 패키지가 제대로 설치되어 있을 것입니다.

3. host 파일 수정

root 유저에서 vi /etc/hosts 로 수정합니다.
### Public
10.0.1.101  rac1
10.0.1.102  rac2
### Private
10.0.5.101  rac1-priv
10.0.5.102  rac2-priv
### Virtual
10.0.1.111  rac1-vip
10.0.1.112  rac2-vip
### SCAN
10.0.1.110  rac-scan 

/etc/hosts 파일에 서버 정보를 추가합니다.

오라클 소프트웨어 설치를 정상적으로 진행하기 위해 정확한 정보를 입력해야 합니다.

4. OS 환경 설정 변경

root 유저에서 vi /etc/fstab 로 수정합니다.
tmpfs  			/dev/shm  		tmpfs   size=1500m  	0 0 

오라클의 MEMORY_TARGET 파라미터를 사용하기 위해서 tmpfs를 변경해야 합니다.

기존에 설정된 tmpfs 값은 #로 주석 처리하거나 삭제합니다.

root 유저로 수행합니다.
mount -o remount /dev/shm
df -h
[root@rac1 ~]# mount -o remount /dev/shm

[root@rac1 ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda3              26G  2.7G   22G  12% /
/dev/sda1              99M   22M   73M  23% /boot
oracle                233G  123G  111G  53% /media/sf_oracle
shmfs                 1.5G     0  1.5G   0% /dev/shm

remount하여 바로 시스템에 적용시킵니다.

root 유저에서 vi /etc/sysctl.conf 로 수정합니다.
fs.aio-max-nr = 1048576
fs.file-max = 6815744
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

커널 변수를 추가하는 작업입니다.

오라클 소프트웨어를 설치하기 위해서 꼭 추가해줘야 합니다.
root 유저로 실행합니다.
/sbin/sysctl -p

[root@rac1 ~]# /sbin/sysctl -p
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 2
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 4294967295
kernel.shmall = 268435456
fs.aio-max-nr = 1048576
fs.file-max = 6815744
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

루트 유저로 /sbin/sysctl -p 명령을 수행하면 바로 시스템에 적용할 수 있습니다.

root 유저에서 vi /etc/pam.d/login 로 수정합니다.
session    required 	pam_limits.so

사용자 인증에 관한 설정을 추가합니다.

root 유저에서 vi /etc/modprobe.conf 로 수정합니다.
options hangcheck-timer hangcheck_tick=30 hangcheck_margin=180

클러스터 상태 모니터링을 위한 hangcheck-timer 설정을 추가합니다.

hangcheck_tick은 모니터링 주기(초)를 나타내며, hangcheck_margin은 최대 지연시간(초)를 의미합니다.

root 유저에서 vi /etc/rc.local 로 수정합니다.
/sbin/modprobe hangcheck-timer

재기동시에 hangcheck-timer 모듈을 사용할 수 있도록 /etc/rc.local을 수정합니다.

root 유저에서 수행합니다.
mv /etc/sysconfig/ntpd /etc/sysconfig/ntpd.original
mv /etc/ntp /etc/ntp.original
mv /etc/ntp.conf /etc/ntp.conf.original
[root@rac1 ~]# mv /etc/sysconfig/ntpd /etc/sysconfig/ntpd.original
[root@rac1 ~]# mv /etc/ntp /etc/ntp.original
[root@rac1 ~]# mv /etc/ntp.conf /etc/ntp.conf.original

실습을 위한 환경이므로 CTSS 사용을 위해 기존 NTP 관련 설정 파일들을 사용하지 못하도록 변경(백업)합니다.

실제 운영환경에서는 반드시 NTP를 사용해 시간을 동기화할 것을 강력히 권합니다

5. SCAN 관련 설정

root 유저에서 vi /etc/resolv.conf 로 수정합니다.
nameserver 127.0.0.1 

dnsmasq를 사용해 /etc/hosts 파일의 내용을 DNS처럼 사용할 것이므로 loopback IP를 nameserver로 등록합니다.

root 유저로 수행합니다.
chkconfig dnsmasq on
service dnsmasq start
nslookup rac-scan
[root@rac1 ~]# chkconfig dnsmasq on

[root@rac1 ~]# service dnsmasq start
Starting dnsmasq:                                          [  OK  ]


[root@rac1 ~]# nslookup rac-scan
Server:		127.0.0.1
Address:	127.0.0.1#53

Name:	rac-scan
Address: 10.0.1.110

dnsmasq 서비스를 등록하고 실행하면, SCAN IP 검색이 가능합니다.

6. 그룹, 사용자 환경 수정

root 유저로 수행합니다.
groupadd oper
groupadd asmdba
groupadd asmoper
groupadd asmadmin
usermod -g oinstall -G dba,oper,asmdba,asmadmin,vboxsf oracle
useradd -g oinstall -G dba,asmdba,asmoper,asmadmin,vboxsf grid
id oracle
id grid
passwd oracle
passwd grid
[root@rac1 ~]# groupadd oper
[root@rac1 ~]# groupadd asmdba
[root@rac1 ~]# groupadd asmoper
[root@rac1 ~]# groupadd asmadmin

[root@rac1 ~]# usermod -g oinstall -G dba,oper,asmdba,asmadmin,vboxsf oracle
[root@rac1 ~]# useradd -g oinstall -G dba,asmdba,asmoper,asmadmin,vboxsf grid

[root@rac1 ~]# id oracle
uid=54321(oracle) gid=54321(oinstall) groups=54321(oinstall),54322(dba),160(vboxsf),54323(oper),54324(asmdba),54326(asmadmin)

[root@rac1 ~]# id grid
uid=54322(grid) gid=54321(oinstall) groups=54321(oinstall),54322(dba),160(vboxsf),54324(asmdba),54325(asmoper),54326(asmadmin)

[root@rac1 ~]# passwd oracle
Changing password for user oracle.
New UNIX password: 
BAD PASSWORD: it is based on a dictionary word
Retype new UNIX password: 
passwd: all authentication tokens updated successfully.

[root@rac1 ~]# passwd grid
Changing password for user grid.
New UNIX password: 
BAD PASSWORD: it is based on a dictionary word
Retype new UNIX password: 
passwd: all authentication tokens updated successfully.

리눅스 설치시 포함된 oracle-validated 패키지에 반영된 설치 유저에 관한 구성을 실습 환경에 맞게 수정해야 합니다.

Guest Addition을 설치했으므로 관련 그룹인 vboxsf를 oracle과 grid 유저에 추가합니다.

passwd로 유저 암호를 반드시 지정해야 합니다.

root 유저에서 vi /etc/security/limits.conf 로 수정합니다.
oracle  soft   nproc   2047
oracle  hard   nproc   16384
oracle  soft   nofile  1024
oracle  hard   nofile  65536
grid    hard   nproc   16384
grid    hard   nofile  65536 

리소스 제한을 위한 사용자별 설정값을 입력합니다.

오라클을 설치하는 OS 계정에 맞게 제한값을 입력합니다.

root 유저로 수행합니다.
mkdir -p /u01/app/11.2.0/grid
mkdir -p /u01/app/oracle/product/11.2.0/db_1
chown -R grid:oinstall /u01
chown -R oracle:oinstall /u01/app/oracle/product
chmod -R 755 /u01
[root@rac1 ~]# mkdir -p /u01/app/11.2.0/grid
[root@rac1 ~]# mkdir -p /u01/app/oracle/product/11.2.0/db_1
[root@rac1 ~]# chown -R grid:oinstall /u01
[root@rac1 ~]# chown -R oracle:oinstall /u01/app/oracle/product
[root@rac1 ~]# chmod -R 755 /u01

오라클 소프트웨어 설치를 위한 경로를 생성하고, 해당 경로에 대한 권한과 소유권을 수정합니다.

root 유저에서 vi ~/.bash_profile 로 수정합니다.
export ORACLE_BASE=/u01/app/oracle
export GRID_HOME=/u01/app/11.2.0/grid
export DB_HOME=$ORACLE_BASE/product/11.2.0/db_1
export PATH=$PATH:$GRID_HOME/bin
[root@rac1 ~]# cat ~/.bash_profile
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export PATH
unset USERNAME

export ORACLE_BASE=/u01/app/oracle
export GRID_HOME=/u01/app/11.2.0/grid
export DB_HOME=$ORACLE_BASE/product/11.2.0/db_1
export PATH=$PATH:$GRID_HOME/bin

root 계정의 .bash_profile을 수정합니다.

grid 유저에서 vi ~grid/.bash_profile 로 수정합니다.
export TMP=/tmp
export TMPDIR=$TMP
export EDITOR=vi
export ORACLE_HOSTNAME=rac1  # rac2
export ORACLE_BASE=/u01/app/oracle
export GRID_HOME=/u01/app/11.2.0/grid
export DB_HOME=$ORACLE_BASE/product/11.2.0/db_1
export ORACLE_HOME=$GRID_HOME
export ORACLE_SID=+ASM1      # +ASM2
export ORACLE_TERM=xterm
export BASE_PATH=/usr/sbin:$PATH
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$GRID_HOME/bin:$BASE_PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
export NLS_LANG=AMERICAN_KOREA.AL32UTF8
export PS1='[\u@$ORACLE_SID \W]$ '

if [ $USER = "grid" ]; then
    if [ $SHELL = "/bin/ksh" ]; then
        ulimit -p 16384
        ulimit -n 65536
    else
        ulimit -u 16384 -n 65536
    fi
fi 
[root@rac1 ~]# cat ~grid/.bash_profile 
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
	. ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export PATH

export TMP=/tmp
export TMPDIR=$TMP
export EDITOR=vi
export ORACLE_HOSTNAME=rac1  # rac2
export ORACLE_UNQNAME=racdb  # instance_name
export ORACLE_BASE=/u01/app/oracle
export GRID_HOME=/u01/app/11.2.0/grid
export DB_HOME=$ORACLE_BASE/product/11.2.0/db_1
export ORACLE_HOME=$GRID_HOME
export ORACLE_SID=+ASM1      # +ASM2
export ORACLE_TERM=xterm
export BASE_PATH=/usr/sbin:$PATH
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$GRID_HOME/bin:$BASE_PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
export NLS_LANG=AMERICAN_KOREA.AL32UTF8
export PS1='[\u@$ORACLE_SID \W]$ '

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

grid 계정으로 접속하여 .bash_profile을 수정합니다.

oracle 유저에서 vi ~oracle/.bash_profile 로 수정합니다.
export PATH
export TMP=/tmp
export TMPDIR=$TMP
export EDITOR=vi
export ORACLE_HOSTNAME=rac1  # rac2
export ORACLE_UNQNAME=racdb  # instance_name
export ORACLE_BASE=/u01/app/oracle
export GRID_HOME=/u01/app/11.2.0/grid
export DB_HOME=$ORACLE_BASE/product/11.2.0/db_1
export ORACLE_HOME=$DB_HOME
export ORACLE_SID=racdb1     # racdb2
export ORACLE_TERM=xterm
export BASE_PATH=/usr/sbin:$PATH
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$GRID_HOME/bin:$BASE_PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
export NLS_LANG=AMERICAN_KOREA.AL32UTF8
export PS1='[\u@$ORACLE_SID \W]$ '

if [ $USER = "oracle" ]; then
    if [ $SHELL = "/bin/ksh" ]; then
        ulimit -p 16384
        ulimit -n 65536
    else
        ulimit -u 16384 -n 65536
    fi
fi
[root@rac1 ~]# cat ~oracle/.bash_profile 
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
	. ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export PATH
export TMP=/tmp
export TMPDIR=$TMP
export EDITOR=vi
export ORACLE_HOSTNAME=rac1  # rac2
export ORACLE_UNQNAME=racdb  # instance_name
export ORACLE_BASE=/u01/app/oracle
export GRID_HOME=/u01/app/11.2.0/grid
export DB_HOME=$ORACLE_BASE/product/11.2.0/db_1
export ORACLE_HOME=$DB_HOME
export ORACLE_SID=racdb1     # racdb2
export ORACLE_TERM=xterm
export BASE_PATH=/usr/sbin:$PATH
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$GRID_HOME/bin:$BASE_PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
export NLS_LANG=AMERICAN_KOREA.AL32UTF8
export PS1='[\u@$ORACLE_SID \W]$ '

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

마지막으로 oracle 계정으로 접속하여 .bash_profile을 수정합니다.

  • 레이블 없음