2014년 1월 2일 목요일

[Oracle 12c RAC Install (1 of 3)] Oracle Grid Infrastructure 12c (12.1.0) Installation

본 문서는 12c RAC Database를 설치하기 위한 문서 중 1번째로, Grid Infrastructure 설치에 대한 내용을 담고 있다. 본 실습을 수행하기 위해 Virtual Box를 이용하였다.


1. 최소사양
먼저, Grid Infrastructure에서 언급하는 하드웨어의 최소사양은 다음과 같다.


하드웨어 컴포넌트
최소사양


메모리(RAM)
Oracle Grid Infrastructure 설치를 위해서는 최소 4GB의 물리 메모리를 필요로 한다. 이는 Oracle RAC 설치를 위한 범위에도 포함된다.
가상메모리 (swap)
설치를 수행하는 서버의 메모리가 4GB에서 16GB 사이의 RAM을 갖고 있는 경우, 동일한 사이즈의 가상 메모리가 필요하다. 16GB 이상의 물리 메모리를 갖고 있는 경우에는 16GB의 가상 메모리면 충분하다.

더욱 자세한 내용은 Oracle® Grid Infrastructure Installation Guide에서 확인할 있다.


2. VM 구성하기

본 실습을 수행한 시스템의 스펙은 다음과 같다.
CPU: Intel® Core™ i5-3320M CPU @ 2.60GHz
RAM: 16 GB
OS: Windows 7 (x64)
위 시스템에 Virtual Box를 이용하여 가상 머신을 설치한 후 본 환경 구성을 수행하였다.

a. 가상 머신 생성

가상 머신은 Oracle 12c 환경에서 요구하는 최소 사양에 맞춰서 위와 같이 구성하였다. 차이는 있을 있겠지만, 보통 시스템의 노드의 경우 HDD 30GB 정도면 실습을 수행하는데 넉넉하였다. 네트워크는 Public Network, Private Network 구성을 위한 개의 네트워크와, 원격 접속 인터넷 작업을 위한 브릿지 어댑터를 다음과 같이 설정하였다.



b. 공유 스토리지 생성
Oracle Cluster 환경에 필요한 공유 스토리지는 Virtual Box에서 다음과 같은 방법으로 생성할 있다. 먼저, 해당 머신에 대한 설정에서 저장소 탭에 다음과 같이 스토리지를 추가한다.


이제, 다음과 같이 가상 미디어 관리자에서 해당 디스크들을 ASM Disk 사용할 있도록 공유 가능(Shareable) 속성을 변경해준다. 이를 통해서 Virtual Box 환경에서는 다수의 가상 머신들이 동일한 스토리지에 접근하도록 있다.



3. 리눅스 설치하기

문서에서는 VM 상에 리눅스를 설치하는 데에 대해서는 언급하지 않는다. 다만 12c 환경의 Grid Infrastructure VM상에서 설치하는데 있어서 리눅스를 설치할 작업해 있는 사항들을 언급하고자 한다.

a. OS 및 소프트웨어 설치 파일 다운로드
설치에 사용할 파일을 다운로드 한다. 설치하고자 하는 환경에 따라서 OS 버전 등은 달라질 수 있다. 이들은 download.oracle.com/ 에서 다운로드 할 수 있다.  실습에서 수행된 OS 버전 및 파일들은 다음과 같다.

 Oracle Enterprise Linux 5.10
 Oracle Grid Infrastructure 12.1.0
 Oracle Database Enterprise 12.1.0

b. 필수 패키지 정보
Oracle 소프트웨어를 설치하는데 있어서 필요한 패키지는 다음과 같다.

compat-libstdc++-33-3.2.3
elfutils-libelf-0.125
elfutils-libelf-devel-0.125
gcc-4.1.2
gcc-c++-4.1.2
glibc-2.5-24
glibc-common-2.5
glibc-devel-2.5
glibc-headers-2.5
unixODBC-2.2.11
libaio-devel-0.3.106
libgcc-4.1.2
libstdc++-4.1.2
libstdc++-devel 4.1.2
make-3.81
sysstat-7.0.2
unixODBC-2.2.11
unixODBC-devel-2.2.11
ksh-20060214 binutils-2.17.50.0.6

이외에도 oracleasm asm diskgroup 생성에 필요하므로, 함께 설치해주도록 한다.

c. 리눅스 설치시 설치 포함 패키지 설정
필수 패키지들을 운영체제를 설치할 때 함께 설치할 수 있다. 물론, 이 패키지들은 OS를 설치한 후에 yum이나 혹은 패키지 별도 설치 등의 방법으로 설치할 수 있다. 설치 후반부에 다음과 같은 화면에서 Customize now를 체크한다.


그럼 다음과 같이 여러 패키지들을 선택할 있는데, Base System System Tools 선택 , 하단에 Optional package 클릭하면 설치할 있는 패키지의 목록이 나타나게 된다. 이에 맞춰서 필요한 패키지들을 선택하면 원하는대로 설치가 가능하다.



4. Pre-installation 작업

오라클 소프트웨어를 설치하기 전에 해주어야 하는 작업은 크게 두 가지로 나눌 수 있다. 먼저, VM 환경에서 확장 게스트를 설치하는 것과 OS 단에서 커널 관련 파라미터 값을 바꾸어 주어야 하는 것이다.

a. 게스트 확장 OS 설치
Virtual Box 환경에서는 Host키 + D 를 누르면 확장 설치 디스크가 삽입된다. 그럼 다음 작업을 통해 확장 게스트를 설치할 수 있다.
[root@oel5-12c-rac1 dev]# cd /media/VBOXADDITIONS_4.3.2_90405/
[root@oel5-12c-rac1 VBOXADDITIONS_4.3.2_90405]# ./VBoxLinuxAdditions.run

b. OS 관련 작업 수행
오라클 소프트웨어를 설치하기 전에 사전에 OS단에서 작업해주어야 하는 내용들이 있는데, 이는 다음과 같다. 만약, Oracle Enterprise Linux 6보다 상위 버전을 이용하면 oracle-rdbms-server-12cr1-preinstall 패키지를 지원하는데, 이를 이용하면 작업을 자동으로 수행해준다. 문서는 Oracle Enterprise Linux 5.10 버전을 사용하기 때문에이를 수동으로 진행하였다.

 /etc/sysconfig
1) /etc/sysconfig 다음 값을 추가한다.
fs.file-max = 6815744
kernel.sem = 250 32000 100 128
kernel.shmmni = 4096
kernel.shmall = 1073741824
kernel.shmmax = 4398046511104
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
fs.aio-max-nr = 1048576
net.ipv4.ip_local_port_range = 9000 65500
 2) 수정 내용을 반영한다.
[root@oel5-12c-rac1 ]# /sbin/sysctl –p

/etc/security
/etc/security 다음 값을 추가한다.
grid    soft    nproc   2047
grid    hard    nproc   16384
grid    soft    nofile  1024
grid    hard    nofile  65536
oracle  soft    nproc   2047
oracle  hard    nproc   16384
oracle  soft    nofile  1024
oracle  hard    nofile  65536

 /etc/selinux/config
Secure Linux 비활성화 하기 위하여, /etc/selinux/config 다음과 같이 변경한다.
SELINUX=disabled

방화벽 비활성화
[root@oel5-12c-rac1 ~]# service iptables stop
[root@oel5-12c-rac1 ~]# chkconfig iptables off

ntpd 중단 비활성화
Cluster 운영하는데 있어서, 노드 간의 시간 동기화를 맞추어주어야 하는데 이를 11g 이후부터는 오라클에서 CTSS라는 서비스를 제공한다. 이를 사용하기 위하여 ntpd 서비스를 중단해주어야 한다.
[root@oel5-12c-rac1 ~]# service ntpd stop
[root@oel5-12c-rac1 ~]# chkconfig ntpd off
[root@oel5-12c-rac1 ~]# mv /etc/ntp.conf /etc/ntp.conf.orig
[root@oel5-12c-rac1 ~]# rm /var/run/ntpd.pid

/etc/hosts 수정
네트워크를 다음과 같이 설정한다. 물론, 수동이로 이에 맞추어서 hostname ip주소를 맞추어주어야 한다.
127.0.0.1       localhost.litkhai.com   localhost
# Public
192.168.56.101   oel5-12c-rac1.litkhai.com        oel5-12c-rac1
192.168.56.102   oel5-12c-rac2.litkhai.com        oel5-12c-rac2
# Private
192.168.1.101   oel5-12c-rac1-priv.litkhai.com   oel5-12c-rac1-priv
192.168.1.102   oel5-12c-rac2-priv.litkhai.com   oel5-12c-rac2-priv
# Virtual
192.168.56.103   oel5-12c-rac1-vip.litkhai.com    oel5-12c-rac1-vip
192.168.56.104   oel5-12c-rac2-vip.litkhai.com    oel5-12c-rac2-vip
# SCAN
192.168.56.105   oel5-12c-scan.litkhai.com oel5-12c-scan
참고로, hostname /etc/sysconfig/network에서, ip 주소는 /etc/sysconfig/network-scripts/ifcfg-eth(#)에서 설정할 있다.

유저 계정에서 root권한 프로그램 수행하기
유저 계정에서 루트만 가능한 명령(ifconfig ) 사용하고자 하는 상황이 있다. 때는 다음과 같이 심볼릭 링크를 걸어주면 된다.
ln -s /sbin/ifconfig /usr/bin/ifconfig


c. grid 및 oracle 계정 및 그룹 생성
계정을 설정하고 설치하는 데에는 grid계정과 oracle계정의 별도 구분 없이 oracle로 통합하여 설치하는 방법과, 이를 별도의 계정으로 설치하는 방법 두 가지가 있다. 여기서는 grid와 oracle 두 개의 계정으로 이를 설정할 것이다. 주의할 점은, 클러스토로 묶이는 노드들 간에는 유저와 그룹이 id가 동일해야 한다는 점이다.

유저 그룹 생성
[root@oel5-12c-rac1 ]#
groupadd -g 54321 oinstall
groupadd -g 54322 dba
groupadd -g 54323 oper
groupadd -g 54324 backupdba
groupadd -g 54325 dgdba
groupadd -g 54326 kmdba
groupadd -g 54327 asmdba
groupadd -g 54328 asmoper
groupadd -g 54329 asmadmin
useradd -u 54322 -g oinstall -G asmadmin,asmdba grid
useradd -u 54321 -g oinstall -G dba,backupdba,dgdba,kmdba,asmdba,asmoper oracle

디렉토리 생성
[root@oel5-12c-rac1 ~]#
mkdir -p  /u01/app/12.1.0/grid
mkdir -p /u01/app/grid
mkdir -p /u01/app/oracle
chown -R grid:oinstall /u01
chmod -R 775 /u01/
chown oracle:oinstall /u01/app/oracle

이제 설치 파일들을 다운로드 하여 압축을 해제하면 된다. 위치는 크게 상관이 없으나, 통상 /u01/stage 개의 설치 파일의 압축을 해제하여 두는 것이 일반적이다. 그리고, 설치할 계정에 따라서 소유를 grid:oinstall, oracle:loinstall 맞추어 준다.
[root@oel5-12c-rac1 ~]# cd /u01/stage
[root@oel5-12c-rac1 stage]# ll
total 8
drwxr-xr-x 7 oracle oinstall 4096 Dec 27 23:02 database
drwxr-xr-x 7 grid   oinstall 4096 Jun 10  2013 grid

이제 머신을 종료하고, 노드 복제를 통해 2번째 노드를 생성할 것이다.
[root@oel5-12c-rac1 ~]# shutdown now


 5. 노드 복제 수행
Virtual Box에서는 자체적으로 머신을 복제하는 방법을 제공한다. 이를 수행하여 동일한 환경의 두번째 노드를 만들 것이다. 가상미디어 관리자에서 해당 oel5-12c-rac1 하드디스크를 복제한다.


복제를 수행하고 나면, 새로운 머신을 생성하여 oel-12c-rac2 이름으로 1 노드와 동일하게 작업을 수행한다. 그럼 다음과 같이 화면에 나올 것이다.


복사를 수행한 , 네트워크 설정 hostname 등의 설정을 2번째 노드에 맞게 바꾸어주고 Reboot 수행하도록 한다. 추후 노드를 추가할 때도 이와 동일한 방법을 이용하여 수행하면 된다.


6. Oracleasm 설정
공유 디스크로 잡은 5개의 디스크를 ASM 환경에 맞게 사용하기 위해서는 oracleasm 사용하여 disk 생성해주어야 한다. OS 설치시에 이에 해당하는 패키지를 설치하거나, yum이나 다시 OS CD 통해서 패키지를 설치할 있다. 해당 디스크는 fdisk 통해 파티션 생성이 완료된 후어야 한다.

1) oracleasm 활성화
[root@oel5-12c-rac1 ~]# /etc/init.d/oracleasm enable

2) oracleasm 설정 수행하기 (1 노드)
[root@oel5-12c-rac1 ~]# oracleasm configure -i
Configuring the Oracle ASM library driver.

This will configure the on-boot properties of the Oracle ASM library
driver.  The following questions will determine whether the driver is
loaded on boot and what permissions it will have.  The current values
will be shown in brackets ('[]').  Hitting <ENTER> without typing an
answer will keep that current value.  Ctrl-C will abort.

Default user to own the driver interface []: grid
Default group to own the driver interface []: asmadmin
Start Oracle ASM library driver on boot (y/n) [n]: y
Scan for Oracle ASM disks on boot (y/n) [y]: y
Writing Oracle ASM library driver configuration: done

3) ASM 디스크 생성
[root@oel5-12c-rac1 ~]# oracleasm createdisk DISK1 /dev/sdb1
Marking disk "DISK1" as an ASM disk:                       [  OK  ]
[root@oel5-12c-rac1 ~]# oracleasm createdisk DISK2 /dev/sdc1
Marking disk "DISK2" as an ASM disk:                       [  OK  ]
[root@oel5-12c-rac1 ~]# oracleasm createdisk DISK3 /dev/sdd1
Marking disk "DISK3" as an ASM disk:                       [  OK  ]
[root@oel5-12c-rac1 ~]# oracleasm createdisk DISK4 /dev/sde1
Marking disk "DISK4" as an ASM disk:                       [  OK  ]
[root@oel5-12c-rac1 ~]# oracleasm createdisk DISK5 /dev/sdf1
Marking disk "DISK5" as an ASM disk:                       [  OK  ]

4) 생성된 디스크 목록 확인
[root@oel5-12c-rac1 ~]# /etc/init.d/oracleasm listdisks
DISK1
DISK2
DISK3
DISK4
DISK5

5) 2 노드에서 oracleasm 활성화 확인 oracleasm 설정
[root@oel5-12c-rac1 ~]# ssh oel5-12c-rac2
password:
[root@oel5-12c-rac2 ~]# /etc/init.d/oracleasm listdisks
[root@oel5-12c-rac2 ~]# /etc/init.d/oracleasm enable
[root@oel5-12c-rac2 ~]# oracleasm configure -i
Configuring the Oracle ASM library driver.

This will configure the on-boot properties of the Oracle ASM library
driver.  The following questions will determine whether the driver is
loaded on boot and what permissions it will have.  The current values
will be shown in brackets ('[]').  Hitting <ENTER> without typing an
answer will keep that current value.  Ctrl-C will abort.

Default user to own the driver interface []: grid
Default group to own the driver interface []: asmadmin
Start Oracle ASM library driver on boot (y/n) [n]: y
Scan for Oracle ASM disks on boot (y/n) [y]: y
Writing Oracle ASM library driver configuration: done

6) 디스크 감지 작업 수행
[root@oel5-12c-rac2 ~]# oracleasm scandisks
Scanning the system for Oracle ASMLib disks:               [  OK  ]

7) 디스크 확인
[root@oel5-12c-rac2 ~]# /etc/init.d/oracleasm listdisks
DISK1
DISK2
DISK3
DISK4
DISK5

이제, 사전 준비 작업이 모두 완료되었으며 설치를 수행할 것이다.


7. Grid Infrastructure 설치하기
grid 계정으로 Grid Infrastructure를 설치할 것이다

a. 설치 파일 확인
현재 설치 파일은 위에서 언급한대로 /u01/stage에 grid/라는 디렉토리에 존재하고 있다. 
[root@oel5-12c-rac1 ~]# su - grid
[grid@oel5-12c-rac1 ~]$ cd /u01/stage
[grid@oel5-12c-rac1 stage]$ ll
total 8
drwxr-xr-x 7 oracle oinstall 4096 Dec 27 23:02 database
drwxr-xr-x 7 grid   oinstall 4096 Jun 10  2013 grid

b. 설치 작업 수행

runInstaller 실행
runInstaller를 실행한 후, 다음 순서대로 따라가면 된다.
설치 화면이 곧 나타나게 된다.

Step 1 of 21
소프트웨어 업데이트에 대한 정보를 넘어가도록 설정하고 다음 단계로 넘어간다.

Step 2 of 21
클러스터 환경을 구성할 것이므로, 위와 같이 선택한다


Step 3 of 21
클러스터 환경을 구성할 것이므로, 위와 같이 선택한다.

Step 4 of 21
클러스터 환경을 구성할 것이므로, 위와 같이 선택한다.

Step 5 of 21
다음 단계에서는 사용할 언어를 선택하도록 한다. 필요한 언어들을 선택하고 다음 단계로 넘어가면 된다.

Step 6 of 21
GNS 사용하지 않도록 설정하고, SCAN 이름과 Cluster Name 맞추어 준다. /etc/hosts 기재된 SCAN 주소와 맞아야만 다음 단계로 넘어갈 있다.

Step 7 of 21
이제는 클러스터 노드들을 확인하는 작업으로, 클러스터 노드를 추가한다. 그리고 SSH Connectivity 선택하면 맞추는 작업을 수행한다.
SSH Equivalence 맞추는 작업으로, Setup 누르면 해당 자동적으로 해당 작업을 수행한다. 정상적으로 종료되면 다음으로 넘어갈 있다.

Step 8 of 21
이제 네트워크를 어떻게 설정할 것인지를 선택한다. 기존에는 Public Private 개만 존재했다면 이제는 ASM 추가되었다. 여기서는 ASM, Private, ASM & Private 중에서 선택할 있다. 여기서 ASM 네트워크가 설정되어야만 Flex ASM 사용할 있다.

Step 9 of 21
Grid Infrastructure 관리를 위한 Repository 사용하지 않음을 선택하고 다음으로 진행한다.

Step 10 of 21
 여기에서 Flex ASM 사용함을 선택한다.


Step 11 of 21
이전에 oracleasm 통해생성한 디스크들을 있다. 이들을 DATA라는 디스크 그룹으로 설정하고 포함시킨다.

Step 12 of 21
 ASM 인스턴스에 이제는 원격으로 접속하는 것이 가능하므로, ASM 계정이 추가되었다. 이에 대한 암호를 설정해 준다.

Step 13 of 21
IPMI 사용하지 않도록 설정한다.

Step 14 of 21
 이제 Grid Infrastructure 대한 그룹을 설정한다. 자동적으로 입력되니 다음으로 넘어가면 된다.

Step 15 of 21
 이제 소프트웨어의 위치를 입력하도록 나오는데, 이전과는 다르게 grid 대해서도 /u01/app/12.1.0/grid_1 default 설정된다. 여기서는 기존과 똑같이 grid 디렉토리로 변경하여 설치를 진행하였다.

Step 16 of 21
인벤토리 디렉토리 위치를 설정한다. 그대로 진행하면 된다.

Step 17 of 21
12c 부터는 설치 중간에 수행해주어야 하는 스크립트를 자동적으로 수행할 있다. root 대한 암호를 입력하면 된다. 그러나 스크립트의 로그가 실시간으로 보이지 않는 등의 단점이 있어 여기서는 사용하지 않았다.

Step 18 of 21
 그럼 이제 유효성 검사를 수행하게 되고, Fixup 해야하는 부분에 대해 경고메세지를 출력한다.


 Fix & Check Again 수행하여 해당 스크립트를 수행하고, 유효성 검사를 다시 시도한다.
  
[root@oel5-12c-rac1 ~]# /tmp/CVU_12.1.0.1.0_grid/runfixup.sh
All Fix-up operations were completed successfully.
[root@oel5-12c-rac1 ~]# ssh oel5-12c-rac2
[root@oel5-12c-rac2 ~]# /tmp/CVU_12.1.0.1.0_grid/runfixup.sh
All Fix-up operations were completed successfully.

체크를 수행한 후에도 경고메세지가 출력되는 것에 대해서는 Ignore All 체크하고 넘어간다.



Step 19 of 21
최종 Summary 나타나게 되고, 이제 Install 수행하면 된다.

Step 20 of 21
이제 설치가 진행된다.

 설치 후반 후에 위와 같이 스크립트를 수행하라는 창이 나타나게 되면, 해당 스크립트를 수행한다. 이는 반드시 root 계정으로 실행해야 하며, 노드 1번부터 차례대로 수행하여야 한다

[root@oel5-12c-rac1 ~]# /u01/app/oraInventroy/orainstRoot.sh
[root@oel5-12c-rac1 ~]# /u01/app/12.1.0/grid/root.sh
[root@oel5-12c-rac1 ~]# ssh oel5-12c-rac2
[root@oel5-12c-rac2 ~]# /u01/app/oraInventroy/orainstRoot.sh
[root@oel5-12c-rac2 ~]# /u01/app/12.1.0/grid/root.sh
(여기서는 출력 결과가 길어 해당 내용은 생략하였다.)

그리고 설치를 진행하면, 다음과 같은 에러가 출력될 것이다.

이는 SCAN 정보가 DNS 등록되지 않아서 발생하는 에러로, VM 가상 환경의 실습을 진행하는 데는 문제가 없다. Skip 눌러 설치를 진행하도록 한다.

Step 21 of 21


최종적으로 그럼 위와 같이 설치가 완료된다.


8. 설치 확인
설치된 내용을 다음을 통해 확인하도록 한다.
[grid@oel5-12c-rac1 ~]$ . oraenv
ORACLE_SID = [grid] ? +ASM1
The Oracle base has been set to /u01/app/grid
[grid@oel5-12c-rac1 ~]$ crsctl stat res -t
--------------------------------------------------------------------------------
Name           Target  State        Server                   State details                            
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.ASMNET1LSNR_ASM.lsnr
               ONLINE  ONLINE       oel5-12c-rac1            STABLE
               ONLINE  ONLINE       oel5-12c-rac2            STABLE
ora.DATA.dg
               ONLINE  ONLINE       oel5-12c-rac1            STABLE
               ONLINE  ONLINE       oel5-12c-rac2            STABLE
ora.LISTENER.lsnr
               ONLINE  ONLINE       oel5-12c-rac1            STABLE
               ONLINE  ONLINE       oel5-12c-rac2            STABLE
ora.net1.network
               ONLINE  ONLINE       oel5-12c-rac1            STABLE
               ONLINE  ONLINE       oel5-12c-rac2            STABLE
ora.ons
               ONLINE  ONLINE       oel5-12c-rac1            STABLE
               ONLINE  ONLINE       oel5-12c-rac2            STABLE
ora.proxy_advm
               ONLINE  ONLINE       oel5-12c-rac1            STABLE
               ONLINE  ONLINE       oel5-12c-rac2            STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.LISTENER_SCAN1.lsnr
      1        ONLINE  ONLINE       oel5-12c-rac1            STABLE
ora.asm
      1        ONLINE  ONLINE       oel5-12c-rac1            STABLE
      2        ONLINE  ONLINE       oel5-12c-rac2            STABLE
      3        OFFLINE OFFLINE                               STABLE
ora.cvu
      1        ONLINE  ONLINE       oel5-12c-rac1            STABLE
ora.oc4j
      1        OFFLINE OFFLINE                               STABLE
ora.oel5-12c-rac1.vip
      1        ONLINE  ONLINE       oel5-12c-rac1            STABLE
ora.oel5-12c-rac2.vip
      1        ONLINE  ONLINE       oel5-12c-rac2            STABLE
ora.scan1.vip
      1        ONLINE  ONLINE       oel5-12c-rac1            STABLE

댓글 없음:

댓글 쓰기