프린트 하기

OS 환경 : Oracle Linux 8.4 (64bit)

 

DB 환경 : Oracle Database 19.27.0.0

 

방법 : 오라클 19c RAC 노드 추가 방법(gui)

본문에서는 오라클 19c 2노드 rac 환경에서 신규 노드를 gui로 추가하는 방법을 설명함

 

 

노드 추가될 대상 서버의 공유 디스크 마운트, 네트워크 설정은 이미 되어 있다고 가정하고 진행함
기존 노드 정보 :
hostname, public ip, private ip
노드1 : ora19rac1, 192.168.137.61, 10.10.10.110
노드2 : ora19rac2, 192.168.137.62, 10.10.10.120
추가될 노드 정보 : ora19rac3, 192.168.137.63, 10.10.10.130
현재 grid 및 db는 온라인 상태임

 

 

crs 상태 확인

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# crsctl stat res -t
--------------------------------------------------------------------------------
Name           Target  State        Server                   State details
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.LISTENER.lsnr
               ONLINE  ONLINE       ora19rac1                STABLE
               ONLINE  ONLINE       ora19rac2                STABLE
ora.chad
               ONLINE  ONLINE       ora19rac1                STABLE
               ONLINE  ONLINE       ora19rac2                STABLE
ora.net1.network
               ONLINE  ONLINE       ora19rac1                STABLE
               ONLINE  ONLINE       ora19rac2                STABLE
ora.ons
               ONLINE  ONLINE       ora19rac1                STABLE
               ONLINE  ONLINE       ora19rac2                STABLE
ora.proxy_advm
               OFFLINE OFFLINE      ora19rac1                STABLE
               OFFLINE OFFLINE      ora19rac2                STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.ASMNET1LSNR_ASM.lsnr(ora.asmgroup)
      1        ONLINE  ONLINE       ora19rac1                STABLE
      2        ONLINE  ONLINE       ora19rac2                STABLE
ora.DATA.dg(ora.asmgroup)
      1        ONLINE  ONLINE       ora19rac1                STABLE
      2        ONLINE  ONLINE       ora19rac2                STABLE
ora.LISTENER_SCAN1.lsnr
      1        ONLINE  ONLINE       ora19rac1                STABLE
ora.OCR.dg(ora.asmgroup)
      1        ONLINE  ONLINE       ora19rac1                STABLE
      2        ONLINE  ONLINE       ora19rac2                STABLE
ora.RECO.dg(ora.asmgroup)
      1        ONLINE  ONLINE       ora19rac1                STABLE
      2        ONLINE  ONLINE       ora19rac2                STABLE
ora.VOTE.dg(ora.asmgroup)
      1        ONLINE  ONLINE       ora19rac1                STABLE
      2        ONLINE  ONLINE       ora19rac2                STABLE
ora.asm(ora.asmgroup)
      1        ONLINE  ONLINE       ora19rac1                Started,STABLE
      2        ONLINE  ONLINE       ora19rac2                Started,STABLE
ora.asmnet1.asmnetwork(ora.asmgroup)
      1        ONLINE  ONLINE       ora19rac1                STABLE
      2        ONLINE  ONLINE       ora19rac2                STABLE
ora.cvu
      1        ONLINE  ONLINE       ora19rac1                STABLE
ora.ora11db.db
      1        ONLINE  ONLINE       ora19rac1                Open,HOME=/oracle/ap
                                                             p/oracle/product/19c
                                                             ,STABLE
      2        ONLINE  ONLINE       ora19rac2                Open,HOME=/oracle/ap
                                                             p/oracle/product/19c
                                                             ,STABLE
ora.ora19db.db
      1        ONLINE  ONLINE       ora19rac1                Open,HOME=/oracle/ap
                                                             p/oracle/product/19c
                                                             ,STABLE
      2        ONLINE  ONLINE       ora19rac2                Open,HOME=/oracle/ap
                                                             p/oracle/product/19c
                                                             ,STABLE
ora.ora19rac1.vip
      1        ONLINE  ONLINE       ora19rac1                STABLE
ora.ora19rac2.vip
      1        ONLINE  ONLINE       ora19rac2                STABLE
ora.qosmserver
      1        ONLINE  ONLINE       ora19rac1                STABLE
ora.scan1.vip
      1        ONLINE  ONLINE       ora19rac1                STABLE
--------------------------------------------------------------------------------

모두 정상, 업그레이드 테스트시 사용한 ora11db도 존재하지만 본문에서는 ora19db에만 인스턴스를 추가할 예정임

 

 

기존 구성 확인
/etc/hosts 확인(1번 노드)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
 
##Public
192.168.137.161 ora19rac1
192.168.137.162 ora19rac2
 
##Private
10.10.10.110 ora19rac1-priv
10.10.10.120 ora19rac2-priv
 
##Virtual
192.168.137.61 ora19rac1-vip
192.168.137.62 ora19rac2-vip
 
##SCAN
192.168.137.200 ora19rac-scan

 

 

/etc/hosts 수정(1번 노드)
3번노드에 대한 내용 추가

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# vi /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
 
##Public
192.168.137.161 ora19rac1
192.168.137.162 ora19rac2
192.168.137.163 ora19rac3
 
##Private
10.10.10.110 ora19rac1-priv
10.10.10.120 ora19rac2-priv
10.10.10.130 ora19rac3-priv
 
##Virtual
192.168.137.61 ora19rac1-vip
192.168.137.62 ora19rac2-vip
192.168.137.63 ora19rac3-vip
 
##SCAN
192.168.137.200 ora19rac-scan

 

 

/etc/hosts 파일을 기존 2번 노드 및 신규 노드로 복제

1
2
# scp /etc/hosts 10.10.10.120:/etc/hosts
# scp /etc/hosts 10.10.10.130:/etc/hosts

 

 

oracleasm 패키지 신규 노드로 복제

1
2
# scp oracleasmlib-2.0.17-1.el8.x86_64.rpm 10.10.10.130:/root/
# scp oracleasm-support-2.1.12-1.el8.x86_64.rpm 10.10.10.130:/root/

참고 다운로드 링크 :
https://www.oracle.com/linux/downloads/linux-asmlib-v8-downloads.html 에서 oracleasmlib-2.0.17-1.el8.x86_64.rpm 다운로드
https://yum.oracle.com/repo/OracleLinux/OL8/addons/x86_64/index.html 에서 oracleasm-support-2.1.12-1.el8.x86_64.rpm 다운로드

 

 

cvuqdisk 패키지 신규 노드로 복제

1
# rsync --progress /oracle/app/grid/19c/cv/rpm/cvuqdisk-1.0.10-1.rpm ora19rac3:/root/

 

 

신규 노드 사전 설정
자동 설정

1
2
3
4
# curl -o oracle-database-preinstall-19c-1.0-2.el8.x86_64.rpm https://yum.oracle.com/repo/OracleLinux/OL8/appstream/x86_64/getPackage/oracle-database-preinstall-19c-1.0-2.el8.x86_64.rpm
# dnf -y localinstall oracle-database-preinstall-19c-1.0-2.el8.x86_64.rpm
# rpm -ivh /root/cvuqdisk-1.0.10-1.rpm
/sbin/sysctl -p

 

 

오라클 유저 패스워드 설정

1
# passwd oracle

 

 

selinux disable 설정

1
2
# vi /etc/selinux/config
SELINUX=disabled

 

 

불필요한 서비스 정지

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#
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 ntpdate
systemctl disable ntpdate
 
systemctl stop avahi-daemon.socket
systemctl disable avahi-daemon.socket
 
systemctl stop avahi-daemon
systemctl disable avahi-daemon
 
systemctl stop libvirtd
systemctl disable libvirtd

 

 

oracleasm rpm 설치

1
2
# rpm -ivh /root/oracleasmlib-2.0.17-1.el8.x86_64.rpm 
# rpm -ivh /root/oracleasm-support-2.1.12-1.el8.x86_64.rpm

참고 다운로드 링크 :
https://www.oracle.com/linux/downloads/linux-asmlib-v8-downloads.html 에서 oracleasmlib-2.0.17-1.el8.x86_64.rpm 다운로드
https://yum.oracle.com/repo/OracleLinux/OL8/addons/x86_64/index.html 에서 oracleasm-support-2.1.12-1.el8.x86_64.rpm 다운로드

 

 

temp 및 부족한 swap 할당

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
##set temp
grep -q '/dev/shm' /etc/fstab && \
  sed -i 's|^tmpfs\s\+/dev/shm.*|tmpfs /dev/shm tmpfs size=7g 0 0|' /etc/fstab || \
  echo 'tmpfs /dev/shm tmpfs size=7g 0 0' >> /etc/fstab
 
# mount
mount -o remount /dev/shm
 
# check
df -h /dev/shm
 
 
1. 2GB 스왑 파일 생성
dd if=/dev/zero of=/swapfile2 bs=1M count=2048
 
2. 권한 설정
chmod 600 /swapfile2
 
3. 스왑으로 포맷
mkswap /swapfile2
 
4. 스왑 활성화
swapon /swapfile2
 
5. 적용 확인
swapon --show
free -h
 
echo '/swapfile2 swap swap defaults 0 0' >> /etc/fstab

 

 

현재 인식된 디스크 확인

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
# fdisk -l
Disk /dev/sdd: 10 GiB, 10737418240 bytes, 20971520 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: 0x07d08175
 
Device     Boot Start      End  Sectors Size Id Type
/dev/sdd1        2048 20971519 20969472  10G 83 Linux
 
 
Disk /dev/sda: 100 GiB, 107374182400 bytes, 209715200 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: 0xa6f833ab
 
Device     Boot   Start       End   Sectors Size Id Type
/dev/sda1  *       2048   2099199   2097152   1G 83 Linux
/dev/sda2       2099200 209715199 207616000  99G 8e Linux LVM
 
 
Disk /dev/sdc: 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: 0x9cd89166
 
Device     Boot Start      End  Sectors Size Id Type
/dev/sdc1        2048 62914559 62912512  30G 83 Linux
 
 
Disk /dev/sdb: 20 GiB, 21474836480 bytes, 41943040 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: 0x45c8cccb
 
Device     Boot Start      End  Sectors Size Id Type
/dev/sdb1        2048 41943039 41940992  20G 83 Linux
 
 
Disk /dev/sde: 100 GiB, 107374182400 bytes, 209715200 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: 0x820f314c
 
Device     Boot Start       End   Sectors  Size Id Type
/dev/sde1        2048 209715199 209713152  100G 83 Linux
 
 
Disk /dev/mapper/ol-root: 91 GiB, 97706311680 bytes, 190832640 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
 
 
Disk /dev/mapper/ol-swap: 8 GiB, 8589934592 bytes, 16777216 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
 
 
Disk /dev/mapper/19c_ocrvote-OCR1: 2 GiB, 2147483648 bytes, 4194304 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
 
 
Disk /dev/mapper/19c_ocrvote-OCR2: 2 GiB, 2147483648 bytes, 4194304 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
 
 
Disk /dev/mapper/19c_ocrvote-OCR3: 2 GiB, 2147483648 bytes, 4194304 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
 
 
Disk /dev/mapper/19c_data-DATA: 29 GiB, 31138512896 bytes, 60817408 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
 
 
Disk /dev/mapper/19c_ocrvote-VOTE1: 2 GiB, 2147483648 bytes, 4194304 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
 
 
Disk /dev/mapper/19c_ocrvote-VOTE2: 2 GiB, 2147483648 bytes, 4194304 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
 
 
Disk /dev/mapper/19c_ocrvote-VOTE3: 2 GiB, 2147483648 bytes, 4194304 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
 
 
Disk /dev/mapper/19c_reco2-RECO2: 99 GiB, 106300440576 bytes, 207618048 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
 
 
Disk /dev/mapper/19c_reco-RECO: 9 GiB, 9663676416 bytes, 18874368 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

모든 디스크가 잘 보임

 

 

Oracle ASM 설정(oracle, dba, y, y 순서대로 입력)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 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 []: oracle <-- oracle 입력
Default group to own the driver interface []: dba  <-- dba 입력
Start Oracle ASM library driver on boot (y/n) [n]: y <-- y 입력
Scan for Oracle ASM disks on boot (y/n) [y]: y <-- y 입력
Writing Oracle ASM library driver configuration: done

 

 

oracleasm 서비스 시작

1
2
3
4
5
# oracleasm init
Creating /dev/oracleasm mount point: /dev/oracleasm
Loading module "oracleasm": oracleasm
Configuring "oracleasm" to use device physical block size
Mounting ASMlib driver filesystem: /dev/oracleasm

 

 

상태 확인

1
2
3
4
5
6
7
8
9
10
11
12
13
# 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"

 

 

디스크 확인

1
2
3
4
5
6
7
8
9
10
11
# oracleasm scandisks
# oracleasm listdisks
DATA01
OCR1
OCR2
OCR3
RECO01
RECO02
VOTE1
VOTE2
VOTE3

정상적으로 다 보임

 

 

엔진 설치를 위한 경로 생성 및 권한 부여

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#
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_ocrvote
chown -R oracle:dba /dev/19c_data
chown -R oracle:dba /dev/19c_reco
chown -R oracle:dba /dev/19c_reco2

 

 

oracle 유저 접속 후 .bash_profile 설정

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# su - oracle
$ vi .bash_profile
=== Oracle Environment Variables and Aliases ===
export ORACLE_BASE=/oracle/app/oracle;
export ORACLE_HOME=$ORACLE_BASE/product/19c;
export ORACLE_SID=ORA19DB3;
export DB_UNIQUE_NAME=ORA19DB;
export GRID_HOME=/oracle/app/grid/19c;
export GRID_SID=+ASM3;
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;
export DISPLAY=:0.0;
alias oh='cd $ORACLE_HOME;pwd'
alias ss='sqlplus / as sysdba'
stty erase ^H
alias bdump="cd $ORACLE_BASE/diag/rdbms/${DB_UNIQUE_NAME,,}/$ORACLE_SID/trace"
alias alert='vi $ORACLE_BASE/diag/rdbms/${DB_UNIQUE_NAME,,}/$ORACLE_SID/trace/alert_$ORACLE_SID.log'
alias alertf='tail -300f $ORACLE_BASE/diag/rdbms/${DB_UNIQUE_NAME,,}/$ORACLE_SID/trace/alert_$ORACLE_SID.log'
alias listen="vi $ORACLE_BASE/diag/tnslsnr/$(hostname -s)/listener/trace/listener.log"
alias listenf="tail -300f $ORACLE_BASE/diag/tnslsnr/$(hostname -s)/listener/trace/listener.log"
alias ss="sqlplus / as sysdba"
alias imsi="sqlplus imsi/imsi"
alias min='cd /home/oracle/script/min_sql'
alias dbs='cd $ORACLE_HOME/dbs'
alias orat="$ORACLE_HOME/suptools/oratop/oratop / as sysdba -rf"
export NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS'
=== End Oracle Environment ===
export CV_ASSUME_DISTID=8.2

 

 

이제부터 1번 노드에서 수행
패스워드 없는 ssh 접속 설정(grid 오너로 수행, 현재 서버에는 grid 유저 없이 oracle 유저로만 구성함)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
# su - oracle
$ cd $GRID_HOME/oui/prov/resources/scripts
$ ./sshUserSetup.sh -user oracle -hosts "ora19rac1 ora19rac2 ora19rac3" -noPromptPassphrase -advanced
The output of this script is also logged into /tmp/sshUserSetup_2025-07-12-21-06-23.log
Hosts are ora19rac1 ora19rac2 ora19rac3
user is oracle
Platform:- Linux
Checking if the remote hosts are reachable
PING ora19rac1 (192.168.137.161) 56(84) bytes of data.
64 bytes from ora19rac1 (192.168.137.161): icmp_seq=1 ttl=64 time=0.029 ms
64 bytes from ora19rac1 (192.168.137.161): icmp_seq=2 ttl=64 time=0.047 ms
64 bytes from ora19rac1 (192.168.137.161): icmp_seq=3 ttl=64 time=0.058 ms
64 bytes from ora19rac1 (192.168.137.161): icmp_seq=4 ttl=64 time=0.050 ms
64 bytes from ora19rac1 (192.168.137.161): icmp_seq=5 ttl=64 time=0.047 ms
 
--- ora19rac1 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4102ms
rtt min/avg/max/mdev = 0.029/0.046/0.058/0.010 ms
PING ora19rac2 (192.168.137.162) 56(84) bytes of data.
64 bytes from ora19rac2 (192.168.137.162): icmp_seq=1 ttl=64 time=0.237 ms
64 bytes from ora19rac2 (192.168.137.162): icmp_seq=2 ttl=64 time=0.175 ms
64 bytes from ora19rac2 (192.168.137.162): icmp_seq=3 ttl=64 time=0.265 ms
64 bytes from ora19rac2 (192.168.137.162): icmp_seq=4 ttl=64 time=0.238 ms
64 bytes from ora19rac2 (192.168.137.162): icmp_seq=5 ttl=64 time=0.330 ms
 
--- ora19rac2 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4088ms
rtt min/avg/max/mdev = 0.175/0.249/0.330/0.050 ms
PING ora19rac3 (192.168.137.163) 56(84) bytes of data.
64 bytes from ora19rac3 (192.168.137.163): icmp_seq=1 ttl=64 time=0.204 ms
64 bytes from ora19rac3 (192.168.137.163): icmp_seq=2 ttl=64 time=0.330 ms
64 bytes from ora19rac3 (192.168.137.163): icmp_seq=3 ttl=64 time=0.256 ms
64 bytes from ora19rac3 (192.168.137.163): icmp_seq=4 ttl=64 time=0.271 ms
64 bytes from ora19rac3 (192.168.137.163): icmp_seq=5 ttl=64 time=0.341 ms
 
--- ora19rac3 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4087ms
rtt min/avg/max/mdev = 0.204/0.280/0.341/0.052 ms
Remote host reachability check succeeded.
The following hosts are reachable: ora19rac1 ora19rac2 ora19rac3.
The following hosts are not reachable: .
All hosts are reachable. Proceeding further...
firsthost ora19rac1
numhosts 3
The script will setup SSH connectivity from the host ora19rac1 to all
the remote hosts. After the script is executed, the user can use SSH to run
commands on the remote hosts or copy files between this host ora19rac1
and the remote hosts without being prompted for passwords or confirmations.
 
NOTE 1:
As part of the setup procedure, this script will use ssh and scp to copy
files between the local host and the remote hosts. Since the script does not
store passwords, you may be prompted for the passwords during the execution of
the script whenever ssh or scp is invoked.
 
NOTE 2:
AS PER SSH REQUIREMENTS, THIS SCRIPT WILL SECURE THE USER HOME DIRECTORY
AND THE .ssh DIRECTORY BY REVOKING GROUP AND WORLD WRITE PRIVILEGES TO THESE
directories.
 
Do you want to continue and let the script make the above mentioned changes (yes/no)?
yes  <<-- yes 입력
 
The user chose yes
User chose to skip passphrase related questions.
Creating .ssh directory on local host, if not present already
Creating authorized_keys file on local host
Changing permissions on authorized_keys to 644 on local host
Creating known_hosts file on local host
Changing permissions on known_hosts to 644 on local host
Creating config file on local host
If a config file exists already at /home/oracle/.ssh/config, it would be backed up to /home/oracle/.ssh/config.backup.
Creating .ssh directory and setting permissions on remote host ora19rac1
THE SCRIPT WOULD ALSO BE REVOKING WRITE PERMISSIONS FOR group AND others ON THE HOME DIRECTORY FOR oracle. THIS IS AN SSH REQUIREMENT.
The script would create ~oracle/.ssh/config file on remote host ora19rac1. If a config file exists already at ~oracle/.ssh/config, it would be backed up to ~oracle/.ssh/config.backup.
The user may be prompted for a password here since the script would be running SSH on host ora19rac1.
Warning: Permanently added 'ora19rac1,192.168.137.161' (ECDSA) to the list of known hosts.
oracle@ora19rac1's password:  <<-- oracle 유저 pw 입력
Done with creating .ssh directory and setting permissions on remote host ora19rac1.
Creating .ssh directory and setting permissions on remote host ora19rac2
THE SCRIPT WOULD ALSO BE REVOKING WRITE PERMISSIONS FOR group AND others ON THE HOME DIRECTORY FOR oracle. THIS IS AN SSH REQUIREMENT.
The script would create ~oracle/.ssh/config file on remote host ora19rac2. If a config file exists already at ~oracle/.ssh/config, it would be backed up to ~oracle/.ssh/config.backup.
The user may be prompted for a password here since the script would be running SSH on host ora19rac2.
Warning: Permanently added 'ora19rac2,192.168.137.162' (ECDSA) to the list of known hosts.
Done with creating .ssh directory and setting permissions on remote host ora19rac2.
Creating .ssh directory and setting permissions on remote host ora19rac3
THE SCRIPT WOULD ALSO BE REVOKING WRITE PERMISSIONS FOR group AND others ON THE HOME DIRECTORY FOR oracle. THIS IS AN SSH REQUIREMENT.
The script would create ~oracle/.ssh/config file on remote host ora19rac3. If a config file exists already at ~oracle/.ssh/config, it would be backed up to ~oracle/.ssh/config.backup.
The user may be prompted for a password here since the script would be running SSH on host ora19rac3.
Warning: Permanently added 'ora19rac3,192.168.137.163' (ECDSA) to the list of known hosts.
oracle@ora19rac3's password:  <<-- oracle 유저 pw 입력
Done with creating .ssh directory and setting permissions on remote host ora19rac3.
Copying local host public key to the remote host ora19rac1
The user may be prompted for a password or passphrase here since the script would be using SCP for host ora19rac1.
oracle@ora19rac1's password:  <<-- oracle 유저 pw 입력
Done copying local host public key to the remote host ora19rac1
Copying local host public key to the remote host ora19rac2
The user may be prompted for a password or passphrase here since the script would be using SCP for host ora19rac2.
Done copying local host public key to the remote host ora19rac2
Copying local host public key to the remote host ora19rac3
The user may be prompted for a password or passphrase here since the script would be using SCP for host ora19rac3.
oracle@ora19rac3's password:  <<-- oracle 유저 pw 입력
Done copying local host public key to the remote host ora19rac3
Creating keys on remote host ora19rac1 if they do not exist already. This is required to setup SSH on host ora19rac1.
 
Creating keys on remote host ora19rac2 if they do not exist already. This is required to setup SSH on host ora19rac2.
 
Creating keys on remote host ora19rac3 if they do not exist already. This is required to setup SSH on host ora19rac3.
Generating public/private rsa key pair.
Your identification has been saved in .ssh/id_rsa.
Your public key has been saved in .ssh/id_rsa.pub.
The key fingerprint is:
SHA256:Qc+TgLdUY5nuZOV1Sez3VdNW+sNHE4t22hCS5ueTvKI oracle@ora19rac3
The key's randomart image is:
+---[RSA 1024]----+
|       .o.++..oo=|
|      ..o=o=o +=B|
|       o.oBo =o*+|
|        ..+oo.*++|
|        S+  +..+*|
|          .  =  +|
|              o  |
|           . .   |
|         E. .    |
+----[SHA256]-----+
Updating authorized_keys file on remote host ora19rac1
Updating known_hosts file on remote host ora19rac1
Updating authorized_keys file on remote host ora19rac2
Updating known_hosts file on remote host ora19rac2
Updating authorized_keys file on remote host ora19rac3
Updating known_hosts file on remote host ora19rac3
cat: /home/oracle/.ssh/known_hosts.tmp: No such file or directory
cat: /home/oracle/.ssh/authorized_keys.tmp: No such file or directory
SSH setup is complete.
 
------------------------------------------------------------------------
Verifying SSH setup
===================
The script will now run the date command on the remote nodes using ssh
to verify if ssh is setup correctly. IF THE SETUP IS CORRECTLY SETUP,
THERE SHOULD BE NO OUTPUT OTHER THAN THE DATE AND SSH SHOULD NOT ASK FOR
PASSWORDS. If you see any output other than date or are prompted for the
password, ssh is not setup correctly and you will need to resolve the
issue and set up ssh again.
The possible causes for failure could be:
1. The server settings in /etc/ssh/sshd_config file do not allow ssh
for user oracle.
2. The server may have disabled public key based authentication.
3. The client public key on the server may be outdated.
4. ~oracle or ~oracle/.ssh on the remote host may not be owned by oracle.
5. User may not have passed -shared option for shared remote users or
may be passing the -shared option for non-shared remote users.
6. If there is output in addition to the date, but no password is asked,
it may be a security alert shown as part of company policy. Append the
additional text to the <OMS HOME>/sysman/prov/resources/ignoreMessages.txt file.
------------------------------------------------------------------------
--ora19rac1:--
Running /usr/bin/ssh -x -l oracle ora19rac1 date to verify SSH connectivity has been setup from local host to ora19rac1.
IF YOU SEE ANY OTHER OUTPUT BESIDES THE OUTPUT OF THE DATE COMMAND OR IF YOU ARE PROMPTED FOR A PASSWORD HERE, IT MEANS SSH SETUP HAS NOT BEEN SUCCESSFUL. Please note that being prompted for a passphrase may be OK but being prompted for a password is ERROR.
Sat Jul 12 21:06:49 KST 2025
------------------------------------------------------------------------
--ora19rac2:--
Running /usr/bin/ssh -x -l oracle ora19rac2 date to verify SSH connectivity has been setup from local host to ora19rac2.
IF YOU SEE ANY OTHER OUTPUT BESIDES THE OUTPUT OF THE DATE COMMAND OR IF YOU ARE PROMPTED FOR A PASSWORD HERE, IT MEANS SSH SETUP HAS NOT BEEN SUCCESSFUL. Please note that being prompted for a passphrase may be OK but being prompted for a password is ERROR.
Sat Jul 12 21:06:49 KST 2025
------------------------------------------------------------------------
--ora19rac3:--
Running /usr/bin/ssh -x -l oracle ora19rac3 date to verify SSH connectivity has been setup from local host to ora19rac3.
IF YOU SEE ANY OTHER OUTPUT BESIDES THE OUTPUT OF THE DATE COMMAND OR IF YOU ARE PROMPTED FOR A PASSWORD HERE, IT MEANS SSH SETUP HAS NOT BEEN SUCCESSFUL. Please note that being prompted for a passphrase may be OK but being prompted for a password is ERROR.
Sat Jul 12 21:06:41 KST 2025
------------------------------------------------------------------------
------------------------------------------------------------------------
Verifying SSH connectivity has been setup from ora19rac1 to ora19rac1
IF YOU SEE ANY OTHER OUTPUT BESIDES THE OUTPUT OF THE DATE COMMAND OR IF YOU ARE PROMPTED FOR A PASSWORD HERE, IT MEANS SSH SETUP HAS NOT BEEN SUCCESSFUL.
Sat Jul 12 21:06:50 KST 2025
------------------------------------------------------------------------
------------------------------------------------------------------------
Verifying SSH connectivity has been setup from ora19rac1 to ora19rac2
IF YOU SEE ANY OTHER OUTPUT BESIDES THE OUTPUT OF THE DATE COMMAND OR IF YOU ARE PROMPTED FOR A PASSWORD HERE, IT MEANS SSH SETUP HAS NOT BEEN SUCCESSFUL.
Sat Jul 12 21:06:50 KST 2025
------------------------------------------------------------------------
------------------------------------------------------------------------
Verifying SSH connectivity has been setup from ora19rac1 to ora19rac3
IF YOU SEE ANY OTHER OUTPUT BESIDES THE OUTPUT OF THE DATE COMMAND OR IF YOU ARE PROMPTED FOR A PASSWORD HERE, IT MEANS SSH SETUP HAS NOT BEEN SUCCESSFUL.
Sat Jul 12 21:06:42 KST 2025
------------------------------------------------------------------------
-Verification from complete-
SSH verification complete.

설정 완료됨

 

 

각 서버별 ssh 시 패스워드가 필요없는지 확인
hostname 명령어로 확인

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#1번 노드 => 2번 노드, 3번 노드 ssh 접속 확인
[oracle@ora19rac1 ~]$ ssh ora19rac2 hostname
ora19rac2
[oracle@ora19rac1 ~]$ ssh ora19rac3 hostname
ora19rac3
 
#2번 노드 => 1번 노드, 3번 노드 ssh 접속 확인
[oracle@ora19rac2 ~]$ ssh ora19rac1 hostname
ora19rac1
[oracle@ora19rac2 ~]$ ssh ora19rac3 hostname
ora19rac3
 
#3번 노드 => 1번 노드, 2번 노드 ssh 접속 확인
[oracle@ora19rac3 ~]$ ssh ora19rac1 hostname
ora19rac1
[oracle@ora19rac3 ~]$ ssh ora19rac2 hostname
ora19rac2

모두 정상

 

 

grid 노드 추가 검증(1번 노드에서 수행)
successful로 나와야함

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
$ $GRID_HOME/bin/cluvfy stage -pre nodeadd -n ora19rac3 -verbose
 
Performing following verification checks ...
 
  Physical Memory ...
  Node Name     Available                 Required                  Status
  ------------  ------------------------  ------------------------  ----------
  ora19rac3     9.7238GB (1.0196192E7KB)  8GB (8388608.0KB)         passed
  ora19rac1     9.7063GB (1.0177756E7KB)  8GB (8388608.0KB)         passed
  Physical Memory ...PASSED
  Available Physical Memory ...
  Node Name     Available                 Required                  Status
  ------------  ------------------------  ------------------------  ----------
  ora19rac3     8.1884GB (8586116.0KB)    50MB (51200.0KB)          passed
  ora19rac1     4.5539GB (4775092.0KB)    50MB (51200.0KB)          passed
  Available Physical Memory ...PASSED
  Swap Size ...
  Node Name     Available                 Required                  Status
  ------------  ------------------------  ------------------------  ----------
  ora19rac3     10GB (1.0485752E7KB)      9.7238GB (1.0196192E7KB)  passed
  ora19rac1     10GB (1.0485752E7KB)      9.7063GB (1.0177756E7KB)  passed
  Swap Size ...PASSED
  Free Space: ora19rac3:/usr,ora19rac3:/var,ora19rac3:/etc,ora19rac3:/oracle/app/grid/19c,ora19rac3:/sbin,ora19rac3:/tmp ...
  Path              Node Name     Mount point   Available     Required      Status
  ----------------  ------------  ------------  ------------  ------------  ------------
  /usr              ora19rac3     /             86.7236GB     25MB          passed
  /var              ora19rac3     /             86.7236GB     5MB           passed
  /etc              ora19rac3     /             86.7236GB     25MB          passed
  /oracle/app/grid/19c  ora19rac3     /             86.7236GB     6.9GB         passed
  /sbin             ora19rac3     /             86.7236GB     10MB          passed
  /tmp              ora19rac3     /             86.7236GB     1GB           passed
  Free Space: ora19rac3:/usr,ora19rac3:/var,ora19rac3:/etc,ora19rac3:/oracle/app/grid/19c,ora19rac3:/sbin,ora19rac3:/tmp ...PASSED
  Free Space: ora19rac1:/usr,ora19rac1:/var,ora19rac1:/etc,ora19rac1:/oracle/app/grid/19c,ora19rac1:/sbin,ora19rac1:/tmp ...
  Path              Node Name     Mount point   Available     Required      Status
  ----------------  ------------  ------------  ------------  ------------  ------------
  /usr              ora19rac1     /             24.1934GB     25MB          passed
  /var              ora19rac1     /             24.1934GB     5MB           passed
  /etc              ora19rac1     /             24.1934GB     25MB          passed
  /oracle/app/grid/19c  ora19rac1     /             24.1934GB     6.9GB         passed
  /sbin             ora19rac1     /             24.1934GB     10MB          passed
  /tmp              ora19rac1     /             24.1934GB     1GB           passed
  Free Space: ora19rac1:/usr,ora19rac1:/var,ora19rac1:/etc,ora19rac1:/oracle/app/grid/19c,ora19rac1:/sbin,ora19rac1:/tmp ...PASSED
  User Existence: oracle ...
  Node Name     Status                    Comment
  ------------  ------------------------  ------------------------
  ora19rac3     passed                    exists(54321)
  ora19rac1     passed                    exists(54321)
 
    Users With Same UID: 54321 ...PASSED
  User Existence: oracle ...PASSED
  User Existence: root ...
  Node Name     Status                    Comment
  ------------  ------------------------  ------------------------
  ora19rac3     passed                    exists(0)
  ora19rac1     passed                    exists(0)
 
    Users With Same UID: 0 ...PASSED
  User Existence: root ...PASSED
  Group Existence: dba ...
  Node Name     Status                    Comment
  ------------  ------------------------  ------------------------
  ora19rac3     passed                    exists
  ora19rac1     passed                    exists
  Group Existence: dba ...PASSED
  Group Existence: oinstall ...
  Node Name     Status                    Comment
  ------------  ------------------------  ------------------------
  ora19rac3     passed                    exists
  ora19rac1     passed                    exists
  Group Existence: oinstall ...PASSED
  Group Membership: oinstall ...
  Node Name         User Exists   Group Exists  User in Group  Status
  ----------------  ------------  ------------  ------------  ----------------
  ora19rac3         yes           yes           yes           passed
  ora19rac1         yes           yes           yes           passed
  Group Membership: oinstall ...PASSED
  Group Membership: dba ...
  Node Name         User Exists   Group Exists  User in Group  Status
  ----------------  ------------  ------------  ------------  ----------------
  ora19rac3         yes           yes           yes           passed
  ora19rac1         yes           yes           yes           passed
  Group Membership: dba ...PASSED
  Run Level ...
  Node Name     run level                 Required                  Status
  ------------  ------------------------  ------------------------  ----------
  ora19rac3     5                         3,5,3,5                   passed
  ora19rac1     5                         3,5,3,5                   passed
  Run Level ...PASSED
  Hard Limit: maximum open file descriptors ...
  Node Name         Type          Available     Required      Status
  ----------------  ------------  ------------  ------------  ----------------
  ora19rac3         hard          65536         65536         passed
  ora19rac1         hard          65536         65536         passed
  Hard Limit: maximum open file descriptors ...PASSED
  Soft Limit: maximum open file descriptors ...
  Node Name         Type          Available     Required      Status
  ----------------  ------------  ------------  ------------  ----------------
  ora19rac3         soft          1024          1024          passed
  ora19rac1         soft          1024          1024          passed
  Soft Limit: maximum open file descriptors ...PASSED
  Hard Limit: maximum user processes ...
  Node Name         Type          Available     Required      Status
  ----------------  ------------  ------------  ------------  ----------------
  ora19rac3         hard          16384         16384         passed
  ora19rac1         hard          16384         16384         passed
  Hard Limit: maximum user processes ...PASSED
  Soft Limit: maximum user processes ...
  Node Name         Type          Available     Required      Status
  ----------------  ------------  ------------  ------------  ----------------
  ora19rac3         soft          16384         2047          passed
  ora19rac1         soft          16384         2047          passed
  Soft Limit: maximum user processes ...PASSED
  Soft Limit: maximum stack size ...
  Node Name         Type          Available     Required      Status
  ----------------  ------------  ------------  ------------  ----------------
  ora19rac3         soft          10240         10240         passed
  ora19rac1         soft          10240         10240         passed
  Soft Limit: maximum stack size ...PASSED
  Users With Same UID: 0 ...PASSED
  Current Group ID ...PASSED
  Root user consistency ...
  Node Name                             Status
  ------------------------------------  ------------------------
  ora19rac3                             passed
  ora19rac1                             passed
  Root user consistency ...PASSED
  Package: cvuqdisk-1.0.10-1 ...
  Node Name     Available                 Required                  Status
  ------------  ------------------------  ------------------------  ----------
  ora19rac3     cvuqdisk-1.0.10-1         cvuqdisk-1.0.10-1         passed
  ora19rac2     cvuqdisk-1.0.10-1         cvuqdisk-1.0.10-1         passed
  ora19rac1     cvuqdisk-1.0.10-1         cvuqdisk-1.0.10-1         passed
  Package: cvuqdisk-1.0.10-1 ...PASSED
  Node Addition ...
    CRS Integrity ...PASSED
    Clusterware Version Consistency ...PASSED
    '/oracle/app/grid/19c' ...PASSED
  Node Addition ...PASSED
  Host name ...PASSED
  Node Connectivity ...
    Hosts File ...
  Node Name                             Status
  ------------------------------------  ------------------------
  ora19rac2                             passed
  ora19rac1                             passed
  ora19rac3                             passed
    Hosts File ...PASSED
 
Interface information for node "ora19rac2"
 
 Name   IP Address      Subnet          Gateway         Def. Gateway    HW Address        MTU
 ------ --------------- --------------- --------------- --------------- ----------------- ------
 ens192 192.168.137.162 192.168.137.0   0.0.0.0         192.168.137.2     00:50:56:A8:2F:41 1500
 ens192 192.168.137.62  192.168.137.0   0.0.0.0         192.168.137.2     00:50:56:A8:2F:41 1500
 ens224 10.10.10.120    10.10.10.0      0.0.0.0         192.168.137.2     00:50:56:A8:CE:36 1500
 
Interface information for node "ora19rac3"
 
 Name   IP Address      Subnet          Gateway         Def. Gateway    HW Address        MTU
 ------ --------------- --------------- --------------- --------------- ----------------- ------
 ens192 192.168.137.163 192.168.137.0   0.0.0.0         192.168.137.2     00:50:56:A8:85:9A 1500
 ens224 10.10.10.130    10.10.10.0      0.0.0.0         192.168.137.2     00:50:56:A8:D3:66 1500
 
Interface information for node "ora19rac1"
 
 Name   IP Address      Subnet          Gateway         Def. Gateway    HW Address        MTU
 ------ --------------- --------------- --------------- --------------- ----------------- ------
 ens192 192.168.137.161 192.168.137.0   0.0.0.0         192.168.137.2     00:50:56:A8:7C:06 1500
 ens192 192.168.137.200 192.168.137.0   0.0.0.0         192.168.137.2     00:50:56:A8:7C:06 1500
 ens192 192.168.137.61  192.168.137.0   0.0.0.0         192.168.137.2     00:50:56:A8:7C:06 1500
 ens224 10.10.10.110    10.10.10.0      0.0.0.0         192.168.137.2     00:50:56:A8:7B:FB 1500
 
Check: MTU consistency on the private interfaces of subnet "10.10.10.0"
 
  Node              Name          IP Address    Subnet        MTU
  ----------------  ------------  ------------  ------------  ----------------
  ora19rac2         ens224        10.10.10.120  10.10.10.0    1500
  ora19rac3         ens224        10.10.10.130  10.10.10.0    1500
  ora19rac1         ens224        10.10.10.110  10.10.10.0    1500
 
Check: MTU consistency of the subnet "192.168.137.0".
 
  Node              Name          IP Address    Subnet        MTU
  ----------------  ------------  ------------  ------------  ----------------
  ora19rac2         ens192        192.168.137.162  192.168.137.0  1500
  ora19rac2         ens192        192.168.137.62  192.168.137.0  1500
  ora19rac3         ens192        192.168.137.163  192.168.137.0  1500
  ora19rac1         ens192        192.168.137.161  192.168.137.0  1500
  ora19rac1         ens192        192.168.137.200  192.168.137.0  1500
  ora19rac1         ens192        192.168.137.61  192.168.137.0  1500
 
  Source                          Destination                     Connected?
  ------------------------------  ------------------------------  ----------------
  ora19rac1[ens224:10.10.10.110]  ora19rac3[ens224:10.10.10.130]  yes
  ora19rac1[ens224:10.10.10.110]  ora19rac2[ens224:10.10.10.120]  yes
  ora19rac3[ens224:10.10.10.130]  ora19rac2[ens224:10.10.10.120]  yes
 
  Source                          Destination                     Connected?
  ------------------------------  ------------------------------  ----------------
  ora19rac1[ens192:192.168.137.161]  ora19rac2[ens192:192.168.137.62]  yes
  ora19rac1[ens192:192.168.137.161]  ora19rac3[ens192:192.168.137.163]  yes
  ora19rac1[ens192:192.168.137.161]  ora19rac2[ens192:192.168.137.162]  yes
  ora19rac1[ens192:192.168.137.161]  ora19rac1[ens192:192.168.137.200]  yes
  ora19rac1[ens192:192.168.137.161]  ora19rac1[ens192:192.168.137.61]  yes
  ora19rac2[ens192:192.168.137.62]  ora19rac3[ens192:192.168.137.163]  yes
  ora19rac2[ens192:192.168.137.62]  ora19rac2[ens192:192.168.137.162]  yes
  ora19rac2[ens192:192.168.137.62]  ora19rac1[ens192:192.168.137.200]  yes
  ora19rac2[ens192:192.168.137.62]  ora19rac1[ens192:192.168.137.61]  yes
  ora19rac3[ens192:192.168.137.163]  ora19rac2[ens192:192.168.137.162]  yes
  ora19rac3[ens192:192.168.137.163]  ora19rac1[ens192:192.168.137.200]  yes
  ora19rac3[ens192:192.168.137.163]  ora19rac1[ens192:192.168.137.61]  yes
  ora19rac2[ens192:192.168.137.162]  ora19rac1[ens192:192.168.137.200]  yes
  ora19rac2[ens192:192.168.137.162]  ora19rac1[ens192:192.168.137.61]  yes
  ora19rac1[ens192:192.168.137.200]  ora19rac1[ens192:192.168.137.61]  yes
    Check that maximum (MTU) size packet goes through subnet ...PASSED
    subnet mask consistency for subnet "10.10.10.0" ...PASSED
    subnet mask consistency for subnet "192.168.137.0" ...PASSED
  Node Connectivity ...PASSED
  Multicast or broadcast check ...
Checking subnet "10.10.10.0" for multicast communication with multicast group "224.0.0.251"
  Multicast or broadcast check ...PASSED
  ASM Integrity ...PASSED
  Device Checks for ASM ...Disks "/dev/oracleasm/disks/DATA01,/dev/oracleasm/disks/RECO02,/dev/oracleasm/disks/VOTE1,/dev/oracleasm/disks/VOTE2,/dev/oracleasm/disks/VOTE3,/dev/oracleasm/disks/OCR1,/dev/oracleasm/disks/OCR2,/dev/oracleasm/disks/OCR3" are managed by ASM.
  Device Checks for ASM ...PASSED
  Database home availability ...PASSED
  ASMLib installation and configuration verification. ...
    '/etc/init.d/oracleasm' ...PASSED
    '/dev/oracleasm' ...PASSED
    '/etc/sysconfig/oracleasm' ...PASSED
 
  Node Name                             Status
  ------------------------------------  ------------------------
  ora19rac1                             passed
  ora19rac3                             passed
  ASMLib installation and configuration verification. ...PASSED
  OCR Integrity ...PASSED
  Time zone consistency ...PASSED
  Network Time Protocol (NTP) ...PASSED
  User Not In Group "root": oracle ...
  Node Name     Status                    Comment
  ------------  ------------------------  ------------------------
  ora19rac3     passed                    does not exist
  ora19rac1     passed                    does not exist
  User Not In Group "root": oracle ...PASSED
  Time offset between nodes ...PASSED
  resolv.conf Integrity ...
  Node Name                             Status
  ------------------------------------  ------------------------
  ora19rac3                             passed
  ora19rac1                             passed
 
checking response for name "ora19rac3" from each of the name servers specified
in "/etc/resolv.conf"
 
  Node Name     Source                    Comment                   Status
  ------------  ------------------------  ------------------------  ----------
  ora19rac3     8.8.8.8                   IPv4                      passed
 
checking response for name "ora19rac1" from each of the name servers specified
in "/etc/resolv.conf"
 
  Node Name     Source                    Comment                   Status
  ------------  ------------------------  ------------------------  ----------
  ora19rac1     8.8.8.8                   IPv4                      passed
  resolv.conf Integrity ...PASSED
  DNS/NIS name service ...PASSED
  User Equivalence ...
  Node Name                             Status
  ------------------------------------  ------------------------
  ora19rac3                             passed
  ora19rac2                             passed
  User Equivalence ...PASSED
  Software home: /oracle/app/grid/19c ...
  Node Name     Status                    Comment
  ------------  ------------------------  ------------------------
  ora19rac1     passed                    1220 files verified
  Software home: /oracle/app/grid/19c ...PASSED
  /dev/shm mounted as temporary file system ...PASSED
  zeroconf check ...PASSED
 
Pre-check for node addition was successful.
 
CVU operation performed:      stage -pre nodeadd
Date:                         Jul 12, 2025 9:09:53 PM
CVU version:                  19.27.0.0.0 (041025x8664)
Clusterware version:          19.0.0.0.0
CVU home:                     /oracle/app/grid/19c
Grid home:                    /oracle/app/grid/19c
User:                         oracle
Operating system:             Linux5.4.17-2136.342.5.3.el8uek.x86_64

모든 정보가 정상임(successful 및 PASSED)

 

 

grid 노드 추가(gui)(1번 노드에서 수행)

1
2
$ cd $GRID_HOME
$ ./gridSetup.sh

 

 

Add more nodes to the cluster 선택

 

 

Add 선택

 

 

추가될 노드 정보 입력

 

 

SSH connectivity 선택 후 패스워드 입력 및 Test 선택

 

 

OK 선택

 

 

Yes 선택

 

 

요구사항 체크중

 

 

Summit 선택

 

 

3번 노드에 grid 복제중

 

 

아래 표시된 스크립트 3번 노드의 root 계정에서 순차적으로 수행

 

 

2가지 스크립트 root 유저로 수행(신규 노드에서 수행)
orainstRoot.sh 수행

1
2
3
4
5
6
7
/oracle/app/oraInventory/orainstRoot.sh
Changing permissions of /oracle/app/oraInventory.
Adding read,write permissions for group.
Removing read,write,execute permissions for world.
 
Changing groupname of /oracle/app/oraInventory to oinstall.
The execution of the script is complete.

 

 

root.sh 수행

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
/oracle/app/grid/19c/root.sh
Performing root user operation.
 
The following environment variables are set as:
    ORACLE_OWNER= oracle
    ORACLE_HOME=  /oracle/app/grid/19c
 
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 script.
Now product-specific root actions will be performed.
Relinking oracle with rac_on option
Using configuration parameter file: /oracle/app/grid/19c/crs/install/crsconfig_params
The log of current session can be found at:
  /oracle/app/oracle/crsdata/ora19rac3/crsconfig/rootcrs_ora19rac3_2025-07-13_00-04-13AM.log
2025/07/13 00:04:16 CLSRSC-594: Executing installation step 1 of 19: 'ValidateEnv'.
2025/07/13 00:04:17 CLSRSC-594: Executing installation step 2 of 19: 'CheckFirstNode'.
2025/07/13 00:04:17 CLSRSC-594: Executing installation step 3 of 19: 'GenSiteGUIDs'.
2025/07/13 00:04:19 CLSRSC-594: Executing installation step 4 of 19: 'SetupOSD'.
Redirecting to /bin/systemctl restart rsyslog.service
2025/07/13 00:04:19 CLSRSC-594: Executing installation step 5 of 19: 'CheckCRSConfig'.
2025/07/13 00:04:21 CLSRSC-594: Executing installation step 6 of 19: 'SetupLocalGPNP'.
2025/07/13 00:04:22 CLSRSC-594: Executing installation step 7 of 19: 'CreateRootCert'.
2025/07/13 00:04:22 CLSRSC-594: Executing installation step 8 of 19: 'ConfigOLR'.
2025/07/13 00:04:33 CLSRSC-594: Executing installation step 9 of 19: 'ConfigCHMOS'.
2025/07/13 00:04:33 CLSRSC-594: Executing installation step 10 of 19: 'CreateOHASD'.
2025/07/13 00:04:35 CLSRSC-594: Executing installation step 11 of 19: 'ConfigOHASD'.
2025/07/13 00:04:43 CLSRSC-330: Adding Clusterware entries to file 'oracle-ohasd.service'
2025/07/13 00:05:05 CLSRSC-594: Executing installation step 12 of 19: 'SetupTFA'.
2025/07/13 00:05:05 CLSRSC-594: Executing installation step 13 of 19: 'InstallAFD'.
2025/07/13 00:05:05 CLSRSC-594: Executing installation step 14 of 19: 'InstallACFS'.
2025/07/13 00:05:39 CLSRSC-594: Executing installation step 15 of 19: 'InstallKA'.
2025/07/13 00:05:41 CLSRSC-594: Executing installation step 16 of 19: 'InitConfig'.
2025/07/13 00:05:49 CLSRSC-594: Executing installation step 17 of 19: 'StartCluster'.
2025/07/13 00:07:40 CLSRSC-4002: Successfully installed Oracle Trace File Analyzer (TFA) Collector.
2025/07/13 00:07:54 CLSRSC-343: Successfully started Oracle Clusterware stack
2025/07/13 00:07:54 CLSRSC-594: Executing installation step 18 of 19: 'ConfigNode'.
clscfg: EXISTING configuration version 19 detected.
Successfully accumulated necessary OCR keys.
Creating OCR keys for user 'root', privgrp 'root'..
Operation successful.
2025/07/13 00:08:26 CLSRSC-594: Executing installation step 19 of 19: 'PostConfig'.
2025/07/13 00:09:08 CLSRSC-325: Configure Oracle Grid Infrastructure for a Cluster ... succeeded

 

 

수행 완료 후 OK 선택

 

 

Close 선택

 

 

crs 상태 확인

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# crsctl stat res -t
--------------------------------------------------------------------------------
Name           Target  State        Server                   State details
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.LISTENER.lsnr
               ONLINE  ONLINE       ora19rac1                STABLE
               ONLINE  ONLINE       ora19rac2                STABLE
               ONLINE  ONLINE       ora19rac3                STABLE
ora.chad
               ONLINE  ONLINE       ora19rac1                STABLE
               ONLINE  ONLINE       ora19rac2                STABLE
               ONLINE  ONLINE       ora19rac3                STABLE
ora.net1.network
               ONLINE  ONLINE       ora19rac1                STABLE
               ONLINE  ONLINE       ora19rac2                STABLE
               ONLINE  ONLINE       ora19rac3                STABLE
ora.ons
               ONLINE  ONLINE       ora19rac1                STABLE
               ONLINE  ONLINE       ora19rac2                STABLE
               ONLINE  ONLINE       ora19rac3                STABLE
ora.proxy_advm
               OFFLINE OFFLINE      ora19rac1                STABLE
               OFFLINE OFFLINE      ora19rac2                STABLE
               OFFLINE OFFLINE      ora19rac3                STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.ASMNET1LSNR_ASM.lsnr(ora.asmgroup)
      1        ONLINE  ONLINE       ora19rac1                STABLE
      2        ONLINE  ONLINE       ora19rac2                STABLE
      3        ONLINE  ONLINE       ora19rac3                STABLE
ora.DATA.dg(ora.asmgroup)
      1        ONLINE  ONLINE       ora19rac1                STABLE
      2        ONLINE  ONLINE       ora19rac2                STABLE
      3        ONLINE  ONLINE       ora19rac3                STABLE
ora.LISTENER_SCAN1.lsnr
      1        ONLINE  ONLINE       ora19rac1                STABLE
ora.OCR.dg(ora.asmgroup)
      1        ONLINE  ONLINE       ora19rac1                STABLE
      2        ONLINE  ONLINE       ora19rac2                STABLE
      3        ONLINE  ONLINE       ora19rac3                STABLE
ora.RECO.dg(ora.asmgroup)
      1        ONLINE  ONLINE       ora19rac1                STABLE
      2        ONLINE  ONLINE       ora19rac2                STABLE
      3        ONLINE  ONLINE       ora19rac3                STABLE
ora.VOTE.dg(ora.asmgroup)
      1        ONLINE  ONLINE       ora19rac1                STABLE
      2        ONLINE  ONLINE       ora19rac2                STABLE
      3        ONLINE  ONLINE       ora19rac3                STABLE
ora.asm(ora.asmgroup)
      1        ONLINE  ONLINE       ora19rac1                Started,STABLE
      2        ONLINE  ONLINE       ora19rac2                Started,STABLE
      3        ONLINE  ONLINE       ora19rac3                Started,STABLE
ora.asmnet1.asmnetwork(ora.asmgroup)
      1        ONLINE  ONLINE       ora19rac1                STABLE
      2        ONLINE  ONLINE       ora19rac2                STABLE
      3        ONLINE  ONLINE       ora19rac3                STABLE
ora.cvu
      1        ONLINE  ONLINE       ora19rac1                STABLE
ora.ora11db.db
      1        ONLINE  ONLINE       ora19rac1                Open,HOME=/oracle/ap
                                                             p/oracle/product/19c
                                                             ,STABLE
      2        ONLINE  ONLINE       ora19rac2                Open,HOME=/oracle/ap
                                                             p/oracle/product/19c
                                                             ,STABLE
ora.ora19db.db
      1        ONLINE  ONLINE       ora19rac1                Open,HOME=/oracle/ap
                                                             p/oracle/product/19c
                                                             ,STABLE
      2        ONLINE  ONLINE       ora19rac2                Open,HOME=/oracle/ap
                                                             p/oracle/product/19c
                                                             ,STABLE
ora.ora19rac1.vip
      1        ONLINE  ONLINE       ora19rac1                STABLE
ora.ora19rac2.vip
      1        ONLINE  ONLINE       ora19rac2                STABLE
ora.ora19rac3.vip
      1        ONLINE  ONLINE       ora19rac3                STABLE
ora.qosmserver
      1        ONLINE  ONLINE       ora19rac1                STABLE
ora.scan1.vip
      1        ONLINE  ONLINE       ora19rac1                STABLE
--------------------------------------------------------------------------------

각 리소스에 신규 3번 노드가 추가됨, db는 아직 2번 노드까지만 존재함

 

 

db 노드 추가(gui)(1번 노드에서 수행)

1
2
$ cd $ORACLE_HOME/addnode
$ ./addnode.sh "CLUSTER_NEW_NODES=ora19rac3"

 

 

3번 노드 선택 후 Next

 

 

요구사항 체크중

 

 

Summit 선택

 

 

db 엔진 복제중

 

 

3번 노드에서 root 유저로 스크립트 수행

 

 

스크립트 root 유저로 수행(신규 노드에서 수행)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/oracle/app/oracle/product/19c/root.sh
Performing root user operation.
 
The following environment variables are set as:
    ORACLE_OWNER= oracle
    ORACLE_HOME=  /oracle/app/oracle/product/19c
 
Enter the full pathname of the local bin directory: [/usr/local/bin]:
The contents of "dbhome" have not changed. No need to overwrite.
The contents of "oraenv" have not changed. No need to overwrite.
The contents of "coraenv" have not changed. No need to overwrite.
 
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 script.
Now product-specific root actions will be performed.

 

 

수행 완료 후 OK 선택

 

 

Close 선택

 

 

grid에 인스턴스 추가(gui)(1번 노드에서 수행)

1
2
$ cd $ORACLE_HOME/bin/
$ ./dbca

 

 

Oracle RAC database instance management 선택

 

 

Add an instance 선택

 

 

ORA19DB 선택 후 sys 계정 및 패스워드 입력 후 Next

 

 

인스턴스 이름 작성 후 Next

 

 

Finish 선택

분명 이전페이지에서 대문자로 인스턴스 이름을 작성했지만 Summary에는 소문자로 표시됨

 

 

인스턴스 추가중

 

 

Close 선택

 

 

crs 상태 확인

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
# crsctl stat res -t
--------------------------------------------------------------------------------
Name           Target  State        Server                   State details
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.LISTENER.lsnr
               ONLINE  ONLINE       ora19rac1                STABLE
               ONLINE  ONLINE       ora19rac2                STABLE
               ONLINE  ONLINE       ora19rac3                STABLE
ora.chad
               ONLINE  ONLINE       ora19rac1                STABLE
               ONLINE  ONLINE       ora19rac2                STABLE
               ONLINE  ONLINE       ora19rac3                STABLE
ora.net1.network
               ONLINE  ONLINE       ora19rac1                STABLE
               ONLINE  ONLINE       ora19rac2                STABLE
               ONLINE  ONLINE       ora19rac3                STABLE
ora.ons
               ONLINE  ONLINE       ora19rac1                STABLE
               ONLINE  ONLINE       ora19rac2                STABLE
               ONLINE  ONLINE       ora19rac3                STABLE
ora.proxy_advm
               OFFLINE OFFLINE      ora19rac1                STABLE
               OFFLINE OFFLINE      ora19rac2                STABLE
               OFFLINE OFFLINE      ora19rac3                STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.ASMNET1LSNR_ASM.lsnr(ora.asmgroup)
      1        ONLINE  ONLINE       ora19rac1                STABLE
      2        ONLINE  ONLINE       ora19rac2                STABLE
      3        ONLINE  ONLINE       ora19rac3                STABLE
ora.DATA.dg(ora.asmgroup)
      1        ONLINE  ONLINE       ora19rac1                STABLE
      2        ONLINE  ONLINE       ora19rac2                STABLE
      3        ONLINE  ONLINE       ora19rac3                STABLE
ora.LISTENER_SCAN1.lsnr
      1        ONLINE  ONLINE       ora19rac1                STABLE
ora.OCR.dg(ora.asmgroup)
      1        ONLINE  ONLINE       ora19rac1                STABLE
      2        ONLINE  ONLINE       ora19rac2                STABLE
      3        ONLINE  ONLINE       ora19rac3                STABLE
ora.RECO.dg(ora.asmgroup)
      1        ONLINE  ONLINE       ora19rac1                STABLE
      2        ONLINE  ONLINE       ora19rac2                STABLE
      3        ONLINE  ONLINE       ora19rac3                STABLE
ora.VOTE.dg(ora.asmgroup)
      1        ONLINE  ONLINE       ora19rac1                STABLE
      2        ONLINE  ONLINE       ora19rac2                STABLE
      3        ONLINE  ONLINE       ora19rac3                STABLE
ora.asm(ora.asmgroup)
      1        ONLINE  ONLINE       ora19rac1                Started,STABLE
      2        ONLINE  ONLINE       ora19rac2                Started,STABLE
      3        ONLINE  ONLINE       ora19rac3                Started,STABLE
ora.asmnet1.asmnetwork(ora.asmgroup)
      1        ONLINE  ONLINE       ora19rac1                STABLE
      2        ONLINE  ONLINE       ora19rac2                STABLE
      3        ONLINE  ONLINE       ora19rac3                STABLE
ora.cvu
      1        ONLINE  ONLINE       ora19rac1                STABLE
ora.ora11db.db
      1        ONLINE  ONLINE       ora19rac1                Open,HOME=/oracle/ap
                                                             p/oracle/product/19c
                                                             ,STABLE
      2        ONLINE  ONLINE       ora19rac2                Open,HOME=/oracle/ap
                                                             p/oracle/product/19c
                                                             ,STABLE
ora.ora19db.db
      1        ONLINE  ONLINE       ora19rac1                Open,HOME=/oracle/ap
                                                             p/oracle/product/19c
                                                             ,STABLE
      2        ONLINE  ONLINE       ora19rac2                Open,HOME=/oracle/ap
                                                             p/oracle/product/19c
                                                             ,STABLE
      3        ONLINE  ONLINE       ora19rac3                Open,HOME=/oracle/ap
                                                             p/oracle/product/19c
                                                             ,STABLE
ora.ora19rac1.vip
      1        ONLINE  ONLINE       ora19rac1                STABLE
ora.ora19rac2.vip
      1        ONLINE  ONLINE       ora19rac2                STABLE
ora.ora19rac3.vip
      1        ONLINE  ONLINE       ora19rac3                STABLE
ora.qosmserver
      1        ONLINE  ONLINE       ora19rac1                STABLE
ora.scan1.vip
      1        ONLINE  ONLINE       ora19rac1                STABLE
--------------------------------------------------------------------------------

ora19db에 3번 인스턴스가 정상적으로 추가됨, 업그레이드 테스트시 사용한 ora11db도 존재하지만 본문에서는 ora19db에만 인스턴스를 추가함

 

 

db 구성 상태 확인

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
$ srvctl config database -d ora19db
Database unique name: ORA19DB
Database name: ORA19DB
Oracle home: /oracle/app/oracle/product/19c
Oracle user: oracle
Spfile: +DATA/ORA19DB/PARAMETERFILE/spfile.294.1203586513
Password file: +DATA/ORA19DB/PASSWORD/pwdora19db.270.1201188441
Domain:
Start options: open
Stop options: immediate
Database role: PRIMARY
Management policy: AUTOMATIC
Server pools:
Disk Groups: DATA
Mount point paths:
Services:
Type: RAC
Start concurrency:
Stop concurrency:
OSDBA group: dba
OSOPER group: dba
Database instances: ORA19DB1,ORA19DB2,ora19db3
Configured nodes: ora19rac1,ora19rac2,ora19rac3
CSS critical: no
CPU count: 0
Memory target: 0
Maximum memory: 0
Default network number for database services:
Database is administrator managed

정상적으로 3번 노드도 추가됨, 다만 3번 노드 인스턴스 명이 소문자로 추가됨

 

 

결론 :
본문과 같은 gui 방식으로도 rac 환경에서 노드 추가 작업을 온라인으로 진행할 수 있음

 

 

참조 : 

https://docs.oracle.com/en/database/oracle/oracle-database/19/cwadd/adding-and-deleting-cluster-nodes.html#GUID-929C0CD9-9B67-45D6-B864-5ED3B47FE458
https://docs.oracle.com/en/database/oracle/oracle-database/19/cwadd/adding-and-deleting-cluster-nodes.html#GUID-25D8D7A2-5240-401F-A998-00C4B525413F
https://jack-of-all-trades.tistory.com/447
https://pskbigstar.tistory.com/entry/RAC-노드-추가OU
https://gyh214.tistory.com/entry/RAC%EC%9A%B4%EC%98%81%EC%A4%91-RAC-node-%EC%B6%94%EA%B0%80%ED%95%98%EA%B8%B013-%ED%99%98%EA%B2%BD-VMware-%EC%8B%A4%EC%8A%B5%ED%99%98%EA%B2%BD-11gR2-OEL2618-238el5PAE
https://gyh214.tistory.com/entry/RAC%EC%9A%B4%EC%98%81%EC%A4%91-RAC-node-%EC%B6%94%EA%B0%80%ED%95%98%EA%B8%B023-%ED%99%98%EA%B2%BD-VMware-%EC%8B%A4%EC%8A%B5%ED%99%98%EA%B2%BD-11gR2-OEL2618-238el5PAE
https://gyh214.tistory.com/entry/RAC%EC%9A%B4%EC%98%81%EC%A4%91-RAC-node-%EC%B6%94%EA%B0%80%ED%95%98%EA%B8%B033-%ED%99%98%EA%B2%BD-VMware-%EC%8B%A4%EC%8A%B5%ED%99%98%EA%B2%BD-11gR2-OEL2618-238el5PAE
RAC: How to delete and add a node in 19c RAC (Doc ID 3019970.1)
https://positivemh.tistory.com/307
https://positivemh.tistory.com/761
https://positivemh.tistory.com/306