[제목]
[2025-12-26] Oracle Restart 19.28 -> 19.29 골드이미지로 Out-of Place Patching 및 원상 복구 절차
[테스트 환경]
<대상
서버>
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명 : ORA12RF (echo -e 'set pages 0 feedback off heading
off verify off\nselect '\''DB명 : '\''||name from v$database;' | sqlplus -s / as
sysdba) '
Restart Single
Hostname : ORA19SF (hostname)
Public IP : 192.168.240.51 (getent ahostsv4 `hostname` | awk '{print $1;
exit}')
Virtual IP : -
Instance Name : ORA19SF
(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)
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)
<패치
후>
Patch
Info
Grid (opatch lspatches) (grid os user)
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)
38322923;OCW
RELEASE UPDATE 19.29.0.0.0 (38322923)
38291812;Database Release Update
: 19.29.0.0.251021 (38291812)
[테스트 개요]
(1) 테스트 목적
본 테스트는 Oracle Restart (Standalone Grid + Single DB) 환경에서 19.28 Release Update가
적용된 시스템을
19.29 버전으로 업그레이드하기 위한 Out-of-Place Patching 절차를
검증하는 데 목적이 있습니다.
Oracle Gold Image 방식을 활용하여 서비스 다운타임을
최소화하고,
패치 적용 후 문제 발생 시 신속하게 원상 복구(Rollback)하는 전체 라이프사이클을 확립하고자
합니다.
(2) 대상 환경
운영체제는 Oracle Linux Server 8.10이며, 데이터베이스는 Oracle Database 19c Enterprise
Edition입니다.
기존 19.28 버전의 Grid Home(/u01/app/19c/grid)과 DB
Home(/u01/app/oracle/product/19c/db_1)을 유지한 상태에서,
신규 19.29 버전의
경로(/u01/app/19.29/grid 및 /u01/app/oracle/product/19.29/db_1)를 생성하여 교체 작업을
수행합니다.
(3) 주요
시나리오
준비 및 설치 19.29 버전의 Grid 및 Database 골드 이미지를 업로드하고 신규
디렉토리에 압축을 해제합니다.
이후 Silent Mode를 이용하여 소프트웨어를 설치하되, Grid 설치
시 root.sh 자동 실행 옵션을 비활성화(false)하여
실제 엔진 교체 시점을 관리자가 통제할 수 있도록
설정합니다.
(4) 주요
시나리오
엔진 교체 및 적용 기존 홈의 주요 설정 파일(listener.ora, tnsnames.ora,
glogin.sql, Password File)을 신규 홈으로 복제합니다.
srvctl modify database 명령어를
사용하여 DB가 참조하는 Oracle Home을 변경하고,
roothas.sh 스크립트의 prepatch(Unlock) 및
postpatch(Lock & Restart) 옵션을 통해 Grid Infrastructure를 신규 버전으로
교체합니다.
(5) 주요
시나리오
데이터베이스 패치 DB 기동 후 datapatch 유틸리티를 통해 SQL 패치를
적용합니다.
작업 전 사전 점검(sanity_checks)을 통해 딕셔너리 통계 갱신 필요 여부와 실행 중인 스케줄러 잡(예:
OBJNUM_REUSE_MAINTAIN_JOB$$)의
충돌 가능성을 확인하고 조치한 뒤 패치를
진행합니다.
(6) 주요
시나리오
원상 복구 (Rollback) 패치 적용 완료 후, 기존 19.28 환경으로의 복귀 절차를
검증합니다.
신규 홈에서 구동 중인 DB를 내리고 srvctl을 통해 기존 홈으로 설정을 변경하여
재기동합니다.
특히 SQL Patch 롤백 시, 반드시 기존 버전(19.28) 엔진으로 DB가 기동된 상태에서 구버전의
datapatch를 사용해야 데이터 딕셔너리 정합성이 유지됨을 확인합니다.
이후 Grid 엔진을 원복하고 인벤토리 정리 및 신규
디렉토리 삭제를 통해 초기 상태로 복구합니다.
(7) 핵심 검증
결과 Grid Gold Image 설치 시 root.sh 실행을 제어하여 다운타임 시점을 명확히 할 수
있었습니다.
Datapatch 수행 시 백그라운드 스케줄러 잡이 락(Lock)을 유발할 수 있으므로 사전
비활성화가 필요하며,
Out-of-Place Patching 후 롤백 시에는 반드시 구버전 바이너리로 기동 후 datapatch
롤백을 수행해야 한다는 중요한 순서를 확인했습니다.
[내용]
1. 현재 DB 상태 확인
--oracle os
user
[ORA19SF:oracle@ol8ora19sf][/home/oracle]$ alias
csrt
alias csrt='crsctl stat res -t'
[ORA19SF:oracle@ol8ora19sf][/home/oracle]$
csrt
--------------------------------------------------------------------------------
Name
Target State
Server
State
details
--------------------------------------------------------------------------------
Local
Resources
--------------------------------------------------------------------------------
ora.DATA1.dg
ONLINE ONLINE
ol8ora19sf
STABLE
ora.FRA1.dg
ONLINE ONLINE
ol8ora19sf
STABLE
ora.LISTENER.lsnr
ONLINE ONLINE
ol8ora19sf
STABLE
ora.asm
ONLINE ONLINE
ol8ora19sf
Started,STABLE
ora.ons
OFFLINE OFFLINE
ol8ora19sf
STABLE
--------------------------------------------------------------------------------
Cluster
Resources
--------------------------------------------------------------------------------
ora.cssd
1 ONLINE
ONLINE
ol8ora19sf
STABLE
ora.diskmon
1 OFFLINE
OFFLINE
STABLE
ora.evmd
1 ONLINE
ONLINE
ol8ora19sf
STABLE
ora.ora19sf.db
1 ONLINE
ONLINE
ol8ora19sf
Open,HOME=/u01/app/o
racle/product/19c/db
_1,STABLE
--------------------------------------------------------------------------------
[ORA19SF:oracle@ol8ora19sf][/home/oracle]$ echo
$ORACLE_HOME
/u01/app/oracle/product/19c/db_1
[ORA19SF:oracle@ol8ora19sf][/home/oracle]$ echo
$GRID_HOME
/u01/app/19c/grid
[ORA19SF:oracle@ol8ora19sf][/home/oracle]$ echo
$ORACLE_SID
ORA19SF
[ORA19SF:oracle@ol8ora19sf][/home/oracle]$ opatch
lspatches
37962946;OCW RELEASE UPDATE 19.28.0.0.0 (37962946)
37960098;Database
Release Update : 19.28.0.0.250715 (37960098)
OPatch
succeeded.
--invalid object
확인
[ORA19SF:oracle@ol8ora19sf][/home/oracle]$
alias ss
alias ss='rlwrap
sqlplus "/as sysdba"'
[ORA19SF:oracle@ol8ora19sf][/home/oracle]$ ss
SQL*Plus:
Release 19.0.0.0.0 - Production on Fri Dec 26 18:16:39 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
SET
LINESIZE 180
SET PAGESIZE 100
SET COLSEP ' | '
SET VERIFY OFF
SET
FEEDBACK ON
COLUMN
OWNER FORMAT A30 HEADING 'Owner'
COLUMN
OBJECT_NAME FORMAT A30 HEADING 'Object Name'
COLUMN OBJECT_TYPE FORMAT A20
HEADING 'Object Type'
COLUMN STATUS FORMAT A10
HEADING 'Status'
SELECT
OWNER
, OBJECT_NAME
,
OBJECT_TYPE
, STATUS
FROM
DBA_OBJECTS
WHERE STATUS <> 'VALID'
ORDER BY OWNER,
OBJECT_NAME;
no rows selected
Elapsed: 00:00:00.01
--datapatch 상태
확인
SET
LINESIZE 300
SET PAGESIZE 1000
SET COLSEP ' | '
SET TRIMOUT ON
SET
TRIMSPOOL ON
COL
PATCH_ID FOR
99999999 HEADING 'Patch ID'
COL
PATCH_TYPE FOR
A10 HEADING
'Type'
COL ACTION FOR
A10 HEADING
'Action'
COL STATUS FOR
A15 HEADING
'Status'
COL ACTION_TIME FOR
A20 HEADING
'Action Time'
COL DESCRIPTION FOR
A60 HEADING
'Description' WORD_WRAPPED
COL SOURCE_VERSION FOR
A15 HEADING
'Source Ver'
COL TARGET_VERSION FOR
A15 HEADING
'Target Ver'
SELECT
A.PATCH_ID
,
A.PATCH_TYPE
, A.ACTION
, A.STATUS
, TO_CHAR(A.ACTION_TIME, 'YYYY-MM-DD
HH24:MI:SS') AS ACTION_TIME
,
A.SOURCE_VERSION
,
A.TARGET_VERSION
, A.DESCRIPTION
FROM
DBA_REGISTRY_SQLPATCH A
ORDER BY A.ACTION_TIME;
Patch
ID | Type | Action |
Status | Action
Time | Source
Ver | Target Ver |
Description
--------- | ---------- | ---------- | --------------- |
-------------------- | --------------- | --------------- |
------------------------------------------------------------
37960098 |
RU |
APPLY |
SUCCESS | 2025-12-13
17:31:06 | 19.1.0.0.0 |
19.28.0.0.0 | Database Release Update : 19.28.0.0.250715
(37960098)
--현재 oracle 엔진 패치 버전
확인
[ORA19SF:oracle@ol8ora19sf][/home/oracle]$ opatch
lspatches
37962946;OCW RELEASE UPDATE 19.28.0.0.0 (37962946)
37960098;Database
Release Update : 19.28.0.0.250715 (37960098)
OPatch succeeded.
--grid os
user
[+ASM:grid@ol8ora19sf][/home/grid]$ lsnrctl status
LISTENER
LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 25-DEC-2025 10:11:10
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
25-DEC-2025
09:52:10
Uptime
0 days 0 hr. 18 min. 59 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/ol8ora19sf/listener/alert/log.xml
Listening
Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.240.51)(PORT=1521)))
Services
Summary...
Service "+ASM" has 1 instance(s).
Instance "+ASM",
status READY, has 1 handler(s) for this service...
Service "+ASM_DATA1" has 1
instance(s).
Instance "+ASM", status READY, has 1 handler(s) for this
service...
Service "+ASM_FRA1" has 1 instance(s).
Instance "+ASM",
status READY, has 1 handler(s) for this service...
Service "ORA19SF" has 1
instance(s).
Instance "ORA19SF", status READY, has 1 handler(s) for
this service...
Service "ORA19SFXDB" has 1 instance(s).
Instance
"ORA19SF", status READY, has 1 handler(s) for this service...
The command
completed successfully
[+ASM:grid@ol8ora19sf][/home/grid]$ opatch
lspatches
38124772;TOMCAT RELEASE UPDATE 19.0.0.0.0 (38124772)
37962946;OCW
RELEASE UPDATE 19.28.0.0.0 (37962946)
37962938;ACFS RELEASE UPDATE
19.28.0.0.0 (37962938)
37960098;Database Release Update : 19.28.0.0.250715
(37960098)
36758186;DBWLM RELEASE UPDATE 19.0.0.0.0
(36758186)
OPatch succeeded.
2.
Oracle 19.29 oracle/grid 골드 이미지 업로드
--grid os
user
[+ASM:grid@ol8ora19sf][/home/grid]$ mkdir -pv
/tmp/patch/19.29
mkdir: created directory
'/tmp/patch'
mkdir: created directory '/tmp/patch/19.29'
[+ASM:grid@ol8ora19sf][/tmp/patch/19.29]$ chmod 664
/tmp/patch/19.29/*
[+ASM:grid@ol8ora19sf][/tmp/patch/19.29]$ ls -l
/tmp/patch/19.29
total 10655132
-rw-rw-r--. 1 grid
oinstall 4816073482 Dec 24 22:12 db1929000.zip
-rw-rw-r--. 1 grid oinstall
6094777458 Dec 24 21:37 grid1929000.zip
3. 새로운 그리드 홈 디렉토리 생성 및 권한 주기
--grid os
user
--현재 사용중인 그리드 홈 디렉토리 정보 확인
[+ASM:grid@ol8ora19sf][/u01/app/19c/grid]$ echo
$GRID_HOME
/u01/app/19c/grid
[+ASM:grid@ol8ora19sf][/u01/app/19c/grid]$ ls -l
/u01/app/19c/
total 4
drwxr-xr-x. 90 root oinstall 4096 Dec 13 16:54 grid
--> 현재는
grid가 구동된 상태이므로 소유자가 root로 되어 있는 것임
--root os
user
[root@ol8ora19sf][/root]$ mkdir -pv
/u01/app/19.29/grid
mkdir: created directory '/u01/app/19.29'
mkdir: created directory '/u01/app/19.29/grid'
[root@ol8ora19sf][/root]$ chown -R grid:oinstall
/u01/app/19.29/grid
[root@ol8ora19sf][/root]$ chmod -R
775 /u01/app/19.29/grid
4. 새로운 오라클 홈 디렉토리 생성 및 권한 주기
--oracle os
user
[ORA19SF:oracle@ol8ora19sf][/home/oracle]$ echo
$ORACLE_HOME
/u01/app/oracle/product/19c/db_1
[ORA19SF:oracle@ol8ora19sf][/home/oracle]$ ls -l
/u01/app/oracle/product/19c
total 4
drwxrwxr-x. 73 oracle
oinstall 4096 Dec 13 17:33 db_1
--oracle os
user
[ORA19SF:oracle@ol8ora19sf][/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'
[ORA19SF:oracle@ol8ora19sf][/home/oracle]$ chmod -R 775
/u01/app/oracle/product/19.29/db_1
[ORA19SF:oracle@ol8ora19sf][/home/oracle]$ ls -l
/u01/app/oracle/product/19.29
total 0
drwxrwxr-x. 2 oracle oinstall
6 Dec 25 10:38 db_1
5. root/grid/oracle os user의 환경 변수(.bash_profile) 추가
--root os
user
[root@ol8ora19sf][/root]$ vi .bash_profile
[root@ol8ora19sf][/root]$ cat .bash_profile | grep -i
new_
export
NEW_GRID_HOME=/u01/app/19.29/grid
export
NEW_DB_HOME=$ORACLE_BASE/product/19.29/db_1
[root@ol8ora19sf][/root]$ source ~/.bash_profile
[root@ol8ora19sf][/root]$ echo $NEW_GRID_HOME
/u01/app/19.29/grid
[root@ol8ora19sf][/root]$ echo
$NEW_DB_HOME
/u01/app/oracle/product/19.29/db_1
--grid os
user
[+ASM:grid@ol8ora19sf][/home/grid]$ vi .bash_profile
[+ASM:grid@ol8ora19sf][/home/grid]$ cat .bash_profile | grep
-i new_
export
NEW_GRID_HOME=/u01/app/19.29/grid
export
NEW_DB_HOME=$ORACLE_BASE/product/19.29/db_1
[+ASM:grid@ol8ora19sf][/home/grid]$ source ~/.bash_profile
[+ASM:grid@ol8ora19sf][/home/grid]$ echo
$NEW_GRID_HOME
/u01/app/19.29/grid
[+ASM:grid@ol8ora19sf][/home/grid]$ echo
$NEW_DB_HOME
/u01/app/oracle/product/19.29/db_1
[+ASM:grid@ol8ora19sf][/home/grid]$ echo
$NEW_ORACLE_HOME
/u01/app/19.29/grid
--oracle os
user
[ORA19SF:oracle@ol8ora19sf][/home/oracle]$ vi
.bash_profile
[ORA19SF:oracle@ol8ora19sf][/home/oracle]$
cat .bash_profile | grep -i new_
export NEW_GRID_HOME=/u01/app/19.29/grid
export
NEW_ORACLE_HOME=$ORACLE_BASE/product/19.29/db_1
[ORA19SF:oracle@ol8ora19sf][/home/oracle]$ source ~/.bash_profile
[ORA19SF:oracle@ol8ora19sf][/home/oracle]$ echo
$NEW_GRID_HOME
/u01/app/19.29/grid
[ORA19SF:oracle@ol8ora19sf][/home/oracle]$ echo
$NEW_ORACLE_HOME
/u01/app/oracle/product/19.29/db_1
6. 골드 이미지 설치 파일 압축 해제
--grid os
user
[+ASM:grid@ol8ora19sf][/home/grid]$ unzip -q
/tmp/patch/19.29/grid1929000.zip -d $NEW_GRID_HOME
--oracle os
user
[ORA19SF:oracle@ol8ora19sf][/home/oracle]$ unzip -q
/tmp/patch/19.29/db1929000.zip -d $NEW_ORACLE_HOME
7. 새로운 grid 엔진 설치
--과거에 grid 엔진 설치 시 저장된 rsp 파일을
찾기
[+ASM:grid@ol8ora19sf][/home/grid]$ ls -l
$GRID_HOME/install/response/
total 76
-rw-r--r--. 1 grid oinstall
36505 Dec 13 16:53 grid_2025-12-13_04-52-19PM.rsp
-rw-r-----. 1 grid oinstall 36221 Jan 19 2019
gridsetup.rsp
-rw-r-----. 1 grid oinstall 1541 May
21 2016 sample.ccf
[+ASM:grid@ol8ora19sf][/home/grid]$ awk -F= 'NF &&
$1 !~ /^#/ && $2!=""'
$GRID_HOME/install/response/grid_2025-12-13_04-52-19PM.rsp >
/home/grid/grid_19.29.rsp
[+ASM:grid@ol8ora19sf][/home/grid]$ cat
/home/grid/grid_19.29.rsp
oracle.install.responseFileVersion=/oracle/install/rspfmt_crsinstall_response_schema_v19.0.0
INVENTORY_LOCATION=/u01/app/oraInventory
oracle.install.option=HA_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.ClusterConfiguration=STANDALONE
oracle.install.crs.config.configureAsExtendedCluster=false
oracle.install.crs.config.gpnp.configureGNS=false
oracle.install.crs.config.autoConfigureClusterNodeVIP=false
oracle.install.crs.config.gpnp.gnsOption=CREATE_NEW_GNS
oracle.install.crs.configureGIMR=false
oracle.install.asm.configureGIMRDataDG=false
oracle.install.crs.config.sharedFileSystemStorage.ocrLocations=
oracle.install.crs.config.useIPMI=false
oracle.install.asm.diskGroup.name=DATA1
oracle.install.asm.diskGroup.redundancy=EXTERNAL
oracle.install.asm.diskGroup.AUSize=4
oracle.install.asm.diskGroup.disksWithFailureGroupNames=/dev/oracleasm/disks/DATA1_1,
oracle.install.asm.diskGroup.disks=/dev/oracleasm/disks/DATA1_1
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
[+ASM:grid@ol8ora19sf][/home/grid]$ export
ORACLE_BASE=/u01/app/oracle
[+ASM:grid@ol8ora19sf][/home/grid]$ export
ORA_INVENTORY=/u01/app/oraInventory
[+ASM:grid@ol8ora19sf][/home/grid]$ export
ORACLE_HOME=$NEW_GRID_HOME
[+ASM:grid@ol8ora19sf][/home/grid]$ echo
$ORACLE_BASE
/u01/app/oracle
[+ASM:grid@ol8ora19sf][/home/grid]$ echo
$ORA_INVENTORY
/u01/app/oraInventory
[+ASM:grid@ol8ora19sf][/home/grid]$ echo
$ORACLE_HOME
/u01/app/19.29/grid
[+ASM:grid@ol8ora19sf][/home/grid]$
$NEW_GRID_HOME/gridSetup.sh -ignorePrereq -waitforcompletion -silent \
-responseFile /home/grid/grid_19.29.rsp \
INVENTORY_LOCATION=$ORA_INVENTORY \
ORACLE_BASE=$ORACLE_BASE \
SELECTED_LANGUAGES=en \
oracle.install.option=CRS_SWONLY \
oracle.install.crs.rootconfig.executeRootScript=false
--> 이 설정이(executeRootScript) false 로 지정하는 것이
중요함
The response file
for this session can be found at:
/u01/app/19.29/grid/install/response/grid_2025-12-26_06-32-52PM.rsp
You can find the
log of this install session at:
/u01/app/oraInventory/logs/GridSetupActions2025-12-26_06-32-52PM/gridSetupActions2025-12-26_06-32-52PM.log
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:
--> 이 단계에서 root.sh 를 실행하지 않음
[ol8ora19sf]
Successfully Setup Software.
To
configure Grid Infrastructure for a Cluster or Grid Infrastructure for a
Stand-Alone Server execute the following command as grid user:
/u01/app/19.29/grid/gridSetup.sh
This command launches the Grid Infrastructure Setup Wizard.
The wizard also supports silent operation, and the parameters can be passed
through the response file that is available in the installation
media.
8. 새로운 오라클 엔진 설치
--oracle os user
--과거에 oracle 엔진 설치 시 저장된 rsp 파일을
찾기
[ORA19SF:oracle@ol8ora19sf][/home/oracle]$ ls -l
/u01/app/oracle/product/19c/db_1/install/response
total 40
-rw-r--r--. 1 oracle oinstall 19892 Dec 13 17:12
db_2025-12-13_05-10-03PM.rsp
-rw-r--r--. 1 oracle
oinstall 19932 Feb 6 2019 db_install.rsp
[ORA19SF:oracle@ol8ora19sf][/home/oracle]$ awk -F= 'NF
&& $1 !~ /^#/ && $2!=""'
/u01/app/oracle/product/19c/db_1/install/response/db_2025-12-13_05-10-03PM.rsp
> /home/oracle/db_19.29.rsp
[ORA19SF:oracle@ol8ora19sf][/home/oracle]$ cat
/home/oracle/db_19.29.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.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
[ORA19SF:oracle@ol8ora19sf][/home/oracle]$ export
ORACLE_BASE=/u01/app/oracle
[ORA19SF:oracle@ol8ora19sf][/home/oracle]$ export
ORA_INVENTORY=/u01/app/oraInventory
[ORA19SF:oracle@ol8ora19sf][/home/oracle]$ export
ORACLE_HOME=$NEW_ORACLE_HOME
[ORA19SF:oracle@ol8ora19sf][/home/oracle]$ echo
$ORACLE_BASE
/u01/app/oracle
[ORA19SF:oracle@ol8ora19sf][/home/oracle]$ echo
$ORA_INVENTORY
/u01/app/oraInventory
[ORA19SF:oracle@ol8ora19sf][/home/oracle]$ echo
$ORACLE_HOME
/u01/app/oracle/product/19.29/db_1
[ORA19SF:oracle@ol8ora19sf][/home/oracle]$
$NEW_ORACLE_HOME/runInstaller -ignorePrereqFailure -waitforcompletion -silent
\
-responseFile /home/oracle/db_19.29.rsp \
oracle.install.option=INSTALL_DB_SWONLY \
INVENTORY_LOCATION=$ORA_INVENTORY \
SELECTED_LANGUAGES=en \
ORACLE_HOME=$ORACLE_HOME \
ORACLE_BASE=$ORACLE_BASE \
oracle.install.db.isRACOneInstall=false \
oracle.install.db.rac.serverpoolCardinality=0 \
SECURITY_UPDATES_VIA_MYORACLESUPPORT=false \
DECLINE_SECURITY_UPDATES=true \
oracle.install.db.rootconfig.executeRootScript=false
--> 이 설정이(executeRootScript)
false것이 중요함
The response file
for this session can be found at:
/u01/app/oracle/product/19.29/db_1/install/response/db_2025-12-26_06-37-12PM.rsp
You can find the
log of this install session at:
/u01/app/oraInventory/logs/InstallActions2025-12-26_06-37-12PM/installActions2025-12-26_06-37-12PM.log
As a root user, execute the following script(s):
1.
/u01/app/oracle/product/19.29/db_1/root.sh
--> 이 단계에서 root.sh 를
실행함
Execute
/u01/app/oracle/product/19.29/db_1/root.sh on the following nodes:
[ol8ora19sf]
Successfully Setup Software.
--root os
user
[root@ol8ora19sf][/root]$
/u01/app/oracle/product/19.29/db_1/root.sh
Check
/u01/app/oracle/product/19.29/db_1/install/root_ol8ora19sf_2025-12-26_18-39-24-600972719.log
for the output of root script
[root@ol8ora19sf][/root]$ cat
/u01/app/oracle/product/19.29/db_1/install/root_ol8ora19sf_2025-12-26_18-39-24-600972719.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.
9. 기존 grid/oracle 홈에서 필요한 파일을 새로운 grid/oracle 홈으로 복사
--grid os user
[+ASM:grid@ol8ora19sf][/home/grid]$ cp
/u01/app/19c/grid/network/admin/listener.ora
/u01/app/19.29/grid/network/admin
[+ASM:grid@ol8ora19sf][/home/grid]$ cp
/u01/app/19c/grid/network/admin/sqlnet.ora
/u01/app/19.29/grid/network/admin
[+ASM:grid@ol8ora19sf][/home/grid]$ ls -l
/u01/app/19.29/grid/network/admin
total 12
-rw-r-----. 1 grid
oinstall 669 Dec 26 18:40 listener.ora
drwxr-xr-x. 2 grid oinstall 64 Apr 17 2019
samples
-rw-r--r--. 1 grid oinstall 1536 Feb 14
2018 shrept.lst
-rw-r-----. 1 grid oinstall 173 Dec 26 18:40 sqlnet.ora
--oracle os user
[ORA19SF:oracle@ol8ora19sf][/home/oracle]$ srvctl config
database -db ora19sf
Database unique name: ORA19SF
Database name: ORA19SF
Oracle home:
/u01/app/oracle/product/19c/db_1
Oracle user: oracle
Spfile:
+DATA1/ORA19SF/PARAMETERFILE/spfile.266.1219771929
Password file:
Domain:
Start options: open
Stop options:
immediate
Database role: PRIMARY
Management policy: AUTOMATIC
Disk
Groups: DATA1,FRA1
Services:
OSDBA
group:
OSOPER group:
Database
instance: ORA19SF
[ORA19SF:oracle@ol8ora19sf][/home/oracle]$ cp
/u01/app/oracle/product/19c/db_1/network/admin/tnsnames.ora
/u01/app/oracle/product/19.29/db_1/network/admin/
[ORA19SF:oracle@ol8ora19sf][/home/oracle]$ ls -l
/u01/app/oracle/product/19.29/db_1/network/admin/
total 8
drwxr-xr-x. 2 oracle
oinstall 64 Apr 17 2019 samples
-rw-r--r--. 1 oracle oinstall 1536 Feb 14 2018
shrept.lst
-rw-r-----. 1 oracle
oinstall 596 Dec 26 18:41 tnsnames.ora
[ORA19SF:oracle@ol8ora19sf][/home/oracle]$ cp
/u01/app/oracle/product/19c/db_1/dbs/orapwORA19SF
/u01/app/oracle/product/19.29/db_1/dbs
[ORA19SF:oracle@ol8ora19sf][/home/oracle]$ ls -l
/u01/app/oracle/product/19.29/db_1/dbs
total 8
-rw-r--r--. 1 oracle oinstall
3079 May 14 2015 init.ora
-rw-r-----. 1 oracle
oinstall 2048 Dec 26 18:43 orapwORA19SF
[ORA19SF:oracle@ol8ora19sf][/home/oracle]$ cp
/u01/app/oracle/product/19c/db_1/sqlplus/admin/glogin.sql
/u01/app/oracle/product/19.29/db_1/sqlplus/admin/
[ORA19SF:oracle@ol8ora19sf][/home/oracle]$ ls -l
/u01/app/oracle/product/19.29/db_1/sqlplus/admin/
total 20
-rw-r--r--. 1 oracle
oinstall 824 Dec 26 18:44 glogin.sql
drwxr-xr-x. 2 oracle oinstall 81 Apr 17
2019 help
-rw-r--r--. 1 oracle oinstall 226 Apr
29 2015 libsqlplus.def
-rw-r--r--. 1 oracle
oinstall 813 Mar 7 2006 plustrce.sql
-rw-r--r--. 1 oracle oinstall 3035 Mar 16 2017
pupbld.sql
-rw-r--r--. 1 oracle oinstall 1333 Mar
16 2017 pupdel.sql
10. has에서 오라클 홈의 위치를 변경
--oracle os user
[ORA19SF:oracle@ol8ora19sf][/home/oracle]$ echo
$NEW_ORACLE_HOME
/u01/app/oracle/product/19.29/db_1
[ORA19SF:oracle@ol8ora19sf][/home/oracle]$ srvctl modify
database -db ora19sf -oraclehome $NEW_ORACLE_HOME
[ORA19SF:oracle@ol8ora19sf][/home/oracle]$ srvctl config
database -db ora19sf
Database unique name: ORA19SF
Database name: ORA19SF
Oracle home:
/u01/app/oracle/product/19.29/db_1
--> 새로운 오라클 홈으로 변경된 상태임
Oracle user:
oracle
Spfile:
+DATA1/ORA19SF/PARAMETERFILE/spfile.266.1219771929
Password file:
Domain:
Start options: open
Stop options:
immediate
Database role: PRIMARY
Management policy: AUTOMATIC
Disk
Groups: DATA1,FRA1
Services:
OSDBA
group:
OSOPER group:
Database
instance: ORA19SF
[ORA19SF:oracle@ol8ora19sf][/home/oracle]$ crsctl stat res
ora.ora19sf.db -t
--------------------------------------------------------------------------------
Name
Target State
Server
State details
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.ora19sf.db
1 ONLINE
ONLINE
ol8ora19sf
Open,HOME=/u01/app/o
racle/product/19c/db
_1,STABLE
--------------------------------------------------------------------------------
11. grid 재기동 하면서 grid home 스위치 시키기
--root os user
[root@ol8ora19sf][/root]$ echo
$NEW_GRID_HOME
/u01/app/19.29/grid
[root@ol8ora19sf][/root]$ /u01/app/19.29/grid/rdbms/install/rootadd_rdbms.sh
[root@ol8ora19sf][/root]$
$NEW_GRID_HOME/crs/install/roothas.sh -prepatch -dstcrshome
$NEW_GRID_HOME
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/ol8ora19sf/crsconfig/hapatch_2025-12-26_06-49-02PM.log
2025/12/26 18:49:06 CLSRSC-347: Successfully unlock
/u01/app/19.29/grid
2025/12/26 18:49:06 CLSRSC-671:
Pre-patch steps for patching GI home successfully completed.
--> 이 시점에도
아직 서비스는 가능한 상태임
--아래 명령어를 치면 서비스
불가능함
[root@ol8ora19sf][/root]$
$NEW_GRID_HOME/crs/install/roothas.sh -postpatch -dstcrshome
$NEW_GRID_HOME
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/ol8ora19sf/crsconfig/hapatch_2025-12-26_06-49-40PM.log
2025/12/26 18:50:23 CLSRSC-329: Replacing Clusterware
entries in file 'oracle-ohasd.service'
2025/12/26
18:51:29 CLSRSC-672: Post-patch steps for patching GI home successfully
completed.
[root@ol8ora19sf][/root]$ alias csrt
alias csrt='crsctl
stat res -t'
[root@ol8ora19sf][/root]$ csrt
--------------------------------------------------------------------------------
Name
Target State
Server
State details
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.DATA1.dg
ONLINE ONLINE
ol8ora19sf
STABLE
ora.FRA1.dg
ONLINE ONLINE
ol8ora19sf
STABLE
ora.LISTENER.lsnr
ONLINE ONLINE
ol8ora19sf
STABLE
ora.asm
ONLINE ONLINE
ol8ora19sf
Started,STABLE
ora.ons
OFFLINE OFFLINE
ol8ora19sf
STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.cssd
1 ONLINE
ONLINE
ol8ora19sf
STABLE
ora.diskmon
1 OFFLINE
OFFLINE
STABLE
ora.evmd
1 ONLINE
ONLINE
ol8ora19sf
STABLE
ora.ora19sf.db
1 ONLINE
ONLINE
ol8ora19sf
Open,HOME=/u01/app/o
racle/product/19.29/
db_1,STABLE
--------------------------------------------------------------------------------
--> 재기동이
완료된 것임
12. root/grid/oracle os user의 .bash_profile 수정
--root os user
[root@ol8ora19sf][/root]$ vi
~/.bash_profile
[root@ol8ora19sf][/root]$ cat
~/.bash_profile | egrep -i 'old|new'
export
OLD_GRID_HOME=/u01/app/19c/grid
export
NEW_GRID_HOME=/u01/app/19.29/grid
export
GRID_HOME=$NEW_GRID_HOME
export
OLD_DB_HOME=$ORACLE_BASE/product/19c/db_1
export
NEW_DB_HOME=$ORACLE_BASE/product/19.29/db_1
export
DB_HOME=$NEW_DB_HOME
[root@ol8ora19sf][/root]$ source ~root/.bash_profile
--grid os user
[+ASM:grid@ol8ora19sf][/home/grid]$ vi .bash_profile
[+ASM:grid@ol8ora19sf][/home/grid]$ cat ~/.bash_profile |
egrep -i 'grid_home|db_home|oracle_home'
export
OLD_GRID_HOME=/u01/app/19c/grid
export
NEW_GRID_HOME=/u01/app/19.29/grid
export
GRID_HOME=$NEW_GRID_HOME
export
OLD_DB_HOME=$ORACLE_BASE/product/19c/db_1
export
NEW_DB_HOME=$ORACLE_BASE/product/19.29/db_1
export
DB_HOME=$NEW_DB_HOME
export
OLD_ORACLE_HOME=$OLD_GRID_HOME
export
NEW_ORACLE_HOME=$NEW_GRID_HOME
export
ORACLE_HOME=$NEW_GRID_HOME
export
PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$GRID_HOME/bin:$BASE_PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
alias cdt='cd $ORACLE_HOME/network/admin'
alias cdo='cd $ORACLE_HOME'
alias
cdod='cd $ORACLE_HOME/dbs'
[+ASM:grid@ol8ora19sf][/home/grid]$ source ~grid/.bash_profile
[+ASM:grid@ol8ora19sf][/home/grid]$ which
opatch
/u01/app/19.29/grid/OPatch/opatch
[+ASM:grid@ol8ora19sf][/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)
--그리드 엔진이 구동시키는 프로세스가 어떤 바이너리가 띄운건지 확인
--grid os user
[+ASM:grid@ol8ora19sf][/home/grid]$ ps -ef | grep
asm_pmon_+ASM
grid
3254 1 0 18:51
? 00:00:00 asm_pmon_+ASM
grid 3762 3166 0
18:56 pts/0 00:00:00 grep --color=auto
asm_pmon_+ASM
--root os
user
[root@ol8ora19sf][/root]$ ls -l
/proc/3254/exe
lrwxrwxrwx. 1 grid oinstall 0 Dec 26 18:51 /proc/3254/exe
-> /u01/app/19.29/grid/bin/oracle
[root@ol8ora19sf][/root]$ pwdx 3254
3254:
/u01/app/19.29/grid/dbs
[root@ol8ora19sf][/root]$ cat /proc/3254/environ | tr '\0'
'\n' | grep ORACLE_HOME
ORACLE_HOME=/u01/app/19.29/grid
--oracle os
user
[ORA19SF:oracle@ol8ora19sf][/home/oracle]$ vi
~/.bash_profile
[ORA19SF:oracle@ol8ora19sf][/home/oracle]$ cat
~/.bash_profile | egrep -i 'grid_home|oracle_home'
export
OLD_GRID_HOME=/u01/app/19c/grid
export
NEW_GRID_HOME=/u01/app/19.29/grid
export
GRID_HOME=$NEW_GRID_HOME
export
OLD_ORACLE_HOME=$OLD_DB_HOME
export
NEW_ORACLE_HOME=$ORACLE_BASE/product/19.29/db_1
export
ORACLE_HOME=$NEW_ORACLE_HOME
export
PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$GRID_HOME/bin:$BASE_PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
alias cdt='cd $ORACLE_HOME/network/admin'
alias cdo='cd $ORACLE_HOME'
alias
cdod='cd $ORACLE_HOME/dbs'
[ORA19SF:oracle@ol8ora19sf][/home/oracle]$ source ~oracle/.bash_profile
[ORA19SF:oracle@ol8ora19sf][/home/oracle]$ which
opatch
/u01/app/oracle/product/19.29/db_1/OPatch/opatch
[ORA19SF:oracle@ol8ora19sf][/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.
--오라클 엔진이 구동시키는 프로세스가 어떤 바이너리가
띄운건지 확인
--oracle os user
[ORA19SF:oracle@ol8ora19sf][/home/oracle]$ ps -ef | grep
ora_arc3_ORA19SF
oracle 644 9766 0 18:54
pts/5 00:00:00 grep --color=auto ora_arc3_ORA19SF
oracle 4359
1 0 18:51 ? 00:00:00
ora_arc3_ORA19SF
--root os
user
[root@ol8ora19sf][/root]$ ls -l
/proc/4359/exe
lrwxrwxrwx. 1 oracle asmadmin 0 Dec 26 18:51 /proc/4359/exe
-> /u01/app/oracle/product/19.29/db_1/bin/oracle
[root@ol8ora19sf][/root]$ pwdx 4359
4516:
/u01/app/oracle/product/19.29/db_1/dbs
[root@ol8ora19sf][/root]$ cat /proc/4359/environ | tr '\0'
'\n' | grep ORACLE_HOME
ORACLE_HOME=/u01/app/oracle/product/19.29/db_1
13. 인벤토리 설정
--grid os user
[+ASM:grid@ol8ora19sf][/home/grid]$ echo
$NEW_ORACLE_HOME
/u01/app/19.29/grid
[+ASM:grid@ol8ora19sf][/home/grid]$ echo
$OLD_ORACLE_HOME
/u01/app/19c/grid
[+ASM:grid@ol8ora19sf][/home/grid]$
$NEW_ORACLE_HOME/oui/bin/runInstaller -updateNodeList
ORACLE_HOME=$NEW_ORACLE_HOME CRS=TRUE < /STRONG>
Starting Oracle
Universal Installer...
Checking swap
space: must be greater than 500 MB. Actual 16378
MB Passed
The inventory pointer is
located at /etc/oraInst.loc
[+ASM:grid@ol8ora19sf][/home/grid]$
$OLD_ORACLE_HOME/oui/bin/runInstaller -updateNodeList
ORACLE_HOME=$OLD_ORACLE_HOME CRS=FALSE < /STRONG>
Starting Oracle
Universal Installer...
Checking swap
space: must be greater than 500 MB. Actual 16378
MB Passed
The inventory pointer is
located at /etc/oraInst.loc
[+ASM:grid@ol8ora19sf][/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>
14. datapatch 작업
--작업 시작 전 확인
[ORA19SF:oracle@ol8ora19sf][/home/oracle]$
$ORACLE_HOME/OPatch/datapatch --sanity_checks
SQL Patching sanity
checks version 19.29.0.0.0 on Fri 26 Dec 2025 06:58:38 PM KST
Copyright (c) 2021, 2025, Oracle. All rights
reserved.
Log file for this invocation: /u01/app/oracle/cfgtoollogs/sqlpatch/sanity_checks_20251226_185838_8586/sanity_checks_20251226_185838_8586.log
Running checks
JSON report generated in
/u01/app/oracle/cfgtoollogs/sqlpatch/sanity_checks_20251226_185838_8586/sqlpatch_sanity_checks_summary.json
file
Checks completed. Printing
report:
Check: Database
component status - OK
Check: PDB Violations - OK
Check: Invalid System Objects - OK
Check: Tablespace Status - OK
Check:
Backup jobs - OK
Check: Temp file exists - OK
Check: Temp file online - OK
Check:
Data Pump running - OK
Check: Container status - OK
Check: Oracle Database Keystore - OK
Check: Dictionary statistics gathering - WARNING
Patching the database without recent data dictionary
statistics gathered may lead to performance issues.
Data dictionary statistics are older than 7 days.
Run the following queries to start gathering the
dictionary statistics:
EXEC
DBMS_STATS.GATHER_DICTIONARY_STATS;
EXEC DBMS_SYSTEM.GATHER_FIXED_OBJECTS_STATS;
Refer
to MOS 457926.1 for more details.
ORA19SF:
|
LATEST
|
OPERATION |
STATUS |
|-----------------+----------------------------+-----------|
| 13-DEC-25 17:53 |
gather_fixed_objects_stats | COMPLETED |
|-----------------+----------------------------+-----------|
| 13-DEC-25 17:53 |
gather_dictionary_stats | COMPLETED |
|-----------------+----------------------------+-----------|
Check: Scheduled Jobs - WARNING
Execution of scheduler jobs while database patching
is running may lead to failures and/or performance issues.
There are jobs currently running or scheduled to be
executed during next hour.
If you experience
Datapatch errors caused by locking in the database, consider patching the
database when jobs are not running or preventing jobs from starting.
To check for jobs that are running or scheduled to
run:
SELECT owner as schema_name,
job_name, state, next_run_date
FROM
sys.all_scheduler_jobs
WHERE state =
'RUNNING'
UNION
SELECT owner as schema_name,
job_name, state, next_run_date
FROM
sys.all_scheduler_jobs
WHERE state = 'SCHEDULED'
and cast(next_run_date as date) > sysdate
and cast(next_run_date as
date) < sysdate + 1/24;
ORA19SF:
| SCHEMA_NAME
|
JOB_NAME
| STATE
|
NEXT_RUN_DATE |
|-------------+-----------------------------+-----------+---------------------------------|
|
SYS | OBJNUM_REUSE_MAINTAIN_JOB$$ | SCHEDULED | 25/12/26
19:26:05.177378 +09:00 |
|-------------+-----------------------------+-----------+---------------------------------|
Check: GoldenGate triggers - OK
Check: Logminer DDL triggers - OK
Check: Check sys public grants - OK
Check: Statistics gathering running - OK
Check: Optim dictionary upgrade parameter - OK
Check: Symlinks on oracle home path - OK
Check: Central Inventory - OK
Check:
Java Virtual Machine Enable - OK
Check: Oracle Database
Vault Enabled - OK
Check: Queryable Inventory database
directories - OK
Check: Queryable Inventory locks - OK
Check: Queryable Inventory package - OK
Check: Queryable Inventory external table - OK
Check: Imperva processes - OK
Check:
Guardium processes - OK
Check: Locale -
OK
Refer to MOS Note
2975965.1 and debug log
/u01/app/oracle/cfgtoollogs/sqlpatch/sanity_checks_20251226_185838_8586/sanity_checks_debug_20251226_185838_8586.log
SQL Patching sanity checks completed on Fri 26 Dec 2025 06:58:38 PM KST
--datapatch 작업 전
조치
[ORA19SF:oracle@ol8ora19sf][/home/oracle]$ alias
ss
alias ss='rlwrap
sqlplus "/as sysdba"'< /STRONG>
[ORA19SF:oracle@ol8ora19sf][/home/oracle]$ ss
SQL*Plus: Release
19.0.0.0.0 - Production on Fri Dec 26 19:03:23 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
[ol8ora19sf]<SYS@ORA19SF>$ EXEC DBMS_STATS.GATHER_DICTIONARY_STATS;
PL/SQL procedure successfully completed.
Elapsed: 00:00:07.52
[ol8ora19sf]<SYS@ORA19SF>$ exec DBMS_STATS.GATHER_FIXED_OBJECTS_STATS;
PL/SQL procedure
successfully completed.
Elapsed:
00:00:33.98
[ol8ora19sf]<SYS@ORA19SF>$
BEGIN
DBMS_SCHEDULER.DISABLE('SYS.OBJNUM_REUSE_MAINTAIN_JOB$$');
END;
/
[ol8ora19sf]<SYS@ORA19SF>$
SET LINESIZE 200
COL OWNER FORMAT A10
COL JOB_NAME
FORMAT A35
COL ENABLED FORMAT A10
COL STATE FORMAT A15
COL
NEXT_RUN_DATE FORMAT A40
SELECT OWNER
, JOB_NAME
, ENABLED
, STATE
, NEXT_RUN_DATE
FROM DBA_SCHEDULER_JOBS
WHERE JOB_NAME = 'OBJNUM_REUSE_MAINTAIN_JOB$$'
AND OWNER = 'SYS';
OWNER
JOB_NAME
ENABLED
STATE
NEXT_RUN_DATE
----------
----------------------------------- ---------- ---------------
----------------------------------------
SYS
OBJNUM_REUSE_MAINTAIN_JOB$$
FALSE
DISABLED 25/12/26 19:26:05.177378
+09:00
1 row selected.
Elapsed: 00:00:00.03
--datapatch 완료후 아래의
작업으로 다시 활성화 시켜야함
BEGIN
DBMS_SCHEDULER.ENABLE('SYS.OBJNUM_REUSE_MAINTAIN_JOB$$');
END;
/
--다시 확인
[ORA19SF:oracle@ol8ora19sf][/home/oracle]$
$ORACLE_HOME/OPatch/datapatch --sanity_checks
SQL Patching sanity
checks version 19.29.0.0.0 on Fri 26 Dec 2025 07:11:54 PM KST
Copyright (c) 2021, 2025, Oracle. All rights
reserved.
Log file for this invocation: /u01/app/oracle/cfgtoollogs/sqlpatch/sanity_checks_20251226_191154_2265/sanity_checks_20251226_191154_2265.log
Running checks
JSON report generated in
/u01/app/oracle/cfgtoollogs/sqlpatch/sanity_checks_20251226_191154_2265/sqlpatch_sanity_checks_summary.json
file
Checks completed. Printing
report:
Check: Database
component status - OK
Check: PDB Violations - OK
Check: Invalid System Objects - OK
Check: Tablespace Status - OK
Check:
Backup jobs - OK
Check: Temp file exists - OK
Check: Temp file online - OK
Check:
Data Pump running - OK
Check: Container status - OK
Check: Oracle Database Keystore - OK
Check: Dictionary statistics gathering - WARNING
Patching the database without recent data dictionary
statistics gathered may lead to performance issues.
Data dictionary statistics are older than 7 days.
Run the following queries to start gathering the
dictionary statistics:
EXEC
DBMS_STATS.GATHER_DICTIONARY_STATS;
EXEC DBMS_SYSTEM.GATHER_FIXED_OBJECTS_STATS;
Refer
to MOS 457926.1 for more details.
ORA19SF:
|
LATEST
|
OPERATION |
STATUS |
|-----------------+----------------------------+-----------|
| 13-DEC-25 17:53 |
gather_fixed_objects_stats | COMPLETED |
|-----------------+----------------------------+-----------|
| 13-DEC-25 17:53 |
gather_dictionary_stats | COMPLETED |
|-----------------+----------------------------+-----------|
Check: Scheduled Jobs - OK
Check:
GoldenGate triggers - OK
Check: Logminer DDL triggers -
OK
Check: Check sys public grants - OK
Check: Statistics gathering running - OK
Check: Optim dictionary upgrade parameter - OK
Check: Symlinks on oracle home path - OK
Check: Central Inventory - OK
Check:
Java Virtual Machine Enable - OK
Check: Oracle Database
Vault Enabled - OK
Check: Queryable Inventory database
directories - OK
Check: Queryable Inventory locks - OK
Check: Queryable Inventory package - OK
Check: Queryable Inventory external table - OK
Check: Imperva processes - OK
Check:
Guardium processes - OK
Check: Locale -
OK
Refer to MOS Note
2975965.1 and debug log
/u01/app/oracle/cfgtoollogs/sqlpatch/sanity_checks_20251226_191154_2265/sanity_checks_debug_20251226_191154_2265.log
SQL Patching sanity checks completed on Fri 26 Dec 2025
07:11:54 PM KST
--> 아직도 waring이 뜨긴하지만 datapatch 작업
강햄시킴
--datapatch 작업
시작
[ORA19SF:oracle@ol8ora19sf][/home/oracle]$
$ORACLE_HOME/OPatch/datapatch -verbose
SQL Patching tool
version 19.29.0.0.0 Production on Fri Dec 26 19:14:17 2025
Copyright (c) 2012, 2025, Oracle. All rights
reserved.
Log file for this invocation: /u01/app/oracle/cfgtoollogs/sqlpatch/sqlpatch_7052_2025_12_26_19_14_17/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/12/26 16:36:01.848054
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_ORA19SF_2025Dec26_19_14_41.log
(no errors)
SQL Patching tool complete on Fri Dec 26
19:15:03 2025
--> datapatch 작업 완료됨
[ORA19SF:oracle@ol8ora19sf][/home/oracle]$ alias
ss
alias ss='rlwrap
sqlplus "/as sysdba"'
[ORA19SF:oracle@ol8ora19sf][/home/oracle]$ ss
SQL*Plus: Release
19.0.0.0.0 - Production on Fri Dec 26 19:15:45 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
[ol8ora19sf]<SYS@ORA19SF>$
BEGIN
DBMS_SCHEDULER.ENABLE('SYS.OBJNUM_REUSE_MAINTAIN_JOB$$');
END;
/
[ol8ora19sf]<SYS@ORA19SF>$
SET LINESIZE 200
COL OWNER FORMAT A10
COL JOB_NAME
FORMAT A35
COL ENABLED FORMAT A10
COL STATE FORMAT A15
COL
NEXT_RUN_DATE FORMAT A40
SELECT OWNER
, JOB_NAME
, ENABLED
, STATE
, NEXT_RUN_DATE
FROM DBA_SCHEDULER_JOBS
WHERE JOB_NAME = 'OBJNUM_REUSE_MAINTAIN_JOB$$'
AND OWNER = 'SYS';
OWNER
JOB_NAME
ENABLED
STATE
NEXT_RUN_DATE
----------
----------------------------------- ---------- ---------------
----------------------------------------
SYS
OBJNUM_REUSE_MAINTAIN_JOB$$
TRUE
SCHEDULED 25/12/26 19:26:05.685592
+09:00
1 row selected.
Elapsed: 00:00:00.04
[ol8ora19sf]<SYS@ORA19SF>$
SET LINESIZE 200
SET PAGESIZE 100
SET TRIMSPOOL
ON
COL
SCHEMA_NAME FORMAT A15 HEADING 'Schema'
COL JOB_NAME FORMAT A35
HEADING 'Job Name'
COL
STATE FORMAT A10 HEADING
'State'
COL NEXT_RUN_DATE FORMAT A40 HEADING 'Next
Run Date'
SELECT owner AS
schema_name
, job_name
, state
, next_run_date
FROM sys.all_scheduler_jobs
WHERE state = 'RUNNING'
UNION
SELECT owner AS
schema_name
, job_name
, state
, next_run_date
FROM sys.all_scheduler_jobs
WHERE state = 'SCHEDULED'
AND CAST(next_run_date AS DATE) > SYSDATE
AND CAST(next_run_date AS DATE) < SYSDATE +
1/24;
Schema
Job
Name
State Next Run Date
--------------- -----------------------------------
---------- ----------------------------------------
SYS
OBJNUM_REUSE_MAINTAIN_JOB$$
SCHEDULED 25/12/26 19:26:05.685592 +09:00
1 row selected.
[ol8ora19sf]<SYS@ORA19SF>$
SET LINESIZE 300
SET PAGESIZE 1000
SET COLSEP ' | '
SET TRIMOUT ON
SET TRIMSPOOL
ON
COL
PATCH_ID FOR
99999999 HEADING 'Patch ID'
COL PATCH_TYPE FOR
A10 HEADING
'Type'
COL
ACTION FOR
A10 HEADING
'Action'
COL
STATUS FOR
A10 HEADING
'Status'
COL ACTION_TIME FOR
A20 HEADING
'Action Time'
COL DESCRIPTION FOR
A60 HEADING
'Description' WORD_WRAPPED
COL SOURCE_VERSION FOR
A15 HEADING
'Source Ver'
COL TARGET_VERSION FOR
A15 HEADING
'Target Ver'
SELECT
A.PATCH_ID
, A.PATCH_TYPE
, A.ACTION
, A.STATUS
, TO_CHAR(A.ACTION_TIME,
'YYYY-MM-DD HH24:MI:SS') AS ACTION_TIME
, A.SOURCE_VERSION
, A.TARGET_VERSION
, A.DESCRIPTION
FROM DBA_REGISTRY_SQLPATCH A
ORDER BY A.ACTION_TIME;
Patch ID | Type |
Action | Status | Action
Time | Source
Ver | Target Ver |
Description
--------- | ---------- | ---------- |
---------- | -------------------- | --------------- | --------------- |
------------------------------------------------------------
37960098 |
RU |
APPLY | SUCCESS | 2025-12-13
17:31:06 | 19.1.0.0.0 |
19.28.0.0.0 | Database Release Update : 19.28.0.0.250715
(37960098)
38291812 |
RU |
APPLY | SUCCESS | 2025-12-26
19:14:55 | 19.28.0.0.0 |
19.29.0.0.0 | Database Release Update : 19.29.0.0.251021
(38291812)
--invalid 오브젝트
확인
[ol8ora19sf]<SYS@ORA19SF>$
SET LINESIZE 180
SET PAGESIZE 100
SET COLSEP ' | '
SET VERIFY OFF
SET FEEDBACK
ON
COLUMN
OWNER FORMAT A30 HEADING 'Owner'
COLUMN OBJECT_NAME FORMAT A30 HEADING 'Object Name'
COLUMN OBJECT_TYPE FORMAT A20 HEADING 'Object Type'
COLUMN STATUS FORMAT A10
HEADING 'Status'
SELECT OWNER
, OBJECT_NAME
, OBJECT_TYPE
, STATUS
FROM DBA_OBJECTS
WHERE
STATUS <> 'VALID'
ORDER BY OWNER,
OBJECT_NAME;
no rows selected
Elapsed: 00:00:00.02
15. 전체 작업 원복
15-1. 오라클 홈 변경 후 datapatch 원복
[ORA19SF:oracle@ol8ora19sf][/home/oracle]$ echo
$ORACLE_HOME
/u01/app/oracle/product/19.29/db_1
[ORA19SF:oracle@ol8ora19sf][/home/oracle]$ srvctl stop database -db ora19sf
[ORA19SF:oracle@ol8ora19sf][/home/oracle]$ crsctl stat res
ora.ora19sf.db -t
--------------------------------------------------------------------------------
Name
Target State
Server
State details
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.ora19sf.db
1 OFFLINE
OFFLINE
Instance Shutdown,ST
ABLE
--------------------------------------------------------------------------------
[ORA19SF:oracle@ol8ora19sf][/home/oracle]$ echo
$OLD_ORACLE_HOME
/u01/app/oracle/product/19c/db_1
[ORA19SF:oracle@ol8ora19sf][/home/oracle]$ srvctl modify database -db ora19sf -oraclehome $OLD_ORACLE_HOME
[ORA19SF:oracle@ol8ora19sf][/home/oracle]$ srvctl config
database -db ora19sf
Database unique name: ORA19SF
Database name: ORA19SF
Oracle home:
/u01/app/oracle/product/19c/db_1
Oracle user: oracle
Spfile:
+DATA1/ORA19SF/PARAMETERFILE/spfile.266.1219771929
Password file:
Domain:
Start options: open
Stop options:
immediate
Database role: PRIMARY
Management policy: AUTOMATIC
Disk
Groups: DATA1,FRA1
Services:
OSDBA
group:
OSOPER group:
Database
instance: ORA19SF
[ORA19SF:oracle@ol8ora19sf][/home/oracle]$ export
ORACLE_HOME=$OLD_ORACLE_HOME
[ORA19SF:oracle@ol8ora19sf][/home/oracle]$ export
PATH=$ORACLE_HOME/bin:$PATH
[ORA19SF:oracle@ol8ora19sf][/home/oracle]$ echo
$ORACLE_HOME
/u01/app/oracle/product/19c/db_1
[ORA19SF:oracle@ol8ora19sf][/home/oracle]$ echo
$PATH
/u01/app/oracle/product/19c/db_1/bin:/u01/app/oracle/product/19.29/db_1/bin:/u01/app/oracle/product/19.29/db_1/OPatch:/u01/app/19.29/grid/bin:/usr/sbin:/home/oracle/.local/bin:/home/oracle/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin
[ORA19SF:oracle@ol8ora19sf][/home/oracle]$ which
srvctl
/u01/app/oracle/product/19c/db_1/bin/srvctl
[ORA19SF:oracle@ol8ora19sf][/home/oracle]$ srvctl start database -db ora19sf
--반드시 기존 19.28 엔진으로 oracle instance를 띄운 상태에서 19.29 엔진에 있는 datapatch 를 실행시켜야함 (매우 중요!!!)
--이렇게 하지않고 19.29 엔진으로 oracle
instance가 뜬 상태에서 datapatch rollback
--이런식으로
($ORACLE_HOME/OPatch/datapatch -rollback 38291812 -force) 하면 최초 base release로
돌아감
--(정말 큰일남, 작업 안끝남, 중간에 작업 중지하면 전부 재 컴파일해야함, 트러블 슈팅의
끝판왕까지 가야됨 큰일남 주의할것!!!)
[ORA19SF:oracle@ol8ora19sf][/home/oracle]$
$ORACLE_HOME/OPatch/datapatch -verbose
SQL Patching tool
version 19.28.0.0.0 Production on Fri Dec 26 19:20:56 2025
Copyright (c) 2012, 2025, Oracle. All rights
reserved.
Log file for this invocation: /u01/app/oracle/cfgtoollogs/sqlpatch/sqlpatch_9741_2025_12_26_19_20_56/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/12/26 19:14:55.378294
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_ORA19SF_2025Dec26_19_21_05.log
(no errors)
SQL Patching tool complete on Fri Dec 26
19:21:26 2025
[ORA19SF:oracle@ol8ora19sf][/home/oracle]$ alias
ss
alias ss='rlwrap
sqlplus "/as sysdba"'< /STRONG>
[ORA19SF:oracle@ol8ora19sf][/home/oracle]$
ss
SQL*Plus: Release
19.0.0.0.0 - Production on Fri Dec 26 17:30:13 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
[ol8ora19sf]<SYS@ORA19SF>$
SET LINESIZE 300
SET PAGESIZE 1000
SET COLSEP ' | '
SET TRIMOUT ON
SET TRIMSPOOL
ON
COL
PATCH_ID FOR
99999999 HEADING 'Patch ID'
COL PATCH_TYPE FOR
A10 HEADING
'Type'
COL
ACTION FOR
A10 HEADING
'Action'
COL
STATUS FOR
A10 HEADING
'Status'
COL ACTION_TIME FOR
A20 HEADING
'Action Time'
COL DESCRIPTION FOR
A60 HEADING
'Description' WORD_WRAPPED
COL SOURCE_VERSION FOR
A15 HEADING
'Source Ver'
COL TARGET_VERSION FOR
A15 HEADING
'Target Ver'
SELECT
A.PATCH_ID
, A.PATCH_TYPE
, A.ACTION
, A.STATUS
, TO_CHAR(A.ACTION_TIME,
'YYYY-MM-DD HH24:MI:SS') AS ACTION_TIME
, A.SOURCE_VERSION
, A.TARGET_VERSION
, A.DESCRIPTION
FROM DBA_REGISTRY_SQLPATCH A
ORDER BY A.ACTION_TIME;
Patch ID | Type |
Action | Status | Action
Time | Source
Ver | Target Ver |
Description
--------- | ---------- | ---------- |
---------- | -------------------- | --------------- | --------------- |
------------------------------------------------------------
37960098 |
RU |
APPLY | SUCCESS | 2025-12-13
17:31:06 | 19.1.0.0.0 |
19.28.0.0.0 | Database Release Update : 19.28.0.0.250715
(37960098)
38291812 |
RU |
APPLY | SUCCESS | 2025-12-25
13:11:56 | 19.28.0.0.0 |
19.29.0.0.0 | Database Release Update : 19.29.0.0.251021
(38291812)
38291812 |
RU | ROLLBACK |
SUCCESS | 2025-12-26 19:21:18 |
19.29.0.0.0 | 19.28.0.0.0 |
Database Release Update : 19.29.0.0.251021 (38291812)
7 rows selected.
Elapsed: 00:00:00.01
[ol8ora19sf]<SYS@ORA19SF>$
SET LINESIZE 180
SET PAGESIZE 100
SET COLSEP ' | '
SET VERIFY OFF
SET FEEDBACK
ON
COLUMN
OWNER FORMAT A30 HEADING 'Owner'
COLUMN OBJECT_NAME FORMAT A30 HEADING 'Object Name'
COLUMN OBJECT_TYPE FORMAT A20 HEADING 'Object Type'
COLUMN STATUS FORMAT A10
HEADING 'Status'
SELECT OWNER
, OBJECT_NAME
, OBJECT_TYPE
, STATUS
FROM DBA_OBJECTS
WHERE
STATUS <> 'VALID'
ORDER BY OWNER,
OBJECT_NAME;
no rows selected
Elapsed: 00:00:00.02
15-2. grid 엔진 원복
[root@ol8ora19sf][/root]$ echo
$OLD_GRID_HOME
/u01/app/19c/grid
[root@ol8ora19sf][/root]$
$OLD_GRID_HOME/crs/install/roothas.sh -prepatch -dstcrshome
$OLD_GRID_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/ol8ora19sf/crsconfig/hapatch_2025-12-26_05-32-36PM.log
2025/12/26 17:32:40 CLSRSC-347: Successfully unlock
/u01/app/19c/grid
2025/12/26 17:32:40 CLSRSC-671:
Pre-patch steps for patching GI home successfully completed.
--여기서 디비가 재기동되는
것임
[root@ol8ora19sf][/root]$
$OLD_GRID_HOME/crs/install/roothas.sh -postpatch -dstcrshome
$OLD_GRID_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/ol8ora19sf/crsconfig/hapatch_2025-12-26_07-27-27PM.log
2025/12/26 19:28:11 CLSRSC-329: Replacing Clusterware
entries in file 'oracle-ohasd.service'
2025/12/26
19:29:23 CLSRSC-672: Post-patch steps for patching GI home successfully
completed.
[root@ol8ora19sf][/root]$
[root@ol8ora19sf][/root]$ alias csrt
alias csrt='crsctl
stat res -t'< /STRONG>
[root@ol8ora19sf][/root]$ csrt
--------------------------------------------------------------------------------
Name
Target State
Server
State details
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.DATA1.dg
ONLINE ONLINE
ol8ora19sf
STABLE
ora.FRA1.dg
ONLINE ONLINE
ol8ora19sf
STABLE
ora.LISTENER.lsnr
ONLINE ONLINE
ol8ora19sf
STABLE
ora.asm
ONLINE ONLINE
ol8ora19sf
Started,STABLE
ora.ons
OFFLINE OFFLINE
ol8ora19sf
STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.cssd
1 ONLINE
ONLINE
ol8ora19sf
STABLE
ora.diskmon
1 OFFLINE
OFFLINE
STABLE
ora.evmd
1 ONLINE
ONLINE
ol8ora19sf
STABLE
ora.ora19sf.db
1 ONLINE
ONLINE
ol8ora19sf
Open,HOME=/u01/app/o
racle/product/19c/db
_1,STABLE
--------------------------------------------------------------------------------
15-3. 인벤토리 원상 복구
--grid os user
[+ASM:grid@ol8ora19sf][/home/grid]$ echo
$OLD_GRID_HOME
/u01/app/19c/grid
[+ASM:grid@ol8ora19sf][/home/grid]$
$OLD_GRID_HOME/oui/bin/runInstaller -updateNodeList ORACLE_HOME=$OLD_GRID_HOME
CRS=TRUE < /STRONG>
Starting Oracle Universal Installer...
Checking swap
space: must be greater than 500 MB. Actual 16378
MB Passed
The inventory pointer is
located at /etc/oraInst.loc
--grid os user
[+ASM:grid@ol8ora19sf][/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" 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>
[+ASM:grid@ol8ora19sf][/home/grid]$ echo
$NEW_GRID_HOME
/u01/app/19.29/grid
[+ASM:grid@ol8ora19sf][/home/grid]$
$NEW_GRID_HOME/oui/bin/runInstaller -updateNodeList ORACLE_HOME=$NEW_ORACLE_HOME
CRS=FALSE < /STRONG>
Starting Oracle Universal Installer...
Checking swap
space: must be greater than 500 MB. Actual 16378
MB Passed
The inventory pointer is
located at /etc/oraInst.loc
[+ASM:grid@ol8ora19sf][/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>
[+ASM:grid@ol8ora19sf][/home/grid]$
--oracle os user
[ORA19SF:oracle@ol8ora19sf][/home/oracle]$ echo
$NEW_ORACLE_HOME
/u01/app/oracle/product/19.29/db_1
[ORA19SF:oracle@ol8ora19sf][/home/oracle]$
$NEW_ORACLE_HOME/oui/bin/runInstaller -silent -detachHome
ORACLE_HOME=$NEW_ORACLE_HOME< /STRONG>
Starting Oracle
Universal Installer...
Checking swap
space: must be greater than 500 MB. Actual 16378
MB Passed
The inventory pointer is
located at /etc/oraInst.loc
You can find the log of this
install session at:
/u01/app/oraInventory/logs/DetachHome2025-12-26_05-39-10PM.log
'DetachHome' was successful.
--grid os
user
[+ASM:grid@ol8ora19sf][/home/grid]$ echo
$NEW_ORACLE_HOME
/u01/app/19.29/grid
[+ASM:grid@ol8ora19sf][/home/grid]$
$NEW_ORACLE_HOME/oui/bin/runInstaller -silent -detachHome
ORACLE_HOME=$NEW_ORACLE_HOME< /STRONG>
Starting Oracle
Universal Installer...
Checking swap
space: must be greater than 500 MB. Actual 16378
MB Passed
The inventory pointer is
located at /etc/oraInst.loc
You can find the log of this
install session at:
/u01/app/oraInventory/logs/DetachHome2025-12-26_05-40-02PM.log
'DetachHome' was successful.
--grid os user
[+ASM:grid@ol8ora19sf][/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_LIST>
<COMPOSITEHOME_LIST>
</COMPOSITEHOME_LIST>
</INVENTORY>
15-4. root/grid/oracle os user의 .bash_profile 원상
복구
--root os
user
[root@ol8ora19sf][/root]$ vi ~root/.bash_profile
[root@ol8ora19sf][/root]$ cat ~root/.bash_profile | egrep -i
'oracle|grid|db'
export
ORACLE_BASE=/u01/app/oracle
export
OLD_GRID_HOME=/u01/app/19c/grid
export
NEW_GRID_HOME=/u01/app/19.29/grid
export
GRID_HOME=$OLD_GRID_HOME
export
OLD_DB_HOME=$ORACLE_BASE/product/19c/db_1
export
NEW_DB_HOME=$ORACLE_BASE/product/19.29/db_1
export
DB_HOME=$OLD_DB_HOME
export
PATH=$GRID_HOME/bin:$BASE_PATH
[root@ol8ora19sf][/root]$ source ~root/.bash_profile
--grid os
user
[+ASM:grid@ol8ora19sf][/home/grid]$ vi
~grid/.bash_profile
[+ASM:grid@ol8ora19sf][/home/grid]$
cat ~grid/.bash_profile | egrep -i 'oracle|grid|db' | grep -i home
export
OLD_GRID_HOME=/u01/app/19c/grid
export
NEW_GRID_HOME=/u01/app/19.29/grid
export
GRID_HOME=$OLD_GRID_HOME
export
OLD_DB_HOME=$ORACLE_BASE/product/19c/db_1
export
NEW_DB_HOME=$ORACLE_BASE/product/19.29/db_1
export
DB_HOME=$OLD_DB_HOME
export
OLD_ORACLE_HOME=$OLD_GRID_HOME
export
NEW_ORACLE_HOME=$NEW_GRID_HOME
export
ORACLE_HOME=$OLD_GRID_HOME
export
PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$GRID_HOME/bin:$BASE_PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
alias cdt='cd $ORACLE_HOME/network/admin'
alias cdo='cd $ORACLE_HOME'
alias
cdod='cd $ORACLE_HOME/dbs'
alias cdoss='cd
/home/grid/os_scripts'
[+ASM:grid@ol8ora19sf][/home/grid]$ source ~grid/.bash_profile
--oracle os user
[ORA19SF:oracle@ol8ora19sf][/home/oracle]$ vi
~oracle/.bash_profile
[ORA19SF:oracle@ol8ora19sf][/home/oracle]$ cat
~oracle/.bash_profile | egrep -i 'oracle|grid|db' | grep -i home
export
OLD_GRID_HOME=/u01/app/19c/grid
export
NEW_GRID_HOME=/u01/app/19.29/grid
export
GRID_HOME=$OLD_GRID_HOME
export
OLD_DB_HOME=$ORACLE_BASE/product/19c/db_1
export
NEW_DB_HOME=$ORACLE_BASE/product/19.29/db_1
export
DB_HOME=$OLD_DB_HOME
export
OLD_ORACLE_HOME=$OLD_DB_HOME
export
NEW_ORACLE_HOME=$ORACLE_BASE/product/19.29/db_1
export
ORACLE_HOME=$OLD_ORACLE_HOME
export
PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$GRID_HOME/bin:$BASE_PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
alias cdt='cd $ORACLE_HOME/network/admin'
alias cdo='cd $ORACLE_HOME'
alias
cdod='cd $ORACLE_HOME/dbs'
alias cdrb='cd
/home/oracle/rman_backup/$ORACLE_DBNAME'
alias cdrba='cd
/home/oracle/rman_backup/$ORACLE_DBNAME/ADG'
alias
cdrbx='cd /home/oracle/rman_backup/$ORACLE_DBNAME/XTTS'
alias cdx='cd /home/oracle/xtts'
alias cdos='cd /home/oracle/oracle_scripts'
alias cdoss='cd /home/oracle/os_scripts'
alias cdrbl='cd
/home/oracle/os_scripts/rman_log'
[ORA19SF:oracle@ol8ora19sf][/home/oracle]$ source
~oracle/.bash_profile
15-5. 새로운 grid/oracle 홈 삭제 및 골드 이미지 zip 파일
삭제
--root os user
[root@ol8ora19sf][/root]$ echo
$NEW_GRID_HOME
/u01/app/19.29/grid
[root@ol8ora19sf][/root]$ rm -rf
$NEW_GRID_HOME
[root@ol8ora19sf][/root]$ echo $NEW_DB_HOME
/u01/app/oracle/product/19.29/db_1
[root@ol8ora19sf][/root]$ rm -rf
$NEW_DB_HOME
--grid os user
[+ASM:grid@ol8ora19sf][/home/grid]$ rm -rf
/tmp/patch/19.29/
15-6. 기타 파일 삭제
--grid os user
[+ASM:grid@ol8ora19sf][/home/grid]$ rm -f
/home/grid/grid_19.29.rsp
--oracle os user
[ORA19SF:oracle@ol8ora19sf][/home/oracle]$ rm -rf
/home/oracle/db_19.29.rsp