티스토리 뷰
Patch 작업은 데이터베이스의 안정성, 성능 향상 및 보안 강화를 위해 중요한 작업입니다.
본 가이드에 따라 신중하게 작업을 진행하시기 바랍니다.
주의사항:
- 반드시 운영 환경과 동일한 테스트 환경에서 먼저 Patch 작업을 수행하여 안정성을 확인하세요.
- Patch 작업 전 데이터베이스 전체 백업을 수행하여 만약의 사태에 대비하세요.
- 작업 중 발생하는 모든 오류 메시지를 주의 깊게 확인하고, 이해가 안 되는 부분은 반드시 확인 후 진행하시기 바랍니다.
- 본 가이드 문서는 일반적인 절차를 설명하며, 실제 환경에 따라 일부 내용이 상이할 수 있습니다.
1. Patch 전 준비 작업
1.1. Patch Version 확인
가장 먼저 적용할 최신 Patch 버전을 확인해야 합니다. 다음의 방법으로 확인합니다.
- My Oracle Support (MOS) 접속 : Oracle 계정으로 MOS 웹사이트 (https://support.oracle.com/)에 접속합니다.
- Patch 검색 : "Patches & Updates" 메뉴에서 현재 사용 중인 Oracle Database Version을 선택하고, "Platform"을 해당 서버 운영체제로 설정한 후 검색합니다.
- 최신 Patch Set 및 PSU 확인 : 검색 결과에서 최신 Patch Set Update (PSU) 또는 Release Update (RU) 버전을 확인합니다. 각 Patch에 대한 상세 정보 (README 파일)를 확인하여 적용해야 할 Patch인지 검토합니다.
1.2. Patch File Download
확인된 최신 Patch 파일을 MOS 웹사이트에서 다운로드합니다.
- Patch 상세 정보 확인 : 다운로드하려는 Patch 번호를 클릭하여 상세 정보를 확인하고, 해당 Patch의 README 파일을 다운로드하여 내용을 반드시 숙지합니다. README 파일에는 Patch 적용 전/후 작업, 필수 조건, 알려진 문제점 등이 상세하게 기술되어 있습니다.
- Patch 파일 다운로드 : "Download" 버튼을 클릭하여 Patch 파일을 다운로드합니다. 일반적으로 zip 파일 형태로 압축되어 제공됩니다.
1.3. 환경 변수 설정 확인
Patch 작업을 수행하기 위한 ORACLE_HOME 및 PATH 환경 변수가 정확하게 설정되어 있는지 확인합니다.
- 터미널 접속 : 데이터베이스 서버에 접속합니다.
- 환경 변수 확인 : 다음 명령어를 실행하여 환경 변수를 확인합니다.
Bash |
echo $ORACLE_HOME echo $PATH |
- ORACLE_HOME은 Oracle Database가 설치된 Directory를 가리켜야 합니다.
- PATH에는 $ORACLE_HOME/bin Directory가 포함되어 있어야 합니다
3. 환경 변수 설정 (필요시) : 환경 변수가 올바르게 설정되어 있지 않다면, 다음과 같이 설정합니다.
(일시적인 설정이며, 영구적으로 설정하려면 Shell 설정 파일을 수정해야 합니다.)
Bash |
export ORACLE_HOME=/opt/oracle/product/19c/dbhome_1 #실제 ORACLE_HOME 경로로 변경 export PATH=$ORACLE_HOME/bin:$PATH |
1.4. opatch 유틸리티 확인
Patch 적용을 위해 Oracle에서 제공하는 opatch 유틸리티가 정상적으로 설치되어 있고 최신 Version인지 확인합니다.
- opatch 버전 확인 : 다음 명령어를 실행합니다.
Bash |
$ORACLE_HOME/OPatch/opatch version |
정상적으로 실행되면 opatch의 버전 정보가 출력됩니다. 만약 opatch 명령어를 찾을 수 없거나 오래된 버전이라면, 최신 버전의 opatch를 다운로드하여 ORACLE_HOME에 설치해야 합니다. (MOS에서 "Latest OPatch"로 검색)
1.5. 데이터베이스 상태 확인
Patch 작업을 시작하기 전에 데이터베이스와 리스너의 상태가 정상인지 확인합니다.
- SQL*Plus 접속 : 관리자 권한으로 SQL*Plus에 접속합니다.
Bash |
sqlplus / as sysdba |
2. 데이터베이스 상태 확인 : 다음 SQL 명령어를 실행합니다.
SQL |
SELECT status FROM v$instance; |
결과가 OPEN 이어야 합니다.
3. 리스너 상태 확인 : 새로운 터미널을 열고 다음 명령어를 실행합니다.
Bash |
lsnrctl status |
리스너가 READY 상태이고, 데이터베이스 서비스가 정상적으로 등록되어 있는지 확인합니다.
1.6. 데이터베이스 백업
매우 중요!
Patch 작업 전에 데이터베이스 전체 백업을 수행합니다. RMAN (Recovery Manager)을 사용하여 백업하는 것을 권장합니다.
- RMAN 접속:
Bash |
rman target / |
2. 전체 데이터베이스 백업:
RMAN Code Snippet |
BACKUP FULL DATABASE; |
또는 운영 환경에 맞는 백업 정책에 따라 백업을 수행합니다. 아카이브 로그 백업도 함께 수행하는 것이 좋습니다.
RMAN Code Snippet |
BACKUP ARCHIVELOG ALL; |
1.7. 관련 Process 중지
Patch 작업에 영향을 줄 수 있는 모든 Application 및 관련 Process를 중지합니다.
2. Patch 적용 작업
2.1. Patch 파일 압축 해제
다운로드한 Patch 파일의 압축을 ORACLE_HOME 외부의 적절한 Directory에 해제합니다.
예를 들어 /stage/patches Directory를 생성하고 그 아래에 압축을 해제할 수 있습니다.
Bash |
mkdir -p /stage/patches cd /stage/patches unzip p<Patch번호>_<플랫폼>.zip cd p<Patch번호>_<플랫폼> # 압축 해제된 Patch 디렉토리로 이동 |
2.2. opatch 적용 전 검증
Patch를 실제로 적용하기 전에 opatch 유틸리티를 사용하여 Patch 적용 가능성을 검증합니다.
Bash |
$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -ph . |
- -ph . 옵션은 현재 디렉토리의 Patch를 검증하도록 지정합니다.
- 검증 결과에 오류나 충돌이 발생하면, 해당 문제를 해결한 후 다시 검증해야 합니다. README 파일에 충돌 해결 방법이 제시되어 있는 경우가 많습니다.
2.3. 데이터베이스 및 리스너 중지
Patch 적용을 위해 데이터베이스와 리스너를 중지합니다.
- SQL*Plus 접속:
Bash |
sqlplus / as sysdba |
2. 데이터베이스 종료:
SQL |
SHUTDOWN IMMEDIATE; |
3. 리스너 중지: 새로운 터미널에서 다음 명령어를 실행합니다.
Bash |
lsnrctl stop |
2.4. opatch를 이용한 Patch 적용
이제 opatch 유틸리티를 사용하여 실제 Patch를 적용합니다.
Bash |
$ORACLE_HOME/OPatch/opatch apply -ocmrf /opt/oracle/ocm.rsp # OCM 응답 파일 경로 (선택 사항) $ORACLE_HOME/OPatch/opatch apply |
- -ocmrf 옵션은 Oracle Configuration Manager (OCM) 응답 파일을 지정하는 것으로, OCM을 사용하는 경우에만 필요합니다. OCM을 사용하지 않는 경우 이 옵션은 생략합니다.
- Patch 적용 과정에서 여러 메시지가 출력될 수 있습니다. 오류 메시지가 발생하면 README 파일을 참고하거나 전문가에게 문의하십시오.
- Patch 적용이 완료되면 "OPatch succeeded" 메시지가 표시됩니다.
2.5. SQL Script실행
일부 Patch의 경우, Patch 적용 후 데이터베이스 스키마 변경 등을 위해 SQL Script를 실행해야 합니다. README 파일에 실행해야 할 스크립트 정보가 명시되어 있으므로, 해당 내용을 확인하고 SQL*Plus를 사용하여 Script를 실행합니다. 일반적으로 $ORACLE_HOME/rdbms/admin 디렉토리에 위치한 catbundle.sql Script를 실행하는 경우가 많습니다.
- SQL*Plus 접속:
Bash |
sqlplus / as sysdba |
2. SQL 스크립트 실행:
SQL |
STARTUP UPGRADE; @$ORACLE_HOME/rdbms/admin/catbundle.sql psu apply COMMIT; STARTUP; |
- STARTUP UPGRADE 명령은 업그레이드 모드로 데이터베이스를 시작합니다.
- @$ORACLE_HOME/rdbms/admin/catbundle.sql psu apply 명령은 PSU 관련 SQL 스크립트를 실행합니다. (Release Update(RU)의 경우 psu 대신 ru 로 변경)
- 스크립트 실행 시간은 데이터베이스 크기에 따라 다를 수 있습니다. 오류 없이 완료될 때까지 기다립니다.
- COMMIT 명령으로 변경 사항을 확정 후, STARTUP 명령으로 데이터베이스를 정상 모드로 시작합니다.
2.6. 리스너 시작
데이터베이스가 정상적으로 시작되면 리스너를 다시 시작합니다.
Bash |
lsnrctl start |
2.7. 데이터베이스 상태 재확인
Patch 적용 후 데이터베이스와 리스너의 상태를 다시 확인합니다.
- SQL*Plus 접속:
Bash |
sqlplus / as sysdba |
2. 데이터베이스 상태 확인:
SQL |
SELECT status FROM v$instance; |
결과가 OPEN 이어야 합니다.
3. Patch 적용 버전 확인: 다음 SQL 명령어를 실행하여 적용된 Patch 버전을 확인합니다.
SQL |
SELECT * FROM product_component_registry WHERE product LIKE 'Oracle Database%'; |
출력 결과에서 적용한 Patch Version을 확인합니다.
4. 리스너 상태 확인: 새로운 터미널에서 다음 명령어를 실행합니다.
Bash |
lsnrctl status |
리스너가 READY 상태이고, 데이터베이스 서비스가 정상적으로 등록되어 있는지 확인합니다.
3. Patch 후 작업
3.1. Application Test
Patch된 데이터베이스 환경에서 모든 Application이 정상적으로 작동하는지 충분히 Test합니다.
예상치 못한 문제가 발생하면 즉시 이전 상태로 Rollback할 수 있도록 준비해야 합니다.
(e.g, 주요 SQL의 실행 계획을 비교하여 성능 저하가 없는지 확인합니다.)
3.2. Backup
Patch가 성공적으로 완료되고 Application Test까지 완료되면, Patch된 상태로 데이터베이스 전체 백업을 다시 수행합니다.
3.3. Patch 이력 확인
opatch lsinventory 명령어를 사용하여 적용된 Patch 이력을 확인할 수 있습니다.
Bash |
$ORACLE_HOME/OPatch/opatch lsinventory |
3.4. Alert.log 확인
Oracle Log File (alert.log)을 확인하여 오류가 발생하지 않았는지 점검합니다.
4. 문제 발생 시 Rollback
만약 Patch 적용 후 심각한 문제가 발생하여 이전 상태로 되돌려야 하는 경우, 다음 절차를 따릅니다.
(주의: 백업이 되어 있어야 Rollback이 가능합니다.)
- 데이터베이스 및 리스너 중지 : Patch 적용과 동일하게 데이터베이스와 리스너를 중지합니다.
- opatch Rollback : 압축 해제된 Patch 디렉토리에서 다음 명령어를 실행하여 Patch를 Rollback합니다.
Bash |
cd /stage/patches/p<Patch번호>_<플랫폼> $ORACLE_HOME/OPatch/opatch rollback -id <Patch번호> |
- <Patch번호>는 Rollback하려는 Patch의 번호입니다.
3. SQL Script Rollback (필요시) : 일부 Patch의 경우 Rollback을 위한 SQL Script를 실행해야 할 수 있습니다. README 파일을 확인하십시오.
4. 데이터베이스 복구 : RMAN을 사용하여 Patch 작업 직전의 백업 시점으로 데이터베이스를 복구합니다.
Bash |
rman target / RESTORE DATABASE; RECOVER DATABASE; ALTER DATABASE OPEN RESETLOGS; |
5. 리스너 시작 : 리스너를 다시 시작합니다
6. 상태 확인 : 데이터베이스와 리스너의 상태를 확인합니다.
※ 다시 한번 강조하지만, 실제 운영 환경에 적용하기 전에 반드시 Test 환경에서 충분한 테스트를 시행하시기 바랍니다.
테스트 시, 백업 및 Patch 적용 시간에 대한 예상 시간 확인을 하시고, 작업 계획 시에 Patch 작업 시간을 충분히 확보하시기 바랍니다.
참고로 Oracle DB Patch Set은 누적 Patch가 기본입니다. 즉, 최종 Patch 버전만 설치하면 됩니다.
'코드레시피' 카테고리의 다른 글
CI/CD를 통한 데이터 플랫폼 고도화 가이드 (2) | 2025.05.15 |
---|---|
Oracle DB 19c에서 DBMS_JOB에서 DBMS_SCHEDULER로 변환 (1) | 2025.04.03 |
Oracle DMU(Database Migration Assistant for Unicode)가 뭘까? (4) | 2025.04.01 |
Oracle 19c 환경에서 CSSCAN 설치 방법 (0) | 2025.04.01 |
Oracle CSSCAN 설치 및 확인 메뉴얼 (1) | 2025.03.24 |
- Total
- Today
- Yesterday
- 비만치료제
- 홈카페
- oracle 19c
- GLP-1
- 내돈내산
- 저속노화
- deepseek
- 탈모예방
- csscan
- 다이어트 식단
- 여름건강관리
- 난임치료
- 수면 다원검사
- 뱃살제거
- 마운자로
- 두피마사지
- 심장 건강
- 건강관리
- 구읍뱃터 맛집
- 건강한식단
- 양압기
- 잇몸퇴축
- dmu
- 위고비
- RMAN
- 코르티솔
- oracle19c
- 건강 디저트
- 다이어트
- 세마글루타이드
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |