[ RAC 설치 ]
1. 설치 시 필요 프로그램
1) 가상화 프로그램 : VMWare
2) 서버 접속 툴 : Putty, MobaXterm
3) 파일 전송 프로그램 : winscp
4) GUI 출력 : xmanager, xming(https://sourceforge.net/projects/xming)
5) 서버 이미지 파일(https://edelivery.oracle.com/) : OEL8(V1042736-01.iso, 8.10 버전) <—— 14,156,824,576 바이트
6) 오라클 설치 파일
grid 19c install : V982068-01.zip
server 19c install : V982063-01.zip
OEL 8.4 -> x86 64bit -> V1009565-01.iso
Oracle database 19.3 Enterprise Edition -> Linux x86-64 -> Long Term Release & Grid Infrastructure ->
2-1. 첫번째 서버 설치 과정
vmware에서 서버 생성
version에서 Oracle Linux 8 선택 ->
Virtual machine name : oel8db1 로 설정. ->
virtual machine single file ->
max disk size : 100GB ->
memory : 4GB ->
processors : 2 ->
CD/DVD : oel8 V1009565-01.iso 파일로 설정
oel8 설치
맨 처음 실행 시 Install 뭐시기 선택 엔터 ->
Time & Date : Seoul, 시간 변경 ->
Software selection : Server with GUI + Legacy UNIX Compatibility, Development Tools ->
KDUMP : disable ->
Security Policy : off ->
Network & Hostname : oel8db1, ethernet on ->
Installation Destination : custom -> /boot 500M, swap 8192M, / 나머지 -> Accept changes
Root Password : oracle ->
User Creation : itwill/oracle, Make this user administrator ->
IPv4 설정
wired connected -> wired settings -> 톱니바퀴 모양 -> IPv4 -> Manual -> 172.16.124.100 / 255.255.255.0 / 172.16.124.2 / DNS:8.8.8.8 -> 재시작 하고 다시 ifconfig 쳐서 변경 잘 됐나 확인
disk 추가 (shared)
문서 폴더의 Virtual Machines 폴더로 이동 ->
새 폴더 rac19db 생성 ->
해당 폴더로 oel8db1 서버 shutdown 후 이동시키기 (~/rac19db/oel8db1 이런 형태)->
VMware 에서 기존에 있던 oel8db1을 library에서 삭제(remove from the library)한 뒤 open virtual machine -> rac19db/oel8db1/oel8db1.vmx 선택하면 다시 oel8db1이 library에 뜸. ->
rac19db/storage 폴더 생성 ->
edit virtual machine settings -> Add -> hard disk -> NVMe -> 30GB, allocate, single file -> rac19db\storage\disk30.vmdk 위치에 해당 이름으로 저장. ->
Advanced… : NVMe 1:0 ->
network 추가 (private망)
Add -> network adapter ->
Host-only 로 설정
oel8db1.vmx 수정
rac19db/oel8db1/oel8db1.vmx 메모장으로 편집해서 맨 뒤에 아래 4줄 추가. 저장.
disk.locking = "FALSE"
diskLib.dataCacheMaxSize = "0"
nvme1.sharedBus = "virtual"
nvme1:0.deviceType = "disk"
다시 서버 기동 후 두번째 network 설정
I copied 선택. ->
ethernet (ens224) connect ->
wired settings -> IPv4 -> 10.10.10.10 / 255.255.255.0 ->
재시작 후 반영됐나 확인.
putty로 접속
itwill/oracle 로 접속. ->
fdisk -l 해서 30GiB 짜리 있는지 확인.
vi /etc/hosts 수정
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
##Public
172.16.124.100 oel8db1
172.16.124.200 oel8db2
##Private
10.10.10.10 oel8db1-priv
10.10.10.20 oel8db2-priv
##Virtual
172.16.124.110 oel8db1-vip
172.16.124.210 oel8db2-vip
##SCAN
172.16.124.150 oel8db-scan
1번 서버 oracle 설치 전 환경 설정
preinstall 다운
yum install -y oracle-database-preinstall-19c
oracle 계정 설정
groupadd dba
usermod -g dba -G dba oracle
passwd oracle
selinux disable 설정
vi /etc/selinux/config
------------------------------
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these three values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
방화벽, 블루투스 등 stop
systemctl stop firewalld
systemctl disable firewalld
systemctl stop bluetooth
systemctl disable bluetooth
systemctl stop chronyd
systemctl disable chronyd mv /etc/chrony.conf /etc/chrony.conf.bak
systemctl stop avahi-daemon.socket
systemctl disable avahi-daemon.socket
systemctl stop avahi-daemon
systemctl disable avahi-daemon
systemctl stop libvirtd
systemctl disable libvirtd
ASM 구성을 위한 추가 rpm 다운로드
# wget https://download.oracle.com/otn_software/asmlib/oracleasmlib-2.0.17-1.el8.x86_64.rpm
# rpm -ivh oracleasmlib-2.0.17-1.el8.x86_64.rpm
# wget https://yum.oracle.com/repo/OracleLinux/OL8/addons/x86_64/getPackage/oracleasm-support-2.1.12-1.el8.x86_64.rpm
# rpm -ivh oracleasm-support-2.1.12-1.el8.x86_64.rpm
temp 파일 시스템 할당
vi /etc/fstab 맨 아래에 아래 내용 추가
-----------------------------------------
tmpfs /dev/shm tmpfs size=7g 0 0
/dev/shm 영역 remount
# systemctl daemon-reload
# mount -o remount /dev/shm
# df -h /dev/shm
---------------------출력-------------------------
Filesystem Size Used Avail Use% Mounted on
tmpfs 7.0G 0 7.0G 0% /dev/shm
공유 디스크 포맷
# fdisk -l <--- 30g로 된 디스크 이름 확인
# fdisk /dev/nvme1n1 <--- 디스크 이름 확인 필요
(n --> p --> 1 --> Enter --> Enter --> w 순서대로 입력!)
# fdisk -l
-- 잘 했으면 아래에 device partition 이름이 아까와는 다르게 추가됨
Disk /dev/nvme1n1: 30 GiB, 32212254720 bytes, 62914560 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x4dc73b85
Device Boot Start End Sectors Size Id Type
/dev/nvme1n1p1 2048 62914559 62912512 30G 83 Linux
-- physical volume 생성
# pvcreate /dev/nvme1n1p1
# vgcreate 19c /dev/nvme1n1p1
-- logical volume 생성
# lvcreate -L 2g -n OCR_VOTE1 19c
# lvcreate -L 2g -n OCR_VOTE2 19c
# lvcreate -L 2g -n OCR_VOTE3 19c
# lvcreate -L 20G -n DATA 19c
Oracle ASM 설정 및 시작
# oracleasm configure -i
(oracle -> dba -> y -> y 순서대로 입력!)
ASM 디스크 생성
# oracleasm init
ASM 상태 확인
# oracleasm status
Checking if ASM is loaded: yes
Checking if /dev/oracleasm is mounted: yes
# oracleasm configure
ORACLEASM_ENABLED=true
ORACLEASM_UID=oracle
ORACLEASM_GID=dba
ORACLEASM_SCANBOOT=true
ORACLEASM_SCANORDER=""
ORACLEASM_SCANEXCLUDE=""
ORACLEASM_SCAN_DIRECTORIES=""
ORACLEASM_USE_LOGICAL_BLOCK_SIZE="false"
공유 디스크 생성
oracleasm createdisk OCR_VOTE1 /dev/19c/OCR_VOTE1
oracleasm createdisk OCR_VOTE2 /dev/19c/OCR_VOTE2
oracleasm createdisk OCR_VOTE3 /dev/19c/OCR_VOTE3
oracleasm createdisk DATA01 /dev/19c/DATA
디스크 스캔
oracleasm scandisks
생성 리스트 확인 4개. 나와야 정상
oracleasm listdisks
디렉터리 생성 및 권한 부여
mkdir -p /oracle/media
mkdir -p /oracle/app/oracle/product/19c
mkdir -p /oracle/app/grid/19c
mkdir -p /oracle/oraInventory
mkdir -p /oraarch
chown -R oracle:dba /oracle
chmod -R 775 /oracle
chown -R oracle:dba /oraarch
chmod -R 775 /oraarch
chown -R oracle:dba /dev/oracleasm
chown -R oracle:dba /dev/19c
chmod 777 /oracle/media
.bash_profile 수정
# su - oracle
# vi .bash_profile
-------------------------------------
# env
export ORACLE_BASE=/oracle/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/19c
export ORACLE_SID=ORADB1
export GRID_HOME=/oracle/app/grid/19c
export GRID_SID=+ASM1
export PATH=$ORACLE_HOME/bin:$GRID_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
alias grid='export ORACLE_HOME=$GRID_HOME; export ORACLE_SID=$GRID_SID; export
PATH=$ORACLE_HOME/bin:$GRID_HOME/bin:$PATH; echo $ORACLE_SID; echo $ORACLE_HOME'
alias db='. ~oracle/.bash_profile;export PATH=$ORACLE_HOME/bin:$GRID_HOME/bin:$PATH; echo $ORACLE_SID;echo $ORACLE_HOME'
alias oh='cd $ORACLE_HOME;pwd'
alias ss='sqlplus / as sysdba'
--------------------------------------
. .bash_profile
2-2. 두번째 서버 설치 과정
oel8db1 shutdown 후 복사해서 oel8db2 만들기
폴더째로 복사하기 ->
파일명에 1을 2로 다 바꾸기 ->
vmx파일 들어가서 ctrl+H 한 뒤에 oel8db1을 oel8db2 로 모두 바꾸기 ->
IPv4 변경 후 재시작
172.16.124.200 / 255.255.255.0 / 172.16.124.2
10.10.10.20 / 255.255.255.0
hostname 변경
vi /etc/hostname
oel8db2
또는
hostnamectl set-hostname oel8db2
reboot
2-3. 마무리
서버간 통신 체크
/etc/hosts에 지정을 잘못 해뒀으면 안된다.
oel8db1에서)
ping oel8db2
ping oel8db2-priv
oel8db2에서)
ping oel8db1
ping oel8db1-priv
.bash_profile 수정
su - oracle
vi .bash_profile
-----------------------------------------
# env
export ORACLE_BASE=/oracle/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/19c
export ORACLE_SID=ORADB2
export GRID_HOME=/oracle/app/grid/19c
export GRID_SID=+ASM2
export PATH=$ORACLE_HOME/bin:$GRID_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
alias grid='export ORACLE_HOME=$GRID_HOME; export ORACLE_SID=$GRID_SID; export PATH=$ORACLE_HOME/bin:$GRID_HOME/bin:$PATH; echo $ORACLE_SID; echo $ORACLE_HOME'
alias db='. ~oracle/.bash_profile;export PATH=$ORACLE_HOME/bin:$GRID_HOME/bin:$PATH; echo $ORACLE_SID;echo $ORACLE_HOME'
alias oh='cd $ORACLE_HOME;pwd'
alias ss='sqlplus / as sysdba'
3. Grid 설치 전 준비
OracleDB zip 파일 이동 & 압축 해제
WinSCP에 oracle계정으로 접속. ->
/oracle/media 폴더에 V982068-01.zip 기본모드로 옮기기. ->
oracle 계정에서)
cd $GRID_HOME
unzip /oracle/media/V982068-01.zip
cvuqdisk-1.0.10-1.rpm 설치
root 계정에서)
rpm -ivh /oracle/app/grid/19c/cv/rpm/cvuqdisk-1.0.10-1.rpm
2번 노드 싱크 (1번에서 작업)
rsync --progress /oracle/app/grid/19c/cv/rpm/cvuqdisk-1.0.10-1.rpm oel8db2:/root/
-----------
yes -> 패스워드 입력
2번에서 root계정으로 설치
rpm -ivh /root/cvuqdisk-1.0.10-1.rpm
1번에서 oracle계정으로 수행
cd $GRID_HOME/oui/prov/resources/scripts
./sshUserSetup.sh -user oracle -hosts "oel8db1 oel8db2" -noPromptPassphrase -advanced
-----------------------------------
yes -> oracle계정 패스워드 -> oracle계정 패스워드 -> oracle계정 패스워드 -> oracle계정 패스워드
xclock 설치 및 구동
windows에 gui가 xming을 통해서 잘 보내지는지 테스트하려는 것.
1번서버 root계정에서 수행)
dnf config-manager --enable ol8_codeready_builder
dnf install xorg-x11-apps
------------------
y 입력
xming 연동
Xming 실행 ->
putty 실행 -> 왼쪽 목록에 SSH -> X11 -> Enable, :0.0 ->
oracle 계정으로 접속 ->
xclock
-- 시계 나오는 거 확인
-- 안 나오면 export DISPLAY=localhost:0.0
4. GRID 설치 (1번, oracle계정)
cd $GRID_HOME
export CV_ASSUME_DISTID=RHEL7.6
./gridSetup.sh
변경X
변경X
이름변경
add -> oel8db2, oel8db2-vip -> SSH connectivity… -> oracle 패스워드 입력 -> test
에러 06006 발생 시
노드1,2) root 계정 아래 수행 후 재 테스트
# mv /usr/bin/scp /usr/bin/scp.orig
# vi /usr/bin/scp
-> /usr/bin/scp.orig -T $* 입력 후 저장
# chmod 555 /usr/bin/scp
**모든 설치 완료 후** 다시 원복
# mv /usr/bin/scp.orig /usr/bin/scp
ASM & Private 로 변경
변경 X
변경 X
VOTING DIST 설정 : OCR_VOTE, Change Discovery Path… 클릭해서 /dev/oracleasm/disks 입력 -> 정상 출력 확인 및 디스크 선택
passwd 입력
변경 X
변경 X
dba로 system group 설정
변경X -> not empty 메세지 떠도 넘기기
변경X
automatically run -> oracle 패스워드 입력
scan ip가 도메인 등록되어 있지 않아 발생하는 warning (모두 무시)
설치진행
root 스크립트 자동 실행 여부 (YES)
scan ip가 DNS에 등록되어 있지 않아서 발생한 문제 무시해도 됨. (OK)
위의 fail로 인한 configure cluster fail이지만 정상 (next)
설치완료!
설치 후 crs 상태 확인
crsctl stat res -t
ocrcheck
5. asm 디스크 구성
1번 oracle 계정에서 계속 설치 진행)
asmca
Disk Groups 선택 후 create
DATA / External(None) 후 체크박스 잘 하고 OK
Exit -> Yes 로 나오기
확인)
crsctl stat res -t
6. DB 엔진 설치
winscp 로 V982063-01.zip 을 /oracle/media에 옮기기
압축 해제 1번 oracle 계정)
cd $ORACLE_HOME
unzip /oracle/media/V982063-01.zip
설치 진행 1번 oracle 계정)
cd $ORACLE_HOME
./runInstaller
Software Only
변경 X
변경 X (노드 확인)
변경 X
변경 X
dba로 변경
Automatically 체크 -> oracle
scan ip 관련 에러 ignore
-> 나는 clock synchoronization 문제 떴는데 그냥 ignore 하고 돌림
아래가 원래 떠야되는 모습
root script 실행 여부 (YES)
설치 완료
7. DBCA로 DB 생성
DBCA 수행 (1번, oracle 계정, xclock가능한 세션)
dbca
변경X
변경 X
custom database 선택
변경 X
ORADB 입력 -> Create as Container db 체크 해제
변경 X
변경 X
체크박스 해제 몇개 해주기
Use ASMM 선택만 하고 사이즈 딱히 변경 X
character sets 변경
변경 X
Run 이랑 EM 체크 해제
패스워드 설정 oracle
변경 X
scan error ignore all
설치 완료!
DB 생성 확인
crsctl stat res -t
sqlplus / as sysdba
SQL> select instance_name, version, status from gv$instance;
INSTANCE_NAME VERSION STATUS
---------------- ----------------- ------------
ORADB1 19.0.0.0.0 OPEN
ORADB2 19.0.0.0.0 OPEN
1번 2번 모두)root 유저 .bash_profile 수정
su - root
vi .bash_profile
----------------------아래 내용 추가------------------------
# grid env
export ORACLE_BASE=/oracle/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/19c
export GRID_HOME=/oracle/app/grid/19c
export PATH=$ORACLE_HOME/bin:$GRID_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
--------------------------------------------------------------
. .bash_profile