Amazon RDS for Oracle에서 주 버전 업그레이드를 수행할 때 고려해야 하는 요소는 무엇입니까?

8분 분량
0

Oracle을 실행하는 Amazon Relational Database Service(Amazon RDS) DB 인스턴스가 있습니다. 주 버전 업그레이드를 수행할 때 고려해야 할 요소를 알고 싶습니다.

간략한 설명

Amazon RDS가 새 버전의 Oracle 데이터베이스를 지원하기 시작하면, 상위 버전을 선택한 다음 주 버전 업그레이드를 수행하여 기존 Oracle 데이터베이스 버전을 업그레이드할 수 있습니다. 주 버전에는 업데이트, 새로운 기능, 보안 수정 사항, 최적화 프로그램 개선 사항 및 성능 개선이 포함될 수 있습니다. 프로덕션 데이터베이스를 업그레이드하기 전에, 비프로덕션 환경에서 새 버전의 Oracle 데이터베이스에 대해 애플리케이션의 기능, 호환성 및 성능을 테스트하는 것이 가장 모범 사례입니다.

참고: AWS CLI 명령을 실행할 때 오류가 발생하는 경우, 최신 버전의 AWS CLI를 사용하고 있는지 확인하세요.

해결 방법

업그레이드 전

다음은 주 버전 업그레이드를 수행하기 전에 유의해야 할 몇 가지 사항입니다.

업그레이드 경로: 현재 Oracle 데이터베이스 버전에서 의도한 주 버전의 Oracle 데이터베이스로의 지원되는 업그레이드 경로를 확인합니다. 다음 AWS Command Line Interface(AWS CLI) 명령을 실행하여 유효한 업그레이드 경로를 확인할 수 있습니다.

Windows의 경우:

aws rds describe-db-engine-versions --engine engine-edition --engine-version current-engine-version --query "DBEngineVersions[*].ValidUpgradeTarget[?IsMajorVersionUpgrade==`true`].EngineVersion"

Linux, macOS 또는 Unix의 경우:

aws rds describe-db-engine-versions --engine engine-edition --engine-version current-engine-version --query 'DBEngineVersions[*].ValidUpgradeTarget[?IsMajorVersionUpgrade==`true`].EngineVersion'

이전의 명령에서 다음 값을 바꿔야 합니다.

  • 데이터베이스 엔진 에디션이 포함된 engine-edition입니다.
  • 현재 버전의 데이터베이스 엔진을 사용하는 current-engine-version입니다.

Amazon RDS for Oracle 12.1.0.2.v10 인스턴스가 있다고 가정합니다. RDS for Oracle 인스턴스를 업그레이드할 수 있는 모든 유효한 주 버전에 대해 알아보려면 다음 명령을 실행합니다.

Windows의 경우:

aws rds describe-db-engine-versions --engine oracle-ee --engine-version 12.1.0.2.v10 --query "DBEngineVersions[*].ValidUpgradeTarget[?IsMajorVersionUpgrade==`true`].EngineVersion"

Linux, macOS 또는 Unix의 경우:

aws rds describe-db-engine-versions --engine oracle-ee --engine-version 12.1.0.2.v10 --query 'DBEngineVersions[*].ValidUpgradeTarget[?IsMajorVersionUpgrade==`true`].EngineVersion'

인스턴스 클래스: 현재의 인스턴스 클래스가 업그레이드할 주 버전에서 지원되는지 확인합니다. RDS for Oracle에서 지원하는 인스턴스 클래스에 대한 자세한 내용은지원되는 Oracle DB 인스턴스 클래스를 참조하십시오. 다음 AWS CLI 명령을 실행하여 지원되는 인스턴스 클래스를 확인할 수도 있습니다.

Windows의 경우:

aws rds describe-orderable-db-instance-options --engine engine-edition --engine-version new-engine-version --region example-region --query "OrderableDBInstanceOptions[*].DBInstanceClass"

Linux, macOS 또는 Unix의 경우:

aws rds describe-orderable-db-instance-options --engine engine-edition --engine-version new-engine-version --region example-region --query 'OrderableDBInstanceOptions[*].DBInstanceClass'

이전의 명령에서 다음 값을 바꿔야 합니다.

  • 데이터베이스 엔진 에디션이 포함된 engine-edition입니다.
  • 업그레이드하려는 새 버전이 포함된 new-engine-version입니다.
  • 사용 중인 리전이 포함된 example-region입니다.

예를 들어, RDS for Oracle 12.2.0.1.ru-2020-10.r 1인스턴스로 업그레이드하려고 한다고 가정해 보겠습니다. 특정 리전에서 주 버전을 지원하는 인스턴스 클래스에 대해 알아보려면 다음 명령을 실행합니다.

aws rds describe-orderable-db-instance-options --engine oracle-ee --engine-version 12.2.0.1.ru-2020-10.rur-2020-10.r1 --region us-east-1 --query "OrderableDBInstanceOptions[*].DBInstanceClass"

명령에서 us-east-1을 선택한 리전으로 바꿔야 합니다.

클라이언트 호환성: Oracle 클라이언트/드라이버 버전이 새 주 버전과 호환되는지 확인합니다. 주 버전 업그레이드와 함께 드라이버를 업그레이드해야 하는지 확인합니다. 상호 운용성에 대한 자세한 내용은, Oracle Database 클라이언트 및 Oracle Database 상호 운용성에 대한 Oracle 설명서를 참조하십시오.

업그레이드 방법: 다음 방법 중 하나로 주 버전 업그레이드를 수행할 수 있습니다.

  • RDS 인스턴스를 수정하고 새 주 버전을 적용합니다.
    참고: 이 방법에는 약간의 가동 중지 시간이 포함됩니다.
  • 주 버전으로 새 RDS 인스턴스를 생성하고, AWS DMS(AWS 데이터 마이그레이션 서비스)를 사용하여 데이터를 마이그레이션합니다.
    참고: AWS DMS는 최소한의 접근 방식을 사용하여 데이터를 마이그레이션하고 데이터를 효율적으로 마이그레이션하는 데 필요한 객체만 생성합니다. AWS DMS는 테이블, 기본 키 및 경우에 따라 고유 인덱스를 생성하지만, 소스에서 데이터를 효율적으로 마이그레이션하는 데 필요하지 않은 다른 객체는 생성하지 않습니다. 예를 들어, AWS DMS는 보조 인덱스, 기본이 아닌 키 제약 조건 또는 데이터 기본값을 생성하지 않습니다. 자세한 내용은, AWS DMS의 상위 수준 보기를 참조하십시오.

사용 사례에 따라 업그레이드를 수행하려면 다음 방법 중 하나를 선택합니다.

사용자 지정 파라미터 그룹: 인스턴스에 사용자 지정 파라미터 그룹이 있는 경우, 새 주 버전에 대한 새 파라미터 그룹을 생성하고 사용자 지정 파라미터를 적절하게 설정합니다. 현재 사용 중인 사용자 지정 파라미터를 식별하려면 기존 사용자 지정 파라미터 그룹을 현재 버전의 기본 파라미터 그룹과 비교합니다.

사용자 지정 옵션 그룹: 인스턴스에 사용자 지정 옵션 그룹이 있는 경우, 주 버전에 대한 새 사용자 지정 옵션 그룹을 생성합니다. 옵션 그룹에 표준 시간대 또는 Oracle 투명 데이터 암호화와 같은 지속 또는 영구 옵션이 있는 경우, 동일한 지속 또는 영구 옵션이 새 사용자 지정 옵션 그룹에 포함되어야 합니다. 주 버전 업그레이드와 함께 표준 시간대 파일 버전을 데이터베이스 인스턴스에서 사용 가능한 최신 버전으로 업그레이드하려면, TIMEZONE_FILE_AUTOUPGRADE 옵션을 새 사용자 지정 옵션 그룹에 추가합니다.

사전 통계: 사전 통계 및 고정 객체 통계를 수집하면 업그레이드 중 인스턴스 가동 중단 시간을 줄일 수 있습니다. 다음 쿼리를 실행하여 통계를 수집할 수 있습니다.

SQL> EXEC DBMS_STATS.GATHER_DICTIONARY_STATS;
SQL> EXEC DBMS_STATS.GATHER_FIXED_OBJECTS_STATS;

잘못된 객체: 데이터베이스에 유효하지 않은 개체가 포함되어 있지 않은지 반드시 확인합니다. 다음 쿼리를 실행하여 이 작업을 수행할 수 있습니다.

SQL> SELECT OWNER, STATUS, COUNT (*) FROM DBA_OBJECTS GROUP BY OWNER, STATUS;

유효하지 않은 개체가 발견되면, 다음 쿼리를 실행하여 유효하지 않은 개체를 확인합니다.

SQL> SELECT OWNER, OBJECT_NAME, OBJECT_TYPE FROM DBA_OBJECTS WHERE STATUS != 'VALID';

다음 쿼리를 실행하여 스키마의 잘못된 객체를 모두 컴파일할 수 있습니다.

SQL> EXEC DBMS_UTILITY.compile_schema(schema => 'ADMIN', compile_all => false);

쿼리의ADMIN을 스키마 이름으로 바꿔야 합니다.

감사 추적: 감사 추적이 길지 않은지 확인하십시오. 감사 추적이 길어지면, 업그레이드 전 점검 및 업그레이드가 더 오래 걸릴 수 있습니다. 감사 추적을 자르려면, Oracle을 실행하는 Amazon RDS DB 인스턴스에서 sys.aud$ 테이블을 자르려면 어떻게 해야 합니까?를 참조하십시오. 또한, DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAIL 절차를 사용하여 감사 추적을 삭제할 수도 있습니다.

암호: 다음 쿼리를 실행하여 이전 버전의 암호를 사용하고 있지 않은지 확인합니다.

SQL> SELECT USERNAME,PASSWORD_VERSIONS FROM DBA_USERS;

쿼리 결과에서 사용자가 10g 버전의 암호만 사용하는 경우, 새 버전의 암호로 사용자를 다시 만들 수 있는지 확인합니다. 사용자 암호 버전을 수정할 수 없는 경우, 연결 오류를 방지하기 위해 SQLNET.ALLOWED_LOGON_VERSION_SERVER 파라미터를 적절하게 설정하십시오.

RDS for Oracle 인스턴스에 sqlnetora.sqlnet.allowed_logon_version_server 파라미터가 정의되어 있는 경우 이 파라미터는 데이터베이스 서버에 연결할 때 허용되는 인증 프로토콜의 최소 버전을 나타냅니다. 8로 설정하면, 대부분의 암호 버전이 허용되며, DBA_USERS.PASSWORD_VERSIONS 값 10G, 11G 및 12C를 조합할 수 있습니다.

Oracle RDS 인스턴스에 sqlnetora.sqlnet.allowed_logon_version_client 파라미터가 정의되어 있는 경우 이 파라미터는 데이터베이스가 클라이언트 역할을 할 때 사용되는 최소 인증 프로토콜을 나타냅니다.

자세한 내용은대소문자를 구분하지 않는 암호 버전을 사용하여 계정 확인에 대한 Oracle 설명서를 참조하십시오.

DBMS_JOB: Oracle 데이터베이스12c Release 2의 업그레이드와 함께 DBMS_JOB 패키지가 중단되었습니다. 버전 19c로 업그레이드하는 경우, 업그레이드 전에 모든 DBMS_JOB 작업을 DBMS_SCHEDULER 작업으로 변환하는 것이 모범 사례입니다. 업그레이드 중에, Oracle은 DBMS_JOB 작업을 DBMS_SCHEDULER 작업으로 변환합니다. 자세한 내용은DBMS_JOB 지원에 대한 Oracle 설명서를 참조하십시오. DBMS_JOB 항목 수가 많은 경우, 업그레이드 시간이 더 오래 걸릴 수 있습니다.

FreeStorageSpace: 인스턴스가 스토리지 용량에 근접하지 않은지 확인합니다. FreeStorageSpace CloudWatch 지표를 확인하여, 업그레이드를 성공적으로 완료하는 데 사용할 수 있는 여유 스토리지 공간이 있는지 확인합니다. 자세한 내용은, Amazon RDS의 여유 스토리지 공간을 모니터링하고, 스토리지가 가득 차는 문제를 방지하기 위해 CloudWatch 알람을 생성하려면 어떻게 해야 하나요?를 참조하세요.

유지 관리 작업: Amazon RDS 콘솔에서 인스턴스에 보류 중인 유지 관리 작업이 있는지 확인합니다. 이러한 작업은 업그레이드 기간 동안 적용됩니다. 다중 AZ 인스턴스의 경우, 운영 체제 업데이트가 필요하지 않으면, 기본 및 예비 업그레이드가 동시에 수행됩니다. 운영 체제 업데이트가 필요한 경우, Amazon RDS는다중 AZ 배포에서 Oracle 업그레이드에 설명된 대로 업그레이드를 적용합니다.

수동 스냅샷: 다음과 같은 이유로 RDS for Oracle 데이터베이스 인스턴스의 수동 스냅샷을 생성합니다.

  • Amazon RDS에서 버전이 지원되는 경우 스냅샷을 사용하여 이전 버전으로 롤백할 수 있습니다.
  • 자동 스냅샷은 일반적으로 주 버전 업그레이드 프로세스의 일부로 생성됩니다. Amazon Elastic Block Store(Amazon EBS) 스냅샷은 증분식이므로, 새 스냅샷은 백업에 대한 변경 사항이 더 적습니다. 따라서, 수동 스냅샷을 생성하면 자동 스냅샷을 생성하는 데 걸리는 시간과 업그레이드를 완료하는 데 소요되는 총 시간을 줄일 수 있습니다.

현재 구성: 다음 쿼리를 실행하여, 인스턴스의 현재 구성을 확인하고 출력을 저장합니다. 출력은 RDS for Oracle 인스턴스에 연결된 옵션 그룹, 파라미터 그룹, 보안 그룹 및 태그에 대한 정보를 제공합니다. 스냅샷에서 롤백 및 복구를 수행하거나 특정 시점으로 복구를 수행하려면, 다음 명령에서 검색한 정보를 사용합니다.

> aws rds describe-db-instances --db-instance-identifier example-instance-name --region example-region

쿼리에서 다음과 같이 값을 변경합니다.

  • RDS for Oracle 인스턴스 이름이 있는 example-instance-name.
  • 선택한 리전이 있는 example-region.

실행 취소 테이블스페이스: 업그레이드 중에 크기 조정 작업을 방지하려면실행 취소 테이블스페이스가 올바른 크기로 설정되어 있는지 확인합니다.

트리거: 다음 쿼리를 실행하여 로그온, 로그오프 및 스타트업 트리거를 나열합니다.

SQL> SELECT OWNER, TRIGGER_NAME, TRIGGER_TYPE, TRIGGERING_EVENT, TABLE_OWNER, STATUS, ACTION_TYPE, TRIGGER_BODY FROM DBA_TRIGGERS WHERE TRIGGERING_EVENT LIKE '%LOGO%' or TRIGGERING_EVENT LIKE '%STARTUP%';

트리거가 유효하고 기능적인지 확인합니다. 트리거는 유효하고 잘 컴파일되지만, 런타임에 오류가 발생하여 데이터베이스 재부팅을 방해할 수 있습니다. 실행 시 오류를 발생시키는 로그온, 로그오프 또는 스타트업 트리거가 있는지 확인합니다. 다음 쿼리를 실행하여 이러한 트리거를 비활성화할 수 있습니다.

SQL> ALTER TRIGGER EXAMPLE-OWNER.EXAMPLE-TRIGGER DISABLE;

쿼리에서 다음과 같이 값을 변경합니다.

  • 트리거를 생성한 스키마의 이름이 있는EXAMPLE-OWNER.
  • 트리거 이름이 있는 EXAMPLE-OWNER

예:

--To disable AUDIT_USERS trigger in MYADMIN schema
SQL> ALTER TRIGGER MYADMIN.AUDIT_USERS DISABLE;

업그레이드 중

업그레이드를 시작한 후, Amazon RDS 콘솔에서 다음을 확인하여 업그레이드 진행 상황을 모니터링할 수 있습니다.

  • 인스턴스의 로그 및 이벤트 탭 아래에 있는 경고 로그
  • 인스턴스의 로그 및 이벤트 탭 아래에 있는최근 이벤트

업그레이드 후

  • 데이터베이스에 연결한 후, 다음 쿼리를 실행하여 패치 버전을 확인합니다.
SQL> SELECT * FROM sys.registry$history;
SQL> SELECT INSTALL_ID,PATCH_ID,ACTION,STATUS,ACTION_TIME,DESCRIPTION FROM DBA_REGISTRY_SQLPATCH;
  • Amazon RDS는 패치를 적용한 후 1시간 이내에 lsinventory-dbv.txt 파일을 업데이트합니다. Amazon RDS 콘솔에 있는 인스턴스의로그 및 이벤트 탭에서 이 파일을 다운로드할 수 있습니다. Isinventory-dbv.txt 파일을 읽어 적용된 패치를 확인합니다.
  • 다음 질의를 실행하여 사전 통계 및 고정 객체 통계를 수집합니다.
SQL> EXEC DBMS_STATS.GATHER_DICTIONARY_STATS;
SQL> EXEC DBMS_STATS.GATHER_FIXED_OBJECTS_STATS;
  • 다음 쿼리를 실행하여 유효하거나 유효하지 않은 객체 수가 업그레이드 전의 개수와 일치하는지 확인합니다.
SQL> SELECT OWNER, STATUS, COUNT(*) from DBA_OBJECTS GROUP BY OWNER, STATUS;
  • 다음 쿼리를 실행하여 스키마의 유효하지 않은 객체를 모두 컴파일합니다.
SQL> EXEC DBMS_UTILITY.compile_schema(schema => 'ADMIN', compile_all => false);
  • 업그레이드 후, 새 주 버전의 최적기 기능으로 인해 쿼리 성능 문제가 발생하는 경우, OPTIMIZER_FEATURES_ENABLE 파라미터를 사용하는 것이 좋습니다. 세션 수준 및 시스템 수준에서 이 파라미터를 변경할 수 있습니다. 예를 들어, 릴리스 18.1에서 릴리스 19.1로 데이터베이스를 업그레이드하지만, 릴리스 18.1 최적기 동작을 유지하려는 경우, OPTIMIZER_FEATURES_ENABLE 파라미터의 값을 18.1.0으로 설정하면 됩니다.

관련 정보

Oracle DB 엔진 업그레이드