반응형

■ [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="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>

 

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>

 

 

반응형

+ Recent posts