■ [11gR2 RAC 설치(ASM ISCSI)] 04. RAC 1번노드 mk01n01 구성 (1. OS setup)

DBMS/[Oracle] ■ 01. Installation & Patches 2016.05.26 23:35

■ [11gR2 RAC 설치(ASM ISCSI)] 04. RAC 1번노드 mk01n01 구성 (1. OS setup)


※ Oracle installation Guide

http://docs.oracle.com/database/121/CWLIN/toc.htm


[RAC 1번노드 mk01n01 구성 (1.OS setup)] 01. root user 로그인

01. OS 설치 후 위 [RAC 1번노드 mk01n01 구성 (1.OS setup)01. mk01n01 OS setup 에서 [Username] 에 root 를 입력후 [Enter].


[RAC 1번노드 mk01n01 구성 (1.OS setup)] 02. root user password 입력

02. [RAC 1번노드 mk01n01 구성 (1.OS setup)] 02에서 ① 과 같이 [Password] 입력 박스에 root user OS 설치시 설정 했엇던 root user의 패스워드를 입력 후 [Enter]


[RAC 1번노드 mk01n01 구성 (1.OS setup)] 03. OS 설치 ISO 파일 다시 loading

03. [RAC 1번노드 mk01n01 구성 (1.OS setup)] 03 ①의 [CD-ROM 아이콘]을 우클릭 하면 [디스크 이미지 선택] 을 할수 있는 팝업창이 나타난다. 여기에서 OS 설치시 사용했던 ISO 이미지를 선택해서 재 loading 한다.


[RAC 1번노드 mk01n01 구성 (1.OS setup)] 04. OS Image Loading

04. CD Image 가 loading 되면 위와같이 CD-ROM 이 자동으로 mount 된다. 

mount 가되면 ① 과 같이 CD-ROM 아이콘이 나타나며 ② 와 같이 CD-ROM 의 내용이 팝업창으로 나타난다.


[RAC 1번노드 mk01n01 구성 (1.OS setup)] 05. Open Terminal 1.

05. 바탕화면에서 마우스 우 클릭을 하면 위 [RAC 1번노드 mk01n01 구성 (1.OS setup)] 05 와 같이 팝업창이 나타나는데 ①[Open Terminal]과 을 클릭한다. 


[RAC 1번노드 mk01n01 구성 (1.OS setup)] 06. Open Terminal 2.

06. 위 [RAC 1번노드 mk01n01 구성 (1.OS setup)] 06 같이 Terminal 창이 나타나면 linux Command로 세팅을 할수 있다.


[RAC 1번노드 mk01n01 구성 (1.OS setup)] 07. Network Gateway 확인 및 재설정 1. 

07. 터미널에서  과 같이 neat 를 입력하면 GUI 로 network 를 재설정 할수 있는 팝업창이 뜬다. (root user)

② 에서 publc IP 를 세팅한 NIC(Network Interface Card) eth0 (ethernetcard 0 의 의미로 알고 있음) 를 더블 클릭하면 IP 를 세팅할수 있는 팝업창이 나타나는데 여기에서 ③ [Default gateway address] 에 Gateway IP 를 설정하는데 OS 설치시 default Gateway 로 public IP 대역의 Gateway IP 를 넣었기 때문에 자동으로 default 로 Public IP 대역의 Gateway IP가 설정되어 있다. 

④ eth1 을 더블클릭 하게 되면 Private IP 대역의 network 를 설정사항들을 확인 할 수 있다.


※ 물론 다른방법도 있다.(내가 아는 한 2가지 정도가 더 있다. )

   하지만 여기서는 test 머신을 가장 간단히 구성하기 위함이므로 여기까지만 설명을 하도록 하고 나중에 다른 페이지에서 설명 하도록 하겠다.


[RAC 1번노드 mk01n01 구성 (1.OS setup)] 08. Network Gateway 확인 및 재설정 2.

08. [RAC 1번노드 mk01n01 구성 (1.OS setup)] 08 에서 ①eth1 을 더블클릭하면 [RAC 1번노드 mk01n01 구성 (1.OS setup)] 07 과 같이 IP 설정정보를 볼수 있는 팝업창이 나타나는데 OS 설치시 Default gateway 를 public 대역으로 입력했기 때문에 ② 와같이 public IP 대역의 gateway IP 로 설정되어있을 것이다. 이것을 ③ 과 같이 Private IP 대역대로 변경 후 확인 클릭.


[RAC 1번노드 mk01n01 구성 (1.OS setup)] 09. 네크워크 서비스 재 기동

09. [RAC 1번노드 mk01n01 구성 (1.OS setup)] 08 에서 Network 설정사항을 저장 후 적용을 위해  

위 [RAC 1번노드 mk01n01 구성 (1.OS setup)] 09 의 ① service network restart 로 네트워크 서비스를 재기동 한다. 


[RAC 1번노드 mk01n01 구성 (1.OS setup)] 10. 터미널 프로그램에서 접속 1. 

09. 터미널 프로그램에서 위와 같이 접속할 수 있다. ssh 및, telnet으로 위 [RAC 1번노드 mk01n01 구성 (1.OS setup)] 10 과 같이 접속할수 있다. 



[RAC 1번노드 mk01n01 구성 (1.OS setup)] 10. 터미널 프로그램에서 접속 2. 


[RAC 1번노드 mk01n01 구성 (1.OS setup)] 11. 불필요 패키지 disable

[root@mk01n01 ~]# chkconfig --level 123456 sendmail off
[root@mk01n01 ~]# chkconfig --level 123456 cups off
[root@mk01n01 ~]# chkconfig --level 123456 cups-config-daemon off
[root@mk01n01 ~]# chkconfig --level 123456 smartd off
[root@mk01n01 ~]# chkconfig --level 123456 isdn off
[root@mk01n01 ~]# chkconfig --level 123456 iptables off

11. 위 [RAC 1번노드 mk01n01 구성 (1.OS setup)] 11 과같이 package 들을 runlevel 1~6까지 off 시킨다.

※ 같은 command 로 on 시킬수 있다.


[RAC 1번노드 mk01n01 구성 (1.OS setup)] 12. 부팅시 runlevel 설정

[root@mk01n01 ~]#vi /etc/inittab

id:3:initdefault:

12. GUI 환경은 필요없는 여러가지 많이 띄우기 때문에 위 [RAC 1번노드 mk01n01 구성 (1.OS setup)] 12 와 같이 runlevel을 3까지만 설정한다. 

※ 나중에 command 창에서 init 5 로 GUI 모드로 띄울수 있다.


[RAC 1번노드 mk01n01 구성 (1.OS setup)] 13. 필수 Package 설치
[root@mk01n01 ~]# cd /media/OL5.8\ x86_64\ dvd\ 20120229/

[root@mk01n01 Server]# rpm -Uvh libaio-devel-0.*
warning: libaio-devel-0.3.106-5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 1e5e0159
Preparing...                ########################################### [100%]
   1:libaio-devel           ########################################### [ 50%]
   2:libaio-devel           ########################################### [100%]

13. 위 [RAC 1번노드 mk01n01 구성 (1.OS setup)] 03에서 우리는 먼저 OS 설치CD 를 mount 시켰다. 그 CD내의 설치 패키지가 있는 디렉토리로 이동해서 패키지를 설치한다. 위와 같이 패키지를 설치한다.

( url: http://docs.oracle.com/database/121/CWLIN/prelinux.htm#CEGBGACF )


설치되어야 할 필수 패키지목록은 아래와 같으며 위 libaio-devel-0.* 설치방법과 같이 RPM 을 설치 한다.


-- package list

binutils-2.17.50.0.6

compat-libstdc++-33-3.2.3

gcc-4.1.2

gcc-c++-4.1.2

glibc-2.5-58

glibc-devel-2.5-58

ksh

libaio-0.3.106

libaio-devel-0.3.106

libgcc-4.1.2

libstdc++-4.1.2

libstdc++-devel 4.1.2

libXext-1.0.1

libXtst-1.0.1

libX11-1.0.3

libXau-1.0.1

libXi-1.0.1

make-3.81

sysstat-7.0.2

nfs-utils-1.0.9-60.0.2

coreutils-5.97-23.el5_4.1



※ 참고로 설치하는 패키지는 부팅된 OS 의 버전 및 커널버전과 같아야 하며 꼭 같은 버전이 아니라 상위버전이면 설치 가능하다. 


[RAC 1번노드 mk01n01 구성 (1.OS setup)] 14. FTP 및 Telnet 구동
-- gssftp
==============================

[root@mk01n01 ~]# vi /etc/xinetd.d/gssftp

# default: off
# description: The kerberized FTP server accepts FTP connections \
#              that can be authenticated with Kerberos 5.
service ftp
{
        flags           = REUSE
        socket_type     = stream
        wait            = no
        user            = root
        server          = /usr/kerberos/sbin/ftpd
        server_args     = -l                          # -a 옵션을 삭제
        log_on_failure  += USERID
        disable         = no                          # yes 를 no 로 변경
}
==============================

-------- telnet 
==============================

[root@mk01n01 ~]# vi /etc/xinetd.d/telnet

# default: on
# description: The telnet server serves telnet sessions; it uses \
#       unencrypted username/password pairs for authentication.
service telnet
{
        flags           = REUSE
        socket_type     = stream
        wait            = no
        user            = root
        server          = /usr/sbin/in.telnetd
        log_on_failure  += USERID
        disable         = no                         # yes 를 no 로 변경
}
==============================

14. 여기서는 FTP 및 telnet을 사용할 수 있도록 설정을 변경한다.

※ 보통 telnet 은 보안때문에 사용하지 않으며 FTP 또한 SFTP 를 사용하거나 데몬자체를 재설치를 하나 여기서는 OS에 기본으로 있는 기능을 사용해서 설치하는것을 위주로 설명한다.


[RAC 1번노드 mk01n01 구성 (1.OS setup)] 15. tmpfs 수정
[root@mk01n01 ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1             7.6G  3.5G  3.7G  49% /
/dev/sda3              18G  173M   17G   2% /u01
tmpfs                1006M     0 1006M   0% /dev/shm
/dev/hdc              3.4G  3.4G     0 100% /media/Enterprise Linux dvd 20120229

# umount tmpfs
# mount -t tmpfs tmpfs -o size=2048M /dev/shm

[root@mk01n01 Server]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1             6.8G  3.5G  3.0G  55% /
/dev/sda3              38G  177M   36G   1% /u01
/dev/sr0              3.7G  3.7G     0 100% /media/OL5.8 x86_64 dvd 20120229
tmpfs                 2.0G     0  2.0G   0% /dev/shm

15. 여기서는 Linux의 tmp 파티션을 변경한다. 보통 세팅 값은 default 로 부팅마다 약 1G 가량이 mount되는데 나중에 패치 및 upgrade 하려면 최소 2GB 이상이 필요하다.

※ 재부팅시 적용될수 있도록 '/etc/fstab' 에 아래와 같이 tmpfs 변경

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


[RAC 1번노드 mk01n01 구성 (1.OS setup)] 16. /etc/host 파일 설정

[root@mk01n01 ~]# vi /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
# 127.0.0.1 storage.test.com storage localhost.localdomain localhost storage
# ::1 localhost6.localdomain6 localhost6

127.0.0.1 localhost.localdomain localhost        

# Storage                                    ## 우리가 사용할 Storage의 IP

192.168.13.5          storage.test.com       storage        

# 11gR2 RAC Setting   

# Public                                     ## 앞으로 구성할 RAC의 각 node 의 Public IP
192.168.12.11         mk01n01.test.com         mk01n01
192.168.12.12         mk01n02.test.com         mk01n02

# Private                                    ## 앞으로 구성할 RAC의 각 node 의 Private IP
192.168.13.11         mk01n01-priv.test.com    mk01n01-priv
192.168.13.12         mk01n02-priv.test.com    mk01n02-priv

# Vitural                                    ## 앞으로 구성할 RAC의 각 node 의 Virtual IP
192.168.12.13         mk01n01-vip.test.com     mk01n01-vip
192.168.12.14         mk01n02-vip.test.com     mk01n02-vip

# SCAN                                       ## 앞으로 구성할 RAC의 각 node 의 SCAN IP
192.168.12.15         scan.test.com            mark01-scan

16. 위 [RAC 1번노드 mk01n01 구성 (1.OS setup)] 과 같이 /etc/hosts 에 우리가 사용할 서버들의 IP들을 형식에 맞게 입력한다. (여기에 서버정보를 와 alias를 입력 하게되면 앞으로 사용하는 여러 서버의 통신에서 이 alias를 사용할수 있다.)


[RAC 1번노드 mk01n01 구성 (1.OS setup)] 17. OS 커널 수정 및 적용

[root@mk01n01 ~]# vi /etc/sysctl.conf           <-- 에 아래 사항 추가

# Oracle 11gR2 RAC 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 -p 수행


[root@mk01n01 ~]## /sbin/sysctl -p
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
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 = 68719476736
kernel.shmall = 4294967296
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax =1054504960
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

17. sysctl 은 위와 같이 sysctl.conf 파일에 설정후 /sbin/sysctl -p 명령으로 Online 상에서 kernel 변수를 수정할수 있다.


[RAC 1번노드 mk01n01 구성 (1.OS setup)] 18. PAM 을 이용한 자원 제한

[root@mk01n01 ~]# vi /etc/pam.d/login                    <-- 에 아래 사항 추가

# Oracle 11gR2 RAC Setting

session    required     pam_limits.so

18. 위 [RAC 1번노드 mk01n01 구성 (1.OS setup)] 18  같이 설정을 하면 PAM 을이용한 자원제한을 사용 하겠다는 것이다. (요즘은 OS 설치시 default 로 설정되는 것으로 보인다.)

설정은 아래[RAC 1번노드 mk01n01 구성 (1.OS setup)] 19 에서 설명.


[RAC 1번노드 mk01n01 구성 (1.OS setup)] 19. limit.conf 을 이용한 자원제한

[root@mk01n01 ~]# vi /etc/security/limits.conf           <-- 에 아래 사항 추가

# Oracle 11gR2 RAC Setting

grid                 soft    nproc   2047
grid                 hard    nproc   16384
grid                 soft    nofile  1024
grid                 hard    nofile  65536
# grid                 hard    maxlogins  1024      

oracle               soft    nproc   2047
oracle               hard    nproc   16384
oracle               soft    nofile  1024
oracle               hard    nofile  65536
# oracle               hard    maxlogins  1024

19. 위와같이 grid 및 oracle user(OS user임)에 대한 자원 제한을 할수 있다.

※ grid 및 oracle use의 nproc 및 nofile 을 설정한다. (maxlogins 는 보통 잘 설정하지 않는다.)

위에서 말하는 nproc  및 nofile은  접속한 세션에서 grid 및 oracle user 가 한번에 열수 있는 processor 와 file 파일 갯수이다. soft 는 user가 로그인 시 최초로 적용되는 값이며 hard는 시스템에서 사용할 수 있는 최대한의 값을 설정하는 것이다. 

hard는 root user에서 설정을 하며 해당 user는 설정된 값이상으로 변경이 불가능하다.

soft는 해당 user가 hard 값 이하까지  얼마든지 변경가능하다. 

※ 그리고 위에서 주석처리는 했지만 maxlogins 는 하루에 1024번 login 을 하게 되면 설정된 login을 막겠다는 것이다.


이외에 다른 재미있는 설정사항들이 많으나 여긴 RAC 설치를 위한 Post 이므로 필요한 값만 설정하도록 한다.

(OS 쪽도 아는한 포스팅을 할 예정으로 나중에 거기에서 다시 생각해보기로 한다.)


[RAC 1번노드 mk01n01 구성 (1.OS setup)] 20. hangcheck timer 설정

[root@mk01n01 ~]# vi /etc/modprobe.conf                         <-- 아래 사항 추가

# Oracle 11gR2 RAC Setting

options hangcheck-timer hangcheck_tick=30 hangcheck_margin=180

-- 아래사항 수행

[root@mk01n01 ~]# modprobe -v hangcheck-timer

insmod /lib/modules/2.6.18-194.el5/kernel/drivers/char/hangcheck-timer.ko hangcheck_tick=30 hangcheck_margin=180

20. hangcheck 모듈은 RAC의 시스템의 상태를 체크하고 장애가 난 노드를 강제로 재부팅하기 위해 설정하는 설정으로 hangcheck_tick=30 은 30마다 hangcheck tick 을 전송하고 hangcheck_margin=180은 장애가 난 노드에 reset 명령을 180초 내에 전송하겠다는 의미이다.

해당 설정사항은 아래 [RAC 1번노드 mk01n01 구성 (1.OS setup)] 21. 와 같이 설정하여 부팅시 항상 수행되도록 한다.

[RAC 1번노드 mk01n01 구성 (1.OS setup)] 20. hangcheck timer 부팅시 자동 실행

[root@mk01n01 ~]# vi /etc/rc.local                               <-- 아래 사항 추가

# Oracle 11gR2 RAC Setting

/sbin/modprobe hangcheck-timer rdate -s 192.168.12.11

20. /etc/rc.local 파일을 부팅시에  정의 된 command 나 스크립트를 수행하도록 하는명령으로 위에서 설정한 hangcheck-timer 를 설정 했다. (서버에 장애가 나더라도 재부팅을 하지 않겠다라고 하면 hangcheck-timer를 설정할 필요가 없다.)

[RAC 1번노드 mk01n01 구성 (1.OS setup)] 20. NTP 를 이용한 시간 동기화

[root@mk01n01 ~]# vi /etc/sysconfig/ntpd 

OPTIONS=" -x -u ntp:ntp -p /var/run/ntpd.pid"                     <-- -x 옵션 추가


[root@mk01n01 ~]# service ntpd start                              <-- ntp 구동
ntpd: Synchronizing with time server:                      [  OK  ]
Starting ntpd:                                             [  OK  ]


[root@mk01n01 ~]# ntpq -p                                         <-- ntp 구동 확인

     remote            refid      st t when poll reach   delay   offset  jitter
===============================================================================
 mk01n01.test.com 192.168.2.11    2 u   31   64    1   39.050    0.599   0.001
 LOCAL(0)        .LOCL.          10 l   28   64    1    0.000    0.000   0.001


ntp 를 모든 runlevel에서 동작하도록 설정

[root@mk01n01 ~]chkconfig --level 123456 ntpd on  

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


위 [RAC 1번노드 mk01n01 구성 (1.OS setup)] 20 에서 나는 ntp 서버를 DB 1번노드로 사용할 mk01n01(192.168.12.11)의 IP 로 생성했지만 NTP 서버가 따로 있다면 NTP 서버를 따로 설정해도된다.

NTP 는 세계여러나라의 Time-server에 주기적으로 접속하여 해당서버 시스템의 시간을 맞춰주는 

Network Time Protocol Service 이다. RAC 를 구성하기 위해서는 각 Node 간 시간이 동기화 되어야 
하는데 이 NTP를 사용해서 시간을 동기화 한다.

NTP 를 구동하기 위해서는 NTP package 가 설치 되어 있어야 하며 '/etc/ntp.conf' 또는 '/etc/ntpd.conf'
의 설정파일이 존재해야 구동이 가능하다. (이미 OS 설치시 패키지를 선택했다.)

NTP 데몬을 이용한 타임서버 동기화 방법을 사용하면 rdate를 이용하는 것보다 오차 범위를 줄일 수있으며
또한 ntp1.epidc.co.kr 의 NTP 서버를 사용하는 것보다 ISP 나 IDC에 다른 서버가 있다면 그것을 사용하는 것이 좋다.

OLE 5.8 에서는 기본 Package에 설치는 되어있지만 설정파일이 없기 때문에 바로 구동되지는 않는다.
-- '/etc/ntp.conf.org' 원본파일이 존재 하기 때문에 NTP를 구동하기 위해 복사해서 사용할 수있다.

※ 나중에 NTP 설정 Post 에서 NTP 설정을 다를 예정이므로 NTP 설정에 대한 자세한 내용은 그때 다루도록 한다.


[RAC 1번노드 mk01n01 구성 (1.OS setup)] 21. OS Group 및 User 생성

[root@mk01n01 ~]# /usr/sbin/groupadd -g 1000 dba
[root@mk01n01 ~]# /usr/sbin/groupadd -g 1001 oinstall
[root@mk01n01 ~]# /usr/sbin/useradd -u 1001 -g dba -G oinstall grid
[root@mk01n01 ~]# /usr/sbin/useradd -u 1002 -g dba -G oinstall oracle

21. OS의 group을 dba와 oinstall 생성하고  grid user 와 oracle user 를 생성한다.

위 command 의 의미는 1000 이라는 gid(group id)를 가지는 dba user 와 1001 의 gid(group id)를 가지는 oinstall user를 생성 한다.


grid user 생성시 에 uid(user id)는 1001 로 primary group 은 dba, supplementary group 은 oinstall 로 생성하며, 마찬가지로 oracle user 의 uid(user id)는 1002 primary group 은 dba, supplementary group 으로는 oinstall로 생성한다.


※ 이렇게 생성하는 이유는 운영에서 permission 으로 보안요소를 적용할수 있는데 이때 유용하게 사용할 수있어서 이다. 


※ TIP. user 삭제 후 같은 user 생성 하기


group 을 삭제할때는 groupdel [그룹명] 으로 삭제가 잘되나

user를 삭제할때는 꼭 -r 옵션을 줘야 한다.

그렇지 않으면 같은 user 생성시 아래와 같은 에러메시지가 나타난다.


/*

-- 에러메시지

[root@mk01n01 ~]# /usr/sbin/useradd -u 1002 -g oinstall -G dba oracle

Creating mailbox file: File exists

*/


생성이 안되고 아래와 같은 메세지가 나타날경우 /var/spool/mail/ 에

생성 user 명이 파일로 존재한다. 그 user 명의 파일을 삭제 해줘야

userdel 로 삭제했던 user와 같은 user를 추가할수 있다.


이유는 user 생성시 각 user 마다 mailbox가 생성되는데 이 위치가  '/var/spool/mail/[user 명]' 이다. 

user 삭세시 -r 옵션을 주지 않으면 이 mailbox가 삭제되지 않기 때문이다.




[RAC 1번노드 mk01n01 구성 (1.OS setup)] 22. User Password 설정

[root@mk01n01 ~]# 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.
[root@mk01n01 ~]# 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.

22. 위와 같이 각 user 의 password를 설정한다.

(welcome1 으로 설정 나중에 위와 같은 방법으로 변경가능 하다.)


[RAC 1번노드 mk01n01 구성 (1.OS setup)] 23. 설치에 필요한 디렉토리 생성

#1. Create the Oracle Inventory Directory

[root@mk01n01 ~]# mkdir -p /u01/app/oraInventory
[root@mk01n01 ~]# chown -R grid:dba /u01/app/oraInventory
[root@mk01n01 ~]# chmod -R 775 /u01/app/oraInventory

#2. Creating the Oracle Grid Infrastructure Base & Home Directory

[root@mk01n01 ~]# mkdir -p /u01/app/11.2.0/grid_base
[root@mk01n01 ~]# mkdir -p /u01/app/11.2.0/grid_home
[root@mk01n01 ~]# chown -R grid:dba /u01/app/11.2.0/
[root@mk01n01 ~]# chmod -R 775 /u01/app/11.2.0/

#3. Creating the Oracle Base Directory

[root@mk01n01 ~]# mkdir -p /u01/app/oracle
[root@mk01n01 ~]# mkdir -p /u01/app/oracle/cfgtoollogs
[root@mk01n01 ~]# chown -R oracle:dba /u01/app/oracle
[root@mk01n01 ~]# chmod -R 775 /u01/app/oracle

#4. Creating the Oracle RDBMS Home Directory

[root@mk01n01 ~]# mkdir -p /u01/app/oracle/product/11.2.0/db_1
[root@mk01n01 ~]# chown -R oracle:dba /u01/app/oracle/product/11.2.0/db_1
[root@mk01n01 ~]# chmod -R 775 /u01/app/oracle/product/11.2.0/db_1


23. 여기에서는 Oracle RAC 설치 시 필요한 디렉토리 생성 및 퍼미션 설정을 한다.

#1. Inventory 디렉토리 생성 및 퍼미션 설정.

   - 이 디렉토리는 설치 또는 패치 등을 할때 모든 정보들이 기록되는 중요한 디렉토리이다.

#2. grid_base 및 grid_home 디렉토리 생성 및 퍼미션 설정.

   - 오라클에서는 grid 설치시 grid_base 와 grid_home 의 경로를 따로 설치하도록 권고한다.

     물론 같이 사용해도 상관없으나 나는 편의를 위해서 설정.

#3. 오라클 Base 디렉토리 생성 및 퍼미션 설정.

#4. 오라클 home 디렉토리 생성 및 퍼미션 설정.



[RAC 1번노드 mk01n01 구성 (1.OS setup)] 24. root user 및 grid, oracle user 의 환경변수 설정

#1. root user의 .bash_profile 설정

[root@mk01n01 ~]# vi .bash_profile                   <-- 에 아래사항 추가

# Oracle 11gR2 RAC Settings 

GRID_BASE=/u01/app/11.2.0/grid_base;          export GRID_BASE
GRID_HOME=/u01/app/11.2.0/grid_home;       export GRID_HOME
PATH=$PATH:$HOME/bin:$GRID_HOME/bin;       export PATH

[root@mk01n01 ~]# . ./.bash_profile


#2. grid user의 .bash_profile 설정                                    <-- 에 아래사항 추가

[root@mk01n01 ~]# su - grid
[grid@mk01n01 ~]$ vi .bash_profile

# Oracle 11gR2 RAC Settings

GRID_BASE=/u01/app/11.2.0/grid_base;         export GRID_BASE
GRID_HOME=/u01/app/11.2.0/grid_home;        export GRID_HOME
PATH=$PATH:$HOME/bin:$GRID_HOME/bin;        export PATH

[grid@mk01n01 ~]$ . ./.bash_profile


#3. oracle user의 .bash_profile 설정

[grid@mk01n01 ~]$ su - oracle
Password: 

[oracle@mk01n01 ~]$ vi .bash_profile                  <-- 에 아래사항 추가

# Oracle 11gR2 RAC Settings

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

ORACLE_UNQNAME=cafe;                                         export ORACLE_UNQNAME   
ORACLE_BASE=/u01/app/oracle;                                 export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1;                export ORACLE_HOME
GRID_HOME=/u01/11.2.0/grid;                                  export GRID_HOME
ORACLE_SID=cafe01;                                           export ORACLE_SID
ORACLE_TERM=xterm;                                           export ORACLE_TERM
NLS_LANG=american_america.utf8;                              export NLS_LANG
PATH=/usr/sbin:$PATH;                                        export PATH
PATH=$ORACLE_HOME/bin:$PATH:$GRID_HOME:$GRID_HOME/bin;       export PATH
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@mk01n01 ~]$ . ./.bash_profile


23. root user 및 grid, oracle user 의 환경변수를 설정한다. 

     #1. #2. root user와 grid user 에는 GRID_BASE와 GRID_HOME 대한 내용만 정의한다.

     #3. 오라클 S/W 설치시 필요한 oracle_home, grid_home, oracle_sid, 프롬프트의 nls_lang 등을 정의한다.

     



★ 1. RAC 는 최소 2개의 DB 노드를 필요로 하기 때문에 ■ [11gR2 RAC 설치(ASM ISCSI)] 04. RAC 1번노드 mk01n01 구성 (1. OS 설치) 와 ■ [11gR2 RAC 설치(ASM ISCSI)] 04. RAC 1번노드 mk01n01 구성 (1. OS setup) 을 다시 한번 반복하여 새로 설치를 하는방법과 

★ 2. Virtual Machine 를 복제하여 2번노드를 생성하는 방법이 있다.

      (Virtual Machine 를 복제 하는 방법은 나중에 다루도록 하겠다.

       ※ [11gR2 RAC 설치(ASM ISCSI)] 01. Oracle 11gR2 RAC TEST Machine 구성 참고)


## 앞으로의 내용들은 2개노드를 모두 설치 한 이후의 내용이다.