Computer >> 컴퓨터 >  >> 프로그래밍 >> 데이터베이스

Oracle EBS AD 온라인 패칭(adop) 완벽 가이드: 패치 주기 단계와 핵심 명령어

이 글에서는 Oracle® AD 온라인 패칭(AD Online Patching, 이하 adop) 유틸리티의 각 단계(phase), 패치 프로세스 사이클의 진행 순서, 그리고 실무에서 유용하게 활용할 수 있는 adop 명령어와 팁을 소개합니다.

소개

adop 유틸리티는 Oracle E-Business Suite에 시스템 가동 중단(downtime) 없이 패치를 적용할 수 있도록 설계된 도구입니다. 온라인 패칭 사이클은 다음 그림과 같이 여러 단계로 구성됩니다.

Oracle EBS AD 온라인 패칭(adop) 완벽 가이드: 패치 주기 단계와 핵심 명령어

이미지 출처: https://docs.oracle.com/cd/E26401_01/doc.122/e22954/T202991T531065.htm

기본 adop 단계와 패치 사이클 절차

Oracle R12.2 환경에서 adop 방식으로 패치를 적용하기 전에, 먼저 필요한 기술 패치를 다운로드하고 압축을 해제해야 합니다. 이후 아래 두 가지 방법 중 하나로 패치 준비를 마칩니다.

  • 패치 파일의 압축을 $NE_BASE/EBSapps/patch 경로에 해제합니다. adop 유틸리티가 자체적으로 환경을 설정하기 때문에 별도로 환경을 소싱(source)할 필요가 없습니다.

또는

  • 다음 명령으로 패치 파일 시스템 환경 파일을 실행하여 환경을 설정합니다.
source <EBS install base>/EBSapps.env run

온라인 패칭은 여러 단계로 구성되며, 각 단계는 adop 명령줄에서 다음과 같은 문법으로 지정합니다.

adop phase=<phase_name>

1. Prepare(준비) 단계

새로운 온라인 패칭 사이클을 시작할 준비를 합니다.

$ adop phase=prepare

2. Apply(적용) 단계

하나 이상의 패치를 Oracle E-Business Suite 시스템의 패치 에디션(patch edition)에 적용합니다.

$ source <EBS install base>/EBSapps.env patch$ adop phase=apply patches=123456,789101 workers=8

참고: 커스터마이제이션(customization) 변경 사항도 Apply 단계에서 함께 배포할 수 있습니다.

3. Finalize(마무리) 단계

최종 패칭 작업을 수행합니다. 애플리케이션이 아직 온라인 상태인 동안에도 실행할 수 있습니다.

$ adop phase=finalize

4. Cutover(전환) 단계

시스템을 패치된 환경으로 전환합니다.

$ adop phase=cutover

5. Cleanup(정리) 단계

패치 과정에서 더 이상 필요하지 않은 오래된 객체들을 제거합니다.

$ adop phase=cleanup

모든 단계를 한 번의 명령으로 실행하기

아래와 같은 문법을 사용하면 모든 단계를 한 번에 실행할 수 있습니다.

adop phase=prepare,apply,finalize,cutover,cleanup patches=<patch_number1>,<patch_number2>

이때 다음과 같은 선택적 파라미터를 추가로 사용할 수 있습니다.

  • actualize_all: 패치 에디션의 모든 객체를 실체화(actualize)합니다.
  • cleanup_full: 정리 작업을 수행하고 오래된 에디션을 삭제(drop)합니다.
  • abandon: 실패한 패치를 포기(abandon) 처리합니다.

Cleanup 모드 종류

상황에 맞게 다음 정리(clean-up) 모드를 활용하세요.

  • cleanup_mode=quick – 최소한의 정리만 수행합니다. 폐기된 크로스 에디션 트리거와 시드 데이터(seed data) 제거가 포함됩니다. 다음 패칭 사이클을 최대한 빨리 시작해야 할 때 적합합니다.
  • cleanup_mode=standard – quick 모드의 작업에 더해, 폐기된 에디션 코드 객체(covered objects)까지 삭제합니다.
  • cleanup_mode=full – 최대 수준의 정리를 수행하여, 이전 에디션의 폐기된 코드와 데이터를 모두 제거합니다.

선택적(Optional) 단계

아래 단계들은 필요에 따라 선택적으로 사용합니다.

Abort(중단) 단계

abort는 조건부 단계로, 다른 어떤 단계와도 함께 지정할 수 없습니다.

prepare 또는 apply 단계가 어떤 이유로든 실패했을 경우, abort 명령과 함께 특수 단계를 실행하여 해당 시점에서 패칭 사이클을 중단할 수 있습니다. 이전까지 수행된 작업은 모두 폐기(롤백)됩니다.

abort 명령은 cutover 단계 직전까지만 사용할 수 있습니다. cutover가 완료되면 시스템은 새 에디션에서 구동되므로, 해당 패칭 사이클에 대해서는 더 이상 abort가 불가능합니다.

abort는 다음 명령으로 수행합니다.

$ adop phase=abort

abort 실행 후에는 반드시 전체(full) 정리 작업을 수행해야 합니다. 예를 들어 다음 명령을 사용할 수 있습니다.

adop phase=cleanup cleanup_mode=full

abort와 cleanup을 하나의 명령으로 동시에 실행할 수도 있습니다.

$ adop phase=abort,cleanup cleanup_mode=full

패치 에디션에 대한 패치 적용을 중단했다면, 패치 파일 시스템을 재생성하기 위해 반드시 다음 fs_clone 명령을 실행해야 합니다.

$ adop phase=fs_clone

fs_clone 단계

fs_clone 단계는 패치 파일 시스템을 run 파일 시스템과 동기화합니다. 이 단계는 특정 문서화된 절차에서 명시적으로 요구하는 경우에만 실행해야 합니다.

반드시 run 파일 시스템에서 호출해야 하며, 다음 prepare 단계를 실행하기 전에 수행합니다.

$ source <EBS install base>/EBSapps.env RUN$ adop phase=fs_clone

fs_clone 작업이 실패한 경우에는 재실행이 가능합니다. force=yes 옵션을 사용하면 같은 세션 ID로 처음부터 다시 시작하고, force=no 옵션을 사용하면 실패한 지점부터 이어서 진행합니다.

Actualize All 단계

온라인 패칭 사이클이 반복될 때마다 데이터베이스에는 오래된 DB 에디션이 계속 누적됩니다. 이 개수가 늘어날수록 시스템 성능이 저하됩니다. 오래된 데이터베이스 에디션이 25개를 초과하면, adop의 actualize_all 단계를 실행한 뒤 전체 정리(full cleanup)를 수행하여 오래된 에디션을 제거하는 것을 고려해야 합니다.

이 절차는 일반적인 패칭 사이클보다 상당히 오랜 시간이 걸리므로, 새로운 패칭 사이클을 당장 시작할 필요가 없을 때만 수행하는 것이 좋습니다.

시작하기 전에 시스템에 권장되는 데이터베이스 패치가 적용되어 있고, 최신 AD-TXK 코드 레벨이 설치되어 있는지 확인하세요.

진행하려면 다음 명령을 순서대로 실행합니다.

$ adop phase=prepare$ adop phase=actualize_all$ adop phase=finalize finalize_mode=full$ adop phase=cutover$ adop phase=cleanup cleanup_mode=full

adop 명령어 활용 팁

이 섹션에서는 실무에 유용한 adop 유틸리티 명령어 몇 가지를 소개합니다.

adop과 Concurrent Manager

Oracle Concurrent Manager는 요청(request) 흐름을 제어하여 애플리케이션에 과부하가 걸리지 않도록 하는 역할을 주로 담당합니다.

adop의 cutover는 먼저 concurrent manager 종료를 요청한 후, 진행 중인 요청들이 완료되기를 기다립니다.

지정된 시간 내에 concurrent manager가 종료되지 않으면, 남아 있는 concurrent 요청들은 강제 종료(kill)되고 cutover가 계속 진행됩니다.

내부 Concurrent Manager(마스터 매니저)를 종료하기 전에 기존 concurrent 프로세스가 끝나기를 얼마나 기다릴지 지정하려면 cutover cm_wait 명령을 사용합니다. 아래 예제에서는 cm_wait 시간을 10분으로 설정했습니다. 기본값은 무기한 대기입니다.

adop phase=cutover cm_wait=10

mtrestart=no 명령을 추가하면 애플리케이션 티어 서비스 재시작을 수행하지 않습니다.

adop phase=cutover cm_wait=10 mtrestart=no

adop hotpatch 모드

hotpatch 모드에서는 애플리케이션 서비스가 구동 중인 상태에서 run 에디션에 직접 패치를 적용합니다. 이 모드에서는 패치 프로세스를 중단(abort)할 수 없다는 점에 유의하세요.

hotpatch 모드로 패치를 시작하는 예제는 다음과 같습니다.

$ adop phase=apply patches=<patch_list> hotpatch=yes

hotpatch 사용 후에는 반드시 phase=cleanupphase=fs_clone을 모두 실행하여 run 파일 시스템과 patch 파일 시스템을 동기화해야 합니다. 이렇게 하면 다음 패칭 사이클을 위한 준비가 완료됩니다.

패치를 재적용해야 하는 경우에는 다음 예제처럼 options-forceapply 파라미터를 사용해야 합니다.

$ adop phase=apply patches=<patch list> hotpatch=yes options=forceapply

Continue As If It Were Successful 오류가 발생하면 다음 명령으로 패치를 계속 진행할 수 있습니다.

$ adop phase=apply patches=<patch list> abandon=no restart=yes flags=autoskip

그 외 유용한 adop 명령어

다양한 상황에서 활용할 수 있는 adop 유틸리티 명령어 목록입니다.

워커(worker) 수 지정:

$ adop phase=apply patches=<patch list> workers=5

패치 위치(patchtop) 지정:

$ adop phase=apply patches=<patch list> patchtop=<patch location base>

패치 병합(merge):

$ adop phase=apply patches=<patch list> merge=yes

실패한 세션에서 adop 재시작: 아래 명령들을 실행한 뒤 패치를 다시 적용합니다.

$ adop phase=abort$ adop phase=cleanup cleanup_mode=full$ adop phase=fs_clone

언어 패치 적용:

$ adop phase=apply patches=1234456_JA:u123456.drv

patchtop과 드라이버를 지정한 비대화형(non-interactive) adop 사용:

$ adop phase=apply options=nocopyportion patchtop=$XLA_TOP/patch/115 patches=driver:xla123456.drv

실패한 워커 건너뛰기:

  1. adctrl을 실행하고 옵션 #8(화면에는 보이지 않는 숨겨진 옵션)을 선택하여 실패한 작업을 건너뜁니다.
  2. restart=yes 파라미터를 사용해 adop을 재시작합니다.

실패한 작업이 많다면 flags=autoskip 옵션으로 패치를 재시작하는 것이 좋습니다.

$ adop restart=no abandon=yes flags=autoskip

이 명령은 패치를 재시작하면서 발생하는 오류들을 자동으로 건너뜁니다. 패치 적용이 끝난 후 로그 파일을 검토하여 적절한 오류들이 건너뛰어졌는지 반드시 확인하세요.

결론

adop 유틸리티가 가능한 이유는 데이터베이스에 여러 애플리케이션 에디션을 저장할 수 있고, 애플리케이션 티어에 이중(dual) 파일 시스템을 구성할 수 있기 때문입니다. 어느 시점이든 하나의 파일 시스템은 run(현재 구동 중인 시스템)으로, 다른 하나는 patch(패치 중이거나 다음 패칭 사이클 대기 중)로 지정됩니다. 현재의 run 파일 시스템은 사용자에게 Oracle E-Business Suite 12.2 이전 버전의 단일 애플리케이션 티어 파일 시스템처럼 보입니다.

이러한 이중 파일 시스템 구조는 시스템 구성(configuration)을 변경하는 패치에도 영향을 미칩니다. 소프트웨어 패치를 patch 파일 시스템에 적용하려면 반드시 adop 유틸리티가 필요하지만, 단순 구성 변경에는 adop이 필요하지 않습니다. 구성 변경은 run 파일 시스템 또는 patch 파일 시스템 어느 쪽에든 수행할 수 있으며, 두 경우 모두 이후 자동으로 양방향 동기화가 이루어집니다.

궁금한 점이나 의견이 있다면 피드백 탭을 통해 알려주세요.