OS 환경 : Oracle Linux 9.6 (64bit)
DB 환경 : Oracle Database 19.28.0.0
방법 : Oracle Linux 9.6에 Oracle 19c RAC 설치 가이드
본문에서는 Oracle Linux 9.6에 Oracle 19c RAC를 설치하는 방법을 설명함(oracleasm library 3버전을 이용함)
별도의 유저를 나누지 않고 oracle 유저 하나로만 grid, db를 모두 설치함
그리고 Linux 9 버전에 19c를 설치하는 경우 최소 RU가 19.19이기때문에 꼭 19.19 이상을 설치해줘야함
OS 설치는 아래 게시물 참조
Oracle linux 9.6 설치 가이드( https://positivemh.tistory.com/1284 )
1번 노드 hostname : oel19db1
2번 노드 hostname : oel19db2
*본문에 2번노드 표시가 없으면 모두 1번 노드에서 작업
하드웨어 설정
Oracle Linux 9.6 설치 가이드를 보고 설치한 경우
OEL9.6 폴더에 설치했을텐데
19c_rac라는 폴더를 하나 만들어서 그안에 폴더를 통째로 이동시켜줌
OEL9.6 폴더는 oel19db1로 폴더명을 변경시켜주고 하나 더 복제해서 oel19db2로 폴더명을 변경시켜줌
19c_rac 폴더에 아래와 같이 storage 라는 폴더도 생성해줌(공유 스토리지용 경로로 사용예정)

.vmx파일을 실행하면 vmware가 실행됨

Edit virtual machine settings 선택

메모리 10gb로 수정(8gb도 가능)

Processors 2, 2로 변경(1, 1도 가능) 이후 Add 선택

Hard Disk 선택

SCSI 선택

Create a new virtual disk 선택

100GB 입력 후 Store virtual disk as a single file 선택

추가 디스크 위치 선택 - storage 폴더에 생성(공유경로로 사용예정)

추가된 디스크 선택 후 Advanced 선택

SCSI 1:0 으로 선택 후 OK

네트워크 어댑터 추가를 위해 Add - Network Adapter 선택Network Adapter 선택

Host_only 선택

현재 vmware(Oracle Enterprise Linux 8.4)를 우클릭 - Rename

oel19db1로 변경

vmware 프로그램 종료 후 19_rac\oel19db1\Oracle Linux 9 64-bit.vmx 메모장으로 열기
제일 밑에 아래 내용 추가 후 저장
|
1
2
3
4
|
disk.locking = "FALSE"
diskLib.dataCacheMaxSize = "0"
scsi1.sharedBus = "virtual"
scsi1:0.deviceType = "disk"
|
1번 OS 기동, 기동 시 아래 메세지 발생 시 I copied it 선택

이어서 oel19db2도 .vmx 파일 실행

cpu, memort 세팅은 동일하게 진행

Add - Hard disk 선택

SCSI 선택

공유 스토리지를 사용할것이기 때문에 Use an existing virtual disk 선택

storage 경로에 있는 vmdk 파일 선택

등록된 디스크 - Advanced 선택

SCSI 1:0 으로 선택 후 OK

Network Adapter도 등록 후 Advanced 선택 후 MAC Address 변경(Generate 선택)

두번째 Network Adapter도 Host-only로 변경 후 Advanced 선택

MAC Address 변경(Generate 선택)

vmware 프로그램 종료 후 19_rac\oel19db2\Oracle Linux 9 64-bit.vmx 메모장으로 열기
제일 밑에 아래 내용 추가 후 저장
|
1
2
3
4
|
disk.locking = "FALSE"
diskLib.dataCacheMaxSize = "0"
scsi1.sharedBus = "virtual"
scsi1:0.deviceType = "disk"
|
2번 OS 기동, 기동 시 아래 메세지 발생 시 I copied it 선택

설치파일
db 설치파일 : LINUX.X64_193000_db_home.zip
grid 설치파일 : LINUX.X64_193000_grid_home.zip
19.28 패치파일 : p37952382_190000_Linux-x86-64.zip
OPatch 최신파일 : p6880880_190000_Linux-x86-64.zip
OS 설정
노드1 OS 기동 후
/etc/hostname 확인
|
1
2
3
4
5
6
7
|
#1번 노드
# cat /etc/hostname
oel19db1
#2번 노드
# cat /etc/hostname
oel19db2
|
기존에 다른 hostname이라면 hostname 변경 후 재기동(모든 노드에서 모두 수행)
|
1
2
3
4
5
6
7
|
#1번 노드
# hostnamectl set-hostname oel19db1
# (세션 재접속)
#2번 노드
# hostnamectl set-hostname oel19db2
# (세션 재접속)
|
Network 설정
|
1
2
3
4
5
6
7
8
9
10
|
Public network(ens32)
IP/Netmask/GW
192.168.137.10/255.255.255.0/192.168.137.2 --노드1
192.168.137.20/255.255.255.0/192.168.137.2 --노드2
DNS 168.126.63.1
Private network
IP/Netmask/GW(ens34)
10.10.20.10/255.255.255.0 --노드1
10.10.20.20/255.255.255.0 --노드2
|
네트워크 설정
ifconfig 확인(모든 노드에서 수행)
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
# ifconfig
ens224: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
ether 00:50:56:a8:41:16 txqueuelen 1000 (Ethernet)
RX packets 77 bytes 4620 (4.5 KiB)
RX errors 0 dropped 70 overruns 0 frame 0
TX packets 70 bytes 9142 (8.9 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ens256: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
ether 00:50:56:a8:84:b3 txqueuelen 1000 (Ethernet)
RX packets 77 bytes 4620 (4.5 KiB)
RX errors 0 dropped 69 overruns 0 frame 0
TX packets 75 bytes 9923 (9.6 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 296 bytes 26212 (25.5 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 296 bytes 26212 (25.5 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
|
현재 ens224, ens256이 존재함
기존 연결 프로파일 확인(모든 노드에서 수행)
|
1
2
3
|
# nmcli connection show
NAME UUID TYPE DEVICE
lo 1f15970b-ef0d-43c3-a166-e282143f0098 loopback lo
|
ens224 Connection 설정
|
1
2
3
|
IP: 192.168.137.10/24
GW: 192.168.137.2
DNS: 168.126.63.1
|
connection 생성(모든 노드에서 수행)
|
1
2
|
# nmcli connection add type ethernet ifname ens224 con-name ens224
Connection 'ens224' (dafcf07c-a57c-4b22-9151-faa455b43464) successfully added.
|
IPv4 설정(모든 노드에서 수행)
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
#1번 노드
nmcli connection modify ens224 \
ipv4.method manual \
ipv4.addresses 192.168.137.10/24 \
ipv4.gateway 192.168.137.2 \
ipv4.dns 168.126.63.1 \
connection.autoconnect yes
#2번 노드
nmcli connection modify ens224 \
ipv4.method manual \
ipv4.addresses 192.168.137.20/24 \
ipv4.gateway 192.168.137.2 \
ipv4.dns 168.126.63.1 \
connection.autoconnect yes
|
활성화(모든 노드에서 수행)
|
1
2
|
# nmcli connection up ens224
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/9)
|
ens256 Connection 설정(모든 노드에서 수행)
|
1
2
3
|
IP: 10.10.20.10/24
Gateway 없음
DNS 없음
|
connection 생성(모든 노드에서 수행)
|
1
2
|
# nmcli connection add type ethernet ifname ens256 con-name ens256
Connection 'ens256' (734e5625-738a-4e93-8421-75a4d9b5dea0) successfully added.
|
IPv4 설정((모든 노드에서 수행)
|
1
2
3
4
5
6
7
8
9
10
11
|
#1번 노드
nmcli connection modify ens256 \
ipv4.method manual \
ipv4.addresses 10.10.20.10/24 \
connection.autoconnect yes
#2번 노드
nmcli connection modify ens256 \
ipv4.method manual \
ipv4.addresses 10.10.20.20/24 \
connection.autoconnect yes
|
활성화(모든 노드에서 수행)
|
1
2
|
# nmcli connection up ens256
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/10)
|
설정 확인(모든 노드에서 수행)
디바이스 상태 확인
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
#1번 노드
# nmcli device status
DEVICE TYPE STATE CONNECTION
ens224 ethernet connected ens224
ens256 ethernet connected ens256
lo loopback connected (externally) lo
#2번 노드
# nmcli device status
DEVICE TYPE STATE CONNECTION
ens224 ethernet connected ens224
ens256 ethernet connected ens256
lo loopback connected (externally) lo
|
ens224와 ens256이 모두 connected 상태가 됨
IP 확인(모든 노드에서 수행)
|
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
|
#1번 노드
# ip addr show ens224
3: ens224: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:50:56:a8:41:16 brd ff:ff:ff:ff:ff:ff
altname enp19s0
inet 192.168.137.10/24 brd 192.168.137.255 scope global noprefixroute ens224
valid_lft forever preferred_lft forever
inet6 fe80::10a7:18a2:140f:a950/64 scope link noprefixroute
valid_lft forever preferred_lft forever
# ip addr show ens256
4: ens256: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:50:56:a8:84:b3 brd ff:ff:ff:ff:ff:ff
altname enp27s0
inet 10.10.20.10/24 brd 10.10.20.255 scope global noprefixroute ens256
valid_lft forever preferred_lft forever
inet6 fe80::fc29:9672:9bc:ec0e/64 scope link noprefixroute
valid_lft forever preferred_lft forever
#2번 노드
# ip addr show ens224
3: ens224: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:50:56:a8:f0:50 brd ff:ff:ff:ff:ff:ff
altname enp19s0
inet 192.168.137.20/24 brd 192.168.137.255 scope global noprefixroute ens224
valid_lft forever preferred_lft forever
inet6 fe80::2e30:f6b4:f571:5add/64 scope link noprefixroute
valid_lft forever preferred_lft forever
# ip addr show ens256
4: ens256: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:50:56:a8:c6:76 brd ff:ff:ff:ff:ff:ff
altname enp27s0
inet 10.10.20.20/24 brd 10.10.20.255 scope global noprefixroute ens256
valid_lft forever preferred_lft forever
inet6 fe80::dfa:2d0f:64d3:b04/64 scope link noprefixroute
valid_lft forever preferred_lft forever
|
모두 정상
/etc/hosts 설정, 아래 내용 추가 후 저장
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
# vi /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
##Public
192.168.137.10 oel19db1
192.168.137.20 oel19db2
##Private
10.10.20.10 oel19db1-priv
10.10.20.20 oel19db2-priv
##Virtual
192.168.137.100 oel19db1-vip
192.168.137.200 oel19db2-vip
##SCAN
192.168.137.150 oel19db-scan
|
디스크는 100gb짜리 하나를 마운트 했고 data용, reco용, ocr용 이렇게 크게 3개로 나눔
디스크 1개 추가 마운트 후 확인(1번 노드에서 수행)
|
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
|
# fdisk -l
Disk /dev/sda: 100 GiB, 107374182400 bytes, 209715200 sectors
Disk model: Virtual disk
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: 0x95bec2cc
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 1050623 1048576 512M 83 Linux
/dev/sda2 1050624 209715199 208664576 99.5G 8e Linux LVM
Disk /dev/mapper/ol-root: 91.5 GiB, 98243182592 bytes, 191881216 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/sdb: 100 GiB, 107374182400 bytes, 209715200 sectors
Disk model: Virtual disk
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 4194304 bytes
|
현재 100gb로 마운트된 디스크는 /dev/sdb임
fdisk 명령으로 파티션 나누기(1번 노드에서 수행)
각각 primary 파티션 30G, 30G 씩 총 2개, Extended 파티션 20G 1개, Logical 파티션 4G, 4G, 4G 총 3개를 생성하는 명령임
아래 DEVICE에 알맞은 디스크 이름 입력
|
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
|
# vi fdisk.sh
#!/bin/bash
DEVICE="/dev/sdb"
fdisk "$DEVICE" <<'EOF'
o
n
p
1
+30G
n
p
2
+30G
n
e
3
+20G
n
l
+4G
n
l
+4G
n
l
+4G
p
w
EOF
|
실행권한 부여 후 실행(1번 노드에서 수행)
|
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
|
# chmod u+x fdisk.sh
# sh fdisk.sh
Welcome to fdisk (util-linux 2.37.4).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): Created a new DOS disklabel with disk identifier 0x00dd6752.
Command (m for help):
Command (m for help): Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p): Partition number (1-4, default 1): First sector (8192-209715199, default 8192): Last sector, +/-sectors or +/-size{K,M,G,T,P} (8192-209715199, default 209715199):
Created a new partition 1 of type 'Linux' and of size 30 GiB.
Command (m for help):
Command (m for help): Partition type
p primary (1 primary, 0 extended, 3 free)
e extended (container for logical partitions)
Select (default p): Partition number (2-4, default 2): First sector (62922752-209715199, default 62922752): Last sector, +/-sectors or +/-size{K,M,G,T,P} (62922752-209715199, default 209715199):
Created a new partition 2 of type 'Linux' and of size 30 GiB.
Command (m for help):
Command (m for help): Partition type
p primary (2 primary, 0 extended, 2 free)
e extended (container for logical partitions)
Select (default p): Partition number (3,4, default 3): First sector (125837312-209715199, default 125837312): Last sector, +/-sectors or +/-size{K,M,G,T,P} (125837312-209715199, default 209715199):
Created a new partition 3 of type 'Extended' and of size 20 GiB.
Command (m for help):
Command (m for help): Partition type
p primary (2 primary, 1 extended, 1 free)
l logical (numbered from 5)
Select (default p):
Adding logical partition 5
First sector (125845504-167780351, default 125845504): Last sector, +/-sectors or +/-size{K,M,G,T,P} (125845504-167780351, default 167780351):
Created a new partition 5 of type 'Linux' and of size 4 GiB.
Command (m for help):
Command (m for help): Partition type
p primary (2 primary, 1 extended, 1 free)
l logical (numbered from 5)
Select (default p):
Adding logical partition 6
First sector (134242304-167780351, default 134242304): Last sector, +/-sectors or +/-size{K,M,G,T,P} (134242304-167780351, default 167780351):
Created a new partition 6 of type 'Linux' and of size 4 GiB.
Command (m for help):
Command (m for help): Partition type
p primary (2 primary, 1 extended, 1 free)
l logical (numbered from 5)
Select (default p):
Adding logical partition 7
First sector (142639104-167780351, default 142639104): Last sector, +/-sectors or +/-size{K,M,G,T,P} (142639104-167780351, default 167780351):
Created a new partition 7 of type 'Linux' and of size 4 GiB.
Command (m for help):
Command (m for help):
Disk /dev/sdb: 100 GiB, 107374182400 bytes, 209715200 sectors
Disk model: Virtual disk
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 4194304 bytes
Disklabel type: dos
Disk identifier: 0x00dd6752
Device Boot Start End Sectors Size Id Type
/dev/sdb1 8192 62922751 62914560 30G 83 Linux
/dev/sdb2 62922752 125837311 62914560 30G 83 Linux
/dev/sdb3 125837312 167780351 41943040 20G 5 Extended
/dev/sdb5 125845504 134234111 8388608 4G 83 Linux
/dev/sdb6 134242304 142630911 8388608 4G 83 Linux
/dev/sdb7 142639104 151027711 8388608 4G 83 Linux
Command (m for help): The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
|
정상적으로 디스크 파티션이 나뉘어짐
/dev/sdb1을 DATA, /dev/sdb2를 RECO, /dev/sdb5~7을 ocr vote 영역으로 설정 예정임
2번 노드에서 디스크 확인
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
# fdisk /dev/sdb -l
Disk /dev/sdb: 100 GiB, 107374182400 bytes, 209715200 sectors
Disk model: Virtual disk
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 4194304 bytes
Disklabel type: dos
Disk identifier: 0x00dd6752
Device Boot Start End Sectors Size Id Type
/dev/sdb1 8192 62922751 62914560 30G 83 Linux
/dev/sdb2 62922752 125837311 62914560 30G 83 Linux
/dev/sdb3 125837312 167780351 41943040 20G 5 Extended
/dev/sdb5 125845504 134234111 8388608 4G 83 Linux
/dev/sdb6 134242304 142630911 8388608 4G 83 Linux
/dev/sdb7 142639104 151027711 8388608 4G 83 Linux
|
2번 노드에서도 잘보임
오라클 설치 전 사전 설정
preinstall rpm 설치
공식홈페이지에서 preinstall rpm 다운로드 후 서버에 업로드
https://yum.oracle.com/repo/OracleLinux/OL9/appstream/x86_64/getPackage/oracle-database-preinstall-19c-1.0-1.el9.x86_64.rpm
또는 curl로 서버에 직접 다운로드(모든 노드에서 수행)
|
1
|
# curl -o oracle-database-preinstall-19c-1.0-1.el9.x86_64.rpm https://yum.oracle.com/repo/OracleLinux/OL9/appstream/x86_64/getPackage/oracle-database-preinstall-19c-1.0-1.el9.x86_64.rpm
|
preinstall 패키지 설치(모든 노드에서 수행)
perinstall 패키지 설치 시 os 커널 파라미터가 설정되고, oracle 유저와 oinstall, dba 등 설치에 필요한 권한 유저가 생성되고, 필요한 패키지가 설치됨
|
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
|
# dnf -y localinstall oracle-database-preinstall-19c-1.0-1.el9.x86_64.rpm
Last metadata expiration check: 0:11:38 ago on Sat 20 Dec 2025 05:34:13 PM KST.
Dependencies resolved.
=====================================================================================================================================================================
Package Architecture Version Repository Size
=====================================================================================================================================================================
Installing:
oracle-database-preinstall-19c x86_64 1.0-1.el9 @commandline 33 k
Installing dependencies:
gssproxy x86_64 0.8.4-7.el9 ol9_baseos_latest 120 k
initscripts x86_64 10.11.8-4.0.1.el9 ol9_baseos_latest 285 k
ksh x86_64 3:1.0.6-7.0.1.el9_6.2 ol9_appstream 889 k
libaio-devel x86_64 0.3.111-13.el9 ol9_appstream 11 k
libev x86_64 4.33-6.el9 ol9_baseos_latest 56 k
libnfsidmap x86_64 1:2.5.4-38.0.1.el9 ol9_baseos_latest 71 k
libnsl x86_64 2.34-168.0.1.el9 ol9_baseos_latest 65 k
libverto-libev x86_64 0.3.2-3.el9 ol9_baseos_latest 14 k
lm_sensors-libs x86_64 3.6.0-10.el9 ol9_appstream 42 k
nfs-utils x86_64 1:2.5.4-38.0.1.el9 ol9_baseos_latest 518 k
pcp-conf x86_64 6.3.7-5.0.4.el9 ol9_appstream 41 k
pcp-libs x86_64 6.3.7-5.0.4.el9 ol9_appstream 654 k
rpcbind x86_64 1.2.6-7.el9 ol9_baseos_latest 69 k
sssd-nfs-idmap x86_64 2.9.6-4.0.1.el9 ol9_baseos_latest 45 k
sysstat x86_64 12.5.4-9.0.2.el9 ol9_appstream 541 k
Transaction Summary
=====================================================================================================================================================================
Install 16 Packages
Total size: 3.4 M
Total download size: 3.3 M
Installed size: 9.4 M
Downloading Packages:
(1/15): libev-4.33-6.el9.x86_64.rpm 281 kB/s | 56 kB 00:00
(2/15): gssproxy-0.8.4-7.el9.x86_64.rpm 564 kB/s | 120 kB 00:00
(3/15): initscripts-10.11.8-4.0.1.el9.x86_64.rpm 1.0 MB/s | 285 kB 00:00
(4/15): libnfsidmap-2.5.4-38.0.1.el9.x86_64.rpm 1.0 MB/s | 71 kB 00:00
(5/15): libverto-libev-0.3.2-3.el9.x86_64.rpm 383 kB/s | 14 kB 00:00
(6/15): rpcbind-1.2.6-7.el9.x86_64.rpm 1.7 MB/s | 69 kB 00:00
(7/15): nfs-utils-2.5.4-38.0.1.el9.x86_64.rpm 4.0 MB/s | 518 kB 00:00
(8/15): ksh-1.0.6-7.0.1.el9_6.2.x86_64.rpm 10 MB/s | 889 kB 00:00
(9/15): libaio-devel-0.3.111-13.el9.x86_64.rpm 302 kB/s | 11 kB 00:00
(10/15): lm_sensors-libs-3.6.0-10.el9.x86_64.rpm 893 kB/s | 42 kB 00:00
(11/15): pcp-conf-6.3.7-5.0.4.el9.x86_64.rpm 1.1 MB/s | 41 kB 00:00
(12/15): pcp-libs-6.3.7-5.0.4.el9.x86_64.rpm 12 MB/s | 654 kB 00:00
(13/15): sysstat-12.5.4-9.0.2.el9.x86_64.rpm 12 MB/s | 541 kB 00:00
(14/15): libnsl-2.34-168.0.1.el9.x86_64.rpm 45 kB/s | 65 kB 00:01
(15/15): sssd-nfs-idmap-2.9.6-4.0.1.el9.x86_64.rpm 34 kB/s | 45 kB 00:01
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total 2.0 MB/s | 3.3 MB 00:01
Oracle Linux 9 BaseOS Latest (x86_64) 189 kB/s | 6.2 kB 00:00
Importing GPG key 0x8D8B756F:
Userid : "Oracle Linux (release key 1) <secalert_us@oracle.com>"
Fingerprint: 3E6D 826D 3FBA B389 C2F3 8E34 BC4D 06A0 8D8B 756F
From : /etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
Key imported successfully
Importing GPG key 0x8B4EFBE6:
Userid : "Oracle Linux (backup key 1) <secalert_us@oracle.com>"
Fingerprint: 9822 3175 9C74 6706 5D0C E9B2 A7DD 0708 8B4E FBE6
From : /etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
Key imported successfully
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : libnfsidmap-1:2.5.4-38.0.1.el9.x86_64 1/16
Installing : pcp-conf-6.3.7-5.0.4.el9.x86_64 2/16
Installing : pcp-libs-6.3.7-5.0.4.el9.x86_64 3/16
Installing : lm_sensors-libs-3.6.0-10.el9.x86_64 4/16
Installing : sysstat-12.5.4-9.0.2.el9.x86_64 5/16
Running scriptlet: sysstat-12.5.4-9.0.2.el9.x86_64 5/16
Created symlink /etc/systemd/system/multi-user.target.wants/sysstat.service → /usr/lib/systemd/system/sysstat.service.
Created symlink /etc/systemd/system/sysstat.service.wants/sysstat-collect.timer → /usr/lib/systemd/system/sysstat-collect.timer.
Created symlink /etc/systemd/system/sysstat.service.wants/sysstat-summary.timer → /usr/lib/systemd/system/sysstat-summary.timer.
Installing : libaio-devel-0.3.111-13.el9.x86_64 6/16
Installing : ksh-3:1.0.6-7.0.1.el9_6.2.x86_64 7/16
Running scriptlet: ksh-3:1.0.6-7.0.1.el9_6.2.x86_64 7/16
Running scriptlet: rpcbind-1.2.6-7.el9.x86_64 8/16
Installing : rpcbind-1.2.6-7.el9.x86_64 8/16
Running scriptlet: rpcbind-1.2.6-7.el9.x86_64 8/16
Created symlink /etc/systemd/system/multi-user.target.wants/rpcbind.service → /usr/lib/systemd/system/rpcbind.service.
Created symlink /etc/systemd/system/sockets.target.wants/rpcbind.socket → /usr/lib/systemd/system/rpcbind.socket.
Installing : libnsl-2.34-168.0.1.el9.x86_64 9/16
Installing : libev-4.33-6.el9.x86_64 10/16
Installing : libverto-libev-0.3.2-3.el9.x86_64 11/16
Installing : gssproxy-0.8.4-7.el9.x86_64 12/16
Running scriptlet: gssproxy-0.8.4-7.el9.x86_64 12/16
Running scriptlet: nfs-utils-1:2.5.4-38.0.1.el9.x86_64 13/16
Installing : nfs-utils-1:2.5.4-38.0.1.el9.x86_64 13/16
Running scriptlet: nfs-utils-1:2.5.4-38.0.1.el9.x86_64 13/16
Installing : initscripts-10.11.8-4.0.1.el9.x86_64 14/16
Running scriptlet: initscripts-10.11.8-4.0.1.el9.x86_64 14/16
Created symlink /etc/systemd/system/sysinit.target.wants/import-state.service → /usr/lib/systemd/system/import-state.service.
Created symlink /etc/systemd/system/sysinit.target.wants/loadmodules.service → /usr/lib/systemd/system/loadmodules.service.
Running scriptlet: oracle-database-preinstall-19c-1.0-1.el9.x86_64 15/16
Installing : oracle-database-preinstall-19c-1.0-1.el9.x86_64 15/16
Installing : sssd-nfs-idmap-2.9.6-4.0.1.el9.x86_64 16/16
Running scriptlet: oracle-database-preinstall-19c-1.0-1.el9.x86_64 16/16
Running scriptlet: sssd-nfs-idmap-2.9.6-4.0.1.el9.x86_64 16/16
Verifying : gssproxy-0.8.4-7.el9.x86_64 1/16
Verifying : initscripts-10.11.8-4.0.1.el9.x86_64 2/16
Verifying : libev-4.33-6.el9.x86_64 3/16
Verifying : libnfsidmap-1:2.5.4-38.0.1.el9.x86_64 4/16
Verifying : libnsl-2.34-168.0.1.el9.x86_64 5/16
Verifying : libverto-libev-0.3.2-3.el9.x86_64 6/16
Verifying : nfs-utils-1:2.5.4-38.0.1.el9.x86_64 7/16
Verifying : rpcbind-1.2.6-7.el9.x86_64 8/16
Verifying : sssd-nfs-idmap-2.9.6-4.0.1.el9.x86_64 9/16
Verifying : ksh-3:1.0.6-7.0.1.el9_6.2.x86_64 10/16
Verifying : libaio-devel-0.3.111-13.el9.x86_64 11/16
Verifying : lm_sensors-libs-3.6.0-10.el9.x86_64 12/16
Verifying : pcp-conf-6.3.7-5.0.4.el9.x86_64 13/16
Verifying : pcp-libs-6.3.7-5.0.4.el9.x86_64 14/16
Verifying : sysstat-12.5.4-9.0.2.el9.x86_64 15/16
Verifying : oracle-database-preinstall-19c-1.0-1.el9.x86_64 16/16
Installed:
gssproxy-0.8.4-7.el9.x86_64 initscripts-10.11.8-4.0.1.el9.x86_64 ksh-3:1.0.6-7.0.1.el9_6.2.x86_64 libaio-devel-0.3.111-13.el9.x86_64
libev-4.33-6.el9.x86_64 libnfsidmap-1:2.5.4-38.0.1.el9.x86_64 libnsl-2.34-168.0.1.el9.x86_64 libverto-libev-0.3.2-3.el9.x86_64
lm_sensors-libs-3.6.0-10.el9.x86_64 nfs-utils-1:2.5.4-38.0.1.el9.x86_64 oracle-database-preinstall-19c-1.0-1.el9.x86_64 pcp-conf-6.3.7-5.0.4.el9.x86_64
pcp-libs-6.3.7-5.0.4.el9.x86_64 rpcbind-1.2.6-7.el9.x86_64 sssd-nfs-idmap-2.9.6-4.0.1.el9.x86_64 sysstat-12.5.4-9.0.2.el9.x86_64
Complete!
|
자동 설정 후 수동설정 파일 확인필요(모든 노드에서 수행)
/etc/sysctl.conf에 io_uring_disabled, io_uring_group 추가(asmlib용)
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
# vi /etc/sysctl.conf
fs.file-max = 6815744
kernel.sem = 250 32000 100 128
kernel.shmmni = 4096
kernel.shmall = 1310720
kernel.shmmax = 5368709120
kernel.panic_on_oops = 1
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
net.ipv4.conf.all.rp_filter = 2
net.ipv4.conf.default.rp_filter = 2
fs.aio-max-nr = 1048576
net.ipv4.ip_local_port_range = 9000 65500
kernel.io_uring_disabled = 0
kernel.io_uring_group = 54321
|
*kernel.shmall, kernel.shmmax 은 서버에 물리 메모리의 절반으로 설정 필요(byte 단위), shmall은 page 단위로 설정 필요
현재 서버의 물리 메모리를 10gb로 잡았기 때문에 shmmax는 물리메모리의 절반인 5gb를 byte로 변경해 적용함(5*1024*1024*1024)
*kernel.io_uring_group에 들어가는 54321은 grid 설치 유저의 gid를 입력해야함(id {유저명} 명령으로 확인)
shmmax를 물리메모리의 60%로 설정을 원하는 경우 + shmall을 page 단위로 설정하려는 경우 아래 스크립트 활용
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
#!/bin/bash
# Get total memory size in KB
mem_kb=$(free -k | awk '/^Mem:/ {print $2}')
# Get system page size in bytes
page_size=$(getconf PAGE_SIZE)
# Calculate shmmax: total memory in bytes × 60%
shmmax=$(echo "$mem_kb * 1024 * 6 / 10" | bc)
# Calculate shmall: shmmax divided by page size
shmall=$(echo "$shmmax / $page_size" | bc)
# Output results
echo "Total Memory (KB): $mem_kb"
echo "Page Size (bytes): $page_size"
echo "Calculated SHMMAX (bytes): $shmmax"
echo "Calculated SHMALL (pages): $shmall"
|
여기서 나온값을 넣어주면됨
잘 입력되었는지 확인(모든 노드에서 수행)
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
# sysctl -p
fs.file-max = 6815744
kernel.sem = 250 32000 100 128
kernel.shmmni = 4096
kernel.shmall = 1310720
kernel.shmmax = 5368709120
kernel.panic_on_oops = 1
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
net.ipv4.conf.all.rp_filter = 2
net.ipv4.conf.default.rp_filter = 2
fs.aio-max-nr = 1048576
net.ipv4.ip_local_port_range = 9000 65500
kernel.io_uring_disabled = 0
kernel.io_uring_group = 54321
|
아래 파일 내용 확인(모든 노드에서 수행)
|
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
|
# cat /etc/security/limits.d/oracle-database-preinstall-19c.conf
# oracle-database-preinstall-19c setting for nofile soft limit is 1024
oracle soft nofile 1024
# oracle-database-preinstall-19c setting for nofile hard limit is 65536
oracle hard nofile 65536
# oracle-database-preinstall-19c setting for nproc soft limit is 16384
# refer orabug15971421 for more info.
oracle soft nproc 16384
# oracle-database-preinstall-19c setting for nproc hard limit is 16384
oracle hard nproc 16384
# oracle-database-preinstall-19c setting for stack soft limit is 10240KB
oracle soft stack 10240
# oracle-database-preinstall-19c setting for stack hard limit is 32768KB
oracle hard stack 32768
# oracle-database-preinstall-19c setting for memlock hard limit is maximum of 128GB on x86_64 or 3GB on x86 OR 90 % of RAM
oracle hard memlock 134217728
# oracle-database-preinstall-19c setting for memlock soft limit is maximum of 128GB on x86_64 or 3GB on x86 OR 90% of RAM
oracle soft memlock 134217728
# oracle-database-preinstall-19c setting for data soft limit is 'unlimited'
oracle soft data unlimited
# oracle-database-preinstall-19c setting for data hard limit is 'unlimited'
oracle hard data unlimited
|
패스워드 설정(모든 노드에서 수행)
|
1
|
# passwd oracle
|
selinux disabled 설정(모든 노드에서 수행)
|
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
|
설치 경로 생성(모든 노드에서 수행)
|
1
2
3
4
5
|
# mkdir -p /app/oracle/product/19c/
# mkdir -p /app/grid/product/19c
# mkdir -p /app/media
# chown -R oracle:dba /app
# chmod -R 775 /app
|
디스크 권한 부여(모든 노드에서 수행)
|
1
2
3
4
5
6
7
8
9
|
# chown oracle:dba /dev/sdb*
# ll /dev/sdb*
brw-rw----. 1 oracle dba 8, 16 Dec 23 10:52 /dev/sdb
brw-rw----. 1 oracle dba 8, 17 Dec 23 10:52 /dev/sdb1
brw-rw----. 1 oracle dba 8, 18 Dec 23 10:52 /dev/sdb2
brw-rw----. 1 oracle dba 8, 19 Dec 23 10:52 /dev/sdb3
brw-rw----. 1 oracle dba 8, 21 Dec 23 10:52 /dev/sdb5
brw-rw----. 1 oracle dba 8, 22 Dec 23 10:52 /dev/sdb6
brw-rw----. 1 oracle dba 8, 23 Dec 23 10:52 /dev/sdb7
|
Temp 파일시스템 할당(모든 노드에서 수행)
|
1
2
|
# vi /etc/fstab
tmpfs /dev/shm tmpfs size=10g 0 0
|
/dev/shm 영역 remount(모든 노드에서 수행)
|
1
2
3
|
# mount -o remount /dev/shm
mount: (hint) your fstab has been modified, but systemd still uses
the old version; use 'systemctl daemon-reload' to reload.
|
추가 후 확인(모든 노드에서 수행)
|
1
2
3
|
# df -h /dev/shm
Filesystem Size Used Avail Use% Mounted on
tmpfs 10G 0 10G 0% /dev/shm
|
asmlib 패키지 설치(모든 노드에서 수행)
|
1
2
3
4
5
6
7
8
9
10
11
12
|
# rpm -ivh oracleasm-support-3.1.1-4.el9.x86_64.rpm
Verifying... ################################# [100%]
Preparing... ################################# [100%]
Updating / installing...
1:oracleasm-support-3.1.1-4.el9 ################################# [100%]
Created symlink /etc/systemd/system/multi-user.target.wants/oracleasm.service → /usr/lib/systemd/system/oracleasm.service.
# rpm -ivh oracleasmlib-3.1.1-1.el9.x86_64.rpm
Verifying... ################################# [100%]
Preparing... ################################# [100%]
Updating / installing...
1:oracleasmlib-3.1.1-1.el9 ################################# [100%]
|
참고 : 아래 링크에서 다운로드 가능
asm support : https://yum.oracle.com/repo/OracleLinux/OL9/addons/x86_64/index.html
asmlib : https://www.oracle.com/linux/downloads/linux-asmlib-v9-downloads.html
Oracle ASM 설정 및 시작(oracle, dba, y, y 순서대로 입력)(모든 노드에서 수행)
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
# oracleasm configure -i
Configuring the Oracle ASM system service.
This will configure the on-boot properties of the Oracle ASM system
service. The following questions will determine whether the service
is started 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 ASM disk devices []: oracle <-- oracle 입력
Default group to own the ASM disk devices []: dba <-- dba 입력
Start Oracle ASM system service on boot (y/n) [y]: y <-- y 입력
Scan for Oracle ASM disks when starting the oracleasm service (y/n) [y]: y <-- y 입력
Maximum number of ASM disks that can be used on system [2048]: <-- 엔터 입력
Enable iofilter if kernel supports it (y/n) [y]: y <-- y 입력
Writing Oracle ASM system service configuration: done
Configuration changes only come into effect after the Oracle ASM
system service is restarted. Please run 'systemctl restart oracleasm'
after making changes.
WARNING: All of your Oracle and ASM instances must be stopped prior
to restarting the oracleasm service.
|
asmlib 활성화 및 상태 확인(모든 노드에서 수행)
|
1
2
3
4
5
6
7
8
9
10
11
|
# systemctl enable --now oracleasm
# oracleasm status
Checking if the oracleasm kernel module is loaded: no (not required with UEK8)
Checking if /dev/oracleasm is mounted: no (not required with UEK8)
Checking which I/O Interface is in use: io_uring (KABI_V3)
Checking if ASMLIB can be loaded: yes
Checking if io_uring is enabled: yes
Checking if io_uring is accessible to the configured DB user: yes
Checking if io_uring supports integrity passthrough: yes
Checking if ASM disks have the correct ownership and permissions: yes
Checking if ASM I/O filter is set up: yes
|
정상임
asm 디스크 라벨링(1번 노드에서 수행)
|
1
2
3
4
5
6
|
#
oracleasm createdisk DATA /dev/sdb1
oracleasm createdisk RECO /dev/sdb2
oracleasm createdisk OCR_VOTE1 /dev/sdb5
oracleasm createdisk OCR_VOTE2 /dev/sdb6
oracleasm createdisk OCR_VOTE3 /dev/sdb7
|
asm 디스크 스캔(모든 노드에서 수행)
|
1
2
3
4
5
|
# oracleasm scandisks
Reloading disk partitions: done
Cleaning any stale ASM disks...
Setting up iofilter map for ASM disks: done
Scanning system for ASM disks...
|
생성 리스트 확인(5개가 나와야 정상)(모든 노드에서 수행)
|
1
2
3
4
5
6
|
# oracleasm listdisks
DATA
OCR_VOTE1
OCR_VOTE2
OCR_VOTE3
RECO
|
2번 노드에서 listdisks시 안나오는 경우 partprobe 명령 입력하여 listdisks 재확인
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
# partprobe /dev/sdb
# ls -l /dev/sdb*
brw-rw----. 1 oracle dba 8, 16 Dec 23 12:27 /dev/sdb
brw-rw----. 1 oracle dba 8, 17 Dec 23 12:27 /dev/sdb1
brw-rw----. 1 oracle dba 8, 18 Dec 23 12:27 /dev/sdb2
brw-rw----. 1 oracle dba 8, 19 Dec 23 12:27 /dev/sdb3
brw-rw----. 1 oracle dba 8, 21 Dec 23 12:27 /dev/sdb5
brw-rw----. 1 oracle dba 8, 22 Dec 23 12:27 /dev/sdb6
brw-rw----. 1 oracle dba 8, 23 Dec 23 12:27 /dev/sdb7
# oracleasm listdisks
DATA
OCR_VOTE1
OCR_VOTE2
OCR_VOTE3
RECO
|
2번에서도 잘보임
*/dev/sdb*에 rw 권한이 없으면 chown 660 /dev/sdb* 수행
asm 디스크 라벨링 상세 확인(모든 노드에서 수행)
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
# oracleasm querydisk -p DATA
Disk "DATA" is a valid ASM disk
/dev/sdb1: LABEL="DATA" TYPE="oracleasm"
# oracleasm querydisk -p RECO
Disk "RECO" is a valid ASM disk
/dev/sdb2: LABEL="RECO" TYPE="oracleasm"
# oracleasm querydisk -p OCR_VOTE1
Disk "OCR_VOTE1" is a valid ASM disk
/dev/sdb5: LABEL="OCR_VOTE1" TYPE="oracleasm"
# oracleasm querydisk -p OCR_VOTE2
Disk "OCR_VOTE2" is a valid ASM disk
/dev/sdb6: LABEL="OCR_VOTE2" TYPE="oracleasm"
# oracleasm querydisk -p OCR_VOTE3
Disk "OCR_VOTE3" is a valid ASM disk
/dev/sdb7: LABEL="OCR_VOTE3" TYPE="oracleasm"
|
asm 디스크 라벨링 상세 확인2(모든 노드에서 수행)
|
1
2
3
4
5
6
7
8
9
10
|
# oracleasm querydisk /dev/sdb1
Device "/dev/sdb1" is marked as an ASM disk with the label "DATA"
# oracleasm querydisk /dev/sdb2
Device "/dev/sdb2" is marked as an ASM disk with the label "RECO"
# oracleasm querydisk /dev/sdb5
Device "/dev/sdb5" is marked as an ASM disk with the label "OCR_VOTE1"
# oracleasm querydisk /dev/sdb6
Device "/dev/sdb6" is marked as an ASM disk with the label "OCR_VOTE2"
# oracleasm querydisk /dev/sdb7
Device "/dev/sdb7" is marked as an ASM disk with the label "OCR_VOTE3"
|
asm 디스크 라벨링 상세 확인3(모든 노드에서 수행)
|
1
2
3
4
5
6
7
8
9
|
# oracleasm discover
Using ASMLIB from /opt/oracle/extapi/64/asm/orcl/1/libasm.so
[ASM Library - Linux, version 3.1.1 (KABI_V3), 2025-07-24 22:50]
Discovered disk: ORCL:OCR_VOTE1 [8388608 blocks (4294967296 bytes), blksz 512/512, maxio 4194304 bytes, integrity unsupported]
Discovered disk: ORCL:OCR_VOTE2 [8388608 blocks (4294967296 bytes), blksz 512/512, maxio 4194304 bytes, integrity unsupported]
Discovered disk: ORCL:OCR_VOTE3 [8388608 blocks (4294967296 bytes), blksz 512/512, maxio 4194304 bytes, integrity unsupported]
Discovered disk: ORCL:RECO [62914560 blocks (32212254720 bytes), blksz 512/512, maxio 4194304 bytes, integrity unsupported]
Discovered disk: ORCL:DATA [62914560 blocks (32212254720 bytes), blksz 512/512, maxio 4194304 bytes, integrity unsupported]
|
서버에 Oracle Database 설치 미디어 업로드 후 권한 부여(1번 노드에서 수행)
|
1
2
3
4
5
6
7
8
|
$ ls -al /app/media/
total 9868280
drwxrwxr-x. 2 oracle dba 161 Dec 23 12:33 .
drwxrwxr-x. 5 oracle dba 45 Dec 23 11:03 ..
-rwxr-xr-x. 1 oracle dba 3059705302 Dec 23 12:32 LINUX.X64_193000_db_home.zip
-rwxr-xr-x. 1 oracle dba 2889184573 Dec 23 12:33 LINUX.X64_193000_grid_home.zip
-rwxr-xr-x. 1 oracle dba 4083374170 Dec 23 12:33 p37952382_190000_Linux-x86-64.zip
-rwxr-xr-x. 1 oracle dba 72847006 Dec 23 12:33 p6880880_190000_Linux-x86-64.zip
|
오라클 계정 접속 후 .bash_profile 에 아래 내용 추가(모든 노드에서 수행)
*2번노드에는 ORACLE_SID를 ORADB2로 설정
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
# su - oracle
$ vi .bash_profile
export ORACLE_BASE=/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/19c
export GRID_HOME=/app/grid/product/19c
export ORA_INVENTORY=/app/oraInventory
export ORACLE_SID=ORADB1;
export DB_UNIQUE_NAME=ORADB
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$GRID_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
export CV_ASSUME_DISTID=OL8
stty erase ^H
alias ss="sqlplus / as sysdba"
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"
|
적용(모든 노드에서 수행)
|
1
|
$ . ./.bash_profile
|
Grid Software 설치
grid 설치파일 압축해제(1번 노드에서 수행)
|
1
2
3
|
$ mkdir -p $GRID_HOME
$ cd $GRID_HOME
$ unzip -q /app/media/LINUX.X64_193000_grid_home.zip
|
OPatch 파일 교체(1번 노드에서 수행)
|
1
2
|
$ mv OPatch OPatchold
$ unzip -q /app/media/p6880880_190000_Linux-x86-64
|
OPatch 버전 확인(1번 노드에서 수행)
|
1
2
3
4
5
|
$ cd OPatch
$ ./opatch version -oh $GRID_HOME
OPatch Version: 12.2.0.1.47
OPatch succeeded.
|
패치파일 압축 해제(1번 노드에서 수행)
|
1
2
|
$ cd /app/media
$ unzip -q p37952382_190000_Linux-x86-64.zip
|
cvuqdisk 패키지 설치(root 유저로 수행)(1번 노드에서 수행)
|
1
2
3
4
5
6
7
|
# cd /app/grid/product/19c/cv/rpm
# rpm -ivh cvuqdisk-*.rpm
Verifying... ################################# [100%]
Preparing... ################################# [100%]
Using default group oinstall to install package
Updating / installing...
1:cvuqdisk-1.0.10-1 ################################# [100%]
|
2번 노드로 패키지 전송(1번 노드에서 수행)
|
1
2
3
|
# scp cvuqdisk-1.0.10-1.rpm 192.168.137.20:/root/
root@192.168.137.20's password:
cvuqdisk-1.0.10-1.rpm 100% 11KB 11.7MB/s 00:00
|
2번 노드에서 패키지 설치(2번 노드에서 수행)
|
1
2
3
4
5
6
|
# rpm -ivh cvuqdisk-1.0.10-1.rpm
Verifying... ################################# [100%]
Preparing... ################################# [100%]
Using default group oinstall to install package
Updating / installing...
1:cvuqdisk-1.0.10-1 ################################# [100%]
|
grid 설치(및 패치)(1번 노드에서 수행)
|
1
2
|
$ cd $GRID_HOME
$ ./gridSetup.sh -applyRU /app/media/37952382/37957391
|
참고로 applyRU 패치 로그는 아래 경로에서 확인 가능함(1번 노드에서 수행)
|
1
2
|
$ cd /app/grid/product/19c/cfgtoollogs/opatchauto
$ tail -300f opatchauto_2025-12-20_22-10-55_binary.log
|
Configure Oracle Grid Infrastructure for a New Cluster 선택

Configure an Oracle Standalone Cluster 선택

SCAN 정보 입력

ADD 선택

2번노드 정보 입력

SSH connectivity 선택, oracle 유저 패스워드 입력 - Setup 선택

ens224는 Public로, ens256은 ASM & Private로 선택

Use Oracle Flex ASM for storage 선택

No 선택

OCRVOTE 입력 후 Normal 선택
Change Discovry Path - ORCL:* 입력

disk 3개 선택 후 Next

gui로 설치 시도시 아래 단계에서 에러 발생함
ORCL:*(ORCL:DATA)로 진행하려 했지만 안됨
next 하면 [INS-30508] Invalid ASM disks. 발생하면서 안됨
이때 확인 누른 뒤 다시 next 누르면 넘어가짐

에러 재발생시 ok - Next 선택하면 정상적으로 넘어가짐

패스워드 oracle 입력

Yes 입력

Do not use IPMI 선택

EM 체크하지 않고 다음

그룹 dba로 선택

YES

oracle base 지정

스크립트 자동 수행 필요시 체크(본문에서는 미체크함)

사전 요구사항 체크중

SCAN 관련메세지는 SCAN IP가 DNS에 등록되어 있지 않아서 발생한 문제 모두 Ignore
swap을 8gb로 설정해 경고가 났지만 무시 가능함
물리메모리가 16gb 이하인 경우 메모리랑 동일하게 하면되서 10gb로 설정하면 되지만 본문에서는 하지않음

response 파일이 필요하다면 따로 저장 후 Install

grid 설치중

스크립트 노드별 순차 수행

orainstRoot.sh 각 노드에서 순서대로 수행
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
#1번 노드
# /app/oraInventory/orainstRoot.sh
Changing permissions of /app/oraInventory.
Adding read,write permissions for group.
Removing read,write,execute permissions for world.
Changing groupname of /app/oraInventory to oinstall.
The execution of the script is complete.
#2번 노드
# /app/oraInventory/orainstRoot.sh
Changing permissions of /app/oraInventory.
Adding read,write permissions for group.
Removing read,write,execute permissions for world.
Changing groupname of /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
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
|
#1번 노드
# /app/grid/product/19c/root.sh
Performing root user operation.
The following environment variables are set as:
ORACLE_OWNER= oracle
ORACLE_HOME= /app/grid/product/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: /app/grid/product/19c/crs/install/crsconfig_params
The log of current session can be found at:
/app/oracle/crsdata/oel19db1/crsconfig/rootcrs_oel19db1_2025-12-23_11-14-17PM.log
2025/12/23 23:14:25 CLSRSC-594: Executing installation step 1 of 19: 'ValidateEnv'.
2025/12/23 23:14:25 CLSRSC-594: Executing installation step 2 of 19: 'CheckFirstNode'.
2025/12/23 23:14:27 CLSRSC-594: Executing installation step 3 of 19: 'GenSiteGUIDs'.
2025/12/23 23:14:28 CLSRSC-594: Executing installation step 4 of 19: 'SetupOSD'.
Redirecting to /bin/systemctl restart rsyslog.service
2025/12/23 23:14:28 CLSRSC-594: Executing installation step 5 of 19: 'CheckCRSConfig'.
2025/12/23 23:14:29 CLSRSC-594: Executing installation step 6 of 19: 'SetupLocalGPNP'.
2025/12/23 23:14:40 CLSRSC-594: Executing installation step 7 of 19: 'CreateRootCert'.
2025/12/23 23:14:45 CLSRSC-594: Executing installation step 8 of 19: 'ConfigOLR'.
2025/12/23 23:15:00 CLSRSC-594: Executing installation step 9 of 19: 'ConfigCHMOS'.
2025/12/23 23:15:01 CLSRSC-594: Executing installation step 10 of 19: 'CreateOHASD'.
2025/12/23 23:15:06 CLSRSC-594: Executing installation step 11 of 19: 'ConfigOHASD'.
2025/12/23 23:15:12 CLSRSC-330: Adding Clusterware entries to file 'oracle-ohasd.service'
2025/12/23 23:15:35 CLSRSC-594: Executing installation step 12 of 19: 'SetupTFA'.
2025/12/23 23:15:35 CLSRSC-594: Executing installation step 13 of 19: 'InstallAFD'.
2025/12/23 23:15:35 CLSRSC-594: Executing installation step 14 of 19: 'InstallACFS'.
2025/12/23 23:15:41 CLSRSC-594: Executing installation step 15 of 19: 'InstallKA'.
2025/12/23 23:15:48 CLSRSC-594: Executing installation step 16 of 19: 'InitConfig'.
ASM has been created and started successfully.
[DBT-30001] Disk groups created successfully. Check /app/oracle/cfgtoollogs/asmca/asmca-251223PM111615.log for details.
2025/12/23 23:17:07 CLSRSC-482: Running command: '/app/grid/product/19c/bin/ocrconfig -upgrade oracle oinstall'
2025/12/23 23:17:15 CLSRSC-4002: Successfully installed Oracle Trace File Analyzer (TFA) Collector.
CRS-4256: Updating the profile
Successful addition of voting disk 2c815c8ea84b4f1bbffb78d7bc5ddc9b.
Successful addition of voting disk 3d7d8420e4454f12bf2d2e0a205e1fc4.
Successful addition of voting disk 0c2d23d37ef54f66bfc73f7f480b7eba.
Successfully replaced voting disk group with +OCRVOTE.
CRS-4256: Updating the profile
CRS-4266: Voting file(s) successfully replaced
## STATE File Universal Id File Name Disk group
-- ----- ----------------- --------- ---------
1. ONLINE 2c815c8ea84b4f1bbffb78d7bc5ddc9b (ORCL:OCR_VOTE1) [OCRVOTE]
2. ONLINE 3d7d8420e4454f12bf2d2e0a205e1fc4 (ORCL:OCR_VOTE2) [OCRVOTE]
3. ONLINE 0c2d23d37ef54f66bfc73f7f480b7eba (ORCL:OCR_VOTE3) [OCRVOTE]
Located 3 voting disk(s).
2025/12/23 23:18:46 CLSRSC-594: Executing installation step 17 of 19: 'StartCluster'.
2025/12/23 23:19:49 CLSRSC-343: Successfully started Oracle Clusterware stack
2025/12/23 23:19:49 CLSRSC-594: Executing installation step 18 of 19: 'ConfigNode'.
2025/12/23 23:20:57 CLSRSC-594: Executing installation step 19 of 19: 'PostConfig'.
2025/12/23 23:21:20 CLSRSC-325: Configure Oracle Grid Infrastructure for a Cluster ... succeeded
#2번 노드
# /app/grid/product/19c/root.sh
Performing root user operation.
The following environment variables are set as:
ORACLE_OWNER= oracle
ORACLE_HOME= /app/grid/product/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: /app/grid/product/19c/crs/install/crsconfig_params
The log of current session can be found at:
/app/oracle/crsdata/oel19db2/crsconfig/rootcrs_oel19db2_2025-12-23_11-24-12PM.log
2025/12/23 23:24:19 CLSRSC-594: Executing installation step 1 of 19: 'ValidateEnv'.
2025/12/23 23:24:20 CLSRSC-594: Executing installation step 2 of 19: 'CheckFirstNode'.
2025/12/23 23:24:21 CLSRSC-594: Executing installation step 3 of 19: 'GenSiteGUIDs'.
2025/12/23 23:24:21 CLSRSC-594: Executing installation step 4 of 19: 'SetupOSD'.
Redirecting to /bin/systemctl restart rsyslog.service
2025/12/23 23:24:23 CLSRSC-594: Executing installation step 5 of 19: 'CheckCRSConfig'.
2025/12/23 23:24:24 CLSRSC-594: Executing installation step 6 of 19: 'SetupLocalGPNP'.
2025/12/23 23:24:25 CLSRSC-594: Executing installation step 7 of 19: 'CreateRootCert'.
2025/12/23 23:24:25 CLSRSC-594: Executing installation step 8 of 19: 'ConfigOLR'.
2025/12/23 23:24:36 CLSRSC-594: Executing installation step 9 of 19: 'ConfigCHMOS'.
2025/12/23 23:24:36 CLSRSC-594: Executing installation step 10 of 19: 'CreateOHASD'.
2025/12/23 23:24:38 CLSRSC-594: Executing installation step 11 of 19: 'ConfigOHASD'.
2025/12/23 23:24:49 CLSRSC-330: Adding Clusterware entries to file 'oracle-ohasd.service'
2025/12/23 23:25:12 CLSRSC-594: Executing installation step 12 of 19: 'SetupTFA'.
2025/12/23 23:25:12 CLSRSC-594: Executing installation step 13 of 19: 'InstallAFD'.
2025/12/23 23:25:12 CLSRSC-594: Executing installation step 14 of 19: 'InstallACFS'.
2025/12/23 23:25:14 CLSRSC-594: Executing installation step 15 of 19: 'InstallKA'.
2025/12/23 23:25:15 CLSRSC-594: Executing installation step 16 of 19: 'InitConfig'.
2025/12/23 23:25:42 CLSRSC-594: Executing installation step 17 of 19: 'StartCluster'.
2025/12/23 23:26:22 CLSRSC-343: Successfully started Oracle Clusterware stack
2025/12/23 23:26:22 CLSRSC-594: Executing installation step 18 of 19: 'ConfigNode'.
2025/12/23 23:26:57 CLSRSC-594: Executing installation step 19 of 19: 'PostConfig'.
2025/12/23 23:27:24 CLSRSC-325: Configure Oracle Grid Infrastructure for a Cluster ... succeeded
2025/12/23 23:27:36 CLSRSC-4002: Successfully installed Oracle Trace File Analyzer (TFA) Collector.
|
스크립트 모두 수행후 ok 선택
SCAN IP가 DNS에 등록되어 있지 않아서 발생한 문제 무시 해도됨 OK

Yes 선택

Close 선택

grid 설치 후 점검(모든 노드에서 수행)
|
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
|
$ crsctl stat res -t
--------------------------------------------------------------------------------
Name Target State Server State details
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.LISTENER.lsnr
ONLINE ONLINE oel19db1 STABLE
ONLINE ONLINE oel19db2 STABLE
ora.chad
ONLINE ONLINE oel19db1 STABLE
ONLINE ONLINE oel19db2 STABLE
ora.net1.network
ONLINE ONLINE oel19db1 STABLE
ONLINE ONLINE oel19db2 STABLE
ora.ons
ONLINE ONLINE oel19db1 STABLE
ONLINE ONLINE oel19db2 STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.ASMNET1LSNR_ASM.lsnr(ora.asmgroup)
1 ONLINE ONLINE oel19db1 STABLE
2 ONLINE ONLINE oel19db2 STABLE
ora.LISTENER_SCAN1.lsnr
1 ONLINE ONLINE oel19db1 STABLE
ora.OCRVOTE.dg(ora.asmgroup)
1 ONLINE ONLINE oel19db1 STABLE
2 ONLINE ONLINE oel19db2 STABLE
ora.asm(ora.asmgroup)
1 ONLINE ONLINE oel19db1 Started,STABLE
2 ONLINE ONLINE oel19db2 Started,STABLE
ora.asmnet1.asmnetwork(ora.asmgroup)
1 ONLINE ONLINE oel19db1 STABLE
2 ONLINE ONLINE oel19db2 STABLE
ora.cvu
1 ONLINE ONLINE oel19db1 STABLE
ora.oel19db1.vip
1 ONLINE ONLINE oel19db1 STABLE
ora.oel19db2.vip
1 ONLINE ONLINE oel19db2 STABLE
ora.qosmserver
1 ONLINE ONLINE oel19db1 STABLE
ora.scan1.vip
1 ONLINE ONLINE oel19db1 STABLE
--------------------------------------------------------------------------------
|
정상
OCR_VOTE DISK 확인(모든 노드에서 수행)
|
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
|
$ ocrcheck
Status of Oracle Cluster Registry is as follows :
Version : 4
Total space (kbytes) : 901284
Used space (kbytes) : 83992
Available space (kbytes) : 817292
ID : 2107572551
Device/File Name : +OCRVOTE
Device/File integrity check succeeded
Device/File not configured
Device/File not configured
Device/File not configured
Device/File not configured
Cluster registry integrity check succeeded
Logical corruption check bypassed due to non-privileged user
$ crsctl query css votedisk
## STATE File Universal Id File Name Disk group
-- ----- ----------------- --------- ---------
1. ONLINE 2c815c8ea84b4f1bbffb78d7bc5ddc9b (ORCL:OCR_VOTE1) [OCRVOTE]
2. ONLINE 3d7d8420e4454f12bf2d2e0a205e1fc4 (ORCL:OCR_VOTE2) [OCRVOTE]
3. ONLINE 0c2d23d37ef54f66bfc73f7f480b7eba (ORCL:OCR_VOTE3) [OCRVOTE]
Located 3 voting disk(s).
|
정상
grid 패치정보 확인(모든 노드에서 수행)
|
1
2
3
4
5
6
7
8
|
$ $GRID_HOME/OPatch/opatch lspatches -oh $GRID_HOME
38124772;TOMCAT RELEASE UPDATE 19.0.0.0.0 (38124772)
37962946;OCW RELEASE UPDATE 19.28.0.0.0 (37962946)
37962938;ACFS RELEASE UPDATE 19.28.0.0.0 (37962938)
37960098;Database Release Update : 19.28.0.0.250715 (37960098)
36758186;DBWLM RELEASE UPDATE 19.0.0.0.0 (36758186)
OPatch succeeded.
|
정상
asmca 디스크 그룹 추가
asmca 진행(1번 노드에서 수행)
|
1
|
$ asmca
|
Disk Groups 선택 - Create 선택

Disk Group Name 에 DATA 입력 후 External 선택 후 DATA 디스크 선택

Disk Group Name 에 RECO 입력 후 External 선택 후 RECO 디스크 선택

OCRVOTE와 DATA, RECO 디스크 그룹이 존재하는것을 확인 후 Exit

diskgroup 추가후 확인(1번 노드에서 수행)
|
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
|
$ crsctl stat res -t
--------------------------------------------------------------------------------
Name Target State Server State details
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.LISTENER.lsnr
ONLINE ONLINE oel19db1 STABLE
ONLINE ONLINE oel19db2 STABLE
ora.chad
ONLINE ONLINE oel19db1 STABLE
ONLINE ONLINE oel19db2 STABLE
ora.net1.network
ONLINE ONLINE oel19db1 STABLE
ONLINE ONLINE oel19db2 STABLE
ora.ons
ONLINE ONLINE oel19db1 STABLE
ONLINE ONLINE oel19db2 STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.ASMNET1LSNR_ASM.lsnr(ora.asmgroup)
1 ONLINE ONLINE oel19db1 STABLE
2 ONLINE ONLINE oel19db2 STABLE
ora.DATA.dg(ora.asmgroup)
1 ONLINE ONLINE oel19db1 STABLE
2 ONLINE ONLINE oel19db2 STABLE
ora.LISTENER_SCAN1.lsnr
1 ONLINE ONLINE oel19db1 STABLE
ora.OCRVOTE.dg(ora.asmgroup)
1 ONLINE ONLINE oel19db1 STABLE
2 ONLINE ONLINE oel19db2 STABLE
ora.RECO.dg(ora.asmgroup)
1 ONLINE ONLINE oel19db1 STABLE
2 ONLINE ONLINE oel19db2 STABLE
ora.asm(ora.asmgroup)
1 ONLINE ONLINE oel19db1 Started,STABLE
2 ONLINE ONLINE oel19db2 Started,STABLE
ora.asmnet1.asmnetwork(ora.asmgroup)
1 ONLINE ONLINE oel19db1 STABLE
2 ONLINE ONLINE oel19db2 STABLE
ora.cvu
1 ONLINE ONLINE oel19db1 STABLE
ora.oel19db1.vip
1 ONLINE ONLINE oel19db1 STABLE
ora.oel19db2.vip
1 ONLINE ONLINE oel19db2 STABLE
ora.qosmserver
1 ONLINE ONLINE oel19db1 STABLE
ora.scan1.vip
1 ONLINE ONLINE oel19db1 STABLE
--------------------------------------------------------------------------------
|
정상적으로 ora.DATA.dg, ora.RECO.dg가 생성됨
DB 소프트웨어(엔진) 설치
db 설치 미디어 압축 해제(1번 노드에서 수행)
|
1
2
3
|
$ mkdir -p $ORACLE_HOME
$ cd $ORACLE_HOME
$ unzip -q /app/media/LINUX.X64_193000_db_home.zip
|
OPatch 파일 교체(1번 노드에서 수행)
|
1
2
|
$ mv OPatch OPatchold
$ unzip -q /app/media/p6880880_190000_Linux-x86-64
|
OPatch 버전 확인(1번 노드에서 수행)
|
1
2
3
4
5
|
$ cd OPatch
$ ./opatch version -oh $ORACLE_HOME
OPatch Version: 12.2.0.1.47
OPatch succeeded.
|
runinstaller 실행(1번 노드에서 수행)
|
1
2
3
4
5
6
|
$ cd $ORACLE_HOME
$ ./runInstaller -applyRU /app/media/37952382/37957391/
Preparing the home to patch...
Applying the patch /app/media/37952382/37957391/...
Successfully applied the patch.
(자동으로 패치 적용 후 GUI 창이 나타남)
|
gui가 로딩되기까지 시간이 조금 걸림
Set Up Software Only 선택

Oracle Real Application Cluster database installation 선택

노드 선택

Enterprise Edition 선택

oracle base 지정

group 는 모두 dba 로 지정

설치 중 root 권한으로 스크립트 실행하는 부분에서 자동로 스크립트 실행할지 여부 지정(본문에서는 체크 안함)

사전 요구사항 체크중

SCAN 관련메세지는 SCAN IP가 DNS에 등록되어 있지 않아서 발생한 문제 모두 Ignore

response 파일이 필요하다면 따로 저장 후 Install

db 엔진 설치중

스크립트 노드별로 수행 후 ok

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
|
#1번 노드
# /app/oracle/product/19c/root.sh Performing root user operation.
The following environment variables are set as:
ORACLE_OWNER= oracle
ORACLE_HOME= /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.
#2번 노드 # /app/oracle/product/19c/root.sh
Performing root user operation.
The following environment variables are set as:
ORACLE_OWNER= oracle
ORACLE_HOME= /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

db 엔진 설치 완료
OJVM 패치(모든 노드에서 수행)
|
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
|
$ cd /app/media/37952382/37847857/
$ opatch apply -oh $ORACLE_HOME
Oracle Interim Patch Installer version 12.2.0.1.47
Copyright (c) 2025, Oracle Corporation. All rights reserved.
Oracle Home : /app/oracle/product/19c
Central Inventory : /app/oraInventory
from : /app/oracle/product/19c/oraInst.loc
OPatch version : 12.2.0.1.47
OUI version : 12.2.0.7.0
Log file location : /app/oracle/product/19c/cfgtoollogs/opatch/opatch2025-12-25_15-31-46PM_1.log
Verifying environment and performing prerequisite checks...
OPatch continues with these patches: 37847857
Do you want to proceed? [y|n]
y <<-- y 입력
User Responded with: Y
All checks passed.
Please shutdown Oracle instances running out of this ORACLE_HOME on the local system.
(Oracle Home = '/app/oracle/product/19c')
Is the local system ready for patching? [y|n]
y <<-- y 입력
User Responded with: Y
Backing up files...
Applying interim patch '37847857' to OH '/app/oracle/product/19c'
Patching component oracle.javavm.server, 19.0.0.0.0...
Patching component oracle.javavm.server.core, 19.0.0.0.0...
Patching component oracle.rdbms.dbscripts, 19.0.0.0.0...
Patching component oracle.rdbms, 19.0.0.0.0...
Patching component oracle.javavm.client, 19.0.0.0.0...
Patch 37847857 successfully applied.
Log file location: /app/oracle/product/19c/cfgtoollogs/opatch/opatch2025-12-25_15-31-46PM_1.log
OPatch succeeded.
|
DB 패치정보 확인(모든 노드에서 수행)
|
1
2
3
4
5
6
|
$ $ORACLE_HOME/OPatch/opatch lspatches -oh $ORACLE_HOME
37847857;OJVM RELEASE UPDATE: 19.28.0.0.250715 (37847857)
37962946;OCW RELEASE UPDATE 19.28.0.0.0 (37962946)
37960098;Database Release Update : 19.28.0.0.250715 (37960098)
OPatch succeeded.
|
정상적으로 패치됨
DB 생성
dbca 진행(1번 노드에서 수행)
|
1
2
|
# su - oracle
$ dbca
|
Create a database 선택

Advanced configuration 선택

Database Type : Single, Custom Database 선택

노드 선택

SID 입력

데이터 저장영역 선택 +DATA

FRA, 아카이브 사용하지 않음

componets 필요시 선택 후 Next

메모리 설정

Character sets - Choose from the list of chracter sets - KO16MSWIN949 선택

체크 해제 후 Next

패스워드 입력

Yes

Create database 선택 후 Next

사전 요구사항 체크중

Scan Ignore 선택

Yes

Finish

설치중

설치 완료됨

grid 상태 확인
|
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
|
$ crsctl stat res -t
--------------------------------------------------------------------------------
Name Target State Server State details
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.LISTENER.lsnr
ONLINE ONLINE oel19db1 STABLE
ONLINE ONLINE oel19db2 STABLE
ora.chad
ONLINE ONLINE oel19db1 STABLE
ONLINE ONLINE oel19db2 STABLE
ora.net1.network
ONLINE ONLINE oel19db1 STABLE
ONLINE ONLINE oel19db2 STABLE
ora.ons
ONLINE ONLINE oel19db1 STABLE
ONLINE ONLINE oel19db2 STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.ASMNET1LSNR_ASM.lsnr(ora.asmgroup)
1 ONLINE ONLINE oel19db1 STABLE
2 ONLINE ONLINE oel19db2 STABLE
ora.DATA.dg(ora.asmgroup)
1 ONLINE ONLINE oel19db1 STABLE
2 ONLINE ONLINE oel19db2 STABLE
ora.LISTENER_SCAN1.lsnr
1 ONLINE ONLINE oel19db1 STABLE
ora.OCRVOTE.dg(ora.asmgroup)
1 ONLINE ONLINE oel19db1 STABLE
2 ONLINE ONLINE oel19db2 STABLE
ora.RECO.dg(ora.asmgroup)
1 ONLINE ONLINE oel19db1 STABLE
2 ONLINE ONLINE oel19db2 STABLE
ora.asm(ora.asmgroup)
1 ONLINE ONLINE oel19db1 Started,STABLE
2 ONLINE ONLINE oel19db2 Started,STABLE
ora.asmnet1.asmnetwork(ora.asmgroup)
1 ONLINE ONLINE oel19db1 STABLE
2 ONLINE ONLINE oel19db2 STABLE
ora.cvu
1 ONLINE ONLINE oel19db1 STABLE
ora.oel19db1.vip
1 ONLINE ONLINE oel19db1 STABLE
ora.oel19db2.vip
1 ONLINE ONLINE oel19db2 STABLE
ora.oradb.db
1 ONLINE ONLINE oel19db1 Open,HOME=/app/oracl
e/product/19c,STABLE
2 ONLINE ONLINE oel19db2 Open,HOME=/app/oracl
e/product/19c,STABLE
ora.qosmserver
1 ONLINE ONLINE oel19db1 STABLE
ora.scan1.vip
1 ONLINE ONLINE oel19db1 STABLE
--------------------------------------------------------------------------------
|
정상
리스너 상태 확인
|
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
|
$ lsnrctl status
LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 25-DEC-2025 11:00:41
Copyright (c) 1991, 2025, Oracle. All rights reserved.
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 19.0.0.0.0 - Production
Start Date 25-DEC-2025 23:21:11
Uptime 0 days 11 hr. 39 min. 30 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /app/grid/product/19c/network/admin/listener.ora
Listener Log File /app/oracle/diag/tnslsnr/oel19db1/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.137.10)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.137.100)(PORT=1521)))
Services Summary...
Service "+ASM" has 1 instance(s).
Instance "+ASM1", status READY, has 1 handler(s) for this service...
Service "+ASM_DATA" has 1 instance(s).
Instance "+ASM1", status READY, has 1 handler(s) for this service...
Service "+ASM_OCRVOTE" has 1 instance(s).
Instance "+ASM1", status READY, has 1 handler(s) for this service...
Service "+ASM_RECO" has 1 instance(s).
Instance "+ASM1", status READY, has 1 handler(s) for this service...
Service "ORADB" has 1 instance(s).
Instance "ORADB1", status READY, has 1 handler(s) for this service...
Service "ORADBXDB" has 1 instance(s).
Instance "ORADB1", status READY, has 1 handler(s) for this service...
The command completed successfully
|
정상
srvctl으로 상태 확인
|
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 ORADB
Database unique name: ORADB
Database name: ORADB
Oracle home: /app/oracle/product/19c
Oracle user: oracle
Spfile: +DATA/ORADB/PARAMETERFILE/spfile.268.1220698623
Password file: +DATA/ORADB/PASSWORD/pwdoradb.256.1220697131
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: ORADB1,ORADB2
Configured nodes: oel19db1,oel19db2
CSS critical: no
CPU count: 0
Memory target: 0
Maximum memory: 0
Default network number for database services:
Database is administrator managed
|
db 상태 확인
|
1
2
3
4
5
6
7
|
$ 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
|
정상임
결론 :
리눅스 9 버전에서 asmlib 버전3을 이용해서 오라클 RAC를 설치해보았음
asmlib3 버전부터는 oracleasm createdisk 명령을 수행해도 /dev/oracleasm에 파일이 생기지 않음, 대신 /dev/disk/by-label에 생기는데 이부분을 참고해서 설치해야함
2번 노드에서 oracleasm listdisk시 바로 디스크가 안보이는 경우 partprobe 명령을 수행해줘야 제대로 보였음
그리고 gridSetup gui에서 diskgroup 생성 부분에서 에러가 발생하지만 이부분에서 next를 다시 누르면 넘어가졌음
이부분은 버그일수도 있지만 관련된 정확한 문서는 찾지 못했음
참조 :
Bug 35578393 - Warnings During Oracle Gateway pg4appc after 19c(19.19) install on ol9 (Doc ID 35578393.8)
19c regular client installation on OL9/RHEL9 using Silent method aborted after relink error "Error in invoking target 'client_sharedlib' of makefile '$ORACLE_HOME/rdbms/lib/ins_rdbms.mk'" (Doc ID 3008635.1)
Requirements for Installing Oracle Database/Client 19c (19.22 or higher) on OL9 or RHEL9 64-bit (x86-64) (Doc ID 2982833.1)
19.x: ./runInstaller failed with " PRVF-7532 : Package "compat-libcap1" is missing on node "(HOSTNAME)" " on OL9/RHEL9 (Doc ID 3018358.1)
19c Database Installation/relink fails with :"Error in invoking target 'libasmclntsh19.ohso libasmperl19.ohso client_sharedlib' of makefile ins_rdbms.mk " (Doc ID 2760289.1)
Primary Note of Linux OS Requirements for Database Server (Doc ID 851598.1)
OL9:ORA-15186: ASMLIB Error Function = [asm_init] [io_uring not permitted for this process] (Doc ID 3108578.1)
ASM and Database Services Not Starting After 19.27 RU Patching (STANDALONE) (Doc ID 3092401.1)
CVU Report PRVE-3155 error (Doc ID 2630514.1)
Wrong DiscoveryString /dev/*: rootupgrade.sh/root.sh hangs (Doc ID 1916106.1)
https://docs.oracle.com/en/database/oracle/oracle-database/19/cwlin/supported-oracle-linux-9-distributions-for-x86-64.html
https://docs.oracle.com/en/database/oracle/oracle-database/19/ladbi/supported-oracle-linux-9-distributions-for-x86-64.html
https://yum.oracle.com/repo/OracleLinux/OL9/addons/x86_64/index.html
https://www.oracle.com/linux/downloads/linux-asmlib-v9-downloads.html
https://docs.oracle.com/en/operating-systems/oracle-linux/asmlib/
https://dataforum.io/pages/viewpage.action?pageId=5734410
https://dev.to/vahidusefzadeh/installing-oracle-grid-infrastructure-1925-on-oracle-linux-95-using-asmlib-3-4bki
https://blog.purestorage.com/purely-technical/installation-configuration-oracle-asmlib-v3-1-on-oracle-linux-9/
https://positivemh.tistory.com/765
https://positivemh.tistory.com/175
https://positivemh.tistory.com/762
https://positivemh.tistory.com/763
https://positivemh.tistory.com/764
https://positivemh.tistory.com/765
https://positivemh.tistory.com/1321
'ORACLE > Install' 카테고리의 다른 글
| Oracle Linux 9.6에 Oracle 19c Restart 설치 가이드 (0) | 2025.12.31 |
|---|---|
| 오라클 26ai 23.26 골드이미지 패치 가이드 (0) | 2025.10.15 |
| 오라클 19c opatch시 silent 옵션 (0) | 2025.09.24 |
| 오라클 설치, 패치 파일 다운로드시 wget 이용 방법 (0) | 2025.07.23 |
| 오라클 23ai 23.7 골드이미지 패치 가이드 (0) | 2025.06.27 |
