oracle database 11gr2 rac install step by step on vsphere
TRANSCRIPT
Version 변경일자 변경자(작성자) 주요내용
1
2
Author 박철현
Creation Date 2011.7.6
Last Updated
Version 0.1 Copyright(C) 2004 Goodus Inc.
All Rights Reserved
Oracle Database 11gR2 RAC
Install Step by Step on VSphere
- 2 -
Contents
1. 개요 ............................................................................................................. 3
2. vSphere server install .............................................................................. 3
3. vSphere client install ............................................................................. 12
4. vSphere Client Start 및 VSphere Configuration .............................. 18
5. 가상머신 생성 및 OS 설치 .................................................................... 23
1. 가상머신 생성 .......................................................................................... 23
6. vSphere CLI 설치 및 Virtual Storage Configuration ....................... 45
7. Oracle Pre-Installation Steps ............................................................... 54
7.1. Preparing the system .................................................................................................. 54
7.1.1. Host file Configuration ....................................................................................................................................54
7.1.2. Kernel Sysctl Configuration ...........................................................................................................................55
7.1.3. User resource limit 설정 .................................................................................................................................55
7.1.4. NTP 설정 ................................................................................................................................................................56
7.1.5. User Shell Configuration .................................................................................................................................56
7.1.6. SSH 설정 ................................................................................................................................................................58
7.2. Preparing Oracle ASM ................................................................................................ 58
7.2.1. ASM LIBRARY .......................................................................................................................................................58
7.2.2. ASM Configuration ............................................................................................................................................59
7.2.3. Create ASM VOLUME. ......................................................................................................................................59
7.3. Install requirement 확인 ............................................................................................ 64
7.3.1. cluster verify utility ............................................................................................................................................64
8. Oracle RAC Installation step ................................................................ 77
8.1. Grid Infrastracture Install ........................................................................................... 77
8.2. Database Software Install .......................................................................................... 89
8.3. ACFS 구성 ...................................................................................................................... 96
8.4. Database 생성 ............................................................................................................ 101
- 3 -
1. 개요
Oracle 11.2.0.2 부터는 Vmware의 가상화 시스템 공식적으로 Certified 가 되었습니다.
요즘 보안 뿐맊 아니라 가상화 구축이 큰 이슈가 되고 있는데 Oracle에서 가상화에서
의 지웎을 공식적으로 지웎함에 따라 가상화 시스템에서 Oracle 이 얼마나 잘 설치가
되고 동작하는지 알아보기 위하여 가상화 시스템부터 OS, Oracle RAC 설치까지 구축
할 수 있도록 Step by Step 형식으로 작성해 보았습니다.
2. vSphere server install
설치 모드 중에서 GUI 형태의 설치 프로그램을 이용하여 설치하는 방법인 Install ESX in
graphical mode 메뉴를 선택합니다.
- 4 -
NEXT 버튺을 누르면 라이센스 동의 창으로 이동됩니다.
위와 같이 End User License 에 동의 한후 NEXT 버튺을 클릭합니다.
- 5 -
키보드 레이아웃을 선택하는 화면이 나오면 U.S. English 타입을 선택합니다.
설치에 필요한 하드웨어 장치 드라이버 정보를 추가로 로딩 할 것인지 확인 합니다.
NO 를 선택 할 경우 설치 파일에 이미 하드웨어 장치 드라이버가 모두 포함되어 있어 별도로
로딩 시켜야 할 드라이버가 없다는 것을 나타냅니다. NO 를 선택 후 계속 짂행하도록 하겠습니
다.
설치파일에 포함된 장치 드라이버를 로딩 할 것인지 묻는 화면으로 YES 선택 후 아래 그림과
같이 100% complete 메시지가 나오면 NEXT 버튺을 클릭합니다.
- 6 -
드라이버 로딩이 끝나면 라이선스 키 값을 등록 하는 화면이 나타납니다. 라이센스 값을 등록
하거나 Enter a serial number later 옵션을 선택한 후 NEXT 버튺을 클릭합니다.
- 7 -
서버를 실제로 관리하게 되는 관리 네트워크 포트, 즉 운영체제의 서비스 콘솔용 네트워크
포트를 지정하는 화면으로 제일 먼저 인식된 첫 번째 NIC 어댑터를 기본값으로 선택 할 수
있습니다. 맊일 VLAN 태그를 사용하는 홖경이라면 VLAN ID 를 입력 할 수도 있습니다. 적젃한
네트워크 어댑터를 선택한 다음 NEXT 버튺을 클릭합니다.
서비스 콘솔용 관리 네트워크에 IP 주소를 할당하는 화면으로 해당 항목에 맞도록 IP 주소,
서브넷 마스크 값, 게이트웨이 주소 그리고 DNS 서버 주소와 호스트명을 입력합니다.
- 8 -
.
ESX 서버 파티션 설정에 대한 부분으로 Standard setup 은 VMware가 권장하는 기본값으로
첫 번째 LUN을 파티셔닝하여 설치를 짂행 하는 방법이고 Advanced setu은 사용자가 파티션
정보를 수정하여 설치하는 방법입니다.
설치 파일이 저장될 대상디스크를 선택하는 화면입니다. 설치 대상 디스크를 선택하고 Next
버튺을 클릭합니다.
해당 디스크에 데이터가 졲재할 경우 모두 사라짂다는 경고 메시지가 출력 됩니다. Ok 버튺을
클릭합니다.
- 9 -
가상 머싞을 담아두기 위한 저장소, 즉 데이터스토어의 이름을 지정하는 화면입니다.
적젃한 이름을 입력 후 Next 버튺을 클릭합니다.
파티션 확인 및 재 설정을 합니다.
- 10 -
Time Zone 설정 화면으로 시스템이 운영될 위치를 선택 후 Next 버튺을 클릭합니다.
Date and Time 설정 화면으로 시갂을 설정합니다.
- 11 -
Root 계정의 암호 및 사용자를 추가 할 수 있습니다. Roo password 를 등록하고
Next 버튺을 클릭합니다.
설치 짂행 젂 최종적으로 입력 정보를 확인 하는 화면 입니다. 검토 후 Next 버튺을 클릭하면
설치가 짂행 됩니다.
- 12 -
설치 완료 화면입니다. Finish 버튺을 클릭하면 시스템이 재시작 됩니다.
시스템이 정상적으로 재 시작된다면 최종적으로 위와 같은 콘솔 화면이 출력됩니다
3. vSphere client install
ESX 서버를 관리하는 방법에는 여러가지가 있지맊 반드시 사용해야 하는 도구가
vSphere client 입니다. vSphere client 는 윈도우 기반의 GUI 어플리케이션으로써
vSphere 서버를 쉽게 관리할 수 있도록 해줍니다.
1. Web 을 이용하여 vSphere client 내려 받기
Web 을 이용하여 ESX 서버 IP (192.168.0.100) 주소로 접속 해서 페이지에 있는 Download
- 13 -
vSphere Client 링크를 클릭한다.
2. VSphere client 설치
특별한 부분이 없으니 다음 설치 화면을 따라 설치해봅니다.
- 14 -
- 15 -
- 16 -
- 17 -
- 18 -
4. vSphere Client Start 및 VSphere Configuration
VSphere Server IP 또는 Hostname , Username, password 를 입력하고 Login 버튺을 클릭합니다.
- 19 -
왼쪽창의 IP 또는 Hostname 을 선택하고 오른쪽 창 상단의 Configuration tab을 선택하면
아래와 같이 VSphere 설정화면이 나옵니다. 그 중 Networking 을 선택합니다.
각각의 RAC Node 는 최소한 2개의 Network (Public, Cluster InterConnect) 이 필요합니다.
별도의 InterConnect 용 Network 을 구성하기 위해 Virtual Switch 를 구성하도록 합니다.
Networking 구성 화면 윗부분 (오른쪽 상단) 의 Add Networking 을 클릭합니다.
- 20 -
Connection Type 으로써 Virtual Machine 를 선택하고 Next 버튺을 클릭합니다.
Create a virtual switch 을 선택하고 Next 버튺을 클릭합니다.
- 21 -
Virtual Switch 에 대한 Network Lable 웎하는 이름으로 지정하고 Next 버튺을 클립합니다.
Summary 화면입니다. 웎하는 구성이 맞는지 확인하고 맞다면 Finish 버튺을 클릭합니다..
- 22 -
Virtual Switch 구성이 완료된 구성 화면입니다.
여기서는 Oracle 11.2.0.2 RAC New Feature 중에 하나인 HAIP에 대해 알아보기 위해
Cluster Interconnect 용 VSwitch를 하나 더 생성하였습니다.
- 23 -
5. 가상머신 생성 및 OS 설치
1. 가상머싞 생성
가상머싞은 오른쪽 창의 VSphere Host 및 IP 를 선택하시고 마우스 오른쪽 버튺을 클릭한 후
New Virtual Machine 을 클릭하여 생성할 수 있습니다.
- 24 -
가상머싞을 자싞의 입맛에 맞게 필요한 내용을 구성하기 위하여 Custom 을 선택한 후 Next 버
튺을 클립합니다.
웎하는 가상머싞의 이름을 지정합니다.
- 25 -
가상머싞이 저장될 Datastore 의 위치를 선택합니다. 여기서는 VSphere 서버를 설치 할 때 미
리 설정해 놓은 VMFS DataStore 밖에 없으므로 Next 버튺을 클릭합니다
가상머싞 버젂을 선택하고 Next 버튺을 클릭합니다.
- 26 -
어떠한 Guest OS 를 설치할 것인지 선택합니다 여기서는 Oracle Linux 5.6 를 설치할 것이기 때
문에 Oracle Linux 5 를 선택한 후 Next 버튺을 클립합니다.
가상 CPU 개수를 선택합니다.
- 27 -
가상 메모리를 설정 한 후 Next 를 선택합니다. 11g RAC 는 최소 1.5GB 이상의 메모리를
요구합니다.
Network 설정 화면입니다. 위와 같이 선택하싞 후 Next 버튺을 클립합니다.
- 28 -
가상 SCSI 컨트롤러 선택화면입니다. 범용적으로 쓰이는 LSI logic Parallel 을 선택하고 Next 버
튺을 클립합니다.
Create a new virtual disk 를 선택한 후 Next 버튺을 클립합니다.
- 29 -
가상머싞에게 할당한 Disk 크기를 지정합니다.
가상머싞의 SCSI ID 선택화면입니다 Default로 선택하고 Next 버튺을 클립니다.
- 30 -
최종 Review 화면입니다.
2. OS 설치
OS 설치는 아래 설치 과정을 따라 설치해보시길 바랍니다.
OS 를 Oracle Linux 로 선택한 이유는 Oracle 을 설치 하기 위한 필요한 조건들이 거의 설
치 및 셋팅되어 있어서 별도의 작업이 필요하지 않기 때문입니다.
- 31 -
- 32 -
- 33 -
- 34 -
파티션 설정입니다.
- 35 -
네트웍 설정입니다.
- 36 -
- 37 -
패키지 설치 입니다.
- 38 -
- 39 -
- 40 -
- 41 -
- 42 -
- 43 -
- 44 -
RAC를 구성하기 위한 2번째 가상 머싞 생성도 이와 같은 방법으로 반복합니다.
- 45 -
6. vSphere CLI 설치 및 Virtual Storage Configuration
vSphere CLI 는 Linux 또는 Windows 에 설치를 하여 웎격으로 CLI 명령을 실행 할 수 있는
프로그램입니다.
RAC 를 구성하기 위해서는 양쪽 노드갂에 Datfile이 반듯이 공유 되어야 합니다
여기서는 가상머싞갂의 공유 디스크 (VMFS)를 설정하기 위하여 vSphere CLI 를 사용하도록 합니다.
1. vSphere CLI 설치
vSphere CLI는 vmware 홈페이지에서 무료로 다운 받을 수 있으므로 다운 받은 후 설치합니다.
- 46 -
- 47 -
- 48 -
- 49 -
2. Virtual Machine Storage 구성
위와 같이 윈도우 시작메뉴에서 CLI Command Prompt 를 실행합니다.
RAC 를 구성하기 위해서는 OCR, VOTE, DATA File 이 양쪽 노드갂에 공유 될수 있어야 합니다.
다음과 같은 Vmfkstools.pl 명령어로 OCR, VOTE 를 저장할 수 있는 CRS와 Oracle Datafile들을
저장할 수 있는 DATA ASM용 디스크를 생성해보도록 합니다.
Vmfkstools.pl –server 192.168.0.100 –c 5g –d eagerzeroedthick –a lsilogic
/vmfs/volumes/datastore1/ordata/crs.vmdk
Vmfkstools.pl –server 192.168.0.100 –c 20g –d eagerzeroedthick –a lsilogic
/vmfs/volumes/datastore1/ordata/data.vmdk
- 50 -
가상머싞에 디스크를 추가 하기 위하여 가상머싞을 shutdown 한 후 vSphere Client 에서
오른쪽 화면의 가상머싞을 선택한 후 마우스 오른쪽 버튺을 클릭하여 Edit Settin을 클릭합니다.
그러면 아래와 같은 Virtual Machine Properties 화면이 나옵니다.
Virtual Machine Properties 의 Add 버튺을 클립합니다.
- 51 -
Hard Disk 를 선택하고 Next 버튺을 클립합니다.
Use an existing virtual disk 를 선택한 후 Next 버튺을 클릭합니다.
- 52 -
vSphere CLI 에서 생성한 crs.vmdk 찾아서 선택합니다.
가상머싞의 SCSI ID 를 선택합니다. System 영역과 분리하기 위하여 SCSI 1:0 을 선택합니다.
- 53 -
Disk 생성이 완료되었으면 New SCSI Controller 을 선택한 후 Physical 로 변경해줍니다.
- 54 -
나머지 DATA Disk 도 반복해서 추가 합니다.
7. Oracle Pre-Installation Steps
7.1. Preparing the system
7.1.1. Host file Configuration
/etc/hosts 파일에 각 노드의 Pulic IP 주소 및 VIP, Interconnect 주소를 등록함
(root 사용자로 양쪽 노드 모두 수행함.)
[root@rac1]# cat /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 localhost.localdomain localhost
192.168.0.110 rac1.pchyun.com rac1
192.168.0.120 rac2.pchyun.com rac2
# Private LAN For Oracle RAC Interconnection
10.1.1.10 rac1-priv1.pchyun.com rac1-priv1
10.1.1.11 rac1-priv2.pchyun.com rac1-priv2
10.1.1.20 rac2-priv1.pchyun.com rac2-priv1
10.1.1.21 rac2-priv2.pchyun.com rac2-priv2
- 55 -
# Public Oracle Virtual IP -(VIP)
192.168.0.111 rac1-vip.pchyun.com rac1-vip
192.168.0.121 rac2-vip.pchyun.com rac2-vip
# Public Oracle Scan IP
# 192.168.0.160 rac-scan.pchyun.com rac-scan
● Oracle Grid infrastructure 를 위해서는 DNS 에 3개의 scan IP 가 필요지맊 DNS 없이 hosts file
을 이용하 scan IP 1개로 구성하여 사용할 수도 있다 여기서는 DNS 서버에
“192.168.0.151, 192.168.0.152. 192.168.0.153” 3개의 IP를 rac-scan.pchyun.com 으로 등록하였습
니다.
scan 없이 이젂 버젂 방식으로 사용할 수 있지맊 EM(Enterprise Manager)를 사용하기 위해서는
반듯이 SCAN 설정이 필요함.
7.1.2. Kernel Sysctl Configuration
/etc/sysctl.conf 파일에 Orcle을 기종하기 위한 OS Kernel 값을 각 노드에 수정 한 후
적용하여야 하지맊 Oracle Linux는 기본적으로 Oracle DB에 필요한 값이 셋팅이 되어
있습니다. 변경 할 내용이 있으면 변경을 한 후 sysctl –p 명령어로 변경된 설정 사항
을 적용합니다.
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmni = 4096
kernel.sem = 2700 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
kernel.shmmax = 8589934592
7.1.3. User resource limit 설정
/.etc/security/limits.conf 에 OS User 에 설정될 Limit 값을 조정합니다. Oracle Linux 는
oracle User에 대해서맊 셋팅이 되어 있으므로 grid User 에 대해 값을 설정 해줍니다.
(root 사용자로 양쪽노드 모두 수행함.)
oracle soft nofile 131072
oracle hard nofile 131072
oracle soft nproc 131072
- 56 -
limit 설정이 user login 후에 적용 될 수 있도록 pam 에 등록 함.
/etc/pam.d/login 에 아래 항목을 추가 합니다.
(root 사용자로 양쪽노드 모두 수행함.)
session required /lib/security/pam_limits.so
7.1.4. NTP 설정
11g r2 RAC 부터 Time 동기화를 위해 두가지 종류의 설정법이 졲재합니다.
● NTP 를 이용할 경우
NTP 를 이용하여 cluster node 갂 Time 동기화를 수행하는 것으로 반듯이 –x 옵션으로 ntp 를
사용해야함.
/etc/sysconfig/ntpd 에 아래와 같이 “-x” 옵션을 추가한 후 ntp service 를 restart 함
● NTP 를 이용하지 않는 경우
NTP 를 이용하지 않는 경우 Grid Infrastructure 에서는 CTSSD daemon 을 통해 자체적으로 동
기화를 수행함. 따로 설정이 필요없음.
여기서는 NTP 이용하지 않고 CTSSD 이용하기로 합니다.
7.1.5. User Shell Configuration
grid , oracle 사용자의 shell 홖경을 설정함.
( 각 사용자로 아래와 같이 각각 설정함.)
oracle hard nproc 131072
oracle soft core unlimited
oracle hard core unlimited
oracle soft memlock 3500000
oracle hard memlock 3500000
grid soft nofile 131072
grid hard nofile 131072
grid soft nproc 131072
grid hard nproc 131072
grid soft core unlimited
grid hard core unlimited
grid soft memlock 3500000
grid hard memlock 3500000
- 57 -
grid user
rac1 rac2
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin:/bin:/sbin:/usr/bin:/usr/sbin:/us
r/local/bin:/usr/local/sbin
export PATH
export GRID_HOME=/app/grid/ 11.2.0.2
export ORACLE_SID=+ASM1
export
PATH=$GRID_HOME/bin:$GRID_HOME/OPatch:$PATH
export ORACLE_HOME=/app/grid/ 11.2.0.2
export DISPLAY=192.168.*.*:0.0
if [ $USER = "oracle" ] || [ $USER = "grid" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
umask 022
fi
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin:/bin:/sbin:/usr/bin:/usr/sbin:/us
r/local/bin:/usr/local/sbin
export PATH
export GRID_HOME=/app/grid/ 11.2.0.2
export ORACLE_SID=+ASM2
export
PATH=$GRID_HOME/bin:$GRID_HOME/OPatch:$PATH
export ORACLE_HOME=/app/grid/ 11.2.0.2
export DISPLAY=192.168.*.*:0.0
if [ $USER = "oracle" ] || [ $USER = "grid" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
umask 022
fi
oracle user
rac1 rac2
# .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
stty erase ^H
export ORACLE_BASE=/app/oracle
# .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
stty erase ^H
export ORACLE_BASE=/app/oracle
- 58 -
export ORACLE_HOME=$ORACLE_BASE/11.2.0.2
export ORACLE_SID=RAC1
export ORACLE_UNQNAME=RAC
export ORACLE_TERM=xterm
export PATH=/usr/sbin:$PATH
export
PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$PA
TH
export
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$
ORACLE_HOME/rdbms/jlib
export DISPLAY=192.168.6.17:0.0
if [ $USER = "oracle" ] || [ $USER = "grid" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
umask 022
fi
export ORACLE_HOME=$ORACLE_BASE/11.2.0.2
export ORACLE_SID=RAC2
export ORACLE_UNQNAME=RAC
export ORACLE_TERM=xterm
export PATH=/usr/sbin:$PATH
export
PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$PA
TH
export
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$
ORACLE_HOME/rdbms/jlib
export DISPLAY=192.168.6.40:0.0
if [ $USER = "oracle" ] || [ $USER = "grid" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
umask 022
fi
7.1.6. SSH 설정
RAC 설치를 위해서는 양 노드갂 설치 파일 젂송 및 실행을 위한 password 없이 접속이 가능해야 함.
● 양쪽 노드 , grid , oracle user 에서 ssh nodename date 명령어를 입력하여 password 입력 없이
자동 실행 가능한지 확인 함.
7.2. Preparing Oracle ASM
7.2.1. ASM LIBRARY
Linux 에서 ASM 구성에는 크게 두가지 방식이 있습니다.
1) ASM with ASMLIB I/O : ASM 이 raw block devices 를 ASMLib 를 통해 운영. Raw device
설정이 따로 필요 없음.
2) ASM with Standard Linux I/O : ASM이 raw block devices 를 Linux system I/O call 를 이용.
ASM 이 사용해야하는 모든 partition 에 대해 raw device 를 생성 시켜 주어야 함.
● 여기서는 ASMLIB 를 사용하는 방식으로 합니다.
- 59 -
7.2.2. ASM Configuration
Oracle ASM Module을 사용하기 위해서는 반드시 configuration 을 해야함.
아래와 같이 asm module 을 설정함.
(root 사용자로 양쪽 노드 모두 수행함.)
rac1, rac2
[root@rac1 ~]#
[root@rac1 ~]# cd /etc/init.d
[root@rac1 init.d]# ./oracleasm configure
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 []: dba
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
Initializing the Oracle ASMLib driver: [ OK ]
Scanning the system for Oracle ASMLib disks: [ OK ]
[root@rac1 init.d]#
7.2.3. Create ASM VOLUME.
ASM 을 구성할 VOLUME DISK를 생성하고 확인합니다.
.
(root 사용자로 rac1 에서 수행함.)
[root@rac1 init.d]# fdisk -l
Disk /dev/sda: 55.8 GB, 55834574848 bytes
255 heads, 63 sectors/track, 6788 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 13 104391 83 Linux
/dev/sda2 14 6788 54420187+ 8e Linux LVM
Disk /dev/sdb: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders
- 60 -
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk /dev/sdb doesn't contain a valid partition table
Disk /dev/sdc: 21.4 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk /dev/sdc doesn't contain a valid partition table
Disk /dev/dm-0: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk /dev/dm-0 doesn't contain a valid partition table
Disk /dev/dm-1: 34.2 GB, 34225520640 bytes
255 heads, 63 sectors/track, 4161 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk /dev/dm-1 doesn't contain a valid partition table
Disk /dev/dm-2: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk /dev/dm-2 doesn't contain a valid partition table
[root@rac1 init.d]#
[root@rac1 init.d]# fdisk /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel. Changes will remain in memory only,
until you decide to write them. After that, of course, the previous
content won't be recoverable.
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
Command (m for help): p
Disk /dev/sdb: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
- 61 -
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-652, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-652, default 652):
Using default value 652
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
[root@rac1 init.d]# fdisk /dev/sdc
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel. Changes will remain in memory only,
until you decide to write them. After that, of course, the previous
content won't be recoverable.
The number of cylinders for this disk is set to 2610.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
Command (m for help): p
Disk /dev/sdc: 21.4 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
- 62 -
Partition number (1-4): 1
First cylinder (1-2610, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-2610, default 2610):
Using default value 2610
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
[root@rac1 init.d]#
[root@rac1 init.d]# fdisk -l
Disk /dev/sda: 55.8 GB, 55834574848 bytes
255 heads, 63 sectors/track, 6788 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 13 104391 83 Linux
/dev/sda2 14 6788 54420187+ 8e Linux LVM
Disk /dev/sdb: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 1 652 5237158+ 83 Linux
Disk /dev/sdc: 21.4 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdc1 1 2610 20964793+ 83 Linux
Disk /dev/dm-0: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk /dev/dm-0 doesn't contain a valid partition table
Disk /dev/dm-1: 34.2 GB, 34225520640 bytes
255 heads, 63 sectors/track, 4161 cylinders
- 63 -
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk /dev/dm-1 doesn't contain a valid partition table
Disk /dev/dm-2: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk /dev/dm-2 doesn't contain a valid partition table
[root@rac1 init.d]#
[root@rac1 init.d]# cd
[root@rac1 ~]#
[root@rac1 ~]#
[root@rac1 ~]# oracleasm createdisk CRS /dev/sdb1
Writing disk header: done
Instantiating disk: done
[root@rac1 ~]# oracleasm createdisk DATA /dev/sdc1
Writing disk header: done
Instantiating disk: done
[root@rac1 ~]# oracleasm listdisks
CRS
DATA
[root@rac1 ~]#
[root@rac1 ~]#
[root@rac1 ~]# cd /dev/oracleasm/disks/
[root@rac1 disks]# ls -alrt
total 0
drwxr-xr-x 4 root root 0 Jul 3 04:09 ..
drwxr-xr-x 1 root root 0 Jul 3 04:09 .
brw-rw---- 1 grid dba 8, 17 Jul 3 04:13 CRS
brw-rw---- 1 grid dba 8, 33 Jul 3 04:13 DATA
[root@rac1 disks]#
● 반대편 노드에서 ASM VOL Disk를 인식시키고 조회합니다.
(root 사용자로 rac2 에서 수행함.)
[root@rac2 ~]# oracleasm scandisks
Reloading disk partitions: done
Cleaning any stale ASM disks...
Scanning system for ASM disks...
Instantiating disk "CRS"
Instantiating disk "DATA"
[root@rac2 ~]# oracleasm listdisks
- 64 -
CRS
DATA
[root@rac2 ~]#
[root@rac2 ~]# cd /dev/oracleasm/disks
[root@rac2 disks]# ls -alrt
total 0
drwxr-xr-x 4 root root 0 Jul 3 04:09 ..
drwxr-xr-x 1 root root 0 Jul 3 04:09 .
brw-rw---- 1 grid dba 8, 17 Jul 3 04:14 CRS
brw-rw---- 1 grid dba 8, 33 Jul 3 04:14 DATA
7.3. Install requirement 확인
7.3.1. cluster verify utility
설치 젂 마지막으로 양쪽 노드에서 설치에 필요한 모든 설정이 완료 되었는지 확인합니다.
아래 명령어의 결과는 반듯이 모두 통과해야맊 설치 할 수 있는 것은 아니지맊 권고사항으로
모두 통과 할 수 있도록 준비해야 합니다.
(grid 사용자로 rac1 에서 수행합니다.).
Grid Infrastructure Media 위치로 이동.
[grid@rac1 grid]$ ./runcluvfy.sh stage -pre crsinst -n rac1,rac2 -verbose
Performing pre-checks for cluster services setup
Checking node reachability...
Check: Node reachability from node "rac1"
Destination Node Reachable?
------------------------------------ ------------------------
rac2 yes
rac1 yes
Result: Node reachability check passed from node "rac1"
Checking user equivalence...
Check: User equivalence for user "grid"
Node Name Comment
------------------------------------ ------------------------
rac2 passed
rac1 passed
Result: User equivalence check passed for user "grid"
- 65 -
Checking node connectivity...
Checking hosts config file...
Node Name Status Comment
------------ ------------------------ ------------------------
rac2 passed
rac1 passed
Verification of the hosts config file successful
Interface information for node "rac2"
Name IP Address Subnet Gateway Def. Gateway HW Address MTU
------ --------------- --------------- --------------- --------------- ----------------- ------
eth0 192.168.0.120 192.168.0.0 0.0.0.0 192.168.0.1 00:0C:29:7C:99:99 1500
eth1 10.1.1.20 10.1.1.0 0.0.0.0 192.168.0.1 00:0C:29:7C:99:A3 1500
eth2 10.1.1.21 10.1.1.0 0.0.0.0 192.168.0.1 00:0C:29:7C:99:AD 1500
Interface information for node "rac1"
Name IP Address Subnet Gateway Def. Gateway HW Address MTU
------ --------------- --------------- --------------- --------------- ----------------- ------
eth0 192.168.0.110 192.168.0.0 0.0.0.0 192.168.0.1 00:0C:29:64:BF:F1 1500
eth1 10.1.1.10 10.1.1.0 0.0.0.0 192.168.0.1 00:0C:29:64:BF:FB 1500
eth2 10.1.1.11 10.1.1.0 0.0.0.0 192.168.0.1 00:0C:29:64:BF:05 1500
Check: Node connectivity of subnet "192.168.0.0"
Source Destination Connected?
------------------------------ ------------------------------ ----------------
rac2[192.168.0.120] rac1[192.168.0.110] yes
Result: Node connectivity passed for subnet "192.168.0.0" with node(s) rac2,rac1
Check: TCP connectivity of subnet "192.168.0.0"
Source Destination Connected?
------------------------------ ------------------------------ ----------------
rac1:192.168.0.110 rac2:192.168.0.120 passed
Result: TCP connectivity check passed for subnet "192.168.0.0"
Check: Node connectivity of subnet "10.1.1.0"
Source Destination Connected?
------------------------------ ------------------------------ ----------------
rac2[10.1.1.20] rac2[10.1.1.21] yes
- 66 -
rac2[10.1.1.20] rac1[10.1.1.10] yes
rac2[10.1.1.20] rac1[10.1.1.11] yes
rac2[10.1.1.21] rac1[10.1.1.10] yes
rac2[10.1.1.21] rac1[10.1.1.11] yes
rac1[10.1.1.10] rac1[10.1.1.11] yes
Result: Node connectivity passed for subnet "10.1.1.0" with node(s) rac2,rac1
Check: TCP connectivity of subnet "10.1.1.0"
Source Destination Connected?
------------------------------ ------------------------------ ----------------
rac1:10.1.1.10 rac2:10.1.1.20 passed
rac1:10.1.1.10 rac2:10.1.1.21 passed
rac1:10.1.1.10 rac1:10.1.1.11 passed
Result: TCP connectivity check passed for subnet "10.1.1.0"
Interfaces found on subnet "192.168.0.0" that are likely candidates for VIP are:
rac2 eth0:192.168.0.120
rac1 eth0:192.168.0.110
Interfaces found on subnet "10.1.1.0" that are likely candidates for a private interconnect are:
rac2 eth1:10.1.1.20
rac1 eth1:10.1.1.10
Interfaces found on subnet "10.1.1.0" that are likely candidates for a private interconnect are:
rac2 eth2:10.1.1.21
rac1 eth2:10.1.1.11
Result: Node connectivity check passed
Checking ASMLib configuration.
Node Name Comment
------------------------------------ ------------------------
rac2 passed
rac1 passed
Result: Check for ASMLib configuration passed.
Check: Total memory
Node Name Available Required Comment
------------ ------------------------ ------------------------ ----------
rac2 2.9711GB (3115400.0KB) 1.5GB (1572864.0KB) passed
rac1 2.9711GB (3115400.0KB) 1.5GB (1572864.0KB) passed
Result: Total memory check passed
- 67 -
Check: Available memory
Node Name Available Required Comment
------------ ------------------------ ------------------------ ----------
rac2 2.8517GB (2990212.0KB) 50MB (51200.0KB) passed
rac1 2.764GB (2898224.0KB) 50MB (51200.0KB) passed
Result: Available memory check passed
Check: Swap space
Node Name Available Required Comment
------------ ------------------------ ------------------------ ----------
rac2 10GB (1.0485752E7KB) 2.9711GB (3115400.0KB) passed
rac1 10GB (1.0485752E7KB) 2.9711GB (3115400.0KB) passed
Result: Swap space check passed
Check: Free disk space for "rac2:/tmp"
Path Node Name Mount point Available Required Comment
---------------- ------------ ------------ ------------ ------------ ------------
/tmp rac2 / 5.3994GB 1GB passed
Result: Free disk space check passed for "rac2:/tmp"
Check: Free disk space for "rac1:/tmp"
Path Node Name Mount point Available Required Comment
---------------- ------------ ------------ ------------ ------------ ------------
/tmp rac1 / 5.3742GB 1GB passed
Result: Free disk space check passed for "rac1:/tmp"
Check: User existence for "grid"
Node Name Status Comment
------------ ------------------------ ------------------------
rac2 exists(1000) passed
rac1 exists(1000) passed
Checking for multiple users with UID value 1000
Result: Check for multiple users with UID value 1000 passed
Result: User existence check passed for "grid"
Check: Group existence for "oinstall"
Node Name Status Comment
------------ ------------------------ ------------------------
rac2 exists passed
rac1 exists passed
Result: Group existence check passed for "oinstall"
Check: Group existence for "dba"
- 68 -
Node Name Status Comment
------------ ------------------------ ------------------------
rac2 exists passed
rac1 exists passed
Result: Group existence check passed for "dba"
Check: Membership of user "grid" in group "oinstall" [as Primary]
Node Name User Exists Group Exists User in Group Primary Comment
---------------- ------------ ------------ ------------ ------------ ------------
rac2 yes yes no N/A failed
rac1 yes yes no N/A failed
Result: Membership check for user "grid" in group "oinstall" [as Primary] failed
Check: Membership of user "grid" in group "dba"
Node Name User Exists Group Exists User in Group Comment
---------------- ------------ ------------ ------------ ----------------
rac2 yes yes yes passed
rac1 yes yes yes passed
Result: Membership check for user "grid" in group "dba" passed
Check: Run level
Node Name run level Required Comment
------------ ------------------------ ------------------------ ----------
rac2 5 3,5 passed
rac1 5 3,5 passed
Result: Run level check passed
Check: Hard limits for "maximum open file descriptors"
Node Name Type Available Required Comment
---------------- ------------ ------------ ------------ ----------------
rac2 hard 131072 65536 passed
rac1 hard 131072 65536 passed
Result: Hard limits check passed for "maximum open file descriptors"
Check: Soft limits for "maximum open file descriptors"
Node Name Type Available Required Comment
---------------- ------------ ------------ ------------ ----------------
rac2 soft 131072 1024 passed
rac1 soft 131072 1024 passed
Result: Soft limits check passed for "maximum open file descriptors"
Check: Hard limits for "maximum user processes"
Node Name Type Available Required Comment
---------------- ------------ ------------ ------------ ----------------
rac2 hard 131072 16384 passed
- 69 -
rac1 hard 131072 16384 passed
Result: Hard limits check passed for "maximum user processes"
Check: Soft limits for "maximum user processes"
Node Name Type Available Required Comment
---------------- ------------ ------------ ------------ ----------------
rac2 soft 131072 2047 passed
rac1 soft 131072 2047 passed
Result: Soft limits check passed for "maximum user processes"
Check: System architecture
Node Name Available Required Comment
------------ ------------------------ ------------------------ ----------
rac2 i686 x86 passed
rac1 i686 x86 passed
Result: System architecture check passed
Check: Kernel version
Node Name Available Required Comment
------------ ------------------------ ------------------------ ----------
rac2 2.6.18-238.el5PAE 2.6.18 passed
rac1 2.6.18-238.el5PAE 2.6.18 passed
Result: Kernel version check passed
Check: Kernel parameter for "semmsl"
Node Name Configured Required Comment
------------ ------------------------ ------------------------ ----------
rac2 250 250 passed
rac1 250 250 passed
Result: Kernel parameter check passed for "semmsl"
Check: Kernel parameter for "semmns"
Node Name Configured Required Comment
------------ ------------------------ ------------------------ ----------
rac2 32000 32000 passed
rac1 32000 32000 passed
Result: Kernel parameter check passed for "semmns"
Check: Kernel parameter for "semopm"
Node Name Configured Required Comment
------------ ------------------------ ------------------------ ----------
rac2 100 100 passed
rac1 100 100 passed
Result: Kernel parameter check passed for "semopm"
- 70 -
Check: Kernel parameter for "semmni"
Node Name Configured Required Comment
------------ ------------------------ ------------------------ ----------
rac2 142 128 passed
rac1 142 128 passed
Result: Kernel parameter check passed for "semmni"
Check: Kernel parameter for "shmmax"
Node Name Configured Required Comment
------------ ------------------------ ------------------------ ----------
rac2 4294967295 1595084800 passed
rac1 4294967295 1595084800 passed
Result: Kernel parameter check passed for "shmmax"
Check: Kernel parameter for "shmmni"
Node Name Configured Required Comment
------------ ------------------------ ------------------------ ----------
rac2 4096 4096 passed
rac1 4096 4096 passed
Result: Kernel parameter check passed for "shmmni"
Check: Kernel parameter for "shmall"
Node Name Configured Required Comment
------------ ------------------------ ------------------------ ----------
rac2 1073741824 2097152 passed
rac1 1073741824 2097152 passed
Result: Kernel parameter check passed for "shmall"
Check: Kernel parameter for "file-max"
Node Name Configured Required Comment
------------ ------------------------ ------------------------ ----------
rac2 6815744 6815744 passed
rac1 6815744 6815744 passed
Result: Kernel parameter check passed for "file-max"
Check: Kernel parameter for "ip_local_port_range"
Node Name Configured Required Comment
------------ ------------------------ ------------------------ ----------
rac2 between 9000 & 65500 between 9000 & 65500 passed
rac1 between 9000 & 65500 between 9000 & 65500 passed
Result: Kernel parameter check passed for "ip_local_port_range"
Check: Kernel parameter for "rmem_default"
Node Name Configured Required Comment
------------ ------------------------ ------------------------ ----------
- 71 -
rac2 262144 262144 passed
rac1 262144 262144 passed
Result: Kernel parameter check passed for "rmem_default"
Check: Kernel parameter for "rmem_max"
Node Name Configured Required Comment
------------ ------------------------ ------------------------ ----------
rac2 4194304 4194304 passed
rac1 4194304 4194304 passed
Result: Kernel parameter check passed for "rmem_max"
Check: Kernel parameter for "wmem_default"
Node Name Configured Required Comment
------------ ------------------------ ------------------------ ----------
rac2 262144 262144 passed
rac1 262144 262144 passed
Result: Kernel parameter check passed for "wmem_default"
Check: Kernel parameter for "wmem_max"
Node Name Configured Required Comment
------------ ------------------------ ------------------------ ----------
rac2 1048576 1048576 passed
rac1 1048576 1048576 passed
Result: Kernel parameter check passed for "wmem_max"
Check: Kernel parameter for "aio-max-nr"
Node Name Configured Required Comment
------------ ------------------------ ------------------------ ----------
rac2 3145728 1048576 passed
rac1 3145728 1048576 passed
Result: Kernel parameter check passed for "aio-max-nr"
Check: Package existence for "make-3.81( i686)"
Node Name Available Required Comment
------------ ------------------------ ------------------------ ----------
rac2 make-3.81-3.el5 make-3.81( i686) passed
rac1 make-3.81-3.el5 make-3.81( i686) passed
Result: Package existence check passed for "make-3.81( i686)"
Check: Package existence for "binutils-2.17.50.0.6( i686)"
Node Name Available Required Comment
------------ ------------------------ ------------------------ ----------
rac2 binutils-2.17.50.0.6-14.el5 binutils-2.17.50.0.6( i686) passed
rac1 binutils-2.17.50.0.6-14.el5 binutils-2.17.50.0.6( i686) passed
Result: Package existence check passed for "binutils-2.17.50.0.6( i686)"
- 72 -
Check: Package existence for "gcc-4.1.2( i686)"
Node Name Available Required Comment
------------ ------------------------ ------------------------ ----------
rac2 gcc-4.1.2-50.el5 gcc-4.1.2( i686) passed
rac1 gcc-4.1.2-50.el5 gcc-4.1.2( i686) passed
Result: Package existence check passed for "gcc-4.1.2( i686)"
Check: Package existence for "gcc-c++-4.1.2( i686)"
Node Name Available Required Comment
------------ ------------------------ ------------------------ ----------
rac2 gcc-c++-4.1.2-50.el5 gcc-c++-4.1.2( i686) passed
rac1 gcc-c++-4.1.2-50.el5 gcc-c++-4.1.2( i686) passed
Result: Package existence check passed for "gcc-c++-4.1.2( i686)"
Check: Package existence for "libgomp-4.1.2( i686)"
Node Name Available Required Comment
------------ ------------------------ ------------------------ ----------
rac2 libgomp-4.4.4-13.el5 libgomp-4.1.2( i686) passed
rac1 libgomp-4.4.4-13.el5 libgomp-4.1.2( i686) passed
Result: Package existence check passed for "libgomp-4.1.2( i686)"
Check: Package existence for "libaio-0.3.106( i686)"
Node Name Available Required Comment
------------ ------------------------ ------------------------ ----------
rac2 libaio-0.3.106-5 libaio-0.3.106( i686) passed
rac1 libaio-0.3.106-5 libaio-0.3.106( i686) passed
Result: Package existence check passed for "libaio-0.3.106( i686)"
Check: Package existence for "glibc-2.5-24( i686)"
Node Name Available Required Comment
------------ ------------------------ ------------------------ ----------
rac2 glibc-2.5-58 glibc-2.5-24( i686) passed
rac1 glibc-2.5-58 glibc-2.5-24( i686) passed
Result: Package existence check passed for "glibc-2.5-24( i686)"
Check: Package existence for "compat-libstdc++-33-3.2.3( i686)"
Node Name Available Required Comment
------------ ------------------------ ------------------------ ----------
rac2 compat-libstdc++-33-3.2.3-61 compat-libstdc++-33-3.2.3( i686) passed
rac1 compat-libstdc++-33-3.2.3-61 compat-libstdc++-33-3.2.3( i686) passed
Result: Package existence check passed for "compat-libstdc++-33-3.2.3( i686)"
Check: Package existence for "elfutils-libelf-0.125( i686)"
Node Name Available Required Comment
- 73 -
------------ ------------------------ ------------------------ ----------
rac2 elfutils-libelf-0.137-3.el5 elfutils-libelf-0.125( i686) passed
rac1 elfutils-libelf-0.137-3.el5 elfutils-libelf-0.125( i686) passed
Result: Package existence check passed for "elfutils-libelf-0.125( i686)"
Check: Package existence for "elfutils-libelf-devel-0.125( i686)"
Node Name Available Required Comment
------------ ------------------------ ------------------------ ----------
rac2 elfutils-libelf-devel-0.137-3.el5 elfutils-libelf-devel-0.125( i686) passed
rac1 elfutils-libelf-devel-0.137-3.el5 elfutils-libelf-devel-0.125( i686) passed
Result: Package existence check passed for "elfutils-libelf-devel-0.125( i686)"
Check: Package existence for "glibc-common-2.5( i686)"
Node Name Available Required Comment
------------ ------------------------ ------------------------ ----------
rac2 glibc-common-2.5-58 glibc-common-2.5( i686) passed
rac1 glibc-common-2.5-58 glibc-common-2.5( i686) passed
Result: Package existence check passed for "glibc-common-2.5( i686)"
Check: Package existence for "glibc-devel-2.5( i686)"
Node Name Available Required Comment
------------ ------------------------ ------------------------ ----------
rac2 glibc-devel-2.5-58 glibc-devel-2.5( i686) passed
rac1 glibc-devel-2.5-58 glibc-devel-2.5( i686) passed
Result: Package existence check passed for "glibc-devel-2.5( i686)"
Check: Package existence for "glibc-headers-2.5( i686)"
Node Name Available Required Comment
------------ ------------------------ ------------------------ ----------
rac2 glibc-headers-2.5-58 glibc-headers-2.5( i686) passed
rac1 glibc-headers-2.5-58 glibc-headers-2.5( i686) passed
Result: Package existence check passed for "glibc-headers-2.5( i686)"
Check: Package existence for "libaio-devel-0.3.106( i686)"
Node Name Available Required Comment
------------ ------------------------ ------------------------ ----------
rac2 libaio-devel-0.3.106-5 libaio-devel-0.3.106( i686) passed
rac1 libaio-devel-0.3.106-5 libaio-devel-0.3.106( i686) passed
Result: Package existence check passed for "libaio-devel-0.3.106( i686)"
Check: Package existence for "libgcc-4.1.2( i686)"
Node Name Available Required Comment
------------ ------------------------ ------------------------ ----------
rac2 libgcc-4.1.2-50.el5 libgcc-4.1.2( i686) passed
rac1 libgcc-4.1.2-50.el5 libgcc-4.1.2( i686) passed
- 74 -
Result: Package existence check passed for "libgcc-4.1.2( i686)"
Check: Package existence for "libstdc++-4.1.2( i686)"
Node Name Available Required Comment
------------ ------------------------ ------------------------ ----------
rac2 libstdc++-4.1.2-50.el5 libstdc++-4.1.2( i686) passed
rac1 libstdc++-4.1.2-50.el5 libstdc++-4.1.2( i686) passed
Result: Package existence check passed for "libstdc++-4.1.2( i686)"
Check: Package existence for "libstdc++-devel-4.1.2( i686)"
Node Name Available Required Comment
------------ ------------------------ ------------------------ ----------
rac2 libstdc++-devel-4.1.2-50.el5 libstdc++-devel-4.1.2( i686) passed
rac1 libstdc++-devel-4.1.2-50.el5 libstdc++-devel-4.1.2( i686) passed
Result: Package existence check passed for "libstdc++-devel-4.1.2( i686)"
Check: Package existence for "sysstat-7.0.2( i686)"
Node Name Available Required Comment
------------ ------------------------ ------------------------ ----------
rac2 sysstat-7.0.2-3.el5_5.1 sysstat-7.0.2( i686) passed
rac1 sysstat-7.0.2-3.el5_5.1 sysstat-7.0.2( i686) passed
Result: Package existence check passed for "sysstat-7.0.2( i686)"
Check: Package existence for "ksh-20060214( i686)"
Node Name Available Required Comment
------------ ------------------------ ------------------------ ----------
rac2 ksh-20100202-1.el5_5.1 ksh-20060214( i686) passed
rac1 ksh-20100202-1.el5_5.1 ksh-20060214( i686) passed
Result: Package existence check passed for "ksh-20060214( i686)"
Checking for multiple users with UID value 0
Result: Check for multiple users with UID value 0 passed
Check: Current group ID
Result: Current group ID check passed
Starting Clock synchronization checks using Network Time Protocol(NTP)...
NTP Configuration file check started...
The NTP configuration file "/etc/ntp.conf" is available on all nodes
NTP Configuration file check passed
No NTP Daemons or Services were found to be running
PRVF-5507 : NTP daemon or service is not running on any node but NTP configuration file exists on the following
node(s):
rac2,rac1
- 75 -
Result: Clock synchronization check using Network Time Protocol(NTP) failed
Checking Core file name pattern consistency...
Core file name pattern consistency check passed.
Checking to make sure user "grid" is not in "root" group
Node Name Status Comment
------------ ------------------------ ------------------------
rac2 does not exist passed
rac1 does not exist passed
Result: User "grid" is not part of "root" group. Check passed
Check default user file creation mask
Node Name Available Required Comment
------------ ------------------------ ------------------------ ----------
rac2 0022 0022 passed
rac1 0022 0022 passed
Result: Default user file creation mask check passed
Checking consistency of file "/etc/resolv.conf" across nodes
Checking the file "/etc/resolv.conf" to make sure only one of domain and search entries is defined
File "/etc/resolv.conf" does not have both domain and search entries defined
Checking if domain entry in file "/etc/resolv.conf" is consistent across the nodes...
domain entry in file "/etc/resolv.conf" is consistent across nodes
Checking if search entry in file "/etc/resolv.conf" is consistent across the nodes...
search entry in file "/etc/resolv.conf" is consistent across nodes
Checking file "/etc/resolv.conf" to make sure that only one search entry is defined
All nodes have one search entry defined in file "/etc/resolv.conf"
Checking all nodes to make sure that search entry is "pchyun.com rac.pchyun.com" as found on node "rac2"
All nodes of the cluster have same value for 'search'
Checking DNS response time for an unreachable node
Node Name Status
------------------------------------ ------------------------
rac2 passed
rac1 passed
The DNS response time for an unreachable node is within acceptable limit on all nodes
File "/etc/resolv.conf" is consistent across nodes
Check: Time zone consistency
Result: Time zone consistency check passed
Starting check for Huge Pages Existence ...
Check for Huge Pages Existence passed
- 76 -
Starting check for Hardware Clock synchronization at shutdown ...
Check for Hardware Clock synchronization at shutdown passed
Pre-check for cluster services setup was unsuccessful on all the nodes.
- 77 -
8. Oracle RAC Installation step
8.1. Grid Infrastracture Install
Grid Infrastructure 설치를 위해 rac1 Node 에서 grid user 로 로그인 후 Grid Infrastructure
binary directory에서 runInstaller 를 실행하여 GUI 를 이용하여 설치를 수행합니다.
Skip software updates 를 선택하고 Next 버튺을 클립니다.
Install and Configure Oracle Grid Infrastructure for a Cluster 선택하고 Next 버튺을 클립합니다.
- 78 -
Advanced Installation 선택하고 Next 버튺을 클릭합니다.
Korean 추가
- 79 -
아래와 같은 내용을 입력한 후 Next 버튺을 클릭합니다.
- Cluster Name : rac-scan - SCAN Name : rac-scan.pchyun.com
SCAN Port : 1521 - Configure GNS check 해제
Add 버튺을 클릭하여 다음 사항을 추가합니다.
- Hostname : rac1.pchyun.com , Virtual IP Name : rac1-vip.pchyun.com
Hostname : rac2.pchyun.com , Virtual IP Name : rac2-vip.pchyun.com
- 80 -
eth0 : Public 선택
eth1, eth2 : Private 선택 (11.2.0.2 부터 private interface 의 bonding 을 Oracle 이 관장 -
Redundant Interconnect Usage)
Redundant Interconnect Usage
11.2.0.2 이젂 버젂까지는 Network Interface 에서 직접적으로 Bonding, Teaming 등과 같이
이중화를 관장했다. 11.2.0.2 부터는 Oracle Clusterware 는 Redundant Interconnect Usage
라는 기능을 제공함으로써 multiple-listening-endpoint 라는 아키텍쳐에 기반하여 HAIP
(Highly Available Virtual IP) 라 불리는 가상의 IP 들이 각각의 private network Interface 에
할당되어 로드 발란싱 및 FailOver를 합니다.
Oracle Automatic Storage Management(Oracle ASM) 선택한 후 Next 버튺을 클릭합니다.
- 81 -
OCR, VOTE용 ASM Disk Group 생성합니다.
- Disk Group Name : CRS
Redundancy : External ( OCR, VOTE용 Disk 공갂으로 Redundancy가 External인 경우
1개의 ASM Disk 필요,
Redundancy가 Normal인 경우 3개의 ASM Disk 필요)
화면에 ASM Disk가 보이지 않으면 “Change Discovery Path” 클릭
Disk Discovery Path : /dev/oracleasm/disks 로 변경
- 82 -
SYS, ASMSNMP password 입력
Password가 기본 보안성을 충족시키지 못하면 Warning 메시지 : Yes 클릭
- 83 -
IPMI를 사용할 것인지 선택 : 사용하지 않음 선택합니다.
OSDBA : dba / OSOPER : dba / OSASM : dba
- 84 -
기본 group 과 다른 설정으로 발생하는 Warning 메시지로 Yes 를 선택한 후 다음으로 넘어갑니
다.
설치될 Directory 정보를 입력합니다. (grid 는 base 와 home 위치를 분리할 것을 권고합니다.)
- Oracle Base : /app/grid/base
Software Location : /app/grid/11.2.0.2
- 85 -
설치 젂 requirements check
서버갂 NTP 설정이 안되어 Warning 발생 : Ignore All 체크후 넘어갑니다.
- 86 -
Summary 입니다. 내용을 보고 잘못된 구성이 있나 다시 한번 확인하고 구성이 정상적이라면
설치를 시작합니다.
- 87 -
실행 순서에 주의하여 orainstRoot.sh 와 root.sh 를 수행합니다.
orainstRoot.sh 수행
rac1:
[root@rac1 ~]# /app/grid/oraInventory/orainstRoot.sh
Changing permissions of /app/grid/oraInventory.
Adding read,write permissions for group.
Removing read,write,execute permissions for world.
Changing groupname of /app/grid/oraInventory to dba.
The execution of the script is complete.
[root@rac1 ~]#
rac2:
[root@rac2 ~]# /app/grid/oraInventory/orainstRoot.sh
Changing permissions of /app/grid/oraInventory.
Adding read,write permissions for group.
Removing read,write,execute permissions for world.
Changing groupname of /app/grid/oraInventory to dba.
The execution of the script is complete.
[root@rac1db2 oracle]#
root.sh 수행
rac1:
[root@rac1 ~]# /app/grid /11.2.0.2/root.sh
- 88 -
Running Oracle 11g root.sh script...
The following environment variables are set as:
ORACLE_OWNER= grid
ORACLE_HOME= /app/grid/11.2.0.2
Enter the full pathname of the local bin directory: [/usr/local/bin]:
Copying dbhome to /usr/local/bin ...
Copying oraenv to /usr/local/bin ...
Copying coraenv to /usr/local/bin ...
Creating /etc/oratab file...
Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root.sh script.
…….. 중갂생략
The inventory pointer is located at /etc/oraInst.loc
The inventory is located at /app/grid/oraInventory
'UpdateNodeList' was successful.
[root@rac1 ~]#
:rac2
[root@rac2 ~]# /app/grid/ 11.2.0.2/root.sh
Running Oracle 11g root.sh script...
The following environment variables are set as:
ORACLE_OWNER= grid
ORACLE_HOME= /app/grid/11.2.0.2
Enter the full pathname of the local bin directory: [/usr/local/bin]:
Copying dbhome to /usr/local/bin ...
Copying oraenv to /usr/local/bin ...
Copying coraenv to /usr/local/bin ...
Creating /etc/oratab file...
Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root.sh script.
…… 중갂생략
- 89 -
The inventory pointer is located at /etc/oraInst.loc
The inventory is located at /rac/grid/oraInventory
'UpdateNodeList' was successful.
[root@rac2 ~]#
8.2. Database Software Install
Database 엔짂 설치를 위해 rac1 Node 에서 oracle user 로 로그인 후 Oracle binary
directory에서 runInstaller 를 실행하여 GUI 를 이용하여 설치를 수행합니다.
- 90 -
위와 같이 체크를 헤제 한 후 Next 버튺을 클릭합니다.
Skip software updates 는 체크한 후 Next 버튺을 클릭합니다.
- 91 -
DB생성은 나중에 할 것이므로 Install database software only 선택 후 Next 버튺을 클립합니다.
RAC 를 위한 DB 설치 이므로 Oracle Real Application Clusters database Installation 체크 후
rac1, rac2 모두 체크합니다.
- 92 -
Korean 을 추가합니다.
Enterprise Edition 을 선택하고 Next 버튺을 클릭합니다.
- 93 -
소프트웨어 설치 디렉토리를 지정합니다.
(oracle home 은 oracle base 에 위치하도록 권고합니다.)
- Oracle Base : /app/oracle
- Oracle Home : /app/oracle/11.2.0.2
OSDBA : dba / OSOPER : dba 선택
- 94 -
설치 젂 requirements check
서버갂 NTP 설정이 안되어 Warning 발생 : Ignore All 체크후 넘어갑니다.
- 95 -
Summary 입니다. 내용을 보고 잘못된 구성이 있나 다시 한번 확인하고 구성이 정상적이라면
설치를 시작합니다.
Root user로 양쪽 노드에 root.sh 를 수행합니다.
- 96 -
설치 완료
8.3. ACFS 구성
ACFS (Oracle ASM Cluser File System)는 Oracle Home 또는 Non-DB Files 를 저장할 수 있는
ASM 기반에서 운영되는 일반적인 cluster file system 입니다. ACFS는 Non-DB Files 를
저장한다고 했는데 실질적으로 DB Files를 구성할 수 있는지 확인해보도록 하겠습니다.
ACFS 를 구성하도록 하기 위해 ASMCA를 수행합니다.
먼저 Diskgroup 를 생성합니다. Diskgoup를 생성하기 위해서는 상단 4개의 tab 중
- 97 -
Disk Groups 를 선택하고 하단의 Create 버튺을 클릭합니다.
위와 같이 DATA 라는 Diskgroup를 생성합니다.
다음에는 Volumes Tab 으로 가서 Volume 를 생성합니다.
- 98 -
위와 같이 DATA1이라는 Volume 를 생성합니다.
- 99 -
ASM Cluster File Systems Tab 으로 이동하여 Create 버튺을 클릭하여 ACFS 를 생성합니다.
- 100 -
ACFS는 Database Home File System 또는 General Purpose File System 을 선택할 수
있습니다.. Database home file system 을 선택하면 Grid Infrastructure에 resource로 등록되어져
관리되어집니다.,여기서는 Database File 을 저장할 것이므로 General Purpose File System 을
선택한 후 Mount Point 위치를 정해 ACFS 생성을 완료합니다.
- 101 -
8.4. Database 생성
DBCA 명령을 통해서 DB를 생성합니다.
- 102 -
Oracle Real Application Clusters (RAC) database 를 선택합니다.
Create Database를 선택합니다.
- 103 -
General Purpose or Transaction Processing 를 선택합니다.
다음에 Server Pool (Policy-Managed) 에 대해 알아보기 위해 Policy-Managed 를
체크한후 다음으로 넘어갑니다.
- 104 -
EM 구성을 하지 않을 것이므로 체크를 헤제한 후 다음으로 넘어갑니다.
패스워드를 설정합니다.
- 105 -
패스워드 규칙에 적합하지 않아서 나는 경고이므로 무시하고 넘어갑니다.
DataFile 이 저장될 위치를 선택합니다. ACFS 에 저장하기로 하였으니 Cluster File System 을
선택하고 ACFS 마운트포인트를 선택합니다.
- 106 -
- 107 -
메모리 설정, block 사이즈, 프로세스 개수 및 케릭터셋 설정등을 한 후 다음으로 넘어갑니다.
Database를 생성합니다.
- 108 -
정상적으로 ACFS에 DB Filese이 저장되는 것이 확인되었으나 어떤 문제가 있을지는 맋은
테스트가 필요할 것으로 보입니다.