Oracle용 Amazon RDS Custom DB 인스턴스 업그레이드 - Amazon Relational Database Service

Oracle용 Amazon RDS Custom DB 인스턴스 업그레이드

Amazon RDS Custom DB 인스턴스를 새로운 사용자 지정 엔진 버전(CEV)을 사용하도록 수정하여 업그레이드할 수 있습니다. 업그레이드에 대한 일반적인 정보는 DB 인스턴스 엔진 버전 업그레이드 섹션을 참조하세요.

RDS Custom for Oracle 업그레이드 개요

RDS Custom for Oracle을 사용하면 새 CEV를 만든 다음 새 CEV를 사용하도록 인스턴스를 수정하여 Oracle 데이터베이스 또는 DB 인스턴스 운영 체제(OS)에 패치를 적용할 수 있습니다.

CEV 업그레이드 옵션

업그레이드를 위해 CEV를 생성할 때 상호 배타적인 다음 옵션을 사용할 수 있습니다.

데이터베이스 전용

현재 DB 인스턴스에서 사용 중인 Amazon Machine Image(AMI)를 재사용하되, 데이터베이스 바이너리는 다르게 지정하세요. RDS Custom은 새 바이너리 볼륨을 할당한 다음 기존 Amazon EC2 인스턴스에 연결합니다. RDS Custom은 전체 데이터베이스 볼륨을 대상 데이터베이스 버전을 사용하는 새 볼륨으로 교체합니다.

OS 전용

현재 DB 인스턴스에서 사용 중인 데이터베이스 바이너리를 재사용하되 AMI는 다르게 지정하세요. RDS Custom은 새 Amazon EC2 인스턴스를 할당한 다음 기존 바이너리 볼륨을 새 인스턴스에 연결합니다. 기존 데이터베이스 볼륨은 유지됩니다.

OS와 데이터베이스를 모두 업그레이드하려면 CEV를 두 번 업그레이드해야 합니다. OS를 업그레이드한 다음 데이터베이스를 업그레이드하거나 데이터베이스를 업그레이드한 후 OS를 업그레이드할 수 있습니다.

주의

OS에 패치를 적용하면 루트 볼륨 데이터와 기존 OS 사용자 지정이 손실됩니다. 따라서 설치용 또는 영구 데이터나 파일 저장용 루트 볼륨은 사용하지 않는 것이 가장 바람직합니다. 또한 업그레이드 전에 데이터를 백업하는 것이 좋습니다.

CEV 없이 패치 적용

CEV를 사용하여 RDS Custom for Oracle DB 인스턴스를 업그레이드하는 것이 좋습니다. RDS Custom for Oracle 자동화는 패치 메타데이터를 DB 인스턴스의 데이터베이스 바이너리와 동기화합니다.

특수한 상황에서 RDS Custom은 OPatch 유틸리티를 사용하여 기본 Amazon EC2 인스턴스에 직접 '일회성' 데이터베이스 패치를 적용할 수 있도록 지원합니다. 유효한 사용 사례는 즉시 적용하려는 데이터베이스 패치일 수 있지만 RDS Custom 팀에서 CEV 기능을 업그레이드하고 있어 지연이 발생합니다. 수동으로 데이터베이스 패치를 적용하려면 다음 단계를 수행합니다.

  1. RDS Custom 자동화를 일시 중지합니다.

  2. Amazon EC2 인스턴스의 데이터베이스 바이너리에 패치를 적용합니다.

  3. RDS Custom 자동화를 다시 시작합니다.

이전 기법의 단점은 업그레이드하려는 모든 인스턴스에 데이터베이스 패치를 수동으로 적용해야 한다는 것입니다. 반대로 새 CEV를 만들 때는 동일한 CEV를 사용하여 여러 DB 인스턴스를 만들거나 업그레이드할 수 있습니다.

CEV로 DB 인스턴스에 패치를 적용하기 위한 일반적인 단계

OS 패치와 데이터베이스 패치 모두 다음 기본 단계를 수행합니다.

  1. 패치 적용 대상이 데이터베이스인지 OS인지에 따라 다음 중 하나를 포함하는 CEV를 생성합니다.

    • DB 인스턴스에 적용할 Oracle 데이터베이스 RU

    • 다른 AMI(사용 가능한 최신 AMI 또는 사용자가 지정한 AMI) 및 소스로 사용할 기존 CEV

    CEV 생성 단원의 단계를 따르세요.

  2. (데이터베이스 패치 적용의 경우 선택 사항) describe-db-engine-versions를 실행하여 사용 가능한 엔진 버전 업그레이드를 확인합니다.

  3. modify-db-instance를 실행하여 패치 프로세스를 시작합니다.

    패치 적용 중인 인스턴스의 상태는 다음과 같이 다릅니다.

    • RDS에서 데이터베이스에 패치를 적용 중인 경우 DB 인스턴스 상태가 업그레이드 중으로 바뀝니다.

    • RDS에서 OS에 패치를 적용 중인 경우 DB 인스턴스 상태가 수정 중으로 바뀝니다.

    DB 인스턴스의 상태가 사용 가능이면 패치 적용이 완료된 것입니다.

  4. describe-db-instances를 실행하여 DB 인스턴스가 새 CEV를 사용하는지 확인합니다.

RDS Custom for Oracle 업그레이드에 대한 요구 사항

RDS Custom for Oracle DB 인스턴스를 대상 CEV로 업그레이드할 때 다음 요구 사항을 충족하는지 확인해야 합니다.

  • 업그레이드하려는 대상 CEV가 존재해야 합니다.

  • 한 번의 작업으로 OS 또는 데이터베이스를 업그레이드해야 합니다. 하나의 API 호출로 OS와 데이터베이스를 모두 업그레이드하는 것은 지원되지 않습니다.

  • 대상 CEV는 현재 CEV의 매니페스트에 있는 설치 파라미터 설정을 사용해야 합니다. 예를 들어 기본 Oracle home을 사용하는 데이터베이스는 기본이 아닌 Oracle home을 사용하는 CEV로 업그레이드할 수 없습니다.

  • 데이터베이스 업그레이드의 경우 대상 CEV는 새 메이저 버전이 아닌 새 마이너 데이터베이스 버전을 사용해야 합니다. 예를 들어 Oracle Database 12c CEV에서 Oracle Database 19c CEV로 업그레이드할 수 없습니다. 하지만 버전 21.0.0.0.ru-2023-04.rur-2023-04.r1에서 버전 21.0.0.0.ru-2023-07.rur-2023-07.r1로 업그레이드할 수 있습니다.

  • OS 업그레이드의 경우 대상 CEV는 다른 AMI를 사용하지만 메이저 버전은 같아야 합니다.

RDS Custom for Oracle 데이터베이스 업그레이드에 대한 고려 사항

데이터베이스를 업그레이드할 계획이라면 다음 사항을 고려해야 합니다.

  • 기본 DB 인스턴스에서 데이터베이스 바이너리를 업그레이드할 때 RDS Custom for Oracle에서 읽기 전용 복제본을 자동으로 업그레이드합니다. OS를 업그레이드할 때는 읽기 전용 복제본을 수동으로 업그레이드해야 합니다.

  • 컨테이너 데이터베이스(CDB)를 새 데이터베이스 버전으로 업그레이드할 때 RDS Custom for Oracle은 모든 PDB가 열려 있거나 열릴 수 있는지 검사합니다. 이러한 조건이 충족되지 않는 경우 RDS Custom은 검사를 중지하고 업그레이드 시도 없이 데이터베이스를 원래 상태로 되돌립니다. 조건이 충족되면 RDS Custom은 먼저 CDB 루트를 패치한 다음 다른 모든 PDB(PDB$SEED 포함)를 병렬로 패치합니다.

    패치 적용이 완료된 후 RDS Custom은 모든 PDB를 열려고 시도합니다. 열리지 않는 PDB가 있으면 The following PDBs failed to open: list-of-PDBs 이벤트가 발생합니다. RDS Custom이 CDB 루트 또는 PDB를 패치하지 못하면 인스턴스가 PATCH_DB_FAILED 상태로 전환됩니다.

  • 메이저 데이터베이스 버전 업그레이드와 비CDB를 CDB로 변환하는 작업을 동시에 수행하고 싶을 수도 있습니다. 이 경우 다음 작업을 수행하는 것이 좋습니다.

    1. Oracle 멀티테넌트 아키텍처를 사용하는 새 RDS Custom for Oracle DB 인스턴스를 생성합니다.

    2. 비 CDB를 CDB 루트에 연결하여 PDB로 생성합니다. 비 CDB가 CDB와 동일한 메이저 버전인지 확인합니다.

    3. noncdb_to_pdb.sql Oracle SQL 스크립트를 실행하여 PDB를 변환합니다.

    4. CDB 인스턴스를 검증합니다.

    5. CDB 인스턴스를 업그레이드합니다.

RDS Custom for Oracle OS 업그레이드에 대한 고려 사항

OS를 업그레이드할 계획이라면 다음 사항을 고려해야 합니다.

  • RDS Custom for Oracle CEV에서 사용할 자체 AMI를 제공할 수 없습니다. 기본 AMI 또는 이전에 RDS Custom for Oracle CEV에서 사용한 AMI를 지정할 수 있습니다.

    참고

    RDS Custom for Oracle은 일반적인 취약성 및 노출이 발견되면 새로운 기본 AMI를 릴리스합니다. 일정이 정해져 있거나 보장되지 않습니다. RDS Custom for Oracle은 보통 30일마다 새로운 기본 AMI를 게시합니다.

  • 기본 DB 인스턴스에서 OS를 업그레이드할 때 연결된 읽기 전용 복제본을 수동으로 업그레이드해야 합니다.

  • OS 패치를 시작하기 전에 AZ의 인스턴스 유형에 충분한 Amazon EC2 컴퓨팅 용량을 예약하세요.

    용량 예약을 생성할 때 AZ, 인스턴스 수, 인스턴스 속성(인스턴스 유형 포함)을 지정합니다. 예를 들어 DB 인스턴스에서 기본 EC2 인스턴스 유형 r5.large를 사용하는 경우 AZ에서 r5.large용으로 EC2 용량을 예약하는 것이 좋습니다. OS 패치를 적용하는 동안 RDS Custom은 db.r5.large 유형의 새 호스트 하나를 생성하는데, AZ에 이 인스턴스 유형을 위한 EC2 용량이 부족하면 이 호스트가 중단될 수 있습니다. EC2 용량을 예약하면 용량 제약으로 인한 패치 적용 차단의 위험을 줄일 수 있습니다. 자세한 내용을 알아보려면 Amazon EC2 사용 설명서의 온디맨드 용량 예약을 참조하세요.

  • OS를 업그레이드하기 전에 DB 인스턴스를 백업합니다. 업그레이드 시 루트 볼륨 데이터와 기존 OS 사용자 지정이 모두 제거됩니다.

  • 공동 책임 모델에서는 OS를 최신 상태로 유지할 책임이 있습니다. RDS Custom for Oracle은 OS에 적용할 패치를 요구하지 않습니다. RDS Custom for Oracle이 작동하는 경우 이 CEV와 연결된 AMI를 무기한으로 사용할 수 있습니다.

RDS Custom for Oracle DB 인스턴스의 유효한 CEV 업그레이드 대상 보기

AWS Management Console의 사용자 지정 엔진 버전 페이지에서 기존 CEV를 볼 수 있습니다.

describe-db-engine-versions AWS CLI 명령을 사용하여 다음 예시와 같이 DB 인스턴스를 업그레이드할 때 사용할 유효한 CEV를 찾을 수도 있습니다. 이 예시에서는 엔진 버전 19.my_cev1을 사용하여 DB 인스턴스를 만들었고 업그레이드 버전 19.my_cev219.my_cev가 존재한다고 가정합니다.

aws rds describe-db-engine-versions --engine custom-oracle-ee --engine-version 19.my_cev1

다음과 유사하게 출력됩니다. ImageId 필드에는 AMI ID가 표시됩니다.

{ "DBEngineVersions": [ { "Engine": "custom-oracle-ee", "EngineVersion": "19.my_cev1", ... "Image": { "ImageId": "ami-2345", "Status": "active" }, "DBEngineVersionArn": "arn:aws:rds:us-west-2:123456789012:cev:custom-oracle-ee/19.my_cev1/12a34b5c-67d8-90e1-2f34-gh56ijk78lm9" "ValidUpgradeTarget": [ { "Engine": "custom-oracle-ee", "EngineVersion": "19.my_cev2", "Description": "19.my_cev2 description", "AutoUpgrade": false, "IsMajorVersionUpgrade": false }, { "Engine": "custom-oracle-ee", "EngineVersion": "19.my_cev3", "Description": "19.my_cev3 description", "AutoUpgrade": false, "IsMajorVersionUpgrade": false } ] ...

RDS Custom for Oracle DB 인스턴스 업그레이드

RDS Custom for Oracle DB 인스턴스를 업그레이드하려면 새로운 CEV를 사용하도록 수정하면 됩니다. 이 CEV에는 새 데이터베이스 바이너리나 새 AMI가 포함될 수 있습니다. 데이터베이스와 OS를 업그레이드하려면 별도의 업그레이드를 두 번 수행해야 합니다.

참고

데이터베이스를 업그레이드하는 경우 RDS Custom은 기본 DB 인스턴스를 업그레이드한 후 읽기 전용 복제본을 자동으로 업그레이드합니다. OS를 업그레이드하면 읽기 전용 복제본을 수동으로 업그레이드해야 합니다.

시작하기 전에 RDS Custom for Oracle 업그레이드에 대한 요구 사항RDS Custom for Oracle 데이터베이스 업그레이드에 대한 고려 사항 섹션을 검토하세요.

RDS Custom for Oracle DB 인스턴스를 업그레이드하는 방법
  1. https://console.aws.amazon.com/rds/에서 AWS Management Console에 로그인한 후 Amazon RDS 콘솔을 엽니다.

  2. 탐색 창에서 데이터베이스를 선택한 후 업그레이드하려는 RDS Custom for Oracle DB 인스턴스를 선택합니다.

  3. Modify(수정)를 선택합니다. Modify DB instance(DB 인스턴스 수정) 페이지가 나타납니다.

  4. DB 엔진 버전에서 새로운 CEV를 선택합니다. 다음을 따릅니다.

    • 데이터베이스에 패치를 적용하는 경우 CEV가 DB 인스턴스에서 사용하는 것과 다른 데이터베이스 바이너리를 지정하고 DB 인스턴스에서 현재 사용하는 AMI와 다른 AMI를 지정하지 않도록 해야 합니다.

    • OS에 패치를 적용하는 경우 CEV가 DB 인스턴스에서 사용하는 것과 다른 AMI를 지정하고 다른 데이터베이스 바이너리를 지정하지 않도록 해야 합니다.

      주의

      OS에 패치를 적용하면 루트 볼륨 데이터와 기존 OS 사용자 지정이 손실됩니다.

  5. 계속(Continue)을 선택하여 수정 사항을 요약한 내용을 확인합니다.

    변경 사항을 즉시 적용하려면 즉시 적용을 선택합니다.

  6. 변경 내용이 정확할 경우 DB 인스턴스 수정(Modify DB instance)을 선택합니다. 또는 뒤로를 선택하여 변경 내용을 편집하거나 취소를 선택하여 변경 내용을 취소합니다.

다음 예시는 가능한 업그레이드 시나리오를 보여줍니다. 이 예시에서는 다음 특징을 가진 RDS Custom for Oracle DB 인스턴스를 생성했다고 가정합니다.

  • 이름이 my-custom-instance인 DB 인스턴스

  • 이름이 19.my_cev1인 CEV

  • 비 CDB 아키텍처를 사용하는 Oracle Database 19c

  • AMI ami-1234를 사용하는 Oracle Linux 7.9

최신 서비스 제공 AMI는 ami-2345 describe-db-engine-versions CLI 명령을 실행하여 AMI를 찾을 수 있습니다.

OS 업그레이드

이 예시에서는 ami-1234를 서비스가 제공하는 최신 AMI인 ami-2345로 업그레이드하려고 합니다. OS 업그레이드이므로 ami-1234ami-2345의 데이터베이스 바이너리는 동일해야 합니다. 19.my_cev1을 기반으로 이름이 19.my_cev2인 새 CEV를 생성합니다.

대상 LinuxmacOS, 또는Unix:

aws rds create-custom-db-engine-version \ --engine custom-oracle-ee \ --engine-version 19.my_cev2 \ --description "Non-CDB CEV based on ami-2345" \ --kms-key-id key-name \ --source-custom-db-engine-version-identifer arn:aws:rds:us-west-2:123456789012:cev:custom-oracle-ee/19.my_cev1/12345678-ab12-1234-cde1-abcde123456789 \ --image-id ami-2345

Windows의 경우:

aws rds create-custom-db-engine-version ^ --engine custom-oracle-ee ^ --engine-version 19.my_cev2 ^ --description "Non-CDB CEV based on ami-2345" ^ --kms-key-id key-name ^ --source-custom-db-engine-version-identifer arn:aws:rds:us-west-2:123456789012:cev:custom-oracle-ee/19.my_cev1/12345678-ab12-1234-cde1-abcde123456789 ^ --image-id ami-2345

RDS Custom DB 인스턴스를 업그레이드하려면 modify-db-instance AWS CLI 명령을 다음 파라미터와 함께 사용합니다.

  • --db-instance-identifier - 업그레이드할 RDS Custom for Oracle DB 인스턴스를 지정합니다.

  • --engine-version - 새 AMI가 있는 CEV를 지정합니다.

  • --no-apply-immediately | --apply-immediately - 업그레이드를 즉시 수행할지 아니면 예약된 유지 관리 기간까지 기다릴지를 지정합니다.

다음 예제에서는 my-custom-instance를 버전 19.my_cev2으로 업그레이드합니다. OS만 업그레이드됩니다.

대상 LinuxmacOS, 또는Unix:

aws rds modify-db-instance \ --db-instance-identifier my-custom-instance \ --engine-version 19.my_cev2 \ --apply-immediately

Windows의 경우:

aws rds modify-db-instance ^ --db-instance-identifier my-custom-instance ^ --engine-version 19.my_cev2 ^ --apply-immediately

데이터베이스 업그레이드

이 예시에서는 RDS for Oracle DB 인스턴스에 Oracle 패치 p35042068을 적용하려고 합니다. OS 업그레이드에서 OS를 업그레이드했으므로 DB 인스턴스는 현재 ami-2345를 기반으로 19.my_cev2를 사용하고 있습니다. 동일하게 ami-2345를 사용하는 이름이 19.my_cev3인 새 CEV를 만들되 $MANIFEST 환경 변수에 새 JSON 매니페스트를 지정합니다. 따라서 새 CEV와 인스턴스가 현재 사용 중인 CEV에서 데이터베이스 바이너리만 다르게 설정됩니다.

대상 LinuxmacOS, 또는Unix:

aws rds create-custom-db-engine-version \ --engine custom-oracle-ee \ --engine-version 19.my_cev3 \ --description "Non-CDB CEV with p35042068 based on ami-2345" \ --kms-key-id key-name \ --image-id ami-2345 \ --manifest $MANIFEST

Windows의 경우:

aws rds create-custom-db-engine-version ^ --engine custom-oracle-ee ^ --engine-version 19.my_cev3 ^ --description "Non-CDB CEV with p35042068 based on ami-2345" ^ --kms-key-id key-name ^ --image-id ami-2345 ^ --manifest $MANIFEST

다음 예시에서는 my-custom-instance를 엔진 버전 19.my_cev3으로 업그레이드합니다. 데이터베이스만 업그레이드됩니다.

대상 LinuxmacOS, 또는Unix:

aws rds modify-db-instance \ --db-instance-identifier my-custom-instance \ --engine-version 19.my_cev3 \ --apply-immediately

Windows의 경우:

aws rds modify-db-instance ^ --db-instance-identifier my-custom-instance ^ --engine-version 19.my_cev3 ^ --apply-immediately

RDS Custom DB 인스턴스의 보류 중인 데이터베이스 업그레이드 보기

describe-db-instances 또는 describe-pending-maintenance-actions AWS CLI 명령을 사용하여 Amazon RDS Custom DB 인스턴스의 보류 중인 데이터베이스 업그레이드를 확인할 수 있습니다.

그러나 --apply-immediately 옵션을 사용했거나 업그레이드가 진행 중인 경우에는 이 방법을 사용할 수 없습니다.

다음 describe-db-instances 명령은 my-custom-instance에 대한 보류 중인 데이터베이스 업그레이드를 보여줍니다.

aws rds describe-db-instances --db-instance-identifier my-custom-instance

다음과 유사하게 출력됩니다.

{ "DBInstances": [ { "DBInstanceIdentifier": "my-custom-instance", "EngineVersion": "19.my_cev1", ... "PendingModifiedValues": { "EngineVersion": "19.my_cev3" ... } } ] }

RDS Custom for Oracle DB 인스턴스의 업그레이드 실패 문제 해결

RDS Custom DB 인스턴스 업그레이드가 실패하면 RDS 이벤트가 생성되고 DB 인스턴스 상태가 upgrade-failed로 변경됩니다.

다음 예제와 같이 describe-db-instances AWS CLI 명령을 사용하여 이 상태를 확인할 수 있습니다.

aws rds describe-db-instances --db-instance-identifier my-custom-instance

다음과 유사하게 출력됩니다.

{ "DBInstances": [ { "DBInstanceIdentifier": "my-custom-instance", "EngineVersion": "19.my_cev1", ... "PendingModifiedValues": { "EngineVersion": "19.my_cev3" ... } "DBInstanceStatus": "upgrade-failed" } ] }

업그레이드 실패 후 다음 작업을 수행할 수 있도록 DB 인스턴스를 수정하는 작업을 제외한 모든 데이터베이스 작업이 차단됩니다.

  • 동일한 업그레이드 재시도

  • RDS Custom 자동화 일시 중지 및 다시 시작

  • 특정 시점으로 복구(PITR)

  • DB 인스턴스 삭제

참고

RDS Custom DB 인스턴스에 대해 자동화가 일시 중지된 경우 자동화를 재개할 때까지 업그레이드를 다시 시도할 수 없습니다.

프라이머리에 대해서 RDS 관리형 읽기 전용 복제본의 업그레이드 실패에도 이와 동일한 작업이 적용됩니다.

자세한 내용은 RDS Custom for Oracle 업그레이드 문제 해결을 참조하세요.