본문 바로가기

강남 아이티윌 오라클DBA과정 94기/RAC

[오라클 DBA 과정] 84일차 RAC(1)(RAC 설치(1)) (2026-07-20)

RAC 설치(1)

 

네트워크 주소 아래 거로 하기.


vi /etc/hosts

## Public(어댑터 2 - enp0s8)
192.168.56.175 rac1    
192.168.56.176 rac2

## Private(어댑터 3 - enp0s9)
192.168.55.175 rac1-priv  
192.168.55.176 rac2-priv

## Virtual 
192.168.56.177 rac1-vip
192.168.56.178 rac2-vip

## grid scan
192.168.56.179 rac-scan

 

 

VM VirtualBox 새로 만들기 클릭

1) 가상 머신 이름과 운영 체제

이름: rac1

폴더: rac

종류: Linux

 

 

2) 하드웨어

기본 메모리: 4096MB(4GB)

프로세서: CPU 2개

 

 

3) 가상 하드 디스크

디스크 크기: 50.00GB

 

 

4) 요약 확인 및 완료

 

 

설정

1) 저장소

OracleLinux-R7-U9 이미지

 

2) 네트워크

어댑터 1: 그대로

 

어댑터2: 호스트 전용 어댑터(외부에서 접속할 수 있는 IP주소. public망)

 

어댑터3: 어댑터에 브리지(내부 망(private))

 

확인 누르고 시작

 

Install Oracle Linux 7.9로 방향키 이동

 

 

 

언어는 영어 설정

시간대는 아시아/서울

software selection: server with GUI

network&hostname은 아래처럼.

enp0s3,8,9 General은 똑같이 Automatically connect 어쩌고 체크

 

enp0s8

IPv4 Settings

Address 192,168.56.175

Netmask 255.255.255.0

 

ens0s9

- General 똑같이 Automatically 체크

- 이거는 주소를 56 대신 55로만 바꿈.(private한 내부 망)

 

 

host name: rac1로 설정

 

 

KDUMP, SECURITY POLICY 둘 다 꺼버리기. 그 후 install 진행

 

 

 

두 번째 서버(rac2)는 첫 번째 서버 복제해서 따로 설치할 필요 없음.

install 다 되면 reboot

 

license 동의하고 네트워크 잘 됐는지 다시 한 번 확인해주고 finish configuration

 

 

enp0s3, 8, 9는 이름이 이 이름이 아니라 다를 수도 있음.

 

일반 유저 itwill 말고 root유저로 로그인

 

그 다음 putty에서 root유저로 접속 (192.168.56.175) -- public한 걸로 접속해야 함.

[root@rac1 ~]# cd /etc/sysconfig/network-scripts/
[root@rac1 network-scripts]# ls
ifcfg-enp0s3  ifdown-eth   ifdown-ppp       ifup          ifup-ipv6   ifup-routes    init.ipv6-global
ifcfg-enp0s8  ifdown-ib    ifdown-routes    ifup-aliases  ifup-isdn   ifup-sit       network-functions
ifcfg-enp0s9  ifdown-ippp  ifdown-sit       ifup-bnep     ifup-plip   ifup-Team      network-functions-ipv6
ifcfg-lo      ifdown-ipv6  ifdown-Team      ifup-eth      ifup-plusb  ifup-TeamPort
ifdown        ifdown-isdn  ifdown-TeamPort  ifup-ib       ifup-post   ifup-tunnel
ifdown-bnep   ifdown-post  ifdown-tunnel    ifup-ippp     ifup-ppp    ifup-wireless
[root@rac1 network-scripts]# cat ifcfg-enp0s8
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=enp0s8
UUID=27a4abe3-6a85-4576-87c4-cb4621780a95
DEVICE=enp0s8
ONBOOT=yes
IPADDR=192.168.56.175
PREFIX=24
IPV6_PRIVACY=no

[root@rac1 network-scripts]# service network stop -- 접속 끊어지는 것.
Stopping network (via systemctl):

 

 

vm virtualbox terminal 창 열어서
[root@rac1 ~]# service network start
[root@rac1 ~]# ip a ls

다시 putty에서

[root@rac1 ~]# yum -y install oracle-database-preinstall-19c
...
Complete!


# yum 설치 시 오류 발생하는 경우
ps -ef | grep yum
kill -9 프로세스
rm -rf /var/run/yum.pid


[root@rac1 ~]# yum -y install oracleasm-support
...
Complete!

[root@rac1 ~]# yum -y install kmod-oracleasm
...
Complete!



[root@rac1 ~]# yum list *oracleasm*
Loaded plugins: langpacks, ulninfo
Installed Packages
kmod-oracleasm.x86_64                                   2.0.8-28.0.1.el7                                 @ol7_latest
oracleasm-support.x86_64                                2.1.11-2.el7                                     @ol7_latest


[root@rac1 ~]# vi /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
## Public
192.168.56.175 rac1
192.168.56.176 rac2

## Private
192.168.55.175 rac1-priv
192.168.55.176 rac2-priv

## Virtual
192.168.56.177 rac1-vip
192.168.56.178 rac2-vip

## grid scan
192.168.56.179 rac-scan

이거 ##public부터 붙여넣기



[root@rac1 ~]# vi /etc/security/limits.conf
oracle       soft     nofile     4096
oracle       hard     nofile     65536
oracle       soft     nproc      16384
oracle       hard     nproc      16384
oracle       soft     stack      10240
oracle       hard     stack      32768
oracle       soft     memlock    3145728
oracle       hard     memlock    3145728

# End of file 이거 위에 oracle~~ 이거 붙여넣기(레퍼런스에 있음.)

[root@rac1 ~]# systemctl stop firewalld
[root@rac1 ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.

[root@rac1 ~]# systemctl stop avahi-daemon
[root@rac1 ~]# systemctl disable avahi-daemon

[root@rac2 ~]# systemctl stop avahi-daemon
[root@rac2 ~]# systemctl disable avahi-daemon

 


* 동기화 체크하는 작업

[root@rac1 ~]# yum -y install ntp -- 시간 동기화(각각의 머신끼리 시간이 다르면 안 됨. 시간을 같게 맞춰줘야 함.)
[root@rac1 ~]# vi /etc/sysconfig/ntpd 
기존 OPTIONS="-g"는 앞에 # 달아서 주석 처리 하고 
OPTIONS="-x -u ntp:ntp -p /var/run/ntpd.pid"
SYNC_HWCLOCK=no
NTPDATE_OPTIONS=""
이거 삽입

[root@rac1 ~]# systemctl start ntpd
[root@rac1 ~]# systemctl enable ntpd
[root@rac1 ~]# systemctl status ntpd

[root@rac1 ~]# tail -1 /etc/passwd
oracle:x:54321:54321::/home/oracle:/bin/bash

[root@rac1 ~]# tail /etc/group
stapdev:x:158:
tcpdump:x:72:
itwill:x:1000:itwill
oinstall:x:54321:oracle
dba:x:54322:oracle
oper:x:54323:oracle
backupdba:x:54324:oracle
dgdba:x:54325:oracle
kmdba:x:54326:oracle
racdba:x:54330:oracle



* OS group 추가하기

[root@rac1 ~]# groupadd -g 54331 asmadmin
[root@rac1 ~]# groupadd -g 54332 asmdba
[root@rac1 ~]# groupadd -g 54333 asmoper


[root@rac1 ~]# id oracle
uid=54321(oracle) gid=54321(oinstall) groups=54321(oinstall),54322(dba),54323(oper),54324(backupdba),54325(dgdba),54326(kmdba),54330(racdba)

oracle OS 사용자의 기본 그룹과 보조 그룹을 수정하는 명령어
[root@rac1 ~]# usermod -g oinstall -G dba,oper,backupdba,dgdba,kmdba,racdba,asmadmin,asmdba,asmoper oracle

[root@rac1 ~]# id oracle
uid=54321(oracle) gid=54321(oinstall) groups=54321(oinstall),54322(dba),54323(oper),54324(backupdba),54325(dgdba),54326(kmdba),54330(racdba),54331(asmadmin),54332(asmdba),54333(asmoper)

 


* 디렉터리 생성 및 소유자 변경, 권한 부여

[root@rac1 ~]# mkdir -p /u01/app/oracle
[root@rac1 ~]# mkdir -p /u01/app/oraInventory
[root@rac1 ~]# mkdir -p /u01/app/19.0.0/grid
[root@rac1 ~]# mkdir -p /u01/app/oracle/product/19.0.0/dbhome_1   
[root@rac1 ~]# chown -R oracle:oinstall /u01  
[root@rac1 ~]# chmod -R 755 /u01


[root@rac1 ~]# ls -lR /u01  -- 마지막에 이거로 확인
/u01:
total 0
drwxr-xr-x. 5 oracle oinstall 54 Jul 20 17:17 app

/u01/app:
total 0
drwxr-xr-x. 3 oracle oinstall 18 Jul 20 17:17 19.0.0
drwxr-xr-x. 3 oracle oinstall 21 Jul 20 17:17 oracle
drwxr-xr-x. 2 oracle oinstall  6 Jul 20 17:17 oraInventory

/u01/app/19.0.0:
total 0
drwxr-xr-x. 2 oracle oinstall 6 Jul 20 17:17 grid

/u01/app/19.0.0/grid:
total 0

/u01/app/oracle:
total 0
drwxr-xr-x. 3 oracle oinstall 20 Jul 20 17:17 product

/u01/app/oracle/product:
total 0
drwxr-xr-x. 3 oracle oinstall 22 Jul 20 17:17 19.0.0

/u01/app/oracle/product/19.0.0:
total 0
drwxr-xr-x. 2 oracle oinstall 6 Jul 20 17:17 dbhome_1

/u01/app/oracle/product/19.0.0/dbhome_1:
total 0

/u01/app/oraInventory:
total 0

 

grid를 먼저 설치하고 db 설치하는 것

 


*  oracle유저 비밀번호 설정

[root@rac1 ~]# passwd oracle -- oracle유저 비밀번호 설정
Changing password for user oracle.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.



* oracle 유저에서 환경설정

[root@rac1 ~]# su - oracle
[oracle@rac1 ~]$ vi .bash_profile

기존 거 밑에
export TMP=/tmp
export TMPDIR=$TMP
export EDITOR=vi
export ORACLE_HOSTNAME=rac1
export ORACLE_UNQNAME=racdb
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/19.0.0/dbhome_1
export GRID_HOME=/u01/app/19.0.0/grid
export ORACLE_SID=racdb1
export ORACLE_TERM=xterm
export BASE_PATH=/usr/sbin:$PATH
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$GRID_HOME/bin:$BASE_PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib

umask 022
복붙

 

 

[oracle@rac1 ~]$ vi .grid_env
export ORACLE_SID=+ASM1 # +ASM2
export ORACLE_HOME=$GRID_HOME
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$GRID_HOME/bin:$BASE_PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib

 

 

[oracle@rac1 ~]$ vi .db_env
export ORACLE_SID=racdb1 # racdb2
export ORACLE_HOME=$ORACLE_HOME
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$GRID_HOME/bin:$BASE_PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib

 

 

[oracle@rac1 ~]$ vi .bashrc
기존에 있는 것 밑에
alias grid_env='. ~/.grid_env'
alias db_env='. ~/.db_env'
복붙

 


[oracle@rac1 ~]$ exit
logout

다시 root 유저에서
[root@rac1 ~]# init 0 -- OS 내림. 네트워크 끊어짐. rac1 전원 꺼짐.

 

 

# 복제

rac1에서 마우스 우클릭>복제

이름: rac2

경로: rac1이랑 똑같은 경로. rac폴더

MAC 주소 정책: 모든 네트워크 어댑터의 새 MAC 주소 생성(새 주소 아니면 rac1이랑 충돌됨.)

 

 

 

완전한 복제, 완료

 

똑같은 서버가 만들어짐. 그대로 복제되었기 때문에 IP주소가 동일하다.

host주소와 IP주소 변경해야 함. rac2 시작(복제한 것만 시작해야 함.)

 

* IPv4 주소 변경

 

putty 접속(192.168.56.176)

 

* hostname 수정

[root@rac1 ~]# hostname
rac1
[root@rac1 ~]# hostnamectl status
   Static hostname: rac1
         Icon name: computer-vm
           Chassis: vm
        Machine ID: d02fc4076f330b4192d8dc4c7f1d7707
           Boot ID: 3883093d2f4e4a1e81ed6170fe8f2432
    Virtualization: kvm
  Operating System: Oracle Linux Server 7.9
       CPE OS Name: cpe:/o:oracle:linux:7:9:server
            Kernel: Linux 5.4.17-2102.201.3.el7uek.x86_64
      Architecture: x86-64
[root@rac1 ~]# hostnamectl set-hostname rac2
[root@rac1 ~]# su -     -- 새롭게 접속
Last login: Mon Jul 20 17:37:04 KST 2026 from 192.168.56.1 on pts/0
[root@rac2 ~]# -- 새롭게 접속해야 바뀐 호스트이름으로 보임.



[root@rac2 ~]# su - oracle
Last login: Mon Jul 20 17:19:47 KST 2026 on pts/1

[oracle@rac2 ~]$ vi .bash_profile
export PATH
export TMP=/tmp
export TMPDIR=$TMP
export EDITOR=vi
export ORACLE_HOSTNAME=rac2  <<- 여기 수정(rac1 -> rac2)
export ORACLE_UNQNAME=racdb
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/19.0.0/dbhome_1
export GRID_HOME=/u01/app/19.0.0/grid
export ORACLE_SID=racdb2  <<- 여기 수정(racdb1 -> racdb2)
export ORACLE_TERM=xterm
export BASE_PATH=/usr/sbin:$PATH
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$GRID_HOME/bin:$BASE_PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib

umask 022


[oracle@rac2 ~]$ vi .grid_env
export ORACLE_SID=+ASM2  <<- 수정(1로 되어있는 거 2로 수정)(주석으로 # 되어있는 거 지워도 됨.)
export ORACLE_HOME=$GRID_HOME
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$GRID_HOME/bin:$BASE_PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib


[oracle@rac2 ~]$ vi .db_env
export ORACLE_SID=racdb2  <<- 수정(1로 되어있는 거 2로 수정)(주석으로 # 되어있는 거 지워도 됨.)
export ORACLE_HOME=$ORACLE_HOME
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$GRID_HOME/bin:$BASE_PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib


[oracle@rac2 ~]$ exit
logout
[root@rac2 ~]# init 0 -- OS 내림. 네트워크 끊어짐. rac2 전원 꺼짐.



서버 두 개 구축하고 끝~ 오늘은 여기까지만 하고 나머지는 내일 진행.