Oracle 10g RAC (rawdevice) 설치 - 4 DB 생성

OUI에서 DB 생성


$ dbca










원시 장치가 raw device 입니다.






위 화면에서 좌측 하단의 추가 버튼을 눌러줍니다.



oltp_service 입력



rac1 "선호", rac2 "사용가능"에 체크후 

하단에 "기본"에 체크



문자 집합은 KO16MSWIN949 에 맞춰 줍니다.



매개 변수 탭으로 가서, SPFILE에 체크하고, Raw deivce 테이블을 참고하여 맞는 rawdevice 번호를 넣어 줍니다.



제어파일은 control01, 02, 03 번 입니다. 역시 rawdevice 설정 했던 표를 참고 하여 맞는 번호와 경로를 지정해줍니다.



파란 부분을 더블 클릭 하면, 아래와 같은 창이 나옵니다.



역시 sysaux를 지정한 rawdevice 번호를 지정해줍니다.

용량은 lvcreate로 지정했던 요량 보다 1mb 작게 설정을 해주셔야 합니다. rawdevice는 1mb의 공간을 이용해 HDD의 정보를 담고 있기 때문입니다. 










redo01_a, b를 지정해줍니다.

두부분을 모두 사용하기 때문에 두개의 세팅한 디바이스를 설정해 줍니다.

1,2,3,4 모두 똑같이 설정해줍니다. 파일크기는 50mb로 세팅을 했었으니 49mb로 잡아 줍니다.







DB가 생성 되었습니다


$ crs_stat -t 


DB와 oltp를 확인합니다. 



Oracle 10g RAC (rawdevice) 설치 - 3 데이터베이스 엔진 설치

DB 엔진 설치


$ ~/pkg/database

$ ./runInstaller





경로는 $ORACLE_HOME의 경로를 지정해 줍니다.



rac2 체크




엔진만 설치 합니다.




각 노드에서 Node1, 2 순으로 실행해 줍니다.




오라클 엔진 패치


$ ~/pkg/Disk1

$ ./runInstaller




경로는 $ORACLE_HOME





Node1, 2 순서대로 실행, 엔터 → y → y → y 입력



엔진 설치 및 패치가 끝났습니다.



리스너 구성


$ netca












완료 버튼을 누르면 리스너 구성이 완료 됩니다.



설정 확인


$ crs_stat -t



Oracle 10g RAC (rawdevice) 설치 - 2 클러스터웨어 설치

Node1에 오라클 계정으로 로그인 한후 


$ mkdir pkg


pkg 폴더를 만들고, WinSCP혹은 VMware 파일 공유를 통해 설치 소프트웨어를 복사합니다. 

그리고 압축을 해제


$ unzip 10201_clusterware_linux32.zip

  클러스터웨어 압축풀기


$ unzip 10201_database_linux32.zip

  오라클 엔진 압축풀기


$ unzip p8202632_10205_LINUX.zip

  패치셋 압축풀기


압축을 다 풀고 나면 간혹, 설치 후 패치 중에 사용 공간이 부족하다고 나오기도 하니 zip 파일들은 삭제 해줘도 괜찮습니다.



관련 Library 설치


Node1에서 작업


$ scp ~/pkg/clusterware/rpm/cvuqdisk-1.0.1-1.rpm rac2:~/

관련 RPM rac2로 복사


$ su -

루트권한으로 변경


# export CVUQDISK_GRP=dba

# rpm -Uvh /home/oracle/pkg/clusterware/rpm/cvuqdisk-1.0.1-1.rpm



Node2에서 작업

루트권한으로 로그인


# export CVUQDISK_GRP=dba

# rpm -Uvh /home/oracle/cvuqdisk-1.0.1-1.rpm



설치전 환경 테스트


Node1에서 작업

오라클 계정으로 로그인


$ cd /home/oracle/pkg/clusterware/cluvfy

$ ./runcluvfy.sh stage -pre crsinst -n rac1,rac2 -verbose

$ ./runcluvfy.sh stage -post hwos -n rac1,rac2 -verbose


참고 : 위 환경 테스트에서 오류가 발생하므로, equivalence 정도만 성공하는지 확인하도록 합니다. 반드시 실행 시킬 필요는 없습니다.



클러스터웨어 설치


$ cd ~/pkg/clusterware

$ ./runInstaller





경로는 $ORA_CRS_HOME 경로로 지정 해줍니다.




추가 버튼을 누르고



rac2 를 추가 해줍니다.



eth0을 편집하여



공용으로 바꿔줍니다.



ocr1, ocr2 를 지정해주고



vote1,2,3 번을 지정해줍니다.




Putty같은 터미널을 띄워서, 각각의 노드에 root 계정으로 로그인해서 위 명령을 순서대로 실행 시켜줍니다.


1. rac1 - /home/oracle/oracInventory/orainstRoot.sh

2. rac2 - /home/oracle/oracInventory/orainstRoot.sh

3. rac1 - /home/oracle/product/10g/crs/root.sh

4. rac2 - /home/oracle/product/10g/crs/root.sh


순으로 실행. 그리고 확인 버튼을 누릅니다.


※ vipca 설정을 해줘야 하는데 아래와 그림과 같이 rac1에서 클러스터웨어 설치 중에 터미널을 열고 vipca를 설정할 경우, 

vipca 설정 종료 후 클러스터웨어가 설치 도중 강제 종료 되는 경우가 발생합니다. 그럼 클러스터 웨어를 지우고 다시 깔아야 하는데 매우 복잡해집니다.



그래서 root.sh 설치를 하고 바로 확인을 누르면 다음과 같은 화면으로 넘어갑니다.



체크 항목중 세번째 항목이 실패 했다고 나오는데,

이때 rac2에서 root 권한으로 vipca를 설정해 주면됩니다.


터미널을 열고 


# vipca


만약 rac2에서 vipca 가 실행이 되지 않으면,


rac2의 터미널을 열고 vi 에디터로 /home/oracle/product/10g/crs/bin/vipca 파일을 수정합니다.


# vi /home/oracle/product/10g/crs/bin/vipca


124 unset LD_ASSUME_KERNEL

125 #End workaround

※ 124번 라인에 unset LD_ASSUME_KERNEL 추가 (Linux OS관련 파라미터 설정 부분에서 #End workaround 바로 전) 


저장 후 터미널에서


# cd /home/oracle/product/10g/crs/bin

# ./oifcfg iflist                                                                                        ← 자신의 Public IP와 Private IP 확인

# ./oifcfg setif -global eth0/192.168.229.0:public                                         ← 자신의 Public IP 대역을 넣어 주셔야 합니다.

# ./oifcfg setif -global bond0/192.168.30.0:cluster_interconnect                    ← 자신의 Private IP 대역을 넣어 주셔야 합니다.

# ./oifcfg getif

# ./vipca


이렇게 하면 vipca 가 실행이 됩니다.







그리고 rac1으로 돌아와서, 확인을 누른 후, 재시도 버튼을 눌러주면, 설치가 완료 됩니다.




클러스터웨어 패치하기


$ cd ~/pkg/Disk1/

$ ./runInstaller




경로는 역시 $ORA_CRS_HOME 입니다.






터미널을 띄워서, root 권한으로


Node1]# /home/oracle/product/10g/crs/bin/crsctl stop crs

Node1]# /home/oracle/product/10g/crs/install/root102.sh

Node2]# /home/oracle/product/10g/crs/bin/crsctl stop crs

Node2]# /home/oracle/product/10g/crs/install/root102.sh


순서 대로 실행 해주면 됩니다. 그리고 나서 종료를 누르면 패치 끝



설치 확인


$ crs_stat -t



Oracle 10g RAC (rawdevice) 설치 - 1 리눅스 설치 및 세팅

초기 설정 값은 ASM 설정과 다를게 없습니다.

다만 추가 해주는 HDD 갯수는 2GB 씩 3개를 추가해 준뒤에 Advanced 값에서 scsi 값을 1:0, 1:1, 1:2 로 변경해줍니다.



설정을 해주고 리눅스 설치전 rac1.vmx 파일을 메모장으로 열어서 맨 밑에 다음과 같이 추가 해줍니다.


disk.locking = "FALSE"

diskLib.dataCacheMaxSize = "0"

scsi1.sharedBus = "virtual"


scsi1:0.deviceType = "disk"

scsi1:1.deviceType = "disk"

scsi1:2.deviceType = "disk"



리눅스 설치가 끝나면 


# ifconfig

# netstat -nr

# neat


명령을 이용해서 eth0, eth1의 IP 값을 지정해줍니다.



ASM 설치시 했던 과정의 반복 작업입니다.

IP 설정을 해주고 DNS 서버를 지정해주고 나서,


# /etc/init.d/network restart


네트워크를 재시작 해줍니다.

그리고 hosts 파일을 수정해줍니다.


# vi /etc/hosts


# Do not remove the following line, or various programs

# that require network functionality will fail.

127.0.0.1             localhost.localdomain   localhost                                        ← rac1 부분 삭제


#Public

192.168.189.143  rac1

192.168.189.144  rac2

#Private

192.168.150.135    rac1-priv

192.168.121.136    rac2-priv

#Vip

192.168.189.43     rac1-vip

192.168.189.44     rac2-vip


Hosts 파일 수정후 ping test


# ping rac1

# ping rac1-priv

# ping 8.8.8.8



불필요한 서비스 종료


# 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 isdn off

# chkconfig --level 123456 pcmcia off

# chkconfig --level 123456 iptables off



환경 변수설정


# vi /etc/sysctl.conf


kernel.shmall = 2097152

kernel.shmmax = 2147483648

kernel.shmmni = 4096

kernel.sem = 250 32000 100 128

fs.file-max = 65536

net.ipv4.ip_local_port_range = 1024 65000

net.core.rmem_default = 4194304

net.core.rmem_max = 4194304

net.core.wmem_default = 262144

net.core.wmem_max = 262144



# vi /etc/security/limits.conf


oracle soft nproc 2047

oracle hard nproc 16384

oracle soft nofile 1024

oracle hard nofile 65536



# vi /etc/pam.d/login


session    required     pam_limits.so



# vi /etc/modprobe.conf


options hangcheck-timer hangcheck_tick=30 hangcheck_margin=180


터미널에서 modprobe 실행


# modprobe -v hangcheck-timer


# vi /etc/rc.local


/sbin/modprobe hangcheck-timer rdate -s time.bora.net



오라클 계정 생성


# groupadd -g 5000 dba

# useradd -g dba oracle

# passwd oracle


root 계정의 .bash_profile에 bin 폴더 연결


# vi ~/.bash_profile


PATH=$PATH:$HOME/bin:/home/oracle/product/10g/crs/bin


오라클 계정의 .bash_profile 수정


# vi /home/oracle/.bash_profile


export EDITOR=vi

export LD_ASSUME_KERNEL=2.4.19

export ORACLE_BASE=/home/oracle

export ORA_CRS_HOME=$ORACLE_BASE/product/10g/crs

export ORACLE_HOME=$ORACLE_BASE/product/10g/db

export ORA_ASM_HOME=$ORACLE_BASE/product/10g/asm

export ORACLE_SID=rac1

export LANG=ko_KR.UTF-8

export ORACLE_TERM=xterm

export NLS_LANG=AMERICAN_AMERICA.KO16MSWIN949

export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:/usr/local/lib

export PATH=$PATH:$ORACLE_HOME/bin:/$ORA_CRS_HOME/bin

export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib



HDD에 LVM 설정후 Rawdevice를 사용 할 파티션 잡기

파티션 설정

# fdisk /dev/sdb 
# fdisk /dev/sdc 
# fdisk /dev/sdd

 fdisk 명령 진행 순서 
 n (새로운 파티션 생성) -> p (프라이머리 설정)  -> 1 -> Enter -> Enter -> t (파티션 종류 설정) -> 8e (LVM) -> w (저장 후 Fdisk 종료)

물리적 볼륨 생성 -> 볼륨그룹 생성 -> 논리적 볼륨 분할

# pvcreate /dev/sdb /dev/sdc /dev/sdd
# pvdisplay

# vgcreate rac /dev/sdb /dev/sdc /dev/sdd
# vgdisplay

# lvcreate --name ocr1 --size 300m rac
# lvcreate --name ocr2 --size 300m rac
# lvcreate --name vote1 --size 300m rac
# lvcreate --name vote2 --size 300m rac
# lvcreate --name vote3 --size 300m rac
# lvcreate --name system --size 600m rac
# lvcreate --name sysaux --size 300m rac
# lvcreate --name undotbs1 --size 200m rac
# lvcreate --name undotbs2 --size 200m rac
# lvcreate --name users --size 100m rac
# lvcreate --name temp --size 100m rac
# lvcreate --name control01 --size 100m rac
# lvcreate --name control02 --size 100m rac
# lvcreate --name control03 --size 100m rac
# lvcreate --name redo01_a --size 50m rac
# lvcreate --name redo01_b --size 50m rac
# lvcreate --name redo02_a --size 50m rac
# lvcreate --name redo02_b --size 50m rac
# lvcreate --name redo03_a --size 50m rac
# lvcreate --name redo03_b --size 50m rac
# lvcreate --name redo04_a --size 50m rac
# lvcreate --name redo04_b --size 50m rac
# lvcreate --name spfile --size 50m rac
# lvscan

Rawdevice Disk Mapping

# vi /etc/sysconfig/rawdevices

/dev/raw/raw1       /dev/rac/ocr1
/dev/raw/raw2       /dev/rac/ocr2
/dev/raw/raw3       /dev/rac/vote1
/dev/raw/raw4       /dev/rac/vote2
/dev/raw/raw5       /dev/rac/vote3
/dev/raw/raw6       /dev/rac/system
/dev/raw/raw7       /dev/rac/sysaux
/dev/raw/raw8       /dev/rac/undotbs1
/dev/raw/raw9       /dev/rac/undotbs2 
/dev/raw/raw10     /dev/rac/users 
/dev/raw/raw11     /dev/rac/temp 
/dev/raw/raw12     /dev/rac/control01 
/dev/raw/raw13     /dev/rac/control02
/dev/raw/raw14     /dev/rac/control03 
/dev/raw/raw15     /dev/rac/redo01_a 
/dev/raw/raw16     /dev/rac/redo01_b 
/dev/raw/raw17     /dev/rac/redo02_a 
/dev/raw/raw18     /dev/rac/redo02_b 
/dev/raw/raw19     /dev/rac/redo03_a 
/dev/raw/raw20     /dev/rac/redo03_b 
/dev/raw/raw21     /dev/rac/redo04_a 
/dev/raw/raw22     /dev/rac/redo04_b 
/dev/raw/raw23     /dev/rac/spfile

# vi /etc/udev/permissions.d/50-udev.permissions
 
 :set number
 113  raw/*:root:disk:0660  →  raw/*:oracle:dba:0660 ( 113번째 줄을 수정)

# /etc/init.d/rawdevices restart

# ls -al /dev/raw

rawdevice의 소유권이 oracle로 변경됐는지 확인합니다.

# init 0

Node1 을 종료하고, ASM 설치 했을때 처럼 Node2 를 복사하여 VM웨어에서 구동시켜 줍니다.

Node2 부팅 후 하드웨어 제거 및 설치 작업으로 랜카드 추가 작업을 하면서 DHCP로 설정해주고 root 권한으로 로그인합니다.

# neat

명령을 이용해서 IP, DNS, 호스트 이름을 변경 한 후,

# /etc/init.d/network restart

명령을 이용해서 네트워크를 재시작

# vi /home/oracle/.bash_profile

export ORACLE_SID=rac2 

로 변경하고 재부팅. 그리고 Node1 도 같이 구동 시켜 줍니다.


equivalence 설정

SSH 공개키/개인키 생성

오라클 계정으로 로그인 후 모든 노드에서 각각 실행합니다.

Node1, 2

$ mkdir .ssh

$ ssh-keygen -t rsa
입력값 없이 엔터 -> 엔터 -> 엔터

$ ssh-keygen -t dsa
입력값 없이 엔터 -> 엔터 -> 엔터


Node1에서만 실행

$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

$ ssh rac2 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
yes -> 노드 2 시스템 패스워드 입력

$ ssh rac2 cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
노드 2 시스템 패스워드 입력

$ scp ~/.ssh/authorized_keys rac2:~/.ssh/authorized_keys
노드 2 시스템 패스워드 입력
개인키가 저장된 파일(authorized_keys)을 노드2에 복사


Node1,2 에서 각각 실행
(암호를 묻는 과정이 나오지 않으면 올바르게 설정된 것임)

$ ssh rac1 date  
$ ssh rac1-priv date
$ ssh rac2 date
$ ssh rac2-priv date