RAC 롤링 패치 (opatchauto)
2노드 RAC에서 GI Home과 DB Home에 19.26 RU를 노드 하나씩 적용하는 롤링 패치의 범위, 준비, opatchauto 적용과 결과 확인
#핵심 요약
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, 양쪽 노드)
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 맨 아래에 다음을 추가하고 반영함
export CV_ASSUME_DISTID=OEL8.9
export ORACLE_SID=<DB_NAME>
. .bash_profile$GRID_HOME/OPatch/opatchauto version
$ORACLE_HOME/OPatch/opatchauto version$GRID_HOME/OPatch/opatch version
$ORACLE_HOME/OPatch/opatch version결과 해석:
두 Home의 opatch 버전이 같은지 확인함
#5. 노드별 롤링 적용 (root)
첫 노드(<NODE1>)에서 먼저 실행하고, 정상 복귀를 확인한 뒤 두 번째 노드(<NODE2>)에서 같은 명령을 실행함
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으로 버전을 확인했음
그러나 수업 자료 스스로 SQLPlus 버전 문구만으로는 모든 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로 확인함
수업 자료에는 패치 전 백업, 롤백 절차, 서비스 연속성 검증 기록이 없음