데이터베이스 연구실.log

RAC 롤링 패치 (opatchauto)

2노드 RAC에서 GI Home과 DB Home에 19.26 RU를 노드 하나씩 적용하는 롤링 패치의 범위, 준비, opatchauto 적용과 결과 확인

RAC롤링 패치opatchautoOPatchRUGI Home

#핵심 요약

RAC에서 데이터베이스는 공유하지만 실행 소프트웨어(GI Home, DB Home)는 노드마다 로컬에 있음
패치 README의 적용 범위에 따라 양쪽 노드의 해당 Home을 모두 패치해야 함

롤링 패치는 한 노드의 Oracle 프로세스를 내리고 패치한 뒤 다시 올리는 과정을 노드마다 반복함
다른 노드가 계속 서비스하므로 전체 중단 위험이 줄어듦

실습에서는 root 계정으로 첫 노드에서 opatchauto apply를 실행하고, 첫 노드가 정상 복귀한 뒤 두 번째 노드에서 같은 명령을 실행했음

수업 자료에는 서비스 연속성 검증 기록이 없음
SQL*Plus 버전 출력만으로 업무 무중단을 확인할 수 없음

#개념과 동작 원리

#노드별 패치 범위

대상 위치 패치 필요 여부
데이터베이스 파일 공유 스토리지 Home 패치 대상 아님
SQL 패치(datapatch)는 별도 확인
GI Home 노드별 로컬 디스크 양쪽 노드 모두
DB Home 노드별 로컬 디스크 양쪽 노드 모두

#OPatch와 opatchauto

도구 역할
OPatch Oracle Home 패치 적용과 인벤토리 확인
opatchauto 지원되는 시스템 패치에서 관련 Home과 서비스 중지, 시작 같은 작업 단계를 조율

실제 적용 범위와 자동으로 실행되는 단계는 해당 패치 README를 확인해야 함

#롤링 모드

OPatchAuto는 GI 또는 RAC Home을 롤링과 비롤링 두 방식으로 패치하며, 기본값은 롤링임

롤링 모드는 한 노드의 Oracle Home 프로세스를 내리고 패치한 뒤 다시 올리는 과정을 모든 노드에 반복함

패치 세션을 시작하는 첫 노드에서는 스택이 올라와 있어야 함
롤링 세션을 시작할 때 원격 노드가 최소 1개 실행 중이어야 함

위 노드 가용성 조건은 OPatch 안내의 적용 버전과 함께 판단해야 함

Oracle Grid Infrastructure 19c의 설치, 업그레이드 후 패치 안내도 GI 홈의 OPatchAuto로 첫 노드를 패치한 뒤 완료를 기다리고 나머지 노드를 하나씩 처리하도록 안내함
위 OPatch 안내의 노드 가용성 절은 Database 12c 전용으로 명시되어 있으므로 19c RU에 적용할 조건은 별도로 확인해야 함
19c의 정확한 롤링 가능 여부와 선행 조건은 해당 패치 README로 확인해야 함

#공식 기준의 실행 계정과 패치 식별

단계 공식 기준과 적용 조건
1, 6 인벤토리 확인 OPatch 조회는 대상 홈의 설치 소유자 기준으로 구분함
GI 소유자가 grid, DB 소유자가 oracle인 분리 구성에서는 각 소유자로 해당 홈의 도구를 사용함
2 압축 해제 공개 일반 안내는 접근 가능한 패치 디렉터리를 요구함
이 실습의 압축 해제 계정을 root, grid, oracle 중 하나로 확정할 근거는 확인 불가
3 OPatch 교체 홈과 패치에 맞는 OPatch 버전을 사용해야 함
실습에서 사용한 root 복사와 재귀적 755 설정의 공식 권장 여부는 확인 불가
4 도구 버전 OPatchAuto의 version은 root로 GI 홈에서 실행하는 구문이 안내됨
OPatch 버전 확인은 대상 홈의 설치 소유자와 도구 경로를 구분함
5 적용 OPatchAuto apply는 root로 GI 홈에서 실행함
첫 노드가 완료된 뒤 다음 노드를 진행함
6 DB 접속 sqlplus의 SYSDBA 접속은 해당 DB의 관리 인증이 필요함
OS 인증에는 OSDBA 그룹 소속이 필요함
GI 홈 조회 계정의 소속을 확인해야 함

이 표의 grid, oracle은 설치 소유자를 분리했을 때의 역할 이름임
실습 서버의 실제 소유자, 그룹 구성은 확인 불가

6880880은 OPatch 배포 번호로 공개 확인 가능하며 19.26 RU 자체의 패치 번호는 아님
실습 파일명만으로 그 안의 OPatch 버전과 해당 RU의 최소 요구 버전 충족 여부를 확정할 수 없음
37257886의 19.26 RU 대응, 구성 패치 목록과 해당 패치 README의 실행 조건은 로그인 없이 확인한 공개 자료에서 확인 불가

#필수 명령어 또는 SQL

#1. 패치 전 인벤토리 확인 (양쪽 노드)

셸 (실행 계정 확인 필요)조회만 함
$ORACLE_HOME/OPatch/opatch lspatches -oh $GRID_HOME
$ORACLE_HOME/OPatch/opatch lspatches -oh $ORACLE_HOME

결과 해석:

수업 자료에 기록된 패치 전 결과: GI Home에는 OCW, ACFS, Database, TOMCAT RU 19.3이, DB Home에는 OCW와 Database RU 19.3이 있었음

#2. 패치 파일 압축 해제 (양쪽 노드)

실습에서는 내부 공유 서버(<HOST>)에서 받은 패치 묶음을 양쪽 노드에 올려 풀었음

셸 (실행 계정 확인 필요)객체 또는 설정을 변경함
unzip /home/oracle/Oracle_Patch_19.26.zip
cd /home/oracle/Oracle_Patch_19.26/Opatch
unzip p6880880_190000_Linux-x86-64.zip
cd ../RU
unzip p37257886_190000_Linux-x86-64.zip

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

#3. OPatch 교체 (root, 양쪽 노드)

셸 (root)객체 또는 설정을 변경함
mv $GRID_HOME/OPatch $GRID_HOME/OPatch_old
mv $ORACLE_HOME/OPatch $ORACLE_HOME/OPatch_old
cp -r /home/oracle/Oracle_Patch_19.26/Opatch/OPatch $GRID_HOME
cp -r /home/oracle/Oracle_Patch_19.26/Opatch/OPatch $ORACLE_HOME
chmod -R 755 $GRID_HOME/OPatch
chmod -R 755 $ORACLE_HOME/OPatch

결과 해석:

chmod -R 755는 수업 자료가 패치 중 권한 오류를 막으려고 넣은 설정임
공식 권장 권한인지는 대조하지 않았음

#4. root 환경과 도구 버전 확인 (양쪽 노드)

root의 .bash_profile 맨 아래에 다음을 추가하고 반영함

셸 (root)현재 세션 설정만 변경함
export CV_ASSUME_DISTID=OEL8.9
export ORACLE_SID=<DB_NAME>
. .bash_profile
셸 (root)조회만 함
$GRID_HOME/OPatch/opatchauto version
$ORACLE_HOME/OPatch/opatchauto version
셸 (oracle)조회만 함
$GRID_HOME/OPatch/opatch version
$ORACLE_HOME/OPatch/opatch version

결과 해석:

두 Home의 opatch 버전이 같은지 확인함

#5. 노드별 롤링 적용 (root)

첫 노드(<NODE1>)에서 먼저 실행하고, 정상 복귀를 확인한 뒤 두 번째 노드(<NODE2>)에서 같은 명령을 실행함

셸 (root, 한 노드씩)인스턴스 또는 서비스 중단이 필요함
cd $GRID_HOME/OPatch
$GRID_HOME/OPatch/opatchauto apply /home/oracle/Oracle_Patch_19.26/RU/37257886 -oh $GRID_HOME,$ORACLE_HOME

결과 해석:

실습 소요 시간은 노드당 약 75분임
실행 중인 노드의 인스턴스와 서비스는 내려감

#6. 결과 확인 (양쪽 노드)

셸 (실행 계정 확인 필요)조회만 함
$GRID_HOME/OPatch/opatch lspatches
$ORACLE_HOME/OPatch/opatch lspatches
sqlplus / as sysdba

결과 해석:

실습에서는 SQLPlus 접속 배너의 Version 19.26.0.0.0으로 버전을 확인했음
그러나 수업 자료 스스로 SQL
Plus 버전 문구만으로는 모든 Home과 SQL 패치 상태를 판단할 수 없고, SQL 패치와 PDB별 결과를 따로 확인해야 한다고 적었음
그 확인 명령은 기재 없음
단일 인스턴스의 SQL 패치 확인은 패치(RU) 글을 참고함

#구문과 옵션 설명

구문 의미 바꿀 입력값
opatch lspatches -oh <Home> 지정 Home에 적용된 패치 목록 확인할 Home
opatchauto apply <패치 디렉터리> -oh <Home1>,<Home2> 지정 Home들에 패치를 적용하고 관련 서비스 중지, 시작을 조율 패치 디렉터리, 대상 Home 목록
opatchauto version, opatch version 도구 버전
CV_ASSUME_DISTID 수업 자료가 root 환경에 지정한 OS 배포판 식별 값 OS 버전

#사용 조건과 주의사항

해당 패치가 롤링 적용을 지원하는지는 패치 README로 확인함

수업 자료에는 패치 전 백업, 롤백 절차, 서비스 연속성 검증 기록이 없음

SEO_HKabsumveritas@gmail.comBuilt with Claude Code & Codex

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

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