제목
(2026-01-17) 12cR2 2 Node RAC non-cdb to 19c 2 Node RAC PDB로 Grid 및 Oracle Upgrade 테스트 (autoupgrade 사용)
테스트 환경
업그레이드 전
-
OS : Oracle Linux Server 7.9 (
grep ^PRETTY_NAME= /etc/os-release | cut -d= -f2- | tr -d '"') -
Kernel : 4.14.35-1902.303.4.el7uek.x86_64 (
uname -r) -
Oracle Version : Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit 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)
PDB 정보
Non-CDBRAC Node 1
Hostname : ol7ora12rf1 (hostname)
Public IP : 192.168.240.11 (getent ahostsv4hostname| awk '{print $1; exit}')
Instance Name : ORA12RF1 (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 : ol7ora12rf2 (hostname)
Public IP : 192.168.240.12 (getent ahostsv4hostname| awk '{print $1; exit}')
Instance Name : ORA12RF2 (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)
33610989;TOMCAT RELEASE UPDATE 12.2.0.1.0(ID:RELEASE) (33610989)
26839277;DBWLM RELEASE UPDATE 12.2.0.1.0(ID:170913) (26839277)
33116894;ACFS JUL 2021 RELEASE UPDATE 12.2.0.1.210720 (33116894)
33678030;OCW JAN 2022 RELEASE UPDATE 12.2.0.1.220118 (33678030)
33587128;Database Jan 2022 Release Update : 12.2.0.1.220118 (33587128)Oracle (
opatch lspatches) (oracle os user)
33587128;Database Jan 2022 Release Update : 12.2.0.1.220118 (33587128)
33678030;OCW JAN 2022 RELEASE UPDATE 12.2.0.1.220118 (33678030)
업그레이드 후
- OS : Oracle Linux Server 7.9 (
grep ^PRETTY_NAME= /etc/os-release | cut -d= -f2- | tr -d '"') - Kernel : 4.14.35-1902.303.4.el7uek.x86_64 (
uname -r) - Oracle Version : Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit 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) - PDB 정보
ORA12RF - RAC Node 1
Hostname : ol7ora12rf1 (hostname)
Public IP : 192.168.240.11 (getent ahostsv4hostname| awk '{print $1; exit}')
Instance Name : ORARCF1 (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 : ol7ora12rf2 (hostname)
Public IP : 192.168.240.12 (getent ahostsv4hostname| awk '{print $1; exit}')
Instance Name : ORARCF2 (echo -e 'set pages 0 feedback off heading off verify off\nselect '\''Instance Name : '\''||instance_name from v$instance;' | sqlplus -s / as sysdba)
- DB명 : ORA12RF (
- 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)
- Grid (
테스트 개요
-
- 테스트 목적
본 테스트는 Oracle Database 12c Release 2 (12.2.0.1) 기반의 2-Node RAC Non-CDB 환경을 Oracle Database 19c (19.29.0.0) RAC 멀티테넌트(CDB/PDB) 아키텍처로 전환 및 업그레이드하는 전체 과정을 검증하는 데 목적이 있다. 특히, Oracle 권장 도구인 AutoUpgrade를 활용하여 Non-CDB를 PDB로 변환(Conversion)함과 동시에 업그레이드를 수행함으로써, 작업 효율성과 안정성을 확보하는 절차를 확립한다.
- 테스트 목적
-
- 테스트 범위 및 시나리오
Grid Infrastructure 업그레이드: 12cR2 Clusterware를 19c(19.29)로 In-place(또는 Out-of-place Rolling) 업그레이드.
Database 아키텍처 전환: 기존 Legacy Non-CDB 데이터베이스를 신규 생성한 19c CDB(Container Database) 내부의 PDB(Pluggable Database)로 전환.
도구 활용: AutoUpgrade.jar 툴의 deploy 모드를 사용하여 사전 점검, 업그레이드, 변환 과정을 자동화.
인프라 환경: Oracle Linux 7.9 환경에서의 2-Node RAC 구성 유지 및 서비스 연속성 검증.
- 테스트 범위 및 시나리오
-
- 주요 수행 절차
사전 준비 및 백업 (Pre-Upgrade & Backup)
OS 설정(/etc), Grid/DB 엔진, OCR/OLR, ASM 메타데이터, 데이터베이스 Full Backup 수행.
복구 시점 확보를 위한 Guaranteed Restore Point 생성.
Grid Infrastructure 업그레이드 (GI Upgrade)
19c Grid 바이너리 설치 및 필수 패치(19.29 RU) 적용.
gridSetup.sh를 통한 2-Node RAC Cluster 업그레이드 수행.
신규 19c CDB 구축 (Target CBD Creation)
19c Database 소프트웨어 설치.
PDB를 수용할 신규 CDB (ORARCF)를 2-Node RAC로 생성.
DB 파라미터(max_string_size=EXTENDED 등) 및 리두 로그 최적화.
AutoUpgrade를 통한 DB 전환 (Non-CDB to PDB)
기존 12c DB(ORA12RF)를 19c CDB(ORARCF)의 PDB(PDB1)로 플러그인 및 업그레이드.
호환성 검증 및 데이터 딕셔너리 업그레이드 자동 수행.
사후 안정화 (Post-Upgrade)
타임존 파일 업그레이드 및 Invalid Object 컴파일.
통계 정보(Fixed Object Stats) 수집 및 신규 백업 정책 적용.
- 주요 수행 절차
-
- 기대 효과
최신 Long Term Release(19c) 도입을 통한 기술 지원 안정성 확보.
멀티테넌트 아키텍처 전환을 통한 DB 통합 관리 및 리소스 효율성 증대.
AutoUpgrade 툴 사용을 통한 인적 오류(Human Error) 최소화 및 작업 시간 단축 검증.
- 기대 효과
목차
- 제목
- 테스트 환경
- 테스트 개요
- 목차
- 내용
- 1-1. /etc 디렉토리 이하 관련 파일 백업
- 1-2. Grid 엔진 파일 백업
- 1-3. Oracle 엔진 파일 백업
- 1-4. OLR 백업
- 1-5. OCR 백업
- 1-6. ASM Meta 백업
- 1-7. DB 풀 백업
- 1-8. Flashback Database 설정 및 Restore Point 생성 (noncdb to cdb에서는 필수는 아님)
- 1-9. 파라미터 파일 백업
- 1-10. BCT 비활성화
- 1-11. Oracle Grid/Oracle 19.29 골드 이미지 업로드
- 2. Grid 업그레이드
- 3. 19c Oracle 엔진 설치
- 4. 19c CDB 설치
- 5. 19c DB로 업그레이드
- 6. 12cR2 Grid/Oracle로 롤백
내용
- 목차로 돌아가기
-
1. 업그레이드 전 사전 작업
1-1. /etc 디렉토리 이하 관련 파일 백업
- 1번 노드 부터 시작
--1번 노드 (root os user)
--/etc/ 디렉토리 이하를 백업받을 디렉토리 생성
[root@ol7ora12rf1][/root]$ mkdir -pv /tmp/backup_before_upgrade_$(date +%Y%m%d)/etc
mkdir: created directory ‘/tmp/backup_before_upgrade_20260111’
mkdir: created directory ‘/tmp/backup_before_upgrade_20260111/etc’
--1번 노드의 /etc/ 디렉토리 이하를 백업받을 쉘을 생성
[root@ol7ora12rf2][/root]$ cat << 'EOF' > /root/backup_before_upgrade_$(date +%Y%m%d)_etc.sh
#!/bin/bash
# --- 변수 설정 ---
CURRENT_DATE=$(date +%Y%m%d)
BACKUP_ROOT="/tmp/backup_before_upgrade_${CURRENT_DATE}"
echo ">>> [Start] Backup Process on $(hostname)"
echo ">>> Target Directory: ${BACKUP_ROOT}"
# --- 디렉터리 생성 ---
mkdir -pv "${BACKUP_ROOT}/etc/security" \
"${BACKUP_ROOT}/etc/sysconfig" \
"${BACKUP_ROOT}/etc/oracle" \
"${BACKUP_ROOT}/etc/init.d" \
"${BACKUP_ROOT}/etc/systemd/system" \
"${BACKUP_ROOT}/etc/udev/rules.d"
# --- 1. /etc 기본 파일 복사 ---
echo ">>> Backing up /etc root files..."
cp -p /etc/oracle.ahf.loc "${BACKUP_ROOT}/etc/" 2>/dev/null
cp -p /etc/oracle-release "${BACKUP_ROOT}/etc/" 2>/dev/null
cp -p /etc/oraInst.loc "${BACKUP_ROOT}/etc/" 2>/dev/null
cp -p /etc/oratab "${BACKUP_ROOT}/etc/" 2>/dev/null
cp -p /etc/sysctl.conf "${BACKUP_ROOT}/etc/"
cp -p /etc/passwd "${BACKUP_ROOT}/etc/"
cp -p /etc/group "${BACKUP_ROOT}/etc/"
# --- 2. 하위 설정 파일 복사 ---
echo ">>> Backing up Sub-directories..."
cp -p /etc/security/limits.conf "${BACKUP_ROOT}/etc/security/"
cp -p /etc/sysconfig/oracleasm "${BACKUP_ROOT}/etc/sysconfig/" 2>/dev/null
cp -rp /etc/oracle/* "${BACKUP_ROOT}/etc/oracle/" 2>/dev/null
# --- 3. init.d 및 서비스 파일 복사 ---
echo ">>> Backing up Init & Systemd files..."
cp -p /etc/init.d/init.ohasd "${BACKUP_ROOT}/etc/init.d/" 2>/dev/null
cp -p /etc/init.d/init.tfa "${BACKUP_ROOT}/etc/init.d/" 2>/dev/null
cp -p /etc/init.d/ohasd "${BACKUP_ROOT}/etc/init.d/" 2>/dev/null
cp -p /etc/init.d/oracleasm "${BACKUP_ROOT}/etc/init.d/" 2>/dev/null
cp -p /etc/init.d/oracle-database-server-12cR2-preinstall-firstboot "${BACKUP_ROOT}/etc/init.d/" 2>/dev/null
cp -p /etc/systemd/system/oracle-ohasd.service "${BACKUP_ROOT}/etc/systemd/system/" 2>/dev/null
cp -p /etc/systemd/system/oracle-tfa.service "${BACKUP_ROOT}/etc/systemd/system/" 2>/dev/null
cp -p /etc/systemd/system/oswbb.service "${BACKUP_ROOT}/etc/systemd/system/" 2>/dev/null
# --- 4. UDEV 규칙 및 디스크 정보 수집 ---
echo ">>> Backing up UDEV & Disk Info..."
cp -p /etc/udev/rules.d/99-oracle-asmdevices.rules "${BACKUP_ROOT}/etc/udev/rules.d/" 2>/dev/null
# ASM 디스크 매핑 정보
ls -l /dev/oracleasm/disks/ > "${BACKUP_ROOT}/etc/udev/udev_disk_mapping.txt"
# 디스크 권한 정보
ls -l /dev/sd* | grep asm >> "${BACKUP_ROOT}/etc/udev/disk_permission_dump.txt"
# SCSI ID 추출 (xargs 및 scsi_id 활용)
ls /dev/oracleasm/disks/* | xargs -n1 readlink -f | xargs -I{} bash -c 'echo "{} : $(/usr/lib/udev/scsi_id -g -u -d {})"' > "${BACKUP_ROOT}/etc/udev/disk_scsi_ids_${CURRENT_DATE}.txt"
echo ">>> [End] Backup Completed."
echo ">>> Verify with: ls -R ${BACKUP_ROOT}"
EOF
--> 쉘 프로그램 생성을 완료함
--쉘 프로그램에게 실행 권한 주기
[root@ol7ora12rf1][/root]$ chmod 775 backup_before_upgrade_$(date +%Y%m%d)_etc.sh
--/etc/ 디렉토리 이하 백업
[root@ol7ora12rf1][/root]$ /root/backup_before_upgrade_$(date +%Y%m%d)_etc.sh
>>> [Start] Backup Process on ol7ora12rf2
>>> Target Directory: /tmp/backup_before_upgrade_20260111
mkdir: created directory ‘/tmp/backup_before_upgrade_20260111’
mkdir: created directory ‘/tmp/backup_before_upgrade_20260111/etc’
mkdir: created directory ‘/tmp/backup_before_upgrade_20260111/etc/security’
mkdir: created directory ‘/tmp/backup_before_upgrade_20260111/etc/sysconfig’
mkdir: created directory ‘/tmp/backup_before_upgrade_20260111/etc/oracle’
mkdir: created directory ‘/tmp/backup_before_upgrade_20260111/etc/init.d’
mkdir: created directory ‘/tmp/backup_before_upgrade_20260111/etc/systemd’
mkdir: created directory ‘/tmp/backup_before_upgrade_20260111/etc/systemd/system’
mkdir: created directory ‘/tmp/backup_before_upgrade_20260111/etc/udev’
mkdir: created directory ‘/tmp/backup_before_upgrade_20260111/etc/udev/rules.d’
>>> Backing up /etc root files...
>>> Backing up Sub-directories...
>>> Backing up Init & Systemd files...
>>> Backing up UDEV & Disk Info...
>>> [End] Backup Completed.
>>> Verify with: ls -R /tmp/backup_before_upgrade_20260111
--> 1번 노드 백업 완료
- 2번 노드도 동일하게 수행
--2번 노드 (root os user)
--/etc/ 디렉토리 이하를 백업받을 디렉토리 생성
[root@ol7ora12rf2][/root]$ mkdir -pv /tmp/backup_before_upgrade_$(date +%Y%m%d)/etc
mkdir: created directory ‘/tmp/backup_before_upgrade_20260111’
mkdir: created directory ‘/tmp/backup_before_upgrade_20260111/etc’
--2번 노드의 /etc/ 디렉토리 이하를 백업받을 쉘을 생성
[root@ol7ora12rf2][/root]$ cat << 'EOF' > /root/backup_before_upgrade_$(date +%Y%m%d)_etc.sh
#!/bin/bash
# --- 변수 설정 ---
CURRENT_DATE=$(date +%Y%m%d)
BACKUP_ROOT="/tmp/backup_before_upgrade_${CURRENT_DATE}"
echo ">>> [Start] Backup Process on $(hostname)"
echo ">>> Target Directory: ${BACKUP_ROOT}"
# --- 디렉터리 생성 ---
mkdir -pv "${BACKUP_ROOT}/etc/security" \
"${BACKUP_ROOT}/etc/sysconfig" \
"${BACKUP_ROOT}/etc/oracle" \
"${BACKUP_ROOT}/etc/init.d" \
"${BACKUP_ROOT}/etc/systemd/system" \
"${BACKUP_ROOT}/etc/udev/rules.d"
# --- 1. /etc 기본 파일 복사 ---
echo ">>> Backing up /etc root files..."
cp -p /etc/oracle.ahf.loc "${BACKUP_ROOT}/etc/" 2>/dev/null
cp -p /etc/oracle-release "${BACKUP_ROOT}/etc/" 2>/dev/null
cp -p /etc/oraInst.loc "${BACKUP_ROOT}/etc/" 2>/dev/null
cp -p /etc/oratab "${BACKUP_ROOT}/etc/" 2>/dev/null
cp -p /etc/sysctl.conf "${BACKUP_ROOT}/etc/"
cp -p /etc/passwd "${BACKUP_ROOT}/etc/"
cp -p /etc/group "${BACKUP_ROOT}/etc/"
# --- 2. 하위 설정 파일 복사 ---
echo ">>> Backing up Sub-directories..."
cp -p /etc/security/limits.conf "${BACKUP_ROOT}/etc/security/"
cp -p /etc/sysconfig/oracleasm "${BACKUP_ROOT}/etc/sysconfig/" 2>/dev/null
cp -rp /etc/oracle/* "${BACKUP_ROOT}/etc/oracle/" 2>/dev/null
# --- 3. init.d 및 서비스 파일 복사 ---
echo ">>> Backing up Init & Systemd files..."
cp -p /etc/init.d/init.ohasd "${BACKUP_ROOT}/etc/init.d/" 2>/dev/null
cp -p /etc/init.d/init.tfa "${BACKUP_ROOT}/etc/init.d/" 2>/dev/null
cp -p /etc/init.d/ohasd "${BACKUP_ROOT}/etc/init.d/" 2>/dev/null
cp -p /etc/init.d/oracleasm "${BACKUP_ROOT}/etc/init.d/" 2>/dev/null
cp -p /etc/init.d/oracle-database-server-12cR2-preinstall-firstboot "${BACKUP_ROOT}/etc/init.d/" 2>/dev/null
cp -p /etc/systemd/system/oracle-ohasd.service "${BACKUP_ROOT}/etc/systemd/system/" 2>/dev/null
cp -p /etc/systemd/system/oracle-tfa.service "${BACKUP_ROOT}/etc/systemd/system/" 2>/dev/null
cp -p /etc/systemd/system/oswbb.service "${BACKUP_ROOT}/etc/systemd/system/" 2>/dev/null
# --- 4. UDEV 규칙 및 디스크 정보 수집 ---
echo ">>> Backing up UDEV & Disk Info..."
cp -p /etc/udev/rules.d/99-oracle-asmdevices.rules "${BACKUP_ROOT}/etc/udev/rules.d/" 2>/dev/null
# ASM 디스크 매핑 정보
ls -l /dev/oracleasm/disks/ > "${BACKUP_ROOT}/etc/udev/udev_disk_mapping.txt"
# 디스크 권한 정보
ls -l /dev/sd* | grep asm >> "${BACKUP_ROOT}/etc/udev/disk_permission_dump.txt"
# SCSI ID 추출 (xargs 및 scsi_id 활용)
ls /dev/oracleasm/disks/* | xargs -n1 readlink -f | xargs -I{} bash -c 'echo "{} : $(/usr/lib/udev/scsi_id -g -u -d {})"' > "${BACKUP_ROOT}/etc/udev/disk_scsi_ids_${CURRENT_DATE}.txt"
echo ">>> [End] Backup Completed."
echo ">>> Verify with: ls -R ${BACKUP_ROOT}"
EOF
--> 쉘 프로그램 생성을 완료함
--쉘 프로그램에게 실행 권한 주기
[root@ol7ora12rf2][/root]$ chmod 775 backup_before_upgrade_$(date +%Y%m%d)_etc.sh
--/etc/ 디렉토리 이하 백업
[root@ol7ora12rf2][/root]$ /root/backup_before_upgrade_$(date +%Y%m%d)_etc.sh
>>> [Start] Backup Process on ol7ora12rf2
>>> Target Directory: /tmp/backup_before_upgrade_20260111
mkdir: created directory ‘/tmp/backup_before_upgrade_20260111’
mkdir: created directory ‘/tmp/backup_before_upgrade_20260111/etc’
mkdir: created directory ‘/tmp/backup_before_upgrade_20260111/etc/security’
mkdir: created directory ‘/tmp/backup_before_upgrade_20260111/etc/sysconfig’
mkdir: created directory ‘/tmp/backup_before_upgrade_20260111/etc/oracle’
mkdir: created directory ‘/tmp/backup_before_upgrade_20260111/etc/init.d’
mkdir: created directory ‘/tmp/backup_before_upgrade_20260111/etc/systemd’
mkdir: created directory ‘/tmp/backup_before_upgrade_20260111/etc/systemd/system’
mkdir: created directory ‘/tmp/backup_before_upgrade_20260111/etc/udev’
mkdir: created directory ‘/tmp/backup_before_upgrade_20260111/etc/udev/rules.d’
>>> Backing up /etc root files...
>>> Backing up Sub-directories...
>>> Backing up Init & Systemd files...
>>> Backing up UDEV & Disk Info...
>>> [End] Backup Completed.
>>> Verify with: ls -R /tmp/backup_before_upgrade_20260111
--> 2번 노드도 백업 완료
1-2. Grid 엔진 파일 백업
- 1번 노드 부터 시작
--1번 노드 (root os user)
[root@ol7ora12rf1][/root]$ echo $GRID_HOME
/u01/app/12c/grid
--grid 엔진 백업
[root@ol7ora12rf1][/root]$ tar -pczf /tmp/backup_before_upgrade_$(date +%Y%m%d)/grid_home.tar.gz $GRID_HOME
tar: Removing leading `/' from member names
tar: /u01/app/12c/grid/cdata/ol7ora12rf1.olr: file changed as we read it
- 2번 노드
--2번 노드 (root os user)
[root@ol7ora12rf2][/root]$ echo $GRID_HOME
/u01/app/12c/grid
--grid 엔진 백업
[root@ol7ora12rf2][/root]$ tar -pczf /tmp/backup_before_upgrade_$(date +%Y%m%d)/grid_home.tar.gz $GRID_HOME
tar: Removing leading `/' from member names
tar: /u01/app/12c/grid/cdata/ol7ora12rf2.olr: file changed as we read it
만약 다시 복구한다면
tar -pxvf /tmp/backup_before_upgrade_20260111/grid_home.tar.gz -C <복구할디렉토리위치>
--> 원래 경로에 푼다면 복구할디렉토리위치 위치를 "/" <-- 이걸로 주면됨
1-3. Oracle 엔진 파일 백업
- 1번 노드
--1번 노드 (root os user)
[root@ol7ora12rf1][/root]$ echo $DB_HOME
/u01/app/oracle/product/12c/db_1
--oracle 엔진 백업
[root@ol7ora12rf1][/root]$ tar -pczf /tmp/backup_before_upgrade_$(date +%Y%m%d)/db_home.tar.gz $DB_HOME
tar: Removing leading `/' from member names
- 2번 노드
--2번 노드 (root os user)
[root@ol7ora12rf2][/root]$ echo $DB_HOME
/u01/app/oracle/product/12c/db_1
--oracle 엔진 백업
[root@ol7ora12rf2][/root]$ tar -pczf /tmp/backup_before_upgrade_$(date +%Y%m%d)/db_home.tar.gz $DB_HOME
tar: Removing leading `/' from member names
1-4. OLR 백업
- 1번 노드
--1번 노드 (root os user)
[root@ol7ora12rf1][/root]$ echo $GRID_HOME
/u01/app/12c/grid
--OLR 백업 상황 확인
[root@ol7ora12rf1][/root]$ $GRID_HOME/bin/ocrconfig -local -showbackup
ol7ora12rf1 2026/01/10 23:14:30 /u01/app/12c/grid/cdata/ol7ora12rf1/autobackup_20260110_231430.olr 3975995681
ol7ora12rf1 2026/01/09 23:14:30 /u01/app/12c/grid/cdata/ol7ora12rf1/autobackup_20260109_231430.olr 3975995681
ol7ora12rf1 2025/10/03 20:22:36 /u01/app/12c/grid/cdata/ol7ora12rf1/backup_20251003_202236.olr 3975995681
ol7ora12rf1 2025/10/02 20:16:03 /u01/app/12c/grid/cdata/ol7ora12rf1/backup_20251002_201603.olr 0
--OLR 백업
[root@ol7ora12rf1][/root]$ $GRID_HOME/bin/ocrconfig -local -manualbackup
ol7ora12rf1 2026/01/11 11:45:18 /u01/app/12c/grid/cdata/ol7ora12rf1/backup_20260111_114518.olr 3975995681
--> 이게 새로 생긴 OLR 백업본 임
ol7ora12rf1 2025/10/03 20:22:36 /u01/app/12c/grid/cdata/ol7ora12rf1/backup_20251003_202236.olr 3975995681
ol7ora12rf1 2025/10/02 20:16:03 /u01/app/12c/grid/cdata/ol7ora12rf1/backup_20251002_201603.olr 0
--OLR 백업파일을 별도로 저장할 디렉토리 생성
[root@ol7ora12rf1][/root]$ mkdir -pv /tmp/backup_before_upgrade_$(date +%Y%m%d)/$GRID_HOME/cdata/`hostname`
mkdir: created directory ‘/tmp/backup_before_upgrade_20260111//u01/app/12c’
mkdir: created directory ‘/tmp/backup_before_upgrade_20260111//u01/app/12c/grid’
mkdir: created directory ‘/tmp/backup_before_upgrade_20260111//u01/app/12c/grid/cdata’
mkdir: created directory ‘/tmp/backup_before_upgrade_20260111//u01/app/12c/grid/cdata/ol7ora12rf1’
--OLR 파일 백업
[root@ol7ora12rf1][/root]$ cp -p /u01/app/12c/grid/cdata/ol7ora12rf1/backup_20260111_114518.olr /tmp/backup_before_upgrade_$(date +%Y%m%d)/$GRID_HOME/cdata/`hostname`
- 2번 노드
[root@ol7ora12rf2][/root]$ echo $GRID_HOME
/u01/app/12c/grid
--OLR 백업 상황 확인
[root@ol7ora12rf2][/root]$ $GRID_HOME/bin/ocrconfig -local -showbackup
ol7ora12rf2 2026/01/10 23:14:33 /u01/app/12c/grid/cdata/ol7ora12rf2/autobackup_20260110_231433.olr 3975995681
ol7ora12rf2 2026/01/09 23:14:33 /u01/app/12c/grid/cdata/ol7ora12rf2/autobackup_20260109_231433.olr 3975995681
ol7ora12rf2 2025/10/03 20:40:02 /u01/app/12c/grid/cdata/ol7ora12rf2/backup_20251003_204002.olr 3975995681
ol7ora12rf2 2025/10/02 20:24:47 /u01/app/12c/grid/cdata/ol7ora12rf2/backup_20251002_202447.olr 0
--OLR 백업
[root@ol7ora12rf2][/root]$ $GRID_HOME/bin/ocrconfig -local -manualbackup
ol7ora12rf2 2026/01/11 11:49:57 /u01/app/12c/grid/cdata/ol7ora12rf2/backup_20260111_114957.olr 3975995681
--> 이게 새로 생긴 OLR 백업본 임
ol7ora12rf2 2025/10/03 20:40:02 /u01/app/12c/grid/cdata/ol7ora12rf2/backup_20251003_204002.olr 3975995681
ol7ora12rf2 2025/10/02 20:24:47 /u01/app/12c/grid/cdata/ol7ora12rf2/backup_20251002_202447.olr 0
--OLR 백업파일을 별도로 저장할 디렉토리 생성
[root@ol7ora12rf2][/root]$ mkdir -pv /tmp/backup_before_upgrade_$(date +%Y%m%d)/$GRID_HOME/cdata/`hostname`
mkdir: created directory ‘/tmp/backup_before_upgrade_20260111//u01/app/12c’
mkdir: created directory ‘/tmp/backup_before_upgrade_20260111//u01/app/12c/grid’
mkdir: created directory ‘/tmp/backup_before_upgrade_20260111//u01/app/12c/grid/cdata’
mkdir: created directory ‘/tmp/backup_before_upgrade_20260111//u01/app/12c/grid/cdata/ol7ora12rf2’
--OLR 파일 백업
[root@ol7ora12rf2][/root]$ cp -p /u01/app/12c/grid/cdata/ol7ora12rf2/backup_20260111_114957.olr /tmp/backup_before_upgrade_$(date +%Y%m%d)/$GRID_HOME/cdata/`hostname`
1-5. OCR 백업
- OCR 백업은 한 노드에서만 수행
--1번 노드 (root os user)
[root@ol7ora12rf1][/root]$ echo $GRID_HOME
/u01/app/12c/grid
--OCR 백업 상황 확인
[root@ol7ora12rf1][/root]$ $GRID_HOME/bin/ocrconfig -showbackup
ol7ora12rf1 2026/01/11 11:15:44 +MGMT:/ol7ora12rf/OCRBACKUP/backup00.ocr.289.1222254943 3975995681
ol7ora12rf1 2026/01/11 07:15:41 +MGMT:/ol7ora12rf/OCRBACKUP/backup01.ocr.284.1222240539 3975995681
ol7ora12rf1 2026/01/11 03:15:39 +MGMT:/ol7ora12rf/OCRBACKUP/backup02.ocr.285.1222226137 3975995681
ol7ora12rf1 2026/01/10 03:15:24 +MGMT:/ol7ora12rf/OCRBACKUP/day.ocr.283.1222139725 3975995681
ol7ora12rf2 2025/12/30 02:24:47 +MGMT:/ol7ora12rf/OCRBACKUP/week.ocr.287.1221186287 3975995681
ol7ora12rf1 2025/10/03 20:39:55 +MGMT:/ol7ora12rf/OCRBACKUP/backup_20251003_203955.ocr.281.1213562395 3975995681
--OCR 백업
[root@ol7ora12rf1][/root]$ $GRID_HOME/bin/ocrconfig -manualbackup
ol7ora12rf1 2026/01/11 11:54:02 +MGMT:/ol7ora12rf/OCRBACKUP/backup_20260111_115402.ocr.282.1222257243 3975995681
ol7ora12rf1 2025/10/03 20:39:55 +MGMT:/ol7ora12rf/OCRBACKUP/backup_20251003_203955.ocr.281.1213562395 3975995681
--OCR 백업본을 별도로 저장할 디렉토리 생성 (grid os user)
[+ASM1:grid@ol7ora12rf1][/home/grid]$ mkdir -pv /tmp/backup_before_upgrade_$(date +%Y%m%d)/+MGMT/ol7ora12rf/OCRBACKUP
mkdir: created directory ‘/tmp/backup_before_upgrade_20260111/+MGMT’
mkdir: created directory ‘/tmp/backup_before_upgrade_20260111/+MGMT/ol7ora12rf’
mkdir: created directory ‘/tmp/backup_before_upgrade_20260111/+MGMT/ol7ora12rf/OCRBACKUP’
--OCR 백업본을 파일시스템으로 복사해둠
[+ASM1:grid@ol7ora12rf1][/home/grid]$ asmcmd cp +MGMT/ol7ora12rf/OCRBACKUP/backup_20260111_115402.ocr.282.1222257243 /tmp/backup_before_upgrade_20260111/+MGMT/ol7ora12rf/OCRBACKUP
copying +MGMT/ol7ora12rf/OCRBACKUP/backup_20260111_115402.ocr.282.1222257243 -> /tmp/backup_before_upgrade_20260111/+MGMT/ol7ora12rf/OCRBACKUP/backup_20260111_115402.ocr.282.1222257243
--백업 파일 확인
[+ASM1:grid@ol7ora12rf1][/home/grid]$ ls -l /tmp/backup_before_upgrade_20260111/+MGMT/ol7ora12rf/OCRBACKUP/
total 2328
-rw-r-----. 1 grid oinstall 2383872 Jan 11 11:58 backup_20260111_115402.ocr.282.1222257243
1-6. ASM Meta 백업
- ASM Meta 정보 백업은 한 노드에서만 수행
--1번 노드 (grid os user)
[+ASM1:grid@ol7ora12rf1][/home/grid]$ alias sa
alias sa='rlwrap sqlplus "/as sysasm"'
[+ASM1:grid@ol7ora12rf1][/home/grid]$ sa
SQL*Plus: Release 12.2.0.1.0 Production on Sun Jan 11 12:00:22 2026
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
[ol7ora12rf1]<SYS@+ASM1>$
SET LINESIZE 160
SET PAGESIZE 100
SET COLSEP '|'
COLUMN group_number FORMAT 999
COLUMN name FORMAT A15
COLUMN state FORMAT A15
COLUMN type FORMAT A10
COLUMN total_mb FORMAT 999,999,999
COLUMN free_mb FORMAT 999,999,999
-- Check ASM Disk Groups
SELECT
group_number
, name
, state
, type
, total_mb
, free_mb
FROM v$asm_diskgroup
ORDER BY
group_number;
GROUP_NUMBER|NAME |STATE |TYPE | TOTAL_MB| FREE_MB
------------|---------------|---------------|----------|------------|------------
1|CRS |MOUNTED |NORMAL | 6,144| 5,276
2|DATA1 |MOUNTED |EXTERN | 65,536| 34,856
3|FRA1 |MOUNTED |EXTERN | 65,536| 63,792
4|MGMT |MOUNTED |EXTERN | 40,960| 6,804
4 rows selected.
Elapsed: 00:00:00.04
--ASM Meta 정보 백업
[+ASM1:grid@ol7ora12rf1][/home/grid]$ asmcmd md_backup /tmp/backup_before_upgrade_$(date +%Y%m%d)/asm_md_backup_$(date +%Y%m%d).txt
Disk group metadata to be backed up: CRS
Disk group metadata to be backed up: DATA1
Disk group metadata to be backed up: FRA1
Disk group metadata to be backed up: MGMT
Current alias directory path: ol7ora12rf/ASMPARAMETERFILE
Current alias directory path: ASM
Current alias directory path: ol7ora12rf
Current alias directory path: ol7ora12rf/OCRFILE
Current alias directory path: ASM/PASSWORD
Current alias directory path: ORA12RF/PARAMETERFILE
Current alias directory path: ORA12RF/PASSWORD
Current alias directory path: ORA12RF/TEMPFILE
Current alias directory path: ORA12RF/DATAGUARDCONFIG
Current alias directory path: ORA12RF/ONLINELOG
Current alias directory path: ORA12RF/DATAFILE
Current alias directory path: ADG
Current alias directory path: ORA12RF/CONTROLFILE
Current alias directory path: ORA12RF
Current alias directory path: ORA12RF/ONLINELOG
Current alias directory path: ORA12RF/ARCHIVELOG
Current alias directory path: ORA12RF
Current alias directory path: ORA12RF/CONTROLFILE
Current alias directory path: ORA12RF/ARCHIVELOG/2026_01_11
Current alias directory path: ASM/PASSWORD
Current alias directory path: _mgmtdb/CONTROLFILE
Current alias directory path: _mgmtdb/4700AA69A9563E5FE05387E5E50AC8DA
Current alias directory path: _mgmtdb/TEMPFILE
Current alias directory path: _mgmtdb
Current alias directory path: _mgmtdb/DATAFILE
Current alias directory path: ol7ora12rf
Current alias directory path: _mgmtdb/402C50CCB4841B3CE0630BF0A8C024FD
Current alias directory path: _mgmtdb/ONLINELOG
Current alias directory path: _mgmtdb/PARAMETERFILE
Current alias directory path: ASM
Current alias directory path: _mgmtdb/402C472116BF1D2FE0630BF0A8C05203/TEMPFILE
Current alias directory path: _mgmtdb/402C50CCB4841B3CE0630BF0A8C024FD/TEMPFILE
Current alias directory path: _mgmtdb/402C472116BF1D2FE0630BF0A8C05203
Current alias directory path: ol7ora12rf/OCRBACKUP
Current alias directory path: _mgmtdb/402C50CCB4841B3CE0630BF0A8C024FD/DATAFILE
Current alias directory path: _mgmtdb/4700AA69A9563E5FE05387E5E50AC8DA/DATAFILE
1-7. DB 풀 백업
- 1번 노드에서 작업 (oracle os user)
--1번 노드 (oracle os user)
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ mkdir -pv /home/oracle/BACKUP_BEFORE_UPGRADE/autobackup
mkdir: created directory ‘/home/oracle/BACKUP_BEFORE_UPGRADE’
mkdir: created directory ‘/home/oracle/BACKUP_BEFORE_UPGRADE/autobackup’
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ alias ss
alias ss='rlwrap sqlplus "/as sysdba"'
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ ss
SQL*Plus: Release 12.2.0.1.0 Production on Fri Jan 9 23:35:26 2026
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
--컨트롤 파일 백업
[ol7ora12rf1]<SYS@ORA12RF1>$ alter database backup controlfile to trace as '/home/oracle/BACKUP_BEFORE_UPGRADE/controlfile_script_bak.sql';
Database altered.
Elapsed: 00:00:00.03
[ol7ora12rf1]<SYS@ORA12RF1>$ quit
Disconnected from Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ alias rt
alias rt='rman target /'
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ rt
Recovery Manager: Release 12.2.0.1.0 - Production on Fri Jan 9 23:36:38 2026
Copyright (c) 1982, 2017, Oracle and/or its affiliates. All rights reserved.
connected to target database: ORA12RF (DBID=4288610047)
RMAN>
run {
CONFIGURE RETENTION POLICY TO REDUNDANCY 1;
CONFIGURE BACKUP OPTIMIZATION OFF;
CONFIGURE DEFAULT DEVICE TYPE TO DISK;
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/home/oracle/BACKUP_BEFORE_UPGRADE/autobackup/%F';
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/home/oracle/BACKUP_BEFORE_UPGRADE/snapcf_CA.f';
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET;
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1;
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1;
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE;
CONFIGURE RMAN OUTPUT TO KEEP FOR 7 DAYS;
CONFIGURE MAXSETSIZE TO UNLIMITED;
CONFIGURE ENCRYPTION FOR DATABASE OFF;
CONFIGURE ENCRYPTION ALGORITHM 'AES128';
CONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE;
#CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON ALL STANDBY; #For ADG
}
--풀 백업
run {
ALLOCATE CHANNEL c1 DEVICE TYPE DISK;
ALLOCATE CHANNEL c2 DEVICE TYPE DISK;
ALLOCATE CHANNEL c3 DEVICE TYPE DISK;
ALLOCATE CHANNEL c4 DEVICE TYPE DISK;
sql 'alter system checkpoint';
sql 'alter system archive log current';
crosscheck backupset;
crosscheck backup;
crosscheck copy;
crosscheck archivelog all;
BACKUP INCREMENTAL LEVEL 0 AS COMPRESSED BACKUPSET FORMAT '/home/oracle/BACKUP_BEFORE_UPGRADE/%d_L0_%T_%U.bkp' DATABASE;
delete noprompt obsolete;
delete noprompt expired backup;
sql 'alter system archive log current';
BACKUP AS COMPRESSED BACKUPSET FORMAT '/home/oracle/BACKUP_BEFORE_UPGRADE/arch_%d_%T_%U.bkp' ARCHIVELOG ALL delete input;
delete backup of archivelog all completed before 'SYSDATE-14';
RELEASE CHANNEL c1;
RELEASE CHANNEL c2;
RELEASE CHANNEL c3;
RELEASE CHANNEL c4;
}
RMAN> quit
Recovery Manager complete.
--백업 파일 확인
--DB 풀 백업 확인
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle/BACKUP_BEFORE_UPGRADE]$ ls -lRh /home/oracle/BACKUP_BEFORE_UPGRADE/
/home/oracle/BACKUP_BEFORE_UPGRADE/:
total 1.4G
-rw-r-----. 1 oracle asmadmin 49K Jan 9 23:42 arch_ORA12RF_20260109_9r4dgbac_1_1.bkp
-rw-r-----. 1 oracle asmadmin 44K Jan 9 23:42 arch_ORA12RF_20260109_9s4dgbac_1_1.bkp
-rw-r-----. 1 oracle asmadmin 6.5K Jan 9 23:42 arch_ORA12RF_20260109_9t4dgbac_1_1.bkp
-rw-r-----. 1 oracle asmadmin 5.0K Jan 9 23:42 arch_ORA12RF_20260109_9u4dgbac_1_1.bkp
drwxr-xr-x. 2 oracle oinstall 70 Jan 9 23:42 autobackup
-rw-r--r--. 1 oracle asmadmin 13K Jan 9 23:35 controlfile_script_bak.sql
-rw-r-----. 1 oracle asmadmin 1.8M Jan 9 23:40 ORA12RF_L0_20260109_9n4dgb85_1_1.bkp
-rw-r-----. 1 oracle asmadmin 1.1G Jan 9 23:41 ORA12RF_L0_20260109_9o4dgb85_1_1.bkp
-rw-r-----. 1 oracle asmadmin 221M Jan 9 23:41 ORA12RF_L0_20260109_9p4dgb85_1_1.bkp
-rw-r-----. 1 oracle asmadmin 20M Jan 9 23:42 snapcf_CA.f
/home/oracle/BACKUP_BEFORE_UPGRADE/autobackup:
total 40M
-rw-r-----. 1 oracle asmadmin 20M Jan 9 23:41 c-4288610047-20260109-00
-rw-r-----. 1 oracle asmadmin 20M Jan 9 23:42 c-4288610047-20260109-01
1-8. Flashback Database 설정 및 Restore Point 생성 (noncdb to cdb에서는 필수는 아님)
--1번 노드 (oracle os user)
--아카이브 로그 모드 인지 확인
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ alias ss
alias ss='rlwrap sqlplus "/as sysdba"'
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ ss
SQL*Plus: Release 12.2.0.1.0 Production on Sun Jan 11 12:19:39 2026
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
[ol7ora12rf1]<SYS@ORA12RF1>$ archive log list
Database log mode Archive Mode
Automatic archival Enabled
Archive destination +FRA1
Oldest online log sequence 226
Next log sequence to archive 228
Current log sequence 228
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ alias ss
alias ss='rlwrap sqlplus "/as sysdba"'
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ ss
SQL*Plus: Release 12.2.0.1.0 Production on Sun Jan 11 12:13:43 2026
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
[ol7ora12rf1]<SYS@ORA12RF1>$
col dbid for 99999999999
col name for a20
col FLASHBACK_ON for a30
select dbid, NAME, FLASHBACK_ON from v$database;
DBID NAME FLASHBACK_ON
------------ -------------------- ------------------------------
4288610047 ORA12RF NO
--> 플래시백 데이터베이스 상태가 아님
1 row selected.
Elapsed: 00:00:00.01
[ol7ora12rf1]<SYS@ORA12RF1>$ show parameter recovery
NAME TYPE VALUE
------------------------------------ --------------------------------- ------------------------------
db_recovery_file_dest string (NULL)
db_recovery_file_dest_size big integer 0
recovery_parallelism integer 0
remote_recovery_file_dest string (NULL)
--플래시백 데이터베이스 설정을 위한 파라미터 설정
[ol7ora12rf1]<SYS@ORA12RF1>$ alter system set db_recovery_file_dest='+FRA1' scope=spfile sid='*';
System altered.
Elapsed: 00:00:00.02
[ol7ora12rf1]<SYS@ORA12RF1>$ alter system set db_recovery_file_dest_size=32G scope=both sid='*';
System altered.
Elapsed: 00:00:00.01
[ol7ora12rf1]<SYS@ORA12RF1>$ show parameter flashback
NAME TYPE VALUE
------------------------------------ --------------------------------- ------------------------------
db_flashback_retention_target integer 1440
[ol7ora12rf1]<SYS@ORA12RF1>$ alter system set db_flashback_retention_target=2880 scope=both sid='*';
System altered.
Elapsed: 00:00:00.01
[ol7ora12rf1]<SYS@ORA12RF1>$ quit
Disconnected from Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
--디비 내리기 (전체 노드 내리기)
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ srvctl stop database -db ora12rf
--디비를 마운트 모드로 기동
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ srvctl start database -db ora12rf -startoption mount
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ alias ss
alias ss='rlwrap sqlplus "/as sysdba"'
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ ss
SQL*Plus: Release 12.2.0.1.0 Production on Sun Jan 11 12:16:09 2026
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
--플래시백 데이터베이스 활성화
[ol7ora12rf1]<SYS@ORA12RF1>$ alter database flashback on;
Database altered.
Elapsed: 00:00:06.31
[ol7ora12rf1]<SYS@ORA12RF1>$ quit
Disconnected from Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
--전체 노드 내린 후
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ srvctl stop database -d ora12rf -o immediate
--전체 노드 올리기
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ srvctl start database -d ora12rf
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ alias ss
alias ss='rlwrap sqlplus "/as sysdba"'
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ ss
SQL*Plus: Release 12.2.0.1.0 Production on Sun Jan 11 12:17:28 2026
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
[ol7ora12rf1]<SYS@ORA12RF1>$
col dbid for 99999999999
col name for a20
col FLASHBACK_ON for a30
select dbid, NAME, FLASHBACK_ON from v$database;
DBID NAME FLASHBACK_ON
------------ -------------------- ------------------------------
4288610047 ORA12RF YES
--> 플래시백 데이터베이스 적용 확인
1 row selected.
Elapsed: 00:00:00.02
--플래시백 데이터베이스 복구 지점 생성
[ol7ora12rf1]<SYS@ORA12RF1>$ CREATE RESTORE POINT BEFORE_UPGRADE GUARANTEE FLASHBACK DATABASE;
[ol7ora12rf1]<SYS@ORA12RF1>$
SET LINESIZE 200
COL NAME FORMAT A20
COL TIME FORMAT A35
COL GUARANTEE_FLASHBACK_DATABASE FORMAT A3
COL SCN FORMAT 999999999999999
SELECT NAME
, TIME
, GUARANTEE_FLASHBACK_DATABASE AS GFD
, SCN
FROM V$RESTORE_POINT;
NAME TIME GFD SCN
-------------------- ----------------------------------- --------- ----------------
BEFORE_UPGRADE 26/01/17 17:07:23.000000000 YES 24967412
1 row selected.
Elapsed: 00:00:00.01
1-9. 파라미터 파일 백업
목차로 돌아가기
--파라미터 파일도 백업함
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ alias ss
alias ss='rlwrap sqlplus "/as sysdba"'
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ ss
SQL*Plus: Release 12.2.0.1.0 Production on Fri Jan 9 23:55:41 2026
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
--파라미터 파일 백업
[ol7ora12rf1]<SYS@ORA12RF1>$ create pfile='/home/oracle/BACKUP_BEFORE_UPGRADE/pfile_before_upgrade.ora' from spfile;
File created.
Elapsed: 00:00:00.01
[ol7ora12rf1]<SYS@ORA12RF1>$ quit
1-10. BCT 비활성화
--1번 노드 (oracle os user)
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ alias ss
alias ss='rlwrap sqlplus "/as sysdba"'
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ ss
SQL*Plus: Release 12.2.0.1.0 Production on Sun Jan 11 12:21:16 2026
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
[ol7ora12rf1]<SYS@ORA12RF1>$
col status for a10
col filename for a50
select status, filename from v$block_change_tracking;
STATUS FILENAME
---------- --------------------------------------------------
DISABLED (NULL)
1 row selected.
Elapsed: 00:00:00.01
- 만약 활성화 되어 있다면 아래의 명령으로 비활성화 시킴
alter database disable block change tracking;
1-11. Oracle Grid/Oracle 19.29 골드 이미지 업로드
- 골드 이미지 업로드는 1번 노드에서만 진행하면됨
--골드이미지 저장 디렉토리 생성
[+ASM1:grid@ol7ora12rf1][/home/grid]$ mkdir -pv /tmp/gold_image_19.29
mkdir: created directory ‘/tmp/gold_image_19.29’
[+ASM1:grid@ol7ora12rf1][/home/grid]$ cd /tmp/gold_image_19.29
[+ASM1:grid@ol7ora12rf1][/tmp/gold_image_19.29]$ ls -l /tmp/gold_image_19.29
--> 해당 위치에 19.29 grid/oracle 파일 업로드
--업로드한 파일 확인
[+ASM1:grid@ol7ora12rf1][/home/grid]$ ls -l /tmp/gold_image_19.29
total 10655132
-rw-r--r--. 1 grid oinstall 4816073482 Dec 24 22:12 db1929000.zip
-rw-r--r--. 1 grid oinstall 6094777458 Dec 24 21:37 grid1929000.zip
2. Grid 업그레이드
2-1. 필수 패치 존재 확인
Patches to apply before upgrading Oracle GI and DB to 19c or downgrading to previous release (Doc ID 2539751.1)
[+ASM1:grid@ol7ora12rf1][/home/grid]$ opatch lsinventory | grep 28553832
28553832, 28558622, 28562244, 28567875, 28578962, 28588574, 28593407
--> 28553832 패치가 존재함
2-2. 19c Grid 엔진 파일 설치
- 1번 노드에 19c 그리드 설치 디렉토리 생성
--1번 노드 (root os user)
[root@ol7ora12rf1][/root]$ mkdir -pv /u01/app/19.29/grid
mkdir: created directory ‘/u01/app/19.29’
mkdir: created directory ‘/u01/app/19.29/grid’
[root@ol7ora12rf1][/root]$ chown grid:oinstall /u01/app/19.29/grid
[root@ol7ora12rf1][/root]$ chmod 775 /u01/app/19.29/grid
- 2번 노드에 19c 그리드 설치 디렉토리 생성
---
--2번 노드 (root os user)
[root@ol7ora12rf2][/root]$ mkdir -pv /u01/app/19.29/grid
mkdir: created directory ‘/u01/app/19.29’
mkdir: created directory ‘/u01/app/19.29/grid’
[root@ol7ora12rf2][/root]$ chown grid:oinstall /u01/app/19.29/grid
[root@ol7ora12rf2][/root]$ chmod 775 /u01/app/19.29/grid
- 1번 노드에 압축 해제
--1번 노드 (grid os user)
[+ASM1:grid@ol7ora12rf1][/home/grid]$ unzip -q /tmp/gold_image_19.29/grid1929000.zip -d /u01/app/19.29/grid
2-3. runcluvfy.sh 수행
--1번 노드 (grid os user)
[+ASM1:grid@ol7ora12rf1][/home/grid]$ /u01/app/19.29/grid/runcluvfy.sh \
stage \
-pre crsinst \
-upgrade -rolling -src_crshome /u01/app/12c/grid \
-dest_crshome /u01/app/19.29/grid \
-dest_version 19.29.0.0.0 \
-fixup -verbose
...
Pre-check for cluster services setup was successful.
RPM Package Manager database ...INFORMATION
PRVG-11250 : The check "RPM Package Manager database" was not performed because
it needs 'root' user privileges.
Refer to My Oracle Support notes "2548970.1" for more details regarding errors
PRVG-11250".
CVU operation performed: stage -pre crsinst
Date: Jan 11, 2026 2:23:19 PM
CVU version: Standalone 19.29.0.0.0 (092925x8664)
Clusterware version: 12.2.0.1.0
CVU home: /u01/app/19.29/grid
Grid home: /u01/app/12c/grid
User: grid
Operating system: Linux5.4.17-2102.201.3.el7uek.x86_64
2-4. 패스워드가 필요없는 ssh 접속 환경 확인
/u01/app/12c/grid/oui/prov/resources/scripts/sshUserSetup.sh -user oracle -hosts "ol7ora12rf1 ol7ora12rf2" -noPromptPassphrase -advanced
/u01/app/12c/grid/oui/prov/resources/scripts/sshUserSetup.sh -user grid -hosts "ol7ora12rf1 ol7ora12rf2" -noPromptPassphrase -advanced
2-5. 업그레이드 작업
[+ASM1:grid@ol7ora12rf1][/home/grid]$ crsctl stat res ora.chad -t
--------------------------------------------------------------------------------
Name Target State Server State details
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.chad
ONLINE OFFLINE ol7ora12rf1 STABLE
ONLINE OFFLINE ol7ora12rf2 STABLE
--------------------------------------------------------------------------------
[+ASM1:grid@ol7ora12rf1][/home/grid]$ crsctl stat res ora.mgmtdb -t
--------------------------------------------------------------------------------
Name Target State Server State details
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.mgmtdb
1 ONLINE OFFLINE STABLE
--------------------------------------------------------------------------------
[+ASM1:grid@ol7ora12rf1][/home/grid]$ crsctl stat res ora.MGMTLSNR -t
--------------------------------------------------------------------------------
Name Target State Server State details
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.MGMTLSNR
1 OFFLINE OFFLINE STABLE
--------------------------------------------------------------------------------
- mgmt, mgmtlsnr, cha 를 올림
--1번 노드 (grid os user)
--mgmt, mgmtlsnr, cha 를 올림
--이걸 올려야 grid 업그레이드 시 실패 안함
[+ASM1:grid@ol7ora12rf1][/home/grid]$ srvctl enable mgmtdb -node ol7ora12rf1
[+ASM1:grid@ol7ora12rf1][/home/grid]$ srvctl enable mgmtlsnr -node ol7ora12rf1
[+ASM1:grid@ol7ora12rf1][/home/grid]$ srvctl start mgmtdb -node ol7ora12rf1 -startoption OPEN
[+ASM1:grid@ol7ora12rf1][/home/grid]$ srvctl stop cha
[+ASM1:grid@ol7ora12rf1][/home/grid]$ srvctl start cha
[+ASM1:grid@ol7ora12rf1][/home/grid]$ crsctl stat res ora.mgmtdb -t
--------------------------------------------------------------------------------
Name Target State Server State details
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.mgmtdb
1 ONLINE ONLINE ol7ora12rf1 Open,STABLE
--------------------------------------------------------------------------------
[+ASM1:grid@ol7ora12rf1][/home/grid]$ crsctl stat res ora.MGMTLSNR -t
--------------------------------------------------------------------------------
Name Target State Server State details
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.MGMTLSNR
1 ONLINE ONLINE ol7ora12rf1 169.254.81.83 10.0.1
.11,STABLE
--------------------------------------------------------------------------------
[+ASM1:grid@ol7ora12rf1][/home/grid]$ crsctl stat res ora.chad -t
--------------------------------------------------------------------------------
Name Target State Server State details
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.chad
ONLINE ONLINE ol7ora12rf1 STABLE
ONLINE ONLINE ol7ora12rf2 STABLE
--------------------------------------------------------------------------------
- 응답 파일 생성
[+ASM1:grid@ol7ora12rf1][/home/grid]$ cat > /home/grid/grid_19.29.rsp << 'EOF'
oracle.install.responseFileVersion=/oracle/install/rspfmt_crsinstall_response_schema_v19.0.0
INVENTORY_LOCATION=/u01/app/oraInventory
oracle.install.option=UPGRADE
ORACLE_BASE=/u01/app/oracle
oracle.install.crs.config.scanType=LOCAL_SCAN
oracle.install.crs.config.ClusterConfiguration=STANDALONE
oracle.install.crs.config.configureAsExtendedCluster=false
oracle.install.crs.config.clusterName=ol7ora12rf
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.config.clusterNodes=ol7ora12rf1:,ol7ora12rf2:
oracle.install.crs.configureGIMR=true
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=MGMT
oracle.install.asm.diskGroup.AUSize=0
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
oracle.install.crs.config.batchinfo=ol7ora12rf1:1,ol7ora12rf2:1
EOF
--생성한 파일 확인
[+ASM1:grid@ol7ora12rf1][/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=UPGRADE
ORACLE_BASE=/u01/app/oracle
oracle.install.crs.config.scanType=LOCAL_SCAN
oracle.install.crs.config.ClusterConfiguration=STANDALONE
oracle.install.crs.config.configureAsExtendedCluster=false
oracle.install.crs.config.clusterName=ol7ora12rf
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.config.clusterNodes=ol7ora12rf1:,ol7ora12rf2:
oracle.install.crs.configureGIMR=true
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=MGMT
oracle.install.asm.diskGroup.AUSize=0
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
oracle.install.crs.config.batchinfo=ol7ora12rf1:1,ol7ora12rf2:1
- dryRunForUpgrade 수행
[+ASM1:grid@ol7ora12rf1][/home/grid]$ /u01/app/19.29/grid/gridSetup.sh \
-silent \
-ignorePrereqFailure \
-dryRunForUpgrade \
-responseFile /home/grid/grid_19.29.rsp
--> dryRunForUpgrade 실행
--> 이걸 수행하면 그리드 엔진 설치 파일이 2번 노드에 복사됨
Launching Oracle Grid Infrastructure Setup Wizard...
Enter password for 'root' user:
--> root 패스워드 입력
- 아래의 파일들이 grod:oinstall 권한인지 확인
--1번 노드 (grid os user)
[+ASM1:grid@ol7ora12rf1][/home/grid]$ ls -l /u01/app/oracle/crsdata/@global/crsconfig/index.xml
-rwxrwxr-x. 1 grid oinstall 521 Jan 11 14:49 /u01/app/oracle/crsdata/@global/crsconfig/index.xml
--2번 노드 (grid os user)
[+ASM2:grid@ol7ora12rf2][/home/grid]$ ls -l /u01/app/oracle/crsdata/@global/crsconfig/index.xml
-rwxrwxr-x. 1 grid oinstall 521 Jan 11 14:49 /u01/app/oracle/crsdata/@global/crsconfig/index.xml
--1번 노드 (grid os user)
[+ASM1:grid@ol7ora12rf1][/home/grid]$ ls -l /u01/app/19.29/grid/crs/config/rootconfig.sh
-rwxr-xr-x. 1 grid oinstall 6255 Jan 11 15:01 /u01/app/19.29/grid/crs/config/rootconfig.sh
--2번 노드 (grid os user)
[+ASM2:grid@ol7ora12rf2][/home/grid]$ ls -l /u01/app/19.29/grid/crs/config/rootconfig.sh
-rwxr-xr-x. 1 grid oinstall 6255 Jan 11 15:01 /u01/app/19.29/grid/crs/config/rootconfig.sh
- 실제 업그레이드 전 환경 변수 비활성화
-- 환경변수 확인
[+ASM1:grid@ol7ora12rf1][/home/grid]$ env | egrep -i 'oracle|grid'
ORACLE_USER_ORACLE_SID=ORA12RF1
BASE_PATH=/usr/sbin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/grid/.local/bin:/home/grid/bin
ORACLE_UNQNAME=+ASM
ORACLE_USER_ORACLE_SID_LOWEWR=ora12rf1
DB_HOME=/u01/app/oracle/product/12c/db_1
USER=grid
LD_LIBRARY_PATH=/u01/app/12c/grid/lib:/lib:/usr/lib
ORACLE_SID=+ASM1
ORACLE_BASE=/u01/app/oracle
ORACLE_HOSTNAME=ol7ora12rf1
MAIL=/var/spool/mail/grid
PATH=/u01/app/12c/grid/bin:/u01/app/12c/grid/OPatch:/u01/app/12c/grid/bin:/usr/sbin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/grid/.local/bin:/home/grid/bin
PWD=/home/grid
ORACLE_TERM=xterm
PS1=[$ORACLE_SID:\u@\h][$PWD]$
HOME=/home/grid
GRID_HOME=/u01/app/12c/grid
LOGNAME=grid
CLASSPATH=/u01/app/12c/grid/JRE:/u01/app/12c/grid/jlib:/u01/app/12c/grid/rdbms/jlib
ORACLE_SID_LOWER=+asm1
ORACLE_HOME=/u01/app/12c/grid
ORACLE_UNQNAME_LOWER=+asm
[+ASM1:grid@ol7ora12rf1][/home/grid]$ unset ORACLE_SID
[:grid@ol7ora12rf1][/home/grid]$ unset ORACLE_BASE
[:grid@ol7ora12rf1][/home/grid]$ unset GRID_HOME
[:grid@ol7ora12rf1][/home/grid]$ unset ORACLE_HOME
[:grid@ol7ora12rf1][/home/grid]$ unset DB_HOME
[:grid@ol7ora12rf1][/home/grid]$ unset CLASSPATH
--> 위의 환경 변수들을 모두 unset 시킴
- 업그레이드 시작
--1번 노드와 2번 노드가 번걸아 가면서 Shutdown 되면서 업그레이드가 수행됨
[:grid@ol7ora12rf1][/home/grid]$ /u01/app/19.29/grid/gridSetup.sh -silent -ignorePrereqFailure -responseFile /home/grid/grid_19.29.rsp
Launching Oracle Grid Infrastructure Setup Wizard...
Enter password for 'root' user:
--> root 패스워드 입력
--1번 노드에서 업그레이드 로그 확인
[+ASM1:grid@ol7ora12rf1][/home/grid]$ cd /u01/app/19.29/grid/install
[+ASM1:grid@ol7ora12rf1][/u01/app/19.29/grid/install]$ tail -f root_ol7ora12rf1_2026-01-11_15-10-15-333598111.log
--2번 노드에서 업그레이드 로그 확인
[+ASM2:grid@ol7ora12rf2][/home/grid]$ cd /u01/app/19.29/grid/install
[+ASM2:grid@ol7ora12rf2][/u01/app/19.29/grid/install]$ tail -f root_ol7ora12rf2_2026-01-11_15-17-40-225601803.log
--버전 확인 및 업그레이드 상태확인
[+ASM1:grid@ol7ora12rf1][/home/grid]$ /u01/app/19.29/grid/bin/crsctl query crs activeversion -f
Oracle Clusterware active version on the cluster is [19.0.0.0.0]. The cluster upgrade state is [UPGRADE FINAL]. The cluster active patch level is [517676180].
--> 아직 -executeConfigTools 을 수행 시키지 않아서 업그레이드 상태가 UPGRADE_FINAL 임
[+ASM2:grid@ol7ora12rf2][/home/grid]$ /u01/app/19.29/grid/bin/crsctl query crs activeversion -f
Oracle Clusterware active version on the cluster is [19.0.0.0.0]. The cluster upgrade state is [UPGRADE FINAL]. The cluster active patch level is [517676180].
--> 아직 -executeConfigTools 을 수행 시키지 않아서 업그레이드 상태가 UPGRADE_FINAL 임
[+ASM1:grid@ol7ora12rf1][/home/grid]$ unset ORACLE_SID
[:grid@ol7ora12rf1][/home/grid]$ unset ORACLE_BASE
[:grid@ol7ora12rf1][/home/grid]$ unset GRID_HOME
[:grid@ol7ora12rf1][/home/grid]$ unset ORACLE_HOME
[:grid@ol7ora12rf1][/home/grid]$ unset DB_HOME
[:grid@ol7ora12rf1][/home/grid]$ unset CLASSPATH
--업그레이드 마무리 작업
[:grid@ol7ora12rf1][/home/grid]$ /u01/app/19.29/grid/gridSetup.sh -executeConfigTools -responseFile /home/grid/grid_19.29.rsp -silent
Launching Oracle Grid Infrastructure Setup Wizard...
You can find the logs of this session at:
/u01/app/oraInventory/logs/GridSetupActions2026-01-11_03-32-01PM
You can find the log of this install session at:
/u01/app/oraInventory/logs/UpdateNodeList2026-01-11_03-32-01PM.log
You can find the log of this install session at:
/u01/app/oraInventory/logs/UpdateNodeList2026-01-11_03-32-01PM.log
Configuration failed.
[WARNING] [INS-43080] Some of the configuration assistants failed, were cancelled or skipped.
ACTION: Refer to the logs or contact Oracle Support Services.
--어떤 Failed인지 확인
[:grid@ol7ora12rf1][/home/grid]$ grep -i failed /u01/app/oraInventory/logs/GridSetupActions2026-01-11_03-32-01PM/gridSetupActions2026-01-11_03-32-01PM.log
INFO: [Jan 11, 2026 3:32:08 PM] Only execute the failed and pending config tools.
INFO: [Jan 11, 2026 3:50:01 PM] Single Client Access Name (SCAN) ...FAILED (PRVF-5056)
INFO: [Jan 11, 2026 3:50:01 PM] Skipping line: Single Client Access Name (SCAN) ...FAILED (PRVF-5056)
INFO: [Jan 11, 2026 3:50:13 PM] Single Client Access Name (SCAN) ...FAILED
INFO: [Jan 11, 2026 3:50:13 PM] Skipping line: Single Client Access Name (SCAN) ...FAILED
INFO: [Jan 11, 2026 3:50:14 PM] Oracle Cluster Verification Utility failed.
INFO: [Jan 11, 2026 3:50:14 PM] Oracle Cluster Verification Utility failed.
WARNING: [Jan 11, 2026 3:50:14 PM] [WARNING] [INS-43080] Some of the configuration assistants failed, were cancelled or skipped.
--> 스캔 관련 dns 에러이므로 무시함
[+ASM1:grid@ol7ora12rf1][/home/grid]$ /u01/app/19.29/grid/bin/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@ol7ora12rf2][/home/grid]$ /u01/app/19.29/grid/bin/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 임을 확인
2-6. 업그레이드 후 후속 작업
--1번 노드 (grid os user)
[+ASM1:grid@ol7ora12rf1][/home/grid]$ /u01/app/19.29/grid/bin/crsctl query crs softwarepatch
Oracle Clusterware patch level on node ol7ora12rf1 is [517676180].
[+ASM1:grid@ol7ora12rf1][/home/grid]$ /u01/app/19.29/grid/bin/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].
--2번 노드 (grid os user)
[+ASM2:grid@ol7ora12rf2][/home/grid]$ /u01/app/19.29/grid/bin/crsctl query crs softwarepatch
Oracle Clusterware patch level on node ol7ora12rf2 is [517676180].
[+ASM2:grid@ol7ora12rf2][/home/grid]$ /u01/app/19.29/grid/bin/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].
--init.ohasd 파일 내 ORA_CRS_HOME이 변경됐는지 확인
--1번 노드 (root os user)
[root@ol7ora12rf1][/root]$ grep 19.29 /etc/init.d/init.ohasd
ORA_CRS_HOME=/u01/app/19.29/grid
[root@ol7ora12rf1][/root]$ grep 19.29 /etc/init.d/ohasd
ORA_CRS_HOME=/u01/app/19.29/grid
--2번 노드 (root os user)
[root@ol7ora12rf2][/root]$ grep 19.29 /etc/init.d/init.ohasd
ORA_CRS_HOME=/u01/app/19.29/grid
[root@ol7ora12rf2][/root]$ grep 19.29 /etc/init.d/ohasd
ORA_CRS_HOME=/u01/app/19.29/grid
[+ASM1:grid@ol7ora12rf1][/home/grid]$ crsctl stat res ora.MGMTLSNR -t
--------------------------------------------------------------------------------
Name Target State Server State details
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.MGMTLSNR
1 ONLINE ONLINE ol7ora12rf1 169.254.18.26 10.0.1
.11,STABLE
--------------------------------------------------------------------------------
[+ASM1:grid@ol7ora12rf1][/home/grid]$ crsctl stat res ora.mgmtdb -t
--------------------------------------------------------------------------------
Name Target State Server State details
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.mgmtdb
1 ONLINE ONLINE ol7ora12rf1 Open,STABLE
--------------------------------------------------------------------------------
[+ASM1:grid@ol7ora12rf1][/home/grid]$ crsctl stat res ora.chad -t
--------------------------------------------------------------------------------
Name Target State Server State details
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.chad
ONLINE ONLINE ol7ora12rf1 STABLE
ONLINE ONLINE ol7ora12rf2 STABLE
--------------------------------------------------------------------------------
--MGMTDB가 datapatch가 제대로 됐는지 확인
[+ASM1:grid@ol7ora12rf1][/home/grid]$ export ORACLE_HOME=/u01/app/19.29/grid
[+ASM1:grid@ol7ora12rf1][/home/grid]$ export ORACLE_SID=-MGMTDB
[-MGMTDB:grid@ol7ora12rf1][/home/grid]$ echo $ORACLE_SID
-MGMTDB
[-MGMTDB:grid@ol7ora12rf1][/home/grid]$ sqlplus / as sysdba
SQL*Plus: Release 12.2.0.1.0 Production on Sun Jan 11 16:03:15 2026
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
SQL> show pdbs;
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 GIMR_DSCREP_10 READ WRITE NO
SQL>
SET LINESIZE 200
SET PAGESIZE 100
COL ACTION_TIME FORMAT A20
COL PATCH_ID FORMAT 99999999
COL ACTION FORMAT A10
COL STATUS FORMAT A10
COL DESCRIPTION FORMAT A60
COL PDB_NAME FORMAT A15
SELECT
TO_CHAR(ACTION_TIME, 'YYYY-MM-DD HH24:MI:SS') AS ACTION_TIME,
CON_ID,
PATCH_ID,
ACTION,
STATUS,
DESCRIPTION
FROM CDB_REGISTRY_SQLPATCH
ORDER BY ACTION_TIME;
ACTION_TIME CON_ID PATCH_ID ACTION STATUS DESCRIPTION
-------------------- ---------- --------- ---------- ---------- ------------------------------------------------------------
2026-01-11 15:38:58 1 38291812 APPLY SUCCESS Database Release Update : 19.29.0.0.251021 (38291812)
2026-01-11 15:45:59 3 38291812 APPLY SUCCESS Database Release Update : 19.29.0.0.251021 (38291812)
--> datapatch 완료됨
-- .bash_profile 수정
--1번 노드
--root os user
[root@ol7ora12rf1][/root]$ vi ~root/.bash_profile
[root@ol7ora12rf1][/root]$ cat ~root/.bash_profile | grep 19.29
export GRID_HOME=/u01/app/19.29/grid
[root@ol7ora12rf1][/root]$ source ~root/.bash_profile
--grid os user
[+ASM1:grid@ol7ora12rf1][/home/grid]$ vi ~grid/.bash_profile
[+ASM1:grid@ol7ora12rf1][/home/grid]$ cat ~grid/.bash_profile | grep 19.29
export GRID_HOME=/u01/app/19.29/grid
[+ASM1:grid@ol7ora12rf1][/home/grid]$ source ~grid/.bash_profile
--oracle os user
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ vi ~oracle/.bash_profile
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ cat ~oracle/.bash_profile | grep 19.29
export GRID_HOME=/u01/app/19.29/grid
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ source ~oracle/.bash_profile
--2번 노드
--root os user
[root@ol7ora12rf2][/root]$ vi ~root/.bash_profile
[root@ol7ora12rf2][/root]$ cat ~root/.bash_profile | grep 19.29
export GRID_HOME=/u01/app/19.29/grid
[root@ol7ora12rf2][/root]$ source ~root/.bash_profile
--grid os user
[+ASM2:grid@ol7ora12rf2][/home/grid]$ vi ~grid/.bash_profile
[+ASM2:grid@ol7ora12rf2][/home/grid]$ cat ~grid/.bash_profile | grep 19.29
export GRID_HOME=/u01/app/19.29/grid
[+ASM2:grid@ol7ora12rf2][/home/grid]$ source ~grid/.bash_profile
--oracle os user
[ORA12RF2:oracle@ol7ora12rf2][/home/oracle]$ vi ~oracle/.bash_profile
[ORA12RF2:oracle@ol7ora12rf2][/home/oracle]$ cat ~oracle/.bash_profile | grep 19.29
export GRID_HOME=/u01/app/19.29/grid
[ORA12RF2:oracle@ol7ora12rf2][/home/oracle]$ source ~oracle/.bash_profile
--1번 노드 (grid os user)
[+ASM1:grid@ol7ora12rf1][/home/grid]$ which opatch
/u01/app/19.29/grid/OPatch/opatch
[+ASM1:grid@ol7ora12rf1][/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.
--2번 노드 (grid os user)
[+ASM2:grid@ol7ora12rf2][/home/grid]$ which opatch
/u01/app/19.29/grid/OPatch/opatch
[+ASM2:grid@ol7ora12rf2][/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.
--cha, mgmtdb, mgmtlsnr 을 모두 내림
[+ASM2:grid@ol7ora12rf2][/home/grid]$ srvctl stop cha
[+ASM2:grid@ol7ora12rf2][/home/grid]$ srvctl stop mgmtdb
[+ASM2:grid@ol7ora12rf2][/home/grid]$ srvctl stop mgmtlsnr
--cha, mgmtdb, mgmtlsnr가 모두 내려갔는지 확인
[+ASM2:grid@ol7ora12rf2][/home/grid]$ crsctl stat res ora.chad -t
--------------------------------------------------------------------------------
Name Target State Server State details
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.chad
OFFLINE OFFLINE ol7ora12rf1 STABLE
OFFLINE OFFLINE ol7ora12rf2 STABLE
--------------------------------------------------------------------------------
[+ASM2:grid@ol7ora12rf2][/home/grid]$ crsctl stat res ora.mgmtdb -t
--------------------------------------------------------------------------------
Name Target State Server State details
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.mgmtdb
1 OFFLINE OFFLINE Instance Shutdown,ST
ABLE
--------------------------------------------------------------------------------
[+ASM2:grid@ol7ora12rf2][/home/grid]$ crsctl stat res ora.MGMTLSNR -t
--------------------------------------------------------------------------------
Name Target State Server State details
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.MGMTLSNR
1 OFFLINE OFFLINE 169.254.18.26 10.0.1
.11,STABLE
--------------------------------------------------------------------------------
--리스너 확인
--1번 노드 (grid os user)
[+ASM1:grid@ol7ora12rf1][/home/grid]$ lsnrctl status LISTENER
LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 11-JAN-2026 16:17:51
Copyright (c) 1991, 2025, Oracle. All rights reserved.
Connecting to (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 11-JAN-2026 15:21:11
Uptime 0 days 0 hr. 56 min. 40 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/app/19.29/grid/network/admin/listener.ora
Listener Log File /u01/app/oracle/diag/tnslsnr/ol7ora12rf1/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.240.11)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.240.14)(PORT=1521)))
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 "+ASM_MGMT" has 1 instance(s).
Instance "+ASM1", status READY, has 1 handler(s) for this service...
Service "ORA12RF" has 1 instance(s).
Instance "ORA12RF1", status READY, has 1 handler(s) for this service...
Service "ORA12RFXDB" has 1 instance(s).
Instance "ORA12RF1", status READY, has 1 handler(s) for this service...
The command completed successfully
--2번 노드 (grid os user)
[+ASM2:grid@ol7ora12rf2][/home/grid]$ lsnrctl status LISTENER
LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 11-JAN-2026 16:17:39
Copyright (c) 1991, 2025, Oracle. All rights reserved.
Connecting to (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 11-JAN-2026 15:21:16
Uptime 0 days 0 hr. 56 min. 23 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/app/19.29/grid/network/admin/listener.ora
Listener Log File /u01/app/oracle/diag/tnslsnr/ol7ora12rf2/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.240.12)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.240.15)(PORT=1521)))
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 "+ASM_MGMT" has 1 instance(s).
Instance "+ASM2", status READY, has 1 handler(s) for this service...
Service "ORA12RF" has 1 instance(s).
Instance "ORA12RF2", status READY, has 1 handler(s) for this service...
Service "ORA12RFXDB" has 1 instance(s).
Instance "ORA12RF2", status READY, has 1 handler(s) for this service...
The command completed successfully
2-7. 패치 인벤토리 detach 작업
--1번 노드
--패치 인벤토리 확인
[+ASM1:grid@ol7ora12rf1][/home/grid]$ cat /u01/app/oraInventory/ContentsXML/inventory.xml
<?xml version="1.0" standalone="yes" ?>
<!-- Copyright (c) 1999, 2026, 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="OraGI12Home1" LOC="/u01/app/12c/grid" TYPE="O" IDX="1"/>
<HOME NAME="OraDB12Home1" LOC="/u01/app/oracle/product/12c/db_1" TYPE="O" IDX="2"/>
<HOME NAME="OraGI19Home1" LOC="/u01/app/19.29/grid" TYPE="O" IDX="3" CRS="true"/>
</HOME_LIST>
<COMPOSITEHOME_LIST>
</COMPOSITEHOME_LIST>
</INVENTORY>
--기존 12c 그리드 홈 패치 인벤토리에서 비활성화 시킴
[+ASM1:grid@ol7ora12rf1][/home/grid]$ /u01/app/12c/grid/oui/bin/runInstaller -detachHome -silent ORACLE_HOME=/u01/app/12c/grid
Starting Oracle Universal Installer...
Checking swap space: must be greater than 500 MB. Actual 16331 MB Passed
The inventory pointer is located at /etc/oraInst.loc
'DetachHome' was successful.
--detach 되었는지 확인
[+ASM1:grid@ol7ora12rf1][/home/grid]$ cat /u01/app/oraInventory/ContentsXML/inventory.xml
<?xml version="1.0" standalone="yes" ?>
<!-- Copyright (c) 1999, 2026, 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.1.4</SAVED_WITH>
<MINIMUM_VER>2.1.0.6.0</MINIMUM_VER>
</VERSION_INFO>
<HOME_LIST>
<HOME NAME="OraDB12Home1" LOC="/u01/app/oracle/product/12c/db_1" TYPE="O" IDX="2"/>
<HOME NAME="OraGI19Home1" LOC="/u01/app/19.29/grid" TYPE="O" IDX="3" CRS="true"/>
<HOME NAME="OraGI12Home1" LOC="/u01/app/12c/grid" TYPE="O" IDX="1" REMOVED="T"/>
</HOME_LIST>
<COMPOSITEHOME_LIST>
</COMPOSITEHOME_LIST>
</INVENTORY>
--2번 노드
--기존 12c 그리드 홈 패치 인벤토리에서 비활성화 시킴
[+ASM2:grid@ol7ora12rf2][/home/grid]$ cat /u01/app/oraInventory/ContentsXML/inventory.xml
<?xml version="1.0" standalone="yes" ?>
<!-- Copyright (c) 1999, 2026, 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="OraGI12Home1" LOC="/u01/app/12c/grid" TYPE="O" IDX="1"/>
<HOME NAME="OraDB12Home1" LOC="/u01/app/oracle/product/12c/db_1" TYPE="O" IDX="2"/>
<HOME NAME="OraGI19Home1" LOC="/u01/app/19.29/grid" TYPE="O" IDX="3" CRS="true"/>
</HOME_LIST>
<COMPOSITEHOME_LIST>
</COMPOSITEHOME_LIST>
</INVENTORY>
--기존 12c 그리드 홈 패치 인벤토리에서 비활성화 시킴
[+ASM2:grid@ol7ora12rf2][/home/grid]$ /u01/app/12c/grid/oui/bin/runInstaller -detachHome -silent ORACLE_HOME=/u01/app/12c/grid
Starting Oracle Universal Installer...
Checking swap space: must be greater than 500 MB. Actual 16383 MB Passed
The inventory pointer is located at /etc/oraInst.loc
'DetachHome' was successful.
--detach 되었는지 확인
[+ASM2:grid@ol7ora12rf2][/home/grid]$ cat /u01/app/oraInventory/ContentsXML/inventory.xml
<?xml version="1.0" standalone="yes" ?>
<!-- Copyright (c) 1999, 2026, 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.1.4</SAVED_WITH>
<MINIMUM_VER>2.1.0.6.0</MINIMUM_VER>
</VERSION_INFO>
<HOME_LIST>
<HOME NAME="OraDB12Home1" LOC="/u01/app/oracle/product/12c/db_1" TYPE="O" IDX="2"/>
<HOME NAME="OraGI19Home1" LOC="/u01/app/19.29/grid" TYPE="O" IDX="3" CRS="true"/>
<HOME NAME="OraGI12Home1" LOC="/u01/app/12c/grid" TYPE="O" IDX="1" REMOVED="T"/>
</HOME_LIST>
<COMPOSITEHOME_LIST>
</COMPOSITEHOME_LIST>
</INVENTORY>
3. 19c Oracle 엔진 설치
3-1. 19c Oracle 디렉토리 생성
--1번 노드 (oracle os user)
[ORA12RF1:oracle@ol7ora12rf1][/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’
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ chmod 775 /u01/app/oracle/product/19.29/db_1
--2번 노드 (oracle os user)
[ORA12RF2:oracle@ol7ora12rf2][/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’
[ORA12RF2:oracle@ol7ora12rf2][/home/oracle]$ chmod 775 /u01/app/oracle/product/19.29/db_1
3-2. 골드 이미지 압축 해제
--1번 노드 (oracle os user)
--골드 이미지 파일 압축 해제
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ ls -l /tmp/gold_image_19.29/db1929000.zip
-rw-r--r--. 1 grid oinstall 4816073482 Dec 24 22:12 /tmp/gold_image_19.29/db1929000.zip
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ unzip -q /tmp/gold_image_19.29/db1929000.zip -d /u01/app/oracle/product/19.29/db_1
3-3. 19c Oracle 엔진 설치
--1번 노드 (oracle os user)
--응답 파일 생성
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ cat > /home/oracle/db_19.29.rsp << 'EOF'
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=ol7ora12rf1,ol7ora12rf2
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
EOF
--응답 파일 확인
[ORA12RF1:oracle@ol7ora12rf1][/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.CLUSTER_NODES=ol7ora12rf1,ol7ora12rf2
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
--엔진 설치 전 검사
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ /u01/app/oracle/product/19.29/db_1/runInstaller -executePrereqs -silent -ignorePrereqFailure -responseFile /home/oracle/db_19.29.rsp
Launching Oracle Database Setup Wizard...
Prerequisite checks executed successfully.
--19c 오라클 엔진 설치
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ /u01/app/oracle/product/19.29/db_1/runInstaller -silent -ignorePrereqFailure -waitforcompletion -responseFile /home/oracle/db_19.29.rsp
Launching Oracle Database Setup Wizard...
Enter password for 'root' user:
[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/InstallActions2026-01-11_09-01-14PM/installActions2026-01-11_09-01-14PM.log
ACTION: Identify the list of failed prerequisite checks from the log: /u01/app/oraInventory/logs/InstallActions2026-01-11_09-01-14PM/installActions2026-01-11_09-01-14PM.log. Then either from the log file or from installation manual find the appropriate configuration to meet the prerequisites and fix it manually.
--> 로그를 확인하니 scan 관련 warning이므로 무시함
The response file for this session can be found at:
/u01/app/oracle/product/19.29/db_1/install/response/db_2026-01-11_09-01-14PM.rsp
You can find the log of this install session at:
/u01/app/oraInventory/logs/InstallActions2026-01-11_09-01-14PM/installActions2026-01-11_09-01-14PM.log
find: ‘/u01/app/oraInventory/logs/GridSetupActions2025-10-02_08-03-02PM/temp_ob’: Permission denied
find: ‘/u01/app/oraInventory/logs/GridSetupActions2026-01-11_02-39-33PM/temp_ob’: Permission denied
find: ‘/u01/app/oraInventory/logs/GridSetupActions2026-01-11_02-52-47PM/temp_ob’: Permission denied
find: ‘/u01/app/oraInventory/logs/GridSetupActions2026-01-11_02-59-23PM/temp_ob’: Permission denied
find: ‘/u01/app/oraInventory/logs/GridSetupActions2026-01-11_03-08-36PM/temp_ob’: Permission denied
find: ‘/u01/app/oraInventory/logs/GridSetupActions2026-01-11_03-32-01PM/temp_ob’: Permission denied
find: ‘/u01/app/oraInventory/logs/GridSetupActions2025-10-02_08-03-02PM/temp_ob’: Permission denied
find: ‘/u01/app/oraInventory/logs/GridSetupActions2026-01-11_02-39-33PM/temp_ob’: Permission denied
find: ‘/u01/app/oraInventory/logs/GridSetupActions2026-01-11_02-52-47PM/temp_ob’: Permission denied
find: ‘/u01/app/oraInventory/logs/GridSetupActions2026-01-11_02-59-23PM/temp_ob’: Permission denied
find: ‘/u01/app/oraInventory/logs/GridSetupActions2026-01-11_03-08-36PM/temp_ob’: Permission denied
find: ‘/u01/app/oraInventory/logs/GridSetupActions2026-01-11_03-32-01PM/temp_ob’: Permission denied
find: ‘/u01/app/oraInventory/logs/GridSetupActions2025-10-02_08-03-02PM/temp_ob’: Permission denied
find: ‘/u01/app/oraInventory/logs/GridSetupActions2026-01-11_02-39-33PM/temp_ob’: Permission denied
find: ‘/u01/app/oraInventory/logs/GridSetupActions2026-01-11_02-52-47PM/temp_ob’: Permission denied
find: ‘/u01/app/oraInventory/logs/GridSetupActions2026-01-11_02-59-23PM/temp_ob’: Permission denied
find: ‘/u01/app/oraInventory/logs/GridSetupActions2026-01-11_03-08-36PM/temp_ob’: Permission denied
find: ‘/u01/app/oraInventory/logs/GridSetupActions2026-01-11_03-32-01PM/temp_ob’: Permission denied
Successfully Setup Software with warning(s).
3-4. 기존 12cr2 Oracle 엔진에서 필요한 파일을 19c 엔진으로 복사
목차로 돌아가기
--1번 노드 (oracle os user)
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ cp /u01/app/oracle/product/12c/db_1/sqlplus/admin/glogin.sql /u01/app/oracle/product/19.29/db_1/sqlplus/admin/
--2번 노드 (oracle os user)
[ORA12RF2:oracle@ol7ora12rf2][/home/oracle]$ cp /u01/app/oracle/product/12c/db_1/sqlplus/admin/glogin.sql /u01/app/oracle/product/19.29/db_1/sqlplus/admin/
3-5. AutoUpgrade 도구 다운로드 및 설치
AutoUpgrade Tool (Doc ID 2485457.1) 에서 autoupgrade.jar 파일 다운로드
--1번 노드 (oracle os user)
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ mkdir -pv /home/oracle/autoupgrade_jar
mkdir: created directory ‘autoupgrade_jar’
--autoupgrade.jar 파일을 /home/oracle/autoupgrade_jar 위치에 업로드
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ ls -l /home/oracle/autoupgrade_jar
total 6572
-rw-r--r--. 1 oracle oinstall 6729677 Jan 11 21:55 autoupgrade.jar
--기존 19c 엔진에 존재하는 autoupgrade.jar 를 백업
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ cp /u01/app/oracle/product/19.29/db_1/rdbms/admin/autoupgrade.jar /u01/app/oracle/product/19.29/db_1/rdbms/admin/autoupgrade.jar.bak
--최신 버전의 autoupgrade.jar 를 복사함
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ cp /home/oracle/autoupgrade_jar/autoupgrade.jar /u01/app/oracle/product/19.29/db_1/rdbms/admin/
--버전 확인
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ /u01/app/oracle/product/19.29/db_1/jdk/bin/java -jar /u01/app/oracle/product/19.29/db_1/rdbms/admin/autoupgrade.jar -version
build.version 25.6.251016
build.date 2025/10/16 00:04:36 +0000
build.hash 54a1e2442
build.hash_date 2025/10/15 21:11:40 +0000
build.supported_target_versions 12.2,18,19,21,23
build.type production
build.label (HEAD, tag: v25.6, origin/stable_devel, stable_devel)
build.MOS_NOTE 2485457.1
build.MOS_LINK https://support.oracle.com/epmos/faces/DocumentDisplay?id=2485457.1
--2번 노드 (oracle os user)
--2번 노드에는 반드시 설치할 필요할 없으나 동일하게 유지하기 위해 설치함
[ORA12RF2:oracle@ol7ora12rf2][/home/oracle]$ mkdir -pv /home/oracle/autoupgrade_jar
mkdir: created directory ‘autoupgrade_jar’
--autoupgrade.jar 파일을 /home/oracle/autoupgrade_jar 위치에 업로드
[ORA12RF2:oracle@ol7ora12rf2][/home/oracle]$ ls -l /home/oracle/autoupgrade_jar
total 6572
-rw-r--r--. 1 oracle oinstall 6729677 Jan 11 21:55 autoupgrade.jar
--기존 19c 엔진에 존재하는 autoupgrade.jar 를 백업
[ORA12RF2:oracle@ol7ora12rf2][/home/oracle]$ cp /u01/app/oracle/product/19.29/db_1/rdbms/admin/autoupgrade.jar /u01/app/oracle/product/19.29/db_1/rdbms/admin/autoupgrade.jar.bak
--최신 버전의 autoupgrade.jar 를 복사함
[ORA12RF2:oracle@ol7ora12rf2][/home/oracle]$ cp /home/oracle/autoupgrade_jar/autoupgrade.jar /u01/app/oracle/product/19.29/db_1/rdbms/admin/
--버전 확인
[ORA12RF2:oracle@ol7ora12rf2][/home/oracle]$ /u01/app/oracle/product/19.29/db_1/jdk/bin/java -jar /u01/app/oracle/product/19.29/db_1/rdbms/admin/autoupgrade.jar -version
build.version 25.6.251016
build.date 2025/10/16 00:04:36 +0000
build.hash 54a1e2442
build.hash_date 2025/10/15 21:11:40 +0000
build.supported_target_versions 12.2,18,19,21,23
build.type production
build.label (HEAD, tag: v25.6, origin/stable_devel, stable_devel)
build.MOS_NOTE 2485457.1
build.MOS_LINK https://support.oracle.com/epmos/faces/DocumentDisplay?id=2485457.1
4. 19c CDB 설치
4-1. 12cR2 DB의 컴포넌트 구성 확인
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ alias ss
alias ss='rlwrap sqlplus "/as sysdba"'
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ ss
SQL*Plus: Release 12.2.0.1.0 Production on Mon Jan 19 15:55:39 2026
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
[ol7ora12rf1]<SYS@ORA12RF1>$
set linesize 200
col comp_id for a10
col comp_name for a50
col VERSION for a20
col STATUS for a10
col PROCEDURE for a50
select comp_id, comp_name, VERSION, STATUS, PROCEDURE from dba_registry;
COMP_ID COMP_NAME VERSION STATUS PROCEDURE
---------- -------------------------------------------------- -------------------- ---------- --------------------------------------------------
CATALOG Oracle Database Catalog Views 12.2.0.1.0 VALID DBMS_REGISTRY_SYS.VALIDATE_CATALOG
CATPROC Oracle Database Packages and Types 12.2.0.1.0 VALID DBMS_REGISTRY_SYS.VALIDATE_CATPROC
JAVAVM JServer JAVA Virtual Machine 12.2.0.1.0 VALID INITJVMAUX.VALIDATE_JAVAVM
XML Oracle XDK 12.2.0.1.0 VALID XMLVALIDATE
CATJAVA Oracle Database Java Packages 12.2.0.1.0 VALID DBMS_REGISTRY_SYS.VALIDATE_CATJAVA
APS OLAP Analytic Workspace 12.2.0.1.0 VALID APS_VALIDATE
RAC Oracle Real Application Clusters 12.2.0.1.0 VALID DBMS_CLUSTDB.VALIDATE
XDB Oracle XML Database 12.2.0.1.0 VALID DBMS_REGXDB.VALIDATEXDB
OWM Oracle Workspace Manager 12.2.0.1.0 VALID VALIDATE_OWM
CONTEXT Oracle Text 12.2.0.1.0 VALID VALIDATE_CONTEXT
ORDIM Oracle Multimedia 12.2.0.1.0 VALID VALIDATE_ORDIM
SDO Spatial 12.2.0.1.0 VALID VALIDATE_SDO
XOQ Oracle OLAP API 12.2.0.1.0 VALID XOQ_VALIDATE
OLS Oracle Label Security 12.2.0.1.0 VALID VALIDATE_OLS
DV Oracle Database Vault 12.2.0.1.0 VALID VALIDATE_DV
15 rows selected.
Elapsed: 00:00:00.00
--> 19c CDB를 설치 시 위의 컴포넌트가 모두 설치되어야함
[ol7ora12rf1]<SYS@ORA12RF1>$ show parameter max_string_size
NAME TYPE VALUE
------------------------------------ --------------------------------- ------------------------------
max_string_size string EXTENDED
[ol7ora12rf1]<SYS@ORA12RF1>$
--> 현재 max_string_size가 extended인 상태임
--> 19c CDB 설치 시 해당 파라미터를 extended로 해야함
4-2. Oracle 19c 신규 CDB 설치
--템플릿 파일 복사 후 수정 (Vault를 설치하기 위함)
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ cp /u01/app/oracle/product/19.29/db_1/assistants/dbca/templates/New_Database.dbt \
> /u01/app/oracle/product/19.29/db_1/assistants/dbca/templates/New_Database_new.dbt
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ vi /u01/app/oracle/product/19.29/db_1/assistants/dbca/templates/New_Database_new.dbt
--> CommonAttributes 부분에
-- <option name="DV" value="true" includeInPDBs="true"/> <-- true로 수정
--필요한 경우 사용할 것
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ awk -F= 'NF && $1 !~ /^#/ && $2!=""' /home/oracle/dbca_19.29.rsp > /home/oracle/dbca_19.29_new.rsp
--dbca 작업 도중 에러가 발생함 (pdb$seed 생성 시 SYS.DBMS_BACKUP_RESTORE 관련 에러가 발생함)
--dbca ui로 response file 생성 시 custom database 설정을 한 후 모든 컴포넌트 항목을 선택함
--해당 https://dbalifeeasy.com/tag/fatal-error-while-restoring-pdb-backup-piece/ url을 참고함
--이러한 조치를 취하니 설치에 성공함
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ cat > /home/oracle/dbca_19.29_new.rsp << 'EOF'
responseFileVersion=/oracle/assistants/rspfmt_dbca_response_schema_v12.2.0
gdbName=ORARCF
sid=ORARCF
databaseConfigType=RAC
policyManaged=false
createServerPool=false
force=false
createAsContainerDatabase=true
numberOfPDBs=0
useLocalUndoForPDBs=true
nodelist=ol7ora12rf1,ol7ora12rf2
templateName=/u01/app/oracle/product/19.29/db_1/assistants/dbca/templates/New_Database_new.dbt
systemPassword=
emExpressPort=5500
runCVUChecks=TRUE
omsPort=0
dvConfiguration=false
olsConfiguration=true
datafileJarLocation={ORACLE_HOME}/assistants/dbca/templates/
datafileDestination=+DATA1/{DB_UNIQUE_NAME}/
recoveryAreaDestination=+FRA1
storageType=ASM
diskGroupName=+DATA1/{DB_UNIQUE_NAME}/
recoveryGroupName=+FRA1
characterSet=KO16MSWIN949
nationalCharacterSet=AL16UTF16
registerWithDirService=false
listeners=LISTENER
skipListenerRegistration=false
variables=ORACLE_BASE_HOME=/u01/app/oracle/product/19.29/db_1,DB_UNIQUE_NAME=ORARCF,ORACLE_BASE=/u01/app/oracle,PDB_NAME=,DB_NAME=ORARCF,ORACLE_HOME=/u01/app/oracle/product/19.29/db_1,SID=ORARCF
initParams=ORARCF1.undo_tablespace=UNDOTBS1,ORARCF2.undo_tablespace=UNDOTBS2,enable_pluggable_database=true,sga_target=1536MB,db_block_size=8192BYTES,cluster_database=true,max_string_size=EXTENDED,family:dw_helper.instance_mode=read-only,log_archive_dest_1='LOCATION=+FRA1',nls_language=AMERICAN,dispatchers=(PROTOCOL=TCP) (SERVICE=ORARCFXDB),diagnostic_dest={ORACLE_BASE},remote_login_passwordfile=exclusive,db_create_file_dest=+DATA1/{DB_UNIQUE_NAME}/,db_create_online_log_dest_2=+DATA1,db_create_online_log_dest_1=+FRA1,audit_file_dest={ORACLE_BASE}/admin/{DB_UNIQUE_NAME}/adump,processes=640,pga_aggregate_target=512MB,ORARCF1.thread=1,ORARCF2.thread=2,nls_territory=KOREA,local_listener=-oraagent-dummy-,db_recovery_file_dest_size=16384MB,open_cursors=300,log_archive_format=%t_%s_%r.ARC,compatible=19.0.0,db_name=ORARCF,ORARCF1.instance_number=1,ORARCF2.instance_number=2,db_recovery_file_dest=+FRA1,audit_trail=db
sampleSchema=false
memoryPercentage=40
databaseType=MULTIPURPOSE
automaticMemoryManagement=false
totalMemory=0
EOF
--> olsConfiguration=true 라벨 시큐리티는 켜기
--> dvConfiguration=false dv 설정은 끄기
--> max_string_size=EXTENDED 는 extended로 설정
--> 기존 12cR2가 max_string_size=EXTENDED 이므로 19c CDB도 생성 시 max_string_size=EXTENDED 로 함
-- reponse file 파일 확인
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ cat /home/oracle/dbca_19.29_new.rsp
responseFileVersion=/oracle/assistants/rspfmt_dbca_response_schema_v12.2.0
gdbName=ORARCF
sid=ORARCF
databaseConfigType=RAC
policyManaged=false
createServerPool=false
force=false
createAsContainerDatabase=true
numberOfPDBs=0
useLocalUndoForPDBs=true
nodelist=ol7ora12rf1,ol7ora12rf2
templateName=/u01/app/oracle/product/19.29/db_1/assistants/dbca/templates/New_Database_new.dbt
systemPassword=
emExpressPort=5500
runCVUChecks=TRUE
omsPort=0
dvConfiguration=false
olsConfiguration=true
datafileJarLocation={ORACLE_HOME}/assistants/dbca/templates/
datafileDestination=+DATA1/{DB_UNIQUE_NAME}/
recoveryAreaDestination=+FRA1
storageType=ASM
diskGroupName=+DATA1/{DB_UNIQUE_NAME}/
recoveryGroupName=+FRA1
characterSet=KO16MSWIN949
nationalCharacterSet=AL16UTF16
registerWithDirService=false
listeners=LISTENER
skipListenerRegistration=false
variables=ORACLE_BASE_HOME=/u01/app/oracle/product/19.29/db_1,DB_UNIQUE_NAME=ORARCF,ORACLE_BASE=/u01/app/oracle,PDB_NAME=,DB_NAME=ORARCF,ORACLE_HOME=/u01/app/oracle/product/19.29/db_1,SID=ORARCF
initParams=ORARCF1.undo_tablespace=UNDOTBS1,ORARCF2.undo_tablespace=UNDOTBS2,enable_pluggable_database=true,sga_target=1536MB,db_block_size=8192BYTES,cluster_database=true,max_string_size=EXTENDED,family:dw_helper.instance_mode=read-only,log_archive_dest_1='LOCATION=+FRA1',nls_language=AMERICAN,dispatchers=(PROTOCOL=TCP) (SERVICE=ORARCFXDB),diagnostic_dest={ORACLE_BASE},remote_login_passwordfile=exclusive,db_create_file_dest=+DATA1/{DB_UNIQUE_NAME}/,db_create_online_log_dest_2=+DATA1,db_create_online_log_dest_1=+FRA1,audit_file_dest={ORACLE_BASE}/admin/{DB_UNIQUE_NAME}/adump,processes=640,pga_aggregate_target=512MB,ORARCF1.thread=1,ORARCF2.thread=2,nls_territory=KOREA,local_listener=-oraagent-dummy-,db_recovery_file_dest_size=16384MB,open_cursors=300,log_archive_format=%t_%s_%r.ARC,compatible=19.0.0,db_name=ORARCF,ORARCF1.instance_number=1,ORARCF2.instance_number=2,db_recovery_file_dest=+FRA1,audit_trail=db
sampleSchema=false
memoryPercentage=40
databaseType=MULTIPURPOSE
automaticMemoryManagement=false
totalMemory=0
-- 1번 노드 (oracle os user)
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ /u01/app/oracle/product/19.29/db_1/bin/dbca \
-silent \
-executePrereqs \
-responseFile /home/oracle/dbca_19.29_new.rsp \
-databaseConfigType RAC \
-nodelist ol7ora12rf1,ol7ora12rf2
-- glogin.sql 비활성화
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ mv /u01/app/oracle/product/19.29/db_1/sqlplus/admin/glogin.sql /u01/app/oracle/product/19.29/db_1/sqlplus/admin/glogin.sql.bak.before_dbca
[ORA12RF2:oracle@ol7ora12rf2][/home/oracle]$ mv /u01/app/oracle/product/19.29/db_1/sqlplus/admin/glogin.sql /u01/app/oracle/product/19.29/db_1/sqlplus/admin/glogin.sql.bak.before_dbca
--root os user로 sqlpatch 로그 디렉토리 권한 변경
[root@ol7ora12rf1][/u01/app/oracle/cfgtoollogs/sqlpatch]$ chmod 775 -R /u01/app/oracle/cfgtoollogs/sqlpatch
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ /u01/app/oracle/product/19.29/db_1/bin/dbca \
-silent -ignorePrereqFailure -createDatabase \
-responseFile /home/oracle/dbca_19.29_new.rsp
--아래 위치에서 진행 로그 확인 가능
dbca : /u01/app/oracle/cfgtoollogs/dbca/ORARCF
datapatch : /u01/app/oracle/cfgtoollogs/sqlpatch
Enter SYS user password:
Enter SYSTEM user password:
Enter DBSNMP user password:
[WARNING] [DBT-06208] The 'SYS' password entered does not conform to the Oracle recommended standards.
CAUSE:
a. Oracle recommends that the password entered should be at least 8 characters in length, contain at least 1 uppercase character, 1 lower case character and 1 digit [0-9].
b.The password entered is a keyword that Oracle does not recommend to be used as password
ACTION: Specify a strong password. If required refer Oracle documentation for guidelines.
[WARNING] [DBT-06208] The 'SYSTEM' password entered does not conform to the Oracle recommended standards.
CAUSE:
a. Oracle recommends that the password entered should be at least 8 characters in length, contain at least 1 uppercase character, 1 lower case character and 1 digit [0-9].
b.The password entered is a keyword that Oracle does not recommend to be used as password
ACTION: Specify a strong password. If required refer Oracle documentation for guidelines.
[WARNING] [DBT-06208] The 'DBSNMP' password entered does not conform to the Oracle recommended standards.
CAUSE:
a. Oracle recommends that the password entered should be at least 8 characters in length, contain at least 1 uppercase character, 1 lower case character and 1 digit [0-9].
b.The password entered is a keyword that Oracle does not recommend to be used as password
ACTION: Specify a strong password. If required refer Oracle documentation for guidelines.
Prepare for db operation
4% complete
Creating and starting Oracle instance
5% complete
7% complete
Creating database files
8% complete
11% complete
Creating data dictionary views
12% complete
14% complete
16% complete
17% complete
18% complete
19% complete
21% complete
Oracle JVM
27% complete
32% complete
37% complete
39% complete
Oracle Text
40% complete
41% complete
43% complete
Oracle Multimedia
54% complete
Oracle OLAP
57% complete
Oracle Spatial
58% complete
64% complete
Oracle Label Security
71% complete
Oracle Database Vault
79% complete
Creating cluster database views
86% complete
Completing Database Creation
87% complete
88% complete
[WARNING] ORA-12543: TNS:destination host unreachable
89% complete
Executing Post Configuration Actions
100% complete
Database creation complete. For details check the logfiles at:
/u01/app/oracle/cfgtoollogs/dbca/ORARCF.
Database Information:
Global Database Name:ORARCF
System Identifier(SID) Prefix:ORARCF
Look at the log file "/u01/app/oracle/cfgtoollogs/dbca/ORARCF/ORARCF1.log" for further details.
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ crsctl stat res ora.orarcf.db -t
--------------------------------------------------------------------------------
Name Target State Server State details
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.orarcf.db
1 ONLINE ONLINE ol7ora12rf1 Open,HOME=/u01/app/o
racle/product/19.29/
db_1,STABLE
2 ONLINE ONLINE ol7ora12rf2 Open,HOME=/u01/app/o
racle/product/19.29/
db_1,STABLE
--------------------------------------------------------------------------------
--만약 방금 만든 db를 지운다면
/u01/app/oracle/product/19.29/db_1/bin/dbca -silent -deleteDatabase -sourceDB ORARCF -sid ORARCF -sysDBAUserName sys -sysDBAPassword oracle
--> 정말 지울꺼 아니면 돌리면 안됨!!! (예시로 정리해 놓은 것임)
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ . oraenv
ORACLE_SID = [ORA12RF1] ? ORARCF1
ORACLE_HOME = [/home/oracle] ? /u01/app/oracle/product/19.29/db_1
The Oracle base remains unchanged with value /u01/app/oracle
[ORARCF1:oracle@ol7ora12rf1][/home/oracle]$ sqlplus / as sysdba
SQL*Plus: Release 19.0.0.0.0 - Production on Sun Jan 18 12:06:45 2026
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> show pdbs;
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
SQL> show con_name
CON_NAME
------------------------------
CDB$ROOT
--설치 중 datapatch가 완료됐는지 확인
SQL>
SET LINESIZE 200
SET PAGESIZE 100
COL ACTION_TIME FORMAT A25
COL ACTION FORMAT A10
COL STATUS FORMAT A10
COL DESCRIPTION FORMAT A60
COL PATCH_ID FORMAT 99999999
SELECT TO_CHAR(ACTION_TIME, 'YYYY-MM-DD HH24:MI:SS') AS ACTION_TIME
, CON_ID
, PATCH_ID
, ACTION
, STATUS
, DESCRIPTION
FROM CDB_REGISTRY_SQLPATCH
ORDER BY ACTION_TIME;
ACTION_TIME CON_ID PATCH_ID ACTION STATUS DESCRIPTION
------------------------- ---------- --------- ---------- ---------- ------------------------------------------------------------
2026-01-18 22:18:22 1 38291812 APPLY SUCCESS Database Release Update : 19.29.0.0.251021 (38291812)
SQL> show parameter max_string
NAME TYPE VALUE
------------------------------------ --------------------------------- ------------------------------
max_string_size string EXTENDED
set linesize 200
col comp_id for a10
col comp_name for a50
col VERSION for a20
col STATUS for a10
col PROCEDURE for a50
select comp_id, comp_name, VERSION, STATUS, PROCEDURE from dba_registry;
COMP_ID COMP_NAME VERSION STATUS PROCEDURE
---------- -------------------------------------------------- -------------------- ---------- --------------------------------------------------
CATALOG Oracle Database Catalog Views 19.0.0.0.0 VALID DBMS_REGISTRY_SYS.VALIDATE_CATALOG
CATPROC Oracle Database Packages and Types 19.0.0.0.0 VALID DBMS_REGISTRY_SYS.VALIDATE_CATPROC
RAC Oracle Real Application Clusters 19.0.0.0.0 VALID DBMS_CLUSTDB.VALIDATE
JAVAVM JServer JAVA Virtual Machine 19.0.0.0.0 VALID INITJVMAUX.VALIDATE_JAVAVM
XML Oracle XDK 19.0.0.0.0 VALID XMLVALIDATE
CATJAVA Oracle Database Java Packages 19.0.0.0.0 VALID DBMS_REGISTRY_SYS.VALIDATE_CATJAVA
APS OLAP Analytic Workspace 19.0.0.0.0 VALID APS_VALIDATE
XDB Oracle XML Database 19.0.0.0.0 VALID DBMS_REGXDB.VALIDATEXDB
OWM Oracle Workspace Manager 19.0.0.0.0 VALID VALIDATE_OWM
CONTEXT Oracle Text 19.0.0.0.0 VALID VALIDATE_CONTEXT
ORDIM Oracle Multimedia 19.0.0.0.0 VALID VALIDATE_ORDIM
SDO Spatial 19.0.0.0.0 VALID VALIDATE_SDO
XOQ Oracle OLAP API 19.0.0.0.0 VALID XOQ_VALIDATE
OLS Oracle Label Security 19.0.0.0.0 VALID VALIDATE_OLS
DV Oracle Database Vault 19.0.0.0.0 VALID VALIDATE_DV
15 rows selected.
- 아카이브 모드로 설정
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ . oraenv
ORACLE_SID = [ORA12RF1] ? ORARCF1
ORACLE_HOME = [/home/oracle] ? /u01/app/oracle/product/19.29/db_1
The Oracle base remains unchanged with value /u01/app/oracle
[ORARCF1:oracle@ol7ora12rf1][/home/oracle]$ alias ss
alias ss='rlwrap sqlplus "/as sysdba"'
[ORARCF1:oracle@ol7ora12rf1][/home/oracle]$ ss
SQL*Plus: Release 19.0.0.0.0 - Production on Mon Jan 19 17:53:26 2026
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> archive log list
Database log mode No Archive Mode
Automatic archival Disabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 35
Current log sequence 36
SQL> quit
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.29.0.0.0
[ORARCF1:oracle@ol7ora12rf1][/home/oracle]$ /u01/app/oracle/product/19.29/db_1/bin/srvctl stop database -db orarcf
[ORARCF1:oracle@ol7ora12rf1][/home/oracle]$ srvctl start database -d orarcf -o mount
[ORARCF1:oracle@ol7ora12rf1][/home/oracle]$ ss
SQL*Plus: Release 19.0.0.0.0 - Production on Mon Jan 19 17:55:17 2026
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> alter system set log_archive_dest_1='LOCATION=+FRA1/' scope=both sid='*';
System altered.
SQL> alter database archivelog;
Database altered.
SQL> quit
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.29.0.0.0
[ORARCF1:oracle@ol7ora12rf1][/home/oracle]$ /u01/app/oracle/product/19.29/db_1/bin/srvctl stop database -db orarcf
[ORARCF1:oracle@ol7ora12rf1][/home/oracle]$ /u01/app/oracle/product/19.29/db_1/bin/srvctl start database -db orarcf
[ORARCF1:oracle@ol7ora12rf1][/home/oracle]$ ss
SQL*Plus: Release 19.0.0.0.0 - Production on Mon Jan 19 17:57:04 2026
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> archive log list
Database log mode Archive Mode
Automatic archival Enabled
Archive destination +FRA1
Oldest online log sequence 35
Next log sequence to archive 36
Current log sequence 36
SQL>
- 리두로그를 12cr2와 마찬가지로 threa 1, 2 그룹 각각 3개로 설정 멤버는 2개
col group# for 999
col thread# for 999
col member for a50
SELECT A.GROUP#
, B.THREAD#
, B.SEQUENCE#
, A.MEMBER
, A.STATUS
, A.TYPE
, B.BYTES/1024/1024 AS MB
, B.STATUS
FROM V$LOGFILE A
, V$LOG B
WHERE A.GROUP# = B.GROUP#
ORDER BY 1
;
GROUP# THREAD# SEQUENCE# MEMBER STATUS TYPE MB STATUS
------ ------- ---------- -------------------------------------------------- ---------- --------------------- ---------- ----------
1 1 35 +FRA1/ORARCF/ONLINELOG/group_1.499.1222966905 ONLINE 200 INACTIVE
1 1 35 +DATA1/ORARCF/ONLINELOG/group_1.277.1222966907 ONLINE 200 INACTIVE
2 1 36 +FRA1/ORARCF/ONLINELOG/group_2.501.1222966907 ONLINE 200 CURRENT
2 1 36 +DATA1/ORARCF/ONLINELOG/group_2.274.1222966907 ONLINE 200 CURRENT
3 2 1 +FRA1/ORARCF/ONLINELOG/group_3.500.1222968525 ONLINE 200 CURRENT
3 2 1 +DATA1/ORARCF/ONLINELOG/group_3.288.1222968525 ONLINE 200 CURRENT
4 2 0 +FRA1/ORARCF/ONLINELOG/group_4.502.1222968527 ONLINE 200 UNUSED
4 2 0 +DATA1/ORARCF/ONLINELOG/group_4.289.1222968527 ONLINE 200 UNUSED
8 rows selected.
ALTER DATABASE ADD LOGFILE THREAD 1 GROUP 10 '+DATA1', GROUP 20 '+DATA1', GROUP 30 '+DATA1';
ALTER DATABASE ADD LOGFILE THREAD 2 GROUP 40 '+DATA1', GROUP 50 '+DATA1', GROUP 60 '+DATA1';
ALTER SYSTEM ARCHIVE LOG CURRENT;
alter system checkpoint;
col group# for 999
col thread# for 999
col member for a50
SELECT A.GROUP#
, B.THREAD#
, B.SEQUENCE#
, A.MEMBER
, A.STATUS
, A.TYPE
, B.BYTES/1024/1024 AS MB
, B.STATUS
FROM V$LOGFILE A
, V$LOG B
WHERE A.GROUP# = B.GROUP#
ORDER BY 1
;
GROUP# THREAD# SEQUENCE# MEMBER STATUS TYPE MB STATUS
------ ------- ---------- -------------------------------------------------- --------------------- --------------------- ---------- ------------------------------------------------
1 1 35 +FRA1/ORARCF/ONLINELOG/group_1.499.1222966905 ONLINE 200 INACTIVE
1 1 35 +DATA1/ORARCF/ONLINELOG/group_1.277.1222966907 ONLINE 200 INACTIVE
2 1 36 +FRA1/ORARCF/ONLINELOG/group_2.501.1222966907 ONLINE 200 INACTIVE
2 1 36 +DATA1/ORARCF/ONLINELOG/group_2.274.1222966907 ONLINE 200 INACTIVE
3 2 1 +FRA1/ORARCF/ONLINELOG/group_3.500.1222968525 ONLINE 200 INACTIVE
3 2 1 +DATA1/ORARCF/ONLINELOG/group_3.288.1222968525 ONLINE 200 INACTIVE
4 2 2 +FRA1/ORARCF/ONLINELOG/group_4.502.1222968527 ONLINE 200 CURRENT
4 2 2 +DATA1/ORARCF/ONLINELOG/group_4.289.1222968527 ONLINE 200 CURRENT
10 1 37 +DATA1/ORARCF/ONLINELOG/group_10.291.1222969827 ONLINE 100 INACTIVE
20 1 38 +DATA1/ORARCF/ONLINELOG/group_20.292.1222969827 ONLINE 100 INACTIVE
30 1 39 +DATA1/ORARCF/ONLINELOG/group_30.293.1222969827 ONLINE 100 CURRENT
GROUP# THREAD# SEQUENCE# MEMBER STATUS TYPE MB STATUS
------ ------- ---------- -------------------------------------------------- --------------------- --------------------- ---------- ------------------------------------------------
40 2 0 +DATA1/ORARCF/ONLINELOG/group_40.294.1222969833 ONLINE 100 UNUSED
50 2 0 +DATA1/ORARCF/ONLINELOG/group_50.295.1222969833 ONLINE 100 UNUSED
60 2 0 +DATA1/ORARCF/ONLINELOG/group_60.296.1222969833 ONLINE 100 UNUSED
ALTER DATABASE DROP LOGFILE GROUP 1;
ALTER DATABASE DROP LOGFILE GROUP 2;
ALTER DATABASE DROP LOGFILE GROUP 3;
ALTER SYSTEM ARCHIVE LOG CURRENT;
ALTER SYSTEM ARCHIVE LOG CURRENT;
alter system checkpoint;
col group# for 999
col thread# for 999
col member for a50
SELECT A.GROUP#
, B.THREAD#
, B.SEQUENCE#
, A.MEMBER
, A.STATUS
, A.TYPE
, B.BYTES/1024/1024 AS MB
, B.STATUS
FROM V$LOGFILE A
, V$LOG B
WHERE A.GROUP# = B.GROUP#
ORDER BY 1
;
ALTER DATABASE DROP LOGFILE GROUP 4;
ALTER DATABASE ADD LOGFILE THREAD 1 GROUP 1 ('+DATA1', '+FRA1') SIZE 200M, GROUP 2 ('+DATA1', '+FRA1') SIZE 200M, GROUP 3 ('+DATA1', '+FRA1') SIZE 200M;
ALTER DATABASE ADD LOGFILE THREAD 2 GROUP 4 ('+DATA1', '+FRA1') SIZE 200M , GROUP 5 ('+DATA1', '+FRA1') SIZE 200M, GROUP 6 ('+DATA1', '+FRA1') SIZE 200M;
ALTER SYSTEM ARCHIVE LOG CURRENT;
alter system checkpoint;
ALTER DATABASE DROP LOGFILE GROUP 10;
ALTER DATABASE DROP LOGFILE GROUP 20;
ALTER DATABASE DROP LOGFILE GROUP 30;
ALTER DATABASE DROP LOGFILE GROUP 40;
ALTER DATABASE DROP LOGFILE GROUP 50;
ALTER DATABASE DROP LOGFILE GROUP 60;
col group# for 999
col thread# for 999
col member for a50
SELECT A.GROUP#
, B.THREAD#
, B.SEQUENCE#
, A.MEMBER
, A.STATUS
, A.TYPE
, B.BYTES/1024/1024 AS MB
, B.STATUS
FROM V$LOGFILE A
, V$LOG B
WHERE A.GROUP# = B.GROUP#
ORDER BY 1
;
GROUP# THREAD# SEQUENCE# MEMBER STATUS TYPE MB STATUS
------ ------- ---------- -------------------------------------------------- --------------------- --------------------- ---------- ------------------------------------------------
1 1 42 +DATA1/ORARCF/ONLINELOG/group_1.289.1222988443 ONLINE 200 CURRENT
1 1 42 +FRA1/ORARCF/ONLINELOG/group_1.502.1222988443 ONLINE 200 CURRENT
2 1 0 +DATA1/ORARCF/ONLINELOG/group_2.288.1222988443 ONLINE 200 UNUSED
2 1 0 +FRA1/ORARCF/ONLINELOG/group_2.515.1222988443 ONLINE 200 UNUSED
3 1 0 +DATA1/ORARCF/ONLINELOG/group_3.274.1222988443 ONLINE 200 UNUSED
3 1 0 +FRA1/ORARCF/ONLINELOG/group_3.516.1222988443 ONLINE 200 UNUSED
4 2 5 +DATA1/ORARCF/ONLINELOG/group_4.277.1222988447 ONLINE 200 CURRENT
4 2 5 +FRA1/ORARCF/ONLINELOG/group_4.518.1222988447 ONLINE 200 CURRENT
5 2 0 +DATA1/ORARCF/ONLINELOG/group_5.297.1222988447 ONLINE 200 UNUSED
5 2 0 +FRA1/ORARCF/ONLINELOG/group_5.517.1222988447 ONLINE 200 UNUSED
6 2 0 +DATA1/ORARCF/ONLINELOG/group_6.298.1222988447 ONLINE 200 UNUSED
GROUP# THREAD# SEQUENCE# MEMBER STATUS TYPE MB STATUS
------ ------- ---------- -------------------------------------------------- --------------------- --------------------- ---------- ------------------------------------------------
6 2 0 +FRA1/ORARCF/ONLINELOG/group_6.455.1222988447 ONLINE 200 UNUSED
12 rows selected.
4-3. 기존 12cR2의 pfile과 19c 신규 CDB의 pfile을 비교 후 19c 신규 CDB의 spfile 설정을 함
- 기존 12cR2 의 파라미터 정보 확인
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ cat /home/oracle/BACKUP_BEFORE_UPGRADE/pfile_before_upgrade.ora
ORA12RF1.__data_transfer_cache_size=0
ORA12RF2.__data_transfer_cache_size=0
ORA12RF1.__db_cache_size=3808428032
ORA12RF2.__db_cache_size=3825205248
ORA12RF1.__inmemory_ext_roarea=0
ORA12RF2.__inmemory_ext_roarea=0
ORA12RF1.__inmemory_ext_rwarea=0
ORA12RF2.__inmemory_ext_rwarea=0
ORA12RF1.__java_pool_size=16777216
ORA12RF2.__java_pool_size=16777216
ORA12RF1.__large_pool_size=33554432
ORA12RF2.__large_pool_size=33554432
ORA12RF1.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment
ORA12RF2.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment
ORA12RF1.__pga_aggregate_target=1694498816
ORA12RF2.__pga_aggregate_target=1694498816
ORA12RF1.__sga_target=5033164800
ORA12RF2.__sga_target=5033164800
ORA12RF1.__shared_io_pool_size=268435456
ORA12RF2.__shared_io_pool_size=268435456
ORA12RF2.__shared_pool_size=872415232
ORA12RF1.__shared_pool_size=889192448
ORA12RF1.__streams_pool_size=0
ORA12RF2.__streams_pool_size=0
*._optimizer_gather_stats_on_load=FALSE
*.archive_lag_target=0
*.audit_file_dest='/u01/app/oracle/admin/ORA12RF/adump'
*.audit_sys_operations=TRUE
*.audit_trail='OS'
*.cluster_database=TRUE
*.compatible='12.2.0'
*.control_files='+DATA1/ORA12RF/CONTROLFILE/current.261.1213483391','+FRA1/ORA12RF/CONTROLFILE/current.256.1213483391'
*.data_guard_sync_latency=0
*.db_block_size=8192
*.db_create_file_dest='+DATA1'
*.db_create_online_log_dest_1='+DATA1'
*.db_create_online_log_dest_2='+FRA1'
*.db_flashback_retention_target=2880
*.db_name='ORA12RF'
*.db_recovery_file_dest='+FRA1'
*.db_recovery_file_dest_size=34359738368
*.dg_broker_start=FALSE
*.diagnostic_dest='/u01/app/oracle'
*.disk_asynch_io=TRUE
*.dispatchers='(PROTOCOL=TCP) (SERVICE=ORA12RFXDB)'
*.fal_server=''
*.filesystemio_options='SETALL'
*.heat_map='OFF'
family:dw_helper.instance_mode='read-only'
ORA12RF1.instance_number=1
ORA12RF2.instance_number=2
ORA12RF1.local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.240.14)(PORT=1521))'
ORA12RF2.local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.240.15)(PORT=1521))'
*.log_archive_dest_1='LOCATION=+FRA1'
*.log_archive_dest_2=''
*.log_archive_format='%t_%s_%r.ARC'
ORA12RF2.log_archive_format='%t_%s_%r.ARC'
ORA12RF1.log_archive_format='%t_%s_%r.ARC'
*.log_archive_max_processes=4
*.log_archive_min_succeed_dest=1
ORA12RF2.log_archive_trace=0
ORA12RF1.log_archive_trace=0
*.max_string_size='EXTENDED'
*.nls_language='AMERICAN'
*.nls_territory='KOREA'
*.open_cursors=300
*.optimizer_adaptive_plans=FALSE
*.optimizer_adaptive_reporting_only=TRUE
*.optimizer_dynamic_sampling=0
*.parallel_force_local=TRUE
*.parallel_min_servers=0
*.pga_aggregate_limit=0m
*.pga_aggregate_target=1601m
*.processes=1432
*.remote_login_passwordfile='exclusive'
*.resource_manager_plan='FORCE:'
*.sga_target=4800m
*.standby_file_management='MANUAL'
ORA12RF2.thread=2
ORA12RF1.thread=1
*.undo_retention=3600
ORA12RF1.undo_tablespace='UNDOTBS1'
ORA12RF2.undo_tablespace='UNDOTBS2'
*.uniform_log_timestamp_format=FALSE
*.use_large_pages='ONLY'
- 19c CDB의 파라미터 정보 출력
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ . oraenv
ORACLE_SID = [ORA12RF1] ? ORARCF1
ORACLE_HOME = [/home/oracle] ? /u01/app/oracle/product/19.29/db_1
The Oracle base remains unchanged with value /u01/app/oracle
[ORARCF1:oracle@ol7ora12rf1][/home/oracle]$ alias ss
alias ss='rlwrap sqlplus "/as sysdba"'
[ORARCF1:oracle@ol7ora12rf1][/home/oracle]$ ss
SQL*Plus: Release 19.0.0.0.0 - Production on Sun Jan 18 13:43:18 2026
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> create pfile='/u01/app/oracle/product/19.29/db_1/dbs/initORARCF1.ora' from spfile;
File created.
SQL> quit
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.29.0.0.0
[ORARCF1:oracle@ol7ora12rf1][/home/oracle]$ cat /u01/app/oracle/product/19.29/db_1/dbs/initORARCF1.ora
ORARCF1.__data_transfer_cache_size=0
ORARCF2.__data_transfer_cache_size=0
ORARCF1.__db_cache_size=939524096
ORARCF2.__db_cache_size=973078528
ORARCF1.__inmemory_ext_roarea=0
ORARCF2.__inmemory_ext_roarea=0
ORARCF1.__inmemory_ext_rwarea=0
ORARCF2.__inmemory_ext_rwarea=0
ORARCF1.__java_pool_size=0
ORARCF2.__java_pool_size=0
ORARCF1.__large_pool_size=67108864
ORARCF2.__large_pool_size=67108864
ORARCF1.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment
ORARCF2.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment
ORARCF1.__pga_aggregate_target=536870912
ORARCF2.__pga_aggregate_target=536870912
ORARCF1.__sga_target=1610612736
ORARCF2.__sga_target=1610612736
ORARCF1.__shared_io_pool_size=33554432
ORARCF2.__shared_io_pool_size=16777216
ORARCF1.__shared_pool_size=553648128
ORARCF2.__shared_pool_size=536870912
ORARCF1.__streams_pool_size=0
ORARCF2.__streams_pool_size=0
ORARCF1.__unified_pga_pool_size=0
ORARCF2.__unified_pga_pool_size=0
*.audit_file_dest='/u01/app/oracle/admin/ORARCF/adump'
*.audit_trail='db'
*.cluster_database=true
*.compatible='19.0.0'
*.control_files='+FRA1/ORARCF/CONTROLFILE/current.498.1222966905','+DATA1/ORARCF/CONTROLFILE/current.273.1222966905'
*.db_block_size=8192
*.db_create_file_dest='+DATA1'
*.db_create_online_log_dest_1='+FRA1'
*.db_create_online_log_dest_2='+DATA1'
*.db_name='ORARCF'
*.db_recovery_file_dest='+FRA1'
*.db_recovery_file_dest_size=16384m
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=ORARCFXDB)'
*.enable_pluggable_database=true
family:dw_helper.instance_mode='read-only'
ORARCF1.instance_number=1
ORARCF2.instance_number=2
*.local_listener='-oraagent-dummy-'
*.log_archive_dest_1='LOCATION=+FRA1/'
*.max_string_size='EXTENDED'
*.nls_language='AMERICAN'
*.nls_territory='KOREA'
*.open_cursors=300
*.pga_aggregate_target=512m
*.processes=640
*.remote_login_passwordfile='exclusive'
*.sga_target=1536m
ORARCF2.thread=2
ORARCF1.thread=1
*.undo_tablespace='UNDOTBS1'
ORARCF1.undo_tablespace='UNDOTBS1'
ORARCF2.undo_tablespace='UNDOTBS2'
[ORARCF1:oracle@ol7ora12rf1][/home/oracle]$
- 12cR2와 19c DB의 파라미터를 서로 비교하여 아래와 같은 새로운 파라미터 파일을 생성함
[ORARCF1:oracle@ol7ora12rf1][/home/oracle]$ cat > /u01/app/oracle/product/19.29/db_1/dbs/initORARCF1_new.ora << 'EOF'
*.audit_file_dest='/u01/app/oracle/admin/ORARCF/adump'
*.audit_trail='db'
*.cluster_database=true
*.compatible='19.0.0'
*.control_files='+FRA1/ORARCF/CONTROLFILE/current.498.1222966905','+DATA1/ORARCF/CONTROLFILE/current.273.1222966905'
*.db_block_size=8192
*.db_create_file_dest='+DATA1'
*.db_create_online_log_dest_1='+FRA1'
*.db_create_online_log_dest_2='+DATA1'
*.db_name='ORARCF'
*.db_recovery_file_dest='+FRA1'
*.db_recovery_file_dest_size=16384m
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=ORARCFXDB)'
*.enable_pluggable_database=true
family:dw_helper.instance_mode='read-only'
ORARCF2.instance_number=2
ORARCF1.instance_number=1
*.local_listener='-oraagent-dummy-'
*.nls_language='AMERICAN'
*.nls_territory='KOREA'
*.open_cursors=300
*.pga_aggregate_target=512m
*.processes=640
*.remote_login_passwordfile='exclusive'
*.sga_target=2048m
ORARCF1.thread=1
ORARCF2.thread=2
ORARCF1.undo_tablespace='UNDOTBS1'
ORARCF2.undo_tablespace='UNDOTBS2'
*._optimizer_gather_stats_on_load=FALSE
*.audit_sys_operations=TRUE
*.audit_trail='OS'
*.db_flashback_retention_target=2880
*.disk_asynch_io=TRUE
*.heat_map='OFF'
*.max_string_size='EXTENDED'
*.optimizer_adaptive_plans=FALSE
*.optimizer_adaptive_reporting_only=TRUE
*.optimizer_dynamic_sampling=0
*.parallel_force_local=TRUE
*.parallel_min_servers=0
*.pga_aggregate_limit=0m
*.processes=1432
*.remote_login_passwordfile='exclusive'
*.resource_manager_plan='FORCE:'
*.undo_retention=3600
*.uniform_log_timestamp_format=FALSE
EOF
[ORARCF1:oracle@ol7ora12rf1][/home/oracle]$ cat /u01/app/oracle/product/19.29/db_1/dbs/initORARCF1_new.ora
*.audit_file_dest='/u01/app/oracle/admin/ORARCF/adump'
*.audit_trail='db'
*.cluster_database=true
*.compatible='19.0.0'
*.control_files='+FRA1/ORARCF/CONTROLFILE/current.498.1222966905','+DATA1/ORARCF/CONTROLFILE/current.273.1222966905'
*.db_block_size=8192
*.db_create_file_dest='+DATA1'
*.db_create_online_log_dest_1='+FRA1'
*.db_create_online_log_dest_2='+DATA1'
*.db_name='ORARCF'
*.db_recovery_file_dest='+FRA1'
*.db_recovery_file_dest_size=16384m
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=ORARCFXDB)'
*.enable_pluggable_database=true
family:dw_helper.instance_mode='read-only'
ORARCF2.instance_number=2
ORARCF1.instance_number=1
*.local_listener='-oraagent-dummy-'
*.nls_language='AMERICAN'
*.nls_territory='KOREA'
*.open_cursors=300
*.pga_aggregate_target=512m
*.processes=640
*.remote_login_passwordfile='exclusive'
*.sga_target=2048m
ORARCF1.thread=1
ORARCF2.thread=2
ORARCF1.undo_tablespace='UNDOTBS1'
ORARCF2.undo_tablespace='UNDOTBS2'
*._optimizer_gather_stats_on_load=FALSE
*.audit_sys_operations=TRUE
*.audit_trail='OS'
*.db_flashback_retention_target=2880
*.disk_asynch_io=TRUE
*.heat_map='OFF'
*.max_string_size='EXTENDED'
*.optimizer_adaptive_plans=FALSE
*.optimizer_adaptive_reporting_only=TRUE
*.optimizer_dynamic_sampling=0
*.parallel_force_local=TRUE
*.parallel_min_servers=0
*.pga_aggregate_limit=0m
*.processes=1432
*.remote_login_passwordfile='exclusive'
*.resource_manager_plan='FORCE:'
*.undo_retention=3600
*.uniform_log_timestamp_format=FALSE
--grid os user
[+ASM1:grid@ol7ora12rf1][/home/grid]$ mkdir -pv /tmp/backup_for_orarcf
mkdir: created directory ‘/tmp/backup_for_orarcf’
[+ASM1:grid@ol7ora12rf1][/home/grid]$ srvctl config database -db orarcf
Database unique name: ORARCF
Database name: ORARCF
Oracle home: /u01/app/oracle/product/19.29/db_1
Oracle user: oracle
Spfile: +DATA1/ORARCF/PARAMETERFILE/spfile.290.1222968527
Password file: +DATA1/ORARCF/PASSWORD/pwdorarcf.272.1222966899
Domain:
Start options: open
Stop options: immediate
Database role: PRIMARY
Management policy: AUTOMATIC
Server pools:
Disk Groups: DATA1,FRA1
Mount point paths:
Services:
Type: RAC
Start concurrency:
Stop concurrency:
OSDBA group: dba
OSOPER group: oper
Database instances: ORARCF1,ORARCF2
Configured nodes: ol7ora12rf1,ol7ora12rf2
CSS critical: no
CPU count: 0
Memory target: 0
Maximum memory: 0
Default network number for database services:
Database is administrator managed
[+ASM1:grid@ol7ora12rf1][/home/grid]$ asmcmd cp +DATA1/ORARCF/PARAMETERFILE/spfile.290.1222968527 /tmp/backup_for_orarcf/spfileORARCF1.ora
copying +DATA1/ORARCF/PARAMETERFILE/spfile.290.1222862059 -> /tmp/backup_for_orarcf/spfileORARCF1.ora
[+ASM1:grid@ol7ora12rf1][/home/grid]$ chmod 775 /tmp/backup_for_orarcf/spfileORARCF1.ora
--root os user
[root@ol7ora12rf1][/root]$ chown oracle:oinstall /tmp/backup_for_orarcf/spfileORARCF1.ora
--oracle os user
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ cp /tmp/backup_for_orarcf/spfileORARCF1.ora /u01/app/oracle/product/19.29/db_1/dbs
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ . oraenv
ORACLE_SID = [ORA12RF1] ? ORARCF1
ORACLE_HOME = [/home/oracle] ? /u01/app/oracle/product/19.29/db_1
The Oracle base remains unchanged with value /u01/app/oracle
[ORARCF1:oracle@ol7ora12rf1][/home/oracle]$ alias ss
alias ss='rlwrap sqlplus "/as sysdba"'
[ORARCF1:oracle@ol7ora12rf1][/home/oracle]$ ss
SQL*Plus: Release 19.0.0.0.0 - Production on Sun Jan 18 14:10:23 2026
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> create spfile='+DATA1' from pfile='/u01/app/oracle/product/19.29/db_1/dbs/initORARCF1_new.ora';
File created.
SQL> quit
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.29.0.0.0
[ORARCF1:oracle@ol7ora12rf1][/home/oracle]$ /u01/app/oracle/product/19.29/db_1/bin/srvctl config database -db orarcf | grep -i spfile
Spfile: +DATA1/ORARCF/PARAMETERFILE/spfile.296.1222988853
[ORARCF1:oracle@ol7ora12rf1][/home/oracle]$ /u01/app/oracle/product/19.29/db_1/bin/srvctl stop database -db orarcf
[ORARCF1:oracle@ol7ora12rf1][/home/oracle]$ /u01/app/oracle/product/19.29/db_1/bin/srvctl start database -db orarcf
[ORARCF1:oracle@ol7ora12rf1][/home/oracle]$ alias ss
alias ss='rlwrap sqlplus "/as sysdba"'
[ORARCF1:oracle@ol7ora12rf1][/home/oracle]$ ss
SQL*Plus: Release 19.0.0.0.0 - Production on Sun Jan 18 14:21:13 2026
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 300
SQL> show parameter heat_map
NAME TYPE VALUE
------------------------------------ --------------------------------- ------------------------------
heat_map string OFF
SQL> show parameter "_optimizer_gather_stats_on_load"
NAME TYPE VALUE
------------------------------------ --------------------------------- ------------------------------
_optimizer_gather_stats_on_load boolean FALSE
SQL>
5. 19c DB로 업그레이드
5-1. PDB Plug-in 호환성 사전 검증 (Manual Check)
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ echo $ORACLE_SID
ORA12RF1
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ srvctl stop database -d ora12rf
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ alias ss
alias ss='rlwrap sqlplus "/as sysdba"'
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ ss
SQL*Plus: Release 12.2.0.1.0 Production on Mon Jan 19 23:18:24 2026
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to an idle instance.
[ol7ora12rf1]<SYS@ORA12RF1>$ STARTUP MOUNT;
ORACLE instance started.
Total System Global Area 5033164800 bytes
Fixed Size 8631048 bytes
Variable Size 1476398328 bytes
Database Buffers 3539992576 bytes
Redo Buffers 8142848 bytes
Database mounted.
[ol7ora12rf1]<SYS@ORA12RF1>$ ALTER DATABASE OPEN READ ONLY;
Database altered.
Elapsed: 00:00:00.45
[ol7ora12rf1]<SYS@ORA12RF1>$ EXEC DBMS_PDB.DESCRIBE(pdb_descr_file => '/home/oracle/ORA12RF_monitor.xml');
PL/SQL procedure successfully completed.
Elapsed: 00:00:00.11
[ol7ora12rf1]<SYS@ORA12RF1>$ SHUTDOWN IMMEDIATE;
Database closed.
Database dismounted.
ORACLE instance shut down.
[ol7ora12rf1]<SYS@ORA12RF1>$ quit
Disconnected from Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ srvctl start database -d ora12rf
[ol7ora12rf1]<SYS@ORA12RF1>$ quit
Disconnected from Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
- 타겟 CDB(19c)에서 호환성 체크 실행
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ srvctl start database -d ora12rf
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ . oraenv
ORACLE_SID = [ORA12RF1] ? ORARCF1
ORACLE_HOME = [/home/oracle] ? /u01/app/oracle/product/19.29/db_1
The Oracle base remains unchanged with value /u01/app/oracle
[ORARCF1:oracle@ol7ora12rf1][/home/oracle]$ ss
SQL*Plus: Release 19.0.0.0.0 - Production on Mon Jan 19 23:21:39 2026
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 SERVEROUTPUT ON
DECLARE
l_result BOOLEAN;
BEGIN
l_result := DBMS_PDB.check_plug_compatibility(
pdb_descr_file => '/home/oracle/ORA12RF_monitor.xml',
pdb_name => 'PDB1');
IF l_result THEN
DBMS_OUTPUT.PUT_LINE('compatible');
ELSE
DBMS_OUTPUT.PUT_LINE('incompatible');
END IF;
END;
/
SQL>
COL MESSAGE FOR A60
COL ACTION FOR A40
COL NAME FOR A10
SET LINES 200 PAGES 100
SELECT NAME
, TYPE
, MESSAGE
, ACTION
FROM PDB_PLUG_IN_VIOLATIONS
WHERE NAME = 'PDB1'
AND STATUS <> 'RESOLVED'
ORDER BY TIME;
NAME TYPE MESSAGE ACTION
---------- --------------------------- ------------------------------------------------------------ ----------------------------------------
PDB1 WARNING PDB plugged in is a non-CDB, requires noncdb_to_pdb.sql be r Run noncdb_to_pdb.sql.
un.
PDB1 ERROR PDB's version does not match CDB's version: PDB's version 12 Either upgrade the PDB or reload the com
.2.0.1.0. CDB's version 19.0.0.0.0. ponents in the PDB.
PDB1 WARNING CDB parameter use_large_pages mismatch: Previous 'ONLY' Curr Please check the parameter in the curren
ent 'TRUE' t CDB
PDB1 WARNING CDB parameter filesystemio_options mismatch: Previous 'SETAL Please check the parameter in the curren
L' Current 'none' t CDB
PDB1 WARNING CDB parameter sga_target mismatch: Previous 4800M Current 2G Please check the parameter in the curren
t CDB
PDB1 WARNING CDB parameter compatible mismatch: Previous '12.2.0' Current Please check the parameter in the curren
'19.0.0' t CDB
PDB1 WARNING CDB parameter pga_aggregate_target mismatch: Previous 1601M Please check the parameter in the curren
Current 512M t CDB
PDB1 ERROR DBRU bundle patch 220118 (DATABASE JAN 2022 RELEASE UPDATE 1 Call datapatch to install in the PDB or
2.2.0.1.220118): Not installed in the CDB but installed in t the CDB
he PDB
PDB1 ERROR '19.29.0.0.0 Release_Update 2510020053' is installed in the Call datapatch to install in the PDB or
CDB but no release updates are installed in the PDB the CDB
9 rows selected.
5-2. AutoUpgrade 작업
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ mkdir -pv /home/oracle/autoupgrade_work
mkdir: created directory ‘/home/oracle/autoupgrade_work’
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ cat > /home/oracle/autoupgrade_work/noncdb_to_pdb.cfg << 'EOF'
global.autoupg_log_dir=/home/oracle/autoupgrade_work/logs
# Source Database Info
upg1.source_home=/u01/app/oracle/product/12c/db_1
upg1.sid=ORA12RF1
# Target Database Info
upg1.target_home=/u01/app/oracle/product/19.29/db_1
upg1.target_cdb=ORARCF1
upg1.target_pdb_name=PDB1
# Options
upg1.start_time=NOW
upg1.upgrade_node=ol7ora12rf1
upg1.run_utlrp=yes
upg1.timezone_upg=yes
upg1.target_pdb_copy_option=file_name_convert=NONE
EOF
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ cat /home/oracle/autoupgrade_work/noncdb_to_pdb.cfg
global.autoupg_log_dir=/home/oracle/autoupgrade_work/logs
# Source Database Info
upg1.source_home=/u01/app/oracle/product/12c/db_1
upg1.sid=ORA12RF1
# Target Database Info
upg1.target_home=/u01/app/oracle/product/19.29/db_1
upg1.target_cdb=ORARCF1
upg1.target_pdb_name=PDB1
# Options
upg1.start_time=NOW
upg1.upgrade_node=ol7ora12rf1
upg1.run_utlrp=yes
upg1.timezone_upg=yes
upg1.target_pdb_copy_option=file_name_convert=NONE
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ export JAVA_HOME=/u01/app/oracle/product/19.29/db_1/jdk
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ export PATH=$JAVA_HOME/bin:$PATH
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ java -version
java version "1.8.0_461"
Java(TM) SE Runtime Environment (build 1.8.0_461-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.461-b11, mixed mode)
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ java -jar /u01/app/oracle/product/19.29/db_1/rdbms/admin/autoupgrade.jar \
-config /home/oracle/autoupgrade_work/noncdb_to_pdb.cfg \
-mode analyze
AutoUpgrade 25.6.251016 launched with default internal options
Processing config file ...
Note: The following parameters specified in the configuration file have not been used:
global.keeplogs
Be sure that each parameter is spelled correctly and applies to the utility
requested, as misspelled or unknown parameters are ignored by AutoUpgrade.
For supported parameters, see section "AutoUpgrade Utility Configuration Files
Parameters and Options" in the Oracle Database Upgrade Guide.
+--------------------------------+
| Starting AutoUpgrade execution |
+--------------------------------+
1 Non-CDB(s) will be analyzed
Type 'help' to list console commands
upg> Job 100 completed
------------------- Final Summary --------------------
Number of databases [ 1 ]
Jobs finished [1]
Jobs failed [0]
Please check the summary report at:
/home/oracle/autoupgrade_work/logs/cfgtoollogs/upgrade/auto/status/status.html
/home/oracle/autoupgrade_work/logs/cfgtoollogs/upgrade/auto/status/status.log
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$
--해당 디렉토리 이하의 모든 로그 파일 확인
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle/autoupgrade_work]$
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ alias ss
alias ss='rlwrap sqlplus "/as sysdba"'
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ echo $ORACLE_SID
ORA12RF1
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ echo $ORACLE_HOME
/u01/app/oracle/product/12c/db_1
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ ss
SQL*Plus: Release 12.2.0.1.0 Production on Sun Jan 18 14:45:12 2026
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
[ol7ora12rf1]<SYS@ORA12RF1>$
[ol7ora12rf1]<SYS@ORA12RF1>$ EXEC DBMS_AUDIT_MGMT.FLUSH_UNIFIED_AUDIT_TRAIL;
PL/SQL procedure successfully completed.
Elapsed: 00:00:00.04
[ol7ora12rf1]<SYS@ORA12RF1>$ EXEC DBMS_AUDIT_MGMT.LOAD_UNIFIED_AUDIT_FILES;
PL/SQL procedure successfully completed.
Elapsed: 00:00:00.52
[ol7ora12rf1]<SYS@ORA12RF1>$ EXEC DBMS_STATS.GATHER_DICTIONARY_STATS;
PL/SQL procedure successfully completed.
Elapsed: 00:00:00.52
set line 1000
set pages 5000
col tablespace_name for a30
col file_name for a80
col free_space for 9999999
compute sum of total_space on report
compute sum of free_space on report
compute sum of MAX_SPACE on report
break on tablespace_name on report nodup
SELECT c.tablespace_name
,a.autoextensible
,a.file_name
,a.total_space
,b.free_space
, round(b.free_space/a.total_space *100,2) "Free%"
,a.max_space
FROM (SELECT file_id
,file_name
,sum(bytes)/1024/1024 total_space
,sum(MAXBYTES)/1024/1024/1024 max_space
,autoextensible
FROM dba_data_files
GROUP BY file_id
,file_name
,autoextensible) a
,(SELECT file_id
,nvl(sum(bytes)/1024/1024,0) free_space
FROM dba_free_space
GROUP BY file_id) b
, (SELECT tablespace_name
,file_id
FROM dba_data_files) c
WHERE a.file_id=b.file_id(+)
AND a.file_id=c.file_id
ORDER BY tablespace_name;
TABLESPACE_NAME AUTOEXTEN FILE_NAME TOTAL_SPACE FREE_SPACE Free% MAX_SPACE
------------------------------ --------- -------------------------------------------------------------------------------- ----------- ---------- ---------- ----------
SYSAUX YES +DATA1/ORA12RF/DATAFILE/sysaux.258.1213483329 7208 931 12.92 31.9999847
SYSTEM YES +DATA1/ORA12RF/DATAFILE/system.257.1213483305 868.8125 1 .12 31.9999847
UNDOTBS1 YES +DATA1/ORA12RF/DATAFILE/undotbs1.259.1213483345 2490 2421 97.22 31.9999847
UNDOTBS2 YES +DATA1/ORA12RF/DATAFILE/undotbs2.266.1213483407 10100 10065 99.65 31.9999847
USERS YES +DATA1/ORA12RF/DATAFILE/users.260.1213483345 41.25 2 5.45 31.9999847
****************************** ----------- ---------- ----------
sum 20708.0625 13420 159.999924
5 rows selected.
Elapsed: 00:00:00.05
[ol7ora12rf1]<SYS@ORA12RF1>$ ALTER DATABASE DATAFILE '+DATA1/ORA12RF/DATAFILE/system.257.1213483305' RESIZE 2G;
Database altered.
Elapsed: 00:00:00.78
[ol7ora12rf1]<SYS@ORA12RF1>$ quit
Disconnected from Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
--oracle os user
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ mv /u01/app/oracle/product/12c/db_1/sqlplus/admin/glogin.sql /u01/app/oracle/product/12c/db_1/sqlplus/admin/glogin.sql.bak
[ORA12RF2:oracle@ol7ora12rf2][/home/oracle]$ mv /u01/app/oracle/product/12c/db_1/sqlplus/admin/glogin.sql /u01/app/oracle/product/12c/db_1/sqlplus/admin/glogin.sql.bak
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$
java -jar /u01/app/oracle/product/19.29/db_1/rdbms/admin/autoupgrade.jar \
-config /home/oracle/autoupgrade_work/noncdb_to_pdb.cfg \
-mode deploy
--nohup를 사용할 경우------------------------------------------------------------------
nohup java -jar /u01/app/oracle/product/19.29/db_1/rdbms/admin/autoupgrade.jar \
-config /home/oracle/autoupgrade_work/noncdb_to_pdb.cfg \
-mode deploy > /home/oracle/autoupgrade_work/upgrade.log 2>&1 &
--------------------------------------------------------------------------------------
upg> status
Config
User configuration file [/home/oracle/autoupgrade_work/noncdb_to_pdb.cfg]
General logs location [/home/oracle/autoupgrade_work/logs/cfgtoollogs/upgrade/auto]
Mode [DEPLOY]
Jobs Summary
Total databases in configuration file [1]
Total Non-CDB being processed [1]
Total Containers being processed [0]
Jobs finished successfully [0]
Jobs finished/stopped [0]
Jobs in progress [1]
Progress
+---+---------------------------------------------------------+
|Job| Progress|
+---+---------------------------------------------------------+
|101|[|||||||||||||||||||||||| ] 46 %|
+---+---------------------------------------------------------+
upg> lsj
+----+--------+---------+---------+-------+----------+--------+-----------+
|Job#| DB_NAME| STAGE|OPERATION| STATUS|START_TIME| UPDATED| MESSAGE|
+----+--------+---------+---------+-------+----------+--------+-----------+
| 101|ORA12RF1|DBUPGRADE|EXECUTING|RUNNING| 10:49:17|112s ago|0%Upgraded |
+----+--------+---------+---------+-------+----------+--------+-----------+
Total jobs 1
upg> status -job 101
Details
Job No 101
Oracle SID ORA12RF1
Start Time 26/01/20 10:49:17
Elapsed (min): 5
End time: N/A
Logfiles
Logs Base: /home/oracle/autoupgrade_work/logs/ORA12RF1
Job logs: /home/oracle/autoupgrade_work/logs/ORA12RF1/101
Stage logs: /home/oracle/autoupgrade_work/logs/ORA12RF1/101/dbupgrade
TimeZone: /home/oracle/autoupgrade_work/logs/ORA12RF1/temp
Remote Dirs:
Stages
SETUP <1 min
GRP <1 min
PREUPGRADE <1 min
PRECHECKS <1 min
PREFIXUPS <1 min
DRAIN 2 min
DBUPGRADE ~2 min (RUNNING)
POSTCHECKS
POSTFIXUPS
POSTUPGRADE
NONCDBTOPDB
SYSUPDATES
Stage-Progress Per Container
+--------+---------+
|Database|DBUPGRADE|
+--------+---------+
|ORA12RF1| 21 % |
+--------+---------+
upg>
Job 100 completed
------------------- Final Summary --------------------
Number of databases [ 1 ]
Jobs finished [1]
Jobs failed [0]
Jobs restored [0]
Jobs pending [0]
Please check the summary report at:
/home/oracle/autoupgrade_work/logs/cfgtoollogs/upgrade/auto/status/status.html
/home/oracle/autoupgrade_work/logs/cfgtoollogs/upgrade/auto/status/status.log
- 만약 autoupgrade의 deploy 작업을 처음부터 다시하고 싶다면
--12cr2에서 아래와 같이 플래시백 데이터베이스 복구할 것
--1번 노드
STARTUP MOUNT;
FLASHBACK DATABASE TO RESTORE POINT BEFORE_UPGRADE;
ALTER DATABASE OPEN RESETLOGS;
--2번 노드 오픈
startup;
5-3. 업그레이드 후 후속 작업
- .bash_profile 수정
--1번 노드
--oracle os user
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ vi ~oracle/.bash_profile
[ORARCF1:oracle@ol7ora12rf1][/home/oracle]$ cat ~oracle/.bash_profile | egrep -i 'DB_HOME|ORACLE_UNQNAME|ORACLE_DBNAME|ORACLE_SID|ORACLE_HOME'
#export ORACLE_UNQNAME=ORA12RF
#export ORACLE_UNQNAME_LOWER=ora12rf
export ORACLE_UNQNAME=ORARCF
export ORACLE_UNQNAME_LOWER=orarcf
#export DB_HOME=$ORACLE_BASE/product/12c/db_1
export DB_HOME=$ORACLE_BASE/product/19.29/db_1
export ORACLE_HOME=$DB_HOME
#export ORACLE_DBNAME=ORA12RF
#export ORACLE_DBNAME_LOWER=ora12rf
#export ORACLE_SID=ORA12RF1
#export ORACLE_SID_LOWER=ora12rf1
export ORACLE_DBNAME=ORARCF
export ORACLE_DBNAME_LOWER=orarcf
export ORACLE_SID=ORARCF1
export ORACLE_SID_LOWER=orarcf1
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
export PS1='[$ORACLE_SID:\u@\h][$PWD]$ '
alias cdt='cd $ORACLE_HOME/network/admin'
alias cdo='cd $ORACLE_HOME'
alias cdod='cd $ORACLE_HOME/dbs'
alias alog='tail -f $ORACLE_BASE/diag/rdbms/$ORACLE_UNQNAME_LOWER/$ORACLE_SID/trace/alert_$ORACLE_SID.log'
alias valog='vi -R $ORACLE_BASE/diag/rdbms/$ORACLE_UNQNAME_LOWER/$ORACLE_SID/trace/alert_$ORACLE_SID.log'
#alias cdord='cd $ORACLE_BASE/oradata/$ORACLE_SID' #for FileSystem
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'
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ source ~oracle/.bash_profile
--root os user
[root@ol7ora12rf1][/root]$ vi ~root/.bash_profile
[root@ol7ora12rf1][/root]$ cat ~root/.bash_profile | egrep -i 'DB_HOME'
#export DB_HOME=$ORACLE_BASE/product/12c/db_1
export DB_HOME=$ORACLE_BASE/product/19.29/db_1
[root@ol7ora12rf1][/root]$ source ~root/.bash_profile
--grid os user
[+ASM1:grid@ol7ora12rf1][/home/grid]$ vi ~grid/.bash_profile
[+ASM1:grid@ol7ora12rf1][/home/grid]$ cat ~grid/.bash_profile | egrep -i 'DB_HOME|ORACLE_USER'
#export DB_HOME=$ORACLE_BASE/product/12c/db_1
export DB_HOME=$ORACLE_BASE/product/19.29/db_1
export ORACLE_USER_ORACLE_SID=ORARCF1
export ORACLE_USER_ORACLE_SID_LOWEWR=orarcf1
[+ASM1:grid@ol7ora12rf1][/home/grid]$ source ~grid/.bash_profile
--2번 노드
--oracle os user
[ORA12RF2:oracle@ol7ora12rf2][/home/oracle]$ vi ~oracle/.bash_profile
[ORA12RF2:oracle@ol7ora12rf2][/home/oracle]$ cat ~oracle/.bash_profile | egrep -i 'DB_HOME|ORACLE_UNQNAME|ORACLE_DBNAME|ORACLE_SID|ORACLE_HOME'
#export ORACLE_UNQNAME=ORA12RF
#export ORACLE_UNQNAME_LOWER=ora12rf
export ORACLE_UNQNAME=ORARCF
export ORACLE_UNQNAME_LOWER=orarcf
#export DB_HOME=$ORACLE_BASE/product/12c/db_1
export DB_HOME=$ORACLE_BASE/product/19.29/db_1
export ORACLE_HOME=$DB_HOME
#export ORACLE_DBNAME=ORA12RF
#export ORACLE_DBNAME_LOWER=ora12rf
#export ORACLE_SID=ORA12RF2
#export ORACLE_SID_LOWER=ora12rf2
export ORACLE_DBNAME=ORARCF
export ORACLE_DBNAME_LOWER=orarcf
export ORACLE_SID=ORARCF2
export ORACLE_SID_LOWER=orarcf2
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
export PS1='[$ORACLE_SID:\u@\h][$PWD]$ '
alias cdt='cd $ORACLE_HOME/network/admin'
alias cdo='cd $ORACLE_HOME'
alias cdod='cd $ORACLE_HOME/dbs'
alias alog='tail -f $ORACLE_BASE/diag/rdbms/$ORACLE_UNQNAME_LOWER/$ORACLE_SID/trace/alert_$ORACLE_SID.log'
alias valog='vi -R $ORACLE_BASE/diag/rdbms/$ORACLE_UNQNAME_LOWER/$ORACLE_SID/trace/alert_$ORACLE_SID.log'
#alias cdord='cd $ORACLE_BASE/oradata/$ORACLE_SID' #for FileSystem
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'
[ORA12RF2:oracle@ol7ora12rf2][/home/oracle]$ source ~oracle/.bash_profile
--root os user
[root@ol7ora12rf2][/root]$ vi ~root/.bash_profile
[root@ol7ora12rf2][/root]$ cat ~root/.bash_profile | egrep -i 'DB_HOME'
#export DB_HOME=$ORACLE_BASE/product/12c/db_1
export DB_HOME=$ORACLE_BASE/product/19.29/db_1
[root@ol7ora12rf2][/root]$ source ~root/.bash_profile
--grid os user
[+ASM2:grid@ol7ora12rf2][/home/grid]$ vi ~grid/.bash_profile
[+ASM2:grid@ol7ora12rf2][/home/grid]$ cat ~grid/.bash_profile | egrep -i 'DB_HOME|ORACLE_USER'
#export DB_HOME=$ORACLE_BASE/product/12c/db_1
export DB_HOME=$ORACLE_BASE/product/19.29/db_1
export ORACLE_USER_ORACLE_SID=ORARCF2
export ORACLE_USER_ORACLE_SID_LOWEWR=orarcf2
[+ASM2:grid@ol7ora12rf2][/home/grid]$ source ~grid/.bash_profile
- glogin.sql 파일 활성화
[ORARCF1:oracle@ol7ora12rf1][/home/oracle]$ mv $ORACLE_HOME/sqlplus/admin/glogin.sql.bak.before_dbca $ORACLE_HOME/sqlplus/admin/glogin.sql
[ORARCF2:oracle@ol7ora12rf2][/home/oracle]$ mv $ORACLE_HOME/sqlplus/admin/glogin.sql.bak.before_dbca $ORACLE_HOME/sqlplus/admin/glogin.sql
- datapatch 확인
[ORARCF1:oracle@ol7ora12rf1][/home/oracle]$ alias ss
alias ss='rlwrap sqlplus "/as sysdba"'
[ORARCF1:oracle@ol7ora12rf1][/home/oracle]$ ss
SQL*Plus: Release 19.0.0.0.0 - Production on Tue Jan 20 22:34:29 2026
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
[ol7ora12rf1]<SYS@ORARCF1>$ show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB1 READ WRITE NO
[ol7ora12rf1]<SYS@ORARCF1>$
SET LINESIZE 200
SET PAGESIZE 100
COL ACTION_TIME FORMAT A20
COL PATCH_ID FORMAT 99999999
COL ACTION FORMAT A10
COL STATUS FORMAT A10
COL DESCRIPTION FORMAT A60
COL PDB_NAME FORMAT A15
SELECT
TO_CHAR(ACTION_TIME, 'YYYY-MM-DD HH24:MI:SS') AS ACTION_TIME
, CON_ID
, PATCH_ID
, ACTION
, STATUS
, DESCRIPTION
FROM CDB_REGISTRY_SQLPATCH
ORDER BY ACTION_TIME
;
ACTION_TIME CON_ID PATCH_ID ACTION STATUS DESCRIPTION
-------------------- ---------- --------- ---------- ---------- ------------------------------------------------------------
2026-01-19 17:25:34 1 38291812 APPLY SUCCESS Database Release Update : 19.29.0.0.251021 (38291812)
2026-01-20 18:41:12 3 38291812 APPLY SUCCESS Database Release Update : 19.29.0.0.251021 (38291812)
- 컴포넌트 확인
[ORARCF1:oracle@ol7ora12rf1][/home/oracle]$ alias ss
alias ss='rlwrap sqlplus "/as sysdba"'
[ORARCF1:oracle@ol7ora12rf1][/home/oracle]$ ss
SQL*Plus: Release 19.0.0.0.0 - Production on Tue Jan 20 22:43:03 2026
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
[ol7ora12rf1]<SYS@ORARCF1>$
set linesize 200
col comp_id for a10
col comp_name for a50
col VERSION for a20
col STATUS for a10
col con_id for 99999
col PROCEDURE for a50
select comp_id, comp_name, VERSION, STATUS, CON_ID, "PROCEDURE" from cdb_registry;
COMP_ID COMP_NAME VERSION STATUS CON_ID PROCEDURE
---------- -------------------------------------------------- -------------------- ---------- ------ --------------------------------------------------
CATALOG Oracle Database Catalog Views 19.0.0.0.0 VALID 1 DBMS_REGISTRY_SYS.VALIDATE_CATALOG
CATPROC Oracle Database Packages and Types 19.0.0.0.0 VALID 1 DBMS_REGISTRY_SYS.VALIDATE_CATPROC
RAC Oracle Real Application Clusters 19.0.0.0.0 VALID 1 DBMS_CLUSTDB.VALIDATE
JAVAVM JServer JAVA Virtual Machine 19.0.0.0.0 VALID 1 INITJVMAUX.VALIDATE_JAVAVM
XML Oracle XDK 19.0.0.0.0 VALID 1 XMLVALIDATE
CATJAVA Oracle Database Java Packages 19.0.0.0.0 VALID 1 DBMS_REGISTRY_SYS.VALIDATE_CATJAVA
APS OLAP Analytic Workspace 19.0.0.0.0 VALID 1 APS_VALIDATE
XDB Oracle XML Database 19.0.0.0.0 VALID 1 DBMS_REGXDB.VALIDATEXDB
OWM Oracle Workspace Manager 19.0.0.0.0 VALID 1 VALIDATE_OWM
CONTEXT Oracle Text 19.0.0.0.0 VALID 1 VALIDATE_CONTEXT
ORDIM Oracle Multimedia 19.0.0.0.0 VALID 1 VALIDATE_ORDIM
SDO Spatial 19.0.0.0.0 VALID 1 VALIDATE_SDO
XOQ Oracle OLAP API 19.0.0.0.0 VALID 1 XOQ_VALIDATE
OLS Oracle Label Security 19.0.0.0.0 VALID 1 VALIDATE_OLS
DV Oracle Database Vault 19.0.0.0.0 VALID 1 VALIDATE_DV
CATALOG Oracle Database Catalog Views 19.0.0.0.0 VALID 3 DBMS_REGISTRY_SYS.VALIDATE_CATALOG
CATPROC Oracle Database Packages and Types 19.0.0.0.0 VALID 3 DBMS_REGISTRY_SYS.VALIDATE_CATPROC
JAVAVM JServer JAVA Virtual Machine 19.0.0.0.0 VALID 3 INITJVMAUX.VALIDATE_JAVAVM
XML Oracle XDK 19.0.0.0.0 VALID 3 XMLVALIDATE
CATJAVA Oracle Database Java Packages 19.0.0.0.0 VALID 3 DBMS_REGISTRY_SYS.VALIDATE_CATJAVA
APS OLAP Analytic Workspace 19.0.0.0.0 VALID 3 APS_VALIDATE
RAC Oracle Real Application Clusters 19.0.0.0.0 VALID 3 DBMS_CLUSTDB.VALIDATE
XDB Oracle XML Database 19.0.0.0.0 VALID 3 DBMS_REGXDB.VALIDATEXDB
OWM Oracle Workspace Manager 19.0.0.0.0 VALID 3 VALIDATE_OWM
CONTEXT Oracle Text 19.0.0.0.0 VALID 3 VALIDATE_CONTEXT
ORDIM Oracle Multimedia 19.0.0.0.0 VALID 3 VALIDATE_ORDIM
SDO Spatial 19.0.0.0.0 VALID 3 VALIDATE_SDO
XOQ Oracle OLAP API 19.0.0.0.0 VALID 3 XOQ_VALIDATE
OLS Oracle Label Security 19.0.0.0.0 VALID 3 VALIDATE_OLS
DV Oracle Database Vault 19.0.0.0.0 VALID 3 VALIDATE_DV
30 rows selected.
Elapsed: 00:00:00.02
- 타임존 확인
[ORARCF1:oracle@ol7ora12rf1][/home/oracle]$ alias ss
alias ss='rlwrap sqlplus "/as sysdba"'
[ORARCF1:oracle@ol7ora12rf1][/home/oracle]$ ss
SQL*Plus: Release 19.0.0.0.0 - Production on Tue Jan 20 22:44:58 2026
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
[ol7ora12rf1]<SYS@ORARCF1>$
-- SQL*Plus Formatting
SET LINESIZE 200
SET PAGESIZE 100
COL PROPERTY_NAME FORMAT A30
COL PROPERTY_VALUE FORMAT A20
COL DESCRIPTION FORMAT A40
COL FILENAME FORMAT A15
COL VERSION FORMAT 999
COL CON_ID FORMAT 999
-- 1. 현재 인스턴스(CDB$ROOT 및 PDB)의 타임존 파일 버전 확인
SELECT
con_id
, filename
, version
FROM v$timezone_file
ORDER BY
con_id;
CON_ID FILENAME VERSION
------ --------------- -------
0 timezlrg_44.dat 44
1 row selected.
Elapsed: 00:00:00.01
-- 2. 데이터베이스 속성 내 DST 버전 정보 확인 (CDB/PDB 전체)
SELECT
con_id
, property_name
, property_value
, description
FROM cdb_properties
WHERE property_name LIKE 'DST_%'
ORDER BY
con_id
, property_name;
CON_ID PROPERTY_NAME PROPERTY_VALUE DESCRIPTION
------ ------------------------------ -------------------- ----------------------------------------
1 DST_PRIMARY_TT_VERSION 44 Version of primary timezone data file
1 DST_SECONDARY_TT_VERSION 0 Version of secondary timezone data file
1 DST_UPGRADE_STATE NONE State of Day Light Saving Time Upgrade
3 DST_PRIMARY_TT_VERSION 44 Version of primary timezone data file
3 DST_SECONDARY_TT_VERSION 0 Version of secondary timezone data file
3 DST_UPGRADE_STATE NONE State of Day Light Saving Time Upgrade
6 rows selected.
Elapsed: 00:00:00.14
- invalid 객체 확인
[ORARCF1:oracle@ol7ora12rf1][/home/oracle]$ alias ss
alias ss='rlwrap sqlplus "/as sysdba"'
[ORARCF1:oracle@ol7ora12rf1][/home/oracle]$ ss
SQL*Plus: Release 19.0.0.0.0 - Production on Tue Jan 20 22:44:58 2026
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
[ol7ora12rf1]<SYS@ORARCF1>$
--아래의 sql문을 실행 시켜 invalid object 컴파일
SET LINESIZE 200
SET PAGESIZE 1000
SET COLSEP ' | '
SET FEEDBACK OFF
SET VERIFY OFF
COL OWNER FORMAT A20 HEADING "Owner"
COL OBJECT_NAME FORMAT A30 HEADING "Object Name"
COL OBJECT_TYPE FORMAT A20 HEADING "Type"
COL STATUS FORMAT A10 HEADING "Status"
COL CON_ID FORMAT 999 HEADING "ConID"
COL DDL_COMMAND FORMAT A80 HEADING "Compilation Command"
-- Main Query
SELECT OWNER
, OBJECT_NAME
, OBJECT_TYPE
, STATUS
, CON_ID
, DDL_COMMAND
FROM (
-- 1. Standard Objects (PROCEDURE, FUNCTION, VIEW, TRIGGER, PACKAGE, TYPE, MATERIALIZED VIEW)
SELECT OWNER
, OBJECT_NAME
, STATUS
, OBJECT_TYPE
, CON_ID
, 'ALTER ' || OBJECT_TYPE || ' "' || OWNER || '"."' || OBJECT_NAME || '" COMPILE;' AS DDL_COMMAND
, 1 AS SORT_ORDER
FROM CDB_OBJECTS
WHERE STATUS = 'INVALID'
AND OBJECT_TYPE IN ('PROCEDURE', 'FUNCTION', 'VIEW', 'TRIGGER', 'PACKAGE', 'TYPE', 'MATERIALIZED VIEW', 'LIBRARY', 'INDEXTYPE')
UNION ALL
-- 2. Body Objects (PACKAGE BODY, TYPE BODY)
SELECT OWNER
, OBJECT_NAME
, STATUS
, OBJECT_TYPE
, CON_ID
, 'ALTER ' || REPLACE(OBJECT_TYPE, ' BODY', '') || ' "' || OWNER || '"."' || OBJECT_NAME || '" COMPILE BODY;' AS DDL_COMMAND
, 2 AS SORT_ORDER
FROM CDB_OBJECTS
WHERE STATUS = 'INVALID'
AND OBJECT_TYPE IN ('PACKAGE BODY', 'TYPE BODY')
UNION ALL
-- 3. Public Synonyms (Requires Special Syntax)
SELECT OWNER
, OBJECT_NAME
, STATUS
, OBJECT_TYPE
, CON_ID
, 'ALTER PUBLIC SYNONYM "' || OBJECT_NAME || '" COMPILE;' AS DDL_COMMAND
, 3 AS SORT_ORDER
FROM CDB_OBJECTS
WHERE STATUS = 'INVALID'
AND OBJECT_TYPE = 'SYNONYM'
AND OWNER = 'PUBLIC'
)
ORDER BY CON_ID
, SORT_ORDER
, OWNER
, OBJECT_NAME;
Owner | Object Name | Type | Status | ConID | Compilation Command
-------------------- | ------------------------------ | -------------------- | ---------- | ----- | --------------------------------------------------------------------------------
HR | ADD_JOB_HISTORY | PROCEDURE | INVALID | 3 | ALTER PROCEDURE "HR"."ADD_JOB_HISTORY" COMPILE;
HR | SECURE_DML | PROCEDURE | INVALID | 3 | ALTER PROCEDURE "HR"."SECURE_DML" COMPILE;
HR | SECURE_EMPLOYEES | TRIGGER | INVALID | 3 | ALTER TRIGGER "HR"."SECURE_EMPLOYEES" COMPILE;
HR | UPDATE_JOB_HISTORY | TRIGGER | INVALID | 3 | ALTER TRIGGER "HR"."UPDATE_JOB_HISTORY" COMPILE;
Elapsed: 00:00:00.03
[ol7ora12rf1]<SYS@ORARCF1>$ SHOW PDBS;
CON_ID | CON_NAME | OPEN MODE | RESTRICTED
---------- | ------------------------------ | ---------- | ----------
2 | PDB$SEED | READ ONLY | NO
3 | PDB1 | READ WRITE | NO
[ol7ora12rf1]<SYS@ORARCF1>$ ALTER SESSION SET CONTAINER=pdb1;
Elapsed: 00:00:00.01
[ol7ora12rf1]<SYS@ORARCF1>$ SHOW CON_NAME
CON_NAME
------------------------------
PDB1
[ol7ora12rf1]<SYS@ORARCF1>$
ALTER PROCEDURE "HR"."ADD_JOB_HISTORY" COMPILE;
ALTER PROCEDURE "HR"."SECURE_DML" COMPILE;
ALTER TRIGGER "HR"."SECURE_EMPLOYEES" COMPILE;
ALTER TRIGGER "HR"."UPDATE_JOB_HISTORY" COMPILE;
- Fixed Object Statistics 수집
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.29.0.0.0
[ORARCF1:oracle@ol7ora12rf1][/home/oracle]$ alias ss
alias ss='rlwrap sqlplus "/as sysdba"'
[ORARCF1:oracle@ol7ora12rf1][/home/oracle]$ ss
SQL*Plus: Release 19.0.0.0.0 - Production on Tue Jan 20 22:55:15 2026
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
[ol7ora12rf1]<SYS@ORARCF1>$
[ol7ora12rf1]<SYS@ORARCF1>$ EXEC DBMS_STATS.GATHER_FIXED_OBJECTS_STATS;
[ol7ora12rf1]<SYS@ORARCF1>$ ALTER SESSION SET CONTAINER = PDB1;
[ol7ora12rf1]<SYS@ORARCF1>$ EXEC DBMS_STATS.GATHER_FIXED_OBJECTS_STATS;
- PDB 상태 확인
-- SQL*Plus Environment Settings
SET LINESIZE 160
SET PAGESIZE 100
SET COLSEP ' | '
SET FEEDBACK ON
SET VERIFY OFF
-- Column Formatting
COL INST_ID FORMAT 9999 HEADING "Inst"
COL CON_ID FORMAT 999 HEADING "ConID"
COL NAME FORMAT A30 HEADING "PDB Name"
COL OPEN_MODE FORMAT A15 HEADING "Open Mode"
COL RESTRICTED FORMAT A10 HEADING "Restricted"
-- Main Query
SELECT INST_ID
, CON_ID
, NAME
, OPEN_MODE
, RESTRICTED
FROM GV$PDBS
ORDER BY
NAME
, INST_ID;
Inst | ConID | PDB Name | Open Mode | Restricted
----- | ----- | ------------------------------ | --------------- | ----------
1 | 2 | PDB$SEED | READ ONLY | NO
2 | 2 | PDB$SEED | READ ONLY | NO
1 | 3 | PDB1 | READ WRITE | NO
2 | 3 | PDB1 | READ WRITE | NO
4 rows selected.
Elapsed: 00:00:00.01
- 파라미터 세팅
[ORARCF1:oracle@ol7ora12rf1][/home/oracle]$ alias ss
alias ss='rlwrap sqlplus "/as sysdba"'
[ORARCF1:oracle@ol7ora12rf1][/home/oracle]$ ss
SQL*Plus: Release 19.0.0.0.0 - Production on Wed Jan 21 11:03:42 2026
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
[ol7ora12rf1]<SYS@ORARCF1>$
COL NAME FOR A20
COL CAUSE FOR A30
COL MESSAGE FOR A80
COL STATUS FOR A20
;
SELECT A.NAME, A.CAUSE, A.MESSAGE, A.STATUS
FROM PDB_PLUG_IN_VIOLATIONS A
WHERE A.NAME = 'PDB1'
AND A.CAUSE = 'Parameter'
-- AND A.STATUS = 'RESOLVED'
;
NAME CAUSE MESSAGE STATUS
-------------------- ------------------------------ -------------------------------------------------------------------------------- --------------------
PDB1 Parameter CDB parameter use_large_pages mismatch: Previous 'ONLY' Current 'TRUE' RESOLVED
PDB1 Parameter CDB parameter filesystemio_options mismatch: Previous 'SETALL' Current 'none' RESOLVED
PDB1 Parameter CDB parameter sga_target mismatch: Previous 4800M Current 2G RESOLVED
PDB1 Parameter CDB parameter compatible mismatch: Previous '12.2.0' Current '19.0.0' RESOLVED
PDB1 Parameter CDB parameter pga_aggregate_target mismatch: Previous 1601M Current 512M RESOLVED
5 rows selected.
Elapsed: 00:00:00.00
--파라미터 조회 SQL문
SELECT *
FROM
(
SELECT '일반' AS "구분"
, A.NAME AS "PARAMETER"
, A.VALUE AS "VALUE"
, A.DISPLAY_VALUE AS "DISPLAY_VALUE"
, A.DEFAULT_VALUE AS "DEFAULT_VALUE"
, A.ISDEFAULT AS "IS_DEFALUT"
, A.ISSES_MODIFIABLE AS "세션변경"
, A.ISSYS_MODIFIABLE AS "시스템변경"
, A.ISINSTANCE_MODIFIABLE AS "인스턴스변경"
, A.ISPDB_MODIFIABLE AS "PDB변경"
, A.DESCRIPTION AS "설명"
, A.UPDATE_COMMENT AS "UPDATE_COMMENT"
FROM V$PARAMETER A
WHERE NOT EXISTS (SELECT 1 FROM SYS.X$KSPPI K WHERE K.KSPPINM = A.NAME AND K.KSPPINM LIKE '\_%' ESCAPE '\')
UNION ALL
SELECT '히든' AS "구분"
, A.KSPPINM AS "PARAMETER"
, B.KSPPSTVL AS "VALUE"
, B.KSPPSTDVL AS "DISPLAY_VALUE"
, B.KSPPSTDFL AS "DEFAULT_VALUE"
, B.KSPPSTDF AS "IS_DEFALUT"
, DECODE (BITAND (A.KSPPIFLG / 256, 1), 1, 'TRUE', 'FALSE') AS "세션변경"
, DECODE (BITAND (a.ksppiflg / 65536, 3), 1, 'IMMEDIATE', 2, 'DEFERRED', 3, 'IMMEDIATE', 'FALSE') AS "시스템변경"
, DECODE (BITAND (a.ksppiflg, 4), 4, 'FALSE', DECODE (BITAND (ksppiflg / 65536, 3), 0, 'FALSE', 'TRUE')) AS "인스턴스변경"
, DECODE (BITAND (a.ksppiflg / 524288, 1), 1, 'TRUE', 'FALSE') AS "PDB변경"
, A.KSPPDESC AS "설명"
, '' AS "UPDATE_COMMENT"
FROM SYS.X$KSPPI A, SYS.X$KSPPCV B
WHERE A.INDX = B.INDX
AND A.KSPPINM LIKE '\_%' ESCAPE '\'
) A
where ( UPPER(A.PARAMETER) LIKE '%' || UPPER('use_large_pages') || '%'
OR UPPER(A.PARAMETER) LIKE '%' || UPPER('filesystemio_options') || '%'
OR UPPER(A.PARAMETER) LIKE '%' || UPPER('sga_target') || '%'
OR UPPER(A.PARAMETER) LIKE '%' || UPPER('compatible') || '%'
OR UPPER(A.PARAMETER) LIKE '%' || UPPER('pga_aggregate_target') || '%'
)
;
--파라미터 변경
ALTER SYSTEM SET use_large_pages=ONLY SCOPE=SPFILE SID='*';
ALTER SYSTEM SET filesystemio_options=SETALL SCOPE=SPFILE SID='*';
ALTER SYSTEM SET sga_target=4800M SCOPE=SPFILE SID='*';
ALTER SYSTEM SET pga_aggregate_target=512M SCOPE=SPFILE SID='*';
- 백업 설정
[ORARCF1:oracle@ol7ora12rf1][/home/oracle]$ cat /home/oracle/os_scripts/rman_init.sh
#!/bin/bash
export ORACLE_HOME=/u01/app/oracle/product/19.29/db_1
export ORACLE_SID=ORARCF1
export ORACLE_DBNAME=ORARCF
export ORACLE_UNQNAME=ORARCF
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$GRID_HOME/bin:$BASE_PATH
mkdir -p /home/oracle/rman_backup/$ORACLE_DBNAME/autobackup/
$ORACLE_HOME/bin/rman target / << EOF
run {
CONFIGURE RETENTION POLICY TO REDUNDANCY 1;
CONFIGURE BACKUP OPTIMIZATION OFF;
CONFIGURE DEFAULT DEVICE TYPE TO DISK;
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/home/oracle/rman_backup/$ORACLE_DBNAME/autobackup/%F';
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '+DATA1/$ORACLE_UNQNAME/CONTROLFILE/snapcf_CA.f';
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET;
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1;
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1;
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE;
CONFIGURE RMAN OUTPUT TO KEEP FOR 7 DAYS;
CONFIGURE MAXSETSIZE TO UNLIMITED;
CONFIGURE ENCRYPTION FOR DATABASE OFF;
CONFIGURE ENCRYPTION ALGORITHM 'AES128';
CONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE;
#CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON ALL STANDBY; #For ADG
}
exit;
EOF
[ORARCF1:oracle@ol7ora12rf1][/home/oracle]$ cat /home/oracle/os_scripts/rman_data.sh
#!/bin/bash
mkdir -p /home/oracle/os_scripts/rman_log/
export ORACLE_HOME=/u01/app/oracle/product/19.29/db_1
export ORACLE_SID=ORARCF1
export ORACLE_DBNAME=ORARCF
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$GRID_HOME/bin:$BASE_PATH
save_datetime=`date +"%Y%m%d%H%M%S"`
RMAN_SCRIPT="/home/oracle/os_scripts/rman_data_exec.sh"
rm -f $RMAN_SCRIPT
echo "RUN {" > $RMAN_SCRIPT
echo "export ORACLE_HOME=/u01/app/oracle/product/19.29/db_1"
echo "export ORACLE_SID=ORARCF1"
echo "sql 'alter system archive log current';" >> $RMAN_SCRIPT
echo "sql 'alter system checkpoint';" >> $RMAN_SCRIPT
echo "crosscheck backupset;" >> $RMAN_SCRIPT
echo "crosscheck backup;" >> $RMAN_SCRIPT
echo "crosscheck copy;" >> $RMAN_SCRIPT
echo "crosscheck archivelog all;" >> $RMAN_SCRIPT
TABLESPACE_NAME_FILE="/home/oracle/os_scripts/tablespaces_list.txt"
sqlplus -S / as sysdba <<EOF > $TABLESPACE_NAME_FILE
SET HEADING OFF
SET FEEDBACK OFF
SET PAGESIZE 0
SET LINESIZE 100
SET TIMING OFF
SELECT
(SELECT L.NAME FROM V\$CONTAINERS L WHERE L.CON_ID = A.CON_ID) || ':' || A.TABLESPACE_NAME
FROM CDB_TABLESPACES A
WHERE A.CONTENTS IN ('PERMANENT', 'UNDO')
UNION ALL
SELECT 'PDB\$SEED:SYSTEM' FROM DUAL UNION ALL
SELECT 'PDB\$SEED:SYSAUX' FROM DUAL UNION ALL
SELECT 'PDB\$SEED:UNDOTBS1' FROM DUAL
;
EXIT;
EOF
while read -r entry; do
if [ -n "$entry" ]; then
con_name=$(echo "$entry" | cut -d':' -f1)
ts_name=$(echo "$entry" | cut -d':' -f2)
if [ "$con_name" == "CDB\$ROOT" ]; then
echo "BACKUP AS COMPRESSED BACKUPSET TABLESPACE $ts_name FORMAT '/home/oracle/rman_backup/${ORACLE_DBNAME}/${ts_name}_%U.bkp';" >> $RMAN_SCRIPT
elif [ "$con_name" == "PDB\$SEED" ]; then
echo "BACKUP AS COMPRESSED BACKUPSET TABLESPACE \"${con_name}\":${ts_name} FORMAT '/home/oracle/rman_backup/${ORACLE_DBNAME}/PDBSEED_${ts_name}_%U.bkp';" >> $RMAN_SCRIPT
else
echo "BACKUP AS COMPRESSED BACKUPSET TABLESPACE ${con_name}:${ts_name} FORMAT '/home/oracle/rman_backup/${ORACLE_DBNAME}/${con_name}_${ts_name}_%U.bkp';" >> $RMAN_SCRIPT
fi
fi
done < $TABLESPACE_NAME_FILE
#echo "backup current controlfile format '/home/oracle/rman_backup/PRDB/CTL_%U';" >> $RMAN_SCRIPT
echo "BACKUP SPFILE FORMAT '/home/oracle/rman_backup/$ORACLE_DBNAME/autobackup/SP_%U'"; >> $RMAN_SCRIPT
echo "delete noprompt obsolete;" >> $RMAN_SCRIPT
echo "delete noprompt expired backup;" >> $RMAN_SCRIPT
echo "}" >> $RMAN_SCRIPT
rm -f $TABLESPACE_NAME_FILE
chmod 775 $RMAN_SCRIPT
rman target / cmdfile=$RMAN_SCRIPT > /home/oracle/os_scripts/rman_log/rman_data_exec_log_${save_datetime}.log
echo "Backup completed."
[ORARCF1:oracle@ol7ora12rf1][/home/oracle]$ cat /home/oracle/os_scripts/rman_arch.sh
export ORACLE_HOME=/u01/app/oracle/product/19.29/db_1
export ORACLE_SID=ORARCF1
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$GRID_HOME/bin:$BASE_PATH
$ORACLE_HOME/bin/rman target / << EOF
run {
crosscheck archivelog all;
backup archivelog all format '/home/oracle/rman_backup/19.29/%d_ARCHIVE_%T_%u_s%s_p%p' delete input;
delete backup of archivelog all completed before 'SYSDATE-14';
}
exit;
EOF
오라클 홈 oraInventory에서 detach
--1번 노드 (oracle os user)
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ /u01/app/oracle/product/12c/db_1/oui/bin/runInstaller -silent -detachHome \
ORACLE_HOME="/u01/app/oracle/product/12c/db_1" \
ORACLE_HOME_NAME="OraDB12Home1"
Starting Oracle Universal Installer...
Checking swap space: must be greater than 500 MB. Actual 16383 MB Passed
The inventory pointer is located at /etc/oraInst.loc
'DetachHome' was successful.
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ cat /u01/app/oraInventory/ContentsXML/inventory.xml
<?xml version="1.0" standalone="yes" ?>
<!-- Copyright (c) 1999, 2026, 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.1.4</SAVED_WITH>
<MINIMUM_VER>2.1.0.6.0</MINIMUM_VER>
</VERSION_INFO>
<HOME_LIST>
<HOME NAME="OraGI19Home1" LOC="/u01/app/19.29/grid" TYPE="O" IDX="3" CRS="true"/>
<HOME NAME="OraDB19Home1" LOC="/u01/app/oracle/product/19.29/db_1" TYPE="O" IDX="4"/>
<HOME NAME="OraGI12Home1" LOC="/u01/app/12c/grid" TYPE="O" IDX="1" REMOVED="T"/>
<HOME NAME="OraDB12Home1" LOC="/u01/app/oracle/product/12c/db_1" TYPE="O" IDX="2" REMOVED="T"/>
</HOME_LIST>
<COMPOSITEHOME_LIST>
</COMPOSITEHOME_LIST>
</INVENTORY>
--2번 노드 (oracle os user)
[ORARCF2:oracle@ol7ora12rf2][/home/oracle]$ /u01/app/oracle/product/12c/db_1/oui/bin/runInstaller -silent -detachHome \
> ORACLE_HOME="/u01/app/oracle/product/12c/db_1" \
> ORACLE_HOME_NAME="OraDB12Home1"
Starting Oracle Universal Installer...
Checking swap space: must be greater than 500 MB. Actual 16383 MB Passed
The inventory pointer is located at /etc/oraInst.loc
'DetachHome' was successful.
[ORARCF2:oracle@ol7ora12rf2][/home/oracle]$ cat /u01/app/oraInventory/ContentsXML/inventory.xml
<?xml version="1.0" standalone="yes" ?>
<!-- Copyright (c) 1999, 2026, 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.1.4</SAVED_WITH>
<MINIMUM_VER>2.1.0.6.0</MINIMUM_VER>
</VERSION_INFO>
<HOME_LIST>
<HOME NAME="OraGI19Home1" LOC="/u01/app/19.29/grid" TYPE="O" IDX="3" CRS="true"/>
<HOME NAME="OraDB19Home1" LOC="/u01/app/oracle/product/19.29/db_1" TYPE="O" IDX="4"/>
<HOME NAME="OraGI12Home1" LOC="/u01/app/12c/grid" TYPE="O" IDX="1" REMOVED="T"/>
<HOME NAME="OraDB12Home1" LOC="/u01/app/oracle/product/12c/db_1" TYPE="O" IDX="2" REMOVED="T"/>
</HOME_LIST>
<COMPOSITEHOME_LIST>
</COMPOSITEHOME_LIST>
</INVENTORY>
6. 12cR2 Grid/Oracle로 롤백
6-1. 19c DB 중지
[ORARCF1:oracle@ol7ora12rf1][/home/oracle]$ crsctl stat res ora.orarcf.db -t
--------------------------------------------------------------------------------
Name Target State Server State details
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.orarcf.db
1 ONLINE ONLINE ol7ora12rf1 Open,HOME=/u01/app/o
racle/product/19.29/
db_1,STABLE
2 ONLINE ONLINE ol7ora12rf2 Open,HOME=/u01/app/o
racle/product/19.29/
db_1,STABLE
--------------------------------------------------------------------------------
[ORARCF1:oracle@ol7ora12rf1][/home/oracle]$ srvctl stop database -db orarcf
[ORARCF1:oracle@ol7ora12rf1][/home/oracle]$ crsctl stat res ora.orarcf.db -t
--------------------------------------------------------------------------------
Name Target State Server State details
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.orarcf.db
1 OFFLINE OFFLINE Instance Shutdown,ST
ABLE
2 OFFLINE OFFLINE Instance Shutdown,ST
ABLE
--------------------------------------------------------------------------------
6-2. 12cR2 DB 업그레이드 전 으로 Flashback
목차로 돌아가기
-- .bash_profile 수정
--1번 노드 (oracle os user)
[ORARCF1:oracle@ol7ora12rf1][/home/oracle]$ vi ~oracle/.bash_profile
[ORARCF1:oracle@ol7ora12rf1][/home/oracle]$ cat ~oracle/.bash_profile | egrep -i 'DB_HOME|ORACLE_UNQNAME|ORACLE_DBNAME|ORACLE_SID|ORACLE_HOME'
export ORACLE_UNQNAME=ORA12RF
export ORACLE_UNQNAME_LOWER=ora12rf
#export ORACLE_UNQNAME=ORARCF
#export ORACLE_UNQNAME_LOWER=orarcf
export DB_HOME=$ORACLE_BASE/product/12c/db_1
#export DB_HOME=$ORACLE_BASE/product/19.29/db_1
export ORACLE_HOME=$DB_HOME
export ORACLE_DBNAME=ORA12RF
export ORACLE_DBNAME_LOWER=ora12rf
export ORACLE_SID=ORA12RF1
export ORACLE_SID_LOWER=ora12rf1
#export ORACLE_DBNAME=ORARCF
#export ORACLE_DBNAME_LOWER=orarcf
#export ORACLE_SID=ORARCF1
#export ORACLE_SID_LOWER=orarcf1
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
export PS1='[$ORACLE_SID:\u@\h][$PWD]$ '
alias cdt='cd $ORACLE_HOME/network/admin'
alias cdo='cd $ORACLE_HOME'
alias cdod='cd $ORACLE_HOME/dbs'
alias alog='tail -f $ORACLE_BASE/diag/rdbms/$ORACLE_UNQNAME_LOWER/$ORACLE_SID/trace/alert_$ORACLE_SID.log'
alias valog='vi -R $ORACLE_BASE/diag/rdbms/$ORACLE_UNQNAME_LOWER/$ORACLE_SID/trace/alert_$ORACLE_SID.log'
#alias cdord='cd $ORACLE_BASE/oradata/$ORACLE_SID' #for FileSystem
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'
[ORARCF1:oracle@ol7ora12rf1][/home/oracle]$ source ~oracle/.bash_profile
--2번 노드 (oracle os user)
[ORARCF2:oracle@ol7ora12rf2][/home/oracle]$ vi ~oracle/.bash_profile
[ORARCF2:oracle@ol7ora12rf2][/home/oracle]$ cat ~oracle/.bash_profile | egrep -i 'DB_HOME|ORACLE_UNQNAME|ORACLE_DBNAME|ORACLE_SID|ORACLE_HOME'
export ORACLE_UNQNAME=ORA12RF
export ORACLE_UNQNAME_LOWER=ora12rf
#export ORACLE_UNQNAME=ORARCF
#export ORACLE_UNQNAME_LOWER=orarcf
export DB_HOME=$ORACLE_BASE/product/12c/db_1
#export DB_HOME=$ORACLE_BASE/product/19.29/db_1
export ORACLE_HOME=$DB_HOME
export ORACLE_DBNAME=ORA12RF
export ORACLE_DBNAME_LOWER=ora12rf
export ORACLE_SID=ORA12RF2
export ORACLE_SID_LOWER=ora12rf2
#export ORACLE_DBNAME=ORARCF
#export ORACLE_DBNAME_LOWER=orarcf
#export ORACLE_SID=ORARCF2
#export ORACLE_SID_LOWER=orarcf2
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
export PS1='[$ORACLE_SID:\u@\h][$PWD]$ '
alias cdt='cd $ORACLE_HOME/network/admin'
alias cdo='cd $ORACLE_HOME'
alias cdod='cd $ORACLE_HOME/dbs'
alias alog='tail -f $ORACLE_BASE/diag/rdbms/$ORACLE_UNQNAME_LOWER/$ORACLE_SID/trace/alert_$ORACLE_SID.log'
alias valog='vi -R $ORACLE_BASE/diag/rdbms/$ORACLE_UNQNAME_LOWER/$ORACLE_SID/trace/alert_$ORACLE_SID.log'
#alias cdord='cd $ORACLE_BASE/oradata/$ORACLE_SID' #for FileSystem
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'
[ORARCF2:oracle@ol7ora12rf2][/home/oracle]$ source ~oracle/.bash_profile
--spfile 파일 및 password 파일 찾기
[+ASM1:grid@ol7ora12rf1][/home/grid]$ asmcmd ls -sl +DATA1/ORA12RF/PARAMETERFILE
Type Redund Striped Time Sys Block_Size Blocks Bytes Space Name
PARAMETERFILE UNPROT COARSE JAN 20 18:00:00 Y 512 15 7680 4194304 spfile.276.1216917171
[+ASM1:grid@ol7ora12rf1][/home/grid]$ asmcmd ls -sl +DATA1/ORA12RF/PASSWORD
Type Redund Striped Time Sys Block_Size Blocks Bytes Space Name
PASSWORD UNPROT COARSE OCT 02 22:00:00 Y 512 7 3584 0 pwdora12rf.256.1213483291
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ which srvctl
/u01/app/oracle/product/12c/db_1/bin/srvctl
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ srvctl add database -db ORA12RF \
-dbname ORA12RF -oraclehome /u01/app/oracle/product/12c/db_1 \
-pwfile '+DATA1/ORA12RF/PASSWORD/pwdora12rf.256.1213483291' \
-spfile '+DATA1/ORA12RF/PARAMETERFILE/spfile.276.1216917171' \
-instance ORA12RF1
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ crsctl stat res ora.ora12rf.db -t
--------------------------------------------------------------------------------
Name Target State Server State details
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.ora12rf.db
1 OFFLINE OFFLINE STABLE
2 OFFLINE OFFLINE STABLE
--------------------------------------------------------------------------------
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ alias ss
alias ss='rlwrap sqlplus "/as sysdba"'
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ ss
SQL*Plus: Release 12.2.0.1.0 Production on Wed Jan 21 17:44:06 2026
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup mount
ORACLE instance started.
Total System Global Area 5033164800 bytes
Fixed Size 8631048 bytes
Variable Size 1476398328 bytes
Database Buffers 3539992576 bytes
Redo Buffers 8142848 bytes
Database mounted.
SQL> show parameter spfile
NAME TYPE VALUE
------------------------------------ --------------------------------- --------------------------------------------------
spfile string +DATA1/ORA12RF/PARAMETERFILE/spfile.276.1216917171
SQL>
SET LINESIZE 200
COL NAME FORMAT A20
COL TIME FORMAT A35
COL GUARANTEE_FLASHBACK_DATABASE FORMAT A3
COL SCN FORMAT 999999999999999
SQL>
SELECT NAME
, TIME
, GUARANTEE_FLASHBACK_DATABASE AS GFD
, SCN
FROM V$RESTORE_POINT
;
NAME TIME GFD SCN
-------------------- ----------------------------------- --------- ----------------
BEFORE_UPGRADE 26/01/17 17:07:23.000000000 YES 24967412
AUTOUPGRADE_9212_ORA 26/01/20 18:24:29.000000000 YES 25397108
12RF122010
SQL> show parameter flashback
NAME TYPE VALUE
------------------------------------ --------------------------------- ------------------------------
db_flashback_retention_target integer 2880
SQL> show parameter recovery
NAME TYPE VALUE
------------------------------------ --------------------------------- ------------------------------
db_recovery_file_dest string +FRA1
db_recovery_file_dest_size big integer 32G
recovery_parallelism integer 0
remote_recovery_file_dest string
SQL> FLASHBACK DATABASE TO RESTORE POINT BEFORE_UPGRADE;
Flashback complete.
SQL> alter database open resetlogs;
Database altered.
SQL> shutdown immediate;
SQL> quit
Disconnected from Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ srvctl add instance -db ora12rf -instance ORA12RF1 -node ol7ora12rf1
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ srvctl add instance -db ora12rf -instance ORA12RF2 -node ol7ora12rf2
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ srvctl start database -db ora12rf
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ crsctl stat res ora.ora12rf.db -t
--------------------------------------------------------------------------------
Name Target State Server State details
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.ora12rf.db
1 ONLINE ONLINE ol7ora12rf1 Open,HOME=/u01/app/o
racle/product/12c/db
_1,STABLE
2 ONLINE ONLINE ol7ora12rf2 Open,HOME=/u01/app/o
racle/product/12c/db
_1,STABLE
--------------------------------------------------------------------------------
6-3. grid를 12cR2로 롤백
--oracle db 내리기
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ srvctl stop database -db ora12rf
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ crsctl stat res ora.ora12rf.db -t
--------------------------------------------------------------------------------
Name Target State Server State details
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.ora12rf.db
1 OFFLINE OFFLINE Instance Shutdown,ST
ABLE
2 OFFLINE OFFLINE Instance Shutdown,ST
ABLE
--------------------------------------------------------------------------------
--2번 노드부터 downgrade 작업
[root@ol7ora12rf2][/root]$ /u01/app/19.29/grid/crs/install/rootcrs.sh -downgrade
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/ol7ora12rf2/crsconfig/crsdowngrade_ol7ora12rf2_2026-01-22_01-57-42PM.log
2026/01/22 13:58:22 CLSRSC-4006: Removing Oracle Trace File Analyzer (TFA) Collector.
2026/01/22 13:58:51 CLSRSC-4007: Successfully removed Oracle Trace File Analyzer (TFA) Collector.
2026/01/22 13:58:52 CLSRSC-591: successfully downgraded Oracle Clusterware stack on this node
[root@ol7ora12rf2][/root]$ 2026/01/22 14:00:02 CLSRSC-4002: Successfully installed Oracle Trace File Analyzer (TFA) Collector.
--1번 노드 downgrade
[root@ol7ora12rf1][/root]$ /u01/app/19.29/grid/crs/install/rootcrs.sh -downgrade
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/ol7ora12rf1/crsconfig/crsdowngrade_ol7ora12rf1_2026-01-22_02-34-48PM.log
CRS-4123: Oracle High Availability Services has been started.
CRS-2672: Attempting to start 'ora.evmd' on 'ol7ora12rf1'
CRS-2672: Attempting to start 'ora.mdnsd' on 'ol7ora12rf1'
CRS-2676: Start of 'ora.evmd' on 'ol7ora12rf1' succeeded
CRS-2676: Start of 'ora.mdnsd' on 'ol7ora12rf1' succeeded
CRS-2672: Attempting to start 'ora.gpnpd' on 'ol7ora12rf1'
CRS-2676: Start of 'ora.gpnpd' on 'ol7ora12rf1' succeeded
CRS-2672: Attempting to start 'ora.cssdmonitor' on 'ol7ora12rf1'
CRS-2672: Attempting to start 'ora.gipcd' on 'ol7ora12rf1'
CRS-2676: Start of 'ora.cssdmonitor' on 'ol7ora12rf1' succeeded
CRS-2676: Start of 'ora.gipcd' on 'ol7ora12rf1' succeeded
CRS-2672: Attempting to start 'ora.cssd' on 'ol7ora12rf1'
CRS-2672: Attempting to start 'ora.diskmon' on 'ol7ora12rf1'
CRS-2676: Start of 'ora.diskmon' on 'ol7ora12rf1' succeeded
CRS-2676: Start of 'ora.cssd' on 'ol7ora12rf1' succeeded
CRS-2672: Attempting to start 'ora.crf' on 'ol7ora12rf1'
CRS-2672: Attempting to start 'ora.ctssd' on 'ol7ora12rf1'
CRS-2672: Attempting to start 'ora.cluster_interconnect.haip' on 'ol7ora12rf1'
CRS-2676: Start of 'ora.crf' on 'ol7ora12rf1' succeeded
CRS-2676: Start of 'ora.ctssd' on 'ol7ora12rf1' succeeded
CRS-2676: Start of 'ora.cluster_interconnect.haip' on 'ol7ora12rf1' succeeded
CRS-2672: Attempting to start 'ora.asm' on 'ol7ora12rf1'
CRS-2676: Start of 'ora.asm' on 'ol7ora12rf1' succeeded
CRS-2672: Attempting to start 'ora.storage' on 'ol7ora12rf1'
CRS-2676: Start of 'ora.storage' on 'ol7ora12rf1' succeeded
CRS-2672: Attempting to start 'ora.crsd' on 'ol7ora12rf1'
CRS-2676: Start of 'ora.crsd' on 'ol7ora12rf1' succeeded
CRS-2672: Attempting to start 'ora.storage' on 'ol7ora12rf1'
CRS-2676: Start of 'ora.storage' on 'ol7ora12rf1' succeeded
CRS-2672: Attempting to start 'ora.crsd' on 'ol7ora12rf1'
CRS-2676: Start of 'ora.crsd' on 'ol7ora12rf1' succeeded
2026/01/22 14:38:40 CLSRSC-338: Successfully downgraded OCR to version 12.2.0.1.0
CRS-5702: Resource 'ora.crsd' is already running on 'ol7ora12rf1'
CRS-4000: Command Start failed, or completed with errors.
2026/01/22 14:39:04 CLSRSC-4006: Removing Oracle Trace File Analyzer (TFA) Collector.
2026/01/22 14:39:33 CLSRSC-4007: Successfully removed Oracle Trace File Analyzer (TFA) Collector.
2026/01/22 14:39:33 CLSRSC-591: successfully downgraded Oracle Clusterware stack on this node
2026/01/22 14:39:33 CLSRSC-640: To complete the downgrade operation, ensure that the node inventory on all nodes points to the configured Grid Infrastructure home '/u01/app/12c/grid'.
2026/01/22 14:39:34 CLSRSC-592: Run 'crsctl start crs' from home /u01/app/12c/grid on each node to complete downgrade.
[root@ol7ora12rf1][/root]$ 2026/01/22 14:40:43 CLSRSC-4002: Successfully installed Oracle Trace File Analyzer (TFA) Collector.
-- .bash_profile 파일 수정
[root@ol7ora12rf1][/root]$ vi ~root/.bash_profile
[root@ol7ora12rf1][/root]$ cat ~root/.bash_profile | egrep -i 'GRID|ORACLE|DB'
export ORACLE_BASE=/u01/app/oracle
export GRID_HOME=/u01/app/12c/grid
#export GRID_HOME=/u01/app/19.29/grid
export DB_HOME=$ORACLE_BASE/product/12c/db_1
#export DB_HOME=$ORACLE_BASE/product/19.29/db_1
export PATH=$GRID_HOME/bin:$BASE_PATH
[root@ol7ora12rf1][/root]$ source ~root/.bash_profile
[root@ol7ora12rf2][/root]$ vi ~root/.bash_profile
[root@ol7ora12rf2][/root]$ cat ~root/.bash_profile | egrep -i 'ORACLE|GRID|DB'
export ORACLE_BASE=/u01/app/oracle
export GRID_HOME=/u01/app/12c/grid
#export GRID_HOME=/u01/app/19.29/grid
export DB_HOME=$ORACLE_BASE/product/12c/db_1
#export DB_HOME=$ORACLE_BASE/product/19.29/db_1
export PATH=$GRID_HOME/bin:$BASE_PATH
[root@ol7ora12rf2][/root]$ source ~root/.bash_profile
[+ASM1:grid@ol7ora12rf1][/home/grid]$ cat ~grid/.bash_profile | egrep -i 'GRID|ORACLE_USER|DB_|ORACLE_SID'
export GRID_HOME=/u01/app/12c/grid
#export GRID_HOME=/u01/app/19.29/grid
export DB_HOME=$ORACLE_BASE/product/12c/db_1
#export DB_HOME=$ORACLE_BASE/product/19.29/db_1
export ORACLE_HOME=$GRID_HOME
export ORACLE_SID=+ASM1
export ORACLE_SID_LOWER=+asm1
#export ORACLE_USER_ORACLE_SID=ORARCF1
#export ORACLE_USER_ORACLE_SID_LOWEWR=orarcf1
export ORACLE_USER_ORACLE_SID=ORA12RF1
export ORACLE_USER_ORACLE_SID_LOWEWR=ora12rf1
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$GRID_HOME/bin:$BASE_PATH
export PS1='[$ORACLE_SID:\u@\h][$PWD]$ '
alias alog='tail -f $ORACLE_BASE/diag/asm/$ORACLE_UNQNAME_LOWER/$ORACLE_SID/trace/alert_$ORACLE_SID.log'
alias valog='vi -R $ORACLE_BASE/diag/asm/$ORACLE_UNQNAME_LOWER/$ORACLE_SID/trace/alert_$ORACLE_SID.log'
#alias cdord='cd $ORACLE_BASE/oradata/$ORACLE_SID' #for FileSystem
alias cdoss='cd /home/grid/os_scripts'
[+ASM1:grid@ol7ora12rf1][/home/grid]$
[+ASM1:grid@ol7ora12rf1][/home/grid]$ source ~grid/.bash_profile
[+ASM2:grid@ol7ora12rf2][/home/grid]$ vi ~grid/.bash_profile
[+ASM2:grid@ol7ora12rf2][/home/grid]$ cat ~grid/.bash_profile | egrep -i 'GRID|ORACLE_USER|DB_|ORACLE_SID'
export GRID_HOME=/u01/app/12c/grid
#export GRID_HOME=/u01/app/19.29/grid
export DB_HOME=$ORACLE_BASE/product/12c/db_1
#export DB_HOME=$ORACLE_BASE/product/19.29/db_1
export ORACLE_HOME=$GRID_HOME
export ORACLE_SID=+ASM2
export ORACLE_SID_LOWER=+asm2
#export ORACLE_USER_ORACLE_SID=ORARCF2
#export ORACLE_USER_ORACLE_SID_LOWEWR=orarcf2
export ORACLE_USER_ORACLE_SID=ORA12RF2
export ORACLE_USER_ORACLE_SID_LOWEWR=ora12rf2
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$GRID_HOME/bin:$BASE_PATH
export PS1='[$ORACLE_SID:\u@\h][$PWD]$ '
alias alog='tail -f $ORACLE_BASE/diag/asm/$ORACLE_UNQNAME_LOWER/$ORACLE_SID/trace/alert_$ORACLE_SID.log'
alias valog='vi -R $ORACLE_BASE/diag/asm/$ORACLE_UNQNAME_LOWER/$ORACLE_SID/trace/alert_$ORACLE_SID.log'
#alias cdord='cd $ORACLE_BASE/oradata/$ORACLE_SID' #for FileSystem
alias cdoss='cd /home/grid/os_scripts'
[+ASM2:grid@ol7ora12rf2][/home/grid]$ source ~grid/.bash_profile
[ORA12RF1:oracle@ol7ora12rf1][/home/oracle]$ cat ~oracle/.bash_profile | egrep -i 'ORACLE_SID|ORACLE_DB|GRID_HOME'
export GRID_HOME=/u01/app/12c/grid
#export GRID_HOME=/u01/app/19.29/grid
export ORACLE_DBNAME=ORA12RF
export ORACLE_DBNAME_LOWER=ora12rf
export ORACLE_SID=ORA12RF1
export ORACLE_SID_LOWER=ora12rf1
#export ORACLE_DBNAME=ORARCF
#export ORACLE_DBNAME_LOWER=orarcf
#export ORACLE_SID=ORARCF1
#export ORACLE_SID_LOWER=orarcf1
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$GRID_HOME/bin:$BASE_PATH
export PS1='[$ORACLE_SID:\u@\h][$PWD]$ '
alias alog='tail -f $ORACLE_BASE/diag/rdbms/$ORACLE_UNQNAME_LOWER/$ORACLE_SID/trace/alert_$ORACLE_SID.log'
alias valog='vi -R $ORACLE_BASE/diag/rdbms/$ORACLE_UNQNAME_LOWER/$ORACLE_SID/trace/alert_$ORACLE_SID.log'
#alias cdord='cd $ORACLE_BASE/oradata/$ORACLE_SID' #for FileSystem
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'
[ORA12RF2:oracle@ol7ora12rf2][/home/oracle]$ vi ~oracle/.bash_profile
[ORA12RF2:oracle@ol7ora12rf2][/home/oracle]$ cat ~oracle/.bash_profile | egrep -i 'ORACLE_SID|ORACLE_DB|GRID_HOME'
export GRID_HOME=/u01/app/12c/grid
#export GRID_HOME=/u01/app/19.29/grid
export ORACLE_DBNAME=ORA12RF
export ORACLE_DBNAME_LOWER=ora12rf
export ORACLE_SID=ORA12RF2
export ORACLE_SID_LOWER=ora12rf2
#export ORACLE_DBNAME=ORARCF
#export ORACLE_DBNAME_LOWER=orarcf
#export ORACLE_SID=ORARCF2
#export ORACLE_SID_LOWER=orarcf2
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$GRID_HOME/bin:$BASE_PATH
export PS1='[$ORACLE_SID:\u@\h][$PWD]$ '
alias alog='tail -f $ORACLE_BASE/diag/rdbms/$ORACLE_UNQNAME_LOWER/$ORACLE_SID/trace/alert_$ORACLE_SID.log'
alias valog='vi -R $ORACLE_BASE/diag/rdbms/$ORACLE_UNQNAME_LOWER/$ORACLE_SID/trace/alert_$ORACLE_SID.log'
#alias cdord='cd $ORACLE_BASE/oradata/$ORACLE_SID' #for FileSystem
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'
[ORA12RF2:oracle@ol7ora12rf2][/home/oracle]$ source ~oracle/.bash_profile
--1번 노드 올리기
[root@ol7ora12rf1][/root]$ crsctl start crs
--2번 노드 올리기
[root@ol7ora12rf2][/root]$ crsctl start crs
[+ASM1:grid@ol7ora12rf1][/home/grid]$ /u01/app/12c/grid/bin/crsctl query crs activeversion -f
Oracle Clusterware active version on the cluster is [12.2.0.1.0]. The cluster upgrade state is [NORMAL]. The cluster active patch level is [3975995681].
[+ASM2:grid@ol7ora12rf2][/home/grid]$ /u01/app/12c/grid/bin/crsctl query crs activeversion -f
Oracle Clusterware active version on the cluster is [12.2.0.1.0]. The cluster upgrade state is [NORMAL]. The cluster active patch level is [3975995681].
--oraInventory 설정 (1번 및 2번 노드)
/u01/app/19.29/grid/oui/bin/runInstaller -silent -detachHome \
ORACLE_HOME="/u01/app/19.29/grid" \
ORACLE_HOME_NAME="OraGI19Home1" \
-waitforcompletion
/u01/app/oracle/product/19.29/db_1/oui/bin/runInstaller -silent -detachHome \
ORACLE_HOME="/u01/app/oracle/product/19.29/db_1" \
ORACLE_HOME_NAME="OraDB19Home1" \
-waitforcompletion
/u01/app/oracle/product/12c/db_1/oui/bin/runInstaller -silent -attachHome \
ORACLE_HOME="/u01/app/oracle/product/12c/db_1" \
ORACLE_HOME_NAME="OraDB12Home1" \
CLUSTER_NODES=ol7ora12rf1,ol7ora12rf2 \
-waitforcompletion