■ [2025-11-23] Oracle 19c 2 Node RAC 환경에서 RU 19.28에서 19.29 골드이미지로 out-of-place Switch Patching 작업 과정
[제목]
Oracle 19c 2 Node RAC 환경에서 RU 19.28에서 19.29 골드이미지로 out-of-place Switch Patching 작업 과정
[테스트 개요]
Oracle 19c RAC(2노드) 환경에서 RU 19.28 → 19.29 골드이미지 기반 Out-of-Place Switch Patching을 무중단(세션 지속) 방식으로 수행하는 전체 절차를 검증했다.
각 노드의 Grid Home과 DB Home을 19.29로 순차적으로 스위치, root.sh 실행 및 서비스 재기동 후 datapatch 적용·검증, Invalid 객체 검사까지 완료하였다.
이후 19.28로 롤백 및 재적용 테스트, 마지막으로 **19.28 홈 완전 제거(deinstall)**까지 전체 생명주기 실습을 수행하였다.
[테스트
환경]
<패치 대상 DB>
OS : Oracle
Linux Server 8.10 (grep ^PRETTY_NAME= /etc/os-release | cut -d= -f2- | tr -d
'"')
OS Kernal : 5.15.0-206.153.7.1.el8uek.x86_64 (uname -r)
Oracle
Version : Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
(echo -e "set pages 0 lines 200 feedback off heading off\nselect banner from
v\$version where banner like 'Oracle Database%';" | sqlplus -s / as
sysdba)
Oracle Configuration
DB명 : ORA19RF (echo -e
'set pages 0 feedback off heading off verify off\nselect '\''DB명 : '\''||name
from v$database;' | sqlplus -s / as sysdba) '
PDB 정보
Non-CDB
RAC
Node 1
Hostname : ol8ora19rf1 (hostname)
Public
IP : 192.168.240.31 (getent ahostsv4 `hostname` | awk '{print $1;
exit}')
Instance Name : ORA19RF1 (echo -e 'set pages 0 feedback
off heading off verify off\nselect '\''Instance Name : '\''||instance_name from
v$instance;' | sqlplus -s / as sysdba) '
RAC Node 2
Hostname : ol8ora19rf2 (hostname)
Public IP : 192.168.240.32
(getent ahostsv4 `hostname` | awk '{print $1; exit}')
Instance
Name : ORA19RF1 (echo -e 'set pages 0 feedback off heading off verify
off\nselect '\''Instance Name : '\''||instance_name from v$instance;' | sqlplus
-s / as sysdba) '
Patch Info
Grid (opatch lspatches) (grid os
user)
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)
--패치
작업 후
38380425;TOMCAT RELEASE UPDATE 19.0.0.0.0 (38380425)
38322923;OCW RELEASE UPDATE 19.29.0.0.0 (38322923)
38311528;ACFS
RELEASE UPDATE 19.29.0.0.0 (38311528)
38291812;Database Release Update
: 19.29.0.0.251021 (38291812)
36758186;DBWLM RELEASE UPDATE 19.0.0.0.0
(36758186)
Oracle (opatch lspatches) (oracle os user)
37962946;OCW
RELEASE UPDATE 19.28.0.0.0 (37962946)
37960098;Database Release Update
: 19.28.0.0.250715 (37960098)
--패치작업 후
38322923;OCW RELEASE UPDATE 19.29.0.0.0 (38322923)
38291812;Database Release Update : 19.29.0.0.251021
(38291812)
<RU 패치
대상 DB로 트랜잭션을 지속적으로 발생 시키는 서버>
OS : Oracle Linux Server 8.10 (grep ^PRETTY_NAME=
/etc/os-release | cut -d= -f2- | tr -d '"')
OS
Kernal : 5.15.0-206.153.7.1.el8uek.x86_64 (uname -r)
Oracle Version :
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 -
Production
(echo -e "set pages 0 lines 200 feedback off heading off\nselect banner from
v\$version where banner like 'Oracle Database%';" | sqlplus -s / as
sysdba)
[내용]
1. RU
패치 대상 DB에 지속적인 트랜잭션 발생
1-1. 신규 테이블 생성
--1번 노드 (oracle os
user)
[ORA19RF1:oracle@ol8ora19rf1][/home/oracle]$ alias
st
alias st='rlwrap sqlplus tuner/oracle'
[ORA19RF1:oracle@ol8ora19rf1][/home/oracle]$ st
SQL*Plus:
Release 19.0.0.0.0 - Production on Wed Nov 19 23:08:11 2025
Version
19.28.0.0.0
Copyright (c) 1982, 2025, Oracle. All rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release
19.0.0.0.0 - Production
Version 19.28.0.0.0
[ol8ora19rf1]<TUNER@ORA19RF1>$
drop table tuner.tb_drain_test_12
purge;
create
table tuner.tb_drain_test_12
(
test_no number(15)
, inst_id
number(15)
, constraint pk_tb_drain_test_12 primary key
(test_no)
)
;
drop table tuner.tb_drain_test_21 purge;
create
table tuner.tb_drain_test_21
(
test_no number(15)
, inst_id
number(15)
, constraint pk_tb_drain_test_21 primary key
(test_no)
)
;
1-2. 타
서버에서 패치 대상 DB에 접속해서 트랜잭션 발생 시키기
1-2-1. 패치 대상 DB의 리스너 정보 확인
--1번 노드 (grid os
user)
[+ASM1:grid@ol8ora19rf1][/home/grid]$
lsnrctl status
LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 19-NOV-2025 23:21:52
Copyright (c) 1991, 2025, Oracle. All rights reserved.
Connectingto(DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER)))
STATUS
of the
LISTENER
------------------------
Alias
LISTENER
Version
TNSLSNR for Linux: Version 19.0.0.0.0 - Production
Start
Date
19-NOV-2025
19:41:26
Uptime
0 days 3 hr. 40 min. 26 sec
Trace
Level
off
Security
ON: Local OS
Authentication
SNMP
OFF
Listener Parameter File
/u01/app/19c/grid/network/admin/listener.ora
Listener Log
File
/u01/app/oracle/diag/tnslsnr/ol8ora19rf1/listener/alert/log.xml
Listening
Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.240.31)(PORT=1521))) -->
Pubilc IP임
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.240.34)(PORT=1521))) -->
VIP 임
Services Summary...
Service "+ASM" has 1 instance(s).
Instance "+ASM1", status READY, has 1 handler(s) for this service...
Service
"+ASM_CRS" has 1 instance(s).
Instance "+ASM1", status READY, has 1
handler(s) for this service...
Service "+ASM_DATA1" has 1
instance(s).
Instance "+ASM1", status READY, has 1 handler(s) for this
service...
Service "+ASM_FRA1" has 1 instance(s).
Instance "+ASM1",
status READY, has 1 handler(s) for this service...
Service "ORA19RF" has 1 instance(s). --> 접속
대상 서비스 임
Instance "ORA19RF1", status READY, has
1 handler(s) for this service...
Service "ORA19RFXDB" has 1
instance(s).
Instance "ORA19RF1", status READY, has 1 handler(s) for
this service...
The command completed
successfully
--2번 노드 (grid os
user)
[+ASM2:grid@ol8ora19rf2][/home/grid]$
lsnrctl status
LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 19-NOV-2025 23:22:16
Copyright (c) 1991, 2025, Oracle. All rights reserved.
Connectingto(DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER)))
STATUS
of the
LISTENER
------------------------
Alias
LISTENER
Version
TNSLSNR for Linux: Version 19.0.0.0.0 - Production
Start
Date
19-NOV-2025
19:41:34
Uptime
0 days 3 hr. 40 min. 42 sec
Trace
Level
off
Security
ON: Local OS
Authentication
SNMP
OFF
Listener Parameter File
/u01/app/19c/grid/network/admin/listener.ora
Listener Log
File
/u01/app/oracle/diag/tnslsnr/ol8ora19rf2/listener/alert/log.xml
Listening
Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.240.32)(PORT=1521))) -->
Pubilc IP임
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.240.35)(PORT=1521))) -->
VIP 임
Services Summary...
Service "+ASM" has 1 instance(s).
Instance "+ASM2", status READY, has 1 handler(s) for this service...
Service
"+ASM_CRS" has 1 instance(s).
Instance "+ASM2", status READY, has 1
handler(s) for this service...
Service "+ASM_DATA1" has 1
instance(s).
Instance "+ASM2", status READY, has 1 handler(s) for this
service...
Service "+ASM_FRA1" has 1 instance(s).
Instance "+ASM2",
status READY, has 1 handler(s) for this service...
Service "ORA19RF" has 1 instance(s). --> 접속
대상 서비스 임
Instance "ORA19RF2", status READY, has
1 handler(s) for this service...
Service "ORA19RFXDB" has 1
instance(s).
Instance "ORA19RF2", status READY, has 1 handler(s) for
this service...
The command completed
successfully
1-2-2. 타 서버에서 패치 대상 DB로 접속하기 위해 tnsnames.ora 정보 추가
--ol8ora19rs1 서버로 접속 (oracle os user)
[ORA19RS1:oracle@ol8ora19rs1][/home/oracle]$ alias cdt
alias
cdt='cd $ORACLE_HOME/network/admin'
[ORA19RS1:oracle@ol8ora19rs1][/home/oracle]$ cdt
[ORA19RS1:oracle@ol8ora19rs1][/u01/app/oracle/product/19c/db_1/network/admin]$
vi tnsnames.ora
[ORA19RS1:oracle@ol8ora19rs1][/u01/app/oracle/product/19c/db_1/network/admin]$
cat tnsnames.ora
# tnsnames.ora Network Configuration File:
/u01/app/oracle/product/19c/db_1/network/admin/tnsnames.ora
# Generated by Oracle configuration
tools.
ORA19RS =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST =
ol8ora19rs-scan)(PORT = 1521))
(CONNECT_DATA =
(SERVER =
DEDICATED)
(SERVICE_NAME
= ORA19RS)
)
)
ORA19RS1P1 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST =
192.168.240.41)(PORT = 1521))
(CONNECT_DATA =
(SERVICE_NAME = ora19rsp1)
)
)
--패치 대상 DB의 정보 추가
--1번 노드를 우선으로 접속
ORA19RF12 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL =
TCP)(HOST = 192.168.240.31)(PORT = 1521))
(ADDRESS = (PROTOCOL =
TCP)(HOST = 192.168.240.32)(PORT = 1521))
(LOAD_BALANCE = OFF)
(FAILOVER = ON)
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ORA19RF)
(FAILOVER_MODE = (TYPE = SELECT)(METHOD = BASIC))
)
)
--2번 노드를 우선으로
접속
ORA19RF21 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL =
TCP)(HOST = 192.168.240.32)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.240.31)(PORT = 1521))
(LOAD_BALANCE = OFF)
(FAILOVER = ON)
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ORA19RF)
(FAILOVER_MODE = (TYPE = SELECT)(METHOD = BASIC))
)
)
1-2-3. 타서버에서 패치 대상 DB에 접속 가능한지 확인
--1번 노드로 접속 (1번 노드 접속 불가 시 2번
노드로 접속하는 것임)
[ORA19RS1:oracle@ol8ora19rs1][/home/oracle]$ sqlplus
tuner/oracle@ORA19RF12
SQL*Plus: Release
19.0.0.0.0 - Production on Wed Nov 19 23:24:11 2025
Version 19.28.0.0.0
Copyright (c) 1982, 2025, Oracle. All rights reserved.
Last Successful login time: Wed Nov 19 2025 23:08:11 +09:00
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 -
Production
Version 19.28.0.0.0
Elapsed: 00:00:00.00
[ol8ora19rs1]<TUNER@ORA19RF12>$
col
instance_number for 999
col host_name for a20
select instance_number, host_name from
v$instance;
INSTANCE_NUMBER
HOST_NAME
--------------- --------------------
1 ol8ora19rf1
1 row selected.
Elapsed: 00:00:00.00
--2번 노드로 접속 (2번 노드 접속 불가 시 1번
노드로 접속하는 것임)
[ORA19RS1:oracle@ol8ora19rs1][/home/oracle]$ sqlplus
tuner/oracle@ORA19RF21
SQL*Plus: Release
19.0.0.0.0 - Production on Thu Nov 20 23:21:58 2025
Version 19.28.0.0.0
Copyright (c) 1982, 2025, Oracle. All rights reserved.
Last Successful login time: Thu Nov 20 2025 23:21:37 +09:00
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 -
Production
Version 19.28.0.0.0
[ol8ora19rs1]<TUNER@ORA19RF21>$
col
instance_number for 999
col host_name for a20
select instance_number, host_name from
v$instance;
INSTANCE_NUMBER
HOST_NAME
--------------- --------------------
2 ol8ora19rf2
1 row selected.
Elapsed: 00:00:00.00
1-2-4. 타서버에서 RU 패치 대상 DB에 3초마다 한번 씩 트랜잭션 발생 시키기
--신규 ssh 창 열기 (ol8ora19rs1 서버의
oracle os user)
--ol8ora19rs1 서버에서 ORA19RF1 노드를 우선 접속하여
tuner.tb_drain_test_12 테이블에 3초마다 한건 씩 INSERT
[ORA19RS1:oracle@ol8ora19rs1][/home/oracle]$ vi
/home/oracle/run_drain_test_12.sh
[ORA19RS1:oracle@ol8ora19rs1][/home/oracle]$ cat
/home/oracle/run_drain_test_12.sh
#!/bin/bash
echo "------------------run_drain_test_12.sh START------------------"
DB_CONN="tuner/oracle@ORA19RF12"
while true
do
sqlplus -s "$DB_CONN"
<<EOF
set echo off
set verify off
set feedback off
set timing off
set termout off
set heading off
set pages
0
col inst_id
new_value V_INST_ID
select instance_number inst_id
from v\$instance;
col next_no
new_value V_NEXT_NO
select nvl(max(test_no), 0) + 1
next_no
from
tuner.tb_drain_test_12;
insert into
tuner.tb_drain_test_12 (test_no, inst_id)
values
(&V_NEXT_NO, &V_INST_ID);
commit;
set termout on
set pages 50
set heading on
set lines 200
col test_no for
999999999999999 heading 'TEST_NO'
col inst_id for
999999999999999 heading 'INST_ID'
select *
from (
select *
from
tuner.tb_drain_test_12
order by
test_no desc
)
where rownum <= 1
;
EOF
echo "[$(date)]
Inserted and Checked last row"
echo
"--------------------------------------------------"
sleep 3
done
[ORA19RS1:oracle@ol8ora19rs1][/home/oracle]$ chmod 775
/home/oracle/run_drain_test_12.sh
[ORA19RS1:oracle@ol8ora19rs1][/home/oracle]$ sh
/home/oracle/run_drain_test_12.sh
--> 지금부터 3초 마다 한번 씩 ORA19RF DB 내
tuner.tb_drain_test_12 테이블에 INSERT
--신규 ssh 창 열기 (ol8ora19rs1 서버의
oracle os user)
--ol8ora19rs1 서버에서
ORA19RF2 노드를 우선 접속하여 tuner.tb_drain_test_21 테이블에 3초마다 한건 씩
INSERTT
[ORA19RS1:oracle@ol8ora19rs1][/home/oracle]$ vi
/home/oracle/run_drain_test_21.sh
[ORA19RS1:oracle@ol8ora19rs1][/home/oracle]$ cat
/home/oracle/run_drain_test_21.sh
#!/bin/bash
echo "------------------run_drain_test_21.sh START------------------"
DB_CONN="tuner/oracle@ORA19RF21"
while true
do
sqlplus -s "$DB_CONN"
<<EOF
set echo off
set verify off
set feedback off
set timing off
set termout off
set heading off
set pages
0
col inst_id
new_value V_INST_ID
select instance_number inst_id
from v\$instance;
col next_no
new_value V_NEXT_NO
select nvl(max(test_no), 0) + 1
next_no
from
tuner.tb_drain_test_21;
insert into
tuner.tb_drain_test_21 (test_no, inst_id)
values
(&V_NEXT_NO, &V_INST_ID);
commit;
set termout on
set pages 50
set heading on
set lines 200
col test_no for
999999999999999 heading 'TEST_NO'
col inst_id for
999999999999999 heading 'INST_ID'
select *
from (
select *
from
tuner.tb_drain_test_21
order by
test_no desc
)
where rownum <= 1
;
EOF
echo "[$(date)]
Inserted and Checked last row"
echo
"--------------------------------------------------"
sleep 3
done
[ORA19RS1:oracle@ol8ora19rs1][/home/oracle]$ chmod 775
/home/oracle/run_drain_test_21.sh
[ORA19RS1:oracle@ol8ora19rs1][/home/oracle]$ sh
/home/oracle/run_drain_test_21.sh
--> 지금부터 3초 마다 한번 씩 ORA19RF DB 내
tuner.tb_drain_test_21 테이블에 INSERT
2. 골드 이미지 다운로드 및 업로드 (RU 19.29 버전의 Grid 및 Oracle 골드 이미지)
골드 이미지는 Oracle SR 진행을 통해서 구할 수 있음
(Oracle SR -> "Install, Upgrade & Downgrade, Patching" -> "Gold Image Request")
--> 다운로드 완료 후
--1번 노드에만 업로드 (grid os
user)
[+ASM1:grid@ol8ora19rf1][/home/grid]$ mkdir -pv
/tmp/19.29
mkdir: created directory '/tmp/19.29'
[+ASM1:grid@ol8ora19rf1][/home/grid]$ cd
/tmp/19.29/
--파일 업로드
[+ASM1:grid@ol8ora19rf1][/tmp/19.29]$ ls -l
/tmp/19.29/
total 10655136
-rw-r--r--. 1 grid oinstall 4816072874 Nov 21 22:51
db1929000.zip
-rw-r--r--. 1 grid oinstall 6094778952 Nov
21 22:54 grid1929000.zip
--> 업로드 된 파일을 확인함
3. Grid RU 19.29 소프트웨어 설치 디렉토리 준비
--1번 노드(root os user로
접속)
[root@ol8ora19rf1][/root]$ echo
$GRID_HOME
/u01/app/19c/grid
[root@ol8ora19rf1][/root]$ mkdir -pv
/u01/app/19.29/grid
mkdir: created directory '/u01/app/19.29'
mkdir: created directory
'/u01/app/19.29/grid'
[root@ol8ora19rf1][/root]$ ls -l
/u01/app/19c
total 4
drwxr-xr-x. 93 root
oinstall 4096 Sep 29 22:47 grid
[root@ol8ora19rf1][/root]$ chown -R grid:oinstall
/u01/app/19.29
[root@ol8ora19rf1][/root]$ chmod -R 775
/u01/app/19.29
--2번 노드(root os user로
접속)
[root@ol8ora19rf2][/root]$ echo
$GRID_HOME
/u01/app/19c/grid
[root@ol8ora19rf2][/root]$ mkdir -pv
/u01/app/19.29/grid
mkdir: created directory '/u01/app/19.29'
mkdir: created directory
'/u01/app/19.29/grid'
[root@ol8ora19rf2][/root]$ ls -l
/u01/app/19c
total 4
drwxr-xr-x. 93 root oinstall 4096 Sep 29 22:47
grid
[root@ol8ora19rf2][/root]$ chown -R grid:oinstall
/u01/app/19.29
[root@ol8ora19rf2][/root]$ chmod -R 775
/u01/app/19.29
4. grid 및 oracle os user의 RAC 노드간 ssh 자동 접속 테스트
4-1. /etc/hosts 정보 조회
--1번 노드(grid os
user)
[+ASM1:grid@ol8ora19rf1][/home/grid]$ cat
/etc/hosts
127.0.0.1 localhost localhost.localdomain
localhost4 localhost4.localdomain4
::1
localhost localhost.localdomain localhost6 localhost6.localdomain6
### Public IP
192.168.240.31
ol8ora19rf1
192.168.240.32
ol8ora19rf2
### Private IP
10.0.3.31 ol8ora19rf1-priv
10.0.3.32 ol8ora19rf2-priv
### Virtual IP
192.168.240.34 ol8ora19rf1-vip
192.168.240.35 ol8ora19rf2-vip
### DNS
192.168.240.37 ol8ora19rf-scan
192.168.240.38 ol8ora19rf-scan
192.168.240.39 ol8ora19rf-scan
--2번 노드(grid os
user)
[+ASM2:grid@ol8ora19rf2][/home/grid]$ cat /etc/hosts
127.0.0.1 localhost localhost.localdomain
localhost4 localhost4.localdomain4
::1
localhost localhost.localdomain localhost6 localhost6.localdomain6
### Public IP
192.168.240.31
ol8ora19rf1
192.168.240.32
ol8ora19rf2
### Private IP
10.0.3.31 ol8ora19rf1-priv
10.0.3.32 ol8ora19rf2-priv
### Virtual IP
192.168.240.34 ol8ora19rf1-vip
192.168.240.35 ol8ora19rf2-vip
### DNS
192.168.240.37 ol8ora19rf-scan
192.168.240.38 ol8ora19rf-scan
192.168.240.39 ol8ora19rf-scan
4-2. grid os user의 RAC 노드간 ssh 자동 접속 테스트
--1번 노드(grid os
user)
[+ASM1:grid@ol8ora19rf1][/home/grid]$ ssh ol8ora19rf2
date
Fri Nov 21
23:48:59 KST 2025
--2번 노드(grid os
user)
[+ASM2:grid@ol8ora19rf2][/home/grid]$ ssh ol8ora19rf1
date
Fri Nov 21
23:49:31 KST 2025
--만약 자동 ssh 접속 설정이
안되어 있다면 아래의 명령으로 수행하면 됨
--grid os user로 접속
$GRID_HOME/oui/prov/resources/scripts/sshUserSetup.sh -user
grid -hosts "ol8ora19rf1 ol8ora19rf2" -noPromptPassphrase
-advanced
4-3. oracle os user의 RAC 노드간 ssh 자동 접속 테스트
--1번 노드(oracle os
user)
[ORA19RF1:oracle@ol8ora19rf1][/home/oracle]$ ssh
ol8ora19rf2 date
Sun Nov 23 11:27:33 KST 2025
--2번 노드(oracle os
user)
[ORA19RF1:oracle@ol8ora19rf1][/home/oracle]$ ssh
ol8ora19rf1 date
Sun Nov 23 11:27:53 KST 2025
--만약 자동 ssh 접속 설정이
안되어 있다면 아래의 명령으로 수행하면 됨
--grid os user로 접속
$GRID_HOME/oui/prov/resources/scripts/sshUserSetup.sh -user
oracle -hosts "ol8ora19rf1 ol8ora19rf2" -noPromptPassphrase
-advanced
5. Grid RU 19.29 소프트웨어 설치
--1번 노드 (grid os
user)
[+ASM1:grid@ol8ora19rf1][/home/grid]$ cat >>
/home/grid/.bash_profile << EOF
export
GRID_HOME_1929=/u01/app/19.29/grid
EOF
[+ASM1:grid@ol8ora19rf1][/home/grid]$ source
/home/grid/.bash_profile
[+ASM1:grid@ol8ora19rf1][/home/grid]$ cd
$GRID_HOME_1929
[+ASM1:grid@ol8ora19rf1][/u01/app/19.29/grid]$ unzip -oq
/tmp/19.29/grid1929000.zip -d $GRID_HOME_1929
[+ASM1:grid@ol8ora19rf1][/u01/app/19.29/grid]$ echo
$ORACLE_HOME
/u01/app/19c/grid
[+ASM1:grid@ol8ora19rf1][/u01/app/19.29/grid]$ export
ORACLE_HOME=$GRID_HOME_1929
[+ASM1:grid@ol8ora19rf1][/u01/app/19.29/grid]$ echo
$ORACLE_HOME
/u01/app/19.29/grid
[+ASM1:grid@ol8ora19rf1][/u01/app/19.29/grid]$
$ORACLE_HOME/gridSetup.sh -executePrereqs -silent
Launching Oracle
Grid Infrastructure Setup Wizard...
Prerequisite checks executed successfully.
--상세한 로그를 보고 싶다면 아래의 명령어로 사전
체크
[+ASM1:grid@ol8ora19rf1][/u01/app/19.29/grid]$
$ORACLE_HOME/gridSetup.sh -executePrereqs -silent -loglevel finest
-debug
...생략
[init.flowWorker] [
2025-11-23 11:35:04.312 KST ] [FixupUtility.getAllFixupTasks:624] The
total number of fix-up tasks is 0
[init.flowWorker] [
2025-11-23 11:35:04.312 KST ] [FixupUtility.getFixableTaskList:607] The
total number of fixable tasks is 0
Prerequisite checks
executed successfully.
[+ASM1:grid@ol8ora19rf1][/u01/app]$ echo
$ORACLE_BASE
/u01/app/oracle
[+ASM1:grid@ol8ora19rf1][/u01/app]$ export
ORA_INVENTORY=/u01/app/oraInventory
[+ASM1:grid@ol8ora19rf1][/u01/app]$ export
CLUSTER_NAME=$(olsnodes -c)
[+ASM1:grid@ol8ora19rf1][/u01/app]$ export
CLUSTER_NODES=$(olsnodes | tr '\n' ','| sed 's/,\s*$//')
[+ASM1:grid@ol8ora19rf1][/u01/app]$ echo $ORA_INVENTORY
/u01/app/oraInventory
[+ASM1:grid@ol8ora19rf1][/u01/app]$ echo
$CLUSTER_NAME
ol8ora19rf
[+ASM1:grid@ol8ora19rf1][/u01/app]$ echo
$CLUSTER_NODES
ol8ora19rf1,ol8ora19rf2
--19.29 RU Grid 소프트웨어 설치
(1번 노드에서 수행)
[+ASM1:grid@ol8ora19rf1][/home/grid]$ echo
$ORACLE_HOME
/u01/app/19.29/grid
[+ASM1:grid@ol8ora19rf1][/home/grid]$ awk -F= 'NF
&& $1 !~ /^#/ && $2!=""'
$ORACLE_HOME/install/response/gridsetup.rsp
oracle.install.responseFileVersion=/oracle/install/rspfmt_crsinstall_response_schema_v19.0.0
--해당 서버의 grid 설치 시 사용했던
grid.rsp 파일 확인
[+ASM1:grid@ol8ora19rf1][/home/grid]$ awk -F= 'NF
&& $1 !~ /^#/ && $2!=""' /home/grid/grid.rsp
oracle.install.responseFileVersion=/oracle/install/rspfmt_crsinstall_response_schema_v19.0.0
INVENTORY_LOCATION=/u01/app/oraInventory
oracle.install.option=CRS_CONFIG
ORACLE_BASE=/u01/app/oracle
oracle.install.asm.OSDBA=asmdba
oracle.install.asm.OSOPER=asmoper
oracle.install.asm.OSASM=asmadmin
oracle.install.crs.config.scanType=LOCAL_SCAN
oracle.install.crs.config.gpnp.scanName=ol8ora19rf-scan
oracle.install.crs.config.gpnp.scanPort=1521
oracle.install.crs.config.ClusterConfiguration=STANDALONE
oracle.install.crs.config.configureAsExtendedCluster=false
oracle.install.crs.config.clusterName=ol8ora19rf
oracle.install.crs.config.gpnp.configureGNS=false
oracle.install.crs.config.autoConfigureClusterNodeVIP=false
oracle.install.crs.config.clusterNodes=ol8ora19rf1:ol8ora19rf1-vip,ol8ora19rf2:ol8ora19rf2-vip
oracle.install.crs.config.networkInterfaceList=ens160:192.168.240.0:1,ens224:10.0.3.0:5
oracle.install.crs.configureGIMR=false
oracle.install.asm.configureGIMRDataDG=false
oracle.install.crs.config.storageOption=FLEX_ASM_STORAGE
oracle.install.crs.config.sharedFileSystemStorage.ocrLocations=
oracle.install.crs.config.useIPMI=false
oracle.install.asm.diskGroup.name=CRS
oracle.install.asm.diskGroup.redundancy=NORMAL
oracle.install.asm.diskGroup.AUSize=4
oracle.install.asm.diskGroup.disksWithFailureGroupNames=/dev/oracleasm/disks/CRS1,,/dev/oracleasm/disks/CRS2,,/dev/oracleasm/disks/CRS3,
oracle.install.asm.diskGroup.disks=/dev/oracleasm/disks/CRS1,/dev/oracleasm/disks/CRS2,/dev/oracleasm/disks/CRS3
oracle.install.asm.diskGroup.diskDiscoveryString=/dev/oracleasm/disks/*
oracle.install.asm.gimrDG.AUSize=1
oracle.install.asm.configureAFD=false
oracle.install.crs.configureRHPS=false
oracle.install.crs.config.ignoreDownNodes=false
oracle.install.config.managementOption=NONE
oracle.install.config.omsPort=0
oracle.install.crs.rootconfig.executeRootScript=true
oracle.install.crs.rootconfig.configMethod=ROOT
--19.29 RU Grid 소프트웨어 설치
시작
[+ASM1:grid@ol8ora19rf1][/home/grid]$
$ORACLE_HOME/gridSetup.sh -ignorePrereq -waitforcompletion -silent \
-responseFile $ORACLE_HOME/install/response/gridsetup.rsp
\
INVENTORY_LOCATION=$ORA_INVENTORY \
ORACLE_BASE=$ORACLE_BASE \
SELECTED_LANGUAGES=en \
oracle.install.option=CRS_SWONLY \
oracle.install.asm.OSDBA=asmdba \
oracle.install.asm.OSOPER=asmoper \
oracle.install.asm.OSASM=asmadmin \
oracle.install.crs.config.ClusterConfiguration=STANDALONE
\
oracle.install.crs.config.configureAsExtendedCluster=false
\
oracle.install.crs.config.clusterName=$CLUSTER_NAME
\
oracle.install.crs.config.gpnp.configureGNS=false \
oracle.install.crs.config.autoConfigureClusterNodeVIP=false
\
oracle.install.crs.config.clusterNodes=$CLUSTER_NODES
Launching Oracle Grid Infrastructure Setup Wizard...
The response file
for this session can be found at:
/u01/app/19.29/grid/install/response/grid_2025-11-23_12-01-41PM.rsp
You can find the
log of this install session at:
/u01/app/oraInventory/logs/GridSetupActions2025-11-23_12-01-41PM/gridSetupActions2025-11-23_12-01-41PM.log
As a root user, execute the following script(s):
1.
/u01/app/19.29/grid/root.sh
--> 이 시점에서는 절대로 root.sh 를 실행 시키면
안됨
Execute /u01/app/19.29/grid/root.sh on the following
nodes:
[ol8ora19rf1, ol8ora19rf2]
Successfully Setup Software.
--또다른 ssh창을 열어서
(ol8ora19rf1 서버에 grid os user로 접속) 설치 로그를 모니터링 함
[+ASM1:grid@ol8ora19rf1][/home/grid]$ tail -f
/u01/app/oraInventory/logs/GridSetupActions2025-11-23_12-01-41PM/gridSetupActions2025-11-23_12-01-41PM.log
...생략
INFO: [Nov 23, 2025 12:04:59 PM] Completed validating
state <finish>
INFO: [Nov 23, 2025 12:04:59
PM] Terminating all background operations
INFO:
[Nov 23, 2025 12:04:59 PM] Terminated all background operations
INFO: [Nov 23, 2025 12:04:59 PM] Successfully
executed the flow in SILENT mode
INFO: [Nov 23,
2025 12:04:59 PM] Finding the most appropriate exit status for the current
application
INFO: [Nov 23, 2025 12:04:59 PM]
inventory location is/u01/app/oraInventory
INFO:
[Nov 23, 2025 12:04:59 PM] Finding the most appropriate exit status for the
current application
INFO: [Nov 23, 2025 12:04:59
PM] Exit Status is 0
INFO: [Nov 23, 2025 12:04:59
PM] Shutdown Oracle Grid Infrastructure 19c Installer
INFO: [Nov 23, 2025 12:04:59 PM] Unloading Setup
Driver
--2번 노드에서도 설치가 잘됐는지
확인
[+ASM2:grid@ol8ora19rf2][/home/grid]$ ls
/u01/app/19.29/grid
addnode client
cv diagnostics
has
javavm lib
OPatch ords
perl qos
root.sh
sdk srvm
utl xdk
assistants clone
dbjava env.ora
hs
jdbc md
opmn oss
plsql racg
root.sh.old sdo
suptools welcome.html
bin
crs dbs
evm
install jdk
network oracore oui
precomp rdbms root.sh.old.1
slax tomcat wlm
cfgtoollogs css
deinstall gpnp
instantclient jlib nls
oraInst.loc ovm pylib relnotes
rootupgrade.sh sqlpatch ucp
wwg
cha
ctx demo
gridSetup.sh inventory
ldap olap
ord owm
QOpatch rhp
runcluvfy.sh sqlplus
usm xag
6. Oracle RU 19.29 소프트웨어 설치
6-1. 각 노드에 Oracle 소프트웨어 설치 디렉토리 준비
--1번 노드 (oracle os
user)
[ORA19RF1:oracle@ol8ora19rf1][/home/oracle]$ echo
$ORACLE_HOME
/u01/app/oracle/product/19c/db_1
[ORA19RF1:oracle@ol8ora19rf1][/home/oracle]$ mkdir -pv
/u01/app/oracle/product/19.29/db_1
mkdir: created directory '/u01/app/oracle/product/19.29'
mkdir: created directory
'/u01/app/oracle/product/19.29/db_1'
[ORA19RF1:oracle@ol8ora19rf1][/home/oracle]$ chmod 775 -R
/u01/app/oracle/product/19.29/db_1
[ORA19RF1:oracle@ol8ora19rf1][/home/oracle]$ chown -R
oracle:oinstall /u01/app/oracle/product/19.29/
[ORA19RF1:oracle@ol8ora19rf1][/home/oracle]$ cat >>
/home/oracle/.bash_profile << 'EOF'
export
ORACLE_HOME_1929=/u01/app/oracle/product/19.29/db_1
EOF
[ORA19RF1:oracle@ol8ora19rf1][/home/oracle]$ cat
/home/oracle/.bash_profile | grep -i ORACLE_HOME_1929
export
ORACLE_HOME_1929=/u01/app/oracle/product/19.29
[ORA19RF1:oracle@ol8ora19rf1][/home/oracle]$ source
/home/oracle/.bash_profile
[ORA19RF1:oracle@ol8ora19rf1][/home/oracle]$ echo
$ORACLE_HOME_1929
/u01/app/oracle/product/19.29
--2번 노드 (oracle os
user)
[ORA19RF2:oracle@ol8ora19rf2][/home/oracle]$ echo
$ORACLE_HOME
/u01/app/oracle/product/19c/db_1
[ORA19RF2:oracle@ol8ora19rf2][/home/oracle]$ mkdir -pv
/u01/app/oracle/product/19.29/db_1
mkdir: created
directory '/u01/app/oracle/product/19.29'
mkdir: created
directory '/u01/app/oracle/product/19.29/db_1'
[ORA19RF2:oracle@ol8ora19rf2][/home/oracle]$ chmod 775 -R
/u01/app/oracle/product/19.29/db_1
[ORA19RF2:oracle@ol8ora19rf2][/home/oracle]$ chown -R
oracle:oinstall /u01/app/oracle/product/19.29
[ORA19RF2:oracle@ol8ora19rf2][/home/oracle]$ cat >>
/home/oracle/.bash_profile << 'EOF'
export
ORACLE_HOME_1929=/u01/app/oracle/product/19.29/db_1
EOF
[ORA19RF2:oracle@ol8ora19rf2][/home/oracle]$ cat
/home/oracle/.bash_profile | grep -i ORACLE_HOME_1929
export
ORACLE_HOME_1929=/u01/app/oracle/product/19.29
[ORA19RF2:oracle@ol8ora19rf2][/home/oracle]$ source
/home/oracle/.bash_profile
[ORA19RF2:oracle@ol8ora19rf2][/home/oracle]$ echo
$ORACLE_HOME_1929
/u01/app/oracle/product/19.29
6-2. Oracle 소프트웨어 압축 해제
--1번 노드 (oracle os
user)
[ORA19RF1:oracle@ol8ora19rf1][/home/oracle]$ echo
$ORACLE_HOME_1929
/u01/app/oracle/product/19.29/db_1
[ORA19RF1:oracle@ol8ora19rf1][/home/oracle]$ awk -F= 'NF
&& $1 !~ /^#/ && $2!=""'
$ORACLE_HOME/install/response/db_install.rsp
oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v19.0.0
--기존 Oracle 소프트웨어 설치 시점에 사용했던
db.rsp 파일 확인
[ORA19RF1:oracle@ol8ora19rf1][/home/oracle]$ awk -F= 'NF
&& $1 !~ /^#/ && $2!=""' /home/oracle/db.rsp
oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v19.0.0
oracle.install.option=INSTALL_DB_SWONLY
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/u01/app/oraInventory
ORACLE_BASE=/u01/app/oracle
oracle.install.db.InstallEdition=EE
oracle.install.db.OSDBA_GROUP=dba
oracle.install.db.OSOPER_GROUP=oper
oracle.install.db.OSBACKUPDBA_GROUP=backupdba
oracle.install.db.OSDGDBA_GROUP=dgdba
oracle.install.db.OSKMDBA_GROUP=kmdba
oracle.install.db.OSRACDBA_GROUP=racdba
oracle.install.db.rootconfig.executeRootScript=true
oracle.install.db.rootconfig.configMethod=ROOT
oracle.install.db.CLUSTER_NODES=ol8ora19rf1,ol8ora19rf2
oracle.install.db.config.starterdb.type=GENERAL_PURPOSE
oracle.install.db.ConfigureAsContainerDB=false
oracle.install.db.config.starterdb.memoryOption=false
oracle.install.db.config.starterdb.installExampleSchemas=false
oracle.install.db.config.starterdb.managementOption=DEFAULT
oracle.install.db.config.starterdb.omsPort=0
oracle.install.db.config.starterdb.enableRecovery=false
[ORA19RF1:oracle@ol8ora19rf1][/home/oracle]$ unzip -oq /tmp/19.29/db1929000.zip -d $ORACLE_HOME_1929
[ORA19RF1:oracle@ol8ora19rf1][/home/oracle]$ export
ORACLE_HOSTNAME=$(hostname)
[ORA19RF1:oracle@ol8ora19rf1][/home/oracle]$ export
CLUSTER_NODES=$(olsnodes | tr '\n' ','| sed 's/,\s*$//')
[ORA19RF1:oracle@ol8ora19rf1][/home/oracle]$ export
ORACLE_BASE=/u01/app/oracle
[ORA19RF1:oracle@ol8ora19rf1][/home/oracle]$ export
ORA_INVENTORY=/u01/app/oraInventory
[ORA19RF1:oracle@ol8ora19rf1][/home/oracle]$ export
OLD_ORACLE_HOME=/u01/app/oracle/product/19c/db_1
[ORA19RF1:oracle@ol8ora19rf1][/home/oracle]$ export
ORACLE_HOME=$ORACLE_HOME_1929
[ORA19RF1:oracle@ol8ora19rf1][/home/oracle]$ echo
$ORACLE_HOSTNAME
ol8ora19rf1
[ORA19RF1:oracle@ol8ora19rf1][/home/oracle]$ echo
$CLUSTER_NODES
ol8ora19rf1,ol8ora19rf2
[ORA19RF1:oracle@ol8ora19rf1][/home/oracle]$ echo
$ORACLE_BASE
/u01/app/oracle
[ORA19RF1:oracle@ol8ora19rf1][/home/oracle]$ echo
$ORA_INVENTORY
/u01/app/oraInventory
[ORA19RF1:oracle@ol8ora19rf1][/home/oracle]$ echo
$OLD_ORACLE_HOME
/u01/app/oracle/product/19c/db_1
[ORA19RF1:oracle@ol8ora19rf1][/home/oracle]$ echo
$ORACLE_HOME
/u01/app/oracle/product/19.29/db_1
--oracle RU 19.29 소프트웨어
설치 시작
[ORA19RF1:oracle@ol8ora19rf1][/home/oracle]$
$ORACLE_HOME/runInstaller -ignorePrereqFailure -waitforcompletion -silent \
-responseFile $ORACLE_HOME/install/response/db_install.rsp
\
oracle.install.option=INSTALL_DB_SWONLY \
ORACLE_HOSTNAME=$ORACLE_HOSTNAME \
UNIX_GROUP_NAME=oinstall \
INVENTORY_LOCATION=${ORA_INVENTORY} \
SELECTED_LANGUAGES=en \
ORACLE_HOME=${ORACLE_HOME} \
ORACLE_BASE=${ORACLE_BASE} \
oracle.install.db.InstallEdition=EE \
oracle.install.db.OSDBA_GROUP=dba \
oracle.install.db.OSOPER_GROUP=oper \
oracle.install.db.OSBACKUPDBA_GROUP=backupdba \
oracle.install.db.OSDGDBA_GROUP=dgdba \
oracle.install.db.OSKMDBA_GROUP=kmdba \
oracle.install.db.OSRACDBA_GROUP=racdba \
oracle.install.db.rootconfig.executeRootScript=false \
oracle.install.db.CLUSTER_NODES=${CLUSTER_NODES} \
oracle.install.db.isRACOneInstall=false \
oracle.install.db.rac.serverpoolCardinality=0 \
SECURITY_UPDATES_VIA_MYORACLESUPPORT=false \
DECLINE_SECURITY_UPDATES=true \
oracle.install.db.config.starterdb.type=GENERAL_PURPOSE
\
oracle.install.db.ConfigureAsContainerDB=false \
oracle.install.db.config.starterdb.memoryOption=false \
oracle.install.db.config.starterdb.installExampleSchemas=false
\
oracle.install.db.config.starterdb.managementOption=DEFAULT
\
oracle.install.db.config.starterdb.enableRecovery=false
Launching Oracle Database Setup Wizard...
[WARNING] [INS-13013] Target environment does not meet some
mandatory requirements.
CAUSE: Some of the
mandatory prerequisites are not met. See logs for details.
/u01/app/oraInventory/logs/InstallActions2025-11-23_12-23-01PM/installActions2025-11-23_12-23-01PM.log
ACTION: Identify the list of failed
prerequisite checks from the log:
/u01/app/oraInventory/logs/InstallActions2025-11-23_12-23-01PM/installActions2025-11-23_12-23-01PM.log.
Then either from the log file or from installation manual find the appropriate
configuration to meet the prerequisites and fix it manually.
The response file for this session can be found at:
/u01/app/oracle/product/19.29/db_1/install/response/db_2025-11-23_12-23-01PM.rsp
--> 해당
Warning을 로그를 보니 ntpd 관련한 로그임 무시함
You can find the
log of this install session at:
/u01/app/oraInventory/logs/InstallActions2025-11-23_12-23-01PM/installActions2025-11-23_12-23-01PM.log
As a root user,
execute the following script(s):
1.
/u01/app/oracle/product/19.29/db_1/root.sh
Execute
/u01/app/oracle/product/19.29/db_1/root.sh on the following nodes:
[ol8ora19rf1, ol8ora19rf2]
Successfully Setup Software with
warning(s).
--새로운 ssh창을 열어서 oralce os
user로 접속
--로그 모니터링
[ORA19RF1:oracle@ol8ora19rf1][/home/oracle]$ tail -f
/u01/app/oraInventory/logs/InstallActions2025-11-23_12-23-01PM/installActions2025-11-23_12-23-01PM.log
...생략
INFO: [Nov
23, 2025 12:26:37 PM] Terminated all background operations
INFO: [Nov 23, 2025 12:26:37 PM] Successfully
executed the flow in SILENT mode
INFO: [Nov 23,
2025 12:26:37 PM] Finding the most appropriate exit status for the current
application
INFO: [Nov 23, 2025 12:26:37 PM]
inventory location is/u01/app/oraInventory
INFO:
[Nov 23, 2025 12:26:37 PM] Adding ExitStatus SUCCESS_WITH_WARNINGS to the exit
status set
INFO: [Nov 23, 2025 12:26:37 PM]
Finding the most appropriate exit status for the current application
INFO: [Nov 23, 2025 12:26:37 PM] Exit Status is 6
INFO: [Nov 23, 2025 12:26:37 PM] List of warnings
encountered in this Application:
INFO: [Nov 23,
2025 12:26:37 PM] PREREQUISITES_IGNORED
INFO: [Nov
23, 2025 12:26:37 PM] Shutdown Oracle Database 19c Installer
--1번 노드에서 oracle 소프트웨어용
root.sh 실행 (root os user)
[root@ol8ora19rf1][/root]$
/u01/app/oracle/product/19.29/db_1/root.sh
Check
/u01/app/oracle/product/19.29/db_1/install/root_ol8ora19rf1_2025-11-23_12-29-16-167232163.log
for the output of root script
[root@ol8ora19rf1][/root]$ cat
/u01/app/oracle/product/19.29/db_1/install/root_ol8ora19rf1_2025-11-23_12-29-16-167232163.log
Performing root
user operation.
The following
environment variables are set as:
ORACLE_OWNER= oracle
ORACLE_HOME= /u01/app/oracle/product/19.29/db_1
Copying dbhome to /usr/local/bin ...
Copying oraenv to /usr/local/bin ...
Copying coraenv to /usr/local/bin
...
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번 노드에서 oracle 소프트웨어용
root.sh 실행 (root os
user)
[root@ol8ora19rf2][/root]$
/u01/app/oracle/product/19.29/db_1/root.sh
Check
/u01/app/oracle/product/19.29/db_1/install/root_ol8ora19rf2_2025-11-23_12-29-54-936024274.log
for the output of root script
[root@ol8ora19rf2][/root]$ cat
/u01/app/oracle/product/19.29/db_1/install/root_ol8ora19rf2_2025-11-23_12-29-54-936024274.log
Performing root
user operation.
The following
environment variables are set as:
ORACLE_OWNER= oracle
ORACLE_HOME= /u01/app/oracle/product/19.29/db_1
Copying dbhome to /usr/local/bin ...
Copying oraenv to /usr/local/bin ...
Copying coraenv to /usr/local/bin
...
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.
7. oraInventory 정보에서 grid와 oracle 의 신규 홈 위치가 추가된 것을 확인
--1번 노드
[ORA19RF1:oracle@ol8ora19rf1][/home/oracle]$ cat
/u01/app/oraInventory/ContentsXML/inventory.xml
<?xml version="1.0" standalone="yes" ?>
<!-- Copyright (c) 1999, 2025, Oracle and/or its
affiliates.
All rights reserved. -->
<!-- Do not modify the contents of this file by hand.
-->
<INVENTORY>
<VERSION_INFO>
<SAVED_WITH>12.2.0.7.0</SAVED_WITH>
<MINIMUM_VER>2.1.0.6.0</MINIMUM_VER>
</VERSION_INFO>
<HOME_LIST>
<HOME
NAME="OraGI19Home1" LOC="/u01/app/19c/grid" TYPE="O" IDX="1"
CRS="true"/> --> 현재는 기존 grid홈이 CRS="true"임
<HOME NAME="OraDB19Home1"
LOC="/u01/app/oracle/product/19c/db_1" TYPE="O" IDX="2"/>
<HOME NAME="OraGI19Home2"
LOC="/u01/app/19.29/grid" TYPE="O" IDX="3"/> --> 추가됨
<HOME NAME="OraDB19Home2"
LOC="/u01/app/oracle/product/19.29/db_1" TYPE="O" IDX="4"/> --> 추가됨
</HOME_LIST>
<COMPOSITEHOME_LIST>
</COMPOSITEHOME_LIST>
</INVENTORY>
--2번
노드
[ORA19RF2:oracle@ol8ora19rf2][/home/oracle]$ cat
/u01/app/oraInventory/ContentsXML/inventory.xml
<?xml version="1.0" standalone="yes" ?>
<!-- Copyright (c) 1999, 2025, Oracle and/or its
affiliates.
All rights reserved. -->
<!-- Do not modify the contents of this file by hand.
-->
<INVENTORY>
<VERSION_INFO>
<SAVED_WITH>12.2.0.7.0</SAVED_WITH>
<MINIMUM_VER>2.1.0.6.0</MINIMUM_VER>
</VERSION_INFO>
<HOME_LIST>
<HOME
NAME="OraGI19Home1" LOC="/u01/app/19c/grid" TYPE="O" IDX="1" CRS="true"/>
--> 현재는 기존 grid홈이 CRS="true"임
<HOME NAME="OraDB19Home1"
LOC="/u01/app/oracle/product/19c/db_1" TYPE="O"
IDX="2"/>
<HOME NAME="OraDB19Home2" LOC="/u01/app/oracle/product/19.29/db_1" TYPE="O" IDX="4"/> --> 추가됨
</HOME_LIST>
<COMPOSITEHOME_LIST>
</COMPOSITEHOME_LIST>
</INVENTORY>
7. 1번 노드에서 Grid 소프트웨어 홈을 RU 19.28에서 19.29로 Switch 하기
--1번 노드 (oracle os user)
[ORA19RF1:oracle@ol8ora19rf1][/home/oracle]$ alias
csrt
alias csrt='crsctl
stat res -t'
[ORA19RF1:oracle@ol8ora19rf1][/home/oracle]$
csrt
...생략
ora.ora19rf.db
1 ONLINE
ONLINE
ol8ora19rf1
Open,HOME=/u01/app/o
racle/product/19c/db
_1,STABLE
2 ONLINE
ONLINE
ol8ora19rf2
Open,HOME=/u01/app/o
racle/product/19c/db
_1,STABLE
--> 양쪽 노드가 모드 구동중인
상태임
--1번 노드의 switch grid home 작업을
해줌 (grid os user)
[+ASM1:grid@ol8ora19rf1][/home/grid]$ echo
$ORACLE_HOME
/u01/app/19c/grid
[+ASM1:grid@ol8ora19rf1][/home/grid]$ export
ORACLE_HOME=/u01/app/19.29/grid
[+ASM1:grid@ol8ora19rf1][/home/grid]$ echo $ORACLE_HOME
/u01/app/19.29/grid
[+ASM1:grid@ol8ora19rf1][/home/grid]$ echo $CURRENT_NODE
--> 해당 값이 세팅 안되어 있음
[+ASM1:grid@ol8ora19rf1][/home/grid]$ export
CURRENT_NODE=$(hostname)
[+ASM1:grid@ol8ora19rf1][/home/grid]$ echo
$CURRENT_NODE
ol8ora19rf1
[+ASM1:grid@ol8ora19rf1][/home/grid]$
$ORACLE_HOME/gridSetup.sh \
-silent -switchGridHome \
oracle.install.option=CRS_SWONLY \
ORACLE_HOME=$ORACLE_HOME \
oracle.install.crs.config.clusterNodes=$CURRENT_NODE \
oracle.install.crs.rootconfig.executeRootScript=false
--> 해당
명령어에서 ORACLE_HOME 변수는 Grid RU 19.29의 GRID_HOME(=ORACLE_HOME)임을 주의할
것
Launching Oracle Grid Infrastructure Setup Wizard...
As a root user, execute the following script(s):
1.
/u01/app/19.29/grid/root.sh
--> 아직 root.sh 를 실행 시키면 안됨!
Execute
/u01/app/19.29/grid/root.sh on the following nodes:
[ol8ora19rf1]
You can find the
log of this install session at:
/u01/app/oraInventory/logs/UpdateNodeList2025-11-23_12-36-07PM.log
You can find the log of this install session at:
/u01/app/oraInventory/logs/UpdateNodeList2025-11-23_12-36-07PM.log
Successfully Setup Software.
--1번 노드 (grid os
user)
[+ASM1:grid@ol8ora19rf1][/home/grid]$ cat
/u01/app/oraInventory/ContentsXML/inventory.xml
<?xml version="1.0" standalone="yes" ?>
<!-- Copyright (c) 1999, 2025, Oracle and/or its
affiliates.
All rights reserved. -->
<!-- Do not modify the contents of this file by hand.
-->
<INVENTORY>
<VERSION_INFO>
<SAVED_WITH>12.2.0.7.0</SAVED_WITH>
<MINIMUM_VER>2.1.0.6.0</MINIMUM_VER>
</VERSION_INFO>
<HOME_LIST>
<HOME
NAME="OraGI19Home1" LOC="/u01/app/19c/grid" TYPE="O" IDX="1"/>
<HOME NAME="OraDB19Home1"
LOC="/u01/app/oracle/product/19c/db_1" TYPE="O" IDX="2"/>
<HOME NAME="OraGI19Home2" LOC="/u01/app/19.29/grid" TYPE="O" IDX="3"
CRS="true"/> --> Grid RU 19.29의 Grid 홈이 CRS="true"로 바뀐 상태임
<HOME NAME="OraDB19Home2"
LOC="/u01/app/oracle/product/19.29/db_1" TYPE="O" IDX="4"/>
</HOME_LIST>
<COMPOSITEHOME_LIST>
</COMPOSITEHOME_LIST>
</INVENTORY>
--2번 노드 (grid os
user)
[+ASM2:grid@ol8ora19rf2][/home/grid]$ cat
/u01/app/oraInventory/ContentsXML/inventory.xml
<?xml
version="1.0" standalone="yes" ?>
<!-- Copyright
(c) 1999, 2025, Oracle and/or its affiliates.
All rights
reserved. -->
<!-- Do not modify the contents of
this file by hand. -->
<INVENTORY>
<VERSION_INFO>
<SAVED_WITH>12.2.0.7.0</SAVED_WITH>
<MINIMUM_VER>2.1.0.6.0</MINIMUM_VER>
</VERSION_INFO>
<HOME_LIST>
<HOME
NAME="OraGI19Home1" LOC="/u01/app/19c/grid" TYPE="O" IDX="1" CRS="true"/>
--> 2번 노드는 Switch grid home을 아직 하지 않은 상태이므로 기존 그리드홈을
바라보고 있음
<HOME NAME="OraDB19Home1"
LOC="/u01/app/oracle/product/19c/db_1" TYPE="O" IDX="2"/>
<HOME NAME="OraGI19Home2" LOC="/u01/app/19.29/grid"
TYPE="O" IDX="3"/>
<HOME NAME="OraDB19Home2"
LOC="/u01/app/oracle/product/19.29/db_1" TYPE="O" IDX="4"/>
</HOME_LIST>
<COMPOSITEHOME_LIST>
</COMPOSITEHOME_LIST>
</INVENTORY>
8. Oracle 소프트웨어를 RU 19.28에서 19.29로 변환 준비
--1번 노드 (orale os
user)
[ORA19RF1:oracle@ol8ora19rf1][/home/oracle]$ srvctl config
database -db $ORACLE_UNQNAME | grep file
Spfile:
+DATA1/ORA19RF/PARAMETERFILE/spfile.270.1213140911
Password file:
+DATA1/ORA19RF/PASSWORD/pwdora19rf.256.1213140441
[ORA19RF1:oracle@ol8ora19rf1][/home/oracle]$ echo
$GRID_HOME
/u01/app/19c/grid
--1번 노드 (grid os user)
[+ASM1:grid@ol8ora19rf1][/home/grid]$ echo
$GRID_HOME_1929
/u01/app/19.29/grid
--------------------------------------------------------------------------------------------------------------------------------------------------------------
--1번 노드 (grid os user)
--sqlnet.ora 파일을 RU 19.29 Grid Home으로 복사함
[+ASM1:grid@ol8ora19rf1][/home/grid]$ cp
/u01/app/19c/grid/network/admin/sqlnet.ora /u01/app/19.29/grid/network/admin
[+ASM1:grid@ol8ora19rf1][/home/grid]$ ls -l
/u01/app/19.29/grid/network/admin/sqlnet.ora
-rw-r--r--. 1 grid oinstall 289 Nov 22 23:27
/u01/app/19.29/grid/network/admin/sqlnet.ora
--1번 노드 (oracle os user)
--tnsnames.ora 파일을 RU 19.29 Oracle Home으로 복사함
[ORA19RF1:oracle@ol8ora19rf1][/home/oracle]$ cp
/u01/app/oracle/product/19c/db_1/network/admin/tnsnames.ora
/u01/app/oracle/product/19.29/db_1/network/admin
[ORA19RF1:oracle@ol8ora19rf1][/home/oracle]$ ls -l
/u01/app/oracle/product/19.29/db_1/network/admin/tnsnames.ora
-rw-r-----. 1 oracle
oinstall 333 Nov 22 23:28
/u01/app/oracle/product/19.29/db_1/network/admin/tnsnames.ora
--------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------
--2번 노드 (grid os user)
--sqlnet.ora 파일을 RU 19.29 Grid Home으로 복사함
[+ASM2:grid@ol8ora19rf2][/home/grid]$ cp /u01/app/19c/grid/network/admin/sqlnet.ora /u01/app/19.29/grid/network/admin
[+ASM2:grid@ol8ora19rf2][/home/grid]$ ls -l /u01/app/19.29/grid/network/admin/sqlnet.ora
-rw-r--r--. 1 grid oinstall 289 Nov 22 23:29 /u01/app/19.29/grid/network/admin/sqlnet.ora
--2번 노드 (oracle os user)
--sqlnet.ora 파일을 RU 19.29 Grid Home으로 복사함
[ORA19RF2:oracle@ol8ora19rf2][/home/oracle]$ cp
/u01/app/oracle/product/19c/db_1/network/admin/tnsnames.ora
/u01/app/oracle/product/19.29/db_1/network/admin
[ORA19RF2:oracle@ol8ora19rf2][/home/oracle]$ ls -l
/u01/app/oracle/product/19.29/db_1/network/admin/tnsnames.ora
-rw-r-----. 1 oracle oinstall 333 Nov 22 23:29
/u01/app/oracle/product/19.29/db_1/network/admin/tnsnames.ora
--------------------------------------------------------------------------------------------------------------------------------------------------------------
--1번 노드 (oracle os
user)
[ORA19RF1:oracle@ol8ora19rf1][/home/oracle]$ export
ORACLE_HOME=/u01/app/oracle/product/19.29/db_1
[ORA19RF1:oracle@ol8ora19rf1][/home/oracle]$ echo
$ORACLE_HOME
/u01/app/oracle/product/19.29/db_1
[ORA19RF1:oracle@ol8ora19rf1][/home/oracle]$ srvctl modify
database -d ora19rf -o $ORACLE_HOME_1929
[ORA19RF1:oracle@ol8ora19rf1][/home/oracle]$ srvctl config
database -db ora19rf
Database unique name: ORA19RF
Database name: ORA19RF
Oracle home:
/u01/app/oracle/product/19.29/db_1 --> oralce home이 바뀜
Oracle user: oracle
Spfile:
+DATA1/ORA19RF/PARAMETERFILE/spfile.270.1213140911
Password file:
+DATA1/ORA19RF/PASSWORD/pwdora19rf.256.1213140441
Domain:
Start options: open
Stop options: immediate
Database
role: PRIMARY
Management policy: AUTOMATIC
Server pools:
Disk Groups:
FRA1,DATA1
Mount point paths:
Services:
Type: RAC
Start concurrency:
Stop
concurrency:
OSDBA group: dba
OSOPER group: oper
Database
instances: ORA19RF1,ORA19RF2
Configured nodes:
ol8ora19rf1,ol8ora19rf2
CSS critical: no
CPU count: 0
Memory target: 0
Maximum memory: 0
Default network
number for database services:
Database is administrator
managed
9. 1번 노드에 대한 grid root.sh 작업 수행
--1번 노드를 drain 으로
내림
[+ASM1:grid@ol8ora19rf1][/home/grid]$ which
srvctl
/u01/app/19c/grid/bin/srvctl
[+ASM1:grid@ol8ora19rf1][/home/grid]$ srvctl stop instance -node `hostname` -stopoption immediate -drain_timeout 300 -failover -force
--또다른 ssh창을 열어서 (ol8ora19rf1
서버에 oracle os user로 접속) alert log 확인
tail -f
$ORACLE_BASE/diag/rdbms/$ORACLE_UNQNAME_LOWER/$ORACLE_SID/trace/alert_$ORACLE_SID.log
...생략
Sat Nov 22
09:30:05 2025
ALTER DATABASE CLOSE NORMAL /* db agent
*//* {1:26757:22314} */
Sat Nov 22 09:30:05 2025
Stopping Emon pool
Sat Nov 22
09:30:06 2025
...
freeing the
fusion rht of pdb 0
2025-11-22T09:30:23.292545+09:00
Instance shutdown complete (OS id:
7301)
[+ASM1:grid@ol8ora19rf1][/home/grid]$ alias
csrt
alias csrt='crsctl
stat res -t'
[+ASM1:grid@ol8ora19rf1][/home/grid]$
csrt
...생략
ora.ora19rf.db
1 OFFLINE
OFFLINE
Instance Shutdown,ST
ABLE
2 ONLINE
ONLINE
ol8ora19rf2
Open,Running from Ol
d Oracle Home,HOME=/
u01/app/oracle/produ
ct/19c/db_1,STABLE
--ol8ora19rs1 서버에서 실행 중인
/home/oracle/run_drain_test_12.sh 에서 이제 1번 노드가 아닌 2번 노드로 트랜잭션을 발생
시키게됨
--------------------------------------------------
2
1839
TEST_NO INST_ID
---------------- ----------------
1839
2
[Sun Nov 23 12:51:26 KST 2025] Inserted and Checked
last roww
--------------------------------------------------
--또다른 ssh창을 열어서 (ol8ora19rf1
서버에 root os user로 접속) root.sh 실행
[root@ol8ora19rf1][/root]$
/u01/app/19.29/grid/root.sh
Check
/u01/app/19.29/grid/install/root_ol8ora19rf1_2025-11-23_12-51-51-956379311.log
for the output of root script
--또다른 ssh창을 열어서 (ol8ora19rf1
서버에 root os user로 접속) 작업 로그 모니터링
[root@ol8ora19rf1][/root]$ tail -f
/u01/app/19.29/grid/install/root_ol8ora19rf1_2025-11-23_12-51-51-956379311.log
...생략
Using configuration parameter
file: /u01/app/19.29/grid/crs/install/crsconfig_params
The log of current session can be found at:
/u01/app/oracle/crsdata/ol8ora19rf1/crsconfig/rootcrs_ol8ora19rf1_2025-11-23_12-51-59AM.log
Using configuration parameter file:
/u01/app/19.29/grid/crs/install/crsconfig_params
The log
of current session can be found at:
/u01/app/oracle/crsdata/ol8ora19rf1/crsconfig/crs_prepatch_apply_oop_ol8ora19rf1_2025-11-23_12-51-59AM.log
2025/11/23 12:52:08 CLSRSC-671: Pre-patch steps for
patching GI home successfully completed.
Using
configuration parameter file:
/u01/app/19.29/grid/crs/install/crsconfig_params
The log
of current session can be found at:
/u01/app/oracle/crsdata/ol8ora19rf1/crsconfig/crs_postpatch_apply_oop_ol8ora19rf1_2025-11-23_12-52-08AM.log
Oracle Clusterware active version on the cluster is
[19.0.0.0.0]. The cluster upgrade state is [NORMAL]. The cluster active patch
level is [880628325].
2025/11/23 12:52:54 CLSRSC-329:
Replacing Clusterware entries in file 'oracle-ohasd.service'
Oracle Clusterware active version on the cluster is
[19.0.0.0.0]. The cluster upgrade state is [ROLLING PATCH]. The cluster active
patch level is [880628325].
2025/11/23 12:54:01
CLSRSC-4015: Performing install or upgrade action for Oracle Trace File Analyzer
(TFA) Collector.
2025/11/23 12:54:01 CLSRSC-4012:
Shutting down Oracle Trace File Analyzer (TFA) Collector.
2025/11/23 12:54:11 CLSRSC-4013: Successfully shut down
Oracle Trace File Analyzer (TFA) Collector.
2025/11/23
12:54:11 CLSRSC-672: Post-patch steps for patching GI home successfully
completed.
--> 1번 노드에 대한 Grid home switch가 완료된
것임
[+ASM1:grid@ol8ora19rf1][/home/grid]$ alias
csrt
alias csrt='crsctl
stat res -t'
[+ASM1:grid@ol8ora19rf1][/home/grid]$
csrt
...생략
ora.ora19rf.db
1 OFFLINE
OFFLINE
Instance Shutdown,ST
ABLE
2 ONLINE
ONLINE
ol8ora19rf2
Open,Running from Ol
d Oracle Home,HOME=/
u01/app/oracle/produ
ct/19c/db_1,STABLE
--> 1번 노드는 내려가 있고
--> 2번 노드는 Running from Old Oracle Home 에서 떠있음
--> 2번 노드가 DB의 콜을 모두 처리하는 중
--지금부터 1번 노드의 root, grid,
oracle os user의 .bash_profile의 내용을 변경함
--root os user
[root@ol8ora19rf1][/root]$ cp
/root/.bash_profile /root/.bash_profile.bak.19.28
[root@ol8ora19rf1][/root]$ vi /root/.bash_profile
[root@ol8ora19rf1][/root]$ cat /root/.bash_profile | grep
19.29
export GRID_HOME=/u01/app/19.29/grid
export DB_HOME=$ORACLE_BASE/product/19.29/db_1
[root@ol8ora19rf1][/root]$ source
/root/.bash_profile
--grid os
user
[+ASM1:grid@ol8ora19rf1][/home/grid]$ cp
/home/grid/.bash_profile /home/grid/.bash_profile.bak.19.28
[+ASM1:grid@ol8ora19rf1][/home/grid]$ vi
/home/grid/.bash_profile
[+ASM1:grid@ol8ora19rf1][/home/grid]$ cat
/home/grid/.bash_profile | grep 19.29
export GRID_HOME=/u01/app/19.29/grid
export DB_HOME=$ORACLE_BASE/product/19.29/db_1
export GRID_HOME_1929=/u01/app/19.29/grid
[+ASM1:grid@ol8ora19rf1][/home/grid]$ source
/home/grid/.bash_profile
--oracle os
user
[ORA19RF1:oracle@ol8ora19rf1][/home/oracle]$ cp
/home/oracle/.bash_profile /home/oracle/.bash_profile.19.28
[ORA19RF1:oracle@ol8ora19rf1][/home/oracle]$ vi
/home/oracle/.bash_profile
[ORA19RF1:oracle@ol8ora19rf1][/home/oracle]$ cat
/home/oracle/.bash_profile | grep 19.29
export DB_HOME=$ORACLE_BASE/product/19.29/db_1
export
ORACLE_HOME_1929=/u01/app/oracle/product/19.29/db_1
[ORA19RF1:oracle@ol8ora19rf1][/home/oracle]$ source
/home/oracle/.bash_profile
--grid os
user
[+ASM1:grid@ol8ora19rf1][/home/grid]$ crsctl query crs
releasepatch
Oracle Clusterware release patch level is [517676180] and
the complete list of patches [36758186 38291812 38311528 38322923 38380425 ]
have been applied on the local node. The release patch string is
[19.29.0.0.0].
[+ASM1:grid@ol8ora19rf1][/home/grid]$ opatch
lspatches
38380425;TOMCAT RELEASE UPDATE 19.0.0.0.0 (38380425)
38322923;OCW RELEASE UPDATE 19.29.0.0.0 (38322923)
38311528;ACFS RELEASE UPDATE 19.29.0.0.0 (38311528)
38291812;Database Release Update : 19.29.0.0.251021
(38291812)
36758186;DBWLM RELEASE UPDATE 19.0.0.0.0
(36758186)
OPatch succeeded.
[+ASM1:grid@ol8ora19rf1][/home/grid]$
$GRID_HOME/OPatch/opatch lsinventory | grep -i "Release
Update"
Patch description: "TOMCAT RELEASE UPDATE 19.0.0.0.0
(38380425)"
Patch description: "OCW RELEASE UPDATE
19.29.0.0.0 (38322923)"
Patch description: "ACFS
RELEASE UPDATE 19.29.0.0.0 (38311528)"
Patch
description: "Database Release Update : 19.29.0.0.251021 (38291812)"
Patch description: "DBWLM RELEASE UPDATE 19.0.0.0.0
(36758186)"
[+ASM1:grid@ol8ora19rf1][/home/grid]$ cat
/u01/app/oraInventory/ContentsXML/inventory.xml
<?xml version="1.0" standalone="yes" ?>
<!-- Copyright (c) 1999, 2025, Oracle and/or its
affiliates.
All rights reserved. -->
<!-- Do not modify the contents of this file by hand.
-->
<INVENTORY>
<VERSION_INFO>
<SAVED_WITH>12.2.0.7.0</SAVED_WITH>
<MINIMUM_VER>2.1.0.6.0</MINIMUM_VER>
</VERSION_INFO>
<HOME_LIST>
<HOME
NAME="OraGI19Home1" LOC="/u01/app/19c/grid" TYPE="O" IDX="1"/>
<HOME NAME="OraDB19Home1"
LOC="/u01/app/oracle/product/19c/db_1" TYPE="O" IDX="2"/>
<HOME NAME="OraGI19Home2" LOC="/u01/app/19.29/grid"
TYPE="O" IDX="3" CRS="true"/> --> CRS="true" 인것을 확인
<HOME NAME="OraDB19Home2"
LOC="/u01/app/oracle/product/19.29/db_1" TYPE="O" IDX="4"/>
</HOME_LIST>
<COMPOSITEHOME_LIST>
</COMPOSITEHOME_LIST>
</INVENTORY>
[+ASM1:grid@ol8ora19rf1][/etc/init.d]$ vi
/etc/init.d/init.ohasd /etc/init.d/ohasd
--> 위 2개의 파일에서 GRID HOME이 19.29로 제대로 바뀌었는지
확인
[+ASM1:grid@ol8ora19rf1][/home/grid]$ alias
sa
alias sa='rlwrap
sqlplus "/as sysasm"'
[+ASM1:grid@ol8ora19rf1][/home/grid]$
sa
SQL*Plus: Release
19.0.0.0.0 - Production on Sat Nov 22 09:55:56 2025
Version 19.29.0.0.0
Copyright (c) 1982, 2025, Oracle. All rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 -
Production
Version 19.29.0.0.0
-->
sqlplus 버전이 19.29인 것을 확인
[+ASM1:grid@ol8ora19rf1][/home/grid]$ crsctl query crs
activeversion -f
Oracle Clusterware active version on the cluster is
[19.0.0.0.0]. The cluster upgrade state is [ROLLING PATCH]. The cluster active
patch level is [880628325].
[+ASM1:grid@ol8ora19rf1][/home/grid]$ srvctl start instance
-node `hostname`
starting database instances on nodes "ol8ora19rf1" ...
started resources "ora.ora19rf.db" on node
"ol8ora19rf1"
[+ASM1:grid@ol8ora19rf1][/home/grid]$ alias
csrt
alias csrt='crsctl
stat res -t'
[+ASM1:grid@ol8ora19rf1][/home/grid]$
csrt
...생략
ora.ora19rf.db
1 ONLINE
ONLINE
ol8ora19rf1
Open,HOME=/u01/app/o
racle/product/19.29/
db_1,STABLE
2 ONLINE
ONLINE
ol8ora19rf2
Open,Running from Ol
d Oracle Home,HOME=/
u01/app/oracle/produ
ct/19c/db_1,STABLE
...생략
--> 1번 노드는 새로운
oracle home으로 기동됨
--> 2번
노드는 Running from Old Oracle Home에서 계속 기동되고 있음
--> 전 노드 가용 가능한 상황임
--ol8ora19rs1 서버에서 실행 중인
/home/oracle/run_drain_test_12.sh 에서 이제 2번 노드가 아닌 1번 노드로 트랜잭션을 발생
시키게됨
--------------------------------------------------
1
2224
TEST_NO INST_ID
---------------- ----------------
2224
1
[Sun Nov 23 13:10:58 KST 2025] Inserted and Checked
last row
--> 1번 노드가 기동되었기 때문에 이제 정상적으로 1번 노드로 들어오는 것임!
10. 2번 노드의 grid home을 RU 19.29 grid home으로 switch
--2번 노드 (grid os
user)
[+ASM2:grid@ol8ora19rf2][/home/grid]$ cat >>
/home/grid/.bash_profile << EOF
export
GRID_HOME_1929=/u01/app/19.29/grid
EOF
[+ASM2:grid@ol8ora19rf2][/home/grid]$ source
/home/grid/.bash_profile
[+ASM2:grid@ol8ora19rf2][/home/grid]$ echo
$ORACLE_HOME
/u01/app/19.29/grid
[+ASM2:grid@ol8ora19rf2][/home/grid]$ echo $CURRENT_NODE
[+ASM2:grid@ol8ora19rf2][/home/grid]$ export
CURRENT_NODE=$(hostname)
[+ASM2:grid@ol8ora19rf2][/home/grid]$ echo $CURRENT_NODE
ol8ora19rf2
[+ASM2:grid@ol8ora19rf2][/home/grid]$ export
ORACLE_HOME=$GRID_HOME_1929
[+ASM2:grid@ol8ora19rf2][/home/grid]$ echo $ORACLE_HOME
/u01/app/19.29/grid
[+ASM2:grid@ol8ora19rf2][/home/grid]$
$ORACLE_HOME/gridSetup.sh \
-silent -switchGridHome \
oracle.install.option=CRS_SWONLY \
ORACLE_HOME=$ORACLE_HOME \
oracle.install.crs.config.clusterNodes=$CURRENT_NODE \
oracle.install.crs.rootconfig.executeRootScript=false
Launching Oracle Grid Infrastructure Setup Wizard...
As a root user, execute the following script(s):
1.
/u01/app/19.29/grid/root.sh
--> 이 단계에서 root.sh 를 실행하면 안됨
Execute
/u01/app/19.29/grid/root.sh on the following nodes:
[ol8ora19rf2]
You can find the
log of this install session at:
/u01/app/oraInventory/logs/UpdateNodeList2025-11-23_01-13-03PM.log
You can find the log of this install session at:
/u01/app/oraInventory/logs/UpdateNodeList2025-11-23_01-13-03PM.log
Successfully Setup Software.
--2번 노드를 drain 으로
내림
[+ASM2:grid@ol8ora19rf2][/home/grid]$ which
srvctl
/u01/app/19c/grid/bin/srvctl
[+ASM2:grid@ol8ora19rf2][/home/grid]$ srvctl stop instance -node `hostname` -stopoption immediate -drain_timeout 300 -failover -force
--또다른 ssh창을 열어서 (ol8ora19rf1
서버에 oracle os user로 접속) alert log 확인
[ORA19RF2:oracle@ol8ora19rf2][/home/oracle]$
tail -f
$ORACLE_BASE/diag/rdbms/$ORACLE_UNQNAME_LOWER/$ORACLE_SID/trace/alert_$ORACLE_SID.log
...생략
JIT: pid 7701 requesting stop
....
(PID:7701): Archival disabled due to shutdown: 1089
Shutting down archive processes
Archiving is disabled
Sun Nov 23
13:14:53 2025
Stopping background process VKTM
Sun Nov 23 13:14:53 2025
JIT: pid
7701 requesting stop
Sun Nov 23 13:14:53 2025
NOTE: Shutting down MARK background process
Sun Nov 23 13:14:55 2025
NOTE:
force a map free for map id 2
Sun Nov 23 13:14:57
2025
NOTE: ASMB releasing group resources due to
shutdown
NOTE: ASMB clearing idle groups before exit
Sun Nov 23 13:14:57 2025
NOTE:
Could not deregister group num %.%
Stopping background
process RBAL
Sun Nov 23 13:14:59 2025
freeing rdom 0
freeing the fusion
rht of pdb 0
2025-11-23T13:15:06.853785+09:00
Instance shutdown complete (OS id:
7701)
--ol8ora19rs1 서버에서 실행
중인 /home/oracle/run_drain_test_21.sh 에서 이제 2번 노드가 아닌 1번 노드로 트랜잭션을 발생
시키게됨
--------------------------------------------------
1
2313
TEST_NO INST_ID
---------------- ----------------
2313
1
[Sun Nov 23 13:15:26 KST 2025] Inserted and Checked
last row
--또 다른 ssh창을 열어서 (ol8ora19rf2
서버에 root os user로 접속) root.sh 실행
[root@ol8ora19rf2][/root]$
/u01/app/19.29/grid/root.sh
Check
/u01/app/19.29/grid/install/root_ol8ora19rf2_2025-11-22_10-50-59-670106876.log
for the output of root script
--또다른 ssh창을 열어서
(ol8ora19rf2 서버에 root os user로 접속) 작업 로그 모니터링
[root@ol8ora19rf2][/root]$ tail -f
/u01/app/19.29/grid/install/root_ol8ora19rf2_2025-11-23_13-15-49-239874424.log
...생략
Finished running generic part of root script.
Now product-specific root actions will be performed.
Relinking oracle with rac_on option
LD_LIBRARY_PATH='/u01/app/19c/grid/lib:/u01/app/19.29/grid/lib:'
Using configuration parameter file:
/u01/app/19.29/grid/crs/install/crsconfig_params
The log
of current session can be found at:
/u01/app/oracle/crsdata/ol8ora19rf2/crsconfig/rootcrs_ol8ora19rf2_2025-11-23_01-15-56PM.log
Using configuration parameter file:
/u01/app/19.29/grid/crs/install/crsconfig_params
The log
of current session can be found at:
/u01/app/oracle/crsdata/ol8ora19rf2/crsconfig/crs_prepatch_apply_oop_ol8ora19rf2_2025-11-23_01-15-56PM.log
2025/11/23 13:16:04 CLSRSC-671: Pre-patch steps for
patching GI home successfully completed.
Using
configuration parameter file:
/u01/app/19.29/grid/crs/install/crsconfig_params
The log
of current session can be found at:
/u01/app/oracle/crsdata/ol8ora19rf2/crsconfig/crs_postpatch_apply_oop_ol8ora19rf2_2025-11-23_01-16-04PM.log
Oracle Clusterware active version on the cluster is
[19.0.0.0.0]. The cluster upgrade state is [ROLLING PATCH]. The cluster active
patch level is [880628325].
2025/11/23 13:20:08
CLSRSC-329: Replacing Clusterware entries in file 'oracle-ohasd.service'
Oracle Clusterware active version on the cluster is
[19.0.0.0.0]. The cluster upgrade state is [NORMAL]. The cluster active patch
level is [517676180].
2025/11/23 13:21:26 CLSRSC-4015:
Performing install or upgrade action for Oracle Trace File Analyzer (TFA)
Collector.
2025/11/23 13:21:26 CLSRSC-4012: Shutting
down Oracle Trace File Analyzer (TFA) Collector.
2025/11/23 13:21:35 CLSRSC-4013: Successfully shut down
Oracle Trace File Analyzer (TFA) Collector.
2025/11/23
13:21:38 CLSRSC-672: Post-patch steps for patching GI home successfully
completed.
--> 2번 노드의 grid home이 RU
19.28에서 19.29로 switch 완료된 것임
[+ASM2:grid@ol8ora19rf2][/home/grid]$ alias
csrt
alias csrt='crsctl
stat res -t'
[+ASM2:grid@ol8ora19rf2][/home/grid]$
csrt
...생략
ora.ora19rf.db
1 ONLINE
ONLINE
ol8ora19rf1
Open,HOME=/u01/app/o
racle/product/19.29/
db_1,STABLE
2 OFFLINE
OFFLINE
STABLE
...생략
--> 1번 노드는 정상적으로 기동되고 있음
--> 2번 노드는 내려가있는 상태임
--> 1번
노드만으로 요청 콜을 처리중임
--지금부터 2번 노드의 root, grid,
oracle os user의 .bash_profile의 내용을 변경함
--root os user
[root@ol8ora19rf2][/root]$ cp
/root/.bash_profile /root/.bash_profile.bak.19.28
[root@ol8ora19rf2][/root]$ vi /root/.bash_profile
[root@ol8ora19rf2][/root]$ cat /root/.bash_profile | grep
19.29
export
GRID_HOME=/u01/app/19.29/grid
export
DB_HOME=$ORACLE_BASE/product/19.29/db_1
[root@ol8ora19rf2][/root]$ source /root/.bash_profile
--grid os
user
[+ASM2:grid@ol8ora19rf2][/home/grid]$ cp
/home/grid/.bash_profile /home/grid/.bash_profile.bak.19.28
[+ASM2:grid@ol8ora19rf2][/home/grid]$ vi
/home/grid/.bash_profile
[+ASM2:grid@ol8ora19rf2][/home/grid]$ cat
/home/grid/.bash_profile | grep 19.29
export
GRID_HOME=/u01/app/19.29/grid
export
DB_HOME=$ORACLE_BASE/product/19.29/db_1
export
GRID_HOME_1929=/u01/app/19.29/grid
[+ASM2:grid@ol8ora19rf2][/home/grid]$ source /home/grid/.bash_profile
--oracle os
user
[ORA19RF2:oracle@ol8ora19rf2][/home/oracle]$ cp
/home/oracle/.bash_profile /home/oracle/.bash_profile.19.28
[ORA19RF2:oracle@ol8ora19rf2][/home/oracle]$ vi
/home/oracle/.bash_profile
[ORA19RF2:oracle@ol8ora19rf2][/home/oracle]$ cat
/home/oracle/.bash_profile | grep 19.29
export DB_HOME=$ORACLE_BASE/product/19.29/db_1
export
ORACLE_HOME_1929=/u01/app/oracle/product/19.29/db_1
[ORA19RF2:oracle@ol8ora19rf2][/home/oracle]$ source
/home/oracle/.bash_profile
--grid os
user
[+ASM2:grid@ol8ora19rf2][/home/grid]$ crsctl query crs releasepatch
Oracle Clusterware
release patch level is [880628325] and the complete list of patches [36758186
37960098 37962938 37962946 38124772 ] have been applied on the local node. The
release patch string is [19.28.0.0.0].
[+ASM2:grid@ol8ora19rf2][/home/grid]$ opatch
lspatches
38380425;TOMCAT RELEASE UPDATE 19.0.0.0.0 (38380425)
38322923;OCW RELEASE UPDATE 19.29.0.0.0 (38322923)
38311528;ACFS RELEASE UPDATE 19.29.0.0.0 (38311528)
38291812;Database Release Update : 19.29.0.0.251021
(38291812)
36758186;DBWLM RELEASE UPDATE 19.0.0.0.0
(36758186)
OPatch succeeded.
[+ASM2:grid@ol8ora19rf2][/home/grid]$
$GRID_HOME/OPatch/opatch lsinventory | grep -i "Release
Update"
Patch description: "TOMCAT RELEASE UPDATE 19.0.0.0.0
(38380425)"
Patch description: "OCW RELEASE UPDATE
19.29.0.0.0 (38322923)"
Patch description: "ACFS
RELEASE UPDATE 19.29.0.0.0 (38311528)"
Patch
description: "Database Release Update : 19.29.0.0.251021 (38291812)"
Patch description: "DBWLM RELEASE UPDATE 19.0.0.0.0
(36758186)"
[+ASM2:grid@ol8ora19rf2][/home/grid]$ cat
/u01/app/oraInventory/ContentsXML/inventory.xml
<?xml version="1.0" standalone="yes" ?>
<!-- Copyright (c) 1999, 2025, Oracle and/or its
affiliates.
All rights reserved. -->
<!-- Do not modify the contents of this file by hand.
-->
<INVENTORY>
<VERSION_INFO>
<SAVED_WITH>12.2.0.7.0</SAVED_WITH>
<MINIMUM_VER>2.1.0.6.0</MINIMUM_VER>
</VERSION_INFO>
<HOME_LIST>
<HOME
NAME="OraGI19Home1" LOC="/u01/app/19c/grid" TYPE="O" IDX="1"/>
<HOME NAME="OraDB19Home1"
LOC="/u01/app/oracle/product/19c/db_1" TYPE="O" IDX="2"/>
<HOME NAME="OraGI19Home2" LOC="/u01/app/19.29/grid"
TYPE="O" IDX="3" CRS="true"/> --> CRS="true" 인것을 확인
<HOME NAME="OraDB19Home2"
LOC="/u01/app/oracle/product/19.29/db_1" TYPE="O" IDX="4"/>
</HOME_LIST>
<COMPOSITEHOME_LIST>
</COMPOSITEHOME_LIST>
</INVENTORY>
[+ASM2:grid@ol8ora19rf2][/etc/init.d]$ vi
/etc/init.d/init.ohasd /etc/init.d/ohasd
--> 위 2개의 파일에서
GRID HOME이 RU 19.29로 제대로 바뀌었는지 확인
[+ASM2:grid@ol8ora19rf2][/etc/init.d]$ crsctl query crs
activeversion -f
Oracle Clusterware active version on the cluster is
[19.0.0.0.0]. The cluster upgrade state is [NORMAL]. The cluster active patch
level is [517676180].
--> 클러스터 업그레이드 상태가 NORMAL이 됨
[+ASM2:grid@ol8ora19rf2][/home/grid]$ srvctl start instance
-node `hostname`
starting database instances on nodes "ol8ora19rf2" ...
started resources "ora.ora19rf.db" on node
"ol8ora19rf2"
--ol8ora19rs1 서버에서 실행 중인
/home/oracle/run_drain_test_21.sh 에서 이제 1번 노드가 아닌 2번 노드로 트랜잭션을 발생
시키게됨
--------------------------------------------------
2
2546
TEST_NO INST_ID
---------------- ----------------
2546
2
[Sun Nov 23 13:27:20 KST 2025] Inserted and Checked
last row
--------------------------------------------------
11. datapatch 작업 (1노드에서만 작업)
--1번 노드 (oracle os
user)
[ORA19RF1:oracle@ol8ora19rf1][/home/oracle]$ opatch
lspatches
38322923;OCW RELEASE UPDATE 19.29.0.0.0 (38322923)
38291812;Database Release Update : 19.29.0.0.251021
(38291812)
OPatch succeeded.
[ORA19RF1:oracle@ol8ora19rf1][/home/oracle]$ env | grep
ORA
ORACLE_UNQNAME=ORA19RF
ORACLE_HOME_1929=/u01/app/oracle/product/19.29/db_1
ORACLE_SID=ORA19RF1
ORACLE_BASE=/u01/app/oracle
ORACLE_DBNAME_LOWER=ora19rf
ORACLE_SID_LOWER=ora19rf1
ORACLE_HOME=/u01/app/oracle/product/19.29/db_1
ORACLE_TERM=xterm
ORACLE_HOSTNAME=ol8ora19rf1
PS1=[$ORACLE_SID:\u@\h][$PWD]$
ORACLE_UNQNAME_LOWER=ora19rf
ORACLE_DBNAME=ORA19RF
[ORA19RF1:oracle@ol8ora19rf1][/home/oracle]$
$ORACLE_HOME/OPatch/datapatch
SQL Patching tool version 19.29.0.0.0 Production on Sun Nov
23 13:29:38 2025
Copyright (c) 2012, 2025, Oracle.
All rights reserved.
Log file for this invocation: /u01/app/oracle/cfgtoollogs/sqlpatch/sqlpatch_5571_2025_11_23_13_29_38/sqlpatch_invocation.log
Connecting to
database...OK
Gathering database info...done
Bootstrapping registry and package to current
versions...done
Determining current
state...done
Current state of
interim SQL patches:
No interim patches
found
Current state of
release update SQL patches:
Binary registry:
19.29.0.0.0 Release_Update 251002005342:
Installed
SQL registry:
Applied 19.28.0.0.0 Release_Update
250705030417 successfully on 25/09/29 23:33:34.729984
Adding patches to
installation queue and performing prereq checks...done
Installation queue:
No
interim patches need to be rolled back
Patch
38291812 (Database Release Update : 19.29.0.0.251021 (38291812)):
Apply from 19.28.0.0.0 Release_Update
250705030417 to 19.29.0.0.0 Release_Update 251002005342
No interim patches need to be
applied
Installing
patches...
Patch installation complete. Total
patches installed: 1
Validating
logfiles...done
Patch 38291812 apply: SUCCESS
logfile:
/u01/app/oracle/cfgtoollogs/sqlpatch/38291812/28130960/38291812_apply_ORA19RF_2025Nov23_13_30_11.log
(no errors)
SQL Patching tool complete on Sun Nov 23
13:30:48 2025
[ORA19RF1:oracle@ol8ora19rf1][/home/oracle]$ alias
ss
alias ss='rlwrap
sqlplus "/as sysdba"'
[ORA19RF1:oracle@ol8ora19rf1][/home/oracle]$
ss
SQL*Plus: Release
19.0.0.0.0 - Production on Sat Nov 22 23:54:05 2025
Version 19.29.0.0.0
Copyright (c) 1982, 2025, Oracle. All rights reserved.
Connected to:
Oracle Database 19c
Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.29.0.0.0
SQL>
set linesize 180 pagesize 1000 trimspool on
col install_id for 99999
col patch_id for 9999999999
col patch_uid for 9999999999
col action for a10
col status for a12
col action_time for a19
col
description for a60
select a.install_id
, a.patch_id
, a.patch_uid
, a.action
, a.status
, to_char(a.action_time,
'YYYY-MM-DD HH24:MI:SS') as action_time
, a.description
from dba_registry_sqlpatch a
order by a.action_time
;
INSTALL_ID PATCH_ID PATCH_UID
ACTION STATUS
ACTION_TIME DESCRIPTION
---------- ----------- ----------- ---------- ------------
-------------------
------------------------------------------------------------
1 37960098 27635722
APPLY SUCCESS
2025-09-29 23:33:34 Database Release Update : 19.28.0.0.250715 (37960098)
2 38291812 28130960
APPLY SUCCESS
2025-11-23 13:30:37 Database Release Update : 19.29.0.0.251021
(38291812)
[ORA19RF1:oracle@ol8ora19rf1][/home/oracle]$ opatch
lspatches
38322923;OCW RELEASE UPDATE 19.29.0.0.0 (38322923)
38291812;Database Release Update : 19.29.0.0.251021
(38291812)
OPatch succeeded.
--invalid object
확인
SELECT *
FROM
(
SELECT
OBJECT_NAME
, STATUS
, OBJECT_TYPE
, LAST_DDL_TIME
, 'ALTER ' || OBJECT_TYPE || ' ' || OWNER || '.' || '"'|| OBJECT_NAME ||
'"' || ' COMPILE;' AS DDL
FROM
DBA_OBJECTS
WHERE
1=1
AND OBJECT_TYPE IN ('PACKAGE')
AND STATUS
= 'INVALID'
)
UNION
ALL
SELECT *
FROM
(
SELECT
OBJECT_NAME
, STATUS
, OBJECT_TYPE
, LAST_DDL_TIME
, 'ALTER PACKAGE'|| ' ' || OWNER || '.' || '"'|| OBJECT_NAME || '"' || '
COMPILE BODY;' AS DDL
FROM
DBA_OBJECTS
WHERE
1=1
AND OBJECT_TYPE IN ('PACKAGE BODY')
AND STATUS
= 'INVALID'
)
UNION ALL
SELECT *
FROM
(
SELECT
OBJECT_NAME
, STATUS
, OBJECT_TYPE
, LAST_DDL_TIME
, 'ALTER PUBLIC ' || OBJECT_TYPE || ' ' || '"' || OBJECT_NAME || '"'
|| ' COMPILE;' AS DDL
FROM
DBA_OBJECTS
WHERE 1=1
AND OBJECT_TYPE IN ('SYNONYM') AND OWNER = 'PUBLIC'
AND STATUS = 'INVALID'
)
UNION ALL
SELECT *
FROM
(
SELECT
OBJECT_NAME
, STATUS
, OBJECT_TYPE
, LAST_DDL_TIME
, 'ALTER ' || OBJECT_TYPE || ' ' || OWNER || '.' || '"'|| OBJECT_NAME ||
'"' || ' COMPILE;' AS DDL
FROM
DBA_OBJECTS
WHERE
1=1
AND OBJECT_TYPE IN ('TYPE')
AND STATUS
= 'INVALID'
)
UNION
ALL
SELECT *
FROM
(
SELECT
OBJECT_NAME
, STATUS
, OBJECT_TYPE
, LAST_DDL_TIME
, 'ALTER TYPE' || ' ' || OWNER || '.' || '"'|| OBJECT_NAME || '"' ||
' COMPILE BODY;' AS DDL
FROM
DBA_OBJECTS
WHERE
1=1
AND OBJECT_TYPE IN ('TYPE BODY')
AND STATUS
= 'INVALID'
)
UNION
ALL
SELECT *
FROM
(
SELECT
OBJECT_NAME
, STATUS
, OBJECT_TYPE
, LAST_DDL_TIME
, 'ALTER ' || OBJECT_TYPE || ' ' || OWNER || '.' || '"'|| OBJECT_NAME ||
'"' || ' COMPILE;' AS DDL
FROM
DBA_OBJECTS
WHERE
1=1
AND OBJECT_TYPE IN ('VIEW')
AND STATUS
= 'INVALID'
)
UNION
ALL
SELECT *
FROM
(
SELECT
OBJECT_NAME
, STATUS
, OBJECT_TYPE
, LAST_DDL_TIME
, 'ALTER ' || OBJECT_TYPE || ' ' || OWNER || '.' || '"'|| OBJECT_NAME ||
'"' || ' COMPILE;' AS DDL
FROM
DBA_OBJECTS
WHERE
1=1
AND OBJECT_TYPE IN ('PROCEDURE')
AND STATUS
= 'INVALID'
)
UNION
ALL
SELECT *
FROM
(
SELECT
OBJECT_NAME
, STATUS
, OBJECT_TYPE
, LAST_DDL_TIME
, 'ALTER ' || OBJECT_TYPE || ' ' || OWNER || '.' || '"'|| OBJECT_NAME ||
'"' || ' COMPILE;' AS DDL
FROM
DBA_OBJECTS
WHERE
1=1
AND OBJECT_TYPE IN ('TRIGGER')
AND STATUS
= 'INVALID'
)
ORDER
BY 3
;
no rows selected
12. glogin.sql 파일 복사
--기존 Grid 및 Oracle RU 19.28에 있던 glogin.sql 파일을 새로운 Grid 및 Oracle RU 19.29에 복사
--1번 노드
--grid os user
[+ASM1:grid@ol8ora19rf1][/home/grid]$ cp
/u01/app/19c/grid/sqlplus/admin/glogin.sql
/u01/app/19.29/grid/sqlplus/admin/
--oralce os user
[ORA19RF1:oracle@ol8ora19rf1][/home/oracle]$ cp
/u01/app/oracle/product/19c/db_1/sqlplus/admin/glogin.sql
/u01/app/oracle/product/19.29/db_1/sqlplus/admin/
--2번 노드
--grid os user
[+ASM2:grid@ol8ora19rf2][/home/grid]$ cp
/u01/app/19c/grid/sqlplus/admin/glogin.sql
/u01/app/19.29/grid/sqlplus/admin/
--oralce
os user
[ORA19RF2:oracle@ol8ora19rf2][/home/oracle]$ cp
/u01/app/oracle/product/19c/db_1/sqlplus/admin/glogin.sql
/u01/app/oracle/product/19.29/db_1/sqlplus/admin/
13. 기존 RU 19.28로 롤백하기
--1번 노드
[+ASM1:grid@ol8ora19rf1][/home/grid]$ srvctl stop instance -node `hostname` -stopoption immediate -drain_timeout 300 -failover -force
--> 1번 노드의 오라클 인스턴스를 내림
[+ASM1:grid@ol8ora19rf1][/home/grid]$ ls -l
/u01/app/19c/grid/crs/config/rootconfig.sh
-rwxr-x---. 1 root
oinstall 6246 Sep 29 22:43
/u01/app/19c/grid/crs/config/rootconfig.sh
--rootconfig.sh 파일에 소유자 변경
[root@ol8ora19rf1][/root]$ chown grid:oinstall /u01/app/19c/grid/crs/config/rootconfig.sh
[+ASM1:grid@ol8ora19rf1][/home/grid]$ export
ORACLE_HOME=/u01/app/19c/grid
[+ASM1:grid@ol8ora19rf1][/home/grid]$ export
CURRENT_NODE=$(hostname)
[+ASM1:grid@ol8ora19rf1][/home/grid]$
$ORACLE_HOME/gridSetup.sh \
-silent -switchGridHome \
oracle.install.option=CRS_SWONLY \
ORACLE_HOME=$ORACLE_HOME \
oracle.install.crs.config.clusterNodes=$CURRENT_NODE \
oracle.install.crs.rootconfig.executeRootScript=false
Launching Oracle Grid Infrastructure Setup
Wizard...
As a root user, execute the following script(s):
1.
/u01/app/19c/grid/root.sh
--> 이 단계에서 root.sh 를 실행하지 않음
Execute
/u01/app/19c/grid/root.sh on the following nodes:
[ol8ora19rf1]
You can find the
log of this install session at:
/u01/app/oraInventory/logs/UpdateNodeList2025-11-23_01-48-03PM.log
You can find the log of this install session at:
/u01/app/oraInventory/logs/UpdateNodeList2025-11-23_01-48-03PM.log
Successfully Setup Software.
[+ASM1:grid@ol8ora19rf1][/home/grid]$ cat
/u01/app/oraInventory/ContentsXML/inventory.xml
<?xml
version="1.0" standalone="yes" ?>
<!-- Copyright
(c) 1999, 2025, Oracle and/or its affiliates.
All rights
reserved. -->
<!-- Do not modify the contents of
this file by hand. -->
<INVENTORY>
<VERSION_INFO>
<SAVED_WITH>12.2.0.7.0</SAVED_WITH>
<MINIMUM_VER>2.1.0.6.0</MINIMUM_VER>
</VERSION_INFO>
<HOME_LIST>
<HOME
NAME="OraGI19Home1" LOC="/u01/app/19c/grid" TYPE="O" IDX="1" CRS="true"/>
--> 19.28 이 CRS="true" 임
<HOME NAME="OraDB19Home1"
LOC="/u01/app/oracle/product/19c/db_1" TYPE="O" IDX="2"/>
<HOME NAME="OraGI19Home2" LOC="/u01/app/19.29/grid"
TYPE="O" IDX="3"/>
<HOME NAME="OraDB19Home2"
LOC="/u01/app/oracle/product/19.29/db_1" TYPE="O" IDX="4"/>
</HOME_LIST>
<COMPOSITEHOME_LIST>
</COMPOSITEHOME_LIST>
</INVENTORY>
[ORA19RF1:oracle@ol8ora19rf1][/home/oracle]$ export
ORACLE_HOME=/u01/app/oracle/product/19c/db_1
[ORA19RF1:oracle@ol8ora19rf1][/home/oracle]$ echo
$ORACLE_HOME
/u01/app/oracle/product/19c/db_1
[ORA19RF1:oracle@ol8ora19rf1][/home/oracle]$ srvctl modify
database -d ora19rf -o $ORACLE_HOME
[ORA19RF1:oracle@ol8ora19rf1][/home/oracle]$ srvctl config
database -db ora19rf
Database unique name: ORA19RF
Database name: ORA19RF
Oracle home:
/u01/app/oracle/product/19c/db_1
Oracle user: oracle
Spfile:
+DATA1/ORA19RF/PARAMETERFILE/spfile.270.1213140911
Password file:
+DATA1/ORA19RF/PASSWORD/pwdora19rf.256.1213140441
Domain:
Start options: open
Stop options: immediate
Database
role: PRIMARY
Management policy: AUTOMATIC
Server pools:
Disk Groups:
FRA1,DATA1
Mount point paths:
Services:
Type: RAC
Start concurrency:
Stop
concurrency:
OSDBA group: dba
OSOPER group: oper
Database
instances: ORA19RF1,ORA19RF2
Configured nodes:
ol8ora19rf1,ol8ora19rf2
CSS critical: no
CPU count: 0
Memory target: 0
Maximum memory: 0
Default network
number for database services:
Database is administrator
managed
[root@ol8ora19rf1][/root]$
/u01/app/19c/grid/root.sh
...생략
Oracle Clusterware active
version on the cluster is [19.0.0.0.0]. The cluster upgrade state is [NORMAL].
The cluster active patch level is [517676180].
2025/11/23 13:51:18 CLSRSC-329: Replacing Clusterware
entries in file 'oracle-ohasd.service'
Oracle
Clusterware active version on the cluster is [19.0.0.0.0]. The cluster upgrade
state is [ROLLING PATCH]. The cluster active patch level is [517676180].
...생략
[+ASM1:grid@ol8ora19rf1][/home/grid]$
/u01/app/19c/grid/bin/srvctl start instance -node `hostname`
[+ASM1:grid@ol8ora19rf1][/home/grid]$ alias
csrt
alias csrt='crsctl
stat res -t'
[+ASM1:grid@ol8ora19rf1][/home/grid]$
csrt
...생략
ora.ora19rf.db
1 ONLINE
ONLINE
ol8ora19rf1
Open,HOME=/u01/app/o
racle/product/19c/db
_1,STABLE
2 ONLINE
ONLINE
ol8ora19rf2
Open,HOME=/u01/app/o
racle/product/19.29/
db_1,STABLE
...생략
--2번
노드
[+ASM2:grid@ol8ora19rf2][/home/grid]$ srvctl stop instance -node `hostname` -stopoption immediate -drain_timeout 300 -failover -force
[+ASM2:grid@ol8ora19rf2][/home/grid]$ ls -l
/u01/app/19c/grid/crs/config/rootconfig.sh
-rwxr-x---. 1 root
oinstall 6246 Sep 29 22:43
/u01/app/19c/grid/crs/config/rootconfig.sh
[root@ol8ora19rf2][/root]$ chown grid:oinstall /u01/app/19c/grid/crs/config/rootconfig.sh
[+ASM2:grid@ol8ora19rf2][/home/grid]$ export
ORACLE_HOME=/u01/app/19c/grid
[+ASM2:grid@ol8ora19rf2][/home/grid]$ export
CURRENT_NODE=$(hostname)
[+ASM2:grid@ol8ora19rf2][/home/grid]$
$ORACLE_HOME/gridSetup.sh \
-silent -switchGridHome \
oracle.install.option=CRS_SWONLY \
ORACLE_HOME=$ORACLE_HOME \
oracle.install.crs.config.clusterNodes=$CURRENT_NODE \
oracle.install.crs.rootconfig.executeRootScript=false
Launching Oracle Grid Infrastructure Setup
Wizard...
As a root user, execute the following script(s):
1.
/u01/app/19c/grid/root.sh
Execute
/u01/app/19c/grid/root.sh on the following nodes:
[ol8ora19rf2]
You can find the
log of this install session at:
/u01/app/oraInventory/logs/UpdateNodeList2025-11-23_02-00-17PM.log
You can find the log of this install session at:
/u01/app/oraInventory/logs/UpdateNodeList2025-11-23_02-00-17PM.log
Successfully Setup Software.
[+ASM2:grid@ol8ora19rf2][/home/grid]$ cat
/u01/app/oraInventory/ContentsXML/inventory.xml
<?xml
version="1.0" standalone="yes" ?>
<!-- Copyright
(c) 1999, 2025, Oracle and/or its affiliates.
All rights
reserved. -->
<!-- Do not modify the contents of
this file by hand. -->
<INVENTORY>
<VERSION_INFO>
<SAVED_WITH>12.2.0.7.0</SAVED_WITH>
<MINIMUM_VER>2.1.0.6.0</MINIMUM_VER>
</VERSION_INFO>
<HOME_LIST>
<HOME
NAME="OraGI19Home1" LOC="/u01/app/19c/grid" TYPE="O" IDX="1" CRS="true"/>
<HOME NAME="OraDB19Home1"
LOC="/u01/app/oracle/product/19c/db_1" TYPE="O" IDX="2"/>
<HOME NAME="OraGI19Home2" LOC="/u01/app/19.29/grid"
TYPE="O" IDX="3"/>
<HOME NAME="OraDB19Home2"
LOC="/u01/app/oracle/product/19.29/db_1" TYPE="O" IDX="4"/>
</HOME_LIST>
<COMPOSITEHOME_LIST>
</COMPOSITEHOME_LIST>
</INVENTORY>
[root@ol8ora19rf2][/root]$
/u01/app/19c/grid/root.sh
...생략
Oracle Clusterware active version on the cluster is
[19.0.0.0.0]. The cluster upgrade state is [ROLLING PATCH]. The cluster active
patch level is [517676180].
2025/11/23 14:01:30
CLSRSC-329: Replacing Clusterware entries in file 'oracle-ohasd.service'
Oracle Clusterware active version on the cluster is
[19.0.0.0.0]. The cluster upgrade state is [NORMAL]. The cluster active patch
level is [880628325].
...생략
[+ASM2:grid@ol8ora19rf2][/home/grid]$
/u01/app/19c/grid/bin/srvctl start instance -node `hostname`
[+ASM2:grid@ol8ora19rf2][/home/grid]$ alias
csrt
alias csrt='crsctl
stat res -t'
[+ASM2:grid@ol8ora19rf2][/home/grid]$
csrt
...생략
ora.ora19rf.db
1 ONLINE
ONLINE
ol8ora19rf1
Open,HOME=/u01/app/o
racle/product/19c/db
_1,STABLE
2 ONLINE
ONLINE
ol8ora19rf2
Open,HOME=/u01/app/o
racle/product/19c/db
_1,STABLE
...생략
--1번
노드
[ORA19RF1:oracle@ol8ora19rf1][/home/oracle]$ export
ORACLE_HOME=/u01/app/oracle/product/19c/db_1
[ORA19RF1:oracle@ol8ora19rf1][/home/oracle]$ cd
/u01/app/oracle/product/19c/db_1/OPatch
[ORA19RF1:oracle@ol8ora19rf1][/u01/app/oracle/product/19c/db_1/OPatch]$
./datapatch
SQL Patching tool version 19.28.0.0.0 Production on Sun Nov
23 14:05:54 2025
Copyright (c) 2012, 2025, Oracle.
All rights reserved.
Log file for this invocation: /u01/app/oracle/cfgtoollogs/sqlpatch/sqlpatch_1650_2025_11_23_14_05_54/sqlpatch_invocation.log
Connecting to
database...OK
Gathering database info...done
Bootstrapping registry and package to current
versions...done
Determining current
state...done
Current state of
interim SQL patches:
No interim patches
found
Current state of
release update SQL patches:
Binary registry:
19.28.0.0.0 Release_Update 250705030417:
Installed
SQL registry:
Applied 19.29.0.0.0 Release_Update
251002005342 successfully on 25/11/23 13:30:37.615094
Adding patches to
installation queue and performing prereq checks...done
Installation queue:
No
interim patches need to be rolled back
Patch
38291812 (Database Release Update : 19.29.0.0.251021 (38291812)):
Rollback from 19.29.0.0.0 Release_Update
251002005342 to 19.28.0.0.0 Release_Update 250705030417
No interim patches need to be
applied
Installing
patches...
Patch installation complete. Total
patches installed: 1
Validating
logfiles...done
Patch 38291812 rollback: SUCCESS
logfile:
/u01/app/oracle/cfgtoollogs/sqlpatch/38291812/28130960/38291812_rollback_ORA19RF_2025Nov23_14_06_13.log
(no errors)
SQL Patching tool complete on Sun Nov 23
14:06:42 2025
[ORA19RF1:oracle@ol8ora19rf1][/home/oracle]$ alias
ss
alias ss='rlwrap
sqlplus "/as sysdba"'
[ORA19RF1:oracle@ol8ora19rf1][/home/oracle]$
ss
SQL*Plus: Release
19.0.0.0.0 - Production on Sun Nov 23 14:07:13 2025
Version 19.29.0.0.0
Copyright (c) 1982, 2025, Oracle. All rights reserved.
Connected to:
Oracle Database 19c
Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.28.0.0.0
set linesize 180 pagesize 1000 trimspool on
col
install_id for 99999
col
patch_id for 9999999999
col
patch_uid for 9999999999
col
action for a10
col
status for a12
col
action_time for a19
col description for
a60
select
a.install_id
, a.patch_id
, a.patch_uid
, a.action
, a.status
, to_char(a.action_time,
'YYYY-MM-DD HH24:MI:SS') as action_time
, a.description
from dba_registry_sqlpatch a
order by a.action_time
;
INSTALL_ID PATCH_ID PATCH_UID
ACTION STATUS
ACTION_TIME DESCRIPTION
---------- ----------- ----------- ---------- ------------
-------------------
------------------------------------------------------------
1 37960098 27635722
APPLY SUCCESS
2025-09-29 23:33:34 Database Release Update : 19.28.0.0.250715 (37960098)
2 38291812 28130960
APPLY SUCCESS
2025-11-23 13:30:37 Database Release Update : 19.29.0.0.251021 (38291812)
3 38291812 28130960 ROLLBACK
SUCCESS 2025-11-23 14:06:32 Database Release
Update : 19.29.0.0.251021 (38291812)
3 rows selected.
Elapsed: 00:00:00.00
--완료된 후 양쪽 노드 root, grid, oracle 홈의 .bash_profile을 수정하면됨
14. 다시 RU 19.29로 돌아가기
--1번 노드
[+ASM1:grid@ol8ora19rf1][/home/grid]$ srvctl stop instance
-node `hostname` -stopoption immediate -drain_timeout 300 -failover
-force
[+ASM1:grid@ol8ora19rf1][/home/grid]$ ls -l
/u01/app/19.29/grid/crs/config/rootconfig.sh
-rwxr-x---. 1 root
oinstall 6245 Nov 23 12:36
/u01/app/19.29/grid/crs/config/rootconfig.sh
[root@ol8ora19rf1][/root]$ chown grid:oinstall /u01/app/19.29/grid/crs/config/rootconfig.sh
[+ASM1:grid@ol8ora19rf1][/home/grid]$ export
ORACLE_HOME=/u01/app/19.29/grid
[+ASM1:grid@ol8ora19rf1][/home/grid]$ export
CURRENT_NODE=$(hostname)
[+ASM1:grid@ol8ora19rf1][/home/grid]$
$ORACLE_HOME/gridSetup.sh \
-silent -switchGridHome \
oracle.install.option=CRS_SWONLY \
ORACLE_HOME=$ORACLE_HOME \
oracle.install.crs.config.clusterNodes=$CURRENT_NODE \
oracle.install.crs.rootconfig.executeRootScript=false
Launching Oracle Grid Infrastructure Setup Wizard...
As a root user, execute the following script(s):
1.
/u01/app/19.29/grid/root.sh
Execute
/u01/app/19.29/grid/root.sh on the following nodes:
[ol8ora19rf1]
You can find the
log of this install session at:
/u01/app/oraInventory/logs/UpdateNodeList2025-11-23_02-20-22PM.log
You can find the log of this install session at:
/u01/app/oraInventory/logs/UpdateNodeList2025-11-23_02-20-22PM.log
Successfully Setup Software.
[+ASM1:grid@ol8ora19rf1][/home/grid]$ cat
/u01/app/oraInventory/ContentsXML/inventory.xml
<?xml version="1.0" standalone="yes" ?>
<!-- Copyright (c) 1999, 2025, Oracle and/or its
affiliates.
All rights reserved. -->
<!-- Do not modify the contents of this file by hand.
-->
<INVENTORY>
<VERSION_INFO>
<SAVED_WITH>12.2.0.7.0</SAVED_WITH>
<MINIMUM_VER>2.1.0.6.0</MINIMUM_VER>
</VERSION_INFO>
<HOME_LIST>
<HOME
NAME="OraGI19Home1" LOC="/u01/app/19c/grid" TYPE="O" IDX="1"/>
<HOME NAME="OraDB19Home1"
LOC="/u01/app/oracle/product/19c/db_1" TYPE="O" IDX="2"/>
<HOME NAME="OraGI19Home2" LOC="/u01/app/19.29/grid"
TYPE="O" IDX="3" CRS="true"/>
<HOME
NAME="OraDB19Home2" LOC="/u01/app/oracle/product/19.29/db_1" TYPE="O"
IDX="4"/>
</HOME_LIST>
<COMPOSITEHOME_LIST>
</COMPOSITEHOME_LIST>
</INVENTORY>
[ORA19RF1:oracle@ol8ora19rf1][/home/oracle]$ srvctl modify
database -d ora19rf -o $ORACLE_HOME
[ORA19RF1:oracle@ol8ora19rf1][/home/oracle]$ srvctl config
database -db ora19rf
Database unique name: ORA19RF
Database name: ORA19RF
Oracle home:
/u01/app/oracle/product/19.29/db_1
Oracle user:
oracle
Spfile:
+DATA1/ORA19RF/PARAMETERFILE/spfile.270.1213140911
Password file:
+DATA1/ORA19RF/PASSWORD/pwdora19rf.256.1213140441
Domain:
Start options: open
Stop options: immediate
Database
role: PRIMARY
Management policy: AUTOMATIC
Server pools:
Disk Groups:
FRA1,DATA1
Mount point paths:
Services:
Type: RAC
Start concurrency:
Stop
concurrency:
OSDBA group: dba
OSOPER group: oper
Database
instances: ORA19RF1,ORA19RF2
Configured nodes:
ol8ora19rf1,ol8ora19rf2
CSS critical: no
CPU count: 0
Memory target: 0
Maximum memory: 0
Default network
number for database services:
Database is administrator
managed
[root@ol8ora19rf1][/root]$
/u01/app/19.29/grid/root.sh
Performing root user operation.
The following
environment variables are set as:
ORACLE_OWNER= grid
ORACLE_HOME=
/u01/app/19c/grid
Copying dbhome to
/usr/local/bin ...
Copying oraenv to
/usr/local/bin ...
Copying coraenv to
/usr/local/bin ...
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
LD_LIBRARY_PATH='/u01/app/19c/grid/lib:/u01/app/19c/grid/lib:'
Using configuration parameter file:
/u01/app/19c/grid/crs/install/crsconfig_params
The log
of current session can be found at:
/u01/app/oracle/crsdata/ol8ora19rf1/crsconfig/rootcrs_ol8ora19rf1_2025-11-23_02-22-21PM.log
Using configuration parameter file:
/u01/app/19c/grid/crs/install/crsconfig_params
The log
of current session can be found at:
/u01/app/oracle/crsdata/ol8ora19rf1/crsconfig/crs_prepatch_apply_oop_ol8ora19rf1_2025-11-23_02-22-21PM.log
2025/11/23 14:22:25 CLSRSC-901: The destination GI home
specified for out-of-place patching is the same as the configured GI home.
Using configuration parameter file:
/u01/app/19c/grid/crs/install/crsconfig_params
The log
of current session can be found at:
/u01/app/oracle/crsdata/ol8ora19rf1/crsconfig/crs_postpatch_apply_oop_ol8ora19rf1_2025-11-23_02-22-26PM.log
[root@ol8ora19rf1][/root]$ /u01/app/19.29/grid/root.sh
Check
/u01/app/19.29/grid/install/root_ol8ora19rf1_2025-11-23_14-22-55-741118353.log
for the output of root script
[+ASM1:grid@ol8ora19rf1][/home/grid]$
/u01/app/19c/grid/bin/srvctl start instance -node `hostname`
starting database
instances on nodes "ol8ora19rf1" ...
started resources
"ora.ora19rf.db" on node "ol8ora19rf1"
--2번 노드
[+ASM2:grid@ol8ora19rf2][/home/grid]$ srvctl stop instance
-node `hostname` -stopoption immediate -drain_timeout 300 -failover
-force
[+ASM2:grid@ol8ora19rf2][/home/grid]$ ls -l
/u01/app/19.29/grid/crs/config/rootconfig.sh
-rwxr-x---. 1 root
oinstall 6245 Nov 23 13:13
/u01/app/19.29/grid/crs/config/rootconfig.sh
[root@ol8ora19rf2][/root]$ chown grid:oinstall /u01/app/19.29/grid/crs/config/rootconfig.sh
[+ASM2:grid@ol8ora19rf2][/home/grid]$ export
ORACLE_HOME=/u01/app/19.29/grid
[+ASM2:grid@ol8ora19rf2][/home/grid]$ export
CURRENT_NODE=$(hostname)
[+ASM2:grid@ol8ora19rf2][/home/grid]$
$ORACLE_HOME/gridSetup.sh \
-silent
-switchGridHome \
oracle.install.option=CRS_SWONLY \
ORACLE_HOME=$ORACLE_HOME \
oracle.install.crs.config.clusterNodes=$CURRENT_NODE \
oracle.install.crs.rootconfig.executeRootScript=false
Launching Oracle Grid Infrastructure Setup
Wizard...
As a root user, execute the following script(s):
1.
/u01/app/19.29/grid/root.sh
Execute
/u01/app/19.29/grid/root.sh on the following nodes:
[ol8ora19rf2]
You can find the
log of this install session at:
/u01/app/oraInventory/logs/UpdateNodeList2025-11-23_02-27-43PM.log
You can find the log of this install session at:
/u01/app/oraInventory/logs/UpdateNodeList2025-11-23_02-27-43PM.log
Successfully Setup Software.
[+ASM2:grid@ol8ora19rf2][/home/grid]$ cat
/u01/app/oraInventory/ContentsXML/inventory.xml
<?xml version="1.0" standalone="yes" ?>
<!-- Copyright (c) 1999, 2025, Oracle and/or its
affiliates.
All rights reserved. -->
<!-- Do not modify the contents of this file by hand.
-->
<INVENTORY>
<VERSION_INFO>
<SAVED_WITH>12.2.0.7.0</SAVED_WITH>
<MINIMUM_VER>2.1.0.6.0</MINIMUM_VER>
</VERSION_INFO>
<HOME_LIST>
<HOME
NAME="OraGI19Home1" LOC="/u01/app/19c/grid" TYPE="O" IDX="1"/>
<HOME NAME="OraDB19Home1"
LOC="/u01/app/oracle/product/19c/db_1" TYPE="O" IDX="2"/>
<HOME NAME="OraGI19Home2" LOC="/u01/app/19.29/grid"
TYPE="O" IDX="3" CRS="true"/>
<HOME
NAME="OraDB19Home2" LOC="/u01/app/oracle/product/19.29/db_1" TYPE="O"
IDX="4"/>
</HOME_LIST>
<COMPOSITEHOME_LIST>
</COMPOSITEHOME_LIST>
</INVENTORY>
[root@ol8ora19rf2][/root]$
/u01/app/19.29/grid/root.sh
The log of current session can be found at:
/u01/app/oracle/crsdata/ol8ora19rf2/crsconfig/rootcrs_ol8ora19rf2_2025-11-23_02-28-03PM.log
Using configuration parameter file:
/u01/app/19.29/grid/crs/install/crsconfig_params
The log
of current session can be found at:
/u01/app/oracle/crsdata/ol8ora19rf2/crsconfig/crs_prepatch_apply_oop_ol8ora19rf2_2025-11-23_02-28-04PM.log
2025/11/23 14:28:11 CLSRSC-671: Pre-patch steps for
patching GI home successfully completed.
Using
configuration parameter file:
/u01/app/19.29/grid/crs/install/crsconfig_params
The log
of current session can be found at:
/u01/app/oracle/crsdata/ol8ora19rf2/crsconfig/crs_postpatch_apply_oop_ol8ora19rf2_2025-11-23_02-28-11PM.log
Oracle Clusterware active version on the cluster is
[19.0.0.0.0]. The cluster upgrade state is [ROLLING PATCH]. The cluster active
patch level is [880628325].
2025/11/23 14:32:32
CLSRSC-329: Replacing Clusterware entries in file 'oracle-ohasd.service'
Oracle Clusterware active version on the cluster is
[19.0.0.0.0]. The cluster upgrade state is [NORMAL]. The cluster active patch
level is [517676180].
2025/11/23 14:34:14 CLSRSC-4015:
Performing install or upgrade action for Oracle Trace File Analyzer (TFA)
Collector.
2025/11/23 14:34:14 CLSRSC-4012: Shutting
down Oracle Trace File Analyzer (TFA) Collector.
2025/11/23 14:34:23 CLSRSC-4013: Successfully shut down
Oracle Trace File Analyzer (TFA) Collector.
2025/11/23
14:34:25 CLSRSC-672: Post-patch steps for patching GI home successfully
completed.
2025/11/23 14:34:38 CLSRSC-4003: Successfully
patched Oracle Trace File Analyzer (TFA) Collector.
[+ASM2:grid@ol8ora19rf2][/home/grid]$
/u01/app/19.29/grid/bin/srvctl start instance -node
`hostname`
starting database instances on nodes "ol8ora19rf2" ...
started resources "ora.ora19rf.db" on node
"ol8ora19rf2"
[+ASM2:grid@ol8ora19rf2][/home/grid]$ alias
csrt
alias csrt='crsctl
stat res -t'
[+ASM2:grid@ol8ora19rf2][/home/grid]$
csrt
...생략
ora.ora19rf.db
1 ONLINE
ONLINE
ol8ora19rf1
Open,HOME=/u01/app/o
racle/product/19.29/
db_1,STABLE
2 ONLINE
ONLINE
ol8ora19rf2
Open,HOME=/u01/app/o
racle/product/19.29/
db_1,STABLE
...생략
[ORA19RF1:oracle@ol8ora19rf1][/home/oracle]$ export
ORACLE_HOME=/u01/app/oracle/product/19.29/db_1
[ORA19RF1:oracle@ol8ora19rf1][/home/oracle]$ cd
/u01/app/oracle/product/19c/db_1/OPatch
[ORA19RF1:oracle@ol8ora19rf1][/u01/app/oracle/product/19.29/db_1/OPatch]$
./datapatch
SQL Patching tool version 19.29.0.0.0 Production on Sun Nov
23 14:37:41 2025
Copyright (c) 2012, 2025, Oracle.
All rights reserved.
Log file for this invocation: /u01/app/oracle/cfgtoollogs/sqlpatch/sqlpatch_3699_2025_11_23_14_37_41/sqlpatch_invocation.log
Connecting to
database...OK
Gathering database info...done
Bootstrapping registry and package to current
versions...done
Determining current
state...done
Current state of
interim SQL patches:
No interim patches
found
Current state of
release update SQL patches:
Binary registry:
19.29.0.0.0 Release_Update 251002005342:
Installed
SQL registry:
Rolled back to 19.28.0.0.0
Release_Update 250705030417 successfully on 25/11/23
14:06:32.777797
Adding patches to
installation queue and performing prereq checks...done
Installation queue:
No
interim patches need to be rolled back
Patch
38291812 (Database Release Update : 19.29.0.0.251021 (38291812)):
Apply from 19.28.0.0.0 Release_Update
250705030417 to 19.29.0.0.0 Release_Update 251002005342
No interim patches need to be
applied
Installing
patches...
Patch installation complete. Total
patches installed: 1
Validating
logfiles...done
Patch 38291812 apply: SUCCESS
logfile:
/u01/app/oracle/cfgtoollogs/sqlpatch/38291812/28130960/38291812_apply_ORA19RF_2025Nov23_14_37_56.log
(no errors)
SQL Patching tool complete on Sun Nov 23
14:38:26 2025
[ORA19RF1:oracle@ol8ora19rf1][/u01/app/oracle/product/19.29/db_1/OPatch]$
alias ss
alias ss='rlwrap sqlplus "/as sysdba"'
[ORA19RF1:oracle@ol8ora19rf1][/u01/app/oracle/product/19.29/db_1/OPatch]$
ss
SQL*Plus: Release
19.0.0.0.0 - Production on Sun Nov 23 14:40:02 2025
Version 19.29.0.0.0
Copyright (c) 1982, 2025, Oracle. All rights reserved.
Connected to:
Oracle Database 19c
Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.29.0.0.0
set linesize 180 pagesize 1000 trimspool
on
col
install_id for 99999
col
patch_id for 9999999999
col
patch_uid for 9999999999
col
action for a10
col
status for a12
col
action_time for a19
col description for
a60
select
a.install_id
, a.patch_id
, a.patch_uid
, a.action
, a.status
, to_char(a.action_time,
'YYYY-MM-DD HH24:MI:SS') as action_time
, a.description
from dba_registry_sqlpatch a
order by a.action_time
;
INSTALL_ID PATCH_ID PATCH_UID
ACTION STATUS
ACTION_TIME DESCRIPTION
---------- ----------- ----------- ---------- ------------
-------------------
------------------------------------------------------------
1 37960098 27635722
APPLY SUCCESS
2025-09-29 23:33:34 Database Release Update : 19.28.0.0.250715 (37960098)
2 38291812 28130960
APPLY SUCCESS
2025-11-23 13:30:37 Database Release Update : 19.29.0.0.251021 (38291812)
3 38291812 28130960 ROLLBACK
SUCCESS 2025-11-23 14:06:32 Database Release
Update : 19.29.0.0.251021 (38291812)
4 38291812 28130960
APPLY SUCCESS
2025-11-23 14:38:17 Database Release Update : 19.29.0.0.251021
(38291812)
15. 19.28로 롤백은 이제 없다고 확정된 상황인 것을 가정해서 19.28 엔진
제거
--1번 노드
[+ASM1:grid@ol8ora19rf1][/home/grid]$ export
ORACLE_HOME=/u01/app/19c/grid
[+ASM1:grid@ol8ora19rf1][/home/grid]$ echo $ORACLE_HOME
/u01/app/19c/grid
[+ASM1:grid@ol8ora19rf1][/home/grid]$
$ORACLE_HOME/deinstall/deinstall -local
Checking for
required files and bootstrapping ...
Please wait ...
Location of logs
/u01/app/oraInventory/logs/
############ ORACLE DECONFIG TOOL START ############
######################### DECONFIG CHECK OPERATION START
#########################
## [START] Install check
configuration ##
Checking for existence of the Oracle home location
/u01/app/19c/grid
Oracle Home type selected for
deinstall is: Oracle Grid Infrastructure for a Cluster
Oracle Base selected for deinstall is: /u01/app/oracle
Checking for existence of central inventory location
/u01/app/oraInventory
Checking for existence of the
Oracle Grid Infrastructure home /u01/app/19.29/grid
The
following nodes are part of this cluster: ol8ora19rf1,ol8ora19rf2
Checking for sufficient temp space availability on node(s)
: 'ol8ora19rf1'
## [END] Install check configuration ##
Traces log file: /u01/app/oraInventory/logs//crsdc_2025-11-23_02-45-49-PM.log
Network Configuration check config START
Network de-configuration trace file location: /u01/app/oraInventory/logs/netdc_check2025-11-23_02-45-49PM.log
Network Configuration check config END
Asm Check Configuration START
ASM de-configuration trace file location: /u01/app/oraInventory/logs/asmcadc_check2025-11-23_02-45-49PM.log
Database Check Configuration START
Database de-configuration trace file location: /u01/app/oraInventory/logs/databasedc_check2025-11-23_02-45-49PM.log
Oracle Grid Management database was not found in this Grid Infrastructure home
Database Check Configuration END
######################### DECONFIG CHECK OPERATION END #########################
####################### DECONFIG CHECK OPERATION SUMMARY
#######################
Oracle Grid Infrastructure Home
is: /u01/app/19.29/grid
The following nodes are part of
this cluster: ol8ora19rf1,ol8ora19rf2
The cluster
node(s) on which the Oracle home deinstallation will be performed
are:ol8ora19rf1
Oracle Home selected for deinstall is:
/u01/app/19c/grid
Inventory Location where the Oracle
home registered is: /u01/app/oraInventory
The home being
deconfigured is NOT a configured Grid Infrastructure home
(/u01/app/19.29/grid)
Option -local will not modify any
ASM configuration.
Oracle Grid Management database was
not found in this Grid Infrastructure home
Do you want
to continue (y - yes, n - no)? [n]: y
A log of this session will
be written to:
'/u01/app/oraInventory/logs/deinstall_deconfig2025-11-23_02-45-49-PM.out'
Any error messages from this session will be written to:
'/u01/app/oraInventory/logs/deinstall_deconfig2025-11-23_02-45-49-PM.err'
######################## DECONFIG CLEAN OPERATION START
########################
Database de-configuration trace
file location:
/u01/app/oraInventory/logs/databasedc_clean2025-11-23_02-45-49PM.log
ASM de-configuration trace file location:
/u01/app/oraInventory/logs/asmcadc_clean2025-11-23_02-45-49PM.log
ASM Clean Configuration END
Network Configuration clean config START
Network de-configuration trace file location: /u01/app/oraInventory/logs/netdc_clean2025-11-23_02-45-49PM.log
Network Configuration clean config END
Run the following command as the root user or the
administrator on node "ol8ora19rf1".
/u01/app/19c/grid/crs/install/rootcrs.sh -unlock -crshome
/u01/app/19c/grid -paramfile
"/tmp/deinstall2025-11-23_02-45-24PM/response/deinstall_OraGI19Home1.rsp"
Press Enter after you finish running the above commands
<----------------------------------------
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
[root@ol8ora19rf1][/root]$
/u01/app/19c/grid/crs/install/rootcrs.sh -unlock -crshome /u01/app/19c/grid
-paramfile
"/tmp/deinstall2025-11-23_02-45-24PM/response/deinstall_OraGI19Home1.rsp"
Using
configuration parameter file:
/tmp/deinstall2025-11-23_02-45-24PM/response/deinstall_OraGI19Home1.rsp
The log of current session can be found at:
/u01/app/oraInventory/logs/crsunlock_ol8ora19rf1_2025-11-23_02-48-27PM.log
2025/11/23 14:48:31 CLSRSC-347: Successfully unlock
/u01/app/19c/grid
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
####################### DEINSTALL CHECK OPERATION SUMMARY
#######################
A log of this session will be
written to:
'/u01/app/oraInventory/logs/deinstall_deconfig2025-11-23_02-45-49-PM.out'
Any error messages from this session will be written to:
'/u01/app/oraInventory/logs/deinstall_deconfig2025-11-23_02-45-49-PM.err'
######################## DEINSTALL CLEAN OPERATION START
########################
## [START] Preparing for
Deinstall ##
Setting LOCAL_NODE to ol8ora19rf1
Setting CLUSTER_NODES to ol8ora19rf1
Setting CRS_HOME to false
Setting
oracle.installer.invPtrLoc to /tmp/deinstall2025-11-23_02-45-24PM/oraInst.loc
Setting oracle.installer.local to true
## [END] Preparing for Deinstall ##
Setting the force
flag to false
Setting the force flag to cleanup the
Oracle Base
Oracle Universal Installer clean
START
Detach Oracle home '/u01/app/19c/grid' from the central inventory on the local node : Done
Failed to delete
the directory '/u01/app/19c/grid/gpnp/gpnp_bcp__2025_9_29_225029'. Either user
has no permission to delete or it is in use.
Failed to
delete the directory '/u01/app/19c/grid/gpnp'. The directory is not empty.
Failed to delete the directory '/u01/app/19c/grid'. The
directory is not empty.
Delete directory
'/u01/app/19c/grid' on the local node : Failed
<<<<
The Oracle Base directory '/u01/app/oracle' will not be removed on local node. The directory is in use by Oracle Home '/u01/app/oracle/product/19c/db_1'.
Oracle Universal Installer cleanup was successful.
Oracle Universal Installer clean END
## [START] Oracle install clean ##
## [END] Oracle install clean ##
######################### DEINSTALL CLEAN OPERATION END
#########################
####################### DEINSTALL CLEAN OPERATION SUMMARY
#######################
Successfully detached Oracle
home '/u01/app/19c/grid' from the central inventory on the local node.
Failed to delete directory '/u01/app/19c/grid' on the local
node due to error : Either user has no permission to delete or file is in
use.
Review the permissions and manually delete
'/u01/app/19c/grid' on local node.
Oracle Universal
Installer cleanup was successful.
Review the
permissions and contents of '/u01/app/oracle' on nodes(s) 'ol8ora19rf1'.
If there are no Oracle home(s) associated with
'/u01/app/oracle', manually delete '/u01/app/oracle' and its contents.
Oracle deinstall tool successfully cleaned up temporary
directories.
#######################################################################
############# ORACLE DEINSTALL TOOL END
#############
[+ASM1:grid@ol8ora19rf1][/home/grid]$ cat
/u01/app/oraInventory/ContentsXML/inventory.xml
<?xml version="1.0" standalone="yes" ?>
<!-- Copyright (c) 1999, 2025, Oracle and/or its
affiliates.
All rights reserved. -->
<!-- Do not modify the contents of this file by hand.
-->
<INVENTORY>
<VERSION_INFO>
<SAVED_WITH>12.2.0.7.0</SAVED_WITH>
<MINIMUM_VER>2.1.0.6.0</MINIMUM_VER>
</VERSION_INFO>
<HOME_LIST>
<HOME
NAME="OraDB19Home1" LOC="/u01/app/oracle/product/19c/db_1" TYPE="O"
IDX="2"/>
<HOME NAME="OraGI19Home2"
LOC="/u01/app/19.29/grid" TYPE="O" IDX="3" CRS="true"/>
<HOME NAME="OraDB19Home2"
LOC="/u01/app/oracle/product/19.29/db_1" TYPE="O" IDX="4"/>
<HOME NAME="OraGI19Home1" LOC="/u01/app/19c/grid"
TYPE="O" IDX="1" REMOVED="T"/>
</HOME_LIST>
<COMPOSITEHOME_LIST>
</COMPOSITEHOME_LIST>
</INVENTORY>
--oracle os
user
[ORA19RF1:oracle@ol8ora19rf1][/home/oracle]$
/u01/app/oracle/product/19c/db_1/deinstall/deinstall -local
Checking for
required files and bootstrapping ...
Please wait ...
Location of logs
/u01/app/oraInventory/logs/
############ ORACLE DECONFIG TOOL START ############
######################### DECONFIG CHECK OPERATION START
#########################
## [START] Install check
configuration ##
Checking for existence of the Oracle home location
/u01/app/oracle/product/19c/db_1
Oracle Home type
selected for deinstall is: Oracle Real Application Cluster Database
Oracle Base selected for deinstall is: /u01/app/oracle
Checking for existence of central inventory location
/u01/app/oraInventory
Checking for existence of the
Oracle Grid Infrastructure home /u01/app/19.29/grid
The
following nodes are part of this cluster: ol8ora19rf1,ol8ora19rf2
Checking for sufficient temp space availability on node(s)
: 'ol8ora19rf1'
## [END] Install check configuration ##
Network Configuration check config
START
Network de-configuration trace file location: /u01/app/oraInventory/logs/netdc_check2025-11-23_02-51-08PM.log
Network Configuration check config END
Database Check Configuration START
Database de-configuration trace file location: /u01/app/oraInventory/logs/databasedc_check2025-11-23_02-51-08PM.log
Use comma as separator when specifying list of values as input
Specify the list
of database names that are configured locally on this node for this Oracle home.
Local configurations of the discovered databases will be removed []:
Database Check Configuration END
######################### DECONFIG CHECK OPERATION END #########################
####################### DECONFIG CHECK OPERATION SUMMARY
#######################
Oracle Grid Infrastructure Home
is: /u01/app/19.29/grid
The following nodes are part of
this cluster: ol8ora19rf1,ol8ora19rf2
The cluster
node(s) on which the Oracle home deinstallation will be performed
are:ol8ora19rf1
Oracle Home selected for deinstall is:
/u01/app/oracle/product/19c/db_1
Inventory Location
where the Oracle home registered is: /u01/app/oraInventory
Do you want to continue (y - yes, n - no)? [n]: y
A log of this session will be written to:
'/u01/app/oraInventory/logs/deinstall_deconfig2025-11-23_02-51-06-PM.out'
Any error messages from this session will be written to:
'/u01/app/oraInventory/logs/deinstall_deconfig2025-11-23_02-51-06-PM.err'
######################## DECONFIG CLEAN OPERATION START
########################
Database de-configuration trace
file location:
/u01/app/oraInventory/logs/databasedc_clean2025-11-23_02-51-08PM.log
Network Configuration clean config START
Network de-configuration trace file location: /u01/app/oraInventory/logs/netdc_clean2025-11-23_02-51-08PM.log
Network Configuration clean config END
######################### DECONFIG CLEAN OPERATION END
#########################
####################### DECONFIG CLEAN OPERATION SUMMARY
#######################
#######################################################################
############# ORACLE DECONFIG TOOL END
#############
Using properties
file
/tmp/deinstall2025-11-23_02-50-55PM/response/deinstall_2025-11-23_02-51-06-PM.rsp
Location of logs
/u01/app/oraInventory/logs/
############ ORACLE DEINSTALL TOOL START ############
####################### DEINSTALL CHECK OPERATION SUMMARY
#######################
A log of this session will be
written to:
'/u01/app/oraInventory/logs/deinstall_deconfig2025-11-23_02-51-06-PM.out'
Any error messages from this session will be written to:
'/u01/app/oraInventory/logs/deinstall_deconfig2025-11-23_02-51-06-PM.err'
######################## DEINSTALL CLEAN OPERATION START
########################
## [START] Preparing for
Deinstall ##
Setting LOCAL_NODE to ol8ora19rf1
Setting CLUSTER_NODES to ol8ora19rf1
Setting CRS_HOME to false
Setting
oracle.installer.invPtrLoc to /tmp/deinstall2025-11-23_02-50-55PM/oraInst.loc
Setting oracle.installer.local to true
## [END] Preparing for Deinstall ##
Setting the force
flag to false
Setting the force flag to cleanup the
Oracle Base
Oracle Universal Installer clean
START
Detach Oracle home '/u01/app/oracle/product/19c/db_1' from the central inventory on the local node : Done
Delete directory '/u01/app/oracle/product/19c/db_1' on the local node : Done
The Oracle Base directory '/u01/app/oracle' will not be removed on local node. The directory is in use by Oracle Home '/u01/app/19.29/grid'.
Oracle Universal Installer cleanup was successful.
Oracle Universal Installer clean END
## [START] Oracle install clean ##
## [END] Oracle install clean ##
######################### DEINSTALL CLEAN OPERATION END
#########################
####################### DEINSTALL CLEAN OPERATION SUMMARY
#######################
Successfully detached Oracle
home '/u01/app/oracle/product/19c/db_1' from the central inventory on the local
node.
Successfully deleted directory
'/u01/app/oracle/product/19c/db_1' on the local node.
Oracle Universal Installer cleanup was
successful.
Review the
permissions and contents of '/u01/app/oracle' on nodes(s) 'ol8ora19rf1'.
If there are no Oracle home(s) associated with
'/u01/app/oracle', manually delete '/u01/app/oracle' and its contents.
Oracle deinstall tool successfully cleaned up temporary
directories.
#######################################################################
############# ORACLE DEINSTALL TOOL END
#############
[ORA19RF1:oracle@ol8ora19rf1][/home/oracle]$ cat
/u01/app/oraInventory/ContentsXML/inventory.xml
<?xml version="1.0" standalone="yes" ?>
<!-- Copyright (c) 1999, 2025, Oracle and/or its
affiliates.
All rights reserved. -->
<!-- Do not modify the contents of this file by hand.
-->
<INVENTORY>
<VERSION_INFO>
<SAVED_WITH>12.2.0.7.0</SAVED_WITH>
<MINIMUM_VER>2.1.0.6.0</MINIMUM_VER>
</VERSION_INFO>
<HOME_LIST>
<HOME
NAME="OraGI19Home2" LOC="/u01/app/19.29/grid" TYPE="O" IDX="3"
CRS="true"/>
<HOME NAME="OraDB19Home2"
LOC="/u01/app/oracle/product/19.29/db_1" TYPE="O" IDX="4"/>
<HOME NAME="OraGI19Home1" LOC="/u01/app/19c/grid"
TYPE="O" IDX="1" REMOVED="T"/>
<HOME
NAME="OraDB19Home1" LOC="/u01/app/oracle/product/19c/db_1" TYPE="O" IDX="2"
REMOVED="T"/>
</HOME_LIST>
<COMPOSITEHOME_LIST>
</COMPOSITEHOME_LIST>
</INVENTORY>
--2번 노드
[+ASM2:grid@ol8ora19rf2][/home/grid]$ export
ORACLE_HOME=/u01/app/19c/grid
[+ASM2:grid@ol8ora19rf2][/home/grid]$ echo
$ORACLE_HOME
/u01/app/19c/grid
[+ASM2:grid@ol8ora19rf2][/home/grid]$
$ORACLE_HOME/deinstall/deinstall -local
Checking for
required files and bootstrapping ...
Please wait ...
Location of logs
/u01/app/oraInventory/logs/
############ ORACLE DECONFIG TOOL START ############
######################### DECONFIG CHECK OPERATION START
#########################
## [START] Install check
configuration ##
Checking for existence of the Oracle home location
/u01/app/19c/grid
Oracle Home type selected for
deinstall is: Oracle Grid Infrastructure for a Cluster
Oracle Base selected for deinstall is: /u01/app/oracle
Checking for existence of central inventory location
/u01/app/oraInventory
Checking for existence of the
Oracle Grid Infrastructure home /u01/app/19.29/grid
The
following nodes are part of this cluster: ol8ora19rf2,ol8ora19rf1
Checking for sufficient temp space availability on node(s)
: 'ol8ora19rf2'
## [END] Install check configuration ##
Traces log file: /u01/app/oraInventory/logs//crsdc_2025-11-23_02-55-09-PM.log
Network Configuration check config START
Network de-configuration trace file location: /u01/app/oraInventory/logs/netdc_check2025-11-23_02-55-09PM.log
Network Configuration check config END
Asm Check Configuration START
ASM de-configuration trace file location: /u01/app/oraInventory/logs/asmcadc_check2025-11-23_02-55-09PM.log
Database Check Configuration START
Database de-configuration trace file location: /u01/app/oraInventory/logs/databasedc_check2025-11-23_02-55-09PM.log
Oracle Grid Management database was not found in this Grid Infrastructure home
Database Check Configuration END
######################### DECONFIG CHECK OPERATION END #########################
####################### DECONFIG CHECK OPERATION SUMMARY
#######################
Oracle Grid Infrastructure Home
is: /u01/app/19.29/grid
The following nodes are part of
this cluster: ol8ora19rf2,ol8ora19rf1
The cluster
node(s) on which the Oracle home deinstallation will be performed
are:ol8ora19rf2
Oracle Home selected for deinstall is:
/u01/app/19c/grid
Inventory Location where the Oracle
home registered is: /u01/app/oraInventory
The home being
deconfigured is NOT a configured Grid Infrastructure home
(/u01/app/19.29/grid)
Option -local will not modify any
ASM configuration.
Oracle Grid Management database was
not found in this Grid Infrastructure home
Do you want
to continue (y - yes, n - no)? [n]: y
A log of this session will
be written to:
'/u01/app/oraInventory/logs/deinstall_deconfig2025-11-23_02-55-08-PM.out'
Any error messages from this session will be written to:
'/u01/app/oraInventory/logs/deinstall_deconfig2025-11-23_02-55-08-PM.err'
######################## DECONFIG CLEAN OPERATION START
########################
Database de-configuration trace
file location:
/u01/app/oraInventory/logs/databasedc_clean2025-11-23_02-55-09PM.log
ASM de-configuration trace file location:
/u01/app/oraInventory/logs/asmcadc_clean2025-11-23_02-55-09PM.log
ASM Clean Configuration END
Network Configuration clean config START
Network de-configuration trace file location: /u01/app/oraInventory/logs/netdc_clean2025-11-23_02-55-09PM.log
Network Configuration clean config END
Run the following command as the root user or the
administrator on node "ol8ora19rf2".
/u01/app/19c/grid/crs/install/rootcrs.sh -unlock -crshome /u01/app/19c/grid -paramfile "/tmp/deinstall2025-11-23_02-55-00PM/response/deinstall_OraGI19Home1.rsp"
Press Enter after you finish running the above commands
<----------------------------------------
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
[root@ol8ora19rf2][/root]$
/u01/app/19c/grid/crs/install/rootcrs.sh -unlock -crshome /u01/app/19c/grid
-paramfile
"/tmp/deinstall2025-11-23_02-55-00PM/response/deinstall_OraGI19Home1.rsp"
Using configuration parameter file:
/tmp/deinstall2025-11-23_02-55-00PM/response/deinstall_OraGI19Home1.rsp
The log of current session can be found at:
/u01/app/oraInventory/logs/crsunlock_ol8ora19rf2_2025-11-23_02-55-20PM.log
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
######################### DECONFIG CLEAN OPERATION END #########################
####################### DECONFIG CLEAN OPERATION SUMMARY
#######################
There is no Oracle Grid
Management database to de-configure in this Grid Infrastructure home
The home being deconfigured is NOT a configured Grid
Infrastructure home (/u01/app/19.29/grid)
Oracle
Clusterware was successfully unlocked on node "ol8ora19rf2".
#######################################################################
############# ORACLE DECONFIG TOOL END
#############
Using properties
file
/tmp/deinstall2025-11-23_02-55-00PM/response/deinstall_2025-11-23_02-55-08-PM.rsp
Location of logs
/u01/app/oraInventory/logs/
############ ORACLE DEINSTALL TOOL START ############
[ORA19RF2:oracle@ol8ora19rf2][/home/oracle]$ echo
$ORACLE_HOME
/u01/app/oracle/product/19.29/db_1
[ORA19RF2:oracle@ol8ora19rf2][/home/oracle]$ export
ORACLE_HOME=/u01/app/oracle/product/19c/db_1
[ORA19RF2:oracle@ol8ora19rf2][/home/oracle]$
/u01/app/oracle/product/19c/db_1/deinstall/deinstall -local
Checking for
required files and bootstrapping ...
Please wait
...
...생략
[ORA19RF2:oracle@ol8ora19rf2][/home/oracle]$ cat
/u01/app/oraInventory/ContentsXML/inventory.xml
<?xml version="1.0" standalone="yes" ?>
<!-- Copyright (c) 1999, 2025, Oracle and/or its
affiliates.
All rights reserved. -->
<!-- Do not modify the contents of this file by hand.
-->
<INVENTORY>
<VERSION_INFO>
<SAVED_WITH>12.2.0.7.0</SAVED_WITH>
<MINIMUM_VER>2.1.0.6.0</MINIMUM_VER>
</VERSION_INFO>
<HOME_LIST>
<HOME
NAME="OraGI19Home2" LOC="/u01/app/19.29/grid" TYPE="O" IDX="3"
CRS="true"/>
<HOME NAME="OraDB19Home2"
LOC="/u01/app/oracle/product/19.29/db_1" TYPE="O" IDX="4"/>
<HOME NAME="OraGI19Home1" LOC="/u01/app/19c/grid"
TYPE="O" IDX="1" REMOVED="T"/>
<HOME
NAME="OraDB19Home1" LOC="/u01/app/oracle/product/19c/db_1" TYPE="O" IDX="2"
REMOVED="T"/>
</HOME_LIST>
<COMPOSITEHOME_LIST>
</COMPOSITEHOME_LIST>
</INVENTORY>