데이터베이스 연구실.log

AutoUpgrade로 12.2 Non-CDB 업그레이드

Oracle 12.2.0.1에서 19c로 AutoUpgrade 진행, PRECHECKS 실패의 FRA 및 아카이브 모드 원인과 조치

AutoUpgradeanalyzefixupsdeployGRPFRA

#핵심 요약

환경: RHEL 8.4, Oracle 12.2.0.1 Non-CDB ORCL, 19c 소프트웨어는 별도 ORACLE_HOME에 설치

흐름: 12c 사전 점검, 19c Software Only 설치, 19c 대상 CDB 생성, AutoUpgrade 설정 파일 작성, analyze와 fixups, deploy, non-CDB를 PDB로 전환, 최종 검증

deploy는 업그레이드 실패 시 복구용 Guaranteed Restore Point(GRP)를 만들기 때문에 소스 DB에 FRA와 ARCHIVELOG가 필요함
실습 첫 deploy는 이 조건 미충족으로 PRECHECKS에서 실패했음

수업 자료가 사용한 AutoUpgrade JAR 빌드로는 non-CDB의 PDB 자동 전환에 실패해 수동으로 진행했음

#개념과 동작 원리

모드 하는 일
analyze 사전 점검
preupgrade 결과(html, log)를 만듦
fixups analyze가 찾은 사전 조치 중 자동 처리 가능한 항목을 실제 source DB에 적용함
deploy 실제 업그레이드
기본적으로 실패 시 복구할 GRP를 만듦

설정 upg1.target_cdb=cdb는 12c non-CDB를 업그레이드하면서 19c CDB 안의 PDB로 전환하라는 핵심 설정이라고 수업 자료가 설명함
다만 수업 자료가 쓴 AutoUpgrade JAR의 build.version은 20190207이었고, non-CDB에서 PDB로 자동 전환하는 기능은 2020년 이후 버전 JAR에 적용된 것이라 자동 전환이 실패했다는 것이 실습의 판단임
그래서 전환은 수동으로 진행했음(Non-CDB를 PDB로 전환)

#주요 용어와 구성 요소

설정 키 의미(환경 값이라 일부만 표기)
global.autoupg_log_dir AutoUpgrade 전체 로그 디렉터리
upg1.dbname, upg1.sid 대상 DB 이름과 SID (orcl)
upg1.source_home, upg1.target_home 12.2와 19c의 Oracle Home
upg1.target_version 19
upg1.target_cdb 편입할 대상 CDB 이름
upg1.log_dir, upg1.start_time, upg1.upgrade_node 로그 위치, 시작 시간(now), 노드(localhost)
upg1.add_during_upgrade_pfile 업그레이드 중 추가할 파라미터 파일(FRA 설정)

#필수 명령어 또는 SQL

#1. 사전 점검 (12.2 non-CDB)

SQL*Plus (SYSDBA, 12.2)조회만 함
select banner from v$version;

select name, open_mode, cdb
from v$database;

결과 해석: 개별 실행 출력은 기재 없음

#2. 19c Software Only 설치 (사일런트)

Oracle 19c 소프트웨어 설치의 사일런트 설치 명령과 root.sh 실행을 씀
설치 ZIP은 scp로 전송했음(<USERNAME>@<IP>:/home/oracle/)
압축 해제 위치를 만들 때는 아래를 root로 실행했음

셸 (root)객체 또는 설정을 변경함
mkdir -p /u01/app/oracle/product/19.0.0/dbhome_1
chown -R oracle:oinstall /u01/app/oracle/product/19.0.0
chmod -R 775 /u01/app/oracle/product/19.0.0

결과 해석: 개별 실행 출력은 기재 없음

#3. 대상 CDB 생성 (PDB 0개)

셸 (oracle)객체 또는 설정을 변경함
export ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH
export ORACLE_SID=cdb

dbca -silent -createDatabase \
-templateName General_Purpose.dbc \
-gdbname cdb \
-sid cdb \
-createAsContainerDatabase true \
-numberOfPDBs 0 \
-characterSet AL32UTF8 \
-sysPassword <PASSWORD> \
-systemPassword <PASSWORD> \
-emConfiguration NONE \
-storageType FS \
-datafileDestination /u01/app/oracle/oradata \
-totalMemory 1536

결과 해석:

비밀번호를 명령행에 쓰면 셸 히스토리와 ps 출력에 남으므로 운영 환경에서는 피함

#4. AutoUpgrade 버전과 설정 파일

셸 (oracle)조회만 함
/u01/app/oracle/product/19.0.0/dbhome_1/jdk/bin/java \
-jar /u01/app/oracle/product/19.0.0/dbhome_1/rdbms/admin/autoupgrade.jar \
-version
셸 (oracle)객체 또는 설정을 변경함
mkdir -p /home/oracle/autoupgrade/logs/orcl
vi /home/oracle/autoupgrade/autoupgrade.cfg
파일 (AutoUpgrade 설정)객체 또는 설정을 변경함
global.autoupg_log_dir=/home/oracle/autoupgrade/logs

upg1.dbname=orcl
upg1.sid=orcl
upg1.source_home=/u01/app/oracle/product/12.2.0/dbhome_1
upg1.target_home=/u01/app/oracle/product/19.0.0/dbhome_1
upg1.target_version=19
upg1.target_cdb=cdb

upg1.log_dir=/home/oracle/autoupgrade/logs/orcl
upg1.start_time=now
upg1.upgrade_node=localhost

upg1.add_during_upgrade_pfile=/home/oracle/autoupgrade/fra_during_upgrade.ora

결과 해석:

수업 자료에는 target_cdb가 trarget_cdb로 잘못 쓰인 설명 줄이 있음(설명 문장의 오타로 보이며 설정 파일의 키는 target_cdb)

#5. analyze, fixups, deploy

셸 (oracle)조회만 함
/u01/app/oracle/product/19.0.0/dbhome_1/jdk/bin/java \
-jar /u01/app/oracle/product/19.0.0/dbhome_1/rdbms/admin/autoupgrade.jar \
-config /home/oracle/autoupgrade/autoupgrade.cfg \
-mode analyze

find /home/oracle/autoupgrade/logs -type f | sort
셸 (oracle)객체 또는 설정을 변경함
# fixups: source DB에 사전 조치를 실제로 적용
/u01/app/oracle/product/19.0.0/dbhome_1/jdk/bin/java \
-jar /u01/app/oracle/product/19.0.0/dbhome_1/rdbms/admin/autoupgrade.jar \
-config /home/oracle/autoupgrade/autoupgrade.cfg \
-mode fixups
셸 (oracle)인스턴스 또는 서비스 중단이 필요함
# deploy: 실제 업그레이드
/u01/app/oracle/product/19.0.0/dbhome_1/jdk/bin/java \
-jar /u01/app/oracle/product/19.0.0/dbhome_1/rdbms/admin/autoupgrade.jar \
-config /home/oracle/autoupgrade/autoupgrade.cfg \
-mode deploy

결과 해석: 개별 실행 출력은 기재 없음

#6. deploy 실패 원인 확인

셸 (oracle)조회만 함
grep -Ei "ERROR|FATAL|ORA-|UPG-|Exception|failed" \
/home/oracle/autoupgrade/logs/orcl/102/dbupgrade_20260906_user.log

grep -Ri -n -B 3 -A 8 "Severity.*ERROR\|ERROR" \
/home/oracle/autoupgrade/logs/orcl/102/prechecks

결과 해석:

실습의 결론: deploy가 PRECHECKS 단계에서 실패했고 원인은 FRA 미설정과 source DB의 NOARCHIVELOG 상태, 조치는 DB_RECOVERY_FILE_DEST 구성과 ARCHIVELOG 활성화임
로그 경로의 102와 날짜는 실습 환경의 작업 번호와 날짜이므로 자기 환경의 값으로 바꿈

#7. FRA 구성과 ARCHIVELOG 활성화 (12.2 source DB)

셸 (root)객체 또는 설정을 변경함
mkdir -p /u01/app/oracle/fast_recovery_area
chown -R oracle:oinstall /u01/app/oracle/fast_recovery_area
셸 (oracle)현재 세션 설정만 변경함
export ORACLE_HOME=/u01/app/oracle/product/12.2.0/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH
export ORACLE_SID=orcl
SQL*Plus (SYSDBA, 12.2)객체 또는 설정을 변경함
ALTER SYSTEM SET db_recovery_file_dest_size=10G SCOPE=BOTH;

ALTER SYSTEM SET db_recovery_file_dest=
'/u01/app/oracle/fast_recovery_area'
SCOPE=BOTH;
파일 (fra_during_upgrade.ora)객체 또는 설정을 변경함
# /home/oracle/autoupgrade/fra_during_upgrade.ora
db_recovery_file_dest='/u01/app/oracle/fast_recovery_area'
db_recovery_file_dest_size=10G
SQL*Plus (SYSDBA, 12.2)인스턴스 또는 서비스 중단이 필요함
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;

ALTER DATABASE ARCHIVELOG;
ALTER DATABASE OPEN;

ARCHIVE LOG LIST;

결과 해석:

deploy 재실행 전에 실습에서는 이전 로그 디렉터리를 지우고 다시 만들었음

셸 (oracle)데이터 또는 파일을 삭제함, 되돌릴 수 없음
rm -rf /home/oracle/autoupgrade/logs
mkdir -p /home/oracle/autoupgrade/logs

결과 해석:

이 rm -rf는 AutoUpgrade 로그만 지움
경로가 맞는지 확인한 뒤 실행하고, 지우기 전 필요한 로그는 보관함

#8. 업그레이드 후

PDB 전환과 최종 검증은 Non-CDB를 PDB로 전환의 절차를 따름

#구문과 옵션 설명

구문 의미 바꿀 입력값
autoupgrade.jar -version JAR 실행 가능 여부와 빌드 확인 홈 경로
-config <파일> 설정 파일 경로
-mode analyze / fixups / deploy 모드
SCOPE=BOTH 메모리와 SPFILE에 모두 반영
ALTER DATABASE ARCHIVELOG 아카이브 모드 활성화(MOUNT 상태에서)
-numberOfPDBs 0 대상 CDB를 PDB 없이 생성

#사용 조건과 주의사항

실습의 AutoUpgrade 빌드(20190207)는 오래된 버전임
현재 권장 버전, 최신 JAR 사용 여부는 수업 자료에 없어 확인 불가

수업 자료에서 CV_ASSUME_DISTID=OL7로 RHEL 8.4에서 설치했고 INS-13014 경고를 확인했음(소프트웨어 설치 참조)

로그 파일명의 날짜는 실습 실행일임

SEO_HKabsumveritas@gmail.comBuilt with Claude Code & Codex

마지막 갱신 개인 학습 기록이며 운영 환경 적용 전 공식 문서 확인 필요

두 글자 이상 입력, 위아래 화살표로 이동하고 Enter로 열기