

# Amazon RDS for Oracle
<a name="CHAP_Oracle"></a>

Amazon RDS는 Oracle Database의 다음 버전 및 에디션을 실행하는 DB 인스턴스를 지원합니다.
+ Oracle Database 21c(21.0.0.0)
+ Oracle Database 19c(19.0.0.0)

**참고**  
Oracle Database 11g, Oracle Database 12 및 Oracle Database 18c는 Amazon RDS에서 더 이상 지원되지 않는 레거시 버전입니다.

DB 인스턴스를 생성하기 전에 이 안내서의 [Amazon RDS 환경 설정](CHAP_SettingUp.md) 단원에 있는 단계를 완료해야 합니다. 마스터 계정을 사용하여 DB 인스턴스를 생성하면 계정에 DBA 권한이 부여되며 몇 가지 제한이 있습니다. 추가 데이터베이스 계정 생성과 같은 관리 작업에 이 계정을 사용합니다. SYS, SYSTEM 또는 기타 Oracle에서 제공하는 관리 계정은 사용할 수 없습니다.

다음을 생성할 수 있습니다.
+ DB 인스턴스
+ DB 스냅샷
+ 특정 시점 복원
+ 자동 백업
+ 수동 백업

VPC 내에서 Oracle Database를 실행하는 DB 인스턴스를 사용할 수 있습니다. 또한 Oracle Spatial 또는 Oracle Statspack과 같은 다양한 옵션을 활성화하여 DB 인스턴스에 기능을 추가할 수 있습니다. Amazon RDS는 고가용성 장애 조치 솔루션으로서 Oracle용 다중 AZ 배포를 지원합니다.

**중요**  
관리형 서비스 환경을 제공하기 위해 Amazon RDS는 DB 인스턴스에 대해 shell 액세스를 제공하지 않습니다. 또한 고급 권한이 필요한 특정 시스템 절차와 테이블에 대한 액세스를 제한합니다. Oracle SQL\$1Plus와 같은 표준 SQL 클라이언트를 사용하여 데이터베이스에 액세스할 수 있습니다. 그러나 Telnet 또는 SSH(Secure Shell)를 사용하여 호스트에 직접 액세스할 수는 없습니다.

**Topics**
+ [Oracle on Amazon RDS 개요](Oracle.Concepts.overview.md)
+ [Oracle DB 인스턴스에 연결](USER_ConnectToOracleInstance.md)
+ [Oracle DB 인스턴스 연결 보안](Oracle.Concepts.RestrictedDBAPrivileges.md)
+ [RDS for Oracle에서 CDB 작업](oracle-multitenant.md)
+ [RDS for Oracle DB 인스턴스 관리](Appendix.Oracle.CommonDBATasks.md)
+ [RDS for Oracle에서 스토리지 작업](User_Oracle_AdditionalStorage.md)
+ [RDS for Oracle 고급 기능 구성](CHAP_Oracle.advanced-features.md)
+ [Amazon RDS의 Oracle로 데이터 가져오기](Oracle.Procedural.Importing.md)
+ [Amazon RDS의 Oracle의 읽기 전용 복제본 작업](oracle-read-replicas.md)
+ [Oracle DB 인스턴스에 옵션 추가](Appendix.Oracle.Options.md)
+ [RDS for Oracle DB 엔진 업그레이드](USER_UpgradeDBInstance.Oracle.md)
+ [RDS for Oracle DB 인스턴스에 서드 파티 소프트웨어 사용](Oracle.Resources.md)
+ [Oracle 데이터베이스 엔진 릴리스 정보](USER_Oracle_Releases.md)

# Oracle on Amazon RDS 개요
<a name="Oracle.Concepts.overview"></a>

다음 섹션을 읽으면 RDS for Oracle의 개요를 파악할 수 있습니다.

**Topics**
+ [RDS for Oracle 기능](Oracle.Concepts.FeatureSupport.md)
+ [RDS for Oracle 릴리스](Oracle.Concepts.database-versions.md)
+ [RDS for Oracle 라이선스 옵션](Oracle.Concepts.Licensing.md)
+ [RDS for Oracle 사용자 및 권한](Oracle.Concepts.Privileges.md)
+ [RDS for Oracle DB 인스턴스 클래스](Oracle.Concepts.InstanceClasses.md)
+ [RDS for Oracle 데이터베이스 아키텍처](oracle-multi-architecture.md)
+ [RDS for Oracle 초기화 파라미터](Oracle.Concepts.FeatureSupport.Parameters.md)
+ [RDS for Oracle 문자 집합](Appendix.OracleCharacterSets.md)
+ [RDS for Oracle 제한 사항](Oracle.Concepts.limitations.md)

# RDS for Oracle 기능
<a name="Oracle.Concepts.FeatureSupport"></a>

Amazon RDS for Oracle은 Oracle 데이터베이스의 기능을 대부분 지원합니다. 일부 기능에는 제한된 지원 또는 제한된 권한이 있을 수 있습니다. 일부 기능은 Enterprise Edition에서만 사용할 수 있으며 일부 기능은 추가 라이선스가 필요합니다. 특정 Oracle 데이터베이스 버전의 Oracle Database 기능에 대한 자세한 내용은 사용 중인 버전의 *Oracle 데이터베이스 라이선싱 정보 사용자 설명서*를 참조하십시오.

**Topics**
+ [RDS for Oracle의 새로운 기능](#Oracle.Concepts.FeatureSupport.new)
+ [RDS for Oracle에서 지원되는 기능](#Oracle.Concepts.FeatureSupport.supported)
+ [RDS for Oracle에서 지원되지 않는 기능](#Oracle.Concepts.FeatureSupport.unsupported)

## RDS for Oracle의 새로운 기능
<a name="Oracle.Concepts.FeatureSupport.new"></a>

RDS for Oracle의 새로운 기능을 보려면 **Oracle** 키워드에서 [문서 기록](WhatsNew.md)을 검색합니다.

## RDS for Oracle에서 지원되는 기능
<a name="Oracle.Concepts.FeatureSupport.supported"></a>

Amazon RDS for Oracle은 다음 Oracle 데이터베이스 기능을 지원합니다.

**참고**  
다음 목록이 전부는 아닙니다.
+ 고급 압축
+ Oracle Application Express(APEX)

  자세한 내용은 [Oracle Application Express(APEX)](Appendix.Oracle.Options.APEX.md) 섹션을 참조하세요.
+ 자동 메모리 관리
+ 자동 실행 취소 관리
+ Automatic Workload Repository(AWR)

  자세한 내용은 [Automatic Workload Repository(AWR)를 사용하여 성능 보고서 생성](Appendix.Oracle.CommonDBATasks.AWR.md) 섹션을 참조하세요.
+ 동일한 AWS 리전 또는 AWS 리전 간에 최대 성능을 제공하는 활성 데이터 보호

  자세한 내용은 [Amazon RDS의 Oracle의 읽기 전용 복제본 작업](oracle-read-replicas.md) 단원을 참조하세요.
+ 블록체인 테이블(Oracle Database 21c 이상)

  자세한 내용은 Oracle Database 설명서의 [블록체인 테이블 관리](https://docs.oracle.com/en/database/oracle/oracle-database/21/admin/managing-tables.html#GUID-43470B0C-DE4A-4640-9278-B066901C3926)를 참조하세요.
+ 연속 쿼리 알림

  자세한 내용은 Oracle 설명서의 [Using Continuous Query Notification(CQN)](https://docs.oracle.com/en/database/oracle/oracle-database/19/adfns/cqn.html#GUID-373BAF72-3E63-42FE-8BEA-8A2AEFBF1C35)을 참조하세요.
+ 데이터 개정
+ 연속 쿼리 알림

  자세한 내용은 Oracle 설명서의 [Database Change Notification](https://docs.oracle.com/cd/E11882_01/java.112/e16548/dbchgnf.htm#JJDBC28815)을 참조하세요.
+ 데이터베이스 인 메모리
+ 분산 쿼리 및 트랜잭션
+ 에디션 기반 재정의

  자세한 내용은 [DB 인스턴스의 기본 에디션 설정](Appendix.Oracle.CommonDBATasks.DefaultEdition.md) 단원을 참조하세요.
+ EM Express(12c 이상)

  자세한 내용은 [Oracle Enterprise Manager](Oracle.Options.OEM.md)을 참조하세요.
+ 세분화된 감사
+ 플래시백 테이블, 플래시백 쿼리, 플래시백 트랜잭션 쿼리
+ 애플리케이션에 대한 점진적인 암호 롤오버(Oracle Database 21c 이상)

  자세한 내용은 Oracle Database 설명서의 [Managing Gradual Database Password Rollover for Applications](https://docs.oracle.com/en/database/oracle/oracle-database/19/dbseg/configuring-authentication.html#GUID-ACBA8DAE-C5B4-4811-A31D-53B97C50249B)(애플리케이션에 대한 점진적인 데이터베이스 암호 롤오버 관리)를 참조하세요.
+ HugePages

  자세한 내용은 [RDS for Oracle 인스턴스에 HugePages 활성화](Oracle.Concepts.HugePages.md) 섹션을 참조하세요.
+ 가져오기/내보내기(레거시 및 데이터 펌프) 및 SQL\$1Loader

  자세한 내용은 [Amazon RDS의 Oracle로 데이터 가져오기](Oracle.Procedural.Importing.md) 섹션을 참조하세요.
+ Java 가상 머신(JVM)

  자세한 내용은 [Oracle Java 가상 머신](oracle-options-java.md)을 참조하세요.
+ JavaScript(Oracle Database 21c 이상)

  자세한 내용은 Oracle Database 설명서의 [DBMS\$1MLE](https://docs.oracle.com/en/database/oracle/oracle-database/21/arpls/dbms_mle.html#GUID-3F5B47A5-2C73-4317-ACD7-E93AE8B8E301)를 참조하세요.
+ 레이블 보안

  자세한 내용은 [Oracle 레이블 보안](Oracle.Options.OLS.md) 섹션을 참조하세요.
+ 로케이터

  자세한 내용은 [Oracle Locator](Oracle.Options.Locator.md) 섹션을 참조하세요.
+ 구체화된 보기
+ 멀티테넌트

  Oracle 멀티테넌트 아키텍처는 모든 Oracle Database 19c 이상 릴리스에서 지원됩니다. 자세한 내용은 [RDS for Oracle에서 CDB 작업](oracle-multitenant.md) 섹션을 참조하세요.
+ 네트워크 암호화

  자세한 내용은 [Oracle 기본 네트워크 암호화](Appendix.Oracle.Options.NetworkEncryption.md) 및 [Oracle 보안 소켓 Layer](Appendix.Oracle.Options.SSL.md) 단원을 참조하십시오.
+ 분할
+ 실제 애플리케이션 테스트

  전체 캡처 및 재생 기능을 사용하려면 Amazon Elastic File System(Amazon EFS)을 사용하여 Oracle Real 애플리케이션 테스트에서 생성된 파일에 액세스해야 합니다. 자세한 내용은 [Amazon EFS 통합](oracle-efs-integration.md) 및 블로그 게시물 [Amazon RDS for Oracle과 함께 Oracle Real 애플리케이션 테스트 기능 사용](https://aws.amazon.com/blogs/database/use-oracle-real-application-testing-features-with-amazon-rds-for-oracle/)을 참조하세요.
+ 애플리케이션 수준에서의 샤딩(Oracle 샤딩 기능 제외)
+ 공간 및 그래프

  자세한 내용은 [Oracle Spatial](Oracle.Options.Spatial.md) 섹션을 참조하세요.
+ 스타 쿼리 최적화
+ 스트림 및 고급 대기열
+ 요약 관리 – 구체화된 보기 쿼리 다시 쓰기
+ 텍스트(파일 및 URL 데이터 스토어 유형은 지원되지 않음)
+ 토탈 리콜
+ TDE(Transparent Data Encryption)

  자세한 내용은 [Oracle Transparent Data Encryption](Appendix.Oracle.Options.AdvSecurity.md)을 참조하세요.
+ 통합 감사, 혼합 모드

  자세한 내용은 Oracle 설명서의 [혼합 모드 감사](https://docs.oracle.com/en/database/oracle/oracle-database/19/dbseg/introduction-to-auditing.html#GUID-4A3AEFC3-5422-4320-A048-8219EC96EAC1)를 참조하세요.
+ XML DB(XML DB Protocol Server 사용 안 함)

  자세한 내용은 [Oracle XML DB](Appendix.Oracle.Options.XMLDB.md) 섹션을 참조하세요.
+ 가상 프라이빗 데이터베이스

## RDS for Oracle에서 지원되지 않는 기능
<a name="Oracle.Concepts.FeatureSupport.unsupported"></a>

Amazon RDS for Oracle은 다음 Oracle 데이터베이스 기능을 지원하지 않습니다.

**참고**  
다음 목록이 전부는 아닙니다.
+ Automatic Storage Management(ASM)
+ 데이터베이스 볼트
+ 플래시백 데이터베이스
**참고**  
대체 솔루션은 AWS 데이터베이스 블로그 항목인 [Amazon RDS for Oracle에서 Oracle 플래시백 데이터베이스 기능의 대안](https://aws.amazon.com/blogs/database/alternatives-to-the-oracle-flashback-database-feature-in-amazon-rds-for-oracle/)을 참조하세요.
+ FTP 및 SFTP
+ 파티셔닝된 하이브리드 테이블
+ 메시징 게이트웨이
+ Oracle Enterprise Manager Cloud Control Management Repository
+ 실제 애플리케이션 클러스터(Oracle RAC)
+ Real Application Security(RAS)
+ 통합 감사, 순수 모드
+ 작업 영역 관리자(WMSYS) 스키마

**주의**  
일반적으로 Amazon RDS에서는 지원되지 않는 기능에 대한 스키마를 생성하지 못하게 막지 않습니다. 그러나 SYSDBA 권한이 필요한 Oracle 기능 및 구성 요소에 대한 스키마를 생성하는 경우, 데이터 딕셔너리가 손상되어 DB 인스턴스의 가용성에 영향을 줄 수 있습니다. [Oracle DB 인스턴스에 옵션 추가](Appendix.Oracle.Options.md)에서 사용할 수 있는 지원되는 기능 및 스키마만 사용하세요.

# RDS for Oracle 릴리스
<a name="Oracle.Concepts.database-versions"></a>

RDS for Oracle은 여러 Oracle Database 릴리스를 지원합니다.

**참고**  
릴리스 업그레이드에 대한 자세한 내용은 [RDS for Oracle DB 엔진 업그레이드](USER_UpgradeDBInstance.Oracle.md) 단원을 참조하세요.

**Topics**
+ [Amazon RDS 기반 Oracle Database 21c](#Oracle.Concepts.FeatureSupport.21c)
+ [Amazon RDS 기반 Oracle Database 19c](#Oracle.Concepts.FeatureSupport.19c)

## Amazon RDS 기반 Oracle Database 21c
<a name="Oracle.Concepts.FeatureSupport.21c"></a>

Amazon RDS는 Oracle Enterprise Edition과 Oracle Standard Edition 2를 포함하는 Oracle Database 21c를 지원합니다. Oracle Database 21c(21.0.0.0)에는 이전 버전에 비해 새로운 기능과 업데이트가 많이 포함되어 있습니다. 주요 변경 사항은 Oracle Database 21c가 멀티테넌트 아키텍처만 지원한다는 것입니다. 즉, 더 이상 기존의 비 CDB로 데이터베이스를 생성할 수 없습니다. CDB와 비 CDB 간의 차이점에 대한 자세한 내용은 [RDS for Oracle CDB 제한 사항](Oracle.Concepts.CDBs.md#Oracle.Concepts.single-tenant-limitations) 단원을 참조하세요.

이 단원에서는 Amazon RDS에서 Oracle Database 21c(21.0.0.0)를 사용하는 데 중요한 기능과 변경 내용을 확인할 수 있습니다. 변경 내용의 전체 목록은 [Oracle Database 21c](https://docs.oracle.com/en/database/oracle/oracle-database/21/index.html) 문서를 참조하세요. 각 Oracle Database 21c 에디션에서 지원하는 전체 기능 목록은 Oracle 설명서의 [Permitted Features, Options, and Management Packs by Oracle Database Offering](https://docs.oracle.com/en/database/oracle/oracle-database/21/dblic/Licensing-Information.html)(Oracle Database 제품 및 서비스에서 허용되는 기능, 옵션 및 관리 팩)을 참조하세요.

### Oracle Database 21c(21.0.0.0)의 Amazon RDS 파라미터 변경
<a name="Oracle.Concepts.FeatureSupport.21c.parameters"></a>

Oracle Database 21c(21.0.0.0)에는 새로운 파라미터와 범위 및 기본값이 새로 변경된 파라미터가 다수 포함되어 있습니다.

**Topics**
+ [새 파라미터](#Oracle.Concepts.FeatureSupport.21c.parameters.new)
+ [호환되는 파라미터에 대한 변경 사항](#Oracle.Concepts.FeatureSupport.21c.parameters.compatible)
+ [제거된 파라미터](#Oracle.Concepts.FeatureSupport.21c.parameters.removed)

#### 새 파라미터
<a name="Oracle.Concepts.FeatureSupport.21c.parameters.new"></a>

다음 표에는 Oracle Database 21c(21.0.0.0)의 새로운 Amazon RDS 파라미터가 나와 있습니다.


****  

|  이름  |  값 범위  | 기본값 |  수정 가능  |  설명  | 
| --- | --- | --- | --- | --- | 
|    [blockchain\$1table\$1max\$1no\$1drop](https://docs.oracle.com/en/database/oracle/oracle-database/21/refrn/BLOCKCHAIN_TABLE_MAX_NO_DROP.html#GUID-26AF15B2-5621-4602-AA6E-D92842E4285C)    |  `NONE \| 0`  |  `NONE`  |  Y  |  블록체인 테이블을 생성할 때 지정 가능한 최대 유휴 시간을 제어할 수 있습니다.  | 
|  [dbnest\$1enable](https://docs.oracle.com/en/database/oracle/oracle-database/21/refrn/DBNEST_ENABLE.html#GUID-2F30C9D3-808E-42CD-ADA6-595FAE518A60)  |  `NONE \| CDB_RESOURCE_PDB_ALL`  |  `NONE`  |  N  |  dbNest를 사용하거나 사용하지 않도록 설정할 수 있습니다. dbNest는 PDB를 위한 운영 체제 리소스 격리 및 관리, 파일 시스템 격리, 보안 컴퓨팅을 제공합니다.  | 
|  [dbnest\$1pdb\$1fs\$1conf](https://docs.oracle.com/en/database/oracle/oracle-database/21/refrn/DBNEST_PDB_FS_CONF.html)  |  `NONE \| pathname`  |  `NONE`  |  N  |  PDB에 대한 dbNest 파일 시스템 구성 파일을 지정합니다.  | 
|  [diagnostics\$1control](https://docs.oracle.com/en/database/oracle/oracle-database/21/refrn/DIAGNOSTICS_CONTROL.html)  |  `ERROR \| WARNING \| IGNORE`  | IGNORE |  Y  |  잠재적으로 안전하지 않은 데이터베이스 진단 작업을 수행하는 사용자를 제어하고 모니터링할 수 있습니다.  | 
|  [drcp\$1dedicated\$1opt](https://docs.oracle.com/en/database/oracle/oracle-database/21/refrn/DRCP_DEDICATED_OPT.html)  |  `YES \| NO`  | YES |  Y  |  DRCP(Database Resident Connection Pooling)에서 전용 최적화를 사용하거나 사용하지 않도록 설정합니다.  | 
|  [enable\$1per\$1pdb\$1drcp](https://docs.oracle.com/en/database/oracle/oracle-database/21/refrn/ENABLE_PER_PDB_DRCP.html)  |  `true \| false`  |  `true`  |  N  |  DRCP(Database Resident Connection Pooling)가 전체 CDB에 대해 하나의 연결 풀을 구성할지 아니면 각 PDB에 대해 하나의 격리된 연결 풀을 구성할지 제어합니다.  | 
|  [inmemory\$1deep\$1vectorization](https://docs.oracle.com/en/database/oracle/oracle-database/21/refrn/INMEMORY_DEEP_VECTORIZATION.html#GUID-59E87FDC-1DB4-4ACD-A807-D0C1AE44210D)  |  `true \| false`  |  `true`  |  Y  |  심층 벡터화 프레임워크를 사용하거나 사용하지 않도록 설정합니다.  | 
|  [mandatory\$1user\$1profile](https://docs.oracle.com/en/database/oracle/oracle-database/21/refrn/MANDATORY_USER_PROFILE.html)  |  *profile\$1name*  |  해당 사항 없음  |  N  |  CDB 또는 PDB에 대한 필수 사용자 프로파일을 지정합니다.  | 
|  [optimizer\$1capture\$1sql\$1quarantine](https://docs.oracle.com/en/database/oracle/oracle-database/21/refrn/OPTIMIZER_CAPTURE_SQL_QUARANTINE.html)  |  `true \| false`  |  `false`  |  Y  |  심층 벡터화 프레임워크를 사용하거나 사용하지 않도록 설정합니다.  | 
|  [optimizer\$1use\$1sql\$1quarantine](https://docs.oracle.com/en/database/oracle/oracle-database/21/refrn/OPTIMIZER_CAPTURE_SQL_QUARANTINE.html#GUID-9DBBDBD3-2AA3-4627-9D3A-5330F447BEBB)  |  `true \| false`  |  `false`  |  Y  |  SQL Quarantine 구성의 자동 생성을 사용하거나 사용하지 않도록 설정합니다.  | 
|  [result\$1cache\$1execution\$1threshold](https://docs.oracle.com/en/database/oracle/oracle-database/21/refrn/RESULT_CACHE_EXECUTION_THRESHOLD.html)  |  `0`\$1`68719476736`  |  `2`  |  Y  |  결과가 결과 캐시에 저장되기 전에 PL/SQL 함수를 실행할 수 있는 최대 횟수를 지정합니다.  | 
|  [result\$1cache\$1max\$1temp\$1result](https://docs.oracle.com/en/database/oracle/oracle-database/21/refrn/RESULT_CACHE_MAX_TEMP_RESULT.html)  |  `0`\$1`100`  |  `5`  |  Y  |  캐시된 단일 쿼리 결과가 사용할 수 있는 `RESULT_CACHE_MAX_TEMP_SIZE`의 백분율을 지정합니다.  | 
|  [result\$1cache\$1max\$1temp\$1size](https://docs.oracle.com/en/database/oracle/oracle-database/21/refrn/RESULT_CACHE_MAX_TEMP_SIZE.html)  |  `0`\$1`2199023255552`  |  `RESULT_CACHE_SIZE * 10`  |  Y  |  결과 캐시가 사용할 수 있는 임시 테이블스페이스의 최대 크기(바이트)를 지정합니다.  | 
|  [sga\$1min\$1size](https://docs.oracle.com/en/database/oracle/oracle-database/21/refrn/SGA_MIN_SIZE.html)  |  `0`\$1`2199023255552`(최대값은 `sga_target`의 50%)  |  `0`  |  Y  |  플러그형 데이터베이스(PDB)의 SGA 사용량에 가능한 최소값을 나타냅니다.  | 
|  [tablespace\$1encryption\$1default\$1algorithm](https://docs.oracle.com/en/database/oracle/oracle-database/21/refrn/TABLESPACE_ENCRYPTION_DEFAULT_ALGORITHM.html)  |  `GOST256 \| SEED128 \| ARIA256 \| ARIA192 \| ARIA128 \| 3DES168 \| AES256 \| AES192 \| AES128`  | AES128 |  Y  |  데이터베이스가 테이블스페이스를 암호화할 때 사용하는 기본 알고리즘을 지정합니다.  | 

#### 호환되는 파라미터에 대한 변경 사항
<a name="Oracle.Concepts.FeatureSupport.21c.parameters.compatible"></a>

`compatible` 파라미터에 Amazon RDS 기반 Oracle Database 21c(21.0.0.0)의 새로운 최대값이 있습니다. 다음 표에는 새 기본값이 나와 있습니다.


****  

|  파라미터 이름  |  Oracle Database 21c(21.0.0.0) 최대값  | 
| --- | --- | 
|  [compatible](https://docs.oracle.com/en/database/oracle/oracle-database/19/refrn/COMPATIBLE.html#GUID-6C57EE11-BD06-4BB8-A0F7-D6CDDD086FA9)  |  21.0.0  | 

#### 제거된 파라미터
<a name="Oracle.Concepts.FeatureSupport.21c.parameters.removed"></a>

Oracle Database 21c(21.0.0.0)에서는 다음 파라미터가 제거되었습니다.
+ `remote_os_authent`
+ `sec_case_sensitive_logon`
+ `unified_audit_sga_queue_size`

## Amazon RDS 기반 Oracle Database 19c
<a name="Oracle.Concepts.FeatureSupport.19c"></a>

Amazon RDS는 Oracle Enterprise Edition과 Oracle Standard Edition Two를 포함하는 Oracle Database 19c를 지원합니다.

Oracle Database 19c(19.0.0.0)에는 이전 버전에 비해 새로운 기능과 업데이트가 많이 포함되어 있습니다. 이 단원에서는 Amazon RDS에서 Oracle Database 19c(19.0.0.0)를 사용하는 데 중요한 기능과 변경 내용을 확인할 수 있습니다. 변경 내용의 전체 목록은 [Oracle Database 19c](https://docs.oracle.com/en/database/oracle/oracle-database/19/index.html) 문서를 참조하세요. 각 Oracle Database 19c 에디션에서 지원하는 전체 기능 목록은 Oracle 설명서의 [Permitted Features, Options, and Management Packs by Oracle Database Offering](https://docs.oracle.com/en/database/oracle/oracle-database/19/dblic/Licensing-Information.html#GUID-0F9EB85D-4610-4EDF-89C2-4916A0E7AC87)을 참조하세요.

### Oracle Database 19c(19.0.0.0)의 Amazon RDS 파라미터 변경
<a name="Oracle.Concepts.FeatureSupport.19c.Parameters"></a>

Oracle Database 19c(19.0.0.0)에는 새로운 파라미터와 범위 및 기본값이 새로 변경된 파라미터가 다수 포함되어 있습니다.

**Topics**
+ [새 파라미터](#Oracle.Concepts.FeatureSupport.19c.Parameters.new)
+ [호환되는 파라미터에 대한 변경 사항](#Oracle.Concepts.FeatureSupport.19c.Parameters.compatible)
+ [제거된 파라미터](#Oracle.Concepts.FeatureSupport.19c.Parameters.compatible.removed-parameters)

#### 새 파라미터
<a name="Oracle.Concepts.FeatureSupport.19c.Parameters.new"></a>

다음 표에는 Oracle Database 19c(19.0.0.0)의 새로운 Amazon RDS 파라미터가 나와 있습니다.


****  

|  이름  |  값  |  수정 가능  |  설명  | 
| --- | --- | --- | --- | 
|   [ lob\$1signature\$1enable](https://docs.oracle.com/en/database/oracle/oracle-database/19/refrn/lob_signature_enable.html#GUID-62997AB5-1084-4C9A-8258-8CB695C7A1D6)   |  TRUE, FALSE(기본값)  |  Y  |  LOB 로케이터 서명 기능을 활성화하거나 비활성화합니다.  | 
|   [ max\$1datapump\$1parallel\$1per\$1job](https://docs.oracle.com/en/database/oracle/oracle-database/19/refrn/MAX_DATAPUMP_PARALLEL_PER_JOB.html#GUID-33B1F962-B8C3-4DCE-BE68-66FC5D34ECA3)   |  1 \$1 1024 또는 AUTO  |  Y  |  각 Oracle Data Pump 작업에 허용되는 최대 병렬 프로세스 수를 지정합니다.  | 

#### 호환되는 파라미터에 대한 변경 사항
<a name="Oracle.Concepts.FeatureSupport.19c.Parameters.compatible"></a>

`compatible` 파라미터에 Amazon RDS 기반 Oracle Database 19c(19.0.0.0)의 새로운 최대값이 있습니다. 다음 표에는 새 기본값이 나와 있습니다.


****  

|  파라미터 이름  |  Oracle Database 19c(19.0.0.0) 최대값  | 
| --- | --- | 
|  [compatible](https://docs.oracle.com/en/database/oracle/oracle-database/19/refrn/COMPATIBLE.html#GUID-6C57EE11-BD06-4BB8-A0F7-D6CDDD086FA9)  |  19.0.0  | 

#### 제거된 파라미터
<a name="Oracle.Concepts.FeatureSupport.19c.Parameters.compatible.removed-parameters"></a>

Oracle Database 19c(19.0.0.0)에서는 다음 파라미터가 제거되었습니다.
+ `exafusion_enabled`
+ `max_connections`
+ `o7_dictionary_access`

# RDS for Oracle 라이선스 옵션
<a name="Oracle.Concepts.Licensing"></a>

Amazon RDS for Oracle에는 License Included(LI) 및 Bring Your Own License(BYOL)의 두 가지 라이선스 옵션이 있습니다. Amazon RDS에서 Oracle DB 인스턴스를 생성한 후 DB 인스턴스를 수정하여 라이선스 모델을 변경할 수 있습니다. 자세한 내용은 [Amazon RDS DB 인스턴스 수정](Overview.DBInstance.Modifying.md) 섹션을 참조하세요.

**중요**  
DB 인스턴스 클래스와 Oracle Database 에디션에 적합한 Oracle 데이터베이스 라이선스(소프트웨어 업데이트 라이선스 및 지원 포함)가 있어야 합니다. 또한 별도로 라이선스가 부여된 Oracle Database 기능에 대한 라이선스가 있는지 확인하세요.

**Topics**
+ [SE2용 라이선스 포함 모델](#Oracle.Concepts.Licensing.LicenseIncluded)
+ [EE 및 SE2용 기존 보유 라이선스 사용(BYOL)](#Oracle.Concepts.Licensing.BYOL)
+ [Oracle 다중 AZ 배포 라이선스](#Oracle.Concepts.Licensing.MAZ)

## SE2용 라이선스 포함 모델
<a name="Oracle.Concepts.Licensing.LicenseIncluded"></a>

License Included 모델에서는 Oracle 데이터베이스 라이선스를 별도로 구매할 필요가 없습니다. 즉 AWS에 Oracle 데이터베이스 소프트웨어 라이선스가 포함됩니다. 라이선스 포함 모델은 Amazon RDS for Oracle Database Standard Edition Two(SE2)에 대해 지원됩니다.

이 모델에서는 사례 지원이 포함된 AWS Support 계정이 있는 경우, Amazon RDS 및 Oracle 데이터베이스 서비스 요청은 모두 지원에 문의합니다. RDS for Oracle 사용 시 LI 옵션은 [AWS서비스 약관](https://aws.amazon.com/service-terms/)의 섹션 10.3.1의 적용을 받습니다.

## EE 및 SE2용 기존 보유 라이선스 사용(BYOL)
<a name="Oracle.Concepts.Licensing.BYOL"></a>

BYOL 모델에서는 기존의 Oracle 데이터베이스 라이선스를 사용하여 Amazon RDS에서 데이터베이스를 배포할 수 있습니다. Amazon RDS는 Oracle Database Enterprise Edition(EE) 및 Oracle Database Standard Edition 2(SE2)에 대해서만 BYOL 모델을 지원합니다.

실행할 DB 인스턴스 클래스와 Oracle Database 에디션에 적합한 Oracle 데이터베이스 라이선스(소프트웨어 업데이트 라이선스 및 지원 포함)가 있어야 합니다. 또한 클라우드 컴퓨팅 환경에 대한 Oracle의 Oracle Database 소프트웨어 라이선스 부여 정책을 따라야 합니다. Oracle의 Amazon EC2 라이선스 정책에 대한 자세한 내용은 [Licensing Oracle Software in the Cloud Computing Environment](http://www.oracle.com/us/corporate/pricing/cloud-licensing-070579.pdf)를 참조하십시오.

이 모델에서는 활성 Oracle 지원 계정을 계속 사용할 수 있습니다. Oracle Database 서비스 요청은 Oracle에 직접 문의하십시오. AWS Support 계정에 사례 지원이 있는 경우 Amazon RDS 관련 문제는 지원에 문의합니다.

### AWS License Manager와 통합
<a name="oracle-lms-integration"></a>

BYOL 모델에서 Oracle 라이선스 사용량을 보다 쉽게 모니터링하려면 [AWS License Manager](https://aws.amazon.com/license-manager/)는 Amazon RDS for Oracle과 통합합니다. License Manager는 Oracle 엔진 버전에 대한 RDS 추적 및 vCPU(가상 코어)에 기반한 라이선스 팩을 지원합니다. 또한 License Manager를 AWS Organizations와 함께 사용하여 모든 조직 계정을 중앙에서 관리할 수도 있습니다.

다음 표에는 RDS for Oracle용 제품 정보 필터가 나와 있습니다.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/Oracle.Concepts.Licensing.html)

Oracle DB 인스턴스의 라이선스 사용량을 추적하려면 AWS License Manager를 사용하여 자체 관리형 라이선스를 생성합니다. 이 경우 제품 정보 필터와 일치하는 RDS for Oracle 리소스가 자체 관리형 라이선스와 자동으로 연결됩니다. Oracle DB 인스턴스 검색에는 최대 24시간이 소요될 수 있습니다. AWS Resource Access Manager를 사용하여 여러 계정의 라이선스를 추적할 수도 있습니다.

#### 콘솔
<a name="oracle-lms-integration.console"></a>

**RDS for Oracle DB 인스턴스의 라이선스 사용량을 추적하기 위해 AWS License Manager에서 자체 관리형 라이선스를 생성하려면**

1. [https://console.aws.amazon.com/license-manager/](https://console.aws.amazon.com/license-manager/)로 이동합니다.

1. **자체 관리 라이선스 생성**을 선택합니다.

   자세한 내용은 **AWS License Manager 사용 설명서의 [Create a self-managed license](https://docs.aws.amazon.com/license-manager/latest/userguide/create-license-configuration.html)를 참조하세요.

   **제품 정보** 패널에서 **RDS Product Information Filter(RDS 제품 정보 필터)**에 대한 규칙을 추가합니다.

   자세한 내용은*AWS License Manager API 참조*의 [ProductInformation](https://docs.aws.amazon.com/license-manager/latest/APIReference/API_ProductInformation.html)을 참조하십시오.

1. (교차 계정 추적만 해당) AWS Resource Access Manager를 사용하여 AWS 계정 또는 AWS Organizations를 통해 자체 관리형 라이선스를 공유합니다. 자세한 내용은 [AWS 리소스 공유](https://docs.aws.amazon.com/ram/latest/userguide/getting-started-sharing.html)를 참조하세요.

#### AWS CLI
<a name="oracle-lms-integration.cli"></a>

AWS CLI를 사용하여 자체 관리형 라이선스를 생성하려면 [create-license-configuration](https://docs.aws.amazon.com/cli/latest/reference/license-manager/create-license-configuration.html) 명령을 직접 호출합니다. `--cli-input-json` 또는 `--cli-input-yaml` 파라미터를 사용하여 파라미터를 명령에 전달합니다.

**Example**  
다음 예에서는 Oracle Enterprise Edition에 대한 자체 관리형 라이선스를 생성합니다.  

```
aws license-manager create-license-configuration --cli-input-json file://rds-oracle-ee.json
```
다음은 예제에서 사용되는 샘플 `rds-oracle-ee.json` 파일입니다.  

```
{
    "Name": "rds-oracle-ee",
    "Description": "RDS Oracle Enterprise Edition",
    "LicenseCountingType": "vCPU",
    "LicenseCountHardLimit": false,
    "ProductInformationList": [
        {
            "ResourceType": "RDS",
            "ProductInformationFilterList": [
                {
                    "ProductInformationFilterName": "Engine Edition",
                    "ProductInformationFilterValue": ["oracle-ee"],
                    "ProductInformationFilterComparator": "EQUALS"
                }
            ]
        }
    ]
}
```

제품 정보에 대한 자세한 내용은 *AWS License Manager 사용 설명서*의 [리소스 인벤토리 자동 검색](https://docs.aws.amazon.com/license-manager/latest/userguide/automated-discovery.html)을 참조하십시오.

`--cli-input` 파라미터에 대한 자세한 내용은 *AWS CLI 사용 설명서*의 JSON 또는 YAML 입력 파일에서 [AWS CLI 스켈레톤 및 입력 파라미터 생성](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-skeleton.html)을 참조하세요.

### Oracle Database 버전 간 마이그레이션
<a name="Oracle.Concepts.EditionsMigrating"></a>

실행하려는 DB 인스턴스의 버전과 클래스에 적합한 미사용 BYOL Oracle Database 라이선스가 있다고 가정하면, Standard Edition 2(SE2)에서 Enterprise Edition(EE)으로 마이그레이션할 수 있습니다. EE에서 다른 버전으로 마이그레이션할 수는 없습니다.

**Oracle Database 버전을 변경하고 데이터를 유지하려면**

1. DB 인스턴스의 스냅샷을 생성합니다.

   자세한 내용은 [Amazon RDS의 단일 AZ DB 인스턴스에 대한 DB 스냅샷 생성](USER_CreateSnapshot.md) 섹션을 참조하세요.

1. 스냅샷을 새 DB 인스턴스로 복원하고 사용하려는 Oracle 데이터베이스 에디션을 선택합니다.

   자세한 내용은 [DB 인스턴스 복원](USER_RestoreFromSnapshot.md) 섹션을 참조하세요.

1. (선택 사항) 이전 DB 인스턴스를 계속 실행하고 적절한 Oracle 데이터베이스 라이선스를 갖고 싶지 않으면 이전 DB 인스턴스를 삭제하십시오.

   자세한 내용은 [DB 인스턴스 삭제](USER_DeleteInstance.md) 섹션을 참조하세요.

## Oracle 다중 AZ 배포 라이선스
<a name="Oracle.Concepts.Licensing.MAZ"></a>

Amazon RDS는 고가용성 장애 조치 솔루션으로서 Oracle용 다중 AZ 배포를 지원합니다. 프로덕션 워크로드에는 다중 AZ를 권장합니다. 자세한 내용은 [Amazon RDS에 대한 다중 AZ 배포 구성 및 관리](Concepts.MultiAZ.md) 섹션을 참조하세요.

기본 보유 라이선스 사용 모델을 사용하는 경우, 다중 AZ 배포에 기본 DB 인스턴스와 보조 DB 인스턴스 모두에 대한 라이선스가 있어야 합니다.

# RDS for Oracle 사용자 및 권한
<a name="Oracle.Concepts.Privileges"></a>

Amazon RDS for Oracle DB 인스턴스를 생성할 때 기본 마스터 사용자는 DB 인스턴스에 대한 최대 사용자 권한의 대부분을 갖게 됩니다. 마스터 사용자 계정을 사용하여 데이터베이스에서 추가 사용자 계정 생성과 같은 관리 작업을 수행합니다. RDS는 관리형 서비스이므로 `SYS` 및 `SYSTEM`으로 로그인할 수 없습니다. 따라서 `SYSDBA` 권한을 보유하지 않습니다.

**Topics**
+ [Oracle DBA 권한에 대한 제한 사항](#Oracle.Concepts.dba-limitations)
+ [SYS 객체에 대한 권한을 관리하는 방법](#Oracle.Concepts.Privileges.SYS-objects)

## Oracle DBA 권한에 대한 제한 사항
<a name="Oracle.Concepts.dba-limitations"></a>

데이터베이스에서 역할이란 사용자에 대해 부여하거나 취소할 수 있는 권한 모음입니다. Oracle 데이터베이스는 역할을 사용하여 보안을 제공합니다. 자세한 내용은 Oracle Database 설명서에서 [권한 및 역할 권한 부여 구성](https://docs.oracle.com/en/database/oracle/oracle-database/19/dbseg/configuring-privilege-and-role-authorization.html#GUID-89CE989D-C97F-4CFD-941F-18203090A1AC)을 참조하세요.

일반적으로 사전 정의된 역할 `DBA`는 Oracle 데이터베이스에 대한 모든 관리 권한을 허용합니다. DB 인스턴스를 생성하면 마스터 사용자 계정에 DBA 권한이 부여됩니다(일부 제한 사항 포함). 관리형 경험을 제공하기 위해 RDS for Oracle 데이터베이스는 `DBA` 역할에 다음 권한을 제공하지 않습니다.
+ `ALTER DATABASE`
+ `ALTER SYSTEM`
+ `CREATE ANY DIRECTORY`
+ `DROP ANY DIRECTORY`
+ `GRANT ANY PRIVILEGE`
+ `GRANT ANY ROLE`

RDS for Oracle 시스템 권한 및 역할에 대한 자세한 내용은 [마스터 사용자 계정 권한](UsingWithRDS.MasterAccounts.md) 섹션을 참조하세요.

## SYS 객체에 대한 권한을 관리하는 방법
<a name="Oracle.Concepts.Privileges.SYS-objects"></a>

`rdsadmin.rdsadmin_util` 패키지를 사용하여 `SYS` 객체에 대한 권한을 관리할 수 있습니다. 예를 들어, 데이터베이스 사용자 `myuser`를 생성하면 `rdsadmin.rdsadmin_util.grant_sys_object` 프로시저를 사용하여 `myuser`에게 `V_$SQLAREA`에 대한 `SELECT` 권한을 부여할 수 있습니다. 자세한 정보는 다음 주제를 참조하세요.
+ [SYS 객체에 대한 SELECT 또는 EXECUTE 권한 부여](Appendix.Oracle.CommonDBATasks.TransferPrivileges.md)
+ [SYS 객체에 대한 SELECT 또는 EXECUTE 권한 취소](Appendix.Oracle.CommonDBATasks.RevokePrivileges.md)
+ [마스터가 아닌 사용자에게 권한 부여](Appendix.Oracle.CommonDBATasks.PermissionsNonMasters.md)

# RDS for Oracle DB 인스턴스 클래스
<a name="Oracle.Concepts.InstanceClasses"></a>

RDS for Oracle DB 인스턴스의 계산 및 메모리 용량은 인스턴스 클래스에 따라 결정됩니다. 필요한 DB 인스턴스 클래스는 DB 인스턴스의 처리력 및 메모리 요구 사항에 따라 다릅니다.



## 지원되는 RDS for Oracle DB 인스턴스 클래스
<a name="Oracle.Concepts.InstanceClasses.Supported"></a>

지원되는 RDS for Oracle 인스턴스 클래스는 RDS DB 인스턴스 클래스의 하위 집합입니다. RDS 인스턴스 클래스의 전체 목록은 [DB 인스턴스 클래스](Concepts.DBInstanceClass.md) 섹션을 참조하세요.



### RDS for Oracle 사전 구성된 DB 인스턴스 클래스
<a name="Oracle.Concepts.InstanceClasses.Supported.tpc"></a>

RDS for Oracle은 vCPU당 추가 메모리, 스토리지 및 I/O가 필요한 워크로드에 사전 구성된 인스턴스 클래스도 제공합니다. 이러한 인스턴스 클래스는 다음 명명 규칙을 사용합니다.

```
db.r5b.instance_size.tpcthreads_per_core.memratio
db.r5.instance_size.tpcthreads_per_core.memratio
```

다음은 추가 메모리용으로 사전 구성된 인스턴스 클래스의 예입니다.

```
db.r5b.4xlarge.tpc2.mem2x
```

이전 인스턴스 클래스 이름의 구성 요소는 다음과 같습니다.
+ `db.r5b.4xlarge` - 인스턴스 클래스의 이름입니다.
+ `tpc2` - 코어당 스레드 수입니다. 값 2는 다중 스레딩이 켜져 있음을 의미합니다. 값 1은 다중 스레딩이 꺼져 있음을 의미합니다.
+ `mem2x` - 인스턴스 클래스의 표준 메모리에 대한 추가 메모리의 비율입니다. 이 예에서 최적화는 표준 db.r5.4xlarge DB 인스턴스보다 두 배 많은 메모리를 제공합니다.

**참고**  
미리 구성된 RDS for Oracle DB 인스턴스 클래스의 정규화 인자는 [ DB 인스턴스 클래스의 하드웨어 사양](Concepts.DBInstanceClass.Summary.md) 섹션을 참조하세요.

### RDS for Oracle에서 지원되는 에디션, 인스턴스 클래스 및 라이선스 조합
<a name="Oracle.Concepts.InstanceClasses.Supported.combo"></a>

RDS 콘솔을 사용하는 경우 **데이터베이스 생성**을 선택하고 다른 옵션을 지정하여 특정 에디션, 인스턴스 클래스 및 라이선스 조합이 지원되는지 여부를 확인할 수 있습니다. AWS CLI에서 다음 명령을 실행할 수 있습니다.

```
aws rds describe-orderable-db-instance-options --engine engine-type --license-model license-type
```

다음 테이블에는 RDS for Oracle에 지원되는 모든 에디션, 인스턴스 클래스 및 라이선스 유형이 나와 있습니다. 각 유형의 메모리 특성에 대한 자세한 내용은 [RDS for Oracle 인스턴스 유형](https://aws.amazon.com//rds/oracle/instance-types)을 참조하세요. 요금에 대한 자세한 내용은 [Amazon RDS for Oracle 요금 모델](https://aws.amazon.com/rds/oracle/pricing/#Pricing_models)을 참조하세요.


****  
<a name="rds-oracle-instance-class-reference"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/Oracle.Concepts.InstanceClasses.html)

## RDS for Oracle DB 인스턴스 클래스 지원 중단
<a name="Oracle.Concepts.InstanceClasses.Deprecated"></a>

다음은 RDS for Oracle에 대해 지원 중단되는 DB 인스턴스 클래스입니다.
+ db.m1, db.m2, db.m3, db.m4
+ db.t1, db.t2
+ db.r1, db.r2, db.r3, db.r4
+ db.x1, db.x1e

이전 DB 인스턴스 클래스는 성능이 더 좋고 일반적으로 낮은 가격으로 구할 수 있는 DB 인스턴스로 교체되었습니다. 지원 중단되는 DB 인스턴스 클래스를 사용하는 DB 인스턴스를 보유한 경우 다음과 같은 옵션이 있습니다.
+ 지원 중단되지 않은 유사한 DB 인스턴스 클래스를 사용하려면 Amazon RDS가 각 DB 인스턴스를 자동으로 수정하도록 허용합니다. 지원 중단 일정은 [DB 인스턴스 클래스 유형](Concepts.DBInstanceClass.Types.md) 섹션을 참조하세요.
+ DB 인스턴스를 수정하여 DB 인스턴스 클래스를 직접 변경합니다. 자세한 내용은 [Amazon RDS DB 인스턴스 수정](Overview.DBInstance.Modifying.md) 섹션을 참조하세요.

**참고**  
지원 중단된 DB 인스턴스 클래스를 사용한 DB 인스턴스의 DB 스냅샷이 있는 경우 DB 스냅샷을 복원할 때 만료되지 않은 DB 인스턴스 클래스를 선택할 수 있습니다. 자세한 정보는 [DB 인스턴스 복원](USER_RestoreFromSnapshot.md)의 내용을 참조하세요.

# RDS for Oracle 데이터베이스 아키텍처
<a name="oracle-multi-architecture"></a>

Oracle 멀티테넌트 아키텍처(CDB 아키텍처)는 Oracle 데이터베이스가 멀티테넌트 컨테이너 데이터베이스(CDB) 기능을 하도록 합니다. CDB에는 고객이 생성한 플러그형 데이터베이스(PDB)가 포함될 수 있습니다. PDB를 포함할 수 없는 기존 아키텍처를 사용하는 Oracle 데이터베이스는 비 CDB입니다. 멀티테넌트 아키텍처에 대한 자세한 내용은 [https://docs.oracle.com/en/database/oracle/oracle-database/19/multi/introduction-to-the-multitenant-architecture.html#GUID-267F7D12-D33F-4AC9-AA45-E9CD671B6F22](https://docs.oracle.com/en/database/oracle/oracle-database/19/multi/introduction-to-the-multitenant-architecture.html#GUID-267F7D12-D33F-4AC9-AA45-E9CD671B6F22)를 참조하세요.

Oracle Database 19c 이상의 경우 CDB 아키텍처를 사용하는 RDS for Oracle DB 인스턴스를 생성할 수 있습니다. RDS for Oracle에서는 PDB를 테넌트 데이터베이스라고 합니다. 클라이언트 애플리케이션은 CDB 수준이 아닌 테넌트 데이터베이스(PDB) 수준에서 연결합니다. RDS for Oracle은 CDB 아키텍처의 다음 구성을 지원합니다.

**다중 테넌트 구성**  
이 RDS 플랫폼은 RDS for Oracle CDB 인스턴스에 1\$130개의 테넌트 데이터베이스를 포함하도록 허용합니다. 이 데이터베이스는 데이터베이스 에디션 및 필요한 옵션 라이선스에 따라 다릅니다. RDS API를 사용하여 테넌트 데이터베이스를 추가, 수정 및 제거할 수 있습니다. RDS for Oracle의 다중 테넌트 구성은 특별한 유형의 PDB인 애플리케이션 PDB 또는 프록시 PDB를 지원하지 않습니다. 애플리케이션 PDB 및 프록시 PDB에 대한 자세한 내용은 Oracle Database 설명서에 나와 있는 [Types of PDBs](https://docs.oracle.com/en/database/oracle/oracle-database/19/multi/overview-of-the-multitenant-architecture.html#GUID-D0F40745-FC70-4BE0-85D3-3745DE3312AC)를 참조하시기 바랍니다.  
Amazon RDS 구성은 Oracle DB 엔진뿐만 아니라 RDS 플랫폼의 기능이기 때문에 '멀티테넌트'가 아닌 '다중 테넌트'라고 합니다. 마찬가지로 RDS 용어 '테넌트'는 Oracle PDB뿐만 아니라 RDS 구성의 모든 테넌트를 나타냅니다. RDS 설명서에서 하이픈이 포함되지 않은 용어 'Oracle 멀티테넌트'는 온프레미스 및 RDS 배포 모두와 호환되는 Oracle 데이터베이스 CDB 아키텍처만을 의미합니다.

**단일 테넌트 구성**  
이 RDS 플랫폼 기능은 RDS for Oracle CDB 인스턴스의 테넌트 데이터베이스(PDB)를 1개로 제한합니다. RDS API를 사용하여 PDB를 더 추가할 수는 없습니다. 단일 테넌트 구성은 비CDB 아키텍처와 동일한 RDS API를 사용합니다. 따라서 단일 테넌트 구성에서 CDB를 사용하는 경험은 비CDB를 사용한 작업과 거의 동일합니다.  
단일 테넌트 구성을 사용하는 CDB를 다중 테넌트 구성으로 변환할 수 있으므로, PDB를 CDB에 추가할 수 있습니다. 이 아키텍처 변경은 영구적이며 되돌릴 수 없습니다. 자세한 내용은 [단일 테넌트 구성을 다중 테넌트로 변환](oracle-single-tenant-converting.md) 단원을 참조하십시오.

**참고**  
CDB 자체에 액세스할 수 없습니다.

Oracle Database 21c 이상에서는 모든 데이터베이스가 CDB입니다. 반면에 Oracle Database 19c DB 인스턴스는 CDB 또는 비CDB로 생성할 수 있습니다. 비CDB를 CDB로 업그레이드할 수는 없지만 Oracle Database 19c 비CDB를 CDB로 변환한 후 업그레이드할 수는 있습니다. CDB를 비CDB로 변환할 수 없습니다.

자세한 정보는 다음 자료를 참조하세요.
+ [RDS for Oracle에서 CDB 작업](oracle-multitenant.md)
+ [RDS for Oracle CDB 제한 사항](Oracle.Concepts.CDBs.md#Oracle.Concepts.single-tenant-limitations)
+ [Amazon RDS DB 인스턴스 생성](USER_CreateDBInstance.md)

# RDS for Oracle 초기화 파라미터
<a name="Oracle.Concepts.FeatureSupport.Parameters"></a>

Amazon RDS에서는 파라미터 그룹을 사용하여 DB 파라미터를 관리합니다. 이 그룹을 사용하여 초기화 파라미터를 사용자 지정할 수 있습니다. 예를 들어 `sort_area_size`를 사용하여 정렬 영역 크기를 구성할 수 있습니다. 특정 DB 파라미터 그룹과 연결된 모든 RDS for Oracle DB 인스턴스는 동일한 파라미터 설정을 사용합니다. 자세한 내용은 [Amazon RDS의 파라미터 그룹](USER_WorkingWithParamGroups.md) 섹션을 참조하세요.

## RDS for Oracle에서 지원되는 초기화 파라미터
<a name="Oracle.Concepts.FeatureSupport.Parameters.individual"></a>

DB 인스턴스에 지원되는 파라미터는 Oracle Database 에디션 및 버전에 따라 다릅니다. 특정 Oracle Database 에디션 및 버전에 지원되는 초기화 파라미터를 보려면 AWS CLI 명령 [https://docs.aws.amazon.com/cli/latest/reference/rds/describe-engine-default-parameters.html](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-engine-default-parameters.html)를 실행합니다. 예를 들어 Oracle Database 19c의 Enterprise Edition에 지원되는 초기화 파라미터를 보려면 다음 명령을 실행합니다(샘플 출력 포함).

```
aws rds describe-engine-default-parameters \
    --db-parameter-group-family oracle-ee-19 \
    --output json | jq -r '.EngineDefaults.Parameters[].ParameterName'

_add_col_optim_enabled
_adg_parselock_timeout
_allow_insert_with_update_check
_allow_level_without_connect_by
_always_semi_join
_autotask_max_window
_awr_disabled_flush_tables
_awr_mmon_cpuusage
_awr_mmon_deep_purge_all_expired
_b_tree_bitmap_plans
_bct_bitmaps_per_file
_bloom_filter_enabled
_buffered_publisher_flow_control_threshold
_bug29394014_allow_triggers_on_vpd_table
_cleanup_rollback_entries
_client_enable_auto_unregister
_clusterwide_global_transactions
_complex_view_merging
_connect_by_use_union_all
_cost_equality_semi_join
_cursor_features_enabled
_cursor_obsolete_threshold
_datafile_write_errors_crash_instance
_db_block_buffers
...
```

단일 초기화 파라미터를 설명하려면 다음 명령을 사용하고 `sga_max_size`를 해당 파라미터 이름으로 바꿉니다(샘플 출력 포함).

```
aws rds describe-engine-default-parameters \
    --db-parameter-group-family oracle-ee-19 \
    --query 'EngineDefaults.Parameters[?ParameterName==`sga_max_size`]' \
    --output json

[
    {
        "ParameterName": "sga_max_size",
        "Description": "max total SGA size",
        "Source": "engine-default",
        "ApplyType": "static",
        "DataType": "integer",
        "AllowedValues": "0-2199023255552",
        "IsModifiable": true
    }
]
```

Oracle 데이터베이스 초기화 파라미터에 대한 일반적인 설명서를 찾으려면 Oracle Database 설명서의 [Initialization Parameters](https://docs.oracle.com/en/database/oracle/oracle-database/19/refrn/initialization-parameters.html#GUID-6F1C3203-0AA0-4AF1-921C-A027DD7CB6A9)를 참조하세요. RDS for Oracle에서는 파라미터 `ARCHIVE_LAG_TARGET`에 특별한 고려 사항이 있다는 점에 유의하세요. 이 파라미터는 지정된 시간이 경과한 후 온라인 다시 실행 로그를 강제로 전환합니다. RDS for Oracle에서는 Recovery Point Objective(RPO)가 5분이기 때문에 `ARCHIVE_LAG_TARGET`이 `300`으로 설정됩니다. 이 목표를 달성하기 위해 RDS for Oracle은 5분마다 온라인 다시 실행 로그를 전환하여 Amazon S3 버킷에 저장합니다.

온라인 다시 실행 로그 전환 빈도로 인해 RDS for Oracle 데이터베이스의 성능이 저하되는 경우, 더 높은 IOPS와 처리량을 사용하도록 DB 인스턴스와 스토리지의 규모를 조정할 수 있습니다. 또는 RDS Custom for Oracle을 사용하거나 Amazon EC2에 Oracle 데이터베이스를 배포하는 경우 `ARCHIVE_LAG_TARGET` 초기화 파라미터의 설정을 조정할 수 있습니다.

## RDS for Oracle의 유효한 파라미터 값
<a name="oracle-valid-parameter-values"></a>

RDS for Oracle에서는 파라미터 값에 다음 문자만 유효합니다.
+ 문자(`A-Z` 및 `a-z`)
+ 숫자(`0-9`)
+ 공백(공백, 탭 및 줄 바꿈)
+ 다음 특수 문자: `_ / . : + = ( ) ' * , % $ -`(하이픈)

# RDS for Oracle 문자 집합
<a name="Appendix.OracleCharacterSets"></a>

RDS for Oracle은 DB 문자 집합과 국가별 문자 집합의 두 가지 유형의 문자 집합을 지원합니다.

## DB 문자 집합
<a name="Appendix.OracleCharacterSets.db-character-set"></a>

Oracle 데이터베이스 문자 집합은 `CHAR`, `VARCHAR2` 및 `CLOB` 데이터 유형에 사용됩니다. 데이터베이스는 테이블 이름, 열 이름 및 SQL 문과 같은 메타데이터에도 이 문자 집합을 사용합니다. Oracle 데이터베이스 문자 집합은 일반적으로 DB 문자 집합이라고합니다.

DB 인스턴스를 생성할 때 문자 집합을 설정합니다. 데이터베이스를 생성한 후에는 DB 문자 집합을 변경할 수 없습니다.

### 지원되는 DB 문자 집합
<a name="Appendix.OracleCharacterSets.db-character-set.supported"></a>

다음 표에는 Amazon RDS에서 지원되는 Oracle DB 데이터베이스 문자 집합이 나와 있습니다. AWS CLI [create-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html) 명령의 `--character-set-name` 파라미터 또는 Amazon RDS API [CreateDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html) 작업의 `CharacterSetName` 파라미터와 함께 이 표의 값을 사용할 수 있습니다.

**참고**  
CDB의 문자 집합은 항상 AL32UTF8입니다. PDB에 대해서만 다른 문자 집합을 설정할 수 있습니다.


****  

| 값 | 설명 | 
| --- | --- | 
|  AL32UTF8  |  유니코드 5.0 UTF-8 범용 문자 집합(기본값)  | 
|  AR8ISO8859P6  |  ISO 8859-6 라틴어/아랍어  | 
|  AR8MSWIN1256  |  Microsoft Windows 코드 페이지 1256 8비트 라틴어/아랍어  | 
|  BLT8ISO8859P13  |  ISO 8859-13 발트어  | 
|  BLT8MSWIN1257  |  Microsoft Windows 코드 페이지 1257 8비트 발트어  | 
|  CL8ISO8859P5  |  ISO 88559-5 라틴어/키릴 자모  | 
|  CL8MSWIN1251  |  Microsoft Windows 코드 페이지 1251 8비트 라틴어/키릴 자모  | 
|  EE8ISO8859P2  |  ISO 8859-2 동유럽어  | 
|  EL8ISO8859P7  |  ISO 8859-7 라틴어/그리스어  | 
|  EE8MSWIN1250  |  Microsoft Windows 코드 페이지 1250 8비트 동유럽어  | 
|  EL8MSWIN1253  |  Microsoft Windows 코드 페이지 1253 8비트 라틴어/그리스어  | 
|  IW8ISO8859P8  |  ISO 8859-8 라틴어/히브리어  | 
|  IW8MSWIN1255  |  Microsoft Windows 코드 페이지 1255 8비트 라틴어/히브리어  | 
|  JA16EUC  |  EUC 24비트 일본어  | 
|  JA16EUCTILDE  |  유니코드와의 사이에서 물결표 매핑을 제외하면 JA16EUC와 동일  | 
|  JA16SJIS  |  Shift-JIS 16비트 일본어  | 
|  JA16SJISTILDE  |  유니코드와의 사이에서 물결표 매핑을 제외하면 JA16SJIS와 동일  | 
|  KO16MSWIN949  |  Microsoft Windows 코드 페이지 949 한국어  | 
|  NE8ISO8859P10  |  ISO 8859-10 북유럽어  | 
|  NEE8ISO8859P4  |  ISO 8859-4 북유럽 및 북동 유럽어  | 
|  TH8TISASCII  |  태국 산업 표준 620-2533-ASCII 8비트  | 
|  TR8MSWIN1254  |  Microsoft Windows 코드 페이지 1254 8비트 터키어  | 
|  US7ASCII  |  ASCII 7비트 영어  | 
|  UTF8  |  유니코드 3.0 UTF-8 범용 문자 집합, CESU-8 준수  | 
|  VN8MSWIN1258  |  Microsoft Windows 코드 페이지 1258 8비트 베트남어  | 
|  WE8ISO8859P1  |  서유럽어 8비트 ISO 8859 Part 1  | 
|  WE8ISO8859P15  |  ISO 8859-15 서유럽어  | 
|  WE8ISO8859P9  |  ISO 8859-9 서유럽어 및 터키어  | 
|  WE8MSWIN1252  |  Microsoft Windows 코드 페이지 1252 8비트 서유럽어  | 
|  ZHS16GBK  |  GBK 16비트 중국어 간체  | 
|  ZHT16HKSCS  |  Microsoft Windows 코드 페이지 950, 홍콩 보조 문자 집합 HKSCS-2001 포함. 문자 집합 변환은 유니코드 3.0을 기반으로 합니다.  | 
|  ZHT16MSWIN950  |  Microsoft Windows 코드 페이지 950 중국어 번체  | 
|  ZHT32EUC  |  EUC 32비트 중국어 번체  | 

### NLS\$1LANG 환경 변수
<a name="Appendix.OracleCharacterSets.db-character-set.nls_lang"></a>

로캘은 지정된 언어와 국가에 해당하는 언어 및 문화적 요구 사항을 해결하는 일련의 정보입니다. 클라이언트 환경에서 NLS\$1LANG 환경 변수를 설정하는 것이 가장 간단하게 Oracle에 대한 로캘 동작을 지정하는 방법입니다. 이 변수는 클라이언트 애플리케이션과 데이터베이스 서버에서 사용되는 언어와 지역을 설정합니다. 또한, 이 파라미터는 클라이언트 애플리케이션에서 입력되거나 표시되는 데이터에 대한 문자 집합에 해당하는 클라이언트의 문자 집합을 표시합니다. NLS\$1LANG 및 문자 집합에 대한 자세한 정보는 Oracle 설명서의 [What is a Character set or Code?](http://www.oracle.com/technetwork/database/database-technologies/globalization/nls-lang-099431.html#_Toc110410570)를 참조하십시오.

### NLS 초기화 파라미터
<a name="Appendix.OracleCharacterSets.db-character-set.nls_parameters"></a>

Amazon RDS의 Oracle DB 인스턴스에 대한 인스턴스 수준에서 다음 National Language Support(NLS) 초기화 파라미터를 설정할 수도 있습니다.
+ NLS\$1COMP
+ NLS\$1DATE\$1FORMAT
+ NLS\$1LENGTH\$1SEMANTICS
+ NLS\$1NCHAR\$1CONV\$1EXCP
+ NLS\$1SORT
+ NLS\$1TIME\$1FORMAT
+ NLS\$1TIME\$1TZ\$1FORMAT
+ NLS\$1TIMESTAMP\$1FORMAT
+ NLS\$1TIMESTAMP\$1TZ\$1FORMAT

인스턴스 파라미터 수정에 대한 자세한 정보는 [Amazon RDS의 파라미터 그룹](USER_WorkingWithParamGroups.md)을 참조하십시오.

SQL 클라이언트에서 다른 NLS 초기화 파라미터를 설정할 수 있습니다. 예를 들어 다음 명령문은 Oracle DB 인스턴스에 연결된 SQL 클라이언트에서 NLS\$1LANGUAGE 초기화 파라미터를 GERMAN으로 설정합니다.

```
ALTER SESSION SET NLS_LANGUAGE=GERMAN;
```

SQL 클라이언트를 사용하여 Oracle DB 인스턴스에 연결하는 방법에 대한 자세한 정보는 [Oracle DB 인스턴스에 연결](USER_ConnectToOracleInstance.md)을 참조하십시오.

## 국가별 문자 집합
<a name="Appendix.OracleCharacterSets.nchar-character-set"></a>

국가별 문자 집합은 `NCHAR`, `NVARCHAR2` 및 `NCLOB` 데이터 유형에 사용됩니다. 국가별 문자 집합은 일반적으로 NCHAR 문자 집합이라고 합니다. DB 문자 집합과 달리 NCHAR 문자 집합은 데이터베이스 메타데이터에 영향을 주지 않습니다.

NCHAR 문자 집합은 다음 문자 집합을 지원합니다.
+ AL16UTF16(기본값)
+ UTF8

[create-db-instance](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/rds/create-db-instance.html) 명령의 `--nchar-character-set-name` 파라미터에 두 값 중 하나를 지정할 수 있습니다(AWS CLI 버전 2만 해당). Amazon RDS API를 사용하는 경우 [CreateDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html) 작업의 `NcharCharacterSetName` 파라미터를 지정합니다. 데이터베이스를 생성한 후에는 국가별 문자 집합을 변경할 수 없습니다.

Oracle 데이터베이스의 유니코드에 대한 자세한 내용은 Oracle 설명서의 [Supporting Multilingual Databases with Unicode](https://docs.oracle.com/en/database/oracle/oracle-database/19/nlspg/supporting-multilingual-databases-with-unicode.html)를 참조하세요.

# RDS for Oracle 제한 사항
<a name="Oracle.Concepts.limitations"></a>

다음 섹션에서는 RDS for Oracle을 사용할 때 발생하는 중요한 제한 사항을 확인할 수 있습니다. CDB와 관련된 제한 사항은 [RDS for Oracle CDB 제한 사항](Oracle.Concepts.CDBs.md#Oracle.Concepts.single-tenant-limitations) 섹션을 참조하세요.

**참고**  
단, 이 목록이 전부는 아닙니다.

**Topics**
+ [Amazon RDS의 Oracle 파일 크기 제한](#Oracle.Concepts.file-size-limits)
+ [RDS for Oracle의 블록 크기 한도](#Oracle.Concepts.block-size-limits)
+ [Oracle에서 제공한 스키마에 대한 공개 동의어](#Oracle.Concepts.PublicSynonyms)
+ [RDS for Oracle에서 지원되지 않는 기능에 대한 스키마](#Oracle.Concepts.unsupported-features)
+ [RDS for Oracle의 DBA 권한에 대한 제한 사항](#Oracle.Concepts.dba-limitations)
+ [RDS for Oracle의 TLS 1.0 및 1.1 Transport Layer Security 사용 중단](#Oracle.Concepts.tls)

## Amazon RDS의 Oracle 파일 크기 제한
<a name="Oracle.Concepts.file-size-limits"></a>

RDS for Oracle DB 인스턴스에서 단일 파일의 최대 크기는 16TiB(테라바이트)입니다. 이 제한은 인스턴스에서 사용하는 ext4 파일 시스템에 의해 적용됩니다. 따라서 Oracle 빅파일 데이터 파일은 16TiB로 제한됩니다. 제한을 초과하는 값으로 빅파일 테이블스페이스의 데이터 파일 크기를 조정하려고 하면 다음과 같은 오류가 발생합니다.

```
ORA-01237: cannot extend datafile 6
ORA-01110: data file 6: '/rdsdbdata/db/mydir/datafile/myfile.dbf'
ORA-27059: could not reduce file size
Linux-x86_64 Error: 27: File too large
Additional information: 2
```

## RDS for Oracle의 블록 크기 한도
<a name="Oracle.Concepts.block-size-limits"></a>

RDS for Oracle DB 인스턴스는 기본 데이터베이스 블록 크기(`DB_BLOCK_SIZE`)가 8KB인 상태로 생성됩니다. 기본 데이터베이스 블록 크기는 데이터베이스 생성 시 설정되며 변경할 수 없습니다. `SYSTEM` 및 임시 테이블스페이스는 항상 기본 데이터베이스 블록 크기를 사용합니다. 해당 `DB_nK_CACHE_SIZE` 파라미터(예: `DB_16K_CACHE_SIZE`)를 구성하여 해당 블록 크기에 버퍼 캐시를 할당한 다음 `CREATE TABLESPACE` 문에 `BLOCKSIZE` 절을 지정하여 기본이 아닌 블록 크기로 추가 테이블스페이스를 생성할 수 있습니다.

## Oracle에서 제공한 스키마에 대한 공개 동의어
<a name="Oracle.Concepts.PublicSynonyms"></a>

`SYS`, `SYSTEM` 및 `RDSADMIN`을 포함하여 Oracle에서 제공하는 스키마에 대한 공개 동의어를 생성하거나 수정하지 마십시오. 그러면 핵심 데이터베이스 구성 요소가 무효화되고 DB 인스턴스의 가용성에 영향을 미칠 수 있습니다.

자체 스키마에서 객체를 참조하는 공개 동의어를 생성할 수 있습니다.

## RDS for Oracle에서 지원되지 않는 기능에 대한 스키마
<a name="Oracle.Concepts.unsupported-features"></a>

일반적으로 Amazon RDS에서는 지원되지 않는 기능에 대한 스키마를 생성하지 못하게 막지 않습니다. 그러나 SYS 권한이 필요한 Oracle 기능 및 구성 요소에 대한 스키마를 생성하는 경우, 데이터 딕셔너리가 손상되어 인스턴스 가용성에 영향을 줄 수 있습니다. [Oracle DB 인스턴스에 옵션 추가](Appendix.Oracle.Options.md)에서 사용할 수 있는 지원되는 기능 및 스키마만 사용하세요.

## RDS for Oracle의 DBA 권한에 대한 제한 사항
<a name="Oracle.Concepts.dba-limitations"></a>

데이터베이스에서 역할이란 사용자에 대해 부여하거나 취소할 수 있는 권한 모음입니다. Oracle 데이터베이스는 역할을 사용하여 보안을 제공합니다.

일반적으로 사전 정의된 역할 `DBA`는 Oracle 데이터베이스에 대한 모든 관리 권한을 허용합니다. DB 인스턴스를 생성하면 마스터 사용자 계정에 DBA 권한이 부여됩니다(일부 제한 사항 포함). 관리형 경험을 제공하기 위해 RDS for Oracle 데이터베이스는 `DBA` 역할에 다음 권한을 제공하지 않습니다.
+ `ALTER DATABASE`
+ `ALTER SYSTEM`
+ `CREATE ANY DIRECTORY`
+ `DROP ANY DIRECTORY`
+ `GRANT ANY PRIVILEGE`
+ `GRANT ANY ROLE`

마스터 사용자 계정을 사용하여 데이터베이스에서 추가 사용자 계정 생성과 같은 관리 작업을 수행합니다. `SYS`, `SYSTEM` 및 기타 Oracle에서 제공하는 관리 계정은 사용할 수 없습니다.

## RDS for Oracle의 TLS 1.0 및 1.1 Transport Layer Security 사용 중단
<a name="Oracle.Concepts.tls"></a>

전송 계층 보안 프로토콜 버전 1.0 및 1.1(TLS 1.0 및 TLS 1.1)은 더 이상 사용되지 않습니다. 보안 모범 사례에 따라 Oracle은 TLS 1.0 및 TLS 1.1을 더 이상 사용하지 않습니다. 보안 요구 사항을 충족하기 위해 TLS 1.2를 대신 사용할 것을 적극 권장합니다.

# Oracle DB 인스턴스에 연결
<a name="USER_ConnectToOracleInstance"></a>

Amazon RDS가 Oracle DB 인스턴스를 프로비저닝한 후에는 표준 SQL 클라이언트 애플리케이션을 사용해 DB 인스턴스에 로그인할 수 있습니다. RDS는 관리형 서비스이므로 SYS 또는 SYSTEM으로 로그인할 수 없습니다. 자세한 내용은 [RDS for Oracle 사용자 및 권한](Oracle.Concepts.Privileges.md) 단원을 참조하십시오.

이 주제에서는 Oracle SQL Developer 또는 SQL\$1Plus를 사용하여 RDS for Oracle DB 인스턴스에 연결하는 방법을 알아봅니다. 사용자가 샘플 DB 인스턴스를 만들어 연결하는 절차를 실습하는 예제는 [Oracle DB 인스턴스 생성 및 해당 인스턴스에 연결](CHAP_GettingStarted.CreatingConnecting.Oracle.md) 단원을 참조하십시오.

**Topics**
+ [RDS for Oracle DB 인스턴스의 엔드포인트 찾기](USER_Endpoint.md)
+ [Oracle SQL Developer를 사용하여 DB 인스턴스에 연결](USER_ConnectToOracleInstance.SQLDeveloper.md)
+ [SQL\$1Plus를 사용하여 DB 인스턴스에 연결](USER_ConnectToOracleInstance.SQLPlus.md)
+ [보안 그룹에 대한 고려 사항](USER_ConnectToOracleInstance.Security.md)
+ [프로세스 아키텍처 고려 사항](USER_ConnectToOracleInstance.SharedServer.md)
+ [Oracle DB 인스턴스에 대한 연결 문제 해결](USER_ConnectToOracleInstance.Troubleshooting.md)
+ [sqlnet.ora 파라미터를 사용하여 연결 속성 수정](USER_ModifyInstance.Oracle.sqlnet.md)

# RDS for Oracle DB 인스턴스의 엔드포인트 찾기
<a name="USER_Endpoint"></a>

각 Amazon RDS DB 인스턴스에는 엔드포인트가 있으며, 각 엔드포인트에는 DB 인스턴스의 DNS 이름과 포트 번호가 있습니다. SQL 클라이언트 애플리케이션을 사용해 DB 인스턴스에 연결하려면 DB 인스턴스에 연결할 수 있는 DNS 이름과 포트 번호가 필요합니다.

Amazon RDS 콘솔 또는 AWS CLI를 사용하여 DB 인스턴스의 엔드포인트를 찾을 수 있습니다.

**참고**  
Kerberos 인증을 사용 중이라면 [Kerberos 인증을 사용하여 Oracle에 연결](oracle-kerberos-connecting.md) 단원을 참조하십시오.

## 콘솔
<a name="USER_Endpoint.Console"></a>

**콘솔을 사용하여 엔드포인트를 찾으려면**

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)에서 Amazon RDS 콘솔을 엽니다.

1. 콘솔의 오른쪽 상단에서 DB 인스턴스의 AWS 리전을 선택합니다.

1. DB 인스턴스에 대한 DNS 이름과 포트 번호를 찾습니다.

   1. DB 인스턴스 목록을 표시할 **인스턴스**를 선택합니다.

   1. 인스턴스 세부 정보를 표시할 Oracle DB 인스턴스 이름을 선택합니다.

   1. **Connectivity & security(연결 및 보안)** 탭에서 엔드포인트를 복사합니다. 또한 포트 번호를 적어 둡니다. DB 인스턴스에 연결하려면 엔드포인트와 포트 번호가 모두 필요합니다.  
![\[DB 인스턴스 엔드포인트 및 포트 찾기\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/OracleConnect1.png)

## AWS CLI
<a name="USER_Endpoint.CLI"></a>

AWS CLI를 사용하여 Oracle DB 인스턴스의 엔드포인트를 찾으려면 [describe-db-instances](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html) 명령을 호출하십시오.

**Example AWS CLI를 사용하여 엔드포인트를 찾으려면**  

```
1. aws rds describe-db-instances
```
출력에서 `Endpoint`를 검색하여 DB 인스턴스의 DNS 이름과 포트 번호를 찾습니다. DNS 이름은 출력의 `Address` 라인에 포함되어 있습니다. 다음은 JSON 엔드포인트 출력의 예입니다.  

```
"Endpoint": {
    "HostedZoneId": "Z1PVIF0B656C1W",
    "Port": 3306,
    "Address": "myinstance.123456789012.us-west-2.rds.amazonaws.com"
},
```

**참고**  
출력에는 여러 DB 인스턴스 정보가 포함될 수 있습니다.

# Oracle SQL Developer를 사용하여 DB 인스턴스에 연결
<a name="USER_ConnectToOracleInstance.SQLDeveloper"></a>

이 절차에서는 Oracle SQL Developer를 사용하여 DB 인스턴스에 연결합니다. 이 유틸리티의 독립 실행형 버전을 다운로드하려면 [Oracle SQL Developer 다운로드 페이지](https://www.oracle.com/tools/downloads/sqldev-downloads.html)를 참조하세요.

DB 인스턴스에 연결하려면 인스턴스의 DNS 이름과 포트 번호가 필요합니다. DB 인스턴스의 DNS 이름 및 포트 번호를 찾는 자세한 내용은 [RDS for Oracle DB 인스턴스의 엔드포인트 찾기](USER_Endpoint.md)를 참조하십시오.

**SQL Developer를 사용하여 DB 인스턴스에 연결하려면**

1. Oracle SQL Developer를 시작합니다.

1. [**Connections**] 탭에서 [**add (\$1)**] 아이콘을 선택합니다.  
![\[더하기 아이콘이 강조 표시되어 있는 Oracle SQL Developer\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/oracle-sqldev-plus.png)

1. [**New/Select Database Connection**] 대화 상자에 다음과 같이 DB instance 정보를 입력합니다.
   + **연결 이름**에 연결을 설명하는 이름(예: `Oracle-RDS`)을 입력합니다.
   + **사용자 이름**에 DB 인스턴스의 데이터베이스 관리자 이름을 입력합니다.
   + **암호**에 데이터베이스 관리자 암호를 입력합니다.
   + **호스트 이름**에 DB 인스턴스의 DNS 이름을 입력하거나 붙여 넣습니다.
   + **포트**에 포트 번호를 입력합니다.
   + **SID**의 경우 DB 이름을 입력합니다. DB 이름은 데이터베이스 세부 정보 페이지의 **Configuration**(구성) 탭에서 찾을 수 있습니다.

   정보가 모두 입력된 대화 상자는 다음과 비슷한 모습이 되어야 합니다.  
![\[Oracle SQL Developer에서 새로운 연결 생성\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/oracle-sqldev-newcon.png)

1. [**Connect**]를 선택합니다.

1. 이제 자체 데이터베이스 생성을 시작하고 평소대로 DB 인스턴스와 데이터베이스에 대한 쿼리 실행을 시작할 수 있습니다. DB 인스턴스에 대한 테스트 쿼리를 실행하려면 다음 중 하나를 수행합니다.

   1. 해당 연결의 **워크시트** 탭에 다음 SQL 쿼리를 입력합니다.

      ```
      SELECT NAME FROM V$DATABASE;
      ```

   1. **실행** 아이콘을 클릭하여 쿼리를 실행합니다.  
![\[Oracle SQL Developer에서 execute 아이콘을 사용하여 쿼리 실행\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/oracle-sqldev-run.png)

      SQL Developer가 데이터베이스 이름을 반환합니다.  
![\[Oracle SQL Developer의 쿼리 결과\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/oracle-sqldev-results.png)

# SQL\$1Plus를 사용하여 DB 인스턴스에 연결
<a name="USER_ConnectToOracleInstance.SQLPlus"></a>

SQL\$1Plus 같은 유틸리티를 사용하면 Oracle을 실행하는 Amazon RDS DB 인스턴스에 연결할 수 있습니다. 독립형 버전의 SQL\$1Plus를 포함하는 Oracle 인스턴트 클라이언트를 다운로드하려면 [Oracle 인스턴트 클라이언트 다운로드](https://www.oracle.com/database/technologies/instant-client/downloads.html)를 참조하세요.

DB 인스턴스에 연결하려면 인스턴스의 DNS 이름과 포트 번호가 필요합니다. DB 인스턴스의 DNS 이름 및 포트 번호를 찾는 자세한 내용은 [RDS for Oracle DB 인스턴스의 엔드포인트 찾기](USER_Endpoint.md)를 참조하십시오.

**Example SQL\$1Plus를 사용하여 Oracle DB 인스턴스에 연결하려면**  
다음 예제에서 DB 인스턴스 관리자의 사용자 이름을 대체합니다. 또한 DB 인스턴스를 DNS 이름으로 대체한 다음, 포트 번호와 Oracle SID를 포함시킵니다. SID 값은 DB 인스턴스의 이름이 아니라, DB 인스턴스를 생성할 때 지정한 DB 인스턴스의 데이터베이스 이름입니다.  
대상 LinuxmacOS, 또는Unix:  

```
1. sqlplus 'user_name@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=dns_name)(PORT=port))(CONNECT_DATA=(SID=database_name)))'
```
Windows의 경우:  

```
1. sqlplus user_name@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=dns_name)(PORT=port))(CONNECT_DATA=(SID=database_name)))
```
다음과 유사한 출력 화면이 표시되어야 합니다.  

```
SQL*Plus: Release 12.1.0.2.0 Production on Mon Aug 21 09:42:20 2017
```
사용자 암호를 입력하면 SQL 프롬프트가 표시됩니다.  

```
SQL>
```

**참고**  
`sqlplus USER/PASSWORD@longer-than-63-chars-rds-endpoint-here:1521/database-identifier`와 같은 짧은 형식의 연결 문자열(EZ Connect)이 최대 문자 제한에 걸릴 수 있으며, 이런 문자열을 연결할 때 사용하면 안 됩니다.

# 보안 그룹에 대한 고려 사항
<a name="USER_ConnectToOracleInstance.Security"></a>

DB 인스턴스에 연결하려면 DB 인스턴스가 필요한 IP 주소와 네트워크 구성이 할당되어 있는 보안 그룹과 연동되어야 합니다. DB 인스턴스가 기본 보안 그룹을 사용할 수 있습니다. DB 인스턴스를 생성할 때 구성할 필요가 없는 기본 보안 그룹을 할당한 경우에는 방화벽이 연결을 차단합니다. 새 보안 그룹 생성에 대한 자세한 내용은 [보안 그룹을 통한 액세스 제어](Overview.RDSSecurityGroups.md) 단원을 참조하십시오.

새 보안 그룹을 생성하였으면 보안 그룹과 연동되도록 DB 인스턴스 설정을 변경합니다. 자세한 내용은 [Amazon RDS DB 인스턴스 수정](Overview.DBInstance.Modifying.md) 섹션을 참조하세요.

SSL을 사용하여 DB 인스턴스 연결을 암호화함으로써 보안을 강화할 수 있습니다. 자세한 내용은 [Oracle 보안 소켓 Layer](Appendix.Oracle.Options.SSL.md) 단원을 참조하십시오.

# 프로세스 아키텍처 고려 사항
<a name="USER_ConnectToOracleInstance.SharedServer"></a>

서버 프로세스는 Oracle DB 인스턴스에 대한 사용자 연결을 처리합니다. 기본적으로 Oracle DB 인스턴스는 전용 서버 프로세스를 사용합니다. 전용 서버 프로세스에서는 서버 프로세스 하나로 사용자 프로세스 하나만 처리합니다. 원한다면 공유 서버 프로세스를 구성할 수 있습니다. 공유 서버 프로세스에서는 서버 프로세스 하나로 사용자 프로세스를 여러 개 처리할 수 있습니다.

다수의 사용자 세션에서 서버 메모리를 지나치게 많이 사용한다면 공유 서버 프로세스를 사용해 보십시오. 또한 세션이 빈번하게 연결 및 연결 해제되어 성능 문제가 발생하는 경우에도 공유 서버 프로세스의 사용을 고려해 볼 수 있습니다. 그러나 공유 서버 프로세스 사용에는 단점도 있습니다. 예를 들어, 공유 서버 프로세스는 CPU 리소스를 과도하게 사용할 수 있고 구성 및 관리하기가 훨씬 복잡합니다.

전용 및 공유 서버 프로세스에 대한 자세한 내용은 Oracle 설명서의 [About Dedicated and Shared Server Processes](https://docs.oracle.com/database/121/ADMIN/manproc.htm#ADMIN11166)를 참조하십시오. RDS for Oracle DB 인스턴스에서 공유 서버 프로세스를 구성하는 방법에 대한 자세한 내용은 지식 센터에서 [공유 서버에서 Amazon RDS for Oracle Database가 작동하도록 구성하려면 어떻게 해야 합니까?](https://aws.amazon.com/premiumsupport/knowledge-center/oracle-db-shared/)​를 참조하세요.

# Oracle DB 인스턴스에 대한 연결 문제 해결
<a name="USER_ConnectToOracleInstance.Troubleshooting"></a>

다음은 Oracle DB 인스턴스 연결을 시도할 때 발생할 수 있는 문제입니다.


****  

| 문제 | 문제 해결 제안 | 
| --- | --- | 
|  DB 인스턴스에 연결할 수 없습니다.  |  새로 생성한 DB 인스턴스의 경우, DB 인스턴스를 사용할 준비가 될 때까지 DB 인스턴스의 상태는 [**creating**]입니다. 상태가 **available**로 변경되면 DB 인스턴스에 연결할 수 있습니다. DB 인스턴스 클래스와 스토리지의 양에 따라 새 DB 인스턴스를 사용할 수 있을 때까지 최대 20분이 걸릴 수 있습니다.  | 
|  DB 인스턴스에 연결할 수 없습니다.  |  DB 인스턴스를 만들 때 지정한 포트를 통해 통신을 보내거나 받을 수 없으면 DB 인스턴스에 연결할 수 없습니다. 네트워크 관리자에게 문의해 DB 인스턴스에 대해 지정한 포트가 인바운드 및 아웃바운드 통신을 허용하는지 확인하십시오.  | 
|  DB 인스턴스에 연결할 수 없습니다.  |  로컬 방화벽에서 적용되는 액세스 규칙과 DB 인스턴스의 보안 그룹에 있는 DB 인스턴스에 액세스하기 위한 권한을 부여한 IP 주소가 일치하지 않을 수 있습니다. 방화벽의 인바운드 또는 아웃바운드 규칙에 문제가 있을 가능성이 높습니다. 보안 그룹에서 인바운드 규칙을 추가하거나 편집할 수 있습니다. **소스**에서 **내 IP**를 선택합니다. 이렇게 하면 브라우저에서 감지된 IP 주소에서 DB 인스턴스에 액세스할 수 있습니다. 자세한 내용은 [Amazon VPC 및 Amazon RDS](USER_VPC.md) 섹션을 참조하세요. 보안 그룹에 대한 자세한 내용은 [보안 그룹을 통한 액세스 제어](Overview.RDSSecurityGroups.md) 단원을 참조하십시오. 보안 그룹의 규칙 설정 절차에 대한 자세한 내용은 [자습서: DB 인스턴스에 사용할 Amazon VPC 생성(IPv4 전용)](CHAP_Tutorials.WebServerDB.CreateVPC.md) 단원을 참조하십시오.  | 
|  **대상 호스트 또는 객체가 존재하지 않으므로 연결이 실패했습니다 - Oracle, 오류: ORA-12545(Connect failed because target host or object does not exist – Oracle, Error: ORA-12545)**   |  서버 이름과 포트 번호를 정확하게 지정했는지 확인하십시오. **서버 이름**에는 DNS 이름을 입력하거나 콘솔에서 붙여 넣습니다. DB 인스턴스의 DNS 이름 및 포트 번호를 찾는 자세한 내용은 [RDS for Oracle DB 인스턴스의 엔드포인트 찾기](USER_Endpoint.md)를 참조하십시오.  | 
|  **Invalid username/password; logon denied – Oracle, Error: ORA-01017(잘못된 사용자 이름/암호이므로, 로그인이 거부되었습니다 - Oracle, 오류: ORA-01017**)   |  DB 인스턴스에 연결할 수 있지만 연결이 거부되었습니다. 이 문제는 주로 사용자 이름이나 암호를 잘못 입력하면 발생합니다. 사용자 이름과 암호를 확인하고 다시 시도하십시오.  | 
|  **TNS:listener에서 현재 연결 설명자 - Oracle에 제공된 SID를 알 수 없습니다(오류: ORA-12505**).  |  올바른 SID가 입력되었는지 확인합니다. SID는 DB 이름과 동일합니다. DB 이름은 인스턴스의 **Databases**(데이터베이스) 페이지에 있는 **Configuration**(구성) 탭에 나와 있습니다. AWS CLI를 사용하여 DB 이름도 찾을 수 있습니다. <pre>aws rds describe-db-instances --query 'DBInstances[*].[DBInstanceIdentifier,DBName]' --output text</pre>  | 

연결 문제에 대한 자세한 내용은 [Amazon RDS DB 인스턴스에 연결할 수 없음](CHAP_Troubleshooting.md#CHAP_Troubleshooting.Connecting) 단원을 참조하십시오.

# sqlnet.ora 파라미터를 사용하여 연결 속성 수정
<a name="USER_ModifyInstance.Oracle.sqlnet"></a>

sqlnet.ora 파일에는 Oracle 데이터베이스 서버와 클라이언트에서 Oracle Net 기능을 구성하는 파라미터가 포함되어 있습니다. sqlnet.ora 파일에서 이 파라미터를 사용하면 데이터베이스 안팎으로 연결하는 속성을 수정할 수 있습니다.

sqlnet.ora 파라미터의 설정 이유에 대한 자세한 정보는 Oracle 설명서의 [프로필 파라미터 구성](https://docs.oracle.com/database/121/NETAG/profile.htm#NETAG009)을 참조하십시오.

## sqlnet.ora 파라미터 설정
<a name="USER_ModifyInstance.Oracle.sqlnet.Setting"></a>

Amazon RDS for Oracle 파라미터 그룹에는 sqlnet.ora 파라미터의 하위 집합이 포함됩니다. 이것들은 다른 Oracle 파라미터와 같은 방법으로 설정해야 합니다. `sqlnetora.` 접두사는 어떤 파라미터가 sqlnet.ora 파라미터인지 식별합니다. 예를 들어 Amazon RDS의 Oracle 파라미터 그룹에서 `default_sdu_size` sqlnet.ora 파라미터는 `sqlnetora.default_sdu_size`입니다.

파라미터 그룹 관리 및 파라미터 값 설정에 대한 자세한 정보는 [Amazon RDS의 파라미터 그룹](USER_WorkingWithParamGroups.md) 단원을 참조하십시오.

## 지원되는 sqlnet.ora 파라미터
<a name="USER_ModifyInstance.Oracle.sqlnet.Supported"></a>

Amazon RDS에서는 다음 sqlnet.ora 파라미터를 지원합니다. 동적 sqlnet.ora 파라미터의 변경 내용은 즉시 적용됩니다.


****  

| 파라미터 | 유효한 값 | 정적/동적 | 설명 | 
| --- | --- | --- | --- | 
|  `sqlnetora.default_sdu_size`  |  `512`\$1`2097152`   |  동적  |  바이트로 표기하는 세션 데이터 단위(SDU). SDU는 버퍼에 두었다가 한 번에 네트워크로 전송하는 데이터의 양입니다.  | 
|  `sqlnetora.diag_adr_enabled`  |  `ON`, `OFF`   |  동적  |  ADR(Automatic Diagnostic Repository) 추적을 활성화하거나 비활성화하는 값. `ON`은 사용하는 ADR 파일 추적을 지정합니다. `OFF`는 사용하는 비ADR 파일 추적을 지정합니다.  | 
|  `sqlnetora.recv_buf_size`  |  `8192`\$1`268435456`   |  동적  |  세션 작업 수신을 위한 버퍼 공간 제한. TCP/IP, SSL을 사용하는 TCP/IP, SDP 프로토콜이 지원합니다.  | 
|  `sqlnetora.send_buf_size`  |  `8192`\$1`268435456`   |  동적  |  세션 작업 발송을 위한 버퍼 공간 제한. TCP/IP, SSL을 사용하는 TCP/IP, SDP 프로토콜이 지원합니다.  | 
|  `sqlnetora.sqlnet.allowed_logon_version_client`  |  `8`, `10`, `11`, `12`   |  동적  |  클라이언트 및 클라이언트 역할을 하는 서버가 Oracle DB 인스턴스에 연결하는 데 허용되는 최소 인증 프로토콜 버전입니다.  | 
|  `sqlnetora.sqlnet.allowed_logon_version_server`  |  `8`, `9`, `10`, `11`, `12`, `12a`   |  동적  |  Oracle DB 인스턴스에 연결할 수 있는 최소 인증 프로토콜 버전입니다.  | 
|  `sqlnetora.sqlnet.expire_time`  |  `0`\$1`1440`   |  동적  |  클라이언트-서버 연결이 활성인지 확인하기 위해 점검을 보내는 시간 간격(분).  | 
|  `sqlnetora.sqlnet.inbound_connect_timeout`  |  `0` 또는 `10`\$1`7200`   |  동적  |  클라이언트가 데이터베이스 서버에 연결하고 필요한 인증 정보를 제공하는 시간(초).  | 
|  `sqlnetora.sqlnet.outbound_connect_timeout`  |  `0` 또는 `10`\$1`7200`   |  동적  |  클라이언트가 Oracle Net 연결을 DB 인스턴스에 수립하는 시간(초).  | 
|  `sqlnetora.sqlnet.recv_timeout`  |  `0` 또는 `10`\$1`7200`   |  동적  |  데이터베이스 서버가 연결 수립 후 클라이언트 데이터를 기다리는 시간(초).  | 
|  `sqlnetora.sqlnet.send_timeout`  |  `0` 또는 `10`\$1`7200`   |  동적  |  데이터베이스 서버가 연결 수립 후 클라이언트에 작업 전송을 완료하는 시간(초).  | 
|  `sqlnetora.tcp.connect_timeout`  |  `0` 또는 `10`\$1`7200`   |  동적  |  클라이언트가 TCP 연결을 데이터베이스 서버에 수립하는 시간(초).  | 
|  `sqlnetora.trace_level_server`  |  `0`, `4`, `10`, `16`, `OFF`, `USER`, `ADMIN`, `SUPPORT`  |  동적  | 비ADR 추적의 경우, 지정된 레벨에서 서버 추적을 켜거나 끄십시오. | 

지원되는 각 sqlnet.ora 파라미터의 기본값은 해당 릴리스에서 Oracle Database의 기본값입니다.

## sqlnet.ora 파라미터 보기
<a name="USER_ModifyInstance.Oracle.sqlnet.Viewing"></a>

AWS Management Console, AWS CLI, SQL 클라이언트를 사용하여 sqlnet.ora 파라미터와 그 설정을 볼 수 있습니다.

### 콘솔을 사용하여 sqlnet.ora 파라미터 보기
<a name="USER_ModifyInstance.Oracle.sqlnet.Viewing.Console"></a>

파라미터 그룹에서 파라미터 보기에 대한 자세한 정보는 [Amazon RDS의 파라미터 그룹](USER_WorkingWithParamGroups.md) 단원을 참조하십시오.

Oracle 파라미터 그룹에서 `sqlnetora.` 접두사는 어떤 파라미터가 sqlnet.ora 파라미터인지 식별합니다.

### AWS CLI를 사용하여 sqlnet.ora 파라미터 보기
<a name="USER_ModifyInstance.Oracle.sqlnet.Viewing.CLI"></a>

Oracle 파라미터 그룹에서 구성한 sqlnet.ora 파라미터를 보려면 AWS CLI [describe-db-parameters](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-parameters.html) 명령을 사용합니다.

Oracle DB 인스턴스의 sqlnet.ora 파라미터를 모두 보려면 AWS CLI [download-db-log-file-portion](https://docs.aws.amazon.com/cli/latest/reference/rds/download-db-log-file-portion.html) 명령을 호출합니다. DB 인스턴스 식별자와 로그 파일 이름, 출력 유형을 지정합니다.

**Example**  
다음 코드는 `mydbinstance`에 대한 모든 sqlnet.ora 파라미터를 나열합니다.  
대상 LinuxmacOS, 또는Unix:  

```
aws rds download-db-log-file-portion \
    --db-instance-identifier mydbinstance \
    --log-file-name trace/sqlnet-parameters \
    --output text
```
Windows의 경우:  

```
aws rds download-db-log-file-portion ^
    --db-instance-identifier mydbinstance ^
    --log-file-name trace/sqlnet-parameters ^
    --output text
```

### SQL 클라이언트를 사용하여 sqlnet.ora 파라미터 보기
<a name="USER_ModifyInstance.Oracle.sqlnet.Viewing.SQL"></a>

SQL 클라이언트에서 Oracle DB 인스턴스에 연결하면 다음 쿼리가 sqlnet.ora 파라미터를 나열합니다.

```
1. SELECT * FROM TABLE
2.    (rdsadmin.rds_file_util.read_text_file(
3.         p_directory => 'BDUMP',
4.         p_filename  => 'sqlnet-parameters'));
```

SQL 클라이언트에서 Oracle DB 인스턴스에 연결하는 방법에 대한 자세한 정보는 [Oracle DB 인스턴스에 연결](USER_ConnectToOracleInstance.md)을 참조하십시오.

# Oracle DB 인스턴스 연결 보안
<a name="Oracle.Concepts.RestrictedDBAPrivileges"></a>

Amazon RDS for Oracle은 SSL/TLS 암호화 연결과 Oracle NNE(기본 네트워크 암호화) 옵션을 사용하여 애플리케이션과 Oracle DB 인스턴스 간의 연결을 암호화할 수 있습니다. Oracle 기본 네트워크 암호화 옵션에 대한 자세한 내용은 [Oracle 기본 네트워크 암호화](Appendix.Oracle.Options.NetworkEncryption.md) 단원을 참조하십시오.

**Topics**
+ [RDS for Oracle DB 인스턴스에 SSL 사용](Oracle.Concepts.SSL.md)
+ [새 SSL/TLS 인증서를 사용해 Oracle DB에 연결할 애플리케이션을 업데이트](ssl-certificate-rotation-oracle.md)
+ [RDS for Oracle DB 인스턴스에 기본 네트워크 암호화 사용](Oracle.Concepts.NNE.md)
+ [Amazon RDS for Oracle에 대한 Kerberos 인증 구성](oracle-kerberos.md)
+ [인증서 및 Oracle Wallet을 사용하여 UTL\$1HTTP 액세스 구성](Oracle.Concepts.ONA.md)

# RDS for Oracle DB 인스턴스에 SSL 사용
<a name="Oracle.Concepts.SSL"></a>

SSL(Secure Sockets Layer)은 클라이언트와 서버 간의 네트워크 연결을 보호하는 데 사용되는 업계 표준 프로토콜입니다. SSL 버전 3.0 이후에 이름이 전송 계층 보안(TLS)으로 변경되었지만 여전히 이 프로토콜을 SSL로 지칭하는 경우가 많습니다. Amazon RDS는 Oracle DB 인스턴스에 SSL 암호화를 지원합니다. SSL을 사용하여 애플리케이션 클라이언트와 Oracle DB 인스턴스 간의 연결을 암호화할 수 있습니다. 모든 Oracle용 AWS 리전에서 SSL 지원 기능을 사용할 수 있습니다.

Oracle DB 인스턴스에 대해 SSL 암호화를 활성화하려면 DB 인스턴스와 연결된 옵션 그룹에 Oracle SSL 옵션을 추가합니다. Amazon RDS는 Oracle에서 요구하는 대로 SSL 연결을 위해 두 번째 포트를 사용합니다. 이로 인해 DB 인스턴스와 Oracle 클라이언트 간에 클리어 텍스트 통신과 SSL로 암호화된 통신이 동시에 발생할 수 있습니다. 예를 들어 이 포트를 클리어 텍스트 통신에 사용하여 VPC 내의 다른 리소스와 통신하면서 동일한 포트를 SSL로 암호화된 통신에 사용하여 VPC 외부의 리소스와 통신할 수 있습니다.

자세한 내용은 [Oracle 보안 소켓 Layer](Appendix.Oracle.Options.SSL.md) 섹션을 참조하세요.

**참고**  
동일한 DB 인스턴스에서는 SSL과 Oracle NNE(기본 네트워크 암호화)를 모두 사용할 수 없습니다. SSL 암호화를 사용하려면 먼저 다른 연결 암호화를 모두 비활성화해야 합니다.

# 새 SSL/TLS 인증서를 사용해 Oracle DB에 연결할 애플리케이션을 업데이트
<a name="ssl-certificate-rotation-oracle"></a>

2023년 1월 13일부터 Amazon RDS는 보안 소켓 계층(SSL) 또는 전송 계층 보안(TLS)을 사용해 RDS DB 인스턴스에 연결하기 위한 용도의 새 인증 기관(CA) 인증서를 게시하였습니다. 아래에서 새 인증서를 사용하기 위해 애플리케이션을 업데이트하는 방법에 관한 정보를 찾으실 수 있습니다.

이 주제는 클라이언트 애플리케이션에서 SSL/TLS를 사용해 DB 인스턴스에 연결하는지 여부를 판단하는 데 도움이 됩니다.

**중요**  
Amazon RDS for Oracle DB 인스턴스에 대한 인증서를 변경하면 데이터베이스 리스너만 다시 시작됩니다. DB 인스턴스는 다시 시작되지 않았습니다. 기존 데이터베이스 연결은 영향을 받지 않지만, 리스너가 다시 시작되는 동안 잠시 새 접속에 오류가 발생합니다.  
연결 오류를 방지하려면 Oracle DB를 다시 시작하는 것이 좋습니다.

**참고**  
SSL/TLS를 사용하여 DB 인스턴스에 연결하는 클라이언트 애플리케이션의 경우, 새 CA 인증서를 포함하도록 클라이언트 애플리케이션 트러스트 스토어를 업데이트해야 합니다.

클라이언트 애플리케이션 트러스트 스토어에서 CA 인증서를 업데이트한 후에는 DB 인스턴스에서 인증서를 교환할 수 있습니다. 이 절차를 프로덕션 환경에서 구현하기 전에 개발 또는 스테이징 환경에서 테스트해볼 것을 적극 권장합니다.

인증서 교환에 대한 자세한 내용은 [SSL/TLS 인증서 교체](UsingWithRDS.SSL-certificate-rotation.md) 단원을 참조하십시오. 인증서 다운로드에 대한 자세한 내용은 [SSL/TLS를 사용하여 DB 인스턴스 또는 클러스터 에 대한 연결 암호화](UsingWithRDS.SSL.md) 단원을 참조하십시오. Oracle DB 인스턴스에서 SSL/TLS를 사용하는 방법에 관한 자세한 내용은 [Oracle 보안 소켓 Layer](Appendix.Oracle.Options.SSL.md) 단원을 참조하십시오.

**Topics**
+ [애플리케이션이 SSL을 사용하여 연결하는지 확인](#ssl-certificate-rotation-oracle.determining)
+ [애플리케이션 트러스트 스토어 업데이트](#ssl-certificate-rotation-oracle.updating-trust-store)
+ [SSL 연결 설정을 위한 Java 코드 예시](#ssl-certificate-rotation-oracle.java-example)

## 애플리케이션이 SSL을 사용하여 연결하는지 확인
<a name="ssl-certificate-rotation-oracle.determining"></a>

Oracle DB 인스턴스가 `SSL` 옵션이 추가된 옵션 그룹을 사용하는 경우 SSL을 사용 중일 수 있습니다. [옵션 그룹의 옵션 및 옵션 설정 표시하기](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.ListOption)의 지침을 따라서 확인합니다. `SSL` 옵션에 대한 자세한 내용은 [Oracle 보안 소켓 Layer](Appendix.Oracle.Options.SSL.md) 단원을 참조하십시오.

리스너 로그를 확인하여 SSL 연결이 있는지 확인하십시오. 다음은 리스너 로그의 출력 샘플입니다.

```
date time * (CONNECT_DATA=(CID=(PROGRAM=program)
(HOST=host)(USER=user))(SID=sid)) * 
(ADDRESS=(PROTOCOL=tcps)(HOST=host)(PORT=port)) * establish * ORCL * 0
```

`PROTOCOL`의 한 항목 값이 `tcps`인 경우, SSL 연결이 표시됩니다. 그러나 `HOST`가 `127.0.0.1`인 경우 항목을 무시할 수 있습니다. `127.0.0.1`로부터의 연결은 DB 인스턴스의 로컬 관리 에이전트입니다. 이 연결은 외부 SSL 연결이 아닙니다. 따라서 리스너 로그 항목에 `PROTOCOL`이 `tcps`로, `HOST`가 `127.0.0.1`이 *아닌* 것으로 표시되면 SSL을 사용하여 연결하는 애플리케이션이 있는 것입니다.

리스너 로그를 확인하려면 Amazon CloudWatch Logs에 로그를 게시하면 됩니다. 자세한 내용은 [Amazon CloudWatch Logs에 Oracle 로그 게시](USER_LogAccess.Concepts.Oracle.md#USER_LogAccess.Oracle.PublishtoCloudWatchLogs) 섹션을 참조하세요.

## 애플리케이션 트러스트 스토어 업데이트
<a name="ssl-certificate-rotation-oracle.updating-trust-store"></a>

SSL/TLS 연결을 위해 SQL\$1Plus 또는 JDBC를 사용하는 애플리케이션에 대해 트러스트 스토어를 업데이트할 수 있습니다.

### SQL\$1Plus를 위한 애플리케이션 트러스트 스토어 업데이트
<a name="ssl-certificate-rotation-oracle.updating-trust-store.sqlplus"></a>

SSL/TLS 연결을 위해 SQL\$1Plus를 사용하는 애플리케이션에 대해 트러스트 스토어를 업데이트할 수 있습니다.

**참고**  
트러스트 스토어를 업데이트할 때 새 인증서를 추가할 뿐 아니라 이전 인증서를 유지할 수도 있습니다.

**SQL\$1Plus 애플리케이션에 대해 트러스트 스토어를 업데이트하려면**

1. 모든 AWS 리전에서 작동하는 새 루트 인증서를 다운로드하고 이 파일을 `ssl_wallet` 디렉터리에 저장하세요.

   루트 인증서 다운로드에 대한 자세한 내용은 [SSL/TLS를 사용하여 DB 인스턴스 또는 클러스터 에 대한 연결 암호화](UsingWithRDS.SSL.md) 단원을 참조하십시오.

1. 다음 명령을 실행하여 Oracle wallet을 업데이트합니다.

   ```
   prompt>orapki wallet add -wallet $ORACLE_HOME/ssl_wallet -trusted_cert -cert
         $ORACLE_HOME/ssl_wallet/ssl-cert.pem -auto_login_only
   ```

   파일 이름을 다운로드한 파일 이름으로 바꿉니다.

1. wallet이 성공적으로 업데이트되었는지 확인하려면 다음 명령을 실행하십시오.

   ```
   prompt>orapki wallet display -wallet $ORACLE_HOME/ssl_wallet                     
   ```

   출력에 다음 사항이 포함되어 있어야 합니다.

   ```
   Trusted Certificates: 
   Subject: CN=Amazon RDS Root 2019 CA,OU=Amazon RDS,O=Amazon Web Services\, Inc.,L=Seattle,ST=Washington,C=US
   ```

### JDBC를 위한 애플리케이션 트러스트 스토어 업데이트
<a name="ssl-certificate-rotation-oracle.updating-trust-store.jdbc"></a>

SSL/TLS 연결을 위해 JDBC를 사용하는 애플리케이션에 대해 트러스트 스토어를 업데이트할 수 있습니다.

루트 인증서 다운로드에 대한 자세한 내용은 [SSL/TLS를 사용하여 DB 인스턴스 또는 클러스터 에 대한 연결 암호화](UsingWithRDS.SSL.md) 단원을 참조하십시오.

인증서를 가져오는 샘플 스크립트는 [트러스트 스토어로 인증서를 가져오기 위한 샘플 스크립트](UsingWithRDS.SSL-certificate-rotation.md#UsingWithRDS.SSL-certificate-rotation-sample-script) 섹션을 참조하세요.

## SSL 연결 설정을 위한 Java 코드 예시
<a name="ssl-certificate-rotation-oracle.java-example"></a>

다음은 JDBC를 사용하여 SSL 연결을 설정하는 방법을 보여 주는 코드 예입니다.

```
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;
 
public class OracleSslConnectionTest {
    private static final String DB_SERVER_NAME = "<dns-name-provided-by-amazon-rds>";
    private static final Integer SSL_PORT = "<ssl-option-port-configured-in-option-group>";
    private static final String DB_SID = "<oracle-sid>";
    private static final String DB_USER = "<user name>";
    private static final String DB_PASSWORD = "<password>";
    // This key store has only the prod root ca.
    private static final String KEY_STORE_FILE_PATH = "<file-path-to-keystore>";
    private static final String KEY_STORE_PASS = "<keystore-password>";
 
    public static void main(String[] args) throws SQLException {
        final Properties properties = new Properties();
        final String connectionString = String.format(
                "jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCPS)(HOST=%s)(PORT=%d))(CONNECT_DATA=(SID=%s)))",
                DB_SERVER_NAME, SSL_PORT, DB_SID);
        properties.put("user", DB_USER);
        properties.put("password", DB_PASSWORD);
        properties.put("oracle.jdbc.J2EE13Compliant", "true");
        properties.put("javax.net.ssl.trustStore", KEY_STORE_FILE_PATH);
        properties.put("javax.net.ssl.trustStoreType", "JKS");
        properties.put("javax.net.ssl.trustStorePassword", KEY_STORE_PASS);
        final Connection connection = DriverManager.getConnection(connectionString, properties);
        // If no exception, that means handshake has passed, and an SSL connection can be opened
    }
}
```

**중요**  
데이터베이스 연결에서 SSL/TLS를 사용함을 확인하고 애플리케이션 트러스트 스토어를 업데이트한 후에는 데이터베이스에서 rds-ca-rsa2048-g1 인증서를 사용하도록 업데이트할 수 있습니다. 지침은 [DB 인스턴스또는 클러스터를 수정하여 CA 인증서 업데이트](UsingWithRDS.SSL-certificate-rotation.md#UsingWithRDS.SSL-certificate-rotation-updating)의 3단계를 참조하십시오.

# RDS for Oracle DB 인스턴스에 기본 네트워크 암호화 사용
<a name="Oracle.Concepts.NNE"></a>

Oracle Database는 네트워크를 통해 데이터를 암호화하는 두 가지 방법, 즉 기본 네트워크 암호화(NNE)와 전송 계층 보안(TLS)을 제공합니다. NNE는 Oracle 전용 보안 기능인 반면 TLS는 업계 표준입니다. RDS for Oracle은 Oracle Database의 모든 버전에 대해 NNE를 지원합니다.

NNE는 TLS에 비해 다음과 같은 장점이 있습니다.
+ NNE 옵션의 설정을 사용하여 클라이언트 및 서버에서 NNE를 제어할 수 있습니다.
  + `SQLNET.ALLOW_WEAK_CRYPTO_CLIENTS` 및 `SQLNET.ALLOW_WEAK_CRYPTO`
  + `SQLNET.CRYPTO_CHECKSUM_CLIENT` 및 `SQLNET.CRYPTO_CHECKSUM_SERVER`
  + `SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENT` 및 `SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER`
  + `SQLNET.ENCRYPTION_CLIENT` 및 `SQLNET.ENCRYPTION_SERVER`
  + `SQLNET.ENCRYPTION_TYPES_CLIENT` 및 `SQLNET.ENCRYPTION_TYPES_SERVER`
+ 대부분의 경우 클라이언트나 서버를 구성할 필요가 없습니다. 반면 TLS에서는 클라이언트와 서버를 모두 구성해야 합니다.
+ 인증서가 필요하지 않습니다. TLS에서는 서버에 인증서(결국 만료됨)가 필요하며 클라이언트에는 서버 인증서를 발급한 인증 기관의 신뢰할 수 있는 루트 인증서가 필요합니다.

Oracle DB 인스턴스에 대해 NNE 암호화를 활성화하려면 DB 인스턴스와 연결된 옵션 그룹에 Oracle NNE 옵션을 추가합니다. 자세한 내용은 [Oracle 기본 네트워크 암호화](Appendix.Oracle.Options.NetworkEncryption.md) 섹션을 참조하세요.

**참고**  
동일한 DB 인스턴스에서 NNE와 TLS를 함께 사용할 수 없습니다.

# Amazon RDS for Oracle에 대한 Kerberos 인증 구성
<a name="oracle-kerberos"></a>

사용자가 Amazon RDS for Oracle DB 인스턴스에 연결할 때 Kerberos 인증을 통해 사용자를 인증할 수 있습니다. 이 구성에서, DB 인스턴스는 AWS Directory Service for Microsoft Active Directory(이)라는 AWS Managed Microsoft AD과(와) 함께 작동합니다. 사용자가 신뢰하는 도메인에 속한 RDS for Oracle DB 인스턴스를 사용하여 인증할 경우 Directory Service를 사용하여 만든 디렉터리에 인증 요청이 전달됩니다.

모든 자격 증명을 동일한 디렉터리에 보관하면 시간과 노력을 절약할 수 있습니다. 여러 데이터베이스 인스턴스에 대한 자격 증명을 보관하고 관리할 수 있는 중앙 집중식 공간이 있습니다. 디렉터리는 전체 보안 프로필을 향상시킬 수도 있습니다.

# 리전 및 버전 사용 가능 여부
<a name="oracle-kerberos-setting-up.RegionVersionAvailability"></a>

기능 가용성 및 해당 지원은 각 데이터베이스 엔진의 특정 버전 및 AWS 리전에 따라 다릅니다. Kerberos 인증을 사용하는 RDS for Oracle의 버전 및 리전 가용성에 대한 자세한 내용은 [Amazon RDS에서 Kerberos 인증을 지원하는 리전 및 DB 엔진](Concepts.RDS_Fea_Regions_DB-eng.Feature.KerberosAuthentication.md) 단원을 참조하세요.

**참고**  
RDS for Oracle DB 인스턴스에서 사용 중단된 DB 인스턴스 클래스에는 Kerberos 인증이 지원되지 않습니다. 자세한 내용은 [RDS for Oracle DB 인스턴스 클래스](Oracle.Concepts.InstanceClasses.md) 섹션을 참조하세요.

**Topics**
+ [리전 및 버전 사용 가능 여부](oracle-kerberos-setting-up.RegionVersionAvailability.md)
+ [Oracle DB 인스턴스에 대해 Kerberos 설정](oracle-kerberos-setting-up.md)
+ [도메인에서 DB 인스턴스 관리](oracle-kerberos-managing.md)
+ [Kerberos 인증을 사용하여 Oracle에 연결](oracle-kerberos-connecting.md)

# Oracle DB 인스턴스에 대해 Kerberos 설정
<a name="oracle-kerberos-setting-up"></a>

AWS Directory Service for Microsoft Active Directory라고도 하는 AWS Managed Microsoft AD을 사용하여 Oracle DB 인스턴스의 Kerberos 인증을 설정합니다. Kerberos 인증을 설정하려면 다음 단계를 완료하십시오.
+ [1단계: AWS Managed Microsoft AD를 사용하여 디렉터리 만들기](#oracle-kerberos.setting-up.create-directory)
+ [2단계: 신뢰 생성](#oracle-kerberos.setting-up.create-forest-trust)
+ [3단계: Amazon RDS에 대한 IAM 권한 구성](#oracle-kerberos.setting-up.CreateIAMRole)
+ [4단계: 사용자 생성 및 구성](#oracle-kerberos.setting-up.create-users)
+ [5단계: 디렉터리와 DB 인스턴스 사이에 VPC 간 트래픽 활성화](#oracle-kerberos.setting-up.vpc-peering)
+ [6단계: Oracle DB 인스턴스 생성 또는 수정](#oracle-kerberos.setting-up.create-modify)
+ [7단계: Kerberos 인증 Oracle 로그인 생성](#oracle-kerberos.setting-up.create-logins)
+ [8단계: Oracle 클라이언트 구성](#oracle-kerberos.setting-up.configure-oracle-client)

**참고**  
설치하는 동안 RDS는 `CREATE SESSION` 권한이 있는 *managed\$1service\$1user*@*example.com*이라는 Oracle 데이터베이스 사용자를 생성합니다. 여기서 *example.com*은 도메인 이름입니다. 이 사용자는 Directory Service가 Managed Active Directory 내에 생성하는 사용자에 해당합니다. 정기적으로, RDS는 Directory Service에서 제공하는 자격 증명을 사용하여 Oracle 데이터베이스에 로그인합니다. 그 후, RDS는 티켓 캐시를 즉시 삭제합니다.

## 1단계: AWS Managed Microsoft AD를 사용하여 디렉터리 만들기
<a name="oracle-kerberos.setting-up.create-directory"></a>

Directory Service는 AWS 클라우드에서 완전 관리형 Microsoft Active Directory를 생성합니다. AWS Managed Microsoft AD 디렉터리를 생성할 때 Directory Service에서 두 개의 도메인 컨트롤러 및 Domain Name System(DNS) 서버가 자동으로 생성됩니다. 디렉터리 서버는 VPC 내 다른 서브넷에서 생성됩니다. 이러한 중복으로 인해 장애가 발생해도 디렉터리에 액세스할 수 있습니다.

AWS Managed Microsoft AD 디렉터리를 생성하는 경우 Directory Service에서 다음 작업이 자동으로 수행됩니다.
+ VPC 내에서 Active Directory를 설정합니다.
+ 사용자 이름 Admin과 지정된 암호를 사용하여 디렉터리 관리자 계정을 생성합니다. 이 계정을 사용하여 디렉터리를 관리할 수 있습니다.
**참고**  
이 암호를 저장하십시오. Directory Service에서는 저장되지 않습니다. 재설정은 가능하지만 검색은 불가능합니다.
+ 디렉터리 컨트롤러에 대한 보안 그룹을 만듭니다.

AWS Managed Microsoft AD를 시작하면 AWS에서 모든 디렉터리의 객체를 포함하는 OU(조직 단위)를 생성합니다. 이 OU는 디렉터리를 생성할 때 입력한 NetBIOS 이름을 가지고 있으며, 도메인 루트에 위치합니다. 도메인 루트는 AWS에서 소유하고 관리합니다.

AWS Managed Microsoft AD 디렉터리를 사용해 생성한 관리자 계정은 OU의 가장 일반적인 관리 활동에 대한 권한을 갖습니다.
+ 사용자 생성, 업데이트 또는 삭제 
+ 도메인(예: 파일 또는 인쇄 서버)에 리소스를 추가한 다음 OU 내의 사용자에 해당 리소스에 대한 권한 할당 
+ 추가 OU 및 컨테이너 생성 
+ 권한 위임 
+ Active Directory 휴지통에서 삭제된 객체 복원 
+ Active Directory 웹 서비스에서 AD 및 DNS Windows PowerShell 모듈 실행 

또한 admin 계정은 다음과 같은 도메인 차원 활동을 수행할 권한이 있습니다.
+ DNS 구성 관리(레코드, 영역 및 전달자 추가, 제거 또는 업데이트) 
+ DNS 이벤트 로그 보기 
+ 보안 이벤트 로그 보기 

디렉터리를 생성하려면 AWS Management Console, AWS CLI 또는 Directory Service API를 사용합니다. 디렉터리가 Oracle DB 인스턴스와 통신할 수 있도록 디렉터리 보안 그룹에서 관련 아웃바운드 포트를 열어야 합니다.

**AWS Managed Microsoft AD으로 디렉터리를 생성하려면**

1. AWS Management Console에 로그인하여 [https://console.aws.amazon.com/directoryservicev2/](https://console.aws.amazon.com/directoryservicev2/)에서 Directory Service 콘솔을 엽니다.

1. 탐색 창에서 **디렉터리**를 선택한 후 **디렉터리 설정**을 선택합니다.

1. **AWS Managed Microsoft AD**를 선택합니다. AWS Managed Microsoft AD는 현재 Amazon RDS와 함께 사용할 수 있는 유일한 옵션입니다.

1.  다음 정보를 입력합니다.  
**디렉터리 DNS 이름**  
디렉터리를 위한 정규화된 이름(예: **corp.example.com**)입니다.  
**디렉터리 NetBIOS 이름**  
디렉터리의 짧은 이름(예: **CORP**)입니다.  
**디렉터리 설명**  
(선택 사항) 디렉터리에 대한 설명입니다.  
**관리자 암호**  
디렉터리 관리자의 암호입니다. 디렉터리 생성 프로세스에서는 사용자 이름 Admin과 이 암호를 사용하여 관리자 계정을 생성합니다.  
디렉터리 관리자 암호는 "admin"이라는 단어를 포함할 수 없습니다. 암호는 대소문자를 구분하며 길이가 8\$164자 사이여야 합니다. 또한 다음 네 범주 중 세 개에 해당하는 문자를 1자 이상 포함해야 합니다.  
   + 소문자(a–z) 
   + 대문자(A–Z) 
   + 숫자(0–9) 
   + 영숫자 외의 특수 문자(\$1\$1@\$1\$1%^&\$1\$1-\$1=`\$1\$1()\$1\$1[]:;"'<>,.?/)   
**[Confirm Password]**  
관리자 암호를 다시 입력했습니다.

1. **다음**을 선택합니다.

1.  **네트워킹** 섹션에 다음 정보를 입력하고 **다음**을 선택합니다.  
**VPC**  
디렉터리에 대한 VPC입니다. 동일한 VPC에 Oracle DB 인스턴스를 생성합니다.  
**서브넷**  
디렉터리 서버에 대한 서브넷입니다. 두 서브넷이 서로 다른 가용 영역에 있어야 합니다.

1.  디렉터리 정보를 검토하고 필요한 사항을 변경합니다. 정보가 올바르면 **디렉터리 생성**을 선택합니다.  
![\[생성 중 디렉터리 세부 정보 페이지\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/WinAuth2.png)

디렉터리를 생성하는 데 몇 분 정도 걸립니다. 디렉터리가 성공적으로 생성되면 **상태** 값이 **활성**으로 변경됩니다.

디렉터리에 대한 정보를 보려면 디렉터리 목록에서 해당 디렉터리 이름을 선택합니다. Oracle DB 인스턴스를 생성하거나 수정할 때 이 값이 필요하므로 **디렉터리 ID** 값을 기록해 두십시오.

![\[디렉터리 세부 정보 페이지\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/WinAuth3.png)


## 2단계: 신뢰 생성
<a name="oracle-kerberos.setting-up.create-forest-trust"></a>

AWS Managed Microsoft AD만 사용하려는 경우 [3단계: Amazon RDS에 대한 IAM 권한 구성](#oracle-kerberos.setting-up.CreateIAMRole) 섹션으로 넘어갑니다.

자체 관리형 Active Directory를 사용하여 Kerberos 인증을 활성화하려면 자체 관리형 Active Directory와 이전 단계에서 생성된 AWS Managed Microsoft AD 간에 포리스트 신뢰 관계를 생성해야 합니다. 트러스트는 AWS Managed Microsoft AD가 자체 관리형 Active Directory를 신뢰하는 단방향일 수 있습니다. 두 Active Directory가 서로를 신뢰하는 양방향일 수도 있습니다. Directory Service를 사용하여 포리스트 신뢰를 설정하는 방법에 대한 자세한 내용은 *Directory Service 관리 안내서*의 [신뢰 관계를 생성해야 하는 경우](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_setup_trust.html)를 참조하세요.

## 3단계: Amazon RDS에 대한 IAM 권한 구성
<a name="oracle-kerberos.setting-up.CreateIAMRole"></a>

Directory Service를 호출하려면 Amazon RDS에 관리형 IAM 정책 `AmazonRDSDirectoryServiceAccess`를 사용하는 IAM 역할이 필요합니다. 이 역할을 사용하여 Amazon RDS에서 Directory Service를 호출할 수 있습니다.

**참고**  
역할이 액세스를 허용하려면 AWS 리전에서 AWS 계정의 AWS Security Token Service(AWS STS) 엔드포인트를 활성화해야 합니다. AWS STS 엔드포인트는 기본적으로 모든 AWS 리전에서 활성화되어 있으므로 별도의 조치 없이 사용할 수 있습니다. 자세한 내용은 *IAM 사용 설명서*의 [AWS 리전에서 AWS STS 활성화 및 비활성화](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_enable-regions.html#sts-regions-activate-deactivate)를 참조하세요.

### IAM 역할 생성
<a name="oracle-kerberos.setting-up.CreateIAMRole.create-role"></a>

AWS Management Console을 사용하여 DB 인스턴스를 생성할 때 콘솔 사용자에게 `iam:CreateRole` 권한이 있으면 콘솔에서 `rds-directoryservice-kerberos-access-role`을 자동으로 생성합니다. 그렇지 않으면 IAM 역할을 수동으로 생성해야 합니다. 이 IAM 역할을 생성할 때 `Directory Service`를 선택하고 여기에 AWS 관리형 정책인 `AmazonRDSDirectoryServiceAccess`를 연결합니다.

서비스에 대한 IAM 역할 생성에 대한 자세한 내용은 *IAM 사용 설명서*의 [AWS 서비스에 대한 권한을 위임할 역할 생성](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)을 참조하세요.

**참고**  
RDS for Microsoft SQL Server에 대한 Windows 인증에 사용되는 IAM 역할은 RDS for Oracle에 사용할 수 없습니다.

### 수동으로 IAM 신뢰 정책 만들기
<a name="oracle-kerberos.setting-up.CreateIAMRole.trust-policy"></a>

선택 사항으로 관리형 IAM 정책인 `AmazonRDSDirectoryServiceAccess`를 사용하는 대신 필요한 권한으로 리소스 정책을 생성할 수 있습니다. `directoryservice.rds.amazonaws.com` 및 `rds.amazonaws.com` 둘 다 보안 주체로 지정합니다.

Amazon RDS가 다른 서비스에 제공하는 리소스에 대한 권한을 제한하려면 리소스 정책에서 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn) 및 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount) 전역 조건 컨텍스트 키를 사용하는 것이 좋습니다. 혼동된 대리자 문제로부터 보호하는 가장 효과적인 방법은 Amazon RDS 리소스의 전체 ARN이 포함된 `aws:SourceArn` 글로벌 조건 컨텍스트 키를 사용하는 것입니다. 자세한 내용은 [교차 서비스 혼동된 대리자 문제 방지](cross-service-confused-deputy-prevention.md) 섹션을 참조하세요.

다음 예에서는 Amazon RDS에서 `aws:SourceArn` 및 `aws:SourceAccount` 전역 조건 컨텍스트 키를 사용하여 혼동된 대리자 문제를 방지하는 방법을 보여줍니다.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "Service": [
          "directoryservice.rds.amazonaws.com",
          "rds.amazonaws.com"
        ]
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "ArnLike": {
          "aws:SourceArn": "arn:aws:rds:us-east-1:123456789012:db:mydbinstance"
        },
        "StringEquals": {
          "aws:SourceAccount": "123456789012"
        }
      }
    }
  ]
}
```

------

또한 옵트인 리전의 경우 `directoryservice.rds.region_name.amazonaws.com`의 양식으로 해당 리전의 서비스 보안 주체를 포함해야 합니다. 예를 들어 아프리카(케이프타운) 리전에서 다음의 신뢰 정책을 사용합니다.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "Service": [
          "directoryservice.rds.amazonaws.com",
          "directoryservice.rds.af-south-1.amazonaws.com",
          "rds.amazonaws.com"
        ]
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "ArnLike": {
          "aws:SourceArn": "arn:aws:rds:af-south-1:123456789012:db:mydbinstance"
        },
        "StringEquals": {
          "aws:SourceAccount": "123456789012"
        }
      }
    }
  ]
}
```

------

또한 역할에는 다음과 같은 IAM 정책도 있어야 합니다.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Action": [
        "ds:DescribeDirectories",
        "ds:AuthorizeApplication",
        "ds:UnauthorizeApplication",
        "ds:GetAuthorizedApplicationDetails"
      ],
    "Effect": "Allow",
    "Resource": "*"
    }
  ]
}
```

------

## 4단계: 사용자 생성 및 구성
<a name="oracle-kerberos.setting-up.create-users"></a>

 Active Directory 도메인 서비스 및 Active Directory Lightweight Directory Services 도구의 일부인 Active Directory 사용자 및 컴퓨터 도구를 사용하여 사용자를 생성할 수 있습니다. 이 경우 *사용자*는 디렉터리에 액세스할 수 있는 개별 사용자 또는 개체입니다.

Directory Service 디렉터리에서 사용자를 생성하려면 Directory Service 디렉터리의 멤버인 Windows 기반 Amazon EC2 인스턴스에 연결되어 있어야 합니다. 이와 동시에 사용자를 생성할 권한이 있는 사용자로 로그인한 상태이어야 합니다. Microsoft Active Directory에서 사용자를 생성하는 방법에 대한 자세한 내용은 *AWS Managed Microsoft AD 관리 안내서*의 [Directory Service에서 사용자 및 그룹 관리](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_manage_users_groups.html)를 참조하세요.

## 5단계: 디렉터리와 DB 인스턴스 사이에 VPC 간 트래픽 활성화
<a name="oracle-kerberos.setting-up.vpc-peering"></a>

디렉터리와 DB 인스턴스를 동일한 VPC에 배치하려면 이 단계를 건너뛰고 [6단계: Oracle DB 인스턴스 생성 또는 수정](#oracle-kerberos.setting-up.create-modify) 섹션으로 이동하세요.

디렉터리와 DB 인스턴스를 서로 다른 AWS 계정 또는 VPC에 배치하려면 VPC 피어링 또는 [AWS Transit Gateway](https://docs.aws.amazon.com/vpc/latest/tgw/what-is-transit-gateway.html)를 사용하여 VPC 간 트래픽을 구성합니다. 다음 절차는 VPC 피어링을 사용하여 VPC 간 트래픽을 활성화합니다. *Amazon Virtual Private Cloud 피어링 안내서*의 [VPC 피어링이란?](https://docs.aws.amazon.com/vpc/latest/peering/Welcome.html) 지침을 따르십시오.

**VPC 피어링을 사용하여 VPC 간 트래픽을 활성화하려면**

1. 네트워크 트래픽이 양방향으로 흐를 수 있도록 적절한 VPC 라우팅 규칙을 설정합니다.

1. DB 인스턴스의 보안 그룹이 디렉터리의 보안 그룹에서 인바운드 트래픽을 수신할 수 있는지 확인합니다. 자세한 내용은 *AWS Managed Microsoft AD 관리 안내서*에서 [Directory Service 모범 사례](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_best_practices.html)를 참조하세요.

1. 트래픽을 차단하는 네트워크 ACL(액세스 제어 목록) 규칙이 없어야 합니다.

다른 AWS 계정이 디렉터리를 소유하는 경우 디렉터리를 공유해야 합니다.

**AWS 계정 간에 디렉터리를 공유하려면**

1. *AWS 관리 안내서*의 [자습서: 원활한 EC2 도메인 조인을 위해 AWS Managed Microsoft AD 디렉터리 공유](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_tutorial_directory_sharing.html)에 있는 지침에 따라 DB 인스턴스가 생성될 Directory Service 계정과 디렉터리를 공유하는 작업을 시작합니다.

1. DB 인스턴스용 계정을 사용하여 Directory Service 콘솔에 로그인하고 계속하기 전에 도메인이 `SHARED` 상태가 되었는지 확인합니다.

1. DB 인스턴스용 계정을 사용하여 Directory Service 콘솔에 로그인하는 동안 **디렉터리 ID** 값을 기록해 둡니다. 이 디렉터리 ID를 사용하여 DB 인스턴스를 도메인에 조인합니다.

## 6단계: Oracle DB 인스턴스 생성 또는 수정
<a name="oracle-kerberos.setting-up.create-modify"></a>

디렉터리에서 사용할 Oracle DB 인스턴스를 생성하거나 수정합니다. 콘솔, CLI 또는 RDS API를 사용하여 DB 인스턴스를 디렉터리에 연결할 수 있습니다. 이 작업을 다음 중 한 가지 방법으로 수행할 수 있습니다.
+ 콘솔, [ create-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html) CLI 명령 또는 [CreateDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html) RDS API 작업을 사용하여 새 Oracle DB 인스턴스를 생성합니다.

  지침은 [Amazon RDS DB 인스턴스 생성](USER_CreateDBInstance.md) 섹션을 참조하세요.
+ 콘솔, [modify-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) CLI 명령 또는 [ModifyDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html) RDS API 작업을 사용하여 기존 Oracle DB 인스턴스를 수정합니다.

  지침은 [Amazon RDS DB 인스턴스 수정](Overview.DBInstance.Modifying.md) 섹션을 참조하세요.
+ 콘솔, [ restore-db-instance-from-db-snapshot](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-db-snapshot.html) CLI 명령 또는 [ RestoreDBInstanceFromDBSnapshot](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceFromDBSnapshot.html) RDS API 작업을 사용하여 DB 스냅샷에서 Oracle DB 인스턴스를 복원합니다.

  지침은 [DB 인스턴스 복원](USER_RestoreFromSnapshot.md) 섹션을 참조하세요.
+ 콘솔, [ restore-db-instance-to-point-in-time](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-to-point-in-time.html) CLI 명령 또는 [ RestoreDBInstanceToPointInTime](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceToPointInTime.html) RDS API 작업을 사용하여 Oracle DB 인스턴스를 특정 시점으로 복구합니다.

  지침은 [Amazon RDS에서 DB 인스턴스를 지정된 시간으로 복원](USER_PIT.md) 섹션을 참조하세요.

Kerberos 인증은 VPC의 Oracle DB 인스턴스에 대해서만 지원됩니다. DB 인스턴스는 디렉터리와 동일한 VPC 또는 다른 VPC에 있을 수 있습니다. DB 인스턴스를 생성하거나 수정할 때 다음을 수행합니다.
+ 디렉터리를 만들 때 생성된 도메인 식별자(`d-*` 식별자)를 제공합니다.
+ 생성한 IAM 역할의 이름을 제공합니다.
+ DB 인스턴스 보안 그룹이 디렉터리 보안 그룹에서 인바운드 트래픽을 수신하고 디렉터리로 아웃바운드 트래픽을 전송할 수 있는지 확인합니다.

콘솔을 사용하여 DB 인스턴스를 생성하는 경우 **Database authentication(데이터베이스 인증)** 섹션에서 **Password and Kerberos authentication(암호 및 Kerberos 인증)**을 선택합니다. **Browse Directory(디렉터리 찾아보기)**를 선택한 다음 디렉터리를 선택하거나 **새 디렉터리 생성**을 선택합니다.

![\[DB 인스턴스를 생성할 때의 Kerberos 인증 설정\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/kerberos-authentication.png)


콘솔을 사용하여 DB 인스턴스를 수정하거나 복원할 때는 **Kerberos authentication(Kerberos 인증)** 섹션에서 디렉터리를 선택하거나 **새 디렉터리 생성**을 선택합니다.

![\[DB 인스턴스를 수정하거나 복원할 때의 Kerberos 인증 설정\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/kerberos-auth-modify-restore.png)


AWS CLI를 사용하는 경우 생성한 도메인 디렉터리를 DB 인스턴스에서 사용하려면 다음과 같은 파라미터가 필요합니다.
+ `--domain` 파라미터의 경우 디렉터리를 만들 때 생성된 도메인 식별자("d-\$1" 식별자)를 사용하십시오.
+ `--domain-iam-role-name` 파라미터의 경우 귀하가 생성한, 관리형 IAM 정책 `AmazonRDSDirectoryServiceAccess`를 사용하는 역할을 사용하십시오.

예를 들어 다음 CLI 명령에서는 디렉터리를 사용하도록 DB 인스턴스를 수정합니다.

대상 LinuxmacOS, 또는Unix:

```
aws rds modify-db-instance \
    --db-instance-identifier mydbinstance \
    --domain d-ID \
    --domain-iam-role-name role-name
```

Windows의 경우:

```
aws rds modify-db-instance ^
    --db-instance-identifier mydbinstance ^
    --domain d-ID ^
    --domain-iam-role-name role-name
```

**중요**  
DB 인스턴스를 수정하여 Kerberos 인증을 활성화하는 경우에는 변경 후 DB 인스턴스를 재부팅하세요.

**참고**  
*MANAGED\$1SERVICE\$1USER*는 이름이 Directory Service for RDS에서 임의로 생성되는 서비스 계정입니다. Kerberos 인증을 설정하는 동안, RDS for Oracle은 동일한 이름을 가진 사용자를 생성하고 해당 사용자에게 `CREATE SESSION` 권한을 할당합니다. Oracle DB 사용자는 외부에서 *MANAGED\$1SERVICE\$1USER@EXAMPLE.COM*으로 식별됩니다. 여기서 *EXAMPLE.COM*은 도메인의 이름입니다. 정기적으로, RDS는 Directory Service에서 제공하는 자격 증명을 사용하여 Oracle 데이터베이스에 로그인합니다. 그 후, RDS는 티켓 캐시를 즉시 삭제합니다.

## 7단계: Kerberos 인증 Oracle 로그인 생성
<a name="oracle-kerberos.setting-up.create-logins"></a>

다른 DB 인스턴스의 경우와 같은 방법으로 Amazon RDS 마스터 사용자 자격 증명을 사용하여 Oracle DB 인스턴스에 연결합니다. DB 인스턴스는 AWS Managed Microsoft AD 도메인에 조인됩니다. 따라서 도메인 내 Microsoft Active Directory 사용자에서 Oracle 로그인 및 사용자를 프로비저닝할 수 있습니다. 데이터베이스 권한을 관리하려면 이 로그인에 대해 표준 Oracle 권한을 부여하고 취소하십시오.

**Microsoft Active Directory 사용자가 Oracle로 인증할 수 있게 허용하는 방법**

1. Amazon RDS 마스터 사용자 자격 증명을 사용하여 Oracle DB 인스턴스에 연결합니다.

1. Oracle 데이터베이스에서 외부에서 인증된 사용자를 생성합니다.

   다음 예제에서는 `KRBUSER@CORP.EXAMPLE.COM`을(를) 사용자 이름 및 도메인 이름으로 교체합니다.

   ```
   CREATE USER "KRBUSER@CORP.EXAMPLE.COM" IDENTIFIED EXTERNALLY; 
   GRANT CREATE SESSION TO "KRBUSER@CORP.EXAMPLE.COM";
   ```

   이제 도메인의 사용자(사람 및 애플리케이션)는 Kerberos 인증을 사용하여 도메인이 조인된 클라이언트 머신에서 Oracle DB 인스턴스에 연결할 수 있습니다.

## 8단계: Oracle 클라이언트 구성
<a name="oracle-kerberos.setting-up.configure-oracle-client"></a>

Oracle 클라이언트를 구성하려면 다음 요구 사항을 충족하십시오.
+ 도메인을 가리키도록 krb5.conf(Linux) 또는 krb5.ini(Windows)라는 구성 파일을 만듭니다. 이 구성 파일을 사용하도록 Oracle 클라이언트를 구성합니다.
+ TCP/UDP를 사용하여 DNS 포트 53, TCP를 사용하여 Kerberos 포트(관리형 Directory Service의 경우 88 및 464) 및 TCP를 사용하여 LDAP 포트 389를 통해 클라이언트 호스트와 Directory Service 간에 트래픽이 흐를 수 있는지 확인합니다.
+ 데이터베이스 포트를 통해 클라이언트 호스트와 DB 인스턴스 간에 트래픽이 흐를 수 있는지 확인합니다.

다음은 AWS Managed Microsoft AD의 샘플 콘텐츠입니다.

```
[libdefaults]
 default_realm = EXAMPLE.COM
[realms]
 EXAMPLE.COM = {
  kdc = example.com
  admin_server = example.com
 }
[domain_realm]
 .example.com = CORP.EXAMPLE.COM
 example.com = CORP.EXAMPLE.COM
```

다음은 온프레미스 Microsoft AD의 샘플 krb5.conf 콘텐츠입니다. krb5.conf 또는 krb5.ini 파일에서 *on-prem-ad-server-name*을 온프레미스 AD 서버의 이름으로 바꿉니다.

```
[libdefaults]
 default_realm = ONPREM.COM
[realms]
 AWSAD.COM = {
  kdc = awsad.com
  admin_server = awsad.com
 }
 ONPREM.COM = {
  kdc = on-prem-ad-server-name
  admin_server = on-prem-ad-server-name
 }
[domain_realm]
 .awsad.com = AWSAD.COM
 awsad.com= AWSAD.COM
 .onprem.com = ONPREM.COM
 onprem.com= ONPREM.COM
```

**참고**  
krb5.ini 또는 krb5.conf 파일을 구성한 후에는 서버를 재부팅하는 것이 좋습니다.

다음은 SQL\$1Plus 구성에 대한 샘플 sqlnet.ora 콘텐츠입니다.

```
SQLNET.AUTHENTICATION_SERVICES=(KERBEROS5PRE,KERBEROS5)
SQLNET.KERBEROS5_CONF=path_to_krb5.conf_file
```

SQL Developer 구성의 예는 Oracle Support의 [문서 1609359.1](https://support.oracle.com/epmos/faces/DocumentDisplay?id=1609359.1)을 참조하세요.

# 도메인에서 DB 인스턴스 관리
<a name="oracle-kerberos-managing"></a>

콘솔, CLI 또는 RDS API를 사용하여 DB 인스턴스 및 DB 인스턴스와 Microsoft Active Directory의 관계를 관리할 수 있습니다. 예를 들어 Microsoft Active Directory를 연결하여 Kerberos 인증을 활성화할 수 있습니다. 또한 Microsoft Active Directory를 연결 해제하여 Kerberos 인증을 비활성화할 수 있습니다. 또한 DB 인스턴스를 이동하여 한 Microsoft Active Directory에서 다른 Microsoft Active Directory로 외부 인증하게 할 수 있습니다.

예를 들어 CLI를 사용하여 다음 작업을 수행할 수 있습니다.
+ 실패한 멤버십에 대한 Kerberos 인증 활성화를 다시 시도하려면 [modify-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) CLI 명령을 사용하여 `--domain` 옵션에 현재 멤버십의 디렉터리 ID를 지정합니다.
+ DB 인스턴스에서 Kerberos 인증을 비활성화화려면 [modify-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) CLI 명령을 사용하여 `none` 옵션에 대해 `--domain`을 지정합니다.
+ 한 도메인에서 다른 도메인으로 DB 인스턴스를 이동하려면 [modify-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) CLI 명령을 사용하여 `--domain` 옵션에 대해 새 도메인의 도메인 식별자를 지정합니다.

## 도메인 멤버십 상태 보기
<a name="oracle-kerberos-managing.understanding"></a>

DB 인스턴스를 생성하거나 수정하면 해당 DB 인스턴스는 도메인의 멤버가 됩니다. 콘솔에서 또는 [describe-db-instances](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html) CLI 명령을 실행하여 DB 인스턴스에 대한 도메인 멤버십의 상태를 확인할 수 있습니다. DB 인스턴스의 상태는 다음 중 한 가지가 될 수 있습니다.
+ `kerberos-enabled` - DB 인스턴스에 Kerberos 인증이 활성화되어 있습니다.
+ `enabling-kerberos` - AWS에서 이 DB 인스턴스에 대한 Kerberos 인증 활성화를 진행 중입니다.
+ `pending-enable-kerberos` - 이 DB 인스턴스에 대한 Kerberos 인증 활성화가 보류 중입니다.
+ `pending-maintenance-enable-kerberos` - AWS에서 예약된 다음 유지 관리 기간에 DB 인스턴스에 대한 Kerberos 인증을 활성화하려 합니다.
+ `pending-disable-kerberos` - 이 DB 인스턴스에 대한 Kerberos 인증 비활성화가 보류 중입니다.
+ `pending-maintenance-disable-kerberos` - AWS에서 예약된 다음 유지 관리 기간에 DB 인스턴스에 대한 Kerberos 인증을 비활성화하려 합니다.
+ `enable-kerberos-failed` - 구성 문제로 인해 AWS에서 DB 인스턴스에 대해 Kerberos 인증을 활성화하지 못했습니다. DB 인스턴스 수정 명령을 다시 실행하기 전에 구성 문제를 해결하십시오.
+ `disabling-kerberos` - AWS에서 이 DB 인스턴스에 대한 Kerberos 인증 비활성화를 진행 중입니다.

네트워크 연결 문제 또는 잘못된 IAM 역할로 인해 Kerberos 인증 활성화 요청이 실패할 수 있습니다. DB 인스턴스를 생성하거나 수정할 때 Kerberos 인증 활성화 시도가 실패하면 올바른 IAM 역할을 사용하고 있는지 확인하세요. 그런 다음 DB 인스턴스를 수정하여 도메인에 조인하게 합니다.

**참고**  
Amazon RDS for Oracle을 사용한 Kerberos 인증에서만 트래픽을 도메인의 DNS 서버로 전송합니다. 다른 모든 DNS 요청은 Oracle을 실행 중인 DB 인스턴스에서 아웃바운드 네트워크 액세스로 취급됩니다. Amazon RDS for Oracle을 사용한 아웃바운드 네트워크 액세스에 대한 자세한 내용은 [사용자 지정 DNS 서버 설정](Appendix.Oracle.CommonDBATasks.System.md#Appendix.Oracle.CommonDBATasks.CustomDNS) 단원을 참조하십시오.

## Kerberos 키 강제 교체
<a name="oracle-kerberos-managing.rotation"></a>

비밀 키는 AWS Managed Microsoft AD와 Amazon RDS for Oracle DB 인스턴스 간에 공유됩니다. 이 키는 45일마다 자동으로 교체됩니다. 다음 Amazon RDS 절차를 사용하여 이 키를 강제로 회전할 수 있습니다.

```
SELECT rdsadmin.rdsadmin_kerberos_auth_tasks.rotate_kerberos_keytab AS TASK_ID FROM DUAL;
```

**참고**  
읽기 전용 복제본 구성에서 이 절차는 읽기 전용 복제본이 아닌 원본 DB 인스턴스에서만 사용할 수 있습니다.

`SELECT` 문은 `VARCHAR2` 데이터 형식으로 작업 ID를 반환합니다. 진행 중인 작업의 상태를 bdump 파일에서 볼 수 있습니다. 이 bdump 파일은 `/rdsdbdata/log/trace` 디렉터리에 위치합니다. 각 bdump 파일 이름은 다음 형식으로 되어 있습니다.

```
dbtask-task-id.log
```

작업의 출력 파일을 표시하여 결과를 볼 수 있습니다.

```
SELECT text FROM table(rdsadmin.rds_file_util.read_text_file('BDUMP','dbtask-task-id.log'));
```

*`task-id`*를 절차에서 반환된 작업 ID로 대체합니다.

**참고**  
작업은 비동기식으로 실행됩니다.

# Kerberos 인증을 사용하여 Oracle에 연결
<a name="oracle-kerberos-connecting"></a>

이 섹션에서는 [8단계: Oracle 클라이언트 구성](oracle-kerberos-setting-up.md#oracle-kerberos.setting-up.configure-oracle-client)에 설명된 대로 Oracle 클라이언트를 설정했다고 가정합니다. Kerberos 인증을 사용하여 Oracle DB에 연결하려면 Kerberos 인증 유형을 사용하여 로그인합니다. 예를 들어, 다음 예제에서와 같이 Oracle SQL Developer를 시작한 후 **Kerberos 인증**을 인증 유형으로 선택합니다.

![\[Oracle SQL Developer에서 데이터베이스 연결 새로 만들기/선택 대화 상자를 표시합니다. Kerberos 인증 확인란이 선택됩니다.\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/ora-kerberos-auth.png)


SQL\$1Plus에서 Kerberos 인증을 사용하여 Oracle에 연결하려면

1. 명령 프롬프트에서 다음 명령을 실행합니다.

   ```
   kinit username
   ```

   *`username`*을 사용자 이름으로 대체하고 프롬프트에서 Microsoft Active Directory에 저장된 사용자 암호를 입력합니다.

1. SQL\$1Plus를 열고 Oracle DB 인스턴스의 DNS 이름 및 포트 번호를 사용하여 연결합니다.

   SQL\$1Plus에서 Oracle DB 인스턴스에 연결하는 방법에 대한 자세한 내용은 [SQL\$1Plus를 사용하여 DB 인스턴스에 연결](USER_ConnectToOracleInstance.SQLPlus.md) 단원을 참조하십시오.

**작은 정보**  
네이티브 Windows 캐시를 사용하는 경우 sqlnet.ora 파일에서 `SQLNET.KERBEROS5_CC_NAME` 파라미터를 `OSMSFT://` 또는 `MSLSA`로 설정하여 Microsoft Active Directory에 저장된 자격 증명을 사용할 수도 있습니다.

# 인증서 및 Oracle Wallet을 사용하여 UTL\$1HTTP 액세스 구성
<a name="Oracle.Concepts.ONA"></a>

Amazon RDS는 RDS for Oracle DB 인스턴스에서 아웃바운드 네트워크 액세스를 지원합니다. DB 인스턴스를 네트워크에 연결하기 위해 다음 PL/SQL 패키지를 사용할 수 있습니다.

`UTL_HTTP`  
이 패키지는 SQL 및 PL/SQL에서 HTTP를 호출합니다. HTTP를 통해 인터넷의 데이터에 액세스하는 데 사용할 수 있습니다. 자세한 내용은 Oracle 설명서의 [UTL\$1HTTP](https://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/UTL_HTTP.html#GUID-A85D2D1F-90FC-45F1-967F-34368A23C9BB)를 참조하세요.

`UTL_TCP`  
이 패키지는 PL/SQL에서 TCP/IP 클라이언트 측 액세스 기능을 제공합니다. 이 패키지는 인터넷 프로토콜과 이메일을 사용하는 PL/SQL 애플리케이션에 유용합니다. 자세한 내용은 Oracle 설명서의 [UTL\$1TCP](https://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/UTL_TCP.html#GUID-348AFFE8-78B2-4217-AE73-384F46A1D292)를 참조하세요.

`UTL_SMTP`  
이 패키지는 클라이언트가 SMTP 서버로 이메일을 보낼 수 있도록 SMTP 명령에 대한 인터페이스를 제공합니다. 자세한 내용은 Oracle 설명서의 [UTL\$1SMTP](https://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/UTL_SMTP.html#GUID-F0065C52-D618-4F8A-A361-7B742D44C520)를 참조하세요.

다음 태스크를 완료하면 SSL 핸드셰이크 중에 클라이언트 인증 인증서가 필요한 웹 사이트에서 작동하도록 `UTL_HTTP.REQUEST`를 구성할 수 있습니다. Oracle Wallet 생성 명령과 `DBMS_NETWORK_ACL_ADMIN.APPEND_WALLET_ACE` 절차를 수정하여 웹 사이트에 대한 `UTL_HTTP` 액세스의 암호 인증을 구성할 수도 있습니다. 자세한 내용은 Oracle Database 설명서의 [DBMS\$1NETWORK\$1ACL\$1ADMIN](https://docs.oracle.com/en/database/oracle/oracle-database/21/arpls/DBMS_NETWORK_ACL_ADMIN.html)을 참조하세요.

**참고**  
SSL/TLS([Amazon Simple Email Service](https://aws.amazon.com/ses/) 포함)를 통해 이메일을 보낼 수 있도록 하는 `UTL_SMTP`에 대해 다음 태스크를 적용할 수 있습니다.

**Topics**
+ [UTL\$1HTTP 액세스 구성 구성 시 고려 사항](#utl_http-considerations)
+ [1단계: 웹 사이트의 루트 인증서 가져오기](#website-root-certificate)
+ [2단계: Oracle Wallet 생성](#create-oracle-wallet)
+ [3단계: RDS for Oracle 인스턴스로 Oracle Wallet 다운로드](#upload-wallet-to-instance)
+ [4단계: Oracle Wallet에 대한 사용자 권한 부여](#config-oracle-wallet-user)
+ [5단계: DB 인스턴스에서 웹 사이트에 대한 액세스 구성](#config-website-access)
+ [6단계: DB 인스턴스에서 웹 사이트로의 연결 테스트](#test_utl_http)

## UTL\$1HTTP 액세스 구성 구성 시 고려 사항
<a name="utl_http-considerations"></a>

액세스를 구성하기 전에 다음 사항을 고려하세요.
+ SMTP를 UTL\$1MAIL 옵션으로 사용할 수 있습니다. 자세한 내용은 [Oracle UTL\$1MAIL](Oracle.Options.UTLMAIL.md) 섹션을 참조하세요.
+ 원격 호스트의 DNS(Domain Name Server) 이름은 다음 중 어느 것이나 될 수 있습니다.
  + 공개적으로 확인할 수 있어야 함.
  + Amazon RDS DB 인스턴스의 엔드포인트.
  + 사용자 지정 DNS 서버를 통해 확인 가능 자세한 내용은 [사용자 지정 DNS 서버 설정](Appendix.Oracle.CommonDBATasks.System.md#Appendix.Oracle.CommonDBATasks.CustomDNS) 섹션을 참조하세요.
  + 동일한 VPC 또는 피어링된 VPC에 있는 Amazon EC2 인스턴스의 프라이빗 DNS 이름. 이 경우, 사용자 지정 DNS 서버를 통해 이름을 확인할 수 있어야 합니다. 또는 Amazon이 제공하는 DNS를 사용하기 위해 VPC 설정에서 `enableDnsSupport` 속성을 활성화하고 VPC 피어링 연결에 대한 DNS 확인 지원을 활성화할 수 있습니다. 자세한 내용은 [VPC에서 DNS 지원](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-dns.html#vpc-dns-support) 및 [VPC 피어링 연결 수정](https://docs.aws.amazon.com/vpc/latest/peering/working-with-vpc-peering.html#modify-peering-connections) 단원을 참조하십시오.
  + 원격 SSL/TLS 리소스에 안전하게 연결하기 위해 사용자 지정 Oracle Wallet을 생성하고 업로드하는 것이 좋습니다. Amazon S3와 Amazon RDS for Oracle의 통합을 사용하여 Oracle DB 인스턴스로 Amazon S3의 Wallet을 다운로드할 수 있습니다. Oracle에 대한 Amazon S3 통합에 대한 자세한 내용은 [Amazon S3 통합](oracle-s3-integration.md) 단원을 참조하십시오.
+ 각 인스턴스에 Oracle SSL 옵션이 구성된 경우 SSL/TLS 엔드포인트를 통해 Oracle DB 인스턴스 사이에 데이터베이스 링크를 설정할 수 있습니다. 추가 구성이 필요하지 않습니다. 자세한 내용은 [Oracle 보안 소켓 Layer](Appendix.Oracle.Options.SSL.md) 섹션을 참조하세요.

## 1단계: 웹 사이트의 루트 인증서 가져오기
<a name="website-root-certificate"></a>

RDS for Oracle DB 인스턴스가 웹 사이트에 대한 보안 연결을 설정하도록 루트 CA 인증서를 추가합니다. Amazon RDS는 루트 인증서를 사용하여 Oracle Wallet에 웹 사이트 인증서를 서명합니다.

다양한 방법으로 루트 인증서를 얻을 수 있습니다. 예를 들면, 다음을 수행할 수 있습니다.

1. 웹 서버를 사용하여 인증서로 보호되는 웹 사이트를 방문합니다.

1. 서명에 사용된 루트 인증서를 다운로드합니다.

AWS 서비스의 경우 루트 인증서는 일반적으로 [Amazon trust services 리포지토리](https://www.amazontrust.com/repository/)에 있습니다.

## 2단계: Oracle Wallet 생성
<a name="create-oracle-wallet"></a>

웹 서버 인증서와 클라이언트 인증 인증서를 모두 포함하는 Oracle Wallet을 생성합니다. RDS Oracle 인스턴스는 웹 서버 인증서를 사용하여 웹 사이트에 대한 보안 연결을 설정합니다. 웹 사이트는 Oracle 데이터베이스 사용자를 인증하기 위해 클라이언트 인증서를 필요로 합니다.

인증에 클라이언트 인증서를 사용하지 않고 보안 연결을 구성할 수 있습니다. 이 경우 다음 절차에서 Java KeyStore 단계를 건너뛸 수 있습니다.

**Oracle Wallet 생성**

1. 루트 및 클라이언트 인증서를 단일 디렉터리에 넣은 다음 이 디렉터리로 변경합니다.

1. .p12 클라이언트 인증서를 Java KeyStore로 변환합니다.
**참고**  
인증에 클라이언트 인증서를 사용하지 않는 경우 이 단계를 건너뛸 수 있습니다.

   다음 예에서는 *client\$1certificate.p12*라는 클라이언트 인증서를 *client\$1keystore.jks*라는 Java KeyStore로 변환합니다. 그러면 KeyStore가 Oracle Wallet에 포함됩니다. KeyStore 암호는 *P12PASSWORD*입니다.

   ```
   orapki wallet pkcs12_to_jks -wallet ./client_certificate.p12 -jksKeyStoreLoc ./client_keystore.jks -jksKeyStorepwd P12PASSWORD
   ```

1. 인증서 디렉터리와 다른 Oracle Wallet용 디렉터리를 생성합니다.

   다음 예에서는 `/tmp/wallet` 디렉터리를 생성합니다.

   ```
   mkdir -p /tmp/wallet
   ```

1. wallet 디렉터리에 Oracle Wallet을 생성합니다.

   다음 예에서는 Oracle Wallet 암호를 이전 단계에서 Java KeyStore에서 사용한 것과 동일한 암호인 *P12PASSWORD*로 설정합니다. 동일한 암호를 사용하면 편리하지만 필수는 아닙니다. `-auto_login` 파라미터가 자동 로그인 기능을 켜므로 액세스할 때마다 암호를 지정할 필요가 없습니다.
**참고**  
보안 모범 사례로 여기에 표시된 프롬프트 이외의 암호를 지정하는 것이 좋습니다.

   ```
   orapki wallet create -wallet /tmp/wallet -pwd P12PASSWORD -auto_login
   ```

1. Oracle Wallet에 Java KeyStore를 추가합니다.
**참고**  
인증에 클라이언트 인증서를 사용하지 않는 경우 이 단계를 건너뛸 수 있습니다.

   다음 예에서는 */tmp/wallet*이라는 Oracle Wallet에 KeyStore *client\$1keystore.jks*를 추가합니다. 이 예에서는 Java KeyStore와 Oracle Wallet에 대해 동일한 암호를 지정합니다.

   ```
   orapki wallet jks_to_pkcs12 -wallet /tmp/wallet -pwd P12PASSWORD -keystore ./client_keystore.jks -jkspwd P12PASSWORD
   ```

1. 대상 웹 사이트의 루트 인증서를 Oracle Wallet에 추가합니다.

   다음 예에서는 *Root\$1CA.cer*이라는 인증서를 추가합니다.

   ```
   orapki wallet add -wallet /tmp/wallet -trusted_cert -cert ./Root_CA.cer -pwd P12PASSWORD
   ```

1. 중간 인증서를 추가합니다.

   다음 예에서는 *Intermediate.cer*이라는 인증서를 추가합니다. 모든 중간 인증서를 로드하는 데 필요한 만큼 이 단계를 반복합니다.

   ```
   orapki wallet add -wallet /tmp/wallet -trusted_cert -cert ./Intermediate.cer -pwd P12PASSWORD
   ```

1. 새로 생성된 Oracle Wallet에 필요한 인증서가 있는지 확인합니다.

   ```
   orapki wallet display -wallet /tmp/wallet -pwd P12PASSWORD
   ```

## 3단계: RDS for Oracle 인스턴스로 Oracle Wallet 다운로드
<a name="upload-wallet-to-instance"></a>

이 단계에서는 Oracle Wallet을 Amazon S3에 업로드한 다음 Amazon S3에서 RDS for Oracle 인스턴스로 Wallet을 다운로드합니다.

**RDS for Oracle DB 인스턴스로 Oracle Wallet 다운로드**

1. Oracle과 Amazon S3 통합을 위한 사전 조건을 만족시키고 `S3_INTEGRATION` 옵션을 Oracle DB 인스턴스에 추가하십시오. 옵션의 IAM 역할에 사용 중인 Amazon S3 버킷에 대한 액세스 권한이 있어야 합니다.

   자세한 내용은 [Amazon S3 통합](oracle-s3-integration.md) 섹션을 참조하세요.

1. DB 인스턴스에 마스터 사용자로 로그인한 다음 Oracle Wallet을 보관할 Oracle 디렉터리를 생성합니다.

   다음 예에서는 *WALLET\$1DIR*이라는 Oracle 디렉터리를 생성합니다.

   ```
   EXEC rdsadmin.rdsadmin_util.create_directory('WALLET_DIR');
   ```

   자세한 내용은 [메인 데이터 스토리지 공간에서 디렉터리 생성 및 삭제](Appendix.Oracle.CommonDBATasks.Misc.md#Appendix.Oracle.CommonDBATasks.NewDirectories) 섹션을 참조하세요.

1. Amazon S3 버킷에 Oracle Wallet을 업로드합니다.

   지원되는 업로드 기술을 사용할 수 있습니다.

1. Oracle Wallet을 다시 업로드하는 경우 기존 Wallet을 삭제합니다. 그렇지 않은 경우 다음 단계로 건너뜁니다.

   다음 예에서는 *cwallet.sso*라는 기존 Wallet을 제거합니다.

   ```
   EXEC UTL_FILE.FREMOVE ('WALLET_DIR','cwallet.sso');
   ```

1. Amazon S3 버킷에서 Oracle DB 인스턴스로 Oracle Wallet을 다운로드합니다.

   다음 예에서는 *my\$1s3\$1bucket*이라는 Amazon S3 버킷에서 *WALLET\$1DIR*이라는 DB 인스턴스 디렉터리로 *cwallet.sso*라는 Wallet을 다운로드합니다.

   ```
   SELECT rdsadmin.rdsadmin_s3_tasks.download_from_s3(
         p_bucket_name    =>  'my_s3_bucket', 
         p_s3_prefix      =>  'cwallet.sso', 
         p_directory_name =>  'WALLET_DIR') 
      AS TASK_ID FROM DUAL;
   ```

1. (선택 사항) 암호로 보호된 Oracle Wallet을 다운로드합니다.

   Wallet을 사용할 때마다 암호를 요구하려는 경우에만 이 Wallet을 다운로드합니다. 다음 예에서는 암호로 보호된 Wallet *ewallet.p12*를 다운로드합니다.

   ```
   SELECT rdsadmin.rdsadmin_s3_tasks.download_from_s3(
         p_bucket_name    =>  'my_s3_bucket', 
         p_s3_prefix      =>  'ewallet.p12', 
         p_directory_name =>  'WALLET_DIR') 
      AS TASK_ID FROM DUAL;
   ```

1. DB 태스크의 상태를 확인합니다.

   다음 예에서 *dbtask-1234567890123-4567.log*를 이전 단계에서 반환된 태스크 ID로 대체합니다.

   ```
   SELECT TEXT FROM TABLE(rdsadmin.rds_file_util.read_text_file('BDUMP','dbtask-1234567890123-4567.log'));
   ```

1. Oracle Wallet을 저장하는 데 사용하는 디렉터리의 내용을 확인합니다.

   ```
   SELECT * FROM TABLE(rdsadmin.rds_file_util.listdir(p_directory => 'WALLET_DIR'));
   ```

   자세한 내용은 [DB 인스턴스 디렉터리의 파일 목록 표시](Appendix.Oracle.CommonDBATasks.Misc.md#Appendix.Oracle.CommonDBATasks.ListDirectories) 섹션을 참조하세요.

## 4단계: Oracle Wallet에 대한 사용자 권한 부여
<a name="config-oracle-wallet-user"></a>

새 데이터베이스 사용자를 생성하거나 기존 사용자를 구성할 수 있습니다. 두 경우 모두 인증서를 사용한 클라이언트 인증 및 보안 연결을 위해 Oracle Wallet에 액세스하도록 사용자를 구성해야 합니다.

**Oracle Wallet에 대한 사용자 권한 부여**

1. RDS for Oracle DB 인스턴스에 마스터 사용자로 로그인합니다.

1. 기존 데이터베이스 사용자를 구성하지 않으려는 경우 새 사용자를 생성합니다. 그렇지 않은 경우 다음 단계로 건너뜁니다.

   다음 예에서는 *my-user*라는 데이터베이스 사용자를 생성합니다.

   ```
   CREATE USER my-user IDENTIFIED BY my-user-pwd;
   GRANT CONNECT TO my-user;
   ```

1. 데이터베이스 사용자에게 Oracle Wallet이 포함된 디렉터리에 대한 권한을 부여합니다.

   다음 예에서는 사용자 *my-user* 에게 디렉터리 *WALLET\$1DIR*에 대한 읽기 액세스 권한을 부여합니다.

   ```
   GRANT READ ON DIRECTORY WALLET_DIR TO my-user;
   ```

1. 데이터베이스 사용자에게 `UTL_HTTP` 패키지를 사용할 수 있는 권한을 부여합니다.

   다음 PL/SQL 프로그램에서는 사용자 *my-user*에게 `UTL_HTTP` 액세스 권한을 부여합니다.

   ```
   BEGIN 
     rdsadmin.rdsadmin_util.grant_sys_object('UTL_HTTP', UPPER('my-user')); 
     END;
   /
   ```

1. 데이터베이스 사용자에게 `UTL_FILE` 패키지를 사용할 수 있는 권한을 부여합니다.

   다음 PL/SQL 프로그램에서는 사용자 *my-user*에게 `UTL_FILE` 액세스 권한을 부여합니다.

   ```
   BEGIN 
     rdsadmin.rdsadmin_util.grant_sys_object('UTL_FILE', UPPER('my-user')); 
     END;
   /
   ```

## 5단계: DB 인스턴스에서 웹 사이트에 대한 액세스 구성
<a name="config-website-access"></a>

이 단계에서는 `UTL_HTTP`, 업로드한 Oracle Wallet 및 클라이언트 인증서를 사용하여 대상 웹 사이트에 연결할 수 있도록 Oracle 데이터베이스 사용자를 구성합니다. 자세한 내용은 Oracle Database 설명서의 [Configuring Access Control to an Oracle Wallet](https://docs.oracle.com/en/database/oracle/oracle-database/19/dbseg/managing-fine-grained-access-in-pl-sql-packages-and-types.html#GUID-0BCB5925-A40F-4507-95F9-5DA4A1919EBD)(Oracle Wallet에 대한 액세스 제어 구성)을 참조하세요.

**RDS for Oracle DB 인스턴스에서 웹 사이트에 대한 액세스 구성**

1. RDS for Oracle DB 인스턴스에 마스터 사용자로 로그인합니다.

1. 보안 포트에 사용자 및 대상 웹 사이트에 대한 ACE(Host Access Control Entry)를 생성합니다.

   다음 예에서는 보안 포트 443에서 *secret.encrypted-website.com*에 액세스하도록 *my-user*를 구성합니다.

   ```
   BEGIN
     DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
       host       => 'secret.encrypted-website.com', 
       lower_port => 443,
       upper_port => 443,
       ace        => xs$ace_type(privilege_list => xs$name_list('http'),
                                 principal_name => 'my-user',
                                 principal_type => xs_acl.ptype_db)); 
                              -- If the program unit results in PLS-00201, set
                              -- the principal_type parameter to 2 as follows:
                              -- principal_type => 2));
   END;
   /
   ```
**중요**  
이전 프로그램 단위에서 다음 `PLS-00201: identifier 'XS_ACL' must be declared` 오류가 발생할 수 있습니다. 이 오류가 반환되면 값을 할당하는 줄을 다음 줄의 `principal_type`으로 바꾼 다음 프로그램 단위를 다시 실행하세요.  

   ```
   principal_type => 2));
   ```
PL/SQL 패키지 `XS_ACL`의 상수에 대한 자세한 내용은 Oracle Database 설명서의 [Real Application Security 관리자 및 개발자 안내서](https://docs.oracle.com/en/database/oracle/oracle-database/19/dbfsg/XS_ACL-package.html#GUID-A157FB28-FE23-4D30-AAEB-8224230517E7)를 참조하세요.**

   자세한 내용은 Oracle Database 설명서의 [Configuring Access Control for External Network Services](https://docs.oracle.com/en/database/oracle/oracle-database/19/dbseg/managing-fine-grained-access-in-pl-sql-packages-and-types.html#GUID-3D5B66BC-0277-4887-9CD1-97DB44EB5213)(외부 네트워크 서비스에 대한 액세스 제어 구성)를 참조하세요.

1. (선택 사항) 표준 포트에서 사용자 및 대상 웹 사이트에 대한 ACE를 만듭니다.

   일부 웹 페이지가 보안 포트(443) 대신 표준 웹 서버 포트(80)에서 제공되는 경우 표준 포트를 사용해야 할 수 있습니다.

   ```
   BEGIN
     DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
       host       => 'secret.encrypted-website.com', 
       lower_port => 80,
       upper_port => 80,
       ace        => xs$ace_type(privilege_list => xs$name_list('http'),
                                 principal_name => 'my-user',
                                 principal_type => xs_acl.ptype_db)); 
                              -- If the program unit results in PLS-00201, set
                              -- the principal_type parameter to 2 as follows:
                              -- principal_type => 2));
   END;
   /
   ```

1. 액세스 제어 항목이 있는지 확인합니다.

   ```
   SET LINESIZE 150
   COLUMN HOST FORMAT A40
   COLUMN ACL FORMAT A50
   
   SELECT HOST, LOWER_PORT, UPPER_PORT, ACL
     FROM DBA_NETWORK_ACLS
   ORDER BY HOST;
   ```

1. 데이터베이스 사용자에게 `UTL_HTTP` 패키지를 사용할 수 있는 권한을 부여합니다.

   다음 PL/SQL 프로그램에서는 사용자 *my-user*에게 `UTL_HTTP` 액세스 권한을 부여합니다.

   ```
   BEGIN 
     rdsadmin.rdsadmin_util.grant_sys_object('UTL_HTTP', UPPER('my-user')); 
     END;
   /
   ```

1. 관련 액세스 제어 목록이 있는지 확인합니다.

   ```
   SET LINESIZE 150
   COLUMN ACL FORMAT A50
   COLUMN PRINCIPAL FORMAT A20
   COLUMN PRIVILEGE FORMAT A10
   
   SELECT ACL, PRINCIPAL, PRIVILEGE, IS_GRANT,
          TO_CHAR(START_DATE, 'DD-MON-YYYY') AS START_DATE,
          TO_CHAR(END_DATE, 'DD-MON-YYYY') AS END_DATE
     FROM DBA_NETWORK_ACL_PRIVILEGES
   ORDER BY ACL, PRINCIPAL, PRIVILEGE;
   ```

1. 데이터베이스 사용자에게 클라이언트 인증에 인증서를 사용하고 연결에 Oracle Wallet을 사용할 수 있는 권한을 부여합니다.
**참고**  
인증에 클라이언트 인증서를 사용하지 않는 경우 이 단계를 건너뛸 수 있습니다.

   ```
   DECLARE
     l_wallet_path all_directories.directory_path%type;
   BEGIN
     SELECT DIRECTORY_PATH 
       INTO l_wallet_path 
       FROM ALL_DIRECTORIES
      WHERE UPPER(DIRECTORY_NAME)='WALLET_DIR';
     DBMS_NETWORK_ACL_ADMIN.APPEND_WALLET_ACE(
       wallet_path => 'file:/' || l_wallet_path,
       ace         =>  xs$ace_type(privilege_list => xs$name_list('use_client_certificates'),
                                   principal_name => 'my-user',
                                   principal_type => xs_acl.ptype_db));
   END;
   /
   ```

## 6단계: DB 인스턴스에서 웹 사이트로의 연결 테스트
<a name="test_utl_http"></a>

이 단계에서는 `UTL_HTTP`, 업로드한 Oracle Wallet 및 클라이언트 인증서를 사용하여 웹 사이트에 연결할 수 있도록 데이터베이스 사용자를 구성합니다.

**RDS for Oracle DB 인스턴스에서 웹 사이트에 대한 액세스 구성**

1. `UTL_HTTP` 권한이 있는 데이터베이스 사용자로 RDS for Oracle DB 인스턴스에 로그인합니다.

1. 대상 웹 사이트에 대한 연결이 호스트 주소를 확인할 수 있는지 확인합니다.

   다음 예에서는 *secret.encrypted-website.com*에서 호스트 주소를 가져옵니다.

   ```
   SELECT UTL_INADDR.GET_HOST_ADDRESS(host => 'secret.encrypted-website.com')
     FROM DUAL;
   ```

1. 실패한 연결을 테스트합니다.

   `UTL_HTTP`는 인증서가 있는 Oracle Wallet의 위치를 요구하기 때문에 다음 쿼리는 실패합니다.

   ```
   SELECT UTL_HTTP.REQUEST('secret.encrypted-website.com') FROM DUAL;
   ```

1. `UTL_HTTP.SET_WALLET`을 사용하고 `DUAL`에서 선택하여 웹 사이트 액세스를 테스트합니다.

   ```
   DECLARE
     l_wallet_path all_directories.directory_path%type;
   BEGIN
     SELECT DIRECTORY_PATH
       INTO l_wallet_path 
       FROM ALL_DIRECTORIES
      WHERE UPPER(DIRECTORY_NAME)='WALLET_DIR';
     UTL_HTTP.SET_WALLET('file:/' || l_wallet_path);
   END;
   /
   
   SELECT UTL_HTTP.REQUEST('secret.encrypted-website.com') FROM DUAL;
   ```

1. (선택 사항) 쿼리를 변수에 저장하고 `EXECUTE IMMEDIATE`를 사용하여 웹 사이트 액세스를 테스트합니다.

   ```
   DECLARE
     l_wallet_path all_directories.directory_path%type;
     v_webpage_sql VARCHAR2(1000);
     v_results     VARCHAR2(32767);
   BEGIN
     SELECT DIRECTORY_PATH
       INTO l_wallet_path 
       FROM ALL_DIRECTORIES
      WHERE UPPER(DIRECTORY_NAME)='WALLET_DIR';
     v_webpage_sql := 'SELECT UTL_HTTP.REQUEST(''secret.encrypted-website.com'', '''', ''file:/' ||l_wallet_path||''') FROM DUAL';
     DBMS_OUTPUT.PUT_LINE(v_webpage_sql);
     EXECUTE IMMEDIATE v_webpage_sql INTO v_results;
     DBMS_OUTPUT.PUT_LINE(v_results);
   END;
   /
   ```

1. (선택 사항) Oracle Wallet 디렉터리의 파일 시스템 위치를 찾습니다.

   ```
   SELECT * FROM TABLE(rdsadmin.rds_file_util.listdir(p_directory => 'WALLET_DIR'));
   ```

   이전 명령의 출력을 사용하여 HTTP 요청을 만듭니다. 예를 들어 디렉터리가 *rdsdbdata/userdirs/01*인 경우 다음 쿼리를 실행합니다.

   ```
   SELECT UTL_HTTP.REQUEST('https://secret.encrypted-website.com/', '', 'file://rdsdbdata/userdirs/01') 
   FROM   DUAL;
   ```

# RDS for Oracle에서 CDB 작업
<a name="oracle-multitenant"></a>

Oracle 멀티테넌트 아키텍처에서 컨테이너 데이터베이스(CDB)에는 고객이 만든 플러그형 데이터베이스(PDB)가 포함될 수 있습니다. CDB에 대한 자세한 내용은 Oracle Database 설명서의 [멀티테넌트 아키텍처 소개](https://docs.oracle.com/en/database/oracle/oracle-database/19/multi/introduction-to-the-multitenant-architecture.html#GUID-267F7D12-D33F-4AC9-AA45-E9CD671B6F22)를 참조하세요.

**Topics**
+ [RDS for Oracle CDB 개요](Oracle.Concepts.CDBs.md)
+ [RDS for Oracle CDB 구성](oracle-cdb.configuring.md)
+ [CDB 백업 및 복원](Oracle.Concepts.single-tenant.snapshots.md)
+ [RDS for Oracle 비CDB를 CDB로 변환](oracle-cdb-converting.md)
+ [단일 테넌트 구성을 다중 테넌트로 변환](oracle-single-tenant-converting.md)
+ [CDB 인스턴스에 RDS for Oracle 테넌트 데이터베이스 추가](oracle-cdb-configuring.adding.pdb.md)
+ [RDS for Oracle 테넌트 데이터베이스 수정](oracle-cdb-configuring.modifying.pdb.md)
+ [CDB에서 RDS for Oracle 테넌트 데이터베이스 삭제](oracle-cdb-configuring.deleting.pdb.md)
+ [테넌트 데이터베이스 세부 정보 보기](oracle-cdb-configuring.describing.pdb.md)
+ [CDB 업그레이드](Oracle.Concepts.single-tenant.upgrades.md)

# RDS for Oracle CDB 개요
<a name="Oracle.Concepts.CDBs"></a>

Oracle Database 19c 이상을 실행할 때 RDS for Oracle DB 인스턴스를 컨테이너 데이터베이스(CDB)로 생성할 수 있습니다. Oracle Database 21c부터는 모든 데이터베이스가 CDB입니다. CDB는 RDS for Oracle에서 테넌트 데이터베이스라고 하는 플러그형 데이터베이스(PDB)를 포함할 수 있다는 점에서 비CDB와 다릅니다. PDB는 애플리케이션에 별도의 데이터베이스로 나타나는 스키마와 개체의 휴대용 모음입니다.

CDB 인스턴스를 생성할 때 초기 테넌트 데이터베이스(PDB)를 생성합니다. RDS for Oracle에서는 클라이언트 애플리케이션이 CDB가 아닌 PDB와 상호 작용합니다. PDB에서의 경험은 비CDB에서의 경험과 대부분 동일합니다.

**Topics**
+ [CDB 아키텍처의 다중 테넌트 구성](#multi-tenant-configuration)
+ [CDB 아키텍처의 단일 테넌트 구성](#Oracle.Concepts.single-tenant)
+ [CDB 생성 및 변환 옵션](#oracle-cdb-creation-conversion)
+ [CDB의 사용자 계정 및 권한](#Oracle.Concepts.single-tenant.users)
+ [CDB의 파라미터 그룹 패밀리](#Oracle.Concepts.single-tenant.parameters)
+ [RDS for Oracle CDB 제한 사항](#Oracle.Concepts.single-tenant-limitations)

## CDB 아키텍처의 다중 테넌트 구성
<a name="multi-tenant-configuration"></a>

RDS for Oracle은 Oracle 멀티테넌트 아키텍처, 즉 CDB 아키텍처의 다중 테넌트 구성을 지원합니다.** 이 구성에서 RDS for Oracle CDB 인스턴스에는 데이터베이스 에디션 및 필요한 옵션 라이선스에 따라 1\$130개의 테넌트 데이터베이스가 포함될 수 있습니다. Oracle 데이터베이스의 경우 테넌트 데이터베이스는 PDB입니다. DB 인스턴스는 Oracle Database 릴리스 19.0.0.0.ru-2022-01.rur-2022.r1 이상을 사용해야 합니다.

**참고**  
Amazon RDS 구성은 Oracle DB 엔진뿐만 아니라 Amazon RDS의 기능이기 때문에 '멀티테넌트'가 아닌 '다중 테넌트'라고 합니다. 마찬가지로 RDS 용어 '테넌트'는 Oracle PDB뿐만 아니라 RDS 구성의 모든 테넌트를 나타냅니다. RDS 설명서에서 하이픈이 포함되지 않은 용어 'Oracle 멀티테넌트'는 온프레미스 및 RDS 배포 모두와 호환되는 Oracle 데이터베이스 CDB 아키텍처만을 의미합니다.

다음과 같은 설정을 구성할 수 있습니다.
+ 테넌트 데이터베이스 이름
+ 테넌트 데이터베이스 마스터 사용자 이름
+ 테넌트 데이터베이스 마스터 암호(선택적으로 Secrets Manager와 통합됨)
+ 테넌트 데이터베이스 문자 집합
+ 테넌트 데이터베이스 내셔널 문자 집합

테넌트 데이터베이스 문자 집합은 CDB 문자 집합과 다를 수 있습니다. 내셔널 문자 집합 역시 마찬가지입니다. 초기 테넌트 데이터베이스를 만든 후 RDS API를 사용하여 테넌트 데이터베이스를 생성, 수정 또는 삭제할 수 있습니다. CDB 이름은 기본값인 `RDSCDB`이며 변경할 수 없습니다. 자세한 내용은 [DB 인스턴스에 대한 설정](USER_CreateDBInstance.Settings.md) 및 [RDS for Oracle 테넌트 데이터베이스 수정](oracle-cdb-configuring.modifying.pdb.md)(을)를 참조하세요.

## CDB 아키텍처의 단일 테넌트 구성
<a name="Oracle.Concepts.single-tenant"></a>

RDS for Oracle은 Oracle 멀티테넌트 아키텍처의 레거시 구성인 단일 테넌트 구성을 지원합니다. 이 구성에서 RDS for Oracle CDB 인스턴스에는 테넌트(PDB)가 하나만 포함될 수 있습니다. 나중에 더 많은 PDB를 만들 수 있습니다.

## CDB 생성 및 변환 옵션
<a name="oracle-cdb-creation-conversion"></a>

Oracle Database 21c는 CDB만 지원하지만 Oracle Database 19c는 CDB와 비CDB를 모두 지원합니다. 모든 RDS for Oracle CDB 인스턴스는 다중 테넌트 구성과 단일 테넌트 구성을 모두 지원합니다.

### Oracle 데이터베이스 아키텍처를 위한 생성, 변환 및 업그레이드 옵션
<a name="oracle-cdb-creation-conversion.architecture"></a>

다음 테이블에는 RDS for Oracle 데이터베이스를 생성하고 업그레이드하기 위한 다양한 아키텍처 옵션이 나와 있습니다.


| 릴리스 | 데이터베이스 생성 옵션 | 아키텍처 변환 옵션 | 메이저 버전 업그레이드 대상 | 
| --- | --- | --- | --- | 
| Oracle Database 21c | CDB 아키텍처 전용 | 해당 사항 없음 | 해당 사항 없음 | 
| Oracle Database 19c | CDB 또는 비CDB 아키텍처 | 비CDB에서 CDB 아키텍처로 변환(2021년 4월 RU 이상) | Oracle Database 21c CDB | 

위 테이블에 표시된 것처럼 새 메이저 데이터베이스 버전에서는 비CDB를 CDB로 직접 업그레이드할 수 없습니다. 하지만 Oracle Database 19c 비CDB를 Oracle Database 19c CDB로 변환한 다음 Oracle Database 19c CDB를 Oracle Database 21c CDB로 업그레이드할 수 있습니다. 자세한 내용은 [RDS for Oracle 비CDB를 CDB로 변환](oracle-cdb-converting.md) 섹션을 참조하세요.

### CDB 아키텍처 구성을 위한 변환 옵션
<a name="oracle-cdb-creation-conversion.configuration"></a>

다음 테이블에는 RDS for Oracle DB 인스턴스의 아키텍처 구성 변환을 위한 다양한 옵션이 나와 있습니다.


| 현재 아키텍처 및 구성 | CDB 아키텍처의 단일 테넌트 구성으로 변환 | CDB 아키텍처의 다중 테넌트 구성으로 변환 | 비CDB 아키텍처로 변환 | 
| --- | --- | --- | --- | 
| 비CDB | 지원됨 | 지원\$1 | 해당 사항 없음 | 
| 단일 테넌트 구성을 사용하는 CDB | 해당 사항 없음 | 지원됨 | 지원되지 않음 | 
| 다중 테넌트 구성을 사용하는 CDB | 지원되지 않음 | 해당 사항 없음 | 지원되지 않음 | 

\$1 하나의 작업으로 비CDB를 다중 테넌트 구성으로 변환할 수 없습니다. 비CDB를 CDB로 변환할 경우 CDB는 단일 테넌트 구성입니다. 그런 다음 별도의 작업을 통해 단일 테넌트를 다중 테넌트 구성으로 변환할 수 있습니다.

## CDB의 사용자 계정 및 권한
<a name="Oracle.Concepts.single-tenant.users"></a>

Oracle 멀티테넌트 아키텍처에서 모든 사용자 계정은 일반 사용자 또는 로컬 사용자입니다. CDB 공통 사용자는 단일 ID와 암호가 CDB 루트와 모든 기존 및 미래의 PDB에 알려진 데이터베이스 사용자입니다. 반면 로컬 사용자는 단일 PDB에만 존재합니다.

RDS 마스터 사용자는 PDB의 로컬 사용자 계정으로, DB 인스턴스를 만들 때 이름을 지정합니다. 새 사용자 계정을 생성하는 경우 새로 생성된 사용자는 PDB에 상주하는 로컬 사용자도 됩니다. 사용자 계정을 사용하여 새 PDB를 생성하거나 기존 PDB의 상태를 수정할 수는 없습니다.

`rdsadmin` 사용자는 공통 사용자 계정입니다. 이 계정에 있는 RDS for Oracle 패키지를 실행할 수 있지만 `rdsadmin`으로 로그인할 수는 없습니다. 자세한 내용은 Oracle 설명서에서 [About Common Users and Local Users](https://docs.oracle.com/en/database/oracle/oracle-database/19/dbseg/managing-security-for-oracle-database-users.html#GUID-BBBD9904-F2F3-442B-9AFC-8ACDD9A588D8)를 참조하세요.

다중 테넌트 구성과 단일 테넌트 구성의 마스터 사용자에 대해서는 자체 관리형 자격 증명 또는 AWS Secrets Manager에 의해 관리되는 자격 증명을 사용할 수 있습니다. 단일 테넌트 구성에서는 관리형 마스터 암호에 `create-db-instance`와 같은 인스턴스 수준 CLI 명령을 사용합니다. 다중 테넌트 구성에서는 관리형 마스터 암호에 `create-tenant-database`와 같은 테넌트 데이터베이스 명령을 사용합니다. Secrets Manager 통합에 대한 자세한 내용은 [Secrets Manager를 사용하여 RDS for Oracle 테넌트 데이터베이스의 마스터 사용자 암호 관리](rds-secrets-manager.md#rds-secrets-manager-tenant) 섹션을 참조하세요.

## CDB의 파라미터 그룹 패밀리
<a name="Oracle.Concepts.single-tenant.parameters"></a>

CDB에는 자체 파라미터 패밀리 및 기본 파라미터 값이 있습니다. CDB 파라미터 그룹 패밀리는 다음과 같습니다.
+ oracle-ee-cdb-21
+ oracle-se2-cdb-21
+ oracle-ee-cdb-19
+ oracle-se2-cdb-19

## RDS for Oracle CDB 제한 사항
<a name="Oracle.Concepts.single-tenant-limitations"></a>

RDS for Oracle은 온프레미스 CDB에서 사용할 수 있는 기능 중 일부를 지원합니다.

### CDB 제한 사항
<a name="oracle-cdb-limitations.cdb"></a>

CBD 수준의 RDS for Oracle에는 다음과 같은 제한 사항이 적용됩니다.
+ CDB에 연결할 수 없습니다. 항상 CDB가 아니라 테넌트 데이터베이스(PDB)에 연결합니다. 비 CDB의 경우와 마찬가지로 PDB의 엔드포인트를 지정합니다. 유일한 차이점은 데이터베이스 이름에 *pdb\$1name*을 지정한다는 것입니다. 여기서 *pdb\$1name*은 PDB에 대해 선택한 이름입니다.
+ 다중 테넌트 구성의 CDB를 단일 테넌트 구성의 CDB로 변환할 수 없습니다. 다중 테넌트 구성으로의 변환은 단방향이며 되돌릴 수 없습니다.
+ DB 인스턴스가 19.0.0.0.ru-2022-01.rur-2022.r1 미만의 Oracle 데이터베이스 릴리스를 사용하는 경우 다중 테넌트 구성을 지원하거나 다중 테넌트 구성으로 변환할 수 없습니다.
+ CDB에서는 데이터베이스 활동 스트림을 사용할 수 없습니다.
+ `CDB$ROOT` 내부에서 감사를 활성화할 수 없습니다. 각 PDB 내에서 개별적으로 감사를 활성화해야 합니다.

### 테넌트 데이터베이스(PDB) 제한 사항
<a name="oracle-cdb-limitations.pdb"></a>

RDS for Oracle 다중 테넌트 구성의 테넌트 데이터베이스에는 다음과 같은 제한 사항이 적용됩니다.
+ 테넌트 데이터베이스 작업을 유지 관리 기간으로 연기할 수 없습니다. 모든 변경 사항은 즉시 적용됩니다.
+ 단일 테넌트 구성을 사용하는 CDB에는 테넌트 데이터베이스를 추가할 수 없습니다.
+ 한 번의 작업으로 여러 테넌트 데이터베이스를 추가하거나 수정할 수 없습니다. 한 번에 하나만 추가 또는 수정할 수 있습니다.
+ 테넌트 데이터베이스의 이름을 `CDB$ROOT` 또는 `PDB$SEED`로 수정할 수 없습니다.
+ CDB의 유일한 테넌트인 테넌트 데이터베이스는 삭제할 수 없습니다.
+ RDS for Oracle CDB 인스턴스에서 모든 DB 인스턴스 클래스 유형이 여러 PDB를 지원하기에 충분한 리소스를 보유한 것은 아닙니다. PDB 수가 증가하면 상대적으로 작은 인스턴스 클래스의 성능과 안정성에 영향을 미치고 대부분의 인스턴스 수준 작업(예: 데이터베이스 업그레이드)의 시간이 늘어납니다.
+ `rdsadmin.rdsadmin_util.rename_global_name`을 사용하여 PDB의 이름을 바꿀 수 없습니다. 대신 `modify-tenant-database` API를 사용해야 합니다.
+ 동일한 CDB에 여러 개의 AWS 계정을 사용하여 PDB를 만들 수 없습니다. PDB는 PDB가 호스팅되는 DB 인스턴스와 동일한 계정에서 소유해야 합니다.
+ CDB의 모든 PDB는 동일한 엔드포인트와 데이터베이스 리스너를 사용합니다.
+ 다음 작업은 PDB 수준에서는 지원되지 않지만 CDB 수준에서는 지원됩니다.
  + 백업 및 복구
  + 데이터베이스 업그레이드
  + 유지 관리 작업
+ 다음 기능은 PDB 수준에서는 지원되지 않지만 CDB 수준에서는 지원됩니다.
  + 옵션 그룹(옵션은 CDB 인스턴스의 모든 PDB에 설치됨)
  + 파라미터 그룹(모든 파라미터는 CDB 인스턴스와 연결된 파라미터 그룹에서 파생됨)
+ 온프레미스 CDB 아키텍처에서는 지원되지만 RSD for Oracle CDB에서는 지원되지 않는 PDB 수준 작업은 다음과 같습니다.
**참고**  
다음 목록이 전부는 아닙니다.
  + 애플리케이션 PDB
  + 프록시 PDB
  + PDB 시작 및 중지
  + PDB 연결 해제 및 연결

    데이터를 CDB 안팎으로 이전하려면 비CDB와 동일한 방법을 사용하세요. 데이터 마이그레이션에 대한 자세한 내용은 [Amazon RDS의 Oracle로 데이터 가져오기](Oracle.Procedural.Importing.md) 섹션을 참조하세요.
  + PDB 수준에서 옵션 설정

    PDB는 CDB 옵션 그룹의 옵션 설정을 상속합니다. 옵션 설정에 대한 자세한 내용은 [Amazon RDS의 파라미터 그룹](USER_WorkingWithParamGroups.md) 섹션을 참조하세요. 모범 사례는 [DB 파라미터 그룹 작업](CHAP_BestPractices.md#CHAP_BestPractices.DBParameterGroup) 섹션을 참조하세요.
  + PDB의 파라미터 구성

    PDB는 CDB의 파라미터 설정을 상속합니다. 옵션 설정에 대한 자세한 내용은 [Oracle DB 인스턴스에 옵션 추가](Appendix.Oracle.Options.md) 섹션을 참조하세요.
  + 동일한 CDB의 PDB에 대해 서로 다른 리스너 구성
  + Oracle Flashback 기능

# RDS for Oracle CDB 구성
<a name="oracle-cdb.configuring"></a>

CDB를 구성하는 방법은 비CDB를 구성하는 것과 비슷합니다.

**Topics**
+ [RDSfor Oracle CDB 인스턴스 생성](#Oracle.Concepts.single-tenant.creation)
+ [RDS for Oracle CDB의 PDB에 연결](#Oracle.Concepts.connecting.pdb)

## RDSfor Oracle CDB 인스턴스 생성
<a name="Oracle.Concepts.single-tenant.creation"></a>

RDS for Oracle에서 CDB를 만드는 방법은 비CDB 인스턴스를 만드는 방법과 거의 동일합니다. 차이점은 DB 인스턴스를 만들 때 Oracle 멀티테넌트 아키텍처를 선택하며 아키텍처 구성(다중 테넌트 또는 단일 테넌트)도 선택한다는 것입니다. 다중 테넌트 구성에서 CDB를 생성할 때 태그를 생성하면 RDS가 태그를 초기 테넌트 데이터베이스로 전파합니다. CDB를 만들려면 AWS Management Console, AWS CLI 또는 RDS API를 사용합니다.

### 콘솔
<a name="Oracle.Concepts.single-tenant.creation.console"></a>

**CDB 인스턴스를 생성하는 방법**

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)에서 Amazon RDS 콘솔을 엽니다.

1. Amazon RDS 콘솔의 오른쪽 상단에서 CDB 인스턴스를 생성하려는 AWS 리전을 선택합니다.

1. 탐색 창에서 **데이터베이스**를 선택합니다.

1. **데이터베이스 생성**을 선택합니다.

1. **Choose a database creation method(데이터베이스 생성 방법 선택)**에서 **Standard Create(표준 생성)**를 선택합니다.

1. **Engine options(엔진 옵션)**에서 **Oracle**을 선택합니다.

1. **데이터베이스 관리 유형**에서 **Amazon RDS**를 선택합니다.

1. **아키텍처 설정**에서 **Oracle 멀티테넌트 아키텍처**를 선택합니다.

1. **아키텍처 구성**에서 다음 중 하나를 수행합니다.
   + **다중 테넌트 구성**을 선택하고 다음 단계로 진행합니다.
   + **단일 테넌트 구성**을 선택하고 11단계로 건너뜁니다.

1. (다중 테넌트 구성) **테넌트 데이터베이스 설정**에서 다음과 같이 변경합니다.
   + **테넌트 데이터베이스 이름**에 초기 PDB의 이름을 입력합니다. PDB 이름은 CDB 이름(기본값 `RDSCDB`)과 달라야 합니다.
   + **테넌트 데이터베이스 마스터 사용자 이름**에 PDB의 마스터 사용자 이름을 입력합니다. 테넌트 데이터베이스 마스터 사용자 이름을 사용하여 CDB 자체에 로그인할 수 없습니다.
   + **자격 증명 관리**에서 다음 자격 증명 관리 옵션 중 하나를 선택합니다.
     + **에서 관리됨AWS Secrets Manager**

       관리형 암호는 인스턴스가 아닌 초기 테넌트 데이터베이스용입니다. **암호화 키 선택**에서 Secrets Manager가 만드는 KMS 키 또는 사용자가 만든 키를 선택합니다.
**참고**  
자격 증명을 관리하기 위한 가장 안전한 기법으로 AWS Secrets Manager를 사용하는 것이 좋습니다. 추가 요금이 발생합니다. 자세한 내용은 [Amazon RDS 및 AWS Secrets Manager를 통한 암호 관리](rds-secrets-manager.md) 섹션을 참조하세요.
     + **자체 관리형**

       암호를 지정하려면 **암호 자동 생성** 확인란을 선택 취소합니다(선택되어 있는 경우). **마스터 암호** 및 **마스터 암호 확인**에 동일한 암호를 입력합니다.
   + **테넌트 데이터베이스 문자 집합**에서 PDB의 문자 집합을 선택합니다. CDB 문자 집합과 다른 테넌트 데이터베이스 문자 집합을 선택할 수 있습니다.

     기본 PDB 문자 집합은 **AL32UTF8**입니다. 기본이 아닌 PDB 문자 집합을 선택하면 CDB 생성 속도가 느려질 수 있습니다.
**참고**  
만들기 작업에서는 다중 테넌트 데이터베이스를 지정할 수 없습니다. CDB는 만들어질 때 하나의 PDB를 가지고 있습니다. 별도의 작업으로 기존 CBD에 PDB를 추가할 수 있습니다.

1. (단일 테넌트 구성) [DB 인스턴스에 대한 설정](USER_CreateDBInstance.Settings.md)에 나열된 옵션에 따라 원하는 설정을 선택합니다.

   1. **Settings**(설정) 섹션에서 **Credential Settings**(보안 인증 정보 설정)를 엽니다. 뒤이어 다음과 같이 하세요.

     1. **마스터 사용자 이름**에 PDB의 로컬 사용자 이름을 입력합니다. 마스터 사용자 이름을 사용하여 CDB 루트에 로그인할 수 없습니다.

     1. **자격 증명 관리**에서 다음 자격 증명 관리 옵션 중 하나를 선택합니다.
        + **에서 관리됨AWS Secrets Manager**

          **암호화 키 선택**에서 Secrets Manager가 만드는 KMS 키 또는 사용자가 만든 키를 선택합니다.
**참고**  
자격 증명을 관리하기 위한 가장 안전한 기법으로 AWS Secrets Manager를 사용하는 것이 좋습니다. 추가 요금이 발생합니다. 자세한 내용은 [Amazon RDS 및 AWS Secrets Manager를 통한 암호 관리](rds-secrets-manager.md) 섹션을 참조하세요.
        + **자체 관리형**

          암호를 지정하려면 **암호 자동 생성** 확인란을 선택 취소합니다(선택되어 있는 경우). **마스터 암호** 및 **마스터 암호 확인**에 동일한 암호를 입력합니다.

1. 나머지 섹션에서 DB 인스턴스 설정을 지정합니다. 각 설정에 대한 자세한 내용은 [DB 인스턴스 설정](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_CreateDBInstance.Settings.html)을 참조하세요.

1. **데이터베이스 생성**을 선택합니다.

### AWS CLI
<a name="Oracle.Concepts.single-tenant.creation.cli"></a>

다중 테넌트 구성에서 CDB를 생성하려면 다음 파라미터와 함께 [create-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html) 명령을 사용합니다.
+ `--db-instance-identifier`
+ `--db-instance-class`
+ `--engine { oracle-ee-cdb | oracle-se2-cdb }`
+ `--master-username`
+ `--master-user-password` 또는 `--manage-master-user-password`
+ `--multi-tenant`(단일 테넌트 구성의 경우 `multi-tenant`를 지정하지 말거나 `--no-multi-tenant`를 지정하세요.)
+ `--allocated-storage`
+ `--backup-retention-period`

각 설정에 대한 자세한 내용은 [DB 인스턴스에 대한 설정](USER_CreateDBInstance.Settings.md) 섹션을 참조하세요.

다음 예에서는 다중 테넌트 구성에서 *my-cdb-inst*라는 RDS for Oracle DB 인스턴스를 생성합니다. `--no-multi-tenant`를 지정하거나 `--multi-tenant`를 지정하지 않는 경우 기본 CDB 구성은 단일 테넌트입니다. 엔진은 `oracle-ee`를 지정하는 `oracle-ee-cdb` 명령이며 `--multi-tenant`는 오류와 함께 실패합니다. 초기 테넌트 데이터베이스의 이름은 *mypdb*입니다.

**Example**  
대상 LinuxmacOS, 또는Unix:  

```
 1. aws rds create-db-instance \
 2.     --engine oracle-ee-cdb \
 3.     --db-instance-identifier my-cdb-inst \
 4.     --multi-tenant \
 5.     --db-name mypdb \
 6.     --allocated-storage 250 \
 7.     --db-instance-class db.t3.large \
 8.     --master-username pdb_admin \
 9.     --manage-master-user-password \
10.     --backup-retention-period 3
```
Windows의 경우:  

```
 1. aws rds create-db-instance ^
 2.     --engine oracle-ee-cdb ^
 3.     --db-instance-identifier my-cdb-inst ^
 4.     --multi-tenant ^
 5.     --db-name mypdb ^
 6.     --allocated-storage 250 ^
 7.     --db-instance-class db.t3.large ^
 8.     --master-username pdb_admin ^
 9.     --manage-master-user-password \ ^
10.     --backup-retention-period 3
```
보안 모범 사례로 여기에 표시된 프롬프트 이외의 암호를 지정하는 것이 좋습니다.
다음과 비슷한 출력이 생성됩니다. 데이터베이스 이름, 문자 집합, 내셔널 문자 집합 및 마스터 사용자 및 마스터 사용자 보안 암호는 출력에 포함되지 않습니다. `describe-tenant-databases` CLI 명령을 사용하여 이 정보를 볼 수 있습니다.  

```
 1. {
 2.     "DBInstance": {
 3.         "DBInstanceIdentifier": "my-cdb-inst",
 4.         "DBInstanceClass": "db.t3.large",
 5.         "MultiTenant": true,
 6.         "Engine": "oracle-ee-cdb",
 7.         "DBResourceId": "db-ABCDEFGJIJKLMNOPQRSTUVWXYZ",
 8.         "DBInstanceStatus": "creating",
 9.         "AllocatedStorage": 250,
10.         "PreferredBackupWindow": "04:59-05:29",
11.         "BackupRetentionPeriod": 3,
12.         "DBSecurityGroups": [],
13.         "VpcSecurityGroups": [
14.             {
15.                 "VpcSecurityGroupId": "sg-0a1bcd2e",
16.                 "Status": "active"
17.             }
18.         ],
19.         "DBParameterGroups": [
20.             {
21.                 "DBParameterGroupName": "default.oracle-ee-cdb-19",
22.                 "ParameterApplyStatus": "in-sync"
23.             }
24.         ],
25.         "DBSubnetGroup": {
26.             "DBSubnetGroupName": "default",
27.             "DBSubnetGroupDescription": "default",
28.             "VpcId": "vpc-1234567a",
29.             "SubnetGroupStatus": "Complete",
30.             ...
```

### RDS API
<a name="Oracle.Concepts.single-tenant.creation.api"></a>

Amazon RDS API를 사용하여 DB 인스턴스를 생성하려면 [CreateDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html) 작업을 호출합니다.

각 설정에 대한 자세한 내용은 [DB 인스턴스에 대한 설정](USER_CreateDBInstance.Settings.md) 단원을 참조하십시오.

## RDS for Oracle CDB의 PDB에 연결
<a name="Oracle.Concepts.connecting.pdb"></a>

SQL\$1Plus와 같은 유틸리티를 사용하여 PDB에 연결할 수 있습니다. 독립형 버전의 SQL\$1Plus를 포함하는 Oracle 인스턴트 클라이언트를 다운로드하려면 [Oracle 인스턴트 클라이언트 다운로드](https://www.oracle.com/database/technologies/instant-client/downloads.html)를 참조하세요.

PDB에 SQL\$1Plus를 연결하려면 다음 정보를 제공해야 합니다.
+ PDB 이름
+ 데이터베이스 사용자 이름 및 암호
+ DB 인스턴스의 엔드포인트
+ 포트 번호

이전 정보를 찾는 방법에 대한 자세한 내용은 [RDS for Oracle DB 인스턴스의 엔드포인트 찾기](USER_Endpoint.md) 섹션을 참조하세요.

**Example SQL\$1Plus를 사용하여 PDB에 연결하는 방법**  
다음 예에서는 마스터 사용자를 *master\$1user\$1name* 대신 사용하세요. 또한 DB 인스턴스를 엔드포인트로 대체한 다음, 포트 번호와 Oracle SID를 포함합니다. SID 값은 DB 인스턴스 식별자가 아니라 DB 인스턴스를 만들 때 지정한 PDB의 이름입니다.  
대상 LinuxmacOS, 또는Unix:  

```
1. sqlplus 'master_user_name@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=endpoint)(PORT=port))(CONNECT_DATA=(SID=pdb_name)))'
```
Windows의 경우:  

```
1. sqlplus master_user_name@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=endpoint)(PORT=port))(CONNECT_DATA=(SID=pdb_name)))
```
다음과 유사한 출력 화면이 표시되어야 합니다.  

```
SQL*Plus: Release 19.0.0.0.0 Production on Mon Aug 21 09:42:20 2021
```
사용자 암호를 입력하면 SQL 프롬프트가 표시됩니다.  

```
SQL>
```

**참고**  
`sqlplus username/password@LONGER-THAN-63-CHARS-RDS-ENDPOINT-HERE:1521/database-identifier`와 같은 짧은 형식의 연결 문자열(Easy Connect 또는 EZCONNECT)이 최대 문자 제한에 걸릴 수 있으며, 이런 문자열을 연결할 때 사용하면 안 됩니다.

# CDB 백업 및 복원
<a name="Oracle.Concepts.single-tenant.snapshots"></a>

RDS DB 스냅샷 또는 Recovery Manager(RMAN)를 사용하여 CDB를 백업하고 복원할 수 있습니다.

## DB 스냅샷을 사용한 CDB 백업 및 복원
<a name="br-cdb.db-snapshots"></a>

DB 스냅샷은 CDB와 비CDB 아키텍처에서 비슷하게 작동합니다. 주요 차이점은 다음과 같습니다.
+ CDB의 DB 스냅샷을 복원할 때는 CDB의 이름을 바꿀 수 없습니다. CDB 이름은 기본값인 `RDSCDB`이며 변경할 수 없습니다.
+ CDB의 DB 스냅샷을 복원할 때는 PDB의 이름을 바꿀 수 없습니다. [modify-tenant-database](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyTenantDatabase.html) 명령을 사용하여 PDB 이름을 수정할 수 있습니다.
+ 스냅샷에서 테넌트 데이터베이스를 찾으려면 CLI 명령 [describe-db-snapshot-tenant-databases](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBSnapshotTenantDatabases.html)를 사용합니다.
+ 다중 테넌트 아키텍처 구성을 사용하는 CDB 스냅샷에서는 테넌트 데이터베이스와 직접 상호 작용할 수 없습니다. DB 스냅샷을 복원하면 해당하는 모든 테넌트 데이터베이스가 복원됩니다.
+ RDS for Oracle은 테넌트 데이터베이스의 태그를 DB 스냅샷의 테넌트 데이터베이스에 암시적으로 복사합니다. 테넌트 데이터베이스를 복원하면 복원된 데이터베이스에 태그가 나타납니다.
+ DB 스냅샷을 복원하고 `--tags` 파라미터를 사용하여 새 태그를 지정하는 경우 새 태그가 기존 태그를 모두 덮어씁니다.
+ 태그가 있는 CDB 인스턴스의 DB 스냅샷을 만들고 `--copy-tags-to-snapshot`을 지정하는 경우 RDS for Oracle은 테넌트 데이터베이스의 태그를 스냅샷의 테넌트 데이터베이스로 복사합니다.

자세한 내용은 [Oracle Database 고려 사항](USER_RestoreFromSnapshot.md#USER_RestoreFromSnapshot.Oracle) 섹션을 참조하세요.

## RMAN을 사용한 CDB 백업 및 복원
<a name="br-cdb.rman"></a>

RMAN을 사용하여 CDB 또는 개별 테넌트 데이터베이스를 백업하고 복원하는 방법에 대한 자세한 내용은 [Oracle DB 인스턴스에 대한 공통 RMAN 작업 수행](Appendix.Oracle.CommonDBATasks.RMAN.md) 섹션을 참조하세요.

# RDS for Oracle 비CDB를 CDB로 변환
<a name="oracle-cdb-converting"></a>

`modify-db-instance` 명령을 통해 Oracle 데이터베이스의 아키텍처를 비CDB 아키텍처에서 Oracle 멀티테넌트 아키텍처(CDB 아키텍처)로 변경할 수 있습니다.** 대부분의 경우 새 CDB를 만들고 데이터를 가져오는 것보다 이 방법을 사용하는 것이 좋습니다. 변환 작업 시 다운타임이 발생합니다.

데이터베이스 엔진 버전을 업그레이드할 때 동일한 작업에서 데이터베이스 아키텍처를 변경할 수 없습니다. 따라서 Oracle Database 19c 비CDB를 Oracle Database 21c CDB로 업그레이드하려면 먼저 한 단계에서 비CDB를 CDB로 변환한 다음, 별도의 단계에서 19c CDB를 21c CDB로 업그레이드해야 합니다.

비CDB 변환 작업에는 다음과 같은 요구 사항이 있습니다.
+ DB 엔진 유형에는 `oracle-ee-cdb` 또는 `oracle-se2-cdb`를 지정해야 합니다. 이 값만 지원됩니다.
+ DB 엔진은 2021년 4월 이후 릴리스 업데이트(RU)가 포하된 Oracle Database 19c를 사용해야 합니다.

이 작업에는 다음과 같은 제한 사항이 있습니다.
+ CDB를 비CDB로 변환할 수 없습니다. 비CDB를 CDB로만 변환할 수 있습니다.
+ 하나의 `modify-db-instance` 호출로 비CDB를 다중 테넌트 구성으로 변환할 수 없습니다. 비CDB를 CDB로 변환한 후에 CDB는 단일 테넌트 구성이 됩니다. 단일 테넌트 구성을 다중 테넌트 구성으로 변환하려면 `modify-db-instance`를 다시 실행하세요. 자세한 내용은 [단일 테넌트 구성을 다중 테넌트로 변환](oracle-single-tenant-converting.md) 섹션을 참조하세요.
+ Oracle Data Guard가 사용 설정된 기본 또는 복제본 데이터베이스는 변환할 수 없습니다. 읽기 전용 복제본이 있는 비CDB를 변환하려면 먼저 읽기 전용 복제본을 모두 삭제하세요.
+ 동일한 작업에서 DB 엔진 버전을 업그레이드하고 비CDB를 CDB로 변환할 수 없습니다.

비CDB를 전환하기 전에 다음 사항을 고려하세요.
+ 옵션 및 파라미터 그룹에 대한 고려 사항은 DB 엔진 업그레이드와 동일합니다. 자세한 내용은 [Oracle 데이터베이스 업그레이드에 대한 고려 사항](USER_UpgradeDBInstance.Oracle.OGPG.md) 섹션을 참조하세요.
+ 관리형 마스터 암호를 사용하는 기존 비CDB 인스턴스를 단일 작업을 사용하여 단일 테넌트 인스턴스로 변환할 수 있습니다. 단일 테넌트 인스턴스는 관리형 암호를 상속합니다.
+ DB 인스턴스에 `OEMAGENT` 옵션이 설치되어 있는 경우 비CDB로 전환하기 전에 이 옵션을 제거하는 것이 가장 좋습니다. 비CDB를 CDB로 전환한 후 옵션을 다시 설치하세요. 자세한 내용은 [Oracle Management Agent for Enterprise Manager Cloud Control](Oracle.Options.OEMAgent.md) 섹션을 참조하세요.
+ 변환 프로세스 중에 RDS는 온라인 다시 실행 로그 크기를 기본값 128M으로 재설정합니다.

## 콘솔
<a name="oracle-cdb-converting.console"></a>

**비CDB를 CDB로 변환하는 방법**

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)에서 Amazon RDS 콘솔을 엽니다.

1. Amazon RDS 콘솔의 오른쪽 상단에서 DB 인스턴스가 상주하는 AWS 리전을 선택합니다.

1. 탐색 창에서 **데이터베이스**를 선택한 후 CDB 인스턴스로 변환하려는 비CDB 인스턴스를 선택합니다.

1. **수정**을 선택합니다.

1. **아키텍처 설정**에서 **Oracle 멀티테넌트 아키텍처**를 선택합니다. 변환 후 CDB는 단일 테넌트 구성이 됩니다.

1. (선택 사항) **DB 파라미터 그룹**에서 CDB 인스턴스의 새 파라미터 그룹을 선택합니다. DB 인스턴스를 변환할 때는 DB 인스턴스를 업그레이드할 때와 동일한 파라미터 그룹 고려 사항이 적용됩니다. 자세한 내용은 [파라미터 그룹 고려 사항](USER_UpgradeDBInstance.Oracle.OGPG.md#USER_UpgradeDBInstance.Oracle.OGPG.PG) 섹션을 참조하세요.

1. (선택 사항) **옵션 그룹**에서 CDB 인스턴스의 새로운 옵션 그룹을 선택합니다. DB 인스턴스를 변환할 때는 DB 인스턴스를 업그레이드할 때와 동일한 옵션 그룹 고려 사항이 적용됩니다. 자세한 내용은 [옵션 그룹 고려 사항](USER_UpgradeDBInstance.Oracle.OGPG.md#USER_UpgradeDBInstance.Oracle.OGPG.OG) 섹션을 참조하세요.

1. (선택 사항) **자격 증명 관리**에서 **AWS Secrets Manager에서 관리** 또는 **자체 관리**를 선택합니다. 자세한 내용은 [Secrets Manager를 통해 DB 인스턴스의 마스터 사용자 암호 관리](rds-secrets-manager.md#rds-secrets-manager-db-instance) 섹션을 참조하세요.

1. 원하는 대로 모두 변경되었으면 [**Continue**]를 선택하고 수정 사항 요약을 확인합니다.

1. (선택 사항) **즉시 적용**을 선택하여 변경 내용을 즉시 적용합니다. 일부의 경우 이 옵션을 선택하면 가동 중지 시간이 발생할 수 있습니다. 자세한 내용은 [수정 예약 설정 사용](USER_ModifyInstance.ApplyImmediately.md) 섹션을 참조하세요.

1. 확인 페이지에서 변경 내용을 검토합니다. 내용이 정확할 경우 **DB 인스턴스 수정**을 선택합니다.

   또는 **뒤로**를 선택하여 변경 내용을 편집하거나 **취소**를 선택하여 변경 내용을 취소합니다.

## AWS CLI
<a name="oracle-cdb-converting.cli"></a>

DB 인스턴스의 비CDB를 단일 테넌트 구성의 CDB로 변환하려면 [modify-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) AWS CLI 명령에서 `--engine`을 `oracle-ee-cdb` 또는 `oracle-se2-cdb`로 설정합니다. 자세한 내용은 [DB 인스턴스에 대한 설정](USER_ModifyInstance.Settings.md) 섹션을 참조하세요.

다음 예에서는 *my-non-cdb*라는 이름의 DB 인스턴스를 변환하고 사용자 지정 옵션 그룹과 파라미터 그룹을 지정합니다. 명령은 Secrets Manager를 사용한 암호 관리도 활성화합니다.

**Example**  
대상 LinuxmacOS, 또는Unix:  

```
aws rds modify-db-instance \
    --db-instance-identifier my-non-cdb \
    --engine oracle-ee-cdb \
    --option-group-name custom-option-group \
    --db-parameter-group-name custom-parameter-group \
    --manage-master-user-password
```
Windows의 경우:  

```
aws rds modify-db-instance ^
    --db-instance-identifier my-non-cdb ^
    --engine oracle-ee-cdb ^
    --option-group-name custom-option-group ^
    --db-parameter-group-name custom-parameter-group ^
    --manage-master-user-password
```

## RDS API
<a name="oracle-cdb-converting.api"></a>

비CDB를 CDB로 변환하려면 [ModifyDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html) RDS API 작업에서 `Engine`을 지정합니다.

# 단일 테넌트 구성을 다중 테넌트로 변환
<a name="oracle-single-tenant-converting"></a>

RDS for Oracle CDB의 아키텍처를 단일 테넌트 구성에서 다중 테넌트 구성으로 수정할 수 있습니다. 변환 전과 후에는 CDB에 하나의 단일 테넌트 데이터베이스(PDB)가 포함됩니다. DB 인스턴스의 태그는 변환 중에 만들어진 초기 테넌트 데이터베이스에 전파됩니다.

시작하기 전에 IAM 정책에 테넌트 데이터베이스를 만들 수 있는 권한이 있는지 확인합니다. 변환 중에 RDS for Oracle은 다음 메타데이터를 새 테넌트 데이터베이스로 마이그레이션합니다.
+ 마스터 사용자 이름
+ 관리형 마스터 암호(소스 CDB가 Secrets Manager와 통합되는 경우)
+  데이터베이스 이름
+ 문자 집합
+ 내셔널 문자 집합

변환 전에 `describe-db-instances` 명령을 사용하여 위의 정보를 볼 수 있습니다. 변환 전에 `describe-tenant-database` 명령을 사용하여 정보를 볼 수 있습니다.

단일 테넌트에서 다중 테넌트로의 변환에는 다음과 같은 제한 사항이 있습니다.
+ 다중 테넌트 구성으로 변환한 후에는 단일 테넌트 구성으로 다시 변환할 수 없습니다. 변환은 되돌릴 수 없습니다.
+ Oracle Data Guard가 사용 설정된 기본 또는 복제본 데이터베이스는 변환할 수 없습니다.
+ 동일한 작업에서 DB 엔진 버전을 업그레이드하고 다중 테넌트 구성으로 변환할 수 없습니다.
+ 변환 중에는 관리형 마스터 사용자 암호를 활성화하거나 비활성화할 수 없습니다.

## 콘솔
<a name="oracle-cdb.configuring.converting.console"></a>

**단일 테넌트 구성을 사용하는 CDB를 다중 테넌트 구성으로 변환하는 방법**

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)에서 Amazon RDS 콘솔을 엽니다.

1. Amazon RDS 콘솔의 오른쪽 상단에서 DB 인스턴스가 상주하는 AWS 리전을 선택합니다.

1. 탐색 창에서 **데이터베이스**를 선택한 후 CDB 인스턴스로 변환하려는 비CDB 인스턴스를 선택합니다.

1. **수정**을 선택합니다.

1. **아키텍처 설정**에서 **Oracle 멀티테넌트 아키텍처**를 선택합니다.

1. **아키텍처 구성**에서 **다중 테넌트 구성**을 선택합니다.

1. (선택 사항) **DB 파라미터 그룹**에서 CDB 인스턴스의 새 파라미터 그룹을 선택합니다. DB 인스턴스를 변환할 때는 DB 인스턴스를 업그레이드할 때와 동일한 파라미터 그룹 고려 사항이 적용됩니다.

1. (선택 사항) **옵션 그룹**에서 CDB 인스턴스의 새로운 옵션 그룹을 선택합니다. DB 인스턴스를 변환할 때는 DB 인스턴스를 업그레이드할 때와 동일한 옵션 그룹 고려 사항이 적용됩니다.

1. 원하는 대로 모두 변경되었으면 [**Continue**]를 선택하고 수정 사항 요약을 확인합니다.

1. **즉시 적용**을 선택합니다. 이 옵션은 다중 테넌트 구성으로 전환할 때 필요합니다. 경우에 따라 이 옵션을 선택하면 가동 중지가 발생할 수 있습니다.

1. 확인 페이지에서 변경 내용을 검토합니다. 내용이 정확할 경우 **DB 인스턴스 수정**을 선택합니다.

   또는 **뒤로**를 선택하여 변경 내용을 편집하거나 **취소**를 선택하여 변경 내용을 취소합니다.

## AWS CLI
<a name="oracle-cdb.configuring.converting.cli"></a>

단일 테넌트 구성을 사용하는 CDB를 다중 테넌트 구성으로 변환하려면 [modify-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) AWS CLI 명령에 `--multi-tenant`를 지정하세요.

다음 예시는 `my-st-cdb`라는 DB 인스턴스를 단일 테넌트 구성에서 다중 테넌트 구성으로 변환합니다. 옵션은 `--apply-immediately` 필수입니다.

**Example**  
대상 LinuxmacOS, 또는Unix:  

```
aws rds modify-db-instance --region us-east-1\
    --db-instance-identifier my-st-cdb \
    --multi-tenant \
    --apply-immediately
```
Windows의 경우:  

```
aws rds modify-db-instance --region us-east-1 ^
    --db-instance-identifier my-st-cdb ^
    --multi-tenant ^
    --apply-immediately
```
출력은 다음과 같습니다.  

```
{
    "DBInstance": {
        "DBInstanceIdentifier": "my-st-cdb",
        "DBInstanceClass": "db.r5.large",
        "MultiTenant": false,
        "Engine": "oracle-ee-cdb",
        "DBResourceId": "db-AB1CDE2FGHIJK34LMNOPRLXTXU",
        "DBInstanceStatus": "modifying",
        "MasterUsername": "admin",
        "DBName": "ORCL",
        ...
        "EngineVersion": "19.0.0.0.ru-2022-01.rur-2022-01.r1",
        "AutoMinorVersionUpgrade": true,
        "ReadReplicaDBInstanceIdentifiers": [],
        "LicenseModel": "bring-your-own-license",
        "OptionGroupMemberships": [
            {
                "OptionGroupName": "default:oracle-ee-cdb-19",
                "Status": "in-sync"
            }
        ],
        ...
        "PendingModifiedValues": {
            "MultiTenant": "true"
        }
    }
}
```

# CDB 인스턴스에 RDS for Oracle 테넌트 데이터베이스 추가
<a name="oracle-cdb-configuring.adding.pdb"></a>

RDS for Oracle 다중 테넌트 구성에서 테넌트 데이터베이스는 PDB입니다. 테넌트 데이터베이스를 추가하려면 다음 필수 조건을 충족해야 합니다.
+ CDB에 다중 테넌트 구성이 활성화되어 있습니다. 자세한 내용은 [CDB 아키텍처의 다중 테넌트 구성](Oracle.Concepts.CDBs.md#multi-tenant-configuration) 섹션을 참조하세요.
+ 테넌트 데이터베이스를 생성할 IAM 권한이 있습니다.

AWS Management Console, AWS CLI 또는 RDS API를 사용하여 테넌트 데이터베이스를 추가할 수 있습니다. 한 번의 작업으로 여러 테넌트 데이터베이스를 추가할 수 없습니다. 한 번에 하나씩 추가해야 합니다. CDB에 백업 보존이 활성화된 경우 Amazon RDS는 새 테넌트 데이터베이스를 추가하기 전과 후에 DB 인스턴스를 백업합니다. CDB에 읽기 전용 복제본이 있는 경우 기본 DB 인스턴스에만 테넌트 데이터베이스를 추가할 수 있습니다. Amazon RDS는 복제본에 테넌트 데이터베이스를 자동으로 생성합니다. 또한 테넌트 생성 전에 복제 상태가 검증되어 모든 복제본이 사용 가능하고 복제 지연 시간이 5분 미만인지 확인됩니다.

## 콘솔
<a name="oracle-cdb-configuring.adding.pdb.console"></a>

**DB 인스턴스에 테넌트 데이터베이스를 추가하는 방법**

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)에서 Amazon RDS 콘솔을 엽니다.

1. Amazon RDS 콘솔의 오른쪽 상단에서 테넌트 데이터베이스를 생성하려는 AWS 리전을 선택합니다.

1. 탐색 창에서 **Databases**(데이터베이스)를 선택합니다.

1. 테넌트 데이터베이스를 추가할 CDB 인스턴스를 선택합니다. DB 인스턴스는 CDB 아키텍처의 다중 테넌트 구성을 사용해야 합니다.

1. **작업**을 선택한 다음 **테넌트 데이터베이스 추가**를 선택합니다.

1. **테넌트 데이터베이스 설정**에서 다음을 수행합니다.
   + **테넌트 데이터베이스 이름**에 새 PDB의 이름을 입력합니다.
   + **테넌트 데이터베이스 마스터 사용자 이름**에 PDB의 마스터 사용자 이름을 입력합니다.
   + 다음 자격 증명 관리 옵션 중 하나를 선택합니다.
     + **에서 관리됨AWS Secrets Manager**

       **암호화 키 선택**에서 Secrets Manager가 만드는 KMS 키 또는 사용자가 만든 키를 선택합니다.
**참고**  
자격 증명을 관리하기 위한 가장 안전한 기법으로 AWS Secrets Manager를 사용하는 것이 좋습니다. 추가 요금이 적용됩니다. AWS Secrets Manager는 읽기 전용 복제본을 사용하는 인스턴스에는 지원되지 않습니다. 자세한 내용은 [Amazon RDS 및 AWS Secrets Manager를 통한 암호 관리](rds-secrets-manager.md) 섹션을 참조하세요.
     + **자체 관리형**

       암호를 지정하려면 **암호 자동 생성** 확인란을 선택 취소합니다(선택되어 있는 경우). **마스터 암호** 및 **마스터 암호 확인**에 동일한 암호를 입력합니다.
     + **추가 구성**에서 **초기 데이터베이스 이름**에 대한 PDB의 이름을 입력합니다. 이름이 기본값 `RDSCDB`인 CDB에는 이름을 지정할 수 없습니다.
   + **테넌트 데이터베이스 문자 집합**에서 PDB의 문자 집합을 선택합니다. 기본값은 **AL32UTF8**입니다. CDB 문자 집합과 다른 PDB 문자 집합을 선택할 수 있습니다. 인스턴스에 읽기 전용 복제본이 있는 경우 사용자 지정 문자 집합으로 테넌트를 생성할 수 없습니다. 필요한 경우 읽기 전용 복제본을 생성하기 전에 사용자 지정 문자 집합으로 테넌트를 생성할 수 있습니다.
   + **테넌트 데이터베이스 내셔널 문자 집합**에서 PDB의 내셔널 문자 집합을 선택합니다. 기본값은 **AL32UTF8**입니다. 내셔널 문자 집합은 `NCHAR` 데이터 유형(`NCHAR`, `NVARCHAR2` 및`NCLOB`)을 사용하는 열의 인코딩만 지정하고 데이터베이스 메타데이터에는 영향을 주지 않습니다.

   위 설정에 대한 자세한 내용은 [DB 인스턴스에 대한 설정](USER_CreateDBInstance.Settings.md) 섹션을 참조하세요.

1. **테넌트 추가**를 선택합니다.

## AWS CLI
<a name="oracle-cdb-configuring.adding.pdb.cli"></a>

AWS CLI를 사용하여 CDB에 테넌트 데이터베이스를 추가하려면 다음 필수 파라미터와 함께 [create-tenant-database](https://docs.aws.amazon.com/cli/latest/reference/rds/create-tenant-database.html) 명령을 사용합니다.
+ `--db-instance-identifier`
+ `--tenant-db-name`
+ `--master-username`
+ `--master-user-password`

다음 예에서는 *my-cdb-inst*라는 RDS for Oracle CDB 인스턴스에 *mypdb2*라는 테넌트 데이터베이스를 생성합니다. PDB 문자 집합은 `UTF-16`입니다.

**Example**  
대상 LinuxmacOS, 또는Unix:  

```
1. aws rds create-tenant-database --region us-east-1 \
2.     --db-instance-identifier my-cdb-inst \
3.     --tenant-db-name mypdb2 \
4.     --master-username mypdb2-admin \
5.     --master-user-password mypdb2-pwd \
6.     --character-set-name UTF-16
```
Windows의 경우:  

```
1. aws rds create-tenant-database --region us-east-1 \
2.     --db-instance-identifier my-cdb-inst ^
3.     --tenant-db-name mypdb2 ^
4.     --master-username mypdb2-admin ^
5.     --master-user-password mypdb2-pwd ^
6.     --character-set-name UTF-16
```
출력 결과는 다음과 비슷합니다.  

```
...}
    "TenantDatabase" :
         {
            "DbiResourceId" : "db-abc123",
            "TenantDatabaseResourceId" : "tdb-bac567",
            "TenantDatabaseArn" : "arn:aws:rds:us-east-1:123456789012:db:my-cdb-inst:mypdb2",
            "DBInstanceIdentifier" : "my-cdb-inst",
            "TenantDBName" : "mypdb2",
            "Status" : "creating",
            "MasterUsername" : "mypdb2",
            "CharacterSetName" : "UTF-16",
            ...
        }
}...
```

# RDS for Oracle 테넌트 데이터베이스 수정
<a name="oracle-cdb-configuring.modifying.pdb"></a>

CDB에 있는 테넌트 데이터베이스의 PDB 이름과 마스터 사용자 암호만 수정할 수 있습니다. 다음과 같은 요구 사항 및 제한 사항에 유의하세요.
+ DB 인스턴스의 테넌트 데이터베이스 설정을 수정하려면 테넌트 데이터베이스가 있어야 합니다.
+ 한 번의 작업으로 여러 테넌트 데이터베이스를 수정할 수 없습니다. 한 번에 하나의 테넌트 데이터베이스만 수정할 수 있습니다.
+ 테넌트 데이터베이스의 이름을 `CDB$ROOT` 또는 `PDB$SEED`로 변경할 수 없습니다.
+ DB 인스턴스에 읽기 전용 복제본이 있는 경우 기본 DB 인스턴스의 테넌트만 수정할 수 있습니다. 또한 테넌트 수정 전에 복제 상태가 검증되어 복제본이 사용 가능하고 복제 지연 시간이 5분 미만인지 확인됩니다.

AWS Management Console, AWS CLI 또는 RDS API를 사용하여 PDB를 수정할 수 있습니다.

## 콘솔
<a name="oracle-cdb-configuring.modifying.pdb.console"></a>

**테넌트 데이터베이스의 PDB 이름 또는 마스터 암호를 수정하는 방법**

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)에서 Amazon RDS 콘솔을 엽니다.

1. Amazon RDS 콘솔의 오른쪽 상단에서 테넌트 데이터베이스를 생성하려는 AWS 리전을 선택합니다.

1. 탐색 창에서 **Databases**(데이터베이스)를 선택합니다.

1. 데이터베이스 이름 또는 마스터 사용자 암호를 수정하려는 테넌트 데이터베이스를 선택합니다.

1. **수정**을 선택합니다.

1. **테넌트 데이터베이스 설정**에서 다음 중 원하는 작업을 수행합니다.
   + **테넌트 데이터베이스 이름**에 새 PDB의 새 이름을 입력합니다.
   + **테넌트 데이터베이스 마스터 암호**에 새 암호를 입력합니다.

1. **테넌트 수정**을 선택합니다.

## AWS CLI
<a name="oracle-cdb-configuring.modifying.pdb.cli"></a>

AWS CLI를 사용하여 테넌트 데이터베이스를 수정하려면 다음 파라미터를 사용하여 [modify-tenant-database](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-tenant-database.html) 명령을 호출합니다.
+ `--db-instance-identifier` *값*
+ `--tenant-db-name value`
+ `[--new-tenant-db-name value]`
+ `[--master-user-password value]`

다음 예에서는 테넌트 데이터베이스의 이름을 `pdb1`에서 `my-cdb-inst` DB 인스턴스의 `pdb-hr`로 변경합니다.

**Example**  
대상 LinuxmacOS, 또는Unix:  

```
1. aws rds modify-tenant-database --region us-east-1 \
2.     --db-instance-identifier my-cdb-inst \
3.     --tenant-db-name pdb1 \
4.     --new-tenant-db-name pdb-hr
```
Windows의 경우:  

```
1. aws rds modify-tenant-database --region us-east-1 ^
2.     --db-instance-identifier my-cdb-inst ^
3.     --tenant-db-name pdb1 ^
4.     --new-tenant-db-name pdb-hr
```
다음과 비슷한 출력이 생성됩니다.  

```
{
    "TenantDatabase" : {
        "DbiResourceId" : "db-abc123",
        "TenantDatabaseResourceId" : "tdb-bac567",
        "TenantDatabaseArn" : "arn:aws:rds:us-east-1:123456789012:db:my-cdb-inst:pdb1",
        "DBInstanceIdentifier" : "my-cdb-inst",
        "TenantDBName" : "pdb1",
        "Status" : "modifying",
        "MasterUsername" : "tenant-admin-user"
        "Port" : "6555",
        "CharacterSetName" : "UTF-16",
        "MaxAllocatedStorage" : "1000",
        "ParameterGroups": [
            {
                "ParameterGroupName": "pdb1-params",
                "ParameterApplyStatus": "in-sync"
            }
        ],
        "OptionGroupMemberships": [
            {
                "OptionGroupName": "pdb1-options",
                "Status": "in-sync"
            }
        ],
        "PendingModifiedValues": {
            "TenantDBName": "pdb-hr"
        }
    }
}
```

# CDB에서 RDS for Oracle 테넌트 데이터베이스 삭제
<a name="oracle-cdb-configuring.deleting.pdb"></a>

AWS Management Console, AWS CLI 또는 RDS API를 사용하여 테넌트 데이터베이스(PDB)를 삭제할 수 있습니다. 다음 사전 조건 및 제한 사항을 고려하세요.
+ 테넌트 데이터베이스와 DB 인스턴스가 있어야 합니다.
+ 삭제에 성공하려면 다음 상황 중 하나가 있어야 합니다.
  + 테넌트 데이터베이스와 DB 인스턴스를 사용할 수 있어야 합니다.
**참고**  
`delete-tenant-database` 명령을 실행하기 전에 테넌트 데이터베이스와 DB 인스턴스가 사용 가능한 상태였던 경우에만 최종 스냅샷을 만들 수 있습니다. 이 스냅샷은 DB 인스턴스에 읽기 전용 복제본이 있는 경우에만 기본 인스턴스에서 생성됩니다.
  + 테넌트 데이터베이스를 생성하고 있습니다.
  + DB 인스턴스가 테넌트 데이터베이스를 수정하고 있습니다.
  + DB 인스턴스에 읽기 전용 복제본이 있는 경우 이러한 제약 조건은 모든 복제본에 적용됩니다.
+ 한 번의 작업으로 여러 테넌트 데이터베이스를 삭제할 수 없습니다.
+ CDB의 유일한 테넌트인 테넌트 데이터베이스는 삭제할 수 없습니다.
+ 읽기 전용 복제본에서는 테넌트 데이터베이스를 삭제할 수 없으며 기본 DB 인스턴스에서는 테넌트만 삭제할 수 있습니다. 또한 테넌트 삭제 전에 복제 상태가 검증되어 복제 지연 시간이 5분 미만인지 확인됩니다.

## 콘솔
<a name="oracle-cdb-configuring.deleting.pdb.console"></a>

**테넌트 데이터베이스를 삭제하는 방법**

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)에서 Amazon RDS 콘솔을 엽니다.

1. 탐색 창에서 **데이터베이스**를 선택한 다음 삭제하려는 테넌트 데이터베이스를 선택합니다.

1. [** Actions**]에 대해 [**Delete**]를 선택합니다.

1. DB 인스턴스의 최종 DB 스냅샷을 생성하려면 **최종 스냅샷 생성 여부**를 선택합니다.

1. 최종 스냅샷을 생성하도록 선택한 경우 **최종 스냅샷 이름**을 입력합니다.

1. 상자에 **delete me**를 입력합니다.

1. **삭제**를 선택합니다.

## AWS CLI
<a name="oracle-cdb-configuring.deleting.pdb.cli"></a>

AWS CLI를 사용하여 테넌트 데이터베이스를 삭제하려면 다음 파라미터를 사용하여 [delete-tenant-database](https://docs.aws.amazon.com/cli/latest/reference/rds/delete-tenant-database.html) 명령을 호출합니다.
+ `--db-instance-identifier value`
+ `--tenant-db-name value`
+ `[--skip-final-snapshot | --no-skip-final-snapshot]`
+ `[--final-snapshot-identifier value]`

다음 예에서는 *my-cdb-inst*라는 CDB에서 *pdb-test*라는 테넌트 데이터베이스를 삭제합니다. 기본적으로 이 작업은 최종 스냅샷을 생성합니다.

**Example**  
대상 LinuxmacOS, 또는Unix:  

```
1. aws rds delete-tenant-database --region us-east-1 \
2.     --db-instance-identifier my-cdb-inst \
3.     --tenant-db-name pdb-test \
4.     --final-snapshot-identifier final-snap-pdb-test
```
Windows의 경우:  

```
1. aws rds delete-tenant-database --region us-east-1 ^
2.     --db-instance-identifier my-cdb-inst ^
3.     --tenant-db-name pdb-test ^
4.     --final-snapshot-identifier final-snap-pdb-test
```
다음과 비슷한 출력이 생성됩니다.  

```
{
    "TenantDatabase" : {
        "DbiResourceId" : "db-abc123",
        "TenantDatabaseResourceId" : "tdb-bac456",
        "TenantDatabaseArn" : "arn:aws:rds:us-east-1:123456789012:db:my-cdb-inst:pdb-test",
        "DBInstanceIdentifier" : "my-cdb-inst",
        "TenantDBName" : "pdb-test",
        "Status" : "deleting",
        "MasterUsername" : "pdb-test-admin"
        "Port" : "6555",
        "CharacterSetName" : "UTF-16",
        "MaxAllocatedStorage" : "1000",
        "ParameterGroups": [
            {
                "ParameterGroupName": "tenant-1-params",
                "ParameterApplyStatus": "in-sync"
            }
        ],
        "OptionGroupMemberships": [
            {
                "OptionGroupName": "tenant-1-options",
                "Status": "in-sync"
            }
        ]
    }
}
```

# 테넌트 데이터베이스 세부 정보 보기
<a name="oracle-cdb-configuring.describing.pdb"></a>

비CDB 또는 CDB의 경우와 동일한 방식으로 테넌트 데이터베이스에 대한 세부 정보를 볼 수 있습니다.

## 콘솔
<a name="oracle-cdb-configuring.describing.pdb.console"></a>

**테넌트 데이터베이스에 대한 세부 정보를 보는 방법**

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)에서 Amazon RDS 콘솔을 엽니다.

1. Amazon RDS 콘솔의 오른쪽 상단에서 DB 인스턴스가 상주하는 AWS 리전을 선택합니다.

1. 탐색 창에서 **Databases**(데이터베이스)를 선택합니다.  
![\[CDB에 대한 세부 정보 확인\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/cdb-list.png)

   위 이미지에서 단독 테넌트 데이터베이스(PDB)는 DB 인스턴스의 하위 데이터베이스로 나타납니다.

1. 데이터베이스의 이름을 선택합니다.  
![\[PDB에 대한 세부 정보 확인\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/pdb-details.png)

## AWS CLI
<a name="oracle-cdb-configuring.describing.pdb.cli"></a>

PDB에 대한 세부 정보를 보려면 [describe-tenant-databases](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-tenant-databases.html) 명령을 사용하세요.

이 예에서는 지정된 리전의 모든 테넌트 데이터베이스를 설명합니다.

**Example**  
대상 LinuxmacOS, 또는Unix:  

```
1. aws rds describe-tenant-databases --region us-east-1
```
Windows의 경우:  

```
1. aws rds describe-tenant-databases --region us-east-1
```
다음과 비슷한 출력이 생성됩니다.  

```
    "TenantDatabases" : [
         {
            "DBInstanceIdentifier" : "my-cdb-inst",
            "TenantDBName" : "pdb-test",
            "Status" : "available",
            "MasterUsername" : "pdb-test-admin",
            "DbiResourceId" : "db-abc123",
            "TenantDatabaseResourceId" : "tdb-bac456",
            "TenantDatabaseArn" : "arn:aws:rds:us-east-1:123456789012:db:my-cdb-inst:pdb-test",
            "CharacterSetName": "AL32UTF8",
            "NcharCharacterSetName": "AL16UTF16",
            "DeletionProtection": false,
            "PendingModifiedValues": {
                 "MasterUserPassword": "****"
            },
            "TagList": []
         },
         {

            "DBInstanceIdentifier" : "my-cdb-inst2",
            "TenantDBName" : "pdb-dev",
            "Status" : "modifying",
            "MasterUsername" : "masterrdsuser"
            "DbiResourceId" : "db-xyz789",
            "TenantDatabaseResourceId" : "tdb-ghp890",
            "TenantDatabaseArn" : "arn:aws:rds:us-east-1:123456789012:db:my-cdb-inst2:pdb-dev",
            "CharacterSetName": "AL32UTF8",
            "NcharCharacterSetName": "AL16UTF16",
            "DeletionProtection": false,
            "PendingModifiedValues": {
                 "MasterUserPassword": "****"
            },
            "TagList": []
         },
         ... other truncated data
```

다음 예에서는 지정된 리전의 `my-cdb-inst` DB 인스턴스에 있는 테넌트 데이터베이스를 설명합니다.

**Example**  
대상 LinuxmacOS, 또는Unix:  

```
1. aws rds describe-tenant-databases --region us-east-1 \
2.     --db-instance-identifier my-cdb-inst
```
Windows의 경우:  

```
1. aws rds describe-tenant-databases --region us-east-1 ^
2.     --db-instance-identifier my-cdb-inst
```
다음과 비슷한 출력이 생성됩니다.  

```
{
    "TenantDatabase": {
        "TenantDatabaseCreateTime": "2023-10-19T23:55:30.046Z",
        "DBInstanceIdentifier": "my-cdb-inst",
        "TenantDBName": "pdb-hr",
        "Status": "creating",
        "MasterUsername": "tenant-admin-user",
        "DbiResourceId": "db-abc123",
        "TenantDatabaseResourceId": "tdb-bac567",
        "TenantDatabaseARN": "arn:aws:rds:us-west-2:579508833180:pdb-hr:tdb-abcdefghi1jklmno2p3qrst4uvw5xy6zabc7defghi8jklmn90op",
        "CharacterSetName": "AL32UTF8",
        "NcharCharacterSetName": "AL16UTF16",
        "DeletionProtection": false,
        "PendingModifiedValues": {
            "MasterUserPassword": "****"
        },
        "TagList": [
            {
                "Key": "TEST",
                "Value": "testValue"
            }
        ]
    }
}
```

다음 예에서는 미국 동부(버지니아 북부) 리전의 `my-cdb-inst` DB 인스턴스에 있는 `pdb1` 테넌트 데이터베이스를 설명합니다.

**Example**  
대상 LinuxmacOS, 또는Unix:  

```
1. aws rds describe-tenant-databases --region us-east-1 \
2. --db-instance-identifier my-cdb-inst \
3. --tenant-db-name pdb1
```
Windows의 경우:  

```
1. aws rds describe-tenant-databases --region us-east-1 ^
2. --db-instance-identifier my-cdb-inst ^
3. --tenant-db-name pdb1
```
다음과 비슷한 출력이 생성됩니다.  

```
{
    "TenantDatabases" : [
        {
            "DbiResourceId" : "db-abc123",
            "TenantDatabaseResourceId" : "tdb-bac567",
            "TenantDatabaseArn" : "arn:aws:rds:us-east-1:123456789012:db:my-cdb-inst:pdb1"
            "DBInstanceIdentifier" : "my-cdb-inst",
            "TenantDBName" : "pdb1",
            "Status" : "ACTIVE",
            "MasterUsername" : "masterawsuser"
            "Port" : "1234",
            "CharacterSetName": "UTF-8",
            "ParameterGroups": [
                {
                    "ParameterGroupName": "tenant-custom-pg",
                    "ParameterApplyStatus": "in-sync"
                }
            ],
            {
            "OptionGroupMemberships": [
                {
                    "OptionGroupName": "tenant-custom-og",
                    "Status": "in-sync"
                }
            ]
         }
    ]
}
```

# CDB 업그레이드
<a name="Oracle.Concepts.single-tenant.upgrades"></a>

CDB를 다른 Oracle Database 릴리스로 업그레이드할 수 있습니다. 예를 들어 Oracle Database 19c CDB를 Oracle Database 21c CDB로 업그레이드할 수 있습니다. 업그레이드 중에는 데이터베이스 아키텍처를 변경할 수 없습니다. 따라서 비CDB를 CDB로 업그레이드하거나 CDB를 비CDB로 업그레이드할 수 없습니다.

CDB를 CDB로 업그레이드하는 절차는 비CDB를 비CDB로 업그레이드하는 절차와 동일합니다. 자세한 내용은 [RDS for Oracle DB 엔진 업그레이드](USER_UpgradeDBInstance.Oracle.md) 단원을 참조하십시오.

# RDS for Oracle DB 인스턴스 관리
<a name="Appendix.Oracle.CommonDBATasks"></a>

다음은 RDS for Oracle DB 인스턴스와 관련하여 수행하는 일반적인 관리 작업입니다. 일부 작업은 모든 RDS DB 인스턴스에서 동일합니다. 다른 작업은 RDS for Oracle에만 해당됩니다.

다음 작업은 모든 RDS 데이터베이스에 공통적으로 적용되지만 Oracle 데이터베이스의 경우 특별한 고려 사항이 있습니다. 예를 들어, Oracle 클라이언트 SQL\$1Plus 및 SQL Developer를 사용하여 Oracle 데이터베이스에 연결합니다.


****  

| 작업 영역 | 관련 설명서 | 
| --- | --- | 
|  **인스턴스 클래스, 스토리지 및 PIOPS** 프로덕션 인스턴스를 생성하는 경우 Amazon RDS에서 인스턴스 클래스, 스토리지 유형 및 프로비저닝된 IOPS가 작동하는 방식을 알아봅니다.  |  [RDS for Oracle DB 인스턴스 클래스](Oracle.Concepts.InstanceClasses.md) [Amazon RDS 스토리지 유형](CHAP_Storage.md#Concepts.Storage)  | 
|  **다중 AZ 배포** 프로덕션 DB 인스턴스에서는 다중 AZ 배포를 사용해야 합니다. 다중 AZ 배포는 DB 인스턴스를 위해 향상된 가용성, 데이터 내구성 및 내결함성을 제공합니다.  |  [Amazon RDS에 대한 다중 AZ 배포 구성 및 관리](Concepts.MultiAZ.md)  | 
|  ** Amazon VPC** AWS 계정에 기본 Virtual Private Cloud(VPC)가 있는 경우에는 DB 인스턴스가 기본 VPC 내부에 자동으로 생성됩니다. 계정에 기본 VPC가 없는데 VPC에 DB 인스턴스를 생성하려면 VPC와 서브넷 그룹을 생성한 후 인스턴스를 생성합니다.  |  [VPC에서 DB 인스턴스를 사용한 작업](USER_VPC.WorkingWithRDSInstanceinaVPC.md)  | 
|  **보안 그룹** 기본적으로 DB 인스턴스는 액세스를 막는 방화벽을 사용합니다. 따라서 DB 인스턴스에 액세스하기 위한 알맞은 IP 주소와 네트워크 구성으로 보안 그룹을 생성해야 합니다.  |  [보안 그룹을 통한 액세스 제어](Overview.RDSSecurityGroups.md)  | 
|  **파라미터 그룹** DB 인스턴스에 특정 데이터베이스 파라미터가 필요할 경우, 파라미터 그룹을 만든 후 DB 인스턴스를 만듭니다.  |  [Amazon RDS의 파라미터 그룹](USER_WorkingWithParamGroups.md)  | 
|  **옵션 그룹 수** DB 인스턴스에 특정 데이터베이스 옵션이 필요할 경우, 옵션 그룹을 생성한 후 DB 인스턴스를 생성합니다.  |  [Oracle DB 인스턴스에 옵션 추가](Appendix.Oracle.Options.md)  | 
|  **DB 인스턴스에 연결** 보안 그룹을 생성하고 이를 DB 인스턴스에 연결한 후, Oracle SQL\$1Plus와 같은 표준 SQL 클라이언트 애플리케이션을 사용하여 DB 인스턴스에 연결할 수 있습니다.  |  [Oracle DB 인스턴스에 연결](USER_ConnectToOracleInstance.md)  | 
|  **백업 및 복원** DB 인스턴스를 구성하여 자동 백업을 생성하거나 수동 스냅샷을 생성한 다음 백업 또는 스냅샷에서 인스턴스를 복원할 수 있습니다.  |  [데이터 백업, 복원 및 내보내기](CHAP_CommonTasks.BackupRestore.md)  | 
|  **모니터링** CloudWatch Amazon RDS 측정치, 이벤트 및 향상된 모니터링 기능을 통해 Oracle DB 인스턴스를 모니터링할 수 있습니다.  |  [Amazon RDS 콘솔에서 지표 보기](USER_Monitoring.md) [Amazon RDS 이벤트 보기](USER_ListEvents.md)  | 
|  **로그 파일** Oracle DB 인스턴스의 로그 파일에 액세스할 수 있습니다.  |  [Amazon RDS 로그 파일 모니터링](USER_LogAccess.md)  | 

다음에는 RDS Oracle에 대한 일반적인 DBA 태스크의 Amazon RDS 특정 구현에 대한 설명을 확인할 수 있습니다. 관리형 서비스 환경을 제공하기 위해 Amazon RDS는 DB 인스턴스에 대해 shell 액세스를 제공하지 않습니다. 또한 RDS는 고급 권한이 필요한 특정 시스템 절차와 테이블에 대한 액세스를 제한합니다. 많은 태스크에서는 Amazon RDS 전용 도구인 `rdsadmin` 패키지를 실행하여 데이터베이스를 관리할 수 있습니다.

다음은 Oracle을 실행 중인 DB 인스턴스에 대한 공통 DBA 작업입니다.
+ [시스템 작업](Appendix.Oracle.CommonDBATasks.System.md)  
****    
<a name="dba-tasks-oracle-system-reference"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/Appendix.Oracle.CommonDBATasks.html)

 
+ [데이터베이스 작업](Appendix.Oracle.CommonDBATasks.Database.md)  
****    
<a name="dba-tasks-oracle-database-reference"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/Appendix.Oracle.CommonDBATasks.html)

 
+ [로그 작업](Appendix.Oracle.CommonDBATasks.Log.md)  
****    
<a name="dba-tasks-oracle-log-reference"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/Appendix.Oracle.CommonDBATasks.html)

 
+ [RMAN 작업](Appendix.Oracle.CommonDBATasks.RMAN.md)  
****    
<a name="dba-tasks-oracle-rman-reference"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/Appendix.Oracle.CommonDBATasks.html)

 
+ [Oracle Scheduler 작업](Appendix.Oracle.CommonDBATasks.Scheduler.md)  
****    
<a name="dba-tasks-oracle-scheduler-reference"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/Appendix.Oracle.CommonDBATasks.html)

 
+ [문제 진단](Appendix.Oracle.CommonDBATasks.Diagnostics.md)  
****    
<a name="dba-tasks-oracle-diagnostic-reference"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/Appendix.Oracle.CommonDBATasks.html)

 
+ [기타 작업](Appendix.Oracle.CommonDBATasks.Misc.md)  
****    
<a name="dba-tasks-oracle-misc-reference"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/Appendix.Oracle.CommonDBATasks.html)

 

Amazon S3과 Oracle의 통합 및 OEM 관리 에이전트 데이터베이스 작업 실행에 Amazon RDS 프로시저를 사용할 수도 있습니다. 자세한 내용은 [Amazon S3 통합](oracle-s3-integration.md) 및 [Management Agent를 사용하여 데이터베이스 작업 수행](Oracle.Options.OEMAgent.md#Oracle.Options.OEMAgent.DBTasks)(을)를 참조하세요.

# Oracle DB 인스턴스에 대한 공통 시스템 작업 수행
<a name="Appendix.Oracle.CommonDBATasks.System"></a>

그 다음에는 Oracle을 실행하는 Amazon RDS DB 인스턴스에서 시스템과 관련된 특정 공통 DBA 작업을 수행하는 방법을 알아봅니다. 관리형 서비스 환경을 제공하기 위해 Amazon RDS는 DB 인스턴스에 대해 shell 액세스를 제공하지 않으며, 고급 권한이 필요한 특정 시스템 절차와 테이블에 대한 액세스를 제한합니다.

**Topics**
+ [세션 분리](Appendix.Oracle.CommonDBATasks.DisconnectingSession.md)
+ [세션 종료](Appendix.Oracle.CommonDBATasks.KillingSession.md)
+ [세션에서 SQL 문 취소](Appendix.Oracle.CommonDBATasks.CancellingSQL.md)
+ [제한 세션 활성화 및 비활성화](Appendix.Oracle.CommonDBATasks.RestrictedSession.md)
+ [공유 풀 플러시](Appendix.Oracle.CommonDBATasks.FlushingSharedPool.md)
+ [SYS 객체에 대한 SELECT 또는 EXECUTE 권한 부여](Appendix.Oracle.CommonDBATasks.TransferPrivileges.md)
+ [SYS 객체에 대한 SELECT 또는 EXECUTE 권한 취소](Appendix.Oracle.CommonDBATasks.RevokePrivileges.md)
+ [Oracle DB 인스턴스의 RDS\$1X\$1 뷰 관리](Appendix.Oracle.CommonDBATasks.X-dollar.md)
+ [마스터가 아닌 사용자에게 권한 부여](Appendix.Oracle.CommonDBATasks.PermissionsNonMasters.md)
+ [사용자 지정 암호 확인 함수 생성](Appendix.Oracle.CommonDBATasks.CustomPassword.md)
+ [사용자 지정 DNS 서버 설정](#Appendix.Oracle.CommonDBATasks.CustomDNS)
+ [시스템 진단 이벤트 설정 및 설정 해제](Appendix.Oracle.CommonDBATasks.SystemEvents.md)

# 세션 분리
<a name="Appendix.Oracle.CommonDBATasks.DisconnectingSession"></a>

전용 서버 프로세스를 종료하여 현재 세션을 분리하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_util.disconnect`를 사용합니다. `disconnect` 프로시저에는 다음과 같은 파라미터가 있습니다.


****  

| 파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | 
|  `sid`  |  숫자  |  —  |  예  |  세션 식별자입니다.  | 
|  `serial`  |  숫자  |  —  |  예  |  세션 일련번호입니다.  | 
|  `method`  |  varchar  |  'IMMEDIATE'  |  아니요  |  유효한 값은 `'IMMEDIATE'` 또는 `'POST_TRANSACTION'`입니다.  | 

다음 예제에서는 세션을 분리합니다.

```
begin
    rdsadmin.rdsadmin_util.disconnect(
        sid    => sid, 
        serial => serial_number);
end;
/
```

세션 식별자와 세션 일련번호를 얻으려면, `V$SESSION` 뷰를 쿼리하세요. 다음 예제에서는 사용자 `AWSUSER`의 모든 세션을 확보합니다.

```
SELECT SID, SERIAL#, STATUS FROM V$SESSION WHERE USERNAME = 'AWSUSER';
```

이 메서드를 사용하려면 데이터베이스가 열려 있어야 합니다. 세션 분리에 대한 자세한 내용은 Oracle 문서에서 [ALTER SYSTEM](http://docs.oracle.com/cd/E11882_01/server.112/e41084/statements_2014.htm#SQLRF53166) 단원을 참조하세요.

# 세션 종료
<a name="Appendix.Oracle.CommonDBATasks.KillingSession"></a>

세션을 종료하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_util.kill`을 사용합니다. `kill` 프로시저에는 다음과 같은 파라미터가 있습니다.


****  

| 파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | 
|  `sid`  |  숫자  |  —  |  예  |  세션 식별자입니다.  | 
|  `serial`  |  숫자  |  —  |  예  |  세션 일련번호입니다.  | 
|  `method`  |  varchar  |  null  |  아니요  |  유효한 값은 `'IMMEDIATE'` 또는 `'PROCESS'`입니다. `IMMEDIATE`를 지정하면 다음 문을 실행하는 것과 같은 효과가 있습니다. <pre>ALTER SYSTEM KILL SESSION 'sid,serial#' IMMEDIATE</pre> `PROCESS`를 지정하면 세션과 연결된 프로세스를 종료합니다. `IMMEDIATE`를 사용하여 세션이 종료되지 못한 경우에만 `PROCESS`를 지정하세요.  | 

세션 식별자와 세션 일련번호를 얻으려면, `V$SESSION` 뷰를 쿼리하세요. 다음 예제에서는 사용자 *AWSUSER*의 모든 세션을 확보합니다.

```
SELECT SID, SERIAL#, STATUS FROM V$SESSION WHERE USERNAME = 'AWSUSER';
```

다음 예제에서는 세션을 종료합니다.

```
BEGIN
    rdsadmin.rdsadmin_util.kill(
        sid    => sid, 
        serial => serial_number,
        method => 'IMMEDIATE');
END;
/
```

다음 예제에서는 세션과 연결된 프로세스를 종료합니다.

```
BEGIN
    rdsadmin.rdsadmin_util.kill(
        sid    => sid, 
        serial => serial_number,
        method => 'PROCESS');
END;
/
```

# 세션에서 SQL 문 취소
<a name="Appendix.Oracle.CommonDBATasks.CancellingSQL"></a>

세션에서 SQL 문을 취소하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_util.cancel`을 사용합니다.

**참고**  
이 절차는 Oracle Database 19c(19.0.0)와 RDS for Oracle의 모든 상위 메이저 및 마이너 버전에서 지원됩니다.

`cancel` 프로시저에는 다음과 같은 파라미터가 있습니다.


****  

| 파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | 
|  `sid`  |  숫자  |  —  |  예  |  세션 식별자입니다.  | 
|  `serial`  |  숫자  |  —  |  예  |  세션 일련번호입니다.  | 
|  `sql_id`  |  varchar2  |  null  |  아니요  |  SQL 문의 SQL 식별자입니다.  | 

다음 예제는 세션에서 SQL 문을 취소합니다.

```
begin
    rdsadmin.rdsadmin_util.cancel(
        sid    => sid, 
        serial => serial_number,
        sql_id => sql_id);
end;
/
```

세션 식별자, 세션 일련 번호 및 SQL의 SQL 식별자를 가져오려면 `V$SESSION` 보기를 쿼리합니다. 다음 예제에서는 사용자 `AWSUSER`의 모든 세션 및 SQL 식별자를 가져옵니다.

```
select SID, SERIAL#, SQL_ID, STATUS from V$SESSION where USERNAME = 'AWSUSER';
```

# 제한 세션 활성화 및 비활성화
<a name="Appendix.Oracle.CommonDBATasks.RestrictedSession"></a>

제한 세션을 활성화 또는 비활성화하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_util.restricted_session`을 사용합니다. `restricted_session` 프로시저에는 다음과 같은 파라미터가 있습니다.


****  

| 파라미터 이름 | 데이터 형식 | 기본값 | 예 | 설명 | 
| --- | --- | --- | --- | --- | 
|  `p_enable`  |  부울  |  true  |  아니요  |  `true`는 제한 세션을 활성화하고, `false`는 제한 세션을 비활성화하도록 설정됩니다.  | 

다음은 제한 세션을 활성화 및 비활성화하는 방법을 나타낸 예제입니다.

```
/* Verify that the database is currently unrestricted. */

SELECT LOGINS FROM V$INSTANCE;
 
LOGINS
-------
ALLOWED

/* Enable restricted sessions */

EXEC rdsadmin.rdsadmin_util.restricted_session(p_enable => true);
 

/* Verify that the database is now restricted. */

SELECT LOGINS FROM V$INSTANCE;
 
LOGINS
----------
RESTRICTED
 

/* Disable restricted sessions */

EXEC rdsadmin.rdsadmin_util.restricted_session(p_enable => false);
 

/* Verify that the database is now unrestricted again. */

SELECT LOGINS FROM V$INSTANCE;
 
LOGINS
-------
ALLOWED
```

# 공유 풀 플러시
<a name="Appendix.Oracle.CommonDBATasks.FlushingSharedPool"></a>

공유 풀을 플러시하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_util.flush_shared_pool`을 사용합니다. `flush_shared_pool` 프로시저에는 파라미터가 없습니다.

다음 예제는 공유 풀을 플러시합니다.

```
EXEC rdsadmin.rdsadmin_util.flush_shared_pool;
```

## 버퍼 캐시 플러시
<a name="Appendix.Oracle.CommonDBATasks.FlushingBufferCache"></a>

버퍼 캐시를 플러시하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_util.flush_buffer_cache`를 사용합니다. `flush_buffer_cache` 프로시저에는 파라미터가 없습니다.

다음 예제는 버퍼 캐시를 플러시합니다.

```
EXEC rdsadmin.rdsadmin_util.flush_buffer_cache;
```

## 데이터베이스 스마트 플래시 캐시 플러시
<a name="Appendix.Oracle.CommonDBATasks.flushing-shared-pool"></a>

데이터베이스 스마트 캐시를 플러시하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_util.flush_flash_cache`를 사용합니다. `flush_flash_cache` 프로시저에는 파라미터가 없습니다. 다음 예는 데이터베이스 스마트 플래시 캐시를 플러시합니다.

```
EXEC rdsadmin.rdsadmin_util.flush_flash_cache;
```

RDS for Oracle로 데이터베이스 스마트 플래시 캐시를 사용하는 방법에 대한 자세한 내용은 [RDS for Oracle 인스턴스 스토어에 임시 데이터 저장](CHAP_Oracle.advanced-features.instance-store.md) 섹션을 참조하세요.

# SYS 객체에 대한 SELECT 또는 EXECUTE 권한 부여
<a name="Appendix.Oracle.CommonDBATasks.TransferPrivileges"></a>

일반적으로 여러 객체가 포함되어 있을 수 있는 역할을 사용하여 권한을 이전합니다. 단일 객체에 권한을 부여하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_util.grant_sys_object`를 사용합니다. 이 프로시저는 마스터 사용자가 역할이나 직접 부여를 통해 이미 부여받은 권한만 부여합니다.

`grant_sys_object` 프로시저에는 다음과 같은 파라미터가 있습니다.

**중요**  
대소문자를 구분하는 식별자로 사용자를 생성하지 않는 한 모든 파라미터 값에 대문자를 사용합니다. 예를 들어 `CREATE USER myuser` 또는 `CREATE USER MYUSER`를 실행하는 경우 데이터 딕셔너리에 `MYUSER`가 저장됩니다. 그러나 `CREATE USER "MyUser"`에서 큰 따옴표를 사용하는 경우 데이터 딕셔너리를 `MyUser`에 저장합니다.


****  

| 파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | 
|  `p_obj_name`  |  varchar2  |  —  |  예  |  권한을 부여할 객체의 이름입니다. 디렉터리, 기능, 패키지, 프로시저, 시퀀스, 테이블, 뷰가 객체가 될 수 있습니다. 객체 이름은 `DBA_OBJECTS`에 표시된 대로 정확하게 입력해야 합니다. 대부분의 시스템 객체는 대문자로 정의되므로 먼저 대문자로 시도하는 것이 좋습니다.  | 
|  `p_grantee`  |  varchar2  |  —  |  예  |  권한을 부여할 객체의 이름입니다. 스키마나 역할이 객체가 될 수 있습니다.  | 
|  `p_privilege`  |  varchar2  |  null  |  예  |  —  | 
|  `p_grant_option`  |  boolean  |  false  |  아니요  |  `true`는 부여 옵션과 함께 사용하도록 설정됩니다.  | 

다음 예에서는 `V_$SESSION`이라는 객체에 대한 선택 권한을 `USER1`이라는 사용자에게 부여합니다.

```
begin
    rdsadmin.rdsadmin_util.grant_sys_object(
        p_obj_name  => 'V_$SESSION',
        p_grantee   => 'USER1',
        p_privilege => 'SELECT');
end;
/
```

다음 예에서는 `V_$SESSION` 이라는 객체에 대한 선택 권한을 `USER1`이라는 사용자에게 부여 옵션과 함께 부여합니다.

```
begin
    rdsadmin.rdsadmin_util.grant_sys_object(
        p_obj_name     => 'V_$SESSION',
        p_grantee      => 'USER1',
        p_privilege    => 'SELECT',
        p_grant_option => true);
end;
/
```

객체에 권한을 부여할 수 있으려면 해당 권한을 부여 옵션을 통해 계정에 직접 부여하거나 `with admin option`을 사용해 부여된 역할을 통해 계정에 부여해야 합니다. 대부분 이미 `SELECT` 역할에 부여된 DBA 뷰에 `SELECT_CATALOG_ROLE` 권한을 부여하는 경우가 많습니다. 해당 역할이 아직 `with admin option`을 통해 사용자에게 직접 부여되지 않았다면 권한을 양도할 수 없습니다. DBA 권한이 있다면 역할을 직접 다른 사용자에게 부여할 수 있습니다.

다음은 `SELECT_CATALOG_ROLE`과 `EXECUTE_CATALOG_ROLE`을 `USER1`에게 부여하는 예제입니다. `with admin option`을 사용했기 때문에, `USER1`은 이제 `SELECT_CATALOG_ROLE`에 부여된 SYS 객체 액세스 권한을 부여할 수 있습니다.

```
GRANT SELECT_CATALOG_ROLE TO USER1 WITH ADMIN OPTION; 
GRANT EXECUTE_CATALOG_ROLE to USER1 WITH ADMIN OPTION;
```

`PUBLIC`에 이미 부여된 객체는 다시 부여할 필요가 없습니다. `grant_sys_object` 프로시저를 사용하여 액세스 권한을 다시 부여한다면, 프로시저는 성공을 호출합니다.

# SYS 객체에 대한 SELECT 또는 EXECUTE 권한 취소
<a name="Appendix.Oracle.CommonDBATasks.RevokePrivileges"></a>

단일 객체에 대한 권한을 취소하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_util.revoke_sys_object`를 사용합니다. 이 프로시저는 마스터 계정이 역할 또는 직접 부여를 통해 이미 부여받은 권한만 취소합니다.

`revoke_sys_object` 프로시저에는 다음과 같은 파라미터가 있습니다.


****  

| 파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | 
|  `p_obj_name`  |  varchar2  |  —  |  예  |  권한을 취소할 객체의 이름입니다. 디렉터리, 기능, 패키지, 프로시저, 시퀀스, 테이블, 뷰가 객체가 될 수 있습니다. 객체 이름은 `DBA_OBJECTS`에 표시된 대로 정확하게 입력해야 합니다. 대부분의 시스템 객체는 대문자로 정의되므로 먼저 대문자로 시도해보는 것이 좋습니다.  | 
|  `p_revokee`  |  varchar2  |  —  |  예  |  권한을 취소할 객체의 이름입니다. 스키마나 역할이 객체가 될 수 있습니다.  | 
|  `p_privilege`  |  varchar2  |  null  |  예  |  —  | 

다음 예에서는 `V_$SESSION`이라는 객체에 대한 선택 권한을 `USER1`이라는 사용자에게서 취소합니다.

```
begin
    rdsadmin.rdsadmin_util.revoke_sys_object(
        p_obj_name  => 'V_$SESSION',
        p_revokee   => 'USER1',
        p_privilege => 'SELECT');
end;
/
```

# Oracle DB 인스턴스의 RDS\$1X\$1 뷰 관리
<a name="Appendix.Oracle.CommonDBATasks.X-dollar"></a>

`SYS`를 통해서만 액세스할 수 있는 `SYS.X$` 고정 테이블에 액세스해야 할 수도 있습니다. 대상이 되는 `X$` 표에 `SYS.RDS_X$` 뷰를 만들려면 `rdsadmin.rdsadmin_util` 패키지의 프로시저를 사용합니다. 마스터 사용자에게 `RDS_X$` 뷰에 대한 `SELECT … WITH GRANT OPTION` 권한이 자동으로 부여됩니다.

`rdsadmin.rdsadmin_util` 절차는 다음과 같은 경우에 사용할 수 있습니다.
+ 업그레이드된 적이 없고 다음 릴리스를 사용하는 기존 DB 인스턴스:
  + `21.0.0.0.ru-2023-10.rur-2023-10.r1` 이상의 21c 릴리스
  + `19.0.0.0.ru-2023-10.rur-2023-10.r1` 이상의 19c 릴리스
+ 사용자가 만드는 모든 새 DB 인스턴스
+ 사용자가 업그레이드하는 모든 기존 DB 인스턴스

**중요**  
`rdsadmin.rdsadmin_util` 패키지는 내부적으로 `X$` 표에 뷰를 생성합니다. `X$` 표는 Oracle Database 설명서에 설명되어 있지 않은 내부 시스템 객체입니다. 비 프로덕션 데이터베이스에서 특정 뷰를 테스트하고 Oracle Support의 안내에 따라 프로덕션 데이터베이스에서만 뷰를 생성하는 것이 좋습니다.

## RDS\$1X\$1 뷰에서 사용할 수 있는 X\$1 고정 표 나열
<a name="Appendix.Oracle.CommonDBATasks.list-allowed-X-dollar"></a>

`RDS_X$` 뷰에 사용할 수 있는 X\$1 표를 나열하려면 RDS 프로시저 `rdsadmin.rdsadmin_util.list_allowed_sys_x$_views`를 사용합니다. 이 프로시저는 파라미터를 받지 않습니다. 다음 문에는 해당하는 모든 `X$` 표가 나열되어 있습니다(샘플 출력 포함).

```
SQL> SET SERVEROUTPUT ON
SQL> SELECT * FROM TABLE(rdsadmin.rdsadmin_util.list_allowed_sys_x$_views);

'X$BH'
'X$K2GTE'
'X$KCBWBPD'
'X$KCBWDS'
'X$KGLLK'
'X$KGLOB'
'X$KGLPN'
'X$KSLHOT'
'X$KSMSP'
'X$KSPPCV'
'X$KSPPI'
'X$KSPPSV'
'X$KSQEQ'
'X$KSQRS'
'X$KTUXE'
'X$KQRFP'
```

대상 `X$` 표 목록은 시간이 지남에 따라 변경될 수 있습니다. 대상 `X$` 고정 표 목록을 최신으로 유지하려면 주기적으로 `list_allowed_sys_x$_views`를 다시 실행하세요.

## SYS.RDS\$1X\$1 뷰 생성
<a name="Appendix.Oracle.CommonDBATasks.create-X-dollar"></a>

대상이 되는 `X$` 표에 `RDS_X$` 뷰를 만들려면 RDS 프로시저 `rdsadmin.rdsadmin_util.create_sys_x$_view`를 사용합니다. `rdsadmin.rdsadmin_util.list_allowed_sys_x$_views`의 출력에 나열된 표에 대한 뷰만 생성할 수 있습니다. `create_sys_x$_view` 프로시저는 다음 파라미터를 수용합니다.


****  

| 파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | 
|  `p_x$_tbl`  |  varchar2  |  Null  |  예  |  유효한 `X$` 표 이름입니다. 이 값은 `list_allowed_sys_x$_views`에서 보고한 `X$` 표 중 하나여야 합니다.  | 
|  `p_force_creation`  |  부울  | FALSE |  아니요  |  `X$` 표에 이미 존재하는 `RDS_X$` 뷰를 강제로 생성할지 여부를 나타내는 값입니다. 기본적으로 RDS는 뷰가 이미 있는 경우 뷰를 만들지 않습니다. 강제로 생성하려면 이 파라미터를 `TRUE`로 설정합니다.  | 

다음 예제에서는 `X$KGLOB` 표에 `SYS.RDS_X$KGLOB` 뷰를 생성합니다. 뷰 이름 형식은 `RDS_X$tablename`입니다.

```
SQL> SET SERVEROUTPUT ON
SQL> EXEC rdsadmin.rdsadmin_util.create_sys_x$_view('X$KGLOB');

PL/SQL procedure successfully completed.
```

다음 데이터 사전 쿼리는 `SYS.RDS_X$KGLOB` 뷰를 나열하고 상태를 보여줍니다. 마스터 사용자에게 이 뷰에 대한 `SELECT ... WITH GRANT OPTION` 권한이 자동으로 부여됩니다.

```
SQL> SET SERVEROUTPUT ON
SQL> COL OWNER FORMAT A30 
SQL> COL OBJECT_NAME FORMAT A30
SQL> COL STATUS FORMAT A30
SQL> SET LINESIZE 200
SQL> SELECT OWNER, OBJECT_NAME, STATUS 
FROM DBA_OBJECTS 
WHERE OWNER = 'SYS' AND OBJECT_NAME = 'RDS_X$KGLOB';

OWNER                          OBJECT_NAME                    STATUS
------------------------------ ------------------------------ ------------------------------
SYS                            RDS_X$KGLOB                    VALID
```

**중요**  
업그레이드 전과 후에 `X$` 표가 동일하게 유지된다고 보장할 수는 없습니다. RDS for Oracle은 엔진 업그레이드 중에 `X$` 표에서 `RDS_X$` 뷰를 삭제하고 다시 생성합니다. 그런 다음 마스터 사용자에게 `SELECT ... WITH GRANT OPTION` 권한을 부여합니다. 업그레이드 후에는 해당 `RDS_X$` 뷰에서 필요에 따라 데이터베이스 사용자에게 권한을 부여합니다.

## SYS.RDS\$1X\$1 뷰 목록
<a name="Appendix.Oracle.CommonDBATasks.list-created-X-dollar"></a>

기존 `RDS_X$` 뷰를 나열하려면 RDS 프로시저 `rdsadmin.rdsadmin_util.list_created_sys_x$_views`를 사용합니다. 프로시저에는 `create_sys_x$_view` 프로시저로 만든 뷰만 나열됩니다. 다음 예제에서는 해당하는 `RDS_X$` 뷰(샘플 출력 포함)가 있는 `X$` 표를 나열합니다.

```
SQL> SET SERVEROUTPUT ON
SQL> COL XD_TBL_NAME FORMAT A30
SQL> COL STATUS FORMAT A30
SQL> SET LINESIZE 200
SQL> SELECT * FROM TABLE(rdsadmin.rdsadmin_util.list_created_sys_x$_views);

XD_TBL_NAME                    STATUS
------------------------------ ------------------------------
X$BH                           VALID
X$K2GTE                        VALID
X$KCBWBPD                      VALID

3 rows selected.
```

## RDS\$1X\$1 뷰 삭제
<a name="Appendix.Oracle.CommonDBATasks.drop-X-dollar"></a>

`SYS.RDS_X$` 뷰를 삭제하려면 RDS 프로시저 `rdsadmin.rdsadmin_util.drop_sys_x$_view`를 사용합니다. `rdsadmin.rdsadmin_util.list_allowed_sys_x$_views`의 출력에 나열된 뷰만 삭제할 수 있습니다. `drop_sys_x$_view` 프로시저는 다음 파라미터를 받습니다.


****  

| 파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | 
|  `p_x$_tbl`  |  varchar2  |  Null  |  예  |  유효한 `X$` 고정 표 이름입니다. 이 값은 `list_created_sys_x$_views`에서 보고한 `X$` 고정 표 중 하나여야 합니다.  | 

다음 예제에서는 `X$KGLOB` 표에 만든 `RDS_X$KGLOB` 뷰를 삭제합니다.

```
SQL> SET SERVEROUTPUT ON
SQL> EXEC rdsadmin.rdsadmin_util.drop_sys_x$_view('X$KGLOB');

PL/SQL procedure successfully completed.
```

다음 예제에서는 `SYS.RDS_X$KGLOB` 뷰가 삭제되었음을 보여줍니다(샘플 출력 포함).

```
SQL> SET SERVEROUTPUT ON
SQL> COL OWNER FORMAT A30 
SQL> COL OBJECT_NAME FORMAT A30
SQL> COL STATUS FORMAT A30
SQL> SET LINESIZE 200
SQL> SELECT OWNER, OBJECT_NAME, STATUS 
FROM DBA_OBJECTS 
WHERE OWNER = 'SYS' AND OBJECT_NAME = 'RDS_X$KGLOB';

no rows selected
```

# 마스터가 아닌 사용자에게 권한 부여
<a name="Appendix.Oracle.CommonDBATasks.PermissionsNonMasters"></a>

`SYS` 역할을 사용하여 `SELECT_CATALOG_ROLE` 스키마에 있는 여러 객체에 선택 권한을 부여할 수 있습니다. `SELECT_CATALOG_ROLE` 역할은 사용자에게 데이터 딕셔너리 뷰에 대한 `SELECT` 권한을 부여합니다. 다음은 역할 `SELECT_CATALOG_ROLE`을 사용자 `user1`에 부여하는 예제입니다.

```
GRANT SELECT_CATALOG_ROLE TO user1;
```

`EXECUTE` 역할을 사용하여 `SYS` 스키마에 있는 여러 객체에 `EXECUTE_CATALOG_ROLE` 권한을 부여할 수 있습니다. `EXECUTE_CATALOG_ROLE` 역할은 사용자에게 데이터 딕셔너리의 패키지와 프로시저에 대한 `EXECUTE` 권한을 부여합니다. 다음 예에서는 `EXECUTE_CATALOG_ROLE`이라는 역할을 *user1*이라는 사용자에게 부여합니다.

```
GRANT EXECUTE_CATALOG_ROLE TO user1;
```

다음 예에서는 `SELECT_CATALOG_ROLE` 및 `EXECUTE_CATALOG_ROLE`이라는 역할에서 허용하는 권한을 얻습니다.

```
  SELECT * 
    FROM ROLE_TAB_PRIVS  
   WHERE ROLE IN ('SELECT_CATALOG_ROLE','EXECUTE_CATALOG_ROLE') 
ORDER BY ROLE, TABLE_NAME ASC;
```

다음 예에서는 *sh.sales*라는 데이터베이스에서 마스터 사용자가 아닌 `user1`이라는 사용자를 생성한 후 `CREATE SESSION` 권한과 `SELECT` 권한을 부여합니다.

```
CREATE USER user1 IDENTIFIED BY PASSWORD;
GRANT CREATE SESSION TO user1;
GRANT SELECT ON sh.sales TO user1;
```

# 사용자 지정 암호 확인 함수 생성
<a name="Appendix.Oracle.CommonDBATasks.CustomPassword"></a>

사용자 지정 암호 확인 함수는 다음과 같은 방법으로 생성할 수 있습니다.
+ 표준 확인 로직을 사용하고 `SYS` 스키마에 함수를 저장하려면, `create_verify_function` 프로시저를 사용합니다.
+ 사용자 지정 확인 로직을 사용하거나 `SYS` 스키마에 함수를 저장하지 않으려면, `create_passthrough_verify_fcn` 프로시저를 사용합니다.

# create\$1verify\$1function 프로시저
<a name="Appendix.Oracle.CommonDBATasks.CustomPassword.Standard"></a>

Amazon RDS 프로시저 `rdsadmin.rdsadmin_password_verify.create_verify_function`을 사용하여 사용자 지정 암호 확인 함수를 만들 수 있습니다. 이 `create_verify_function` 프로시저는 RDS for Oracle의 모든 버전에 대해 지원됩니다.

`create_verify_function` 프로시저에는 다음과 같은 파라미터가 있습니다.


****  

| 파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | 
|  `p_verify_function_name`  |  varchar2  |  —  |  예  |  사용자 정의 함수 이름입니다. 이 함수는 SYS 스키마에서 자동으로 만들어집니다. 이 함수를 사용자 프로필에 할당합니다.  | 
|  `p_min_length`  |  숫자  |  8  |  아니요  |  필요한 최소 문자 수입니다.  | 
|  `p_max_length`  |  숫자  |  256  |  아니요  |  허용되는 최대 문자 수입니다.  | 
|  `p_min_letters`  |  숫자  |  1  |  아니요  |  필요한 최소 글자 수입니다.  | 
|  `p_min_uppercase`  |  숫자  |  0  |  아니요  |  필요한 최소 대문자 수입니다.  | 
|  `p_min_lowercase`  |  숫자  |  0  |  아니요  |  필요한 최소 소문자 수입니다.  | 
|  `p_min_digits`  |  숫자  |  1  |  아니요  |  필요한 최소 자릿수 숫자입니다.  | 
|  `p_min_special`  |  숫자  |  0  |  아니요  |  필요한 최소 특수문자 수입니다.  | 
|  `p_min_different_chars`  |  숫자  |  3  |  아니요  |  이전 암호와 새 암호 간에 필요한 서로 다른 문자의 최소 개수입니다.  | 
|  `p_disallow_username`  |  부울  |  true  |  아니요  |  `true`로 설정되어 암호에 사용자 이름을 사용할 수 없습니다.  | 
|  `p_disallow_reverse`  |  부울  |  true  |  아니요  |  `true`로 설정되어 암호에 사용자 이름 반전을 사용할 수 없습니다.  | 
|  `p_disallow_db_name`  |  부울  |  true  |  아니요  |  `true`로 설정되어 암호에 데이터베이스나 서버 이름을 사용할 수 없습니다.  | 
|  `p_disallow_simple_strings`  |  부울  |  true  |  아니요  |  `true`로 설정되어 단순 문자열을 암호로 사용할 수 없습니다.  | 
|  `p_disallow_whitespace`  |  boolean  |  false  |  아니요  |  `true`로 설정되어 암호에 공백 문자를 사용할 수 없습니다.  | 
|  `p_disallow_at_sign`  |  boolean  |  false  |  아니요  |  `true`로 설정되어 암호에 @ 문자를 사용할 수 없습니다.  | 

암호 확인 기능을 여러 개 만들 수 있습니다.

사용자 지정 기능의 이름에 대한 제한 사항이 있습니다. 사용자 지정 함수는 기존 시스템 객체와 이름이 같을 수 없고, 30자를 넘어서는 안 됩니다. 또한 `PASSWORD`, `VERIFY`, `COMPLEXITY`, `ENFORCE`, `STRENGTH` 중 한 가지 문자열을 포함해야 합니다.

다음 예시에서는 `CUSTOM_PASSWORD_FUNCTION`이라는 기능을 생성합니다. 이 함수에는 최소한 문자 12개, 대문자 2개, 자릿수 1개, 특수 문자 1개가 필요하며 암호에는 @ 문자를 사용할 수 없습니다.

```
begin
    rdsadmin.rdsadmin_password_verify.create_verify_function(
        p_verify_function_name => 'CUSTOM_PASSWORD_FUNCTION', 
        p_min_length           => 12, 
        p_min_uppercase        => 2, 
        p_min_digits           => 1, 
        p_min_special          => 1,
        p_disallow_at_sign     => true);
end;
/
```

확인 함수의 텍스트를 보려면 `DBA_SOURCE`를 쿼리하세요. 다음은 `CUSTOM_PASSWORD_FUNCTION`이라는 이름의 사용자 지정 암호 기능의 텍스트를 얻는 예제입니다.

```
COL TEXT FORMAT a150

  SELECT TEXT 
    FROM DBA_SOURCE 
   WHERE OWNER = 'SYS' 
     AND NAME = 'CUSTOM_PASSWORD_FUNCTION' 
ORDER BY LINE;
```

확인 함수를 사용자 프로파일과 연결하려면 `ALTER PROFILE`을 사용하세요. 다음 예제에서는 이름이 `CUSTOM_PASSWORD_FUNCTION`인 확인 PL/SQL 함수를 `DEFAULT` 사용자 프로필과 연결합니다. `PASSWORD_VERIFY_FUNCTION`은 Oracle 프로필 리소스 이름입니다.

```
ALTER PROFILE DEFAULT LIMIT PASSWORD_VERIFY_FUNCTION CUSTOM_PASSWORD_FUNCTION;
```

어떤 사용자 프로파일이 어떤 확인 기능과 연결되어 있는지 보려면 `DBA_PROFILES`를 쿼리하세요. 다음은 `CUSTOM_PASSWORD_FUNCTION`이라는 이름의 사용자 지정 확인 기능과 연결된 프로필을 얻는 예제입니다.

```
SELECT * FROM DBA_PROFILES WHERE RESOURCE_NAME = 'PASSWORD_VERIFY_FUNCTION' AND LIMIT = 'CUSTOM_PASSWORD_FUNCTION';


PROFILE                    RESOURCE_NAME                     RESOURCE  LIMIT
-------------------------  --------------------------------  --------  ------------------------
DEFAULT                    PASSWORD_VERIFY_FUNCTION          PASSWORD  CUSTOM_PASSWORD_FUNCTION
```

다음은 모든 프로필과 프로필에 연결된 암호 확인 기능을 얻는 예제입니다.

```
SELECT * FROM DBA_PROFILES WHERE RESOURCE_NAME = 'PASSWORD_VERIFY_FUNCTION';

PROFILE                    RESOURCE_NAME                     RESOURCE  LIMIT
-------------------------  --------------------------------  --------  ------------------------
DEFAULT                    PASSWORD_VERIFY_FUNCTION          PASSWORD  CUSTOM_PASSWORD_FUNCTION
RDSADMIN                   PASSWORD_VERIFY_FUNCTION          PASSWORD  NULL
```

# create\$1passthrough\$1verify\$1fcn 프로시저
<a name="Appendix.Oracle.CommonDBATasks.CustomPassword.Custom"></a>

이 `create_passthrough_verify_fcn` 프로시저는 RDS for Oracle의 모든 버전에 대해 지원됩니다.

Amazon RDS 프로시저 `rdsadmin.rdsadmin_password_verify.create_passthrough_verify_fcn`을 사용하여 사용자 지정 암호 확인 함수를 만들 수 있습니다. `create_passthrough_verify_fcn` 프로시저에는 다음과 같은 파라미터가 있습니다.


****  

| 파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | 
|  `p_verify_function_name`  |  varchar2  |  —  |  예  |  사용자 정의 확인 함수의 이름입니다. SYS 스키마에서 자동으로 생성되는 래퍼 함수로서 확인 로직을 포함하지 않습니다. 이 함수를 사용자 프로필에 할당합니다.  | 
|  `p_target_owner`  |  varchar2  |  —  |  예  |  사용자 지정 확인 함수의 스키마 소유자입니다.  | 
|  `p_target_function_name`  |  varchar2  |  —  |  예  |  확인 로직을 포함하는 기존 사용자 지정 함수의 이름입니다. 사용자 정의 함수는 부울 값을 반환합니다. 사용자의 함수는 암호가 유효할 경우 `true`를 반환하고 암호가 유효하지 않을 경우 `false`를 반환해야 합니다.  | 

다음은 `PASSWORD_LOGIC_EXTRA_STRONG`이라는 함수 로직을 사용하는 암호 확인 함수를 생성하는 예제입니다.

```
begin
    rdsadmin.rdsadmin_password_verify.create_passthrough_verify_fcn(
        p_verify_function_name => 'CUSTOM_PASSWORD_FUNCTION', 
        p_target_owner         => 'TEST_USER',
        p_target_function_name => 'PASSWORD_LOGIC_EXTRA_STRONG');
end;
/
```

확인 기능을 사용자 프로파일과 연결하려면 `alter profile`를 사용하세요. 다음은 확인 함수를 `DEFAULT` 사용자 프로파일과 연결하는 예제입니다.

```
ALTER PROFILE DEFAULT LIMIT PASSWORD_VERIFY_FUNCTION CUSTOM_PASSWORD_FUNCTION;
```

## 사용자 지정 DNS 서버 설정
<a name="Appendix.Oracle.CommonDBATasks.CustomDNS"></a>

Amazon RDS는 Oracle을 실행하는 DB 인스턴스에서 아웃바운드 네트워크 액세스를 지원합니다. 사전 요구 사항을 포함한 아웃바운드 네트워크 액세스에 대한 자세한 내용은 [인증서 및 Oracle Wallet을 사용하여 UTL\$1HTTP 액세스 구성](Oracle.Concepts.ONA.md) 섹션을 참조하세요.

Amazon RDS Oracle에서는 고객이 소유한 사용자 지정 DNS 서버에서의 DNS(Domain Name Service) 확인이 가능합니다. 사용자 지정 DNS 서버를 통해 Amazon RDS DB 인스턴스에서 전체 주소 도메인 이름만을 확인할 수 있습니다.

사용자 지정 DNS 이름 서버를 설정한 후 변경 사항이 DB 인스턴스에 전파되는 데 최대 30분이 걸립니다. 변경 사항이 DB 인스턴스에 전파된 후 DNS 조회를 필요로 하는 모든 아웃바운드 네트워크 트래픽은 포트 53을 통해 DNS 서버를 쿼리합니다.

Amazon RDS for Oracle DB 인스턴스의 사용자 지정 DNS 서버를 설정하려면 다음과 같이 하세요.
+ Virtual Private Cloud(VPC)에 연결된 DHCP 옵션 세트에서 DNS 이름 서버의 IP 주소에 대해 `domain-name-servers` 옵션을 설정합니다. 자세한 내용은 [DHCP 옵션 세트](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_DHCP_Options.html) 단원을 참조하세요.
**참고**  
`domain-name-servers` 옵션은 최대 4개의 값을 받아들이지만 Amazon RDS DB 인스턴스는 첫 번째 값만을 사용합니다.
+ DNS 서버가 DNS 이름, Amazon EC2 프라이빗 DNS 이름, 고객별 DNS 이름을 비롯한 모든 조회 쿼리를 확인할 수 있는지 확인합니다. 아웃바운드 네트워크 트래픽에 DNS 서버가 처리할 수 없는 DNS 조회가 포함된 경우, DNS 서버에 적절한 업스트림 DNS 공급자가 구성되어 있어야 합니다.
+ 512바이트 이하의 UDP(User Datagram Protocol) 응답을 생성하도록 DNS 서버를 구성하세요.
+ 1,024바이트 이하의 TCP(Transmission Control Protocol) 응답을 생성하도록 DNS 서버를 구성하세요.
+ 포트 53을 통한 Amazon RDS DB 인스턴스로부터의 인바운드 트래픽을 허용하도록 DNS 서버를 구성하세요. DNS 서버가 Amazon VPC에 있는 경우, VPC에는 포트 53에서 UDP 및 TCP 트래픽을 허용하는 인바운드 규칙이 포함된 보안 그룹이 있어야 합니다. DNS 서버가 Amazon VPC에 없는 경우, 포트 53에서 UDP 및 TCP 인바운드 트래픽을 허용하는 적절한 방화벽 허용 목록이 있어야 합니다.

  자세한 내용은 [VPC의 보안 그룹](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html) 및 [규칙 추가 및 제거](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html#AddRemoveRules) 단원을 참조하세요.
+ 포트 53을 통한 아웃바운드 트래픽을 허용하도록 Amazon RDS DB 인스턴스의 VPC를 구성하세요. VPC에는 포트 53에서 UDP 및 TCP 트래픽을 허용하는 아웃바운드 규칙이 포함된 보안 그룹이 있어야 합니다.

  자세한 내용은 [VPC의 보안 그룹](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html) 및 [규칙 추가 및 제거](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html#AddRemoveRules) 단원을 참조하세요.
+ Amazon RDS DB 인스턴스와 DNS 서버 간 라우팅 경로가 DNS 트래픽을 허용하도록 올바로 구성되어야 합니다.
  + Amazon RDS DB 인스턴스와 DNS 서버가 같은 VPC에 있지 않은 경우, 그 사이에 피어링 연결을 구축해야 합니다. 자세한 내용은 [VPC 피어링이란?](https://docs.aws.amazon.com/vpc/latest/peering/Welcome.html)을 참조하세요.

# 시스템 진단 이벤트 설정 및 설정 해제
<a name="Appendix.Oracle.CommonDBATasks.SystemEvents"></a>

세션 수준에서 진단 이벤트를 설정하고 설정 해제하려면 `ALTER SESSION SET EVENTS`라는 Oracle SQL 문을 사용하면 됩니다. 하지만 시스템 수준에서 이벤트를 설정하는 데에는 Oracle SQL을 사용할 수 없습니다. 대신 `rdsadmin.rdsadmin_util` 패키지의 시스템 이벤트 프로시저를 사용합니다. 시스템 이벤트 프로시저는 다음 엔진 버전에서 사용할 수 있습니다.
+ 모든 Oracle Database 21c 버전
+ 19.0.0.0.ru-2020-10.rur-2020-10.r1 이상의 Oracle Database 19c 버전

  자세한 내용은 **Amazon RDS for Oracle 릴리스 정보의 [버전 19.0.0.0.ru-2020-10.rur-2020-10.r1](https://docs.aws.amazon.com/AmazonRDS/latest/OracleReleaseNotes/oracle-version-19-0.html#oracle-version-RU-RUR.19.0.0.0.ru-2020-10.rur-2020-10.r1)을 참조하세요.

**중요**  
내부적으로, `rdsadmin.rdsadmin_util` 패키지는 `ALTER SYSTEM SET EVENTS` 문을 사용하여 이벤트를 설정합니다. 이 `ALTER SYSTEM` 문은 Oracle 데이터베이스 설명서에 설명되어 있지 않습니다. 일부 시스템 진단 이벤트는 많은 양의 추적 정보를 생성하거나 경합을 일으키거나 데이터베이스 가용성에 영향을 줄 수 있습니다. Oracle Support의 지침에 따라 비 프로덕션 데이터베이스에서 특정 진단 이벤트를 테스트하고 프로덕션 데이터베이스에서만 이벤트를 설정하는 것이 좋습니다.

## 허용되는 시스템 진단 이벤트 나열
<a name="Appendix.Oracle.CommonDBATasks.SystemEvents.listing"></a>

설정 가능한 시스템 이벤트를 나열하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_util.list_allowed_system_events`를 사용합니다. 이 프로시저는 파라미터를 받지 않습니다.

다음 예에서는 설정 가능한 모든 시스템 이벤트를 나열합니다.

```
SET SERVEROUTPUT ON
EXEC rdsadmin.rdsadmin_util.list_allowed_system_events;
```

다음 샘플 출력에는 이벤트 번호와 해당 설명이 나열됩니다. Amazon RDS 프로시저 `set_system_event`를 사용하여 이러한 이벤트를 설정하고 `unset_system_event`를 사용하여 설정 해제합니다.

```
604   - error occurred at recursive SQL level
942   - table or view does not exist
1401  - inserted value too large for column
1403  - no data found
1410  - invalid ROWID
1422  - exact fetch returns more than requested number of rows
1426  - numeric overflow
1427  - single-row subquery returns more than one row
1476  - divisor is equal to zero
1483  - invalid length for DATE or NUMBER bind variable
1489  - result of string concatenation is too long
1652  - unable to extend temp segment by  in tablespace
1858  - a non-numeric character was found where a numeric was expected
4031  - unable to allocate  bytes of shared memory ("","","","")
6502  - PL/SQL: numeric or value error
10027 - Specify Deadlock Trace Information to be Dumped
10046 - enable SQL statement timing
10053 - CBO Enable optimizer trace
10173 - Dynamic Sampling time-out error
10442 - enable trace of kst for ORA-01555 diagnostics
12008 - error in materialized view refresh path
12012 - error on auto execute of job
12504 - TNS:listener was not given the SERVICE_NAME in CONNECT_DATA
14400 - inserted partition key does not map to any partition
31693 - Table data object  failed to load/unload and is being skipped due to error:
```

**참고**  
허용되는 시스템 이벤트 목록은 시간이 지남에 따라 변경될 수 있습니다. 적격 이벤트의 최신 목록이 있는지 확인하려면 `rdsadmin.rdsadmin_util.list_allowed_system_events`를 사용합니다.

## 시스템 진단 이벤트 설정
<a name="Appendix.Oracle.CommonDBATasks.SystemEvents.setting"></a>

시스템 이벤트를 설정하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_util.set_system_event`를 사용합니다. `rdsadmin.rdsadmin_util.list_allowed_system_events`의 출력에 나열된 이벤트만 설정할 수 있습니다. `set_system_event` 프로시저는 다음 파라미터를 수용합니다.


****  

| 파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | 
|  `p_event`  |  숫자  |  —  |  예  |  시스템 이벤트 번호입니다. 이 값은 `list_allowed_system_events`에 의해 보고된 이벤트 번호 중 하나여야 합니다.  | 
|  `p_level`  |  숫자  |  —  |  예  |  이벤트 수준입니다. 다양한 수준 값에 대한 설명은 Oracle 데이터베이스 설명서를 참조하거나 Oracle Support에 문의하세요.  | 

`set_system_event` 프로시저는 다음 원칙에 따라 필요한 `ALTER SYSTEM SET EVENTS` 문을 구성하고 실행합니다.
+ 이벤트 유형(`context` 또는 `errorstack`)은 자동으로 결정됩니다.
+ `ALTER SYSTEM SET EVENTS 'event LEVEL event_level'` 형식의 문이 컨텍스트 이벤트를 설정합니다. 이 표기법은 `ALTER SYSTEM SET EVENTS 'event TRACE NAME CONTEXT FOREVER, LEVEL event_level'`과 동일합니다.
+ `ALTER SYSTEM SET EVENTS 'event ERRORSTACK (event_level)'` 형식의 문이 오류 스택 이벤트를 설정합니다. 이 표기법은 `ALTER SYSTEM SET EVENTS 'event TRACE NAME ERRORSTACK LEVEL event_level'`과 동일합니다.

다음 예에서는 이벤트 942를 수준 3에 설정하고 이벤트 10442를 수준 10에 설정합니다. 샘플 출력이 포함되어 있습니다.

```
SQL> SET SERVEROUTPUT ON
SQL> EXEC rdsadmin.rdsadmin_util.set_system_event(942,3);
Setting system event 942 with: alter system set events '942 errorstack (3)'

PL/SQL procedure successfully completed.

SQL> EXEC rdsadmin.rdsadmin_util.set_system_event(10442,10);
Setting system event 10442 with: alter system set events '10442 level 10'

PL/SQL procedure successfully completed.
```

## 설정된 시스템 진단 이벤트 나열
<a name="Appendix.Oracle.CommonDBATasks.SystemEvents.listing-set"></a>

현재 설정된 시스템 이벤트를 나열하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_util.list_set_system_events`를 사용합니다. 이 프로시저는 `set_system_event`에 의해 시스템 수준에 설정된 이벤트만 보고합니다.

다음 예에서는 활성 시스템 이벤트를 나열합니다.

```
SET SERVEROUTPUT ON
EXEC rdsadmin.rdsadmin_util.list_set_system_events;
```

다음 샘플 출력에서는 이벤트 목록, 이벤트 유형, 이벤트가 현재 설정된 레벨 및 이벤트가 설정된 시간을 보여 줍니다.

```
942 errorstack (3) - set at 2020-11-03 11:42:27
10442 level 10 - set at 2020-11-03 11:42:41

PL/SQL procedure successfully completed.
```

## 시스템 진단 이벤트 설정 해제
<a name="Appendix.Oracle.CommonDBATasks.SystemEvents.unsetting"></a>

시스템 이벤트를 설정 해제하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_util.unset_system_event`를 사용합니다. `rdsadmin.rdsadmin_util.list_allowed_system_events`의 출력에 나열된 이벤트만 설정 해제할 수 있습니다. `unset_system_event` 프로시저는 다음 파라미터를 받습니다.


****  

| 파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | 
|  `p_event`  |  숫자  |  —  |  예  |  시스템 이벤트 번호입니다. 이 값은 `list_allowed_system_events`에 의해 보고된 이벤트 번호 중 하나여야 합니다.  | 

다음 예에서는 이벤트 942 및 10442를 설정 해제합니다. 샘플 출력이 포함되어 있습니다.

```
SQL> SET SERVEROUTPUT ON
SQL> EXEC rdsadmin.rdsadmin_util.unset_system_event(942);
Unsetting system event 942 with: alter system set events '942 off'

PL/SQL procedure successfully completed.

SQL> EXEC rdsadmin.rdsadmin_util.unset_system_event(10442);
Unsetting system event 10442 with: alter system set events '10442 off'

PL/SQL procedure successfully completed.
```

# Oracle DB 인스턴스에 대한 공통 데이터베이스 작업 수행
<a name="Appendix.Oracle.CommonDBATasks.Database"></a>

그 다음에는 Oracle을 실행하는 Amazon RDS DB 인스턴스에서 데이터베이스와 관련된 특정 공통 DBA 작업을 수행하는 방법을 알아봅니다. 관리형 서비스 환경을 제공하기 위해 Amazon RDS는 DB 인스턴스에 대해 shell 액세스를 제공하지 않습니다. 또한 Amazon RDS는 고급 권한이 필요한 특정 시스템 절차와 테이블에 대한 액세스를 제한합니다.

**Topics**
+ [데이터베이스의 전역 이름 변경](Appendix.Oracle.CommonDBATasks.RenamingGlobalName.md)
+ [RDS for Oracle에서 테이블스페이스 작업](Appendix.Oracle.CommonDBATasks.TablespacesAndDatafiles.md)
+ [RDS for Oracle에서 tempfiles 작업](Appendix.Oracle.CommonDBATasks.using-tempfiles.md)
+ [RDS for Oracle의 테이블스페이스, 데이터 파일 및 임시 파일 크기 조정](Appendix.Oracle.CommonDBATasks.ResizeTempSpaceReadReplica.md)
+ [RDS for Oracle의 스토리지 볼륨 간에 데이터 이동](Appendix.Oracle.CommonDBATasks.MovingDataBetweenVolumes.md)
+ [RDS for Oracle의 외부 테이블 작업](Appendix.Oracle.CommonDBATasks.External_Tables.md)

# 데이터베이스의 전역 이름 변경
<a name="Appendix.Oracle.CommonDBATasks.RenamingGlobalName"></a>

데이터베이스의 전역 이름을 변경하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_util.rename_global_name`을 사용합니다. `rename_global_name` 프로시저에는 다음과 같은 파라미터가 있습니다.


****  

| 파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | 
|  `p_new_global_name`  |  varchar2  |  —  |  예  |  데이터베이스의 새로운 전역 이름입니다.  | 

이름 변경이 적용될 수 있도록 데이터베이스가 열려 있어야 합니다. 데이터베이스의 전역 이름 변경에 대한 자세한 내용은 Oracle 문서의 [ALTER DATABASE](http://docs.oracle.com/cd/E11882_01/server.112/e41084/statements_1004.htm#SQLRF52547)를 참조하세요.

다음은 데이터베이스의 전역 이름을 `new_global_name`으로 변경하는 예제입니다.

```
EXEC rdsadmin.rdsadmin_util.rename_global_name(p_new_global_name => 'new_global_name');
```

# RDS for Oracle에서 테이블스페이스 작업
<a name="Appendix.Oracle.CommonDBATasks.TablespacesAndDatafiles"></a>

RDS for Oracle에서 테이블스페이스를 사용할 수 있습니다. 이 테이블스페이스는 데이터베이스의 데이터를 저장하는 논리적 스토리지 단위입니다.

**중요**  
DB 인스턴스에 복제본이 있는 경우 세션 수준 변경 대신 파라미터 그룹 설정을 사용하여 기본 파일 위치를 관리하는 것이 좋습니다. 기본 인스턴스의 기본 파일 위치에 대한 세션 수준 변경 사항은 복제본에 자동으로 반영되지 않습니다. 파라미터 그룹 설정을 사용하면 기본 인스턴스와 복제본 인스턴스에서 일관된 파일 위치가 보장됩니다.

**Topics**
+ [RDS for Oracle에서 데이터베이스 파일 위치 지정](#Appendix.Oracle.CommonDBATasks.DatabaseFileLocations)
+ [RDS for Oracle에서 테이블스페이스 생성 및 크기 조정](#Appendix.Oracle.CommonDBATasks.CreatingTablespacesAndDatafiles)
+ [RDS for Oracle에서 추가 스토리지 볼륨에 테이블스페이스 생성](#Appendix.Oracle.CommonDBATasks.CreatingTablespacesWithFileLocations)
+ [RDS for Oracle에서 기본 테이블스페이스 설정](#Appendix.Oracle.CommonDBATasks.SettingDefaultTablespace)
+ [RDS for Oracle에서 기본 임시 테이블스페이스 설정](#Appendix.Oracle.CommonDBATasks.SettingDefTempTablespace)
+ [인스턴스 스토어에 임시 테이블스페이스 생성](#Appendix.Oracle.CommonDBATasks.creating-tts-instance-store)

## RDS for Oracle에서 데이터베이스 파일 위치 지정
<a name="Appendix.Oracle.CommonDBATasks.DatabaseFileLocations"></a>

RDS for Oracle은 Oracle Managed Files(OMF)를 사용하여 데이터베이스 파일의 이름을 지정합니다. 데이터베이스 파일을 생성할 때 데이터베이스는 `DB_CREATE_FILE_DEST` 초기화 파라미터의 현재 설정을 기반으로 설정을 파생시킵니다.

`DB_CREATE_FILE_DEST` 초기화 파라미터의 기본값은 독립 실행형 데이터베이스의 경우 `/rdsdbdata/db`, 컨테이너화된(CDB/MT) 아키텍처의 경우 `/rdsdbdata/db/pdb`입니다. DB 인스턴스에 추가 스토리지 볼륨이 있는 경우 `DB_CREATE_FILE_DEST`를 볼륨 위치로 설정할 수 있습니다. 예를 들어 인스턴스에 `/rdsdbdata/db`에 탑재된 볼륨이 있는 경우 `DB_CREATE_FILE_DEST`를 이 값으로 설정할 수 있습니다.

세션 수준 또는 Oracle 데이터베이스 인스턴스 수준에서 `DB_CREATE_FILE_DEST` 파라미터를 수정할 수 있습니다.

### 인스턴스 수준에서 DB\$1CREATE\$1FILE\$1SET 수정
<a name="Appendix.Oracle.CommonDBATasks.InstanceLevelModification"></a>

인스턴스 수준에서 파라미터를 수정하려면 DB 인스턴스에 할당된 파라미터 그룹의 파라미터를 업데이트하고 적용합니다. 자세한 내용은 [RDS for Oracle 초기화 파라미터](Oracle.Concepts.FeatureSupport.Parameters.md) 및 [Amazon RDS에서 DB 파라미터 그룹의 파라미터 수정](USER_WorkingWithParamGroups.Modifying.md)(을)를 참조하세요.

### 세션 수준에서 DB\$1CREATE\$1FILE\$1DEST 수정
<a name="Appendix.Oracle.CommonDBATasks.SessionLevelModification"></a>

`ALTER SESSION` 문을 실행하여 세션 수준에서 파라미터를 수정할 수 있습니다. 이 접근 방식은 전체 인스턴스에 영향을 주지 않고 특정 세션의 특정 위치에 데이터베이스 파일을 생성하려는 경우에 유용합니다.

다음 예제에서는 현재 파라미터 값을 확인하고 세션에 맞게 수정하는 방법을 보여 줍니다.

```
SHOW PARAMETER db_create_file_dest

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_create_file_dest                  string      /rdsdbdata/db

ALTER SESSION SET db_create_file_dest = '/rdsdbdata2/db';

Session altered.

SHOW PARAMETER db_create_file_dest

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_create_file_dest                  string      /rdsdbdata2/db
```

## RDS for Oracle에서 테이블스페이스 생성 및 크기 조정
<a name="Appendix.Oracle.CommonDBATasks.CreatingTablespacesAndDatafiles"></a>

테이블스페이스를 생성하면 데이터베이스는 생성 시 `DB_CREATE_FILE_DEST` 초기화 파라미터로 지정된 스토리지 볼륨에 데이터 파일을 생성합니다. 기본적으로 데이터 파일 크기를 지정하지 않으면 테이블스페이스는 기본값이 `AUTOEXTEND ON`으로 생성되며, 최대 크기가 없습니다. 다음 예제에서 테이블스페이스 *users1*은 자동 확장이 가능합니다.

```
CREATE TABLESPACE users1;
```

이러한 기본 설정 때문에, 테이블스페이스가 할당된 모든 스토리지를 차지할 때까지 확장되기도 합니다. 되도록 영구 및 임시 테이블스페이스에 적절한 최대 크기를 지정하고, 공간 사용량을 자세히 살펴보십시오.

다음은 시작 크기가 1GB인 *users2*라는 이름의 테이블스페이스를 생성하는 예제입니다. 데이터 파일 크기가 지정되었지만 `AUTOEXTEND ON`이 지정되지 않았으므로 테이블스페이스를 자동 확장할 수 없습니다.

```
CREATE TABLESPACE users2 DATAFILE SIZE 1G;
```

다음은 시작 크기가 1GB이고 최대 크기가 10GB인 *users3*라는 이름의 테이블스페이스를 생성하는 예제입니다.

```
CREATE TABLESPACE users3 DATAFILE SIZE 1G AUTOEXTEND ON MAXSIZE 10G;
```

다음은 *temp01*이라는 이름의 임시 테이블스페이스를 생성하는 예제입니다.

```
CREATE TEMPORARY TABLESPACE temp01;
```

`ALTER TABLESPACE`를 사용하여 빅파일 테이블스페이스 크기를 조정할 수 있습니다. 크기는 킬로바이트(K), 메가바이트(M), 기가바이트(G)나 테라바이트(T)로 설정할 수 있습니다. 다음 예제에서는 *users\$1bf*라는 빅파일 테이블스페이스의 크기를 200MB로 조정합니다.

```
ALTER TABLESPACE users_bf RESIZE 200M;
```

다음 예에서는 *users\$1sf*라는 스몰파일 테이블스페이스에 데이터 파일을 추가합니다.

```
ALTER TABLESPACE users_sf ADD DATAFILE SIZE 100000M AUTOEXTEND ON NEXT 250m MAXSIZE UNLIMITED;
```

## RDS for Oracle에서 추가 스토리지 볼륨에 테이블스페이스 생성
<a name="Appendix.Oracle.CommonDBATasks.CreatingTablespacesWithFileLocations"></a>

추가 스토리지 볼륨에 테이블스페이스를 생성하려면 `DB_CREATE_FILE_DEST` 파라미터를 볼륨 위치로 수정합니다. 다음 예제에서는 파일 위치를 `/rdsdbdata2/db`로 설정합니다.

```
ALTER SESSION SET db_create_file_dest = '/rdsdbdata2/db';

Session altered.
```

다음 예제에서는 추가 볼륨 `/rdsdbdata2/db`에 테이블스페이스를 생성합니다.

```
CREATE TABLESPACE new_tablespace DATAFILE SIZE 10G;

Tablespace created.

SELECT tablespace_name,file_id,file_name FROM dba_data_files
WHERE tablespace_name = 'NEW_TABLESPACE';

TABLESPACE_NAME              FILE_ID FILE_NAME
------------------------- ---------- --------------------------------------------------------------------------------
NEW_TABLESPACE                     7 /rdsdbdata2/db/ORCL_A/datafile/o1_mf_newtable_a123b4c5_.dbf
```

smallfile 테이블스페이스를 생성하고 데이터 파일을 여러 스토리지 볼륨에 분산하려면 테이블스페이스를 생성한 후 테이블스페이스에 데이터 파일을 추가합니다. 다음 예제에서는 데이터 파일이의 기본 위치인 `/rdsdbdata/db`에 있는 테이블스페이스를 생성합니다. 그런 다음 기본 대상을 `/rdsdbdata/db2`로 설정합니다. 새로 생성된 테이블스페이스에 데이터 파일을 추가하면 데이터베이스가 파일을 `/rdsdbdata/db2`에 저장합니다.

```
ALTER SESSION SET db_create_file_dest = '/rdsdbdata/db';

Session altered.

CREATE SMALLFILE TABLESPACE smalltbs DATAFILE SIZE 10G;

Tablespace created.

SELECT tablespace_name,file_id,file_name FROM dba_data_files
WHERE tablespace_name = 'SMALLTBS';

TABLESPACE_NAME              FILE_ID FILE_NAME
------------------------- ---------- --------------------------------------------------------------------------------
SMALLTBS                           8 /rdsdbdata/db/ORCL_A/datafile/o1_mf_smalltbs_n563yryk_.dbf

ALTER SESSION SET db_create_file_dest = '/rdsdbdata2/db';

Session altered.

ALTER TABLESPACE smalltbs ADD DATAFILE SIZE 10G;

Tablespace altered.

SELECT tablespace_name,file_id,file_name FROM dba_data_files
WHERE tablespace_name = 'SMALLTBS';

TABLESPACE_NAME              FILE_ID FILE_NAME
------------------------- ---------- --------------------------------------------------------------------------------
SMALLTBS                           8 /rdsdbdata/db/ORCL_A/datafile/o1_mf_smalltbs_n563yryk_.dbf
SMALLTBS                           9 /rdsdbdata2/db/ORCL_A/datafile/o1_mf_smalltbs_n564004g_.dbf
```

## RDS for Oracle에서 기본 테이블스페이스 설정
<a name="Appendix.Oracle.CommonDBATasks.SettingDefaultTablespace"></a>

기본 테이블스페이스를 설정하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_util.alter_default_tablespace`를 사용합니다. `alter_default_tablespace` 프로시저에는 다음과 같은 파라미터가 있습니다.


****  

| 파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | 
|  `tablespace_name`  |  varchar  |  —  |  예  |  기본 테이블스페이스의 이름입니다.  | 

다음은 기본 테이블스페이스를 *users2*로 설정하는 예제입니다.

```
EXEC rdsadmin.rdsadmin_util.alter_default_tablespace(tablespace_name => 'users2');
```

## RDS for Oracle에서 기본 임시 테이블스페이스 설정
<a name="Appendix.Oracle.CommonDBATasks.SettingDefTempTablespace"></a>

기본 임시 테이블스페이스를 설정하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_util.alter_default_temp_tablespace`를 사용합니다. `alter_default_temp_tablespace` 프로시저에는 다음과 같은 파라미터가 있습니다.


****  

| 파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | 
|  `tablespace_name`  |  varchar  |  —  |  예  |  기본 임시 테이블스페이스의 이름입니다.  | 

다음 예에서는 기본 임시 테이블스페이스를 *temp01*으로 설정합니다.

```
EXEC rdsadmin.rdsadmin_util.alter_default_temp_tablespace(tablespace_name => 'temp01');
```

## 인스턴스 스토어에 임시 테이블스페이스 생성
<a name="Appendix.Oracle.CommonDBATasks.creating-tts-instance-store"></a>

인스턴스 스토어에 임시 테이블스페이스를 생성하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_util.create_inst_store_tmp_tblspace`를 사용합니다. `create_inst_store_tmp_tblspace` 프로시저에는 다음과 같은 파라미터가 있습니다.


****  

| 파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | 
|  `p_tablespace_name`  |  varchar  |  —  |  예  |  기본 임시 테이블스페이스의 이름입니다.  | 

다음 예에서는 인스턴스 스토어에 임시 테이블스페이스 *temp01*을 생성합니다.

```
EXEC rdsadmin.rdsadmin_util.create_inst_store_tmp_tblspace(p_tablespace_name => 'temp01');
```

**중요**  
`rdsadmin_util.create_inst_store_tmp_tblspace`를 실행할 때 새로 생성된 임시 테이블스페이스는 자동으로 기본 임시 테이블스페이스로 설정되지 않습니다. 기본값으로 설정하려면 [RDS for Oracle에서 기본 임시 테이블스페이스 설정](#Appendix.Oracle.CommonDBATasks.SettingDefTempTablespace)를 참조하세요.

자세한 내용은 [RDS for Oracle 인스턴스 스토어에 임시 데이터 저장](CHAP_Oracle.advanced-features.instance-store.md) 섹션을 참조하세요.

# RDS for Oracle에서 tempfiles 작업
<a name="Appendix.Oracle.CommonDBATasks.using-tempfiles"></a>

## 읽기 전용 복제본의 인스턴스 스토어에 임시 파일 추가
<a name="Appendix.Oracle.CommonDBATasks.adding-tempfile-replica"></a>

기본 DB 인스턴스에서 임시 테이블스페이스를 생성하면 읽기 전용 복제본으로 임시 파일이 생성되지 않습니다. 다음 이유 중 하나로 인해 읽기 전용 복제본에 빈 임시 테이블스페이스가 있다고 가정해 보겠습니다.
+ 읽기 전용 복제본의 테이블스페이스에서 임시 파일을 삭제했습니다. 자세한 내용은 [읽기 전용 복제본에서 임시 파일 삭제](Appendix.Oracle.CommonDBATasks.dropping-tempfiles-replica.md) 섹션을 참조하세요.
+ 기본 DB 인스턴스에 새 임시 테이블스페이스를 생성했습니다. 이 경우 RDS for Oracle은 읽기 전용 복제본에 메타데이터를 동기화합니다.

빈 임시 테이블스페이스에 임시 파일을 추가하고 인스턴스 스토어에 임시 파일을 저장할 수 있습니다. 인스턴스 스토어에 임시 파일을 생성하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_util.add_inst_store_tempfile`을 사용합니다. 이 프로시저는 읽기 전용 복제본에서만 사용할 수 있습니다. 프로시저에는 다음과 같은 파라미터가 있습니다.


****  

| 파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | 
|  `p_tablespace_name`  |  varchar  |  —  |  예  |  읽기 전용 복제본에 있는 임시 테이블스페이스의 이름입니다.  | 

다음 예에서는 빈 임시 테이블스페이스 *temp01*이 읽기 전용 복제본에 있습니다. 다음 명령을 실행하여 이 테이블스페이스에 대한 임시 파일을 생성하고 인스턴스 스토어에 저장합니다.

```
EXEC rdsadmin.rdsadmin_util.add_inst_store_tempfile(p_tablespace_name => 'temp01');
```

자세한 내용은 [RDS for Oracle 인스턴스 스토어에 임시 데이터 저장](CHAP_Oracle.advanced-features.instance-store.md) 섹션을 참조하세요.

# 읽기 전용 복제본에서 임시 파일 삭제
<a name="Appendix.Oracle.CommonDBATasks.dropping-tempfiles-replica"></a>

읽기 전용 복제본에서 기존 임시 테이블스페이스를 삭제할 수 없습니다. 읽기 전용 복제본의 임시 파일 스토리지를 Amazon EBS에서 인스턴스 스토어로 또는 인스턴스 스토어에서 Amazon EBS로 변경할 수 있습니다. 이를 위해 다음을 수행합니다.

1. 현재 읽기 전용 복제본의 임시 테이블스페이스에 있는 임시 파일을 삭제합니다.

1. 다른 스토리지에 새 임시 파일을 생성합니다.

임시 파일을 삭제하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_util. drop_replica_tempfiles`을 사용합니다. 이 절차는 읽기 전용 복제본에서만 사용할 수 있습니다. `drop_replica_tempfiles` 프로시저에는 다음과 같은 파라미터가 있습니다.


****  

| 파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | 
|  `p_tablespace_name`  |  varchar  |  —  |  예  |  읽기 전용 복제본에 있는 임시 테이블스페이스의 이름입니다.  | 

*temp01*이라는 임시 테이블스페이스가 읽기 전용 복제본의 인스턴스 스토어에 있다고 가정해 보겠습니다. 다음 명령을 실행하여 이 테이블스페이스의 모든 임시 파일을 삭제합니다.

```
EXEC rdsadmin.rdsadmin_util.drop_replica_tempfiles(p_tablespace_name => 'temp01');
```

자세한 내용은 [RDS for Oracle 인스턴스 스토어에 임시 데이터 저장](CHAP_Oracle.advanced-features.instance-store.md) 섹션을 참조하세요.

# RDS for Oracle의 테이블스페이스, 데이터 파일 및 임시 파일 크기 조정
<a name="Appendix.Oracle.CommonDBATasks.ResizeTempSpaceReadReplica"></a>

기본적으로 Oracle 테이블스페이스는 자동 확장이 켜진 상태로 생성되며 최대 크기는 지정되지 않습니다. 이러한 기본 설정 때문에 테이블스페이스가 너무 크게 확장될 때가 있습니다. 되도록 영구 및 임시 테이블스페이스에 적절한 최대 크기를 지정하고, 공간 사용량을 자세히 살펴보십시오.

## 영구 테이블스페이스 크기 조정
<a name="resizing-perm-tbs"></a>

RDS for Oracle DB 인스턴스에서 영구 테이블스페이스의 크기를 조정하려면 다음 Amazon RDS 프로시저 중 하나를 사용하세요.
+ `rdsadmin.rdsadmin_util.resize_datafile`
+ `rdsadmin.rdsadmin_util.autoextend_datafile`

`resize_datafile` 프로시저에는 다음과 같은 파라미터가 있습니다.


****  

| 파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | 
|  `p_data_file_id`  |  숫자  |  —  |  예  |  크기를 조정할 데이터 파일의 식별자.  | 
|  `p_size`  |  varchar2  |  —  |  예  |  데이터 파일의 크기. 크기는 바이트(기본값), 킬로바이트(K), 메가바이트(M) 또는 기가바이트(G)로 지정합니다.  | 

`autoextend_datafile` 프로시저에는 다음과 같은 파라미터가 있습니다.


****  

| 파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | 
|  `p_data_file_id`  |  숫자  |  —  |  예  |  크기를 조정할 데이터 파일의 식별자.  | 
|  `p_autoextend_state`  |  varchar2  |  —  |  예  |  자동 확장 기능의 상태. 데이터 파일을 자동으로 확장하려면 `ON`으로 지정하고, 자동 확장을 끄려면 `OFF`로 지정합니다.  | 
|  `p_next`  |  varchar2  |  —  |  아니요  |  다음 데이터 파일 증분의 크기. 크기는 바이트(기본값), 킬로바이트(K), 메가바이트(M) 또는 기가바이트(G)로 지정합니다.  | 
|  `p_maxsize`  |  varchar2  |  —  |  아니요  |  자동 확장에 허용되는 최대 디스크 공간. 크기는 바이트(기본값), 킬로바이트(K), 메가바이트(M) 또는 기가바이트(G)로 지정합니다. `UNLIMITED`를 지정하여 파일 크기 제한을 없앨 수 있습니다.  | 

다음 예제에서는 데이터 파일 크기를 4\$1500MB로 조정합니다.

```
EXEC rdsadmin.rdsadmin_util.resize_datafile(4,'500M');
```

다음 예제에서는 데이터 파일 4의 자동 확장을 끕니다. 또한 데이터 파일 5는 자동 확장을 켜고, 최대 크기 없이 128MB씩 증분하는 걸로 설정합니다.

```
EXEC rdsadmin.rdsadmin_util.autoextend_datafile(4,'OFF');
EXEC rdsadmin.rdsadmin_util.autoextend_datafile(5,'ON','128M','UNLIMITED');
```

## 임시 테이블스페이스의 크기 조정
<a name="resizing-temp-tbs"></a>

RDS for Oracle DB 인스턴스에서 임시 테이블스페이스의 크기를 조정하려면 다음 Amazon RDS 프로시저 중 하나를 사용하세요.
+ `rdsadmin.rdsadmin_util.resize_temp_tablespace`
+ `rdsadmin.rdsadmin_util.resize_tempfile`
+ `rdsadmin.rdsadmin_util.autoextend_tempfile`

`resize_temp_tablespace` 프로시저에는 다음과 같은 파라미터가 있습니다.


****  

| 파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | 
|  `p_temp_tablespace_name`  |  varchar2  |  —  |  예  |  크기를 조정할 임시 테이블스페이스의 이름입니다.  | 
|  `p_size`  |  varchar2  |  —  |  예  |  테이블스페이스의 크기. 크기는 바이트(기본값), 킬로바이트(K), 메가바이트(M) 또는 기가바이트(G)로 지정합니다.  | 

`resize_tempfile` 프로시저에는 다음과 같은 파라미터가 있습니다.


****  

| 파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | 
|  `p_temp_file_id`  |  숫자  |  —  |  예  |  크기를 조정할 임시 테이블스페이스의 파일 식별자.  | 
|  `p_size`  |  varchar2  |  —  |  예  |  임시 파일의 크기. 크기는 바이트(기본값), 킬로바이트(K), 메가바이트(M) 또는 기가바이트(G)로 지정합니다.  | 

`autoextend_tempfile` 프로시저에는 다음과 같은 파라미터가 있습니다.


****  

| 파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | 
|  `p_temp_file_id`  |  숫자  |  —  |  예  |  크기를 조정할 임시 테이블스페이스의 파일 식별자.  | 
|  `p_autoextend_state`  |  varchar2  |  —  |  예  |  자동 확장 기능의 상태. 임시 파일을 자동으로 확장하려면 `ON`으로 지정하고, 자동 확장을 끄려면 `OFF`로 지정합니다.  | 
|  `p_next`  |  varchar2  |  —  |  아니요  |  다음 임시 파일 증분의 크기. 크기는 바이트(기본값), 킬로바이트(K), 메가바이트(M) 또는 기가바이트(G)로 지정합니다.  | 
|  `p_maxsize`  |  varchar2  |  —  |  아니요  |  자동 확장에 허용되는 최대 디스크 공간. 크기는 바이트(기본값), 킬로바이트(K), 메가바이트(M) 또는 기가바이트(G)로 지정합니다. `UNLIMITED`를 지정하여 파일 크기 제한을 없앨 수 있습니다.  | 

다음 예제에서는 `TEMP`라는 이름의 임시 테이블스페이스의 크기를 4GB로 조정합니다.

```
EXEC rdsadmin.rdsadmin_util.resize_temp_tablespace('TEMP','4G');
```

```
EXEC rdsadmin.rdsadmin_util.resize_temp_tablespace('TEMP','4096000000');
```

다음 예제에서는 파일 식별자가 `1`인 임시 파일을 기준으로 하는 임시 테이블스페이스의 크기를 2MB로 조정합니다.

```
EXEC rdsadmin.rdsadmin_util.resize_tempfile(1,'2M');
```

다음 예제에서는 임시 파일 1의 자동 확장을 끕니다. 또한 임시 파일의 최대 자동 확장 크기를 2GB에서 10GB로 설정하며, 100MB씩 증분합니다.

```
EXEC rdsadmin.rdsadmin_util.autoextend_tempfile(1,'OFF');
EXEC rdsadmin.rdsadmin_util.autoextend_tempfile(2,'ON','100M','10G');
```

Oracle DB 인스턴스의 읽기 전용 복제본에 대한 자세한 내용은 [Amazon RDS의 Oracle의 읽기 전용 복제본 작업](oracle-read-replicas.md) 섹션을 참조하세요.

# RDS for Oracle의 스토리지 볼륨 간에 데이터 이동
<a name="Appendix.Oracle.CommonDBATasks.MovingDataBetweenVolumes"></a>

기본 스토리지 볼륨과 추가 스토리지 볼륨 간에 데이터 파일과 데이터베이스 객체를 이동할 수 있습니다. 데이터를 이동하기 전에 다음 사항을 고려하세요.
+ 소스 및 대상 볼륨에는 충분한 여유 공간이 있어야 합니다.
+ 데이터 이동 작업은 두 볼륨 모두에서 I/O를 사용합니다.
+ 대규모 데이터 이동은 데이터베이스 성능에 영향을 미칠 수 있습니다.
+ 스냅샷을 복원할 때 EBS 지연 로드의 영향을 받으면 스토리지 볼륨 간에 데이터를 이동하는 속도가 느려질 수 있습니다.

**Topics**
+ [RDS for Oracle의 볼륨 간에 데이터 파일 이동](#Appendix.Oracle.CommonDBATasks.MovingDatafiles)
+ [RDS for Oracle의 볼륨 간에 테이블 데이터 및 인덱스 이동](#Appendix.Oracle.CommonDBATasks.MovingTableData)
+ [추가 볼륨을 사용하여 LOB 스토리지 관리](#Appendix.Oracle.CommonDBATasks.ManagingLargeLOBStorage)

## RDS for Oracle의 볼륨 간에 데이터 파일 이동
<a name="Appendix.Oracle.CommonDBATasks.MovingDatafiles"></a>

스토리지 볼륨 간에 데이터 파일을 이동하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_util.move_datafile`을 사용합니다. 다음과 같은 요구 사항을 확인합니다.
+ Oracle Enterprise Edition을 사용하여 `move_datafile` 프로시저를 실행해야 합니다.
+ 테이블스페이스 `SYSTEM` 및 `RDSADMIN`은 이동할 수 없습니다.

`move_datafile` 프로시저에는 다음과 같은 파라미터가 있습니다.


****  

| 파라미터 이름 | 데이터 형식 | 필수 | 설명 | 
| --- | --- | --- | --- | 
|  `p_data_file_id`  |  숫자  |  예  |  이동할 데이터 파일의 ID입니다.  | 
|  `p_location`  |  varchar2  |  예  |  데이터 파일을 이동할 스토리지 볼륨입니다.  | 

다음 예시에서는 테이블스페이스를 기본 볼륨 `rdsdbdata`에서 추가 볼륨 `rdsdbdata2`로 이동합니다.

```
SQL> SELECT tablespace_name,file_id,file_name FROM dba_data_files
 WHERE tablespace_name = 'MYNEWTABLESPACE';

TABLESPACE_NAME              FILE_ID FILE_NAME
------------------------- ---------- --------------------------------------------------------------------------------
MYNEWTABLESPACE                    6 /rdsdbdata/db/ORCL_A/datafile/o1_mf_mynewtab_n123abcd_.dbf

EXECUTE rdsadmin.rdsadmin_util.move_datafile( 6, 'rdsdbdata2');

PL/SQL procedure successfully completed.

SQL> SELECT tablespace_name,file_id,file_name FROM dba_data_files
  WHERE tablespace_name = 'MYNEWTABLESPACE';

TABLESPACE_NAME              FILE_ID FILE_NAME
------------------------- ---------- --------------------------------------------------------------------------------
MYNEWTABLESPACE                    6 /rdsdbdata2/db/ORCL_A/datafile/o1_mf_mynewtab_n356efgh_.dbf
```

## RDS for Oracle의 볼륨 간에 테이블 데이터 및 인덱스 이동
<a name="Appendix.Oracle.CommonDBATasks.MovingTableData"></a>

추가 스토리지 볼륨에 테이블스페이스를 생성하여 데이터베이스 스토리지를 최적화할 수 있습니다. 그런 다음 표준 Oracle SQL을 사용하여 테이블, 인덱스 및 파티션과 같은 객체를 이러한 테이블스페이스로 이동할 수 있습니다. 이 접근 방식은 데이터베이스에 액세스 패턴이 다른 데이터가 포함된 경우 성능 튜닝에 유용합니다. 예를 들어 자주 액세스하는 운영 데이터를 고성능 스토리지 볼륨에 저장하는 동시에 거의 액세스하지 않는 기록 데이터를 저비용 스토리지 볼륨으로 이동할 수 있습니다.

다음 예제에서는 고성능 볼륨 `rdsdbdata2`에 새 테이블스페이스를 생성합니다. 그런 다음 테이블이 온라인 상태일 때 테이블을 추가 스토리지 볼륨으로 이동합니다. 또한 인덱스를 동일한 볼륨으로 이동합니다. 온라인 상태에서 테이블을 이동하고 인덱스를 다시 빌드하려면 Oracle Enterprise Edition이 필요합니다.

```
ALTER SESSION SET db_create_file_dest = '/rdsdbdata2/db';
CREATE TABLESPACE perf_tbs DATAFILE SIZE 10G;

ALTER TABLE employees
  MOVE TABLESPACE perf_tbs ONLINE;

ALTER INDEX employees_idx
  REBUILD ONLINE TABLESPACE perf_tbs;
```

다음 예제에서는 저비용 볼륨에 테이블스페이스를 생성합니다. 그런 다음 온라인 작업을 사용하여 테이블 파티션을 저비용 스토리지 볼륨으로 이동합니다.

```
ALTER SESSION SET db_create_file_dest = '/rdsdbdata3/db';
CREATE TABLESPACE hist_tbs DATAFILE SIZE 10G;

ALTER TABLE orders
  MOVE PARTITION orders_2022
  TABLESPACE hist_tbs ONLINE;
```

다음 예제에서는 활성 세션 긴 작업을 쿼리합니다.

```
SELECT sid,opname,sofar,totalwork,time_remaining,elapsed_seconds 
  FROM v$session_longops 
  WHERE time_remaining > 0;
```

다음 쿼리를 사용하여 테이블스페이스 사용량을 확인할 수 있습니다.

```
SELECT tablespace_name, used_percent
  FROM dba_tablespace_usage_metrics
  ORDER BY used_percent DESC;
```

## 추가 볼륨을 사용하여 LOB 스토리지 관리
<a name="Appendix.Oracle.CommonDBATasks.ManagingLargeLOBStorage"></a>

데이터베이스에는 상당한 스토리지를 사용하지만 자주 액세스하지 않는 BLOB 또는 CLOB 객체가 있는 테이블이 포함될 수 있습니다. 스토리지를 최적화하기 위해 이러한 LOB 세그먼트를 추가 스토리지 볼륨의 테이블스페이스로 재배치할 수 있습니다.

다음 예제에서는 저액세스 데이터를 위한 저비용 볼륨에서 LOB 데이터에 대한 테이블스페이스를 생성합니다. 그런 다음이 볼륨에 데이터를 저장하는 테이블을 생성합니다.

```
ALTER SESSION SET db_create_file_dest = '/rdsdbdata3/db';
CREATE TABLESPACE lob_data DATAFILE SIZE 5G AUTOEXTEND ON NEXT 1G;

CREATE TABLE documents (
    doc_id NUMBER PRIMARY KEY,
    doc_date DATE,
    doc_content CLOB
) TABLESPACE user_data
LOB(doc_content) STORE AS (TABLESPACE lob_data);
```

# RDS for Oracle의 외부 테이블 작업
<a name="Appendix.Oracle.CommonDBATasks.External_Tables"></a>

*Oracle 외부 테이블*이란 데이터가 데이터베이스에 저장되어 있지 않은 테이블을 말합니다. 오히려 데이터베이스가 액세스할 수 있는 외부 파일에 데이터가 저장되어 있습니다. 외부 테이블을 사용하면 데이터베이스에 테이블을 로드하지 않고도 데이터에 액세스할 수 있습니다. 외부 테이블에 대한 자세한 내용은 Oracle 설명서에서 [Managing External Tables](http://docs.oracle.com/database/121/ADMIN/tables.htm#ADMIN01507)를 참조하세요.

Amazon RDS에서는 외부 테이블 파일을 디렉터리 객체에 저장할 수 있습니다. 디렉터리 객체는 생성할 수도 있지만, DATA\$1PUMP\$1DIR 디렉터리처럼 Oracle 데이터베이스에 사전 정의되어 있는 객체를 사용할 수도 있습니다. 디렉터리 객체 생성에 대한 자세한 내용은 [메인 데이터 스토리지 공간에서 디렉터리 생성 및 삭제](Appendix.Oracle.CommonDBATasks.Misc.md#Appendix.Oracle.CommonDBATasks.NewDirectories) 섹션을 참조하세요. ALL\$1DIRECTORIES 뷰에 대한 쿼리를 실행하여 Amazon RDS Oracle DB 인스턴스의 디렉터리 객체 목록을 조회할 수 있습니다.

**참고**  
디렉터리 객체는 인스턴스에서 사용하는 메인 데이터 스토리지 공간(Amazon EBS 볼륨)을 가리킵니다. 데이터 파일, 재실행 로그, 감사, 트레이스 및 기타 파일 등에 사용되는 공간은 할당된 공간에서 차감됩니다.

외부 데이터 파일은 [ DBMS\$1FILE\$1TRANSFER](https://docs.oracle.com/database/121/ARPLS/d_ftran.htm#ARPLS095) 패키지 또는 [UTL\$1FILE](https://docs.oracle.com/database/121/ARPLS/u_file.htm#ARPLS069) 패키지를 사용하여 Oracle 데이터베이스에서 다른 Oracle 데이터베이스로 이동시킬 수 있습니다. 그러면 원본 데이터베이스의 디렉터리에서 대상 데이터베이스의 특정 디렉터리로 외부 데이터 파일이 이동합니다. `DBMS_FILE_TRANSFER` 사용에 대한 자세한 내용은 [Oracle Data Pump를 사용한 가져오기](Oracle.Procedural.Importing.DataPump.md)을 참조하세요.

외부 데이터 파일을 이동시켰으면 이제 이 파일을 이용해 외부 테이블을 생성할 수 있습니다. 다음 예에서는 USER\$1DIR1 디렉터리의 `emp_xt_file1.txt` 파일을 사용하는 외부 테이블을 생성합니다.

```
CREATE TABLE emp_xt (
  emp_id      NUMBER,
  first_name  VARCHAR2(50),
  last_name   VARCHAR2(50),
  user_name   VARCHAR2(20)
)
ORGANIZATION EXTERNAL (
  TYPE ORACLE_LOADER
  DEFAULT DIRECTORY USER_DIR1
  ACCESS PARAMETERS (
    RECORDS DELIMITED BY NEWLINE
    FIELDS TERMINATED BY ','
    MISSING FIELD VALUES ARE NULL
    (emp_id,first_name,last_name,user_name)
  )
  LOCATION ('emp_xt_file1.txt')
)
PARALLEL
REJECT LIMIT UNLIMITED;
```

예를 들어 Amazon RDS Oracle DB 인스턴스에 저장된 데이터를 외부 데이터 파일로 이동시킨다고 가정하겠습니다. 이때는 외부 테이블을 생성한 후 데이터베이스 테이블에서 데이터를 선택하여 외부 데이터 파일을 채울 수 있습니다. 다음은 데이터베이스의 `orders_xt` 테이블에 대해 쿼리를 실행하여 `orders` 외부 테이블을 생성하는 SQL 문입니다.

```
CREATE TABLE orders_xt
  ORGANIZATION EXTERNAL
   (
     TYPE ORACLE_DATAPUMP
     DEFAULT DIRECTORY DATA_PUMP_DIR
     LOCATION ('orders_xt.dmp')
   )
   AS SELECT * FROM orders;
```

위 예제에서는 DATA\$1PUMP\$1DIR 디렉터리의 `orders_xt.dmp` 파일이 데이터로 채워집니다.

# 데이터베이스 체크포인트
<a name="Appendix.Oracle.CommonDBATasks.CheckpointingDatabase"></a>

데이터베이스에 체크포인트를 만들려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_util.checkpoint`를 사용합니다. `checkpoint` 프로시저에는 파라미터가 없습니다.

다음 예에서는 데이터베이스에 체크포인트를 만듭니다.

```
EXEC rdsadmin.rdsadmin_util.checkpoint;
```

# 분산 복구 설정
<a name="Appendix.Oracle.CommonDBATasks.SettingDistributedRecovery"></a>

분산 복구를 설정하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_util.enable_distr_recovery` 및 `disable_distr_recovery`를 사용합니다. 프로시저에는 파라미터가 없습니다.

다음 예에서는 분산 복구를 활성화합니다.

```
EXEC rdsadmin.rdsadmin_util.enable_distr_recovery;
```

다음 예에서는 분산 복구를 비활성화합니다.

```
EXEC rdsadmin.rdsadmin_util.disable_distr_recovery;
```

# 데이터베이스 시간대 설정
<a name="Appendix.Oracle.CommonDBATasks.TimeZoneSupport"></a>

다음과 같은 방법으로 Amazon RDS Oracle 데이터베이스의 시간대를 설정할 수 있습니다.
+ `Timezone` 옵션

  `Timezone` 옵션은 호스트 수준에서 시간대를 변경하여 `SYSDATE`를 포함한 모든 데이터 열과 값에 영향을 끼칩니다. 자세한 내용은 [Oracle 시간대](Appendix.Oracle.Options.Timezone.md) 섹션을 참조하세요.
+ Amazon RDS 프로시저 `rdsadmin.rdsadmin_util.alter_db_time_zone`

  `alter_db_time_zone` 절차는 특정 데이터 유형의 시간대만 변경하며 `SYSDATE`는 변경하지 않습니다. 시간대 설정에 대한 자세한 제한 사항은 [Oracle 문서](http://docs.oracle.com/cd/B19306_01/server.102/b14225/ch4datetime.htm#i1006705)를 참조하세요.

**참고**  
Oracle Scheduler의 기본 시간대를 설정할 수도 있습니다. 자세한 내용은 [Oracle Scheduler 작업의 시간대 설정](Appendix.Oracle.CommonDBATasks.Scheduler.md#Appendix.Oracle.CommonDBATasks.Scheduler.TimeZone) 섹션을 참조하세요.

`alter_db_time_zone` 프로시저에는 다음과 같은 파라미터가 있습니다.


****  

| 파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | 
|  `p_new_tz`  |  varchar2  |  —  |  예  |  지정된 리전이나 협정 세계시(UTC)의 절대 오프셋으로 지정된 새로운 표준 시간대입니다. 사용할 수 있는 오프셋은 -12:00\$1\$114:00입니다.  | 

다음 예제에서는 시간대를 UTC\$13시간으로 변경합니다.

```
EXEC rdsadmin.rdsadmin_util.alter_db_time_zone(p_new_tz => '+3:00');
```

다음 예제에서는 시간대를 아프리카/알제 시간대로 변경합니다.

```
EXEC rdsadmin.rdsadmin_util.alter_db_time_zone(p_new_tz => 'Africa/Algiers');
```

`alter_db_time_zone` 프로시저를 사용하여 시간대를 변경한 후에는 DB 인스턴스를 재부팅해야만 변경 사항이 적용됩니다. 자세한 내용은 [ DB 인스턴스 재부팅](USER_RebootInstance.md) 섹션을 참조하세요. 시간대 업그레이드에 대한 자세한 내용은 [시간대 고려 사항](USER_UpgradeDBInstance.Oracle.OGPG.md#USER_UpgradeDBInstance.Oracle.OGPG.DST) 단원을 참조하세요.

# Automatic Workload Repository(AWR)를 사용하여 성능 보고서 생성
<a name="Appendix.Oracle.CommonDBATasks.AWR"></a>

Oracle은 성능 데이터 수집과 보고서 생성을 위해 Automatic Workload Repository(AWR)를 사용할 것을 권장합니다. AWR에는 Oracle Database Enterprise Edition과 Diagnostics and Tuning 팩용 라이선스가 필요합니다. AWR을 활성화하려면 `CONTROL_MANAGEMENT_PACK_ACCESS` 초기화 파라미터를 `DIAGNOSTIC` 또는 `DIAGNOSTIC+TUNING`으로 설정합니다.

## RDS에서 AWR 보고서 작업
<a name="Appendix.Oracle.CommonDBATasks.AWRTechniques"></a>

`awrrpt.sql`과 같은 스크립트를 실행하면 AWR 보고서를 생성할 수 있습니다. 이러한 스크립트는 데이터베이스 호스트 서버에 설치됩니다. Amazon RDS에서는 호스트에 직접 액세스할 수 없습니다. 그러나 설치된 다른 Oracle Database에서 SQL 스크립트의 복사본을 가져올 수 있습니다. 

`SYS.DBMS_WORKLOAD_REPOSITORY` PL/SQL 패키지에서 프로시저를 실행하여 AWR을 사용할 수도 있습니다. 이 패키지를 사용하여 기준 요소 및 스냅샷을 관리하고 ASH 및 AWR 보고서를 표시할 수 있습니다. 예를 들어 텍스트 형식으로 AWR 보고서를 생성하려면 `DBMS_WORKLOAD_REPOSITORY.AWR_REPORT_TEXT` 프로시저를 실행합니다. 그러나 AWS Management Console에서는 이러한 AWR 보고서에 연결할 수 없습니다.

AWR로 작업할 때 `rdsadmin.rdsadmin_diagnostic_util` 프로시저를 사용하는 것이 좋습니다. 이러한 프로시저를 사용하여 다음을 생성할 수 있습니다.
+ AWR 보고서
+ 활성 세션 기록(ASH) 보고서
+ 자동 데이터베이스 진단 모니터(ADDM) 보고서
+ AWR 데이터의 Oracle Data Pump Export 덤프 파일

`rdsadmin_diagnostic_util` 프로시저는 보고서를 DB 인스턴스 파일 시스템에 저장합니다. 콘솔에서 이러한 보고서에 액세스할 수 있습니다. 또한 `rdsadmin.rds_file_util` 프로시저를 사용하여 보고서에 액세스할 수 있고, S3 통합 옵션을 사용하여 Amazon S3에 복사된 보고서에 액세스할 수 있습니다. 자세한 내용은 [DB 인스턴스 디렉터리의 파일 목록 읽기](Appendix.Oracle.CommonDBATasks.Misc.md#Appendix.Oracle.CommonDBATasks.ReadingFiles) 및 [Amazon S3 통합](oracle-s3-integration.md) 섹션을 참조하세요.

다음 Amazon RDS for Oracle DB 엔진 버전에서 `rdsadmin_diagnostic_util` 프로시저를 사용할 수 있습니다.
+ 모든 Oracle Database 21c 버전
+ 19.0.0.0.ru-2020-04.rur-2020-04.r1 이상의 Oracle Database 19c 버전

복제 시나리오에서 진단 보고서를 사용하는 방법을 설명하는 블로그를 보려면 [Amazon RDS for Oracle 읽기 전용 복제본에 대한 AWR 보고서 생성](https://aws.amazon.com/blogs/database/generate-awr-reports-for-amazon-rds-for-oracle-read-replicas/)을 참조하세요.

## 진단 유틸리티 패키지의 공통 파라미터
<a name="Appendix.Oracle.CommonDBATasks.CommonAWRParam"></a>

`rdsadmin_diagnostic_util` 패키지로 AWR 및 ADDM을 관리할 때는 일반적으로 다음 파라미터를 사용합니다.

<a name="rds-provisioned-iops-storage-range-reference"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/Appendix.Oracle.CommonDBATasks.AWR.html)

rdsadmin\$1diagnostic\$1util 패키지로 ASH를 관리할 때는 일반적으로 다음 파라미터를 사용합니다.

<a name="rds-provisioned-iops-storage-range-reference"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/Appendix.Oracle.CommonDBATasks.AWR.html)

## AWR 보고서 생성
<a name="Appendix.Oracle.CommonDBATasks.GenAWRReport"></a>

AWR 보고서를 생성하려면 `rdsadmin.rdsadmin_diagnostic_util.awr_report` 프로시저를 사용합니다.

다음 예에서는 스냅샷 범위 101–106에 대한 AWR 보고서를 생성합니다. 출력 텍스트 파일의 이름은 `awrrpt_101_106.txt`입니다. AWS Management Console에서 이 보고서에 액세스할 수 있습니다.

```
EXEC rdsadmin.rdsadmin_diagnostic_util.awr_report(101,106,'TEXT');
```

다음 예에서는 스냅샷 범위 63–65에 대한 HTML 보고서를 생성합니다. 출력 HTML 파일의 이름은 `awrrpt_63_65.html`입니다. 이 프로시저는 기본이 아닌 데이터베이스 디렉터리 `AWR_RPT_DUMP`에 보고서를 작성합니다.

```
EXEC rdsadmin.rdsadmin_diagnostic_util.awr_report(63,65,'HTML','AWR_RPT_DUMP');
```

## AWR 데이터를 덤프 파일로 추출
<a name="Appendix.Oracle.CommonDBATasks.ExtractAWR"></a>

AWR 데이터를 덤프 파일로 추출하려면 `rdsadmin.rdsadmin_diagnostic_util.awr_extract` 프로시저를 사용합니다. 이 함수는 PDB 수준에서만 사용할 수 있습니다.

다음 예에서는 스냅샷 범위 101–106을 추출합니다. 출력 덤프 파일의 이름은 `awrextract_101_106.dmp`입니다. 콘솔을 통해 이 파일에 액세스할 수 있습니다.

```
EXEC rdsadmin.rdsadmin_diagnostic_util.awr_extract(101,106);
```

다음 예에서는 스냅샷 범위 63–65를 추출합니다. 출력 덤프 파일의 이름은 `awrextract_63_65.dmp`입니다. 이 파일은 기본이 아닌 데이터베이스 디렉터리 `AWR_RPT_DUMP`에 저장됩니다.

```
EXEC rdsadmin.rdsadmin_diagnostic_util.awr_extract(63,65,'AWR_RPT_DUMP');
```

## ADDM 보고서 생성
<a name="Appendix.Oracle.CommonDBATasks.ADDM"></a>

ADDM 보고서를 생성하려면 `rdsadmin.rdsadmin_diagnostic_util.addm_report` 프로시저를 사용합니다.

다음 예에서는 스냅샷 범위 101–106에 대한 ADDM 보고서를 생성합니다. 출력 텍스트 파일의 이름은 `addmrpt_101_106.txt`입니다. 콘솔을 통해 보고서에 액세스할 수 있습니다.

```
EXEC rdsadmin.rdsadmin_diagnostic_util.addm_report(101,106);
```

다음 예에서는 스냅샷 범위 63–65에 대한 ADDM 보고서를 생성합니다. 출력 텍스트 파일의 이름은 `addmrpt_63_65.txt`입니다. 이 파일은 기본이 아닌 데이터베이스 디렉터리 `ADDM_RPT_DUMP`에 저장됩니다.

```
EXEC rdsadmin.rdsadmin_diagnostic_util.addm_report(63,65,'ADDM_RPT_DUMP');
```

## ASH 보고서 생성
<a name="Appendix.Oracle.CommonDBATasks.ASH"></a>

ASH 보고서를 생성하려면 `rdsadmin.rdsadmin_diagnostic_util.ash_report` 프로시저를 사용합니다.

다음 예에서는 14분 전부터 현재 시간까지의 데이터가 포함된 ASH 보고서를 생성합니다. 출력 파일의 이름은 `ashrptbegin_timeend_time.txt` 형식을 사용하며, 여기서 `begin_time` 및 `end_time`은 `YYYYMMDDHH24MISS` 형식을 사용합니다. 콘솔을 통해 파일에 액세스할 수 있습니다.

```
BEGIN
    rdsadmin.rdsadmin_diagnostic_util.ash_report(
        begin_time     =>     SYSDATE-14/1440,
        end_time       =>     SYSDATE,
        report_type    =>     'TEXT');
END;
/
```

다음 예에서는 2019년 11월 18일 오후 6시 7분부터 2019년 11월 18일 오후 6시 15분까지의 데이터가 포함된 ASH 보고서를 생성합니다. 출력 HTML 보고서의 이름은 `ashrpt_20190918180700_20190918181500.html`입니다. 보고서는 기본이 아닌 데이터베이스 디렉터리 `AWR_RPT_DUMP`에 저장됩니다.

```
BEGIN
    rdsadmin.rdsadmin_diagnostic_util.ash_report(
        begin_time     =>    TO_DATE('2019-09-18 18:07:00', 'YYYY-MM-DD HH24:MI:SS'),
        end_time       =>    TO_DATE('2019-09-18 18:15:00', 'YYYY-MM-DD HH24:MI:SS'),
        report_type    =>    'html',
        dump_directory =>    'AWR_RPT_DUMP');
END;
/
```

## 콘솔 또는 CLI에서 AWR 보고서 액세스
<a name="Appendix.Oracle.CommonDBATasks.AWRConsole"></a>

AWS Management Console 또는 AWS CLI를 사용하여 AWR 보고서에 액세스하거나 덤프 파일을 내보낼 수 있습니다. 자세한 내용은 [데이터베이스 로그 파일 다운로드](USER_LogAccess.Procedural.Downloading.md) 섹션을 참조하세요.

# VPC의 DB 인스턴스에 사용하기 위한 데이터베이스 링크 조정
<a name="Appendix.Oracle.CommonDBATasks.DBLinks"></a>

동일한 Virtual Private Cloud(VPC) 또는 피어링된 VPC 내에서 Amazon RDS DB 인스턴스 간에 Oracle 데이터베이스 링크를 사용하려면 두 DB 인스턴스에 서로에게 이르는 유효한 경로가 있어야 합니다. VPC 라우팅 테이블과 네트워크 ACL(액세스 제어 목록)을 사용하여 DB 인스턴스 간 유효 경로를 확인합니다.

각 DB 인스턴스의 보안 그룹은 다른 DB 인스턴스로(부터)의 수신 및 발신을 허용해야 합니다. 인바운드 및 아웃바운드 규칙은 동일한 VPC 또는 피어링된 VPC에서 보안 그룹을 참조할 수 있습니다. 자세한 내용은 [피어링된 VPC 보안 그룹을 참조하도록 보안 그룹 업데이트](https://docs.aws.amazon.com/vpc/latest/peering/working-with-vpc-peering.html#vpc-peering-security-groups) 단원을 참조하세요.

VPC에서 DHCP 옵션 세트를 이용해 사용자 지정 DNS 서버를 구성했다면, 사용자 지정 DNS 서버가 데이터베이스 링크 타깃의 이름을 확인할 수 있어야 합니다. 자세한 내용은 [사용자 지정 DNS 서버 설정](Appendix.Oracle.CommonDBATasks.System.md#Appendix.Oracle.CommonDBATasks.CustomDNS) 섹션을 참조하세요.

Oracle Data Pump로 데이터베이스 링크를 사용하는 방법에 대한 자세한 내용은 [Oracle Data Pump를 사용한 가져오기](Oracle.Procedural.Importing.DataPump.md) 단원을 참조하세요.

# DB 인스턴스의 기본 에디션 설정
<a name="Appendix.Oracle.CommonDBATasks.DefaultEdition"></a>

데이터베이스 객체는 에디션이라고 하는 프라이빗 환경에서 재정의할 수 있습니다. 이러한 에디션 기반 재정의를 통해 서비스 중단을 최소화하면서 애플리케이션의 데이터베이스 객체를 업그레이드할 수 있습니다.

Amazon RDS Oracle DB 인스턴스의 기본 에디션은 Amazon RDS 프로시저 `rdsadmin.rdsadmin_util.alter_default_edition`을 사용하여 설정할 수 있습니다.

다음은 Amazon RDS Oracle DB 인스턴스의 기본 에디션을 `RELEASE_V1`으로 설정하는 예제입니다.

```
EXEC rdsadmin.rdsadmin_util.alter_default_edition('RELEASE_V1');
```

다음은 Amazon RDS Oracle DB 인스턴스의 기본 에디션을 다시 Oracle 기본값으로 설정하는 예제입니다.

```
EXEC rdsadmin.rdsadmin_util.alter_default_edition('ORA$BASE');
```

Oracle 에디션 기반 재정의에 대한 자세한 내용은 Oracle 설명서에서 [About Editions and Edition-Based Redefinition](https://docs.oracle.com/database/121/ADMIN/general.htm#ADMIN13167)을 참조하세요.

# SYS.AUD\$1 테이블에 대한 감사 활성화
<a name="Appendix.Oracle.CommonDBATasks.EnablingAuditing"></a>

데이터베이스 감사 추적 테이블 `SYS.AUD$`에서 감사를 활성화하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_master_util.audit_all_sys_aud_table`을 사용합니다. 지원되는 유일한 감사 속성은 `ALL`입니다. 개별 문 또는 연산을 감사하거나 감사하지 않을 수 있습니다.

감사 활성화는 다음 버전을 실행하는 Oracle DB 인스턴스에 대해 지원됩니다.
+ Oracle Database 21c(21.0.0)
+ Oracle Database 19c(19.0.0)

`audit_all_sys_aud_table` 프로시저에는 다음과 같은 파라미터가 있습니다.


****  

| 파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | 
|  `p_by_access`  |  부울  |  true  |  아니요  |  `true`로 설정하여 `BY ACCESS`를 감사합니다. `false`로 설정하여 `BY SESSION`를 감사합니다.  | 

다음 쿼리는 데이터베이스의 `SYS.AUD$`에 대한 현재 감사 구성을 반환합니다.

```
SELECT * FROM DBA_OBJ_AUDIT_OPTS WHERE OWNER='SYS' AND OBJECT_NAME='AUD$';
```

다음 명령은 `ALL` `SYS.AUD$`의 `BY ACCESS`에 대한 감사를 활성화합니다.

```
EXEC rdsadmin.rdsadmin_master_util.audit_all_sys_aud_table;

EXEC rdsadmin.rdsadmin_master_util.audit_all_sys_aud_table(p_by_access => true);
```

다음 명령은 `ALL` `SYS.AUD$`의 `BY SESSION`에 대한 감사를 활성화합니다.

```
EXEC rdsadmin.rdsadmin_master_util.audit_all_sys_aud_table(p_by_access => false);
```

자세한 내용은 Oracle 설명서의 [AUDIT(기존 감사)](https://docs.oracle.com/en/database/oracle/oracle-database/12.2/sqlrf/AUDIT-Traditional-Auditing.html#GUID-ADF45B07-547A-4096-8144-50241FA2D8DD)를 참조하세요.

# SYS.AUD\$1 테이블에 대한 감사 비활성화
<a name="Appendix.Oracle.CommonDBATasks.DisablingAuditing"></a>

데이터베이스 감사 추적 테이블 `SYS.AUD$`에서 감사를 비활성화하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_master_util.noaudit_all_sys_aud_table`을 사용합니다. 이 프로시저에는 파라미터가 없습니다.

다음 쿼리는 데이터베이스의 `SYS.AUD$`에 대한 현재 감사 구성을 반환합니다.

```
SELECT * FROM DBA_OBJ_AUDIT_OPTS WHERE OWNER='SYS' AND OBJECT_NAME='AUD$';
```

다음 명령은 `ALL`에 대한 `SYS.AUD$`의 감사를 비활성화합니다.

```
EXEC rdsadmin.rdsadmin_master_util.noaudit_all_sys_aud_table;
```

자세한 내용은 Oracle 설명서의 [NOAUDIT(기존 감사)](https://docs.oracle.com/en/database/oracle/oracle-database/12.2/sqlrf/NOAUDIT-Traditional-Auditing.html#GUID-9D8EAF18-4AB3-4C04-8BF7-37BD0E15434D)를 참조하세요.

# 중단된 온라인 인덱스 빌드 정리
<a name="Appendix.Oracle.CommonDBATasks.CleanupIndex"></a>

실패한 온라인 인덱스 빌드를 정리하려면 Amazon RDS 절차 `rdsadmin.rdsadmin_dbms_repair.online_index_clean`을 사용하세요.

`online_index_clean` 프로시저에는 다음과 같은 파라미터가 있습니다.


****  

| 파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | 
|  `object_id`  |  binary\$1integer  |  `ALL_INDEX_ID`  |  아니요  |  인덱스의 객체 ID입니다. 일반적으로 ORA-08104 오류 텍스트의 객체 ID를 사용할 수 있습니다.  | 
|  `wait_for_lock`  |  binary\$1integer  |  `rdsadmin.rdsadmin_dbms_repair.lock_wait`  |  아니요  |  기본값인 `rdsadmin.rdsadmin_dbms_repair.lock_wait`를 지정하여 기본 객체에 대한 잠금을 가져오세요. 잠금이 실패하면 내부 한도에 이를 때까지 재시도하세요. `rdsadmin.rdsadmin_dbms_repair.lock_nowait`를 지정하여 기본 객체에 대한 잠금을 가져오되 잠금이 실패하면 재시도하지 마십시오.  | 

다음 예에서는 실패한 온라인 인젝스 빌드를 정리합니다.

```
declare
  is_clean boolean;
begin
  is_clean := rdsadmin.rdsadmin_dbms_repair.online_index_clean(
    object_id     => 1234567890, 
    wait_for_lock => rdsadmin.rdsadmin_dbms_repair.lock_nowait
  );
end;
/
```

자세한 내용은 Oracle 문서의 [ONLINE\$1INDEX\$1CLEAN Function](https://docs.oracle.com/database/121/ARPLS/d_repair.htm#ARPLS67555)을 참조하세요.

# 손상된 블록 건너뛰기
<a name="Appendix.Oracle.CommonDBATasks.SkippingCorruptBlocks"></a>

인덱스 및 테이블 스캔 중에 손상된 블록을 건너뛰려면 `rdsadmin.rdsadmin_dbms_repair` 패키지를 사용하세요.

다음 절차에서는 `sys.dbms_repair.admin_table` 절차의 기능을 래핑하고 파라미터를 받아들이지 않습니다.
+ `rdsadmin.rdsadmin_dbms_repair.create_repair_table`
+ `rdsadmin.rdsadmin_dbms_repair.create_orphan_keys_table`
+ `rdsadmin.rdsadmin_dbms_repair.drop_repair_table`
+ `rdsadmin.rdsadmin_dbms_repair.drop_orphan_keys_table`
+ `rdsadmin.rdsadmin_dbms_repair.purge_repair_table`
+ `rdsadmin.rdsadmin_dbms_repair.purge_orphan_keys_table`

다음 절차에서는 Oracle 데이터베이스에 대해 `DBMS_REPAIR` 패키지에서 이에 상응하는 것으로 동일한 파라미터를 받아들입니다.
+ `rdsadmin.rdsadmin_dbms_repair.check_object`
+ `rdsadmin.rdsadmin_dbms_repair.dump_orphan_keys`
+ `rdsadmin.rdsadmin_dbms_repair.fix_corrupt_blocks`
+ `rdsadmin.rdsadmin_dbms_repair.rebuild_freelists`
+ `rdsadmin.rdsadmin_dbms_repair.segment_fix_status`
+ `rdsadmin.rdsadmin_dbms_repair.skip_corrupt_blocks`

데이터베이스 손상 처리에 대한 자세한 내용은 Oracle 설명서의 [DBMS\$1REPAIR](https://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/DBMS_REPAIR.html#GUID-B8EC4AB3-4D6A-46C9-857F-4ED53CD9C948)를 참조하세요.

**Example 손상된 블록에 응답**  
이 예제에서는 손상된 블록에 응답하기 위한 기본 워크플로우를 보여줍니다. 단계는 블록 손상의 위치와 특성에 따라 달라집니다.  
손상된 블록을 복구하기 전에 [DBMS\$1REPAIRE](https://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/DBMS_REPAIR.html#GUID-B8EC4AB3-4D6A-46C9-857F-4ED53CD9C948) 설명서를 주의 깊게 검토하세요.

**인덱스 및 테이블 스캔 중에 손상된 블록을 건너뛰려면**

1. 다음 프로시저를 실행하여 복구 테이블을 생성합니다(아직 없는 경우).

   ```
   EXEC rdsadmin.rdsadmin_dbms_repair.create_repair_table;
   EXEC rdsadmin.rdsadmin_dbms_repair.create_orphan_keys_table;
   ```

1. 다음 절차를 실행하여 기존 레코드를 확인하고 필요에 따라 제거하세요.

   ```
   SELECT COUNT(*) FROM SYS.REPAIR_TABLE;
   SELECT COUNT(*) FROM SYS.ORPHAN_KEY_TABLE;
   SELECT COUNT(*) FROM SYS.DBA_REPAIR_TABLE;
   SELECT COUNT(*) FROM SYS.DBA_ORPHAN_KEY_TABLE;
   
   EXEC rdsadmin.rdsadmin_dbms_repair.purge_repair_table;
   EXEC rdsadmin.rdsadmin_dbms_repair.purge_orphan_keys_table;
   ```

1. 다음 절차를 실행하여 손상된 블록을 확인하세요.

   ```
   SET SERVEROUTPUT ON
   DECLARE v_num_corrupt INT;
   BEGIN
     v_num_corrupt := 0;
     rdsadmin.rdsadmin_dbms_repair.check_object (
       schema_name => '&corruptionOwner',
       object_name => '&corruptionTable',
       corrupt_count =>  v_num_corrupt
     );
     dbms_output.put_line('number corrupt: '||to_char(v_num_corrupt));
   END;
   /
   
   COL CORRUPT_DESCRIPTION FORMAT a30
   COL REPAIR_DESCRIPTION FORMAT a30
   
   SELECT OBJECT_NAME, BLOCK_ID, CORRUPT_TYPE, MARKED_CORRUPT, 
          CORRUPT_DESCRIPTION, REPAIR_DESCRIPTION 
   FROM   SYS.REPAIR_TABLE;
   
   SELECT SKIP_CORRUPT 
   FROM   DBA_TABLES 
   WHERE  OWNER = '&corruptionOwner'
   AND    TABLE_NAME = '&corruptionTable';
   ```

1. `skip_corrupt_blocks` 프로시저를 사용하여 영향을 받은 테이블에 대해 손상 건너뛰기를 활성화 또는 비활성화하세요. 상황에 따라 새 테이블에 데이터를 추출한 다음 손상된 블록이 포함된 테이블을 삭제해야 할 수도 있습니다.

   다음 절차를 실행하여 영향을 받은 테이블에 대해 손상 건너뛰기를 활성화하세요.

   ```
   begin
     rdsadmin.rdsadmin_dbms_repair.skip_corrupt_blocks (
       schema_name => '&corruptionOwner',
       object_name => '&corruptionTable',
       object_type => rdsadmin.rdsadmin_dbms_repair.table_object,
       flags => rdsadmin.rdsadmin_dbms_repair.skip_flag);
   end;
   /
   select skip_corrupt from dba_tables where owner = '&corruptionOwner' and table_name = '&corruptionTable';
   ```

   다음 절차를 실행하여 손상 건너뛰기를 비활성화하세요.

   ```
   begin
     rdsadmin.rdsadmin_dbms_repair.skip_corrupt_blocks (
       schema_name => '&corruptionOwner',
       object_name => '&corruptionTable',
       object_type => rdsadmin.rdsadmin_dbms_repair.table_object,
       flags => rdsadmin.rdsadmin_dbms_repair.noskip_flag);
   end;
   /
   
   select skip_corrupt from dba_tables where owner = '&corruptionOwner' and table_name = '&corruptionTable';
   ```

1. 모든 복구 작업을 완료했으면 다음 프로시저를 실행하여 복구 테이블을 삭제합니다.

   ```
   EXEC rdsadmin.rdsadmin_dbms_repair.drop_repair_table;
   EXEC rdsadmin.rdsadmin_dbms_repair.drop_orphan_keys_table;
   ```

## 휴지통 비우기
<a name="Appendix.Oracle.CommonDBATasks.PurgeRecycleBin"></a>

테이블을 삭제해도 Oracle 데이터베이스가 해당 스토리지 공간을 즉시 확보하지 않습니다. 데이터베이스는 삭제된 테이블의 이름을 바꾸고 테이블 및 연결된 객체를 휴지통에 넣습니다. 휴지통을 비우면 이러한 항목이 제거되고 스토리지 공간이 확보됩니다.

전체 휴지통을 비우려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_util.purge_dba_recyclebin`을 사용합니다. 그러나 이 프로시저는 `SYS` 및 `RDSADMIN` 객체의 휴지통은 비울 수 없습니다. 이러한 객체를 삭제해야 하는 경우 AWS Support에 문의하세요. 

다음 예에서는 전체 휴지통을 비웁니다.

```
EXEC rdsadmin.rdsadmin_util.purge_dba_recyclebin;
```

# 전체 수정을 위한 기본 표시 값 설정
<a name="Appendix.Oracle.CommonDBATasks.FullRedaction"></a>

Amazon RDS Oracle 인스턴스에서 전체 수정을 위한 기본 표시 값을 변경하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_util.dbms_redact_upd_full_rdct_val`을 사용합니다. 참고로 수정 정책은 Oracle 데이터베이스 설명서에 설명된 것처럼 `DBMS_REDACT` PL/SQL 패키지를 사용하여 생성합니다. `dbms_redact_upd_full_rdct_val` 프로시저는 기존 정책의 영향을 받는 여러 데이터 유형에 대해 표시할 문자를 지정합니다.

`dbms_redact_upd_full_rdct_val` 프로시저에는 다음과 같은 파라미터가 있습니다.


****  

| 파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | 
|  `p_number_val`  |  number  |  Null  |  아니요  |  `NUMBER` 데이터 유형의 열에 대한 기본값을 수정합니다.  | 
|  `p_binfloat_val`  |  binary\$1float  |  Null  |  아니요  |  `BINARY_FLOAT` 데이터 유형의 열에 대한 기본값을 수정합니다.  | 
|  `p_bindouble_val`  |  binary\$1double  |  Null  |  아니요  |  `BINARY_DOUBLE` 데이터 유형의 열에 대한 기본값을 수정합니다.  | 
|  `p_char_val`  |  char  |  Null  |  아니요  |  `CHAR` 데이터 유형의 열에 대한 기본값을 수정합니다.  | 
|  `p_varchar_val`  |   varchar2  |  Null  |  아니요  |  `VARCHAR2` 데이터 유형의 열에 대한 기본값을 수정합니다.  | 
|  `p_nchar_val`  |  nchar  |  Null  |  아니요  |  `NCHAR` 데이터 유형의 열에 대한 기본값을 수정합니다.  | 
|  `p_nvarchar_val`  |  nvarchar2  |  Null  |  아니요  |  `NVARCHAR2` 데이터 유형의 열에 대한 기본값을 수정합니다.  | 
|  `p_date_val`  |  날짜  |  Null  |  아니요  |  `DATE` 데이터 유형의 열에 대한 기본값을 수정합니다.  | 
|  `p_ts_val`  |  timestamp  |  Null  |  아니요  |  `TIMESTAMP` 데이터 유형의 열에 대한 기본값을 수정합니다.  | 
|  `p_tswtz_val`  |  시간대가 있는 타임스탬프  |  Null  |  아니요  |  `TIMESTAMP WITH TIME ZONE` 데이터 유형의 열에 대한 기본값을 수정합니다.  | 
|  `p_blob_val`  |  blob  |  Null  |  아니요  |  `BLOB` 데이터 유형의 열에 대한 기본값을 수정합니다.  | 
|  `p_clob_val`  |  clob  |  Null  |  아니요  |  `CLOB` 데이터 유형의 열에 대한 기본값을 수정합니다.  | 
|  `p_nclob_val`  |  nclob  |  Null  |  아니요  |  `NCLOB` 데이터 유형의 열에 대한 기본값을 수정합니다.  | 

다음 예에서는 `CHAR` 데이터 유형에 대한 기본 수정 값을 \$1로 변경합니다.

```
EXEC rdsadmin.rdsadmin_util.dbms_redact_upd_full_rdct_val(p_char_val => '*');
```

다음 예에서는 `NUMBER`, `DATE`, `CHAR` 데이터 유형에 대한 기본 수정 값을 변경합니다.

```
BEGIN
rdsadmin.rdsadmin_util.dbms_redact_upd_full_rdct_val(
    p_number_val=>1,
    p_date_val=>to_date('1900-01-01','YYYY-MM-DD'),
    p_varchar_val=>'X');
END;
/
```

`dbms_redact_upd_full_rdct_val` 프로시저를 사용하여 전체 수정의 기본값을 변경한 후 DB 인스턴스를 재부팅하여 변경 사항을 적용합니다. 자세한 내용은 [ DB 인스턴스 재부팅](USER_RebootInstance.md) 섹션을 참조하세요.

# Oracle DB 인스턴스에 대한 공통 로그 관련 작업 수행
<a name="Appendix.Oracle.CommonDBATasks.Log"></a>

그 다음에는 Oracle을 실행하는 Amazon RDS DB 인스턴스에서 로깅과 관련된 특정 공통 DBA 작업을 수행하는 방법을 알아봅니다. 관리형 서비스 환경을 제공하기 위해 Amazon RDS는 DB 인스턴스에 대해 shell 액세스를 제공하지 않으며, 고급 권한이 필요한 특정 시스템 절차와 테이블에 대한 액세스를 제한합니다.

자세한 내용은 [Amazon RDS for Oracle 데이터베이스 로그 파일](USER_LogAccess.Concepts.Oracle.md) 섹션을 참조하세요.

**Topics**
+ [강제 로깅 설정](#Appendix.Oracle.CommonDBATasks.SettingForceLogging)
+ [보충 로깅 설정](#Appendix.Oracle.CommonDBATasks.AddingSupplementalLogging)
+ [온라인 로그 파일 전환](#Appendix.Oracle.CommonDBATasks.SwitchingLogfiles)
+ [온라인 다시 실행 로그 추가](#Appendix.Oracle.CommonDBATasks.RedoLogs)
+ [온라인 다시 실행 로그 드롭](#Appendix.Oracle.CommonDBATasks.DroppingRedoLogs)
+ [온라인 다시 실행 로그 크기 조절](Appendix.Oracle.CommonDBATasks.ResizingRedoLogs.md)
+ [보관된 다시 실행 로그 보존](Appendix.Oracle.CommonDBATasks.RetainRedoLogs.md)
+ [온라인 및 아카이빙된 다시 실행 로그 액세스](Appendix.Oracle.CommonDBATasks.Log.Download.md)
+ [Amazon S3에서 아카이빙된 다시 실행 로그 다운로드](Appendix.Oracle.CommonDBATasks.download-redo-logs.md)

## 강제 로깅 설정
<a name="Appendix.Oracle.CommonDBATasks.SettingForceLogging"></a>

강제 로깅 모드에서는 Oracle이 임시 테이블스페이스와 임시 세그먼트의 변경 사항을 제외하고 데이터베이스의 모든 변경 사항을 기록합니다(`NOLOGGING` 절은 무시됩니다). 자세한 내용은 Oracle 문서의 [Specifying FORCE LOGGING Mode](https://docs.oracle.com/cd/E11882_01/server.112/e25494/create.htm#ADMIN11096) 단원을 참조하세요.

강제 로깅을 설정하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_util.force_logging`을 사용합니다. `force_logging` 프로시저에는 다음과 같은 파라미터가 있습니다.


****  

| 파라미터 이름 | 데이터 형식 | 기본값 | 예 | 설명 | 
| --- | --- | --- | --- | --- | 
|  `p_enable`  |  부울  |  true  |  아니요  |  `true`로 설정하면 데이터베이스를 강제 로깅 모드로 설정하고, `false`로 설정하면 데이터베이스를 강제 로깅 모드에서 해제합니다.  | 

다음은 데이터베이스를 강제 로깅 모드로 설정하는 예제입니다.

```
EXEC rdsadmin.rdsadmin_util.force_logging(p_enable => true);
```

## 보충 로깅 설정
<a name="Appendix.Oracle.CommonDBATasks.AddingSupplementalLogging"></a>

보충 로깅을 활성화하면 LogMiner가 연결된 행과 클러스터링된 테이블을 지원하는 데 필요한 정보를 갖게 됩니다. 자세한 내용은 Oracle 문서의 [Supplemental Logging](https://docs.oracle.com/cd/E11882_01/server.112/e22490/logminer.htm#SUTIL1582)을 참조하세요.

Oracle 데이터베이스는 기본적으로 보충 로깅이 활성화되어 있지 않습니다. 보충 로깅을 활성화 또는 비활성화하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_util.alter_supplemental_logging`을 사용합니다. Amazon RDS가 Oracle DB 인스턴스를 위해 보관된 다시 실행 로그 보존을 관리하는 방법에 대한 자세한 내용은 [보관된 다시 실행 로그 보존](Appendix.Oracle.CommonDBATasks.RetainRedoLogs.md) 단원을 참조하세요.

`alter_supplemental_logging` 프로시저에는 다음과 같은 파라미터가 있습니다.


****  

| 파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | 
|  `p_action`  |  varchar2  |  —  |  예  |  `'ADD'`는 보충 로깅을 추가하며, `'DROP'`은 보충 로깅을 드롭합니다.  | 
|  `p_type`  |  varchar2  |  null  |  아니요  |  보충 로깅 유형입니다. 유효한 값은 `'ALL'`, `'FOREIGN KEY'`, `'PRIMARY KEY'`, `'UNIQUE'` 또는 `PROCEDURAL`입니다.  | 

다음 예에서는 보충 로깅을 활성화합니다.

```
begin
    rdsadmin.rdsadmin_util.alter_supplemental_logging(
        p_action => 'ADD');
end;
/
```

다음 예에서는 고정 길이 최대 크기 열 전체에 대해 보충 로깅을 활성화합니다.

```
begin
    rdsadmin.rdsadmin_util.alter_supplemental_logging(
        p_action => 'ADD',
        p_type   => 'ALL');
end;
/
```

다음 예에서는 기본 키 열에 대한 보충 로깅을 활성화합니다.

```
begin
    rdsadmin.rdsadmin_util.alter_supplemental_logging(
        p_action => 'ADD',
        p_type   => 'PRIMARY KEY');
end;
/
```

## 온라인 로그 파일 전환
<a name="Appendix.Oracle.CommonDBATasks.SwitchingLogfiles"></a>

로그 파일을 전환하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_util.switch_logfile`을 사용합니다. `switch_logfile` 프로시저에는 파라미터가 없습니다.

다음은 로그 파일을 바꾸는 예제입니다.

```
EXEC rdsadmin.rdsadmin_util.switch_logfile;
```

## 온라인 다시 실행 로그 추가
<a name="Appendix.Oracle.CommonDBATasks.RedoLogs"></a>

Oracle을 실행하는 Amazon RDS DB 인스턴스는 각각 128MB인 온라인 다시 실행 로그 4개로 시작합니다. 다른 다시 실행 로그를 추가하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_util.add_logfile`을 사용합니다.

`add_logfile` 프로시저에는 다음과 같은 파라미터가 있습니다.

**참고**  
파라미터는 함께 사용할 수 없습니다.


****  

| 파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | 
|  `bytes`  |  positive  |  null  |  아니요  |  로그 파일 크기(바이트)입니다. 로그 크기가 2147483648바이트(2GiB) 미만인 경우에만 이 파라미터를 사용합니다. 그렇지 않으면 RDS에서 오류가 발생합니다. 이 바이트 값을 초과하는 로그 크기의 경우 `p_size` 파라미터를 대신 사용합니다.  | 
|  `p_size`  |  varchar2  |  —  |  예  |  로그 파일의 크기는 킬로바이트(K), 메가바이트(M) 또는 기가바이트(G)입니다.  | 

다음 명령을 실행하면 100MB 로그 파일이 추가됩니다.

```
EXEC rdsadmin.rdsadmin_util.add_logfile(p_size => '100M');
```

## 온라인 다시 실행 로그 드롭
<a name="Appendix.Oracle.CommonDBATasks.DroppingRedoLogs"></a>

다시 실행 로그를 삭제하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_util.drop_logfile`을 사용합니다. `drop_logfile` 프로시저에는 다음과 같은 파라미터가 있습니다.


****  

| 파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | 
|  `grp`  |  positive  |  —  |  예  |  로그의 그룹 번호입니다.  | 

다음 예에서는 그룹 번호가 3인 로그를 드롭합니다.

```
EXEC rdsadmin.rdsadmin_util.drop_logfile(grp => 3);
```

상태가 미사용이거나 비활성인 로그만 드롭할 수 있습니다. 다음 예에서는 로그의 상태를 가져옵니다.

```
SELECT GROUP#, STATUS FROM V$LOG;

GROUP#     STATUS
---------- ----------------
1          CURRENT
2          INACTIVE
3          INACTIVE
4          UNUSED
```

# 온라인 다시 실행 로그 크기 조절
<a name="Appendix.Oracle.CommonDBATasks.ResizingRedoLogs"></a>

Oracle을 실행하는 Amazon RDS DB 인스턴스는 각각 128MB인 온라인 다시 실행 로그 4개로 시작합니다. 다음은 Amazon RDS 프로시저를 사용하여 로그를 각각 128MB에서 512MB로 조정하는 예제입니다.

```
/* Query V$LOG to see the logs.          */
/* You start with 4 logs of 128 MB each. */

SELECT GROUP#, BYTES, STATUS FROM V$LOG;

GROUP#     BYTES      STATUS
---------- ---------- ----------------
1          134217728  INACTIVE
2          134217728  CURRENT
3          134217728  INACTIVE
4          134217728  INACTIVE


/* Add four new logs that are each 512 MB */

EXEC rdsadmin.rdsadmin_util.add_logfile(bytes => 536870912);
EXEC rdsadmin.rdsadmin_util.add_logfile(bytes => 536870912);
EXEC rdsadmin.rdsadmin_util.add_logfile(bytes => 536870912);
EXEC rdsadmin.rdsadmin_util.add_logfile(bytes => 536870912);


/* Query V$LOG to see the logs. */ 
/* Now there are 8 logs.        */

SELECT GROUP#, BYTES, STATUS FROM V$LOG;

GROUP#     BYTES      STATUS
---------- ---------- ----------------
1          134217728  INACTIVE
2          134217728  CURRENT
3          134217728  INACTIVE
4          134217728  INACTIVE
5          536870912  UNUSED
6          536870912  UNUSED
7          536870912  UNUSED
8          536870912  UNUSED


/* Drop each inactive log using the group number. */

EXEC rdsadmin.rdsadmin_util.drop_logfile(grp => 1);
EXEC rdsadmin.rdsadmin_util.drop_logfile(grp => 3);
EXEC rdsadmin.rdsadmin_util.drop_logfile(grp => 4);


/* Query V$LOG to see the logs. */ 
/* Now there are 5 logs.        */

select GROUP#, BYTES, STATUS from V$LOG;

GROUP#     BYTES      STATUS
---------- ---------- ----------------
2          134217728  CURRENT
5          536870912  UNUSED
6          536870912  UNUSED
7          536870912  UNUSED
8          536870912  UNUSED


/* Switch logs so that group 2 is no longer current. */

EXEC rdsadmin.rdsadmin_util.switch_logfile;


/* Query V$LOG to see the logs.        */ 
/* Now one of the new logs is current. */

SQL>SELECT GROUP#, BYTES, STATUS FROM V$LOG;

GROUP#     BYTES      STATUS
---------- ---------- ----------------
2          134217728  ACTIVE
5          536870912  CURRENT
6          536870912  UNUSED
7          536870912  UNUSED
8          536870912  UNUSED


/* If the status of log 2 is still "ACTIVE", issue a checkpoint to clear it to "INACTIVE".  */

EXEC rdsadmin.rdsadmin_util.checkpoint;


/* Query V$LOG to see the logs.            */ 
/* Now the final original log is inactive. */

select GROUP#, BYTES, STATUS from V$LOG;

GROUP#     BYTES      STATUS
---------- ---------- ----------------
2          134217728  INACTIVE
5          536870912  CURRENT
6          536870912  UNUSED
7          536870912  UNUSED
8          536870912  UNUSED


# Drop the final inactive log.

EXEC rdsadmin.rdsadmin_util.drop_logfile(grp => 2);


/* Query V$LOG to see the logs.    */ 
/* Now there are four 512 MB logs. */

SELECT GROUP#, BYTES, STATUS FROM V$LOG;

GROUP#     BYTES      STATUS
---------- ---------- ----------------
5          536870912  CURRENT
6          536870912  UNUSED
7          536870912  UNUSED
8          536870912  UNUSED
```

# 보관된 다시 실행 로그 보존
<a name="Appendix.Oracle.CommonDBATasks.RetainRedoLogs"></a>

보관된 다시 실행 로그는 Oracle LogMiner(`DBMS_LOGMNR`) 같은 제품에서 사용할 수 있도록 DB 인스턴스에 로컬 보존할 수 있습니다. 다시 실행 로그를 보존하면 LogMiner를 사용하여 로그를 분석할 수 있습니다. 자세한 내용은 Oracle 문서의 [Using LogMiner to Analyze Redo Log Files](http://docs.oracle.com/cd/E11882_01/server.112/e22490/logminer.htm) 단원을 참조하세요.

보관된 다시 실행 로그를 보존하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_util.set_configuration`을 사용합니다. Oracle Data Guard의 기본 인스턴스에서 이 프로시저를 사용하는 경우 RDS는 기본 인스턴스와 열린 읽기 전용 복제본에서 아카이브 로그 유지 설정을 변경하지만 탑재된 복제본에서는 변경하지 않습니다. RDS는 탑재된 복제본에 대한 최신 아카이브 다시 실행 로그를 짧은 기간 동안 유지합니다. RDS는 탑재된 복제본에 다운로드된 이전 로그를 자동으로 삭제합니다.

`set_configuration` 프로시저에는 다음과 같은 파라미터가 있습니다.


****  

| 파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | 
|  `name`  |  varchar  |  —  |  예  |  업데이트할 구성의 이름입니다. 아카이브된 다시 실행 로그 유지 시간을 변경하려면 이름을 `archivelog retention hours`로 설정합니다.  | 
|  `value`  |  varchar  |  —  |  예  |  구성 값입니다. 로그를 유지할 시간 값을 설정합니다.  | 

다음 예에서는 24시간 동안 다시 실행 로그를 보존합니다.

```
begin
    rdsadmin.rdsadmin_util.set_configuration(
        name  => 'archivelog retention hours',
        value => '24');
end;
/
commit;
```

**참고**  
변경 사항을 적용하려면 커밋해야 합니다.

DB 인스턴스 다시 실행 로그의 보관 기간을 보려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_util.show_configuration`을 사용합니다.

다음 예에서는 로그 보관 시간을 보여줍니다.

```
set serveroutput on
EXEC rdsadmin.rdsadmin_util.show_configuration;
```

`archivelog retention hours`의 현재 설정이 출력됩니다. 다음 출력은 보관된 다시 실행 로그가 48시간 동안 보존됨을 보여줍니다.

```
NAME:archivelog retention hours
VALUE:48
DESCRIPTION:ArchiveLog expiration specifies the duration in hours before archive/redo log files are automatically deleted.
```

보관된 다시 실행 로그는 DB 인스턴스에 보존되므로 보존된 로그를 수용하기에 충분한 스토리지가 DB 인스턴스에 할당되어 있는지 확인해야 합니다. 지난 X 시간 동안 DB 인스턴스가 사용한 공간을 측정하려면 X 자리에 사용 시간을 대입하여 다음 쿼리를 실행합니다.

```
SELECT SUM(BLOCKS * BLOCK_SIZE) bytes 
  FROM V$ARCHIVED_LOG
 WHERE FIRST_TIME >= SYSDATE-(X/24) AND DEST_ID=1;
```

RDS for Oracle은 DB 인스턴스의 백업 보존 기간이 0보다 큰 경우에만 아카이빙된 다시 실행 로그를 생성합니다. 기본적으로 백업 보존 기간은 0보다 큽니다.

아카이빙된 로그 보존 기간이 만료되면 RDS for Oracle은 DB 인스턴스에서 아카이빙된 다시 실행 로그를 제거합니다. DB 인스턴스를 특정 시점으로 복원하려면 Amazon RDS는 백업 보존 기간에 따라 아카이빙된 다시 실행 로그를 DB 인스턴스 외부에 보관합니다. 백업 보존 기간을 수정하려면 [Amazon RDS DB 인스턴스 수정](Overview.DBInstance.Modifying.md) 섹션을 참조하세요.

**참고**  
경우에 따라 Linux에서 JDBC를 사용하여 아카이브된 다시 실행 로그를 다운로드하고 지연 시간이 길어지고 연결이 재설정될 수 있습니다. 그러한 경우 Java 클라이언트의 기본 난수 생성기 설정이 문제의 원인일 수 있습니다. 비차단형 난수 생성기를 사용하도록 JDBC 드라이버를 설정하는 것이 좋습니다.

# 온라인 및 아카이빙된 다시 실행 로그 액세스
<a name="Appendix.Oracle.CommonDBATasks.Log.Download"></a>

GoldenGate, Attunity, Informatica 등과 같은 외부 도구로 마이닝하려면 온라인 및 아카이브된 다시 실행 로그 파일에 액세스해야 합니다. 이러한 파일에 액세스하려면 다음을 수행합니다.

1. 물리적 파일 경로에 읽기 전용으로 액세스할 수 있는 디렉터리 객체를 만듭니다.

   `rdsadmin.rdsadmin_master_util.create_archivelog_dir` 및 `rdsadmin.rdsadmin_master_util.create_onlinelog_dir` 사용

1. PL/SQL을 사용하여 파일을 읽습니다.

   PL/SQL을 사용하여 파일을 읽을 수 있습니다. 디렉터리 객체의 파일을 읽는 방법에 대한 자세한 내용은 [DB 인스턴스 디렉터리의 파일 목록 표시](Appendix.Oracle.CommonDBATasks.Misc.md#Appendix.Oracle.CommonDBATasks.ListDirectories) 및 [DB 인스턴스 디렉터리의 파일 목록 읽기](Appendix.Oracle.CommonDBATasks.Misc.md#Appendix.Oracle.CommonDBATasks.ReadingFiles) 단원을 참조하세요.

다음 릴리스에서 트랜잭션 로그 액세스를 지원합니다.
+ Oracle Database 21c
+ Oracle Database 19c

다음은 온라인 및 아카이브된 다시 실행 로그 파일에 읽기 전용으로 액세스할 수 있는 디렉터리를 생성하는 코드입니다.

**중요**  
이 코드는 `DROP ANY DIRECTORY` 권한도 취소합니다.

```
EXEC rdsadmin.rdsadmin_master_util.create_archivelog_dir;
EXEC rdsadmin.rdsadmin_master_util.create_onlinelog_dir;
```

다음은 온라인 및 보관된 재실행 로그 파일용 디렉터리를 삭제하는 코드입니다.

```
EXEC rdsadmin.rdsadmin_master_util.drop_archivelog_dir;
EXEC rdsadmin.rdsadmin_master_util.drop_onlinelog_dir;
```

다음은 `DROP ANY DIRECTORY` 권한을 부여하고 취소하는 코드입니다.

```
EXEC rdsadmin.rdsadmin_master_util.revoke_drop_any_directory;
EXEC rdsadmin.rdsadmin_master_util.grant_drop_any_directory;
```

# Amazon S3에서 아카이빙된 다시 실행 로그 다운로드
<a name="Appendix.Oracle.CommonDBATasks.download-redo-logs"></a>

`rdsadmin.rdsadmin_archive_log_download` 패키지를 사용하여 DB 인스턴스에서 아카이빙된 다시 실행 로그를 다운로드할 수 있습니다. 아카이빙된 다시 실행 로그가 더 이상 DB 인스턴스에 없는 경우 Amazon S3에서 다시 다운로드할 수 있습니다. 그런 다음 로그를 마이닝하거나 로그를 사용하여 데이터베이스를 복구하거나 복제할 수 있습니다.

**참고**  
읽기 전용 복제본 인스턴스에서는 아카이브된 다시 실행 로그를 다운로드할 수 없습니다.

## 아카이빙된 다시 실행 로그 다운로드: 기본 단계
<a name="Appendix.Oracle.CommonDBATasks.download-redo-logs.basic-process"></a>

아카이빙된 다시 실행 로그의 가용성은 다음 보존 정책에 따라 다릅니다.
+ 백업 보존 정책 - 이 정책 내의 로그는 Amazon S3에서 사용할 수 있습니다. 이 정책 외부의 로그는 제거됩니다.
+ 아카이빙된 로그 보존 정책 - 이 정책 내의 로그를 DB 인스턴스에서 사용할 수 있습니다. 이 정책 외부의 로그는 제거됩니다.

로그가 인스턴스에 없지만 백업 보존 기간으로 보호되는 경우 `rdsadmin.rdsadmin_archive_log_download`을 사용하여 다시 다운로드합니다. RDS for Oracle은 DB 인스턴스의 `/rdsdbdata/log/arch` 디렉터리에 로그를 저장합니다.

**Amazon S3에서 아카이빙된 다시 실행 로그를 다운로드하려면**

1. 다운로드한 아카이브된 재실행 로그가 필요한 기간 동안 보존되도록 보존 기간을 구성합니다. `COMMIT`에 대한 변경을 확인하세요.

   RDS는 로그 다운로드 시점부터 보관된 로그 보존 정책에 따라 다운로드한 로그를 보존합니다. 보존 정책을 설정하는 방법에 대한 자세한 내용은 [보관된 다시 실행 로그 보존](Appendix.Oracle.CommonDBATasks.RetainRedoLogs.md) 섹션을 참조하세요.

1. 아키이빙된 로그 보존 정책 변경이 적용되려면 최대 5분을 기다립니다.

1. `rdsadmin.rdsadmin_archive_log_download`을 사용하여 Amazon S3 에서 아카이빙된 다시 실행 로그를 다운로드합니다.

   자세한 내용은 [아카이빙된 다시 실행 로그 다운로드](#Appendix.Oracle.CommonDBATasks.download-redo-logs.single-log) 및 [아카이빙된 다시 실행 로그 시리즈 다운로드](#Appendix.Oracle.CommonDBATasks.download-redo-logs.series) 단원을 참조하세요.
**참고**  
RDS는 다운로드하기 전에 사용 가능한 스토리지를 자동으로 확인합니다. 요청된 로그가 많은 공간을 사용하는 경우 경고가 표시됩니다.

1. 로그가 Amazon S3 에서 성공적으로 다운로드되었는지 확인합니다.

   다운로드 태스크의 상태를 bdump 파일에서 볼 수 있습니다. bdump 파일에는 `/rdsdbdata/log/trace/dbtask-task-id.log` 경로 이름이 있습니다. 이전 다운로드 단계에서 `VARCHAR2` 데이터 유형의 태스크 ID를 반환하는 `SELECT` 문을 실행합니다. 자세한 내용은 [파일 전송 상태 모니터링](oracle-s3-integration.using.md#oracle-s3-integration.using.task-status)에서 유사한 예를 참조하세요.

## 아카이빙된 다시 실행 로그 다운로드
<a name="Appendix.Oracle.CommonDBATasks.download-redo-logs.single-log"></a>

하나의 아카이빙된 다시 실행 로그를 `/rdsdbdata/log/arch` 디렉터리에 다운로드하려면 `rdsadmin.rdsadmin_archive_log_download.download_log_with_seqnum`을 사용하세요. 이 프로시저에는 다음 파라미터가 있습니다.


****  

| 파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | 
|  `seqnum`  |  숫자  |  —  |  예  |  아카이빙된 다시 실행 로그의 시퀀스 번호입니다.  | 

다음 예에서는 시퀀스 번호가 20인 로그를 다운로드합니다.

```
SELECT rdsadmin.rdsadmin_archive_log_download.download_log_with_seqnum(seqnum => 20) 
       AS TASK_ID 
FROM   DUAL;
```

## 아카이빙된 다시 실행 로그 시리즈 다운로드
<a name="Appendix.Oracle.CommonDBATasks.download-redo-logs.series"></a>

아카이빙된 다시 실행 로그 시리즈를 `/rdsdbdata/log/arch` 디렉터리에 다운로드하려면 `download_logs_in_seqnum_range`을 사용하세요. 다운로드는 요청당 300개의 로그로 제한됩니다. `download_logs_in_seqnum_range` 프로시저에는 다음과 같은 파라미터가 있습니다.


****  

| 파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | 
|  `start_seq`  |  숫자  |  —  |  예  |  시리즈의 시작 시퀀스 번호입니다.  | 
|  `end_seq`  |  숫자  |  —  |  예  |  시리즈의 종료 시퀀스 번호입니다.  | 

다음 예제에서는 시퀀스 50에서 100의 로그를 다운로드합니다.

```
SELECT rdsadmin.rdsadmin_archive_log_download.download_logs_in_seqnum_range(start_seq => 50, end_seq => 100) 
       AS TASK_ID 
FROM   DUAL;
```

# Oracle DB 인스턴스에 대한 공통 RMAN 작업 수행
<a name="Appendix.Oracle.CommonDBATasks.RMAN"></a>

아래 단원에서는 Oracle을 실행하는 Amazon RDS DB 인스턴스에서 Oracle RMAN(Recovery Manager) DBA 작업을 수행하는 방식을 확인하실 수 있습니다. 관리형 서비스 환경을 제공하기 위해 Amazon RDS는 DB 인스턴스에 대해 shell 액세스를 제공하지 않습니다. 또한 고급 권한이 필요한 특정 시스템 절차와 테이블에 대한 액세스를 제한합니다.

Amazon RDS 패키지인 `rdsadmin.rdsadmin_rman_util`을 사용하여 Amazon RDS for Oracle 데이터베이스의 RMAN 백업을 디스크에 수행할 수 있습니다. `rdsadmin.rdsadmin_rman_util` 패키지에서는 전체 및 증분 데이터베이스 파일 백업, 테이블스페이스 백업 및 아카이브된 재실행 로그 백업을 지원합니다.

RMAN 백업이 종료된 후에는 Amazon RDS for Oracle DB 인스턴스 호스트에 대해 백업 파일을 복사할 수 있습니다. 이 작업은 RDS가 아닌 호스트 또는 백업 장기 보관에 대해 복원 목적으로 수행할 수 있습니다. 예를 들어 백업 파일을 Amazon S3 버킷에 복사할 수 있습니다. 자세한 내용은 [Amazon S3 통합](oracle-s3-integration.md) 사용 단원을 참조하세요.

RMAN 백업을 위한 백업 파일은 수동으로 제거하기 전에는 Amazon RDS DB 인스턴스에 남아 있습니다. `UTL_FILE.FREMOVE` Oracle 프로시저를 사용하여 디렉터리에서 파일을 제거할 수 있습니다. 자세한 내용은 Oracle Database 설명서의 [FREMOVE 프로시저](https://docs.oracle.com/database/121/ARPLS/u_file.htm#ARPLS70924)를 참조하세요.

RMAN을 사용하여 RDS for Oracle DB 인스턴스를 복원할 수는 없습니다. 하지만 RMAN을 사용하여 온프레미스 또는 Amazon EC2 인스턴스에 백업을 복원할 수 있습니다. 자세한 내용은 [Amazon RDS for Oracle 인스턴스를 자체 관리형 인스턴스로 복원](https://aws.amazon.com/blogs/database/restore-an-amazon-rds-for-oracle-instance-to-a-self-managed-instance/) 블로글 문서를 참조하세요.

**참고**  
또 하나의 Amazon RDS for Oracle DB 인스턴스에 대한 백업 및 복원을 위해서는 Amazon RDS 백업 및 복원 기능을 계속 사용할 수 있습니다. 자세한 내용은 [데이터 백업, 복원 및 내보내기](CHAP_CommonTasks.BackupRestore.md) 섹션을 참조하세요.

**Topics**
+ [RMAN 백업을 위한 사전 요구 사항](Appendix.Oracle.CommonDBATasks.RMAN-requirements.md)
+ [RMAN 프로시저용 공통 파라미터](Appendix.Oracle.CommonDBATasks.CommonParameters.md)
+ [RDS for Oracle DB에서 데이터베이스 파일 검증](Appendix.Oracle.CommonDBATasks.ValidateDBFiles.md)
+ [블록 변경 추적 활성화 및 비활성화](Appendix.Oracle.CommonDBATasks.BlockChangeTracking.md)
+ [보관된 재실행 로그 대조 확인](Appendix.Oracle.CommonDBATasks.Crosscheck.md)
+ [보관된 재실행 로그 파일 백업](Appendix.Oracle.CommonDBATasks.BackupArchivedLogs.md)
+ [전체 데이터베이스 백업 수행](Appendix.Oracle.CommonDBATasks.BackupDatabaseFull.md)
+ [테넌트 데이터베이스의 전체 백업 수행](Appendix.Oracle.CommonDBATasks.BackupTenantDatabaseFull.md)
+ [증분 데이터베이스 백업 수행](Appendix.Oracle.CommonDBATasks.BackupDatabaseIncremental.md)
+ [테넌트 데이터베이스의 증분 백업 수행](Appendix.Oracle.CommonDBATasks.BackupTenantDatabaseIncremental.md)
+ [테이블스페이스 백업](Appendix.Oracle.CommonDBATasks.BackupTablespace.md)
+ [Backing up a control file](Appendix.Oracle.CommonDBATasks.backup-control-file.md)
+ [블록 미디어 복구 수행](Appendix.Oracle.CommonDBATasks.block-media-recovery.md)

# RMAN 백업을 위한 사전 요구 사항
<a name="Appendix.Oracle.CommonDBATasks.RMAN-requirements"></a>

`rdsadmin.rdsadmin_rman_util` 패키지를 사용하여 데이터베이스를 백업하기 전에 다음 사전 요구 사항을 충족하는지 확인하세요.
+ RDS for Oracle 데이터베이스 `ARCHIVELOG` 모드여야 합니다. 이 모드를 활성화하려면 백업 보존 기간을 0이 아닌 값으로 설정하세요.
+ 아카이브된 재실행 로그를 백업하거나 아카이브된 재실행 로그가 포함된 전체 또는 증분 백업을 수행할 때, 그리고 데이터베이스를 백업할 때는 재실행 로그 보존을 0이 아닌 값으로 설정해야 합니다. 복구 중에 데이터베이스 파일의 일관성을 유지하려면 아카이브된 재실행 로그가 필요합니다. 자세한 내용은 [보관된 다시 실행 로그 보존](Appendix.Oracle.CommonDBATasks.RetainRedoLogs.md) 섹션을 참조하세요.
+ DB 인스턴스에 백업을 보관할 수 있는 여유 공간이 충분한지 확인합니다. 데이터베이스를 백업할 때 Oracle 디렉터리 객체를 프로시저 호출의 파라미터로 지정합니다. RMAN은 파일을 지정된 디렉터리에 배치합니다. `DATA_PUMP_DIR`과 같은 기본 디렉터리를 사용하거나 새 디렉터리를 생성할 수 있습니다. 자세한 내용은 [메인 데이터 스토리지 공간에서 디렉터리 생성 및 삭제](Appendix.Oracle.CommonDBATasks.Misc.md#Appendix.Oracle.CommonDBATasks.NewDirectories) 섹션을 참조하세요.

  CloudWatch 지표 `FreeStorageSpace`를 사용하여 RDS for Oracle 인스턴스의 현재 여유 공간을 모니터링할 수 있습니다. RMAN은 형식이 지정된 블록만 백업하고 압축을 지원하지만 여유 공간이 현재 데이터베이스 크기를 초과하는 것이 좋습니다.

# RMAN 프로시저용 공통 파라미터
<a name="Appendix.Oracle.CommonDBATasks.CommonParameters"></a>

Amazon RDS 패키지인 `rdsadmin.rdsadmin_rman_util`에서 프로시저를 사용해 RMAN으로 작업을 수행할 수 있습니다. 이 패키지에서 몇 가지 파라미터는 프로시저에 공통됩니다. 이 패키지에는 다음과 같은 공통 파라미터가 있습니다.


****  

| 파라미터 이름 | 데이터 형식 | 유효한 값 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | --- | 
|  `p_directory_name`  |  varchar2  |  유효한 데이터베이스 디렉터리 이름입니다.  |  —  |  예  |  백업 파일을 담을 디렉터리의 이름입니다.  | 
|  `p_label`  |  varchar2  |  `a-z`, `A-Z`, `0-9`, `'_'`, `'-'`, `'.'`  |  —  |  아니요  |  백업 파일 이름에 포함된 고유 문자열입니다.  제한은 30자입니다.   | 
|  `p_owner`  |  varchar2  |  `p_directory_name`에 지정된 디렉터리의 유효한 소유자입니다.  |  —  |  예  |  백업 파일을 담을 디렉터리의 소유자입니다.  | 
|  `p_tag`  |  varchar2  |  `a-z`, `A-Z`, `0-9`, `'_'`, `'-'`, `'.'`  |  NULL  |  아니요  |  매일, 매주 또는 증분 수준 백업과 같은 백업의 목적이나 용도를 나타내기 위해 백업을 구별하는 데 사용할 수 있는 문자열입니다. 제한은 30자입니다. 태그는 대/소문자를 구분하지 않습니다. 태그를 입력할 때 사용된 대소문자에 관계없이 항상 대문자로 태그가 저장됩니다. 태그는 고유할 필요가 없으므로 여러 백업이 동일한 태그를 가질 수 있습니다. 태그를 지정하지 않으면 RMAN은 `TAGYYYYMMDDTHHMMSS` 형식을 사용하여 기본 태그를 자동으로 할당합니다. 여기서 *YYYY*는 연도, *MM*은 월, *DD*는 일, *HH*는 시간(24시간 형식), *MM*은 분, *SS*는 초입니다. 날짜 및 시간은 RMAN이 백업을 시작한 때를 나타냅니다. 예를 들어 백업은 2019-09-27 21:45:17에 시작된 백업에 대해 `TAG20190927T214517` 태그를 수신할 수 있습니다. `p_tag` 파라미터는 다음 Amazon RDS for Oracle DB 엔진 버전에서 지원됩니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/Appendix.Oracle.CommonDBATasks.CommonParameters.html)  | 
|  `p_compress`  |  부울  |  `TRUE`, `FALSE`  |  `FALSE`  |  아니요  |  `TRUE`를 지정하여 기본 백업 압축을 활성화합니다. `FALSE`를 지정하여 기본 백업 압축을 비활성화합니다.  | 
|  `p_include_archive_logs`  |  부울  |  `TRUE`, `FALSE`  |  `FALSE`  |  아니요  |  `TRUE`를 지정하여 보관된 재실행 로그를 백업에 포함합니다. `FALSE`를 지정하여 보관된 재실행 로그를 백업에서 제외합니다. 보관된 재실행 로그를 백업에 포함하는 경우 `rdsadmin.rdsadmin_util.set_configuration` 프로시저를 사용해 보존 기간을 1시간 이상으로 설정하세요. 또한 백업을 실행하기 전에 `rdsadmin.rdsadmin_rman_util.crosscheck_archivelog` 프로시저를 즉시 호출하세요. 이렇게 하지 않으면 Amazon RDS 관리 프로시저에서 삭제한 보관된 재실행 로그 파일이 누락되어 백업이 실패할 수 있습니다.  | 
|  `p_include_controlfile`  |  부울  |  `TRUE`, `FALSE`  |  `FALSE`  |  아니요  |  `TRUE`를 지정하여 백업에 제어 파일을 포함합니다. `FALSE`를 지정하여 백업에서 제어 파일을 제외합니다.  | 
|  `p_optimize`  |  부울  |  `TRUE`, `FALSE`  |  `TRUE`  |  아니요  |  보관된 재실행 로그가 포함된 경우 백업 크기를 줄이기 위해 `TRUE`를 지정하여 백업 최적화를 활성화합니다. `FALSE`를 지정하여 백업 최적화를 비활성화합니다.  | 
|  `p_parallel`  |  숫자  |  Oracle Database Enterprise Edition(EE)에서 `1`과 `254` 사이의 유효한 정수입니다. `1`다른 Oracle Database 에디션일 때는 입니다.  |  `1`  |  아니요  |  채널 수입니다.  | 
|  `p_rman_to_dbms_output`  |  부울  |  `TRUE`, `FALSE`  |  `FALSE`  |  아니요  |  `TRUE`일 때는 RMAN 출력이 `DBMS_OUTPUT` 패키지를 비롯해 `BDUMP` 디렉터리의 파일로 전송됩니다. SQL\$1Plus에서 `SET SERVEROUTPUT ON`을 사용하여 출력을 확인합니다. `FALSE`일 때는 RMAN 출력이 `BDUMP` 디렉터리의 파일로만 전송됩니다.  | 
|  `p_section_size_mb`  |  숫자  |  유효한 정수입니다.  |  `NULL`  |  아니요  |  섹션 크기(MB)입니다. 각 파일을 지정된 섹션 크기로 나누어서 함께 확인합니다. `NULL`일 때는 파라미터를 무시합니다.  | 
|  `p_validation_type`  |  varchar2  |  `'PHYSICAL'`, `'PHYSICAL+LOGICAL'`  |  `'PHYSICAL'`  |  아니요  |  손상 탐지 수준입니다. 물리적 손상 여부를 알아보고 싶다면 `'PHYSICAL'`을 지정합니다. 물리적 손상을 예로 들면 헤더와 푸터가 서로 일치하는 않는 블록이 있습니다. 물리적 손상 외에 논리적 불일치 여부도 알아보고 싶다면 `'PHYSICAL+LOGICAL'`을 지정합니다. 논리적 손상의 예로는 잘못된 블록을 들 수 있습니다.  | 

# RDS for Oracle DB에서 데이터베이스 파일 검증
<a name="Appendix.Oracle.CommonDBATasks.ValidateDBFiles"></a>

데이터 파일, 테이블스페이스, 제어 파일, 서버 파라미터 파일(SPFILE) 같은 Amazon RDS for Oracle 데이터베이스 파일은 Amazon RDS 패키지 `rdsadmin.rdsadmin_rman_util`을 사용하여 검증할 수 있습니다.

RMAN 확인에 대한 자세한 내용은 Oracle 설명서에서 [ Validating Database Files and Backups](https://docs.oracle.com/database/121/BRADV/rcmvalid.htm#BRADV90063) 및 [ VALIDATE](https://docs.oracle.com/database/121/RCMRF/rcmsynta2025.htm#RCMRF162)를 참조하세요.

**Topics**
+ [데이터베이스 검증](#Appendix.Oracle.CommonDBATasks.ValidateDB)
+ [테넌트 데이터베이스 검증](#Appendix.Oracle.CommonDBATasks.ValidateTenantDB)
+ [테이블 스페이스 확인](#Appendix.Oracle.CommonDBATasks.ValidateTablespace)
+ [제어 파일 확인](#Appendix.Oracle.CommonDBATasks.ValidateControlFile)
+ [SPFILE 확인](#Appendix.Oracle.CommonDBATasks.ValidateSpfile)
+ [Oracle 데이터 파일 검증](#Appendix.Oracle.CommonDBATasks.ValidateDataFile)

## 데이터베이스 검증
<a name="Appendix.Oracle.CommonDBATasks.ValidateDB"></a>

RDS for Oracle에서 Oracle 데이터베이스가 사용하는 모든 관련 파일을 검증하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_rman_util.validate_database`를 사용합니다.

이 프로시저에서는 RMAN 작업을 위해 다음과 같은 공통 파라미터를 사용합니다.
+ `p_validation_type`
+ `p_parallel`
+ `p_section_size_mb`
+ `p_rman_to_dbms_output`

자세한 내용은 [RMAN 프로시저용 공통 파라미터](Appendix.Oracle.CommonDBATasks.CommonParameters.md) 섹션을 참조하세요.

다음 예에서는 파라미터의 기본값을 사용하여 데이터베이스를 검증합니다.

```
EXEC rdsadmin.rdsadmin_rman_util.validate_database;
```

다음 예에서는 파라미터의 지정된 값을 사용하여 데이터베이스를 검증합니다.

```
BEGIN
    rdsadmin.rdsadmin_rman_util.validate_database(
        p_validation_type     => 'PHYSICAL+LOGICAL', 
        p_parallel            => 4,  
        p_section_size_mb     => 10,
        p_rman_to_dbms_output => FALSE);
END;
/
```

`p_rman_to_dbms_output` 파라미터가 `FALSE`로 설정되면 RMAN 출력이 `BDUMP` 디렉터리의 파일로 작성됩니다.

`BDUMP` 디렉터리의 파일을 보려면 다음과 같이 `SELECT` 문을 실행합니다.

```
SELECT * FROM table(rdsadmin.rds_file_util.listdir('BDUMP')) order by mtime;
```

`BDUMP` 디렉터리의 파일 내용을 보려면 다음과 같이 `SELECT` 문을 실행합니다.

```
SELECT text FROM table(rdsadmin.rds_file_util.read_text_file('BDUMP','rds-rman-validate-nnn.txt'));
```

파일 이름을 보려고 하는 파일 이름으로 변경합니다.

## 테넌트 데이터베이스 검증
<a name="Appendix.Oracle.CommonDBATasks.ValidateTenantDB"></a>

컨테이너 데이터베이스(CDB)에 있는 테넌트 데이터베이스의 데이터 파일을 검증하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_rman_util.validate_tenant`를 사용합니다.

이 프로시저는 현재 테넌트 데이터베이스에만 적용되며 RMAN 작업을 위해 다음과 같은 공통 파라미터를 사용합니다.
+ `p_validation_type`
+ `p_parallel`
+ `p_section_size_mb`
+ `p_rman_to_dbms_output`

자세한 내용은 [RMAN 프로시저용 공통 파라미터](Appendix.Oracle.CommonDBATasks.CommonParameters.md) 섹션을 참조하세요. 이 프로시저는 다음 DB 엔진 버전에서 지원됩니다.
+ Oracle Database 21c(21.0.0) CDB
+ Oracle Database 19c(19.0.0) CDB

다음 예에서는 파라미터의 기본값을 사용하여 현재 테넌트 데이터베이스를 검증합니다.

```
EXEC rdsadmin.rdsadmin_rman_util.validate_tenant;
```

다음 예에서는 파라미터의 지정된 값을 사용하여 현재 테넌트 데이터베이스를 검증합니다.

```
BEGIN
    rdsadmin.rdsadmin_rman_util.validate_tenant(
        p_validation_type     => 'PHYSICAL+LOGICAL', 
        p_parallel            => 4,  
        p_section_size_mb     => 10,
        p_rman_to_dbms_output => FALSE);
END;
/
```

`p_rman_to_dbms_output` 파라미터가 `FALSE`로 설정되면 RMAN 출력이 `BDUMP` 디렉터리의 파일로 작성됩니다.

`BDUMP` 디렉터리의 파일을 보려면 다음과 같이 `SELECT` 문을 실행합니다.

```
SELECT * FROM table(rdsadmin.rds_file_util.listdir('BDUMP')) order by mtime;
```

`BDUMP` 디렉터리의 파일 내용을 보려면 다음과 같이 `SELECT` 문을 실행합니다.

```
SELECT text FROM table(rdsadmin.rds_file_util.read_text_file('BDUMP','rds-rman-validate-nnn.txt'));
```

파일 이름을 보려고 하는 파일 이름으로 변경합니다.

## 테이블 스페이스 확인
<a name="Appendix.Oracle.CommonDBATasks.ValidateTablespace"></a>

테이블 스페이스와 연결된 파일을 확인하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_rman_util.validate_tablespace`를 사용합니다.

이 프로시저에서는 RMAN 작업을 위해 다음과 같은 공통 파라미터를 사용합니다.
+ `p_validation_type`
+ `p_parallel`
+ `p_section_size_mb`
+ `p_rman_to_dbms_output`

자세한 내용은 [RMAN 프로시저용 공통 파라미터](Appendix.Oracle.CommonDBATasks.CommonParameters.md) 섹션을 참조하세요.

이 프로시저에서는 다음과 같은 추가 파라미터도 사용합니다.


****  

| 파라미터 이름 | 데이터 형식 | 유효한 값 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | --- | 
|  `p_tablespace_name`  |  varchar2  |  유효한 테이블 스페이스 이름  |  —  |  예  |  테이블 스페이스 이름입니다.  | 

## 제어 파일 확인
<a name="Appendix.Oracle.CommonDBATasks.ValidateControlFile"></a>

Amazon RDS Oracle DB 인스턴스에서 사용되는 제어 파일을 확인하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_rman_util.validate_current_controlfile`을 사용합니다.

이 프로시저에서는 RMAN 작업을 위해 다음과 같은 공통 파라미터를 사용합니다.
+ `p_validation_type`
+ `p_rman_to_dbms_output`

자세한 내용은 [RMAN 프로시저용 공통 파라미터](Appendix.Oracle.CommonDBATasks.CommonParameters.md) 섹션을 참조하세요.

## SPFILE 확인
<a name="Appendix.Oracle.CommonDBATasks.ValidateSpfile"></a>

Amazon RDS Oracle DB 인스턴스에서 사용되는 서버 파라미터 파일(SPFILE)만 확인하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_rman_util.validate_spfile`을 사용합니다.

이 프로시저에서는 RMAN 작업을 위해 다음과 같은 공통 파라미터를 사용합니다.
+ `p_validation_type`
+ `p_rman_to_dbms_output`

자세한 내용은 [RMAN 프로시저용 공통 파라미터](Appendix.Oracle.CommonDBATasks.CommonParameters.md) 섹션을 참조하세요.

## Oracle 데이터 파일 검증
<a name="Appendix.Oracle.CommonDBATasks.ValidateDataFile"></a>

데이터 파일을 확인하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_rman_util.validate_datafile`을 사용합니다.

이 프로시저에서는 RMAN 작업을 위해 다음과 같은 공통 파라미터를 사용합니다.
+ `p_validation_type`
+ `p_parallel`
+ `p_section_size_mb`
+ `p_rman_to_dbms_output`

자세한 내용은 [RMAN 프로시저용 공통 파라미터](Appendix.Oracle.CommonDBATasks.CommonParameters.md) 섹션을 참조하세요.

이 프로시저에서는 다음과 같은 추가 파라미터도 사용합니다.


****  

| 파라미터 이름 | 데이터 형식 | 유효한 값 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | --- | 
|  `p_datafile`  |  varchar2  |  유효한 데이터파일 ID 번호 또는 유효한 데이터파일 이름(전체 경로 포함)  |  —  |  예  |  데이터파일 ID 번호(`v$datafile.file#`) 또는 경로가 포함된 전체 데이터파일 이름(`v$datafile.name`)입니다.  | 
|  `p_from_block`  |  숫자  |  유효한 정수입니다.  |  `NULL`  |  아니요  |  데이터 파일 내에서 확인이 시작되는 블록 번호입니다. 이 값이 `NULL`인 경우 `1`이 사용됩니다.  | 
|  `p_to_block`  |  숫자  |  유효한 정수입니다.  |  `NULL`  |  아니요  |  데이터 파일 내에서 확인이 끝나는 블록 번호입니다. 이 값이 `NULL`일 때는 데이터 파일에서 최대 블록이 사용됩니다.  | 

# 블록 변경 추적 활성화 및 비활성화
<a name="Appendix.Oracle.CommonDBATasks.BlockChangeTracking"></a>

블록 변경 내용 추적 기능은 추적 파일에 변경된 블록을 기록합니다. 이 기법을 사용하면 RMAN 증분 백업의 성능을 개선할 수 있습니다. 자세한 내용은 Oracle 데이터베이스 설명서의 [블록 변경 내용 추적을 사용하여 증분 백업 성능 향상](https://docs.oracle.com/en/database/oracle/oracle-database/19/bradv/backing-up-database.html#GUID-4E1F605A-76A7-48D0-9D9B-7343B4327E2A) 섹션을 참조하세요.

RMAN 기능은 읽기 전용 복제본에서는 지원되지 않습니다. 하지만 고가용성 전략의 일환으로 프로시저 `rdsadmin.rdsadmin_rman_util.enable_block_change_tracking`을 사용하여 읽기 전용 복제본에서 블록 추적을 활성화하도록 선택할 수 있습니다. 이 읽기 전용 복제본을 소스 DB 인스턴스로 승격시키면 새 소스 인스턴스에서 블록 변경 추적 기능이 활성화됩니다. 따라서 인스턴스를 통해 빠른 증분 백업의 이점을 누릴 수 있습니다.

블록 변경 사항 추적 프로시저는 다음 DB 엔진 버전의 Enterprise Edition에만 지원됩니다.
+ Oracle Database 21c(21.0.0)
+ Oracle Database 19c(19.0.0)

**참고**  
단일 테넌트 CDB에서는 다음 작업이 작동하지만 고객에게 표시되는 메커니즘으로 작업의 현재 상태를 감지할 수 없습니다. 또한 [RDS for Oracle CDB 제한 사항](Oracle.Concepts.CDBs.md#Oracle.Concepts.single-tenant-limitations) 단원도 참조하세요.

DB 인스턴스에 대한 블록 변경 내용 추적을 활성화하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_rman_util.enable_block_change_tracking`을 사용합니다. 블록 변경 내용 추적을 비활성화하려면 `disable_block_change_tracking`을 사용합니다. 이 프로시저에는 파라미터가 없습니다.

DB 인스턴스에 대해 블록 변경 추적이 활성화되어 있는지 확인하려면 다음 쿼리를 실행하세요.

```
SELECT STATUS, FILENAME FROM V$BLOCK_CHANGE_TRACKING;
```

다음 예에서는 DB 인스턴스에 대한 블록 변경 추적을 활성화합니다.

```
EXEC rdsadmin.rdsadmin_rman_util.enable_block_change_tracking;
```

다음 예에서는 DB 인스턴스에 대한 블록 변경 추적을 비활성화합니다.

```
EXEC rdsadmin.rdsadmin_rman_util.disable_block_change_tracking;
```

# 보관된 재실행 로그 대조 확인
<a name="Appendix.Oracle.CommonDBATasks.Crosscheck"></a>

보관된 재실행 로그를 Amazon RDS 프로시저 `rdsadmin.rdsadmin_rman_util.crosscheck_archivelog`를 사용해 대조 확인할 수 있습니다.

이 프로시저를 사용하여 제어 파일에 등록된 아카이브된 다시 실행 로그를 대조 확인하고 선택 사항으로 만료된 로그 레코드를 삭제할 수 있습니다. RMAN은 백업을 수행할 때 제어 파일에 레코드를 생성합니다. 시간이 지남에 따라 이 레코드로 인해 제어 파일의 크기가 증가합니다. 만료된 레코드는 주기적으로 제거하는 것이 좋습니다.

**참고**  
표준 Amazon RDS 백업은 RMAN을 사용하지 않으므로 제어 파일에 레코드를 생성하지 않습니다.

이 프로시저에서는 RMAN 작업을 위해 공통 파라미터인 `p_rman_to_dbms_output`을 사용합니다.

자세한 내용은 [RMAN 프로시저용 공통 파라미터](Appendix.Oracle.CommonDBATasks.CommonParameters.md) 섹션을 참조하세요.

이 프로시저에서는 다음과 같은 추가 파라미터도 사용합니다.


****  

| 파라미터 이름 | 데이터 형식 | 유효한 값 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | --- | 
|  `p_delete_expired`  |  부울  |  `TRUE`, `FALSE`  |  `TRUE`  |  아니요  |  `TRUE`인 경우 제어 파일에서 만료된 아카이브된 다시 실행 로그 레코드를 삭제합니다. `FALSE`인 경우 제어 파일에 만료된 아카이브된 다시 실행 로그 레코드를 보관합니다.  | 

이 프로시저는 다음 Amazon RDS for Oracle 엔진 버전에서 지원됩니다.
+ Oracle Database 21c(21.0.0)
+ Oracle Database 19c(19.0.0)

다음 예에서는 제어 파일에서 아카이브된 다시 실행 로그 레코드를 만료됨으로 표시하지만 레코드를 삭제하지는 않습니다.

```
BEGIN
    rdsadmin.rdsadmin_rman_util.crosscheck_archivelog(
        p_delete_expired      => FALSE,  
        p_rman_to_dbms_output => FALSE);
END;
/
```

다음 예에서는 제어 파일에서 만료된 아카이브된 다시 실행 로그를 삭제합니다.

```
BEGIN
    rdsadmin.rdsadmin_rman_util.crosscheck_archivelog(
        p_delete_expired      => TRUE,  
        p_rman_to_dbms_output => FALSE);
END;
/
```

# 보관된 재실행 로그 파일 백업
<a name="Appendix.Oracle.CommonDBATasks.BackupArchivedLogs"></a>

Amazon RDS 패키지인 `rdsadmin.rdsadmin_rman_util`을(를) 사용해 Amazon RDS Oracle DB 인스턴스에 대해 보관된 재실행 로그를 백업할 수 있습니다.

보관된 재실행 로그 백업 프로시저는 다음과 같은 Amazon RDS for Oracle 엔진 버전에서 지원됩니다.
+ Oracle Database 21c(21.0.0)
+ Oracle Database 19c(19.0.0)

**Topics**
+ [보관된 재실행 로그 전체 백업](#Appendix.Oracle.CommonDBATasks.BackupArchivedLogs.All)
+ [날짜 범위에서 보관된 재실행 로그 백업](#Appendix.Oracle.CommonDBATasks.BackupArchivedLogs.Date)
+ [SCN 범위에서 보관된 재실행 로그 백업](#Appendix.Oracle.CommonDBATasks.BackupArchivedLogs.SCN)
+ [시퀀스 번호 범위에서 보관된 재실행 로그 백업](#Appendix.Oracle.CommonDBATasks.BackupArchivedLogs.Sequence)

## 보관된 재실행 로그 전체 백업
<a name="Appendix.Oracle.CommonDBATasks.BackupArchivedLogs.All"></a>

Amazon RDS Oracle DB 인스턴스에 대해 보관된 다시 실행 로그를 모두 백업하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_rman_util.backup_archivelog_all`을 사용합니다.

이 프로시저에서는 RMAN 작업을 위해 다음과 같은 공통 파라미터를 사용합니다.
+ `p_owner`
+ `p_directory_name`
+ `p_label`
+ `p_parallel`
+ `p_compress`
+ `p_rman_to_dbms_output`
+ `p_tag`

자세한 내용은 [RMAN 프로시저용 공통 파라미터](Appendix.Oracle.CommonDBATasks.CommonParameters.md) 섹션을 참조하세요.

다음 예에서는 DB 인스턴스에 대해 모든 보관된 재실행 로그를 백업합니다.

```
BEGIN
    rdsadmin.rdsadmin_rman_util.backup_archivelog_all(
        p_owner               => 'SYS', 
        p_directory_name      => 'MYDIRECTORY',
        p_parallel            => 4, 
        p_tag                 => 'MY_LOG_BACKUP',
        p_rman_to_dbms_output => FALSE);
END;
/
```

## 날짜 범위에서 보관된 재실행 로그 백업
<a name="Appendix.Oracle.CommonDBATasks.BackupArchivedLogs.Date"></a>

날짜 범위를 지정하여 Amazon RDS Oracle DB 인스턴스에 대해 보관된 특정 다시 실행 로그를 백업하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_rman_util.backup_archivelog_date`를 사용합니다. 날짜 범위에서는 백업할 보관된 재실행 로그를 지정합니다.

이 프로시저에서는 RMAN 작업을 위해 다음과 같은 공통 파라미터를 사용합니다.
+ `p_owner`
+ `p_directory_name`
+ `p_label`
+ `p_parallel`
+ `p_compress`
+ `p_rman_to_dbms_output`
+ `p_tag`

자세한 내용은 [RMAN 프로시저용 공통 파라미터](Appendix.Oracle.CommonDBATasks.CommonParameters.md) 섹션을 참조하세요.

이 프로시저에서는 다음과 같은 추가 파라미터도 사용합니다.


****  

| 파라미터 이름 | 데이터 형식 | 유효한 값 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | --- | 
|  `p_from_date`  |  날짜  |  디스크에 있는 보관된 재실행 로그의 `start_date` 및 `next_date` 사이의 날짜입니다. 이 값은 `p_to_date`에 대해 지정된 값과 같거나 이보다 작아야 합니다.  |  —  |  예  |  보관된 로그 백업의 시작 날짜입니다.  | 
|  `p_to_date`  |  날짜  |  디스크에 있는 보관된 재실행 로그의 `start_date` 및 `next_date` 사이의 날짜입니다. 이 값은 `p_from_date`에 대해 지정된 값과 같거나 이보다 커야 합니다.  |  —  |  예  |  보관된 로그 백업의 종료 날짜입니다.  | 

다음 예에서는 DB 인스턴스의 날짜 범위에서 보관된 재실행 로그를 백업합니다.

```
BEGIN
    rdsadmin.rdsadmin_rman_util.backup_archivelog_date(
        p_owner               => 'SYS', 
        p_directory_name      => 'MYDIRECTORY',
        p_from_date           => '03/01/2019 00:00:00',
        p_to_date             => '03/02/2019 00:00:00',
        p_parallel            => 4,  
        p_tag                 => 'MY_LOG_BACKUP',
        p_rman_to_dbms_output => FALSE);
END;
/
```

## SCN 범위에서 보관된 재실행 로그 백업
<a name="Appendix.Oracle.CommonDBATasks.BackupArchivedLogs.SCN"></a>

시스템 변경 번호(SCN) 범위를 지정하여 Amazon RDS Oracle DB 인스턴스에 대해 보관된 특정 다시 실행 로그를 백업하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_rman_util.backup_archivelog_scn`을 사용합니다. SCN 범위에서는 백업할 보관된 재실행 로그를 지정합니다.

이 프로시저에서는 RMAN 작업을 위해 다음과 같은 공통 파라미터를 사용합니다.
+ `p_owner`
+ `p_directory_name`
+ `p_label`
+ `p_parallel`
+ `p_compress`
+ `p_rman_to_dbms_output`
+ `p_tag`

자세한 내용은 [RMAN 프로시저용 공통 파라미터](Appendix.Oracle.CommonDBATasks.CommonParameters.md) 섹션을 참조하세요.

이 프로시저에서는 다음과 같은 추가 파라미터도 사용합니다.


****  

| 파라미터 이름 | 데이터 형식 | 유효한 값 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | --- | 
|  `p_from_scn`  |  숫자  |  디스크에 있는 보관된 재실행 로그의 SCN입니다. 이 값은 `p_to_scn`에 대해 지정된 값과 같거나 이보다 작아야 합니다.  |  —  |  예  |  보관된 로그 백업의 시작 SCN입니다.  | 
|  `p_to_scn`  |  숫자  |  디스크에 있는 보관된 재실행 로그의 SCN입니다. 이 값은 `p_from_scn`에 대해 지정된 값과 같거나 이보다 커야 합니다.  |  —  |  예  |  보관된 로그 백업의 종료 SCN입니다.  | 

다음 예에서는 DB 인스턴스의 SCN 범위에서 보관된 재실행 로그를 백업합니다.

```
BEGIN
    rdsadmin.rdsadmin_rman_util.backup_archivelog_scn(
        p_owner               => 'SYS', 
        p_directory_name      => 'MYDIRECTORY',
        p_from_scn            => 1533835,
        p_to_scn              => 1892447,
        p_parallel            => 4,
        p_tag                 => 'MY_LOG_BACKUP',
        p_rman_to_dbms_output => FALSE);
END;
/
```

## 시퀀스 번호 범위에서 보관된 재실행 로그 백업
<a name="Appendix.Oracle.CommonDBATasks.BackupArchivedLogs.Sequence"></a>

시퀀스 번호 범위를 지정하여 Amazon RDS Oracle DB 인스턴스에 대해 보관된 특정 다시 실행 로그를 백업하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_rman_util.backup_archivelog_sequence`를 사용합니다. 시퀀스 번호 범위에서는 백업할 보관된 재실행 로그를 지정합니다.

이 프로시저에서는 RMAN 작업을 위해 다음과 같은 공통 파라미터를 사용합니다.
+ `p_owner`
+ `p_directory_name`
+ `p_label`
+ `p_parallel`
+ `p_compress`
+ `p_rman_to_dbms_output`
+ `p_tag`

자세한 내용은 [RMAN 프로시저용 공통 파라미터](Appendix.Oracle.CommonDBATasks.CommonParameters.md) 섹션을 참조하세요.

이 프로시저에서는 다음과 같은 추가 파라미터도 사용합니다.


****  

| 파라미터 이름 | 데이터 형식 | 유효한 값 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | --- | 
|  `p_from_sequence`  |  숫자  |  디스크에 있는 보관된 재실행 로그의 시퀀스 번호입니다. 이 값은 `p_to_sequence`에 대해 지정된 값과 같거나 이보다 작아야 합니다.  |  —  |  예  |  보관된 로그 백업의 시작 시퀀스 번호입니다.  | 
|  `p_to_sequence`  |  숫자  |  디스크에 있는 보관된 재실행 로그의 시퀀스 번호입니다. 이 값은 `p_from_sequence`에 대해 지정된 값과 같거나 이보다 커야 합니다.  |  —  |  예  |  보관된 로그 백업의 종료 시퀀스 번호입니다.  | 

다음 예에서는 DB 인스턴스의 시퀀스 번호 범위 범위에서 보관된 재실행 로그를 백업합니다.

```
BEGIN
    rdsadmin.rdsadmin_rman_util.backup_archivelog_sequence(
        p_owner               => 'SYS', 
        p_directory_name      => 'MYDIRECTORY',
        p_from_sequence       => 11160,
        p_to_sequence         => 11160,
        p_parallel            => 4,  
        p_tag                 => 'MY_LOG_BACKUP',
        p_rman_to_dbms_output => FALSE);
END;
/
```

# 전체 데이터베이스 백업 수행
<a name="Appendix.Oracle.CommonDBATasks.BackupDatabaseFull"></a>

Amazon RDS 프로시저인 `rdsadmin.rdsadmin_rman_util.backup_database_full`을 사용해 백업에 포함된 데이터 파일의 모든 블록을 백업할 수 있습니다.

이 프로시저에서는 RMAN 작업을 위해 다음과 같은 공통 파라미터를 사용합니다.
+ `p_owner`
+ `p_directory_name`
+ `p_label`
+ `p_parallel`
+ `p_section_size_mb`
+ `p_include_archive_logs`
+ `p_optimize`
+ `p_compress`
+ `p_rman_to_dbms_output`
+ `p_tag`

자세한 내용은 [RMAN 프로시저용 공통 파라미터](Appendix.Oracle.CommonDBATasks.CommonParameters.md) 섹션을 참조하세요.

이 프로시저는 다음 Amazon RDS for Oracle 엔진 버전에서 지원됩니다.
+ Oracle Database 21c(21.0.0)
+ Oracle Database 19c(19.0.0)

다음 예에서는 파라미터에 지정된 값을 사용하여 완전한 DB 인스턴스 백업을 수행합니다.

```
BEGIN
    rdsadmin.rdsadmin_rman_util.backup_database_full(
        p_owner               => 'SYS', 
        p_directory_name      => 'MYDIRECTORY',
        p_parallel            => 4,  
        p_section_size_mb     => 10,
        p_tag                 => 'FULL_DB_BACKUP',
        p_rman_to_dbms_output => FALSE);
END;
/
```

# 테넌트 데이터베이스의 전체 백업 수행
<a name="Appendix.Oracle.CommonDBATasks.BackupTenantDatabaseFull"></a>

컨테이너 데이터베이스(CDB)에 테넌트 데이터베이스를 포함한 데이터 블록을 모두 백업할 수 있습니다. Amazon RDS 프로시저 `rdsadmin.rdsadmin_rman_util.backup_tenant_full`을 사용합니다. 이 프로시저는 현재 데이터베이스 백업에만 적용되며 RMAN 작업을 위해 다음과 같은 공통 파라미터를 사용합니다.
+ `p_owner`
+ `p_directory_name`
+ `p_label`
+ `p_parallel`
+ `p_section_size_mb`
+ `p_include_archive_logs`
+ `p_optimize`
+ `p_compress`
+ `p_rman_to_dbms_output`
+ `p_tag`

자세한 내용은 [RMAN 프로시저용 공통 파라미터](Appendix.Oracle.CommonDBATasks.CommonParameters.md) 섹션을 참조하세요.

`rdsadmin_rman_util.backup_tenant_full` 프로시저는 다음 RDS for Oracle DB 엔진 버전에서 지원됩니다.
+ Oracle Database 21c(21.0.0) CDB
+ Oracle Database 19c(19.0.0) CDB

다음 예에서는 파라미터에 지정된 값을 사용하여 현재 테넌트 데이터베이스에 전체 백업을 수행합니다.

```
BEGIN
    rdsadmin.rdsadmin_rman_util.backup_tenant_full(
        p_owner               => 'SYS', 
        p_directory_name      => 'MYDIRECTORY',
        p_parallel            => 4,  
        p_section_size_mb     => 10,
        p_tag                 => 'FULL_TENANT_DB_BACKUP',
        p_rman_to_dbms_output => FALSE);
END;
/
```

# 증분 데이터베이스 백업 수행
<a name="Appendix.Oracle.CommonDBATasks.BackupDatabaseIncremental"></a>

Amazon RDS 프로시저인 `rdsadmin.rdsadmin_rman_util.backup_database_incremental`을 사용해 DB 인스턴스에 대한 증분 백업을 수행할 수 있습니다.

증분 백업에 대한 자세한 내용은 Oracle 설명서의 [증분 백업](https://docs.oracle.com/database/121/RCMRF/rcmsynta006.htm#GUID-73642FF2-43C5-48B2-9969-99001C52EB50__BGBHABHH)을 참조하세요.

이 프로시저에서는 RMAN 작업을 위해 다음과 같은 공통 파라미터를 사용합니다.
+ `p_owner`
+ `p_directory_name`
+ `p_label`
+ `p_parallel`
+ `p_section_size_mb`
+ `p_include_archive_logs`
+ `p_include_controlfile`
+ `p_optimize`
+ `p_compress`
+ `p_rman_to_dbms_output`
+ `p_tag`

자세한 내용은 [RMAN 프로시저용 공통 파라미터](Appendix.Oracle.CommonDBATasks.CommonParameters.md) 섹션을 참조하세요.

이 프로시저는 다음 Amazon RDS for Oracle 엔진 버전에서 지원됩니다.
+ Oracle Database 21c(21.0.0)
+ Oracle Database 19c(19.0.0)

이 프로시저에서는 다음과 같은 추가 파라미터도 사용합니다.


****  

| 파라미터 이름 | 데이터 형식 | 유효한 값 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | --- | 
|  `p_level`  |  숫자  |  `0`, `1`  |  `0`  |  아니요  |  `0`을 지정하여 전체 증분 백업을 활성화합니다. `1`을 지정하여 비누적 증분 백업을 활성화합니다.  | 

다음 예에서는 지정된 값을 파라미터에 사용하여 DB 인스턴스에 대한 증분 백업을 수행합니다.

```
BEGIN
    rdsadmin.rdsadmin_rman_util.backup_database_incremental(
        p_owner               => 'SYS', 
        p_directory_name      => 'MYDIRECTORY',
        p_level               => 1,
        p_parallel            => 4,  
        p_section_size_mb     => 10,
        p_tag                 => 'MY_INCREMENTAL_BACKUP',
        p_rman_to_dbms_output => FALSE);
END;
/
```

# 테넌트 데이터베이스의 증분 백업 수행
<a name="Appendix.Oracle.CommonDBATasks.BackupTenantDatabaseIncremental"></a>

CDB에서 현재 테넌트 데이터베이스의 증분 백업을 수행할 수 있습니다. Amazon RDS 프로시저 `rdsadmin.rdsadmin_rman_util.backup_tenant_incremental`을 사용합니다.

증분 백업에 대한 자세한 내용은 Oracle 데이터베이스 설명서의 [증분 백업](https://docs.oracle.com/database/121/RCMRF/rcmsynta006.htm#GUID-73642FF2-43C5-48B2-9969-99001C52EB50__BGBHABHH)을 참조하세요.

이 프로시저는 현재 테넌트 데이터베이스에만 적용되며 RMAN 작업을 위해 다음과 같은 공통 파라미터를 사용합니다.
+ `p_owner`
+ `p_directory_name`
+ `p_label`
+ `p_parallel`
+ `p_section_size_mb`
+ `p_include_archive_logs`
+ `p_include_controlfile`
+ `p_optimize`
+ `p_compress`
+ `p_rman_to_dbms_output`
+ `p_tag`

자세한 내용은 [RMAN 프로시저용 공통 파라미터](Appendix.Oracle.CommonDBATasks.CommonParameters.md) 단원을 참조하십시오.

이 프로시저는 다음 Amazon RDS for Oracle 엔진 버전에서 지원됩니다.
+ Oracle Database 21c(21.0.0) CDB
+ Oracle Database 19c(19.0.0) CDB

이 프로시저에서는 다음과 같은 추가 파라미터도 사용합니다.


****  

| 파라미터 이름 | 데이터 형식 | 유효한 값 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | --- | 
|  `p_level`  |  숫자  |  `0`, `1`  |  `0`  |  아니요  |  `0`을 지정하여 전체 증분 백업을 활성화합니다. `1`을 지정하여 비누적 증분 백업을 활성화합니다.  | 

다음 예에서는 파라미터에 지정된 값을 사용하여 현재 테넌트 데이터베이스에 증분 백업을 수행합니다.

```
BEGIN
    rdsadmin.rdsadmin_rman_util.backup_tenant_incremental(
        p_owner               => 'SYS', 
        p_directory_name      => 'MYDIRECTORY',
        p_level               => 1,
        p_parallel            => 4,  
        p_section_size_mb     => 10,
        p_tag                 => 'MY_INCREMENTAL_BACKUP',
        p_rman_to_dbms_output => FALSE);
END;
/
```

# 테이블스페이스 백업
<a name="Appendix.Oracle.CommonDBATasks.BackupTablespace"></a>

Amazon RDS 프로시저 `rdsadmin.rdsadmin_rman_util.backup_tablespace`를 사용하여 테이블스페이스를 백업할 수 있습니다.

이 프로시저에서는 RMAN 작업을 위해 다음과 같은 공통 파라미터를 사용합니다.
+ `p_owner`
+ `p_directory_name`
+ `p_label`
+ `p_parallel`
+ `p_section_size_mb`
+ `p_include_archive_logs`
+ `p_include_controlfile`
+ `p_optimize`
+ `p_compress`
+ `p_rman_to_dbms_output`
+ `p_tag`

자세한 내용은 [RMAN 프로시저용 공통 파라미터](Appendix.Oracle.CommonDBATasks.CommonParameters.md) 섹션을 참조하세요.

이 프로시저에서는 다음과 같은 추가 파라미터도 사용합니다.


****  

| 파라미터 이름 | 데이터 형식 | 유효한 값 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | --- | 
|  `p_tablespace_name`  |  varchar2  |  유효한 테이블스페이스 이름입니다.  |  —  |  예  |  백업할 테이블스페이스의 이름입니다.  | 

이 프로시저는 다음 Amazon RDS for Oracle 엔진 버전에서 지원됩니다.
+ Oracle Database 21c(21.0.0)
+ Oracle Database 19c(19.0.0)

다음 예에서는 지정된 값을 파라미터에 사용하여 테이블스페이스 백업을 수행합니다.

```
BEGIN
    rdsadmin.rdsadmin_rman_util.backup_tablespace(
        p_owner               => 'SYS', 
        p_directory_name      => 'MYDIRECTORY',
        p_tablespace_name     => 'MYTABLESPACE',
        p_parallel            => 4,  
        p_section_size_mb     => 10,
        p_tag                 => 'MYTABLESPACE_BACKUP',
        p_rman_to_dbms_output => FALSE);
END;
/
```

# Backing up a control file
<a name="Appendix.Oracle.CommonDBATasks.backup-control-file"></a>

Amazon RDS 프로시저 `rdsadmin.rdsadmin_rman_util.backup_current_controlfile`를 사용하여 제어 파일을 백업할 수 있습니다.

이 프로시저에서는 RMAN 작업을 위해 다음과 같은 공통 파라미터를 사용합니다.
+ `p_owner`
+ `p_directory_name`
+ `p_label`
+ `p_compress`
+ `p_rman_to_dbms_output`
+ `p_tag`

자세한 내용은 [RMAN 프로시저용 공통 파라미터](Appendix.Oracle.CommonDBATasks.CommonParameters.md) 섹션을 참조하세요.

이 프로시저는 다음 Amazon RDS for Oracle 엔진 버전에서 지원됩니다.
+ Oracle Database 21c(21.0.0)
+ Oracle Database 19c(19.0.0)

다음 예에서는 지정된 값을 파라미터에 사용하여 제어 파일을 백업합니다.

```
BEGIN
    rdsadmin.rdsadmin_rman_util.backup_current_controlfile(
        p_owner               => 'SYS', 
        p_directory_name      => 'MYDIRECTORY',
        p_tag                 => 'CONTROL_FILE_BACKUP',
        p_rman_to_dbms_output => FALSE);
END;
/
```

# 블록 미디어 복구 수행
<a name="Appendix.Oracle.CommonDBATasks.block-media-recovery"></a>

Amazon RDS 프로시저 `rdsadmin.rdsadmin_rman_util.recover_datafile_block`을 사용하여 블록 미디어 복구라고 하는 개별 데이터 블록을 복구할 수 있습니다. 이 오버로드된 절차를 사용하여 개별 데이터 블록 또는 일정 범위의 데이터 블록을 복구할 수 있습니다.

이 프로시저에서는 RMAN 작업을 위해 다음과 같은 공통 파라미터를 사용합니다.
+ `p_rman_to_dbms_output`

자세한 내용은 [RMAN 프로시저용 공통 파라미터](Appendix.Oracle.CommonDBATasks.CommonParameters.md) 섹션을 참조하세요.

이 프로시저에서는 다음과 같은 추가 파라미터를 사용합니다.


****  

| 파라미터 이름 | 데이터 형식 | 유효한 값 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | --- | 
|  `p_datafile`  |  `NUMBER`  |  유효한 데이터 파일 ID 번호.  |  —  |  예  |  손상된 블록을 포함하는 데이터 파일. 다음 방법 중 하나를 사용하여 데이터 파일을 지정합니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/Appendix.Oracle.CommonDBATasks.block-media-recovery.html)  | 
|  `p_block`  |  `NUMBER`  |  유효한 정수.  |  —  |  예  |  복구할 개별 블록의 수. 다음 파라미터는 함께 사용할 수 없습니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/Appendix.Oracle.CommonDBATasks.block-media-recovery.html)  | 
|  `p_from_block`  |  `NUMBER`  |  유효한 정수.  |  —  |  예  |  복구할 블록 범위 중 첫 번째 블록 번호. 다음 파라미터는 함께 사용할 수 없습니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/Appendix.Oracle.CommonDBATasks.block-media-recovery.html)  | 
|  `p_to_block`  |  `NUMBER`  |  유효한 정수.  |  —  |  예  |  복구할 블록 범위 중 마지막 블록 번호. 다음 파라미터는 함께 사용할 수 없습니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/Appendix.Oracle.CommonDBATasks.block-media-recovery.html)  | 

이 프로시저는 다음 Amazon RDS for Oracle 엔진 버전에서 지원됩니다.
+ Oracle Database 21c(21.0.0)
+ Oracle Database 19c(19.0.0)

다음 예제에서는 데이터 파일 5의 블록 100을 복구합니다.

```
BEGIN
    rdsadmin.rdsadmin_rman_util.recover_datafile_block(
        p_datafile            => 5, 
        p_block               => 100,
        p_rman_to_dbms_output => TRUE);
END;
/
```

다음 예제에서는 데이터 파일 5의 블록 100\$1150을 복구합니다.

```
BEGIN
    rdsadmin.rdsadmin_rman_util.recover_datafile_block(
        p_datafile            => 5, 
        p_from_block          => 100,
        p_to_block            => 150,
        p_rman_to_dbms_output => TRUE);
END;
/
```

# Oracle DB 인스턴스에 대한 공통 스케줄링 작업 수행
<a name="Appendix.Oracle.CommonDBATasks.Scheduler"></a>

일부 `SYS` 소유 스케줄러 작업이 일반 데이터베이스 작업을 방해할 수 있습니다. 이러한 경우 Oracle Support는 일정을 수정할 것을 권장합니다. `SYS` 작업을 활성화 또는 비활성화해야 하는 경우 프로덕션 환경에서 구현하기 전에 테스트 환경에서 예약된 작업에 대해 작업을 테스트합니다. `SYS` 소유 Oracle Scheduler 작업을 위한 태스크를 수행하려면 Amazon RDS 패키지 `rdsadmin.rdsadmin_dbms_scheduler`를 사용합니다.

`rdsadmin.rdsadmin_dbms_scheduler` 프로시저는 다음 표에 나오는 Amazon RDS for Oracle DB 엔진 버전에서 지원됩니다. 이 패키지를 사용할 때 표에 나열된 `SYS` 작업을 지정할 수 있습니다.


| 데이터베이스 릴리스 | 기본적으로 활성화되는 작업 | 기본적으로 비활성화되는 작업 | 
| --- | --- | --- | 
| Oracle Database 19c |  <pre>BSLN_MAINTAIN_STATS_JOB<br />CLEANUP_NON_EXIST_OBJ<br />CLEANUP_ONLINE_IND_BUILD<br />CLEANUP_ONLINE_PMO<br />CLEANUP_TAB_IOT_PMO<br />CLEANUP_TRANSIENT_PKG<br />CLEANUP_TRANSIENT_TYPE<br />DRA_REEVALUATE_OPEN_FAILURES<br />FILE_SIZE_UPD<br />ORA$AUTOTASK_CLEAN<br />PMO_DEFERRED_GIDX_MAINT_JOB<br />PURGE_LOG<br />RSE$CLEAN_RECOVERABLE_SCRIPT<br />SM$CLEAN_AUTO_SPLIT_MERGE</pre>  |  <pre>FGR$AUTOPURGE_JOB<br />FILE_WATCHER<br />HM_CREATE_OFFLINE_DICTIONARY<br />LOAD_OPATCH_INVENTORY<br />ORA$PREPLUGIN_BACKUP_JOB<br />XMLDB_NFS_CLEANUP_JOB</pre>  | 
| Oracle Database 21c |  <pre>BSLN_MAINTAIN_STATS_JOB<br />CLEANUP_NON_EXIST_OBJ<br />CLEANUP_ONLINE_IND_BUILD<br />CLEANUP_ONLINE_PMO<br />CLEANUP_TAB_IOT_PMO<br />CLEANUP_TRANSIENT_PKG<br />CLEANUP_TRANSIENT_TYPE<br />DRA_REEVALUATE_OPEN_FAILURES<br />FILE_SIZE_UPD<br />ORA$AUTOTASK_CLEAN<br />PMO_DEFERRED_GIDX_MAINT_JOB<br />PURGE_LOG</pre>  |  <pre>FGR$AUTOPURGE_JOB<br />FILE_WATCHER<br />HM_CREATE_OFFLINE_DICTIONARY<br />LOAD_OPATCH_INVENTORY<br />ORA$PREPLUGIN_BACKUP_JOB<br />ORA$_ATSK_AUTOSTS<br />XMLDB_NFS_CLEANUP_JOB</pre>  | 

## Oracle Scheduler 프로시저용 공통 파라미터
<a name="Appendix.Oracle.CommonDBATasks.Scheduler.CommonParameters"></a>

Oracle Scheduler를 사용하여 작업을 수행하려면 Amazon RDS 패키지 `rdsadmin.rdsadmin_dbms_scheduler`의 프로시저를 사용합니다. 이 패키지에서 몇 가지 파라미터는 프로시저에 공통됩니다. 이 패키지에는 다음과 같은 공통 파라미터가 있습니다.


****  

| 파라미터 이름 | 데이터 형식 | 유효한 값 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | --- | 
|  `name`  |  varchar2  |  [Oracle DB 인스턴스에 대한 공통 스케줄링 작업 수행](#Appendix.Oracle.CommonDBATasks.Scheduler)의 테이블에 나열된 프로시저   |  —  |  예  |  수정할 작업의 이름입니다.  | 
|  `attribute`  |  varchar2  |  `'REPEAT_INTERVAL'`,`'SCHEDULE_NAME'`  |  –  |  예  |  수정할 속성입니다. 작업에 대한 반복 간격을 수정하려면 `'REPEAT_INTERVAL'`을 지정합니다. 작업에 대한 일정 이름을 수정하려면 `'SCHEDULE_NAME'`을 지정합니다.  | 
|  `value`  |  varchar2  |  사용하는 속성에 따라 유효한 일정 간격 또는 일정 이름입니다.  |  –  |  예  |  속성의 새로운 값입니다.  | 

## DBMS\$1SCHEDULER 작업 변경
<a name="Appendix.Oracle.CommonDBATasks.ModifyScheduler"></a>

Oracle Scheduler의 특정 구성 요소를 수정하려면 Oracle 프로시저 `dbms_scheduler.set_attribute`를 사용합니다. 자세한 내용은 Oracle 문서의 [DBMS\$1SCHEDULER](https://docs.oracle.com/database/121/ARPLS/d_sched.htm#ARPLS72235)와 [SET\$1ATTRIBUTE Procedure](https://docs.oracle.com/database/121/ARPLS/d_sched.htm#ARPLS72399) 단원을 참조하세요.

Amazon RDS DB 인스턴스를 작업할 때는, 스키마 이름 `SYS`를 객체 이름 앞에 붙이십시오. 다음은 월요일 창 객체에 자원 계획 속성을 설정하는 예제입니다.

```
BEGIN
    DBMS_SCHEDULER.SET_ATTRIBUTE(
        name      => 'SYS.MONDAY_WINDOW',
        attribute => 'RESOURCE_PLAN',
        value     => 'resource_plan_1');
END;
/
```

## AutoTask 유지 관리 기간 수정
<a name="Appendix.Oracle.CommonDBATasks.Scheduler.maintenance-windows"></a>

Amazon RDS for Oracle 인스턴스는 유지 관리 기간에 대한 기본 설정을 사용하여 생성됩니다. 이러한 기간 동안 옵티마이저 통계 수집과 같은 자동화된 유지 관리 태스크가 실행됩니다. 기본적으로 유지 관리 기간은 Oracle 데이터베이스 리소스 관리자를 활성화합니다.

이 기간을 수정하려면 `DBMS_SCHEDULER` 패키지를 사용합니다. 다음과 같은 이유로 유지 관리 기간 설정을 수정해야 할 수 있습니다.
+ 유지 관리 작업을 다른 시간에 실행하거나, 다른 설정으로 실행하거나, 전혀 실행하지 않고자 할 수 있습니다. 예를 들어 이 기간의 지속 시간을 수정하거나, 반복 시간 및 간격을 변경할 수 있습니다.
+ 유지 관리 중에 리소스 관리자를 사용하도록 활성화할 경우 성능에 미치는 영향을 피하고자 할 수 있습니다. 예를 들어 기본 유지 관리 계획이 지정되어 있고 데이터베이스의 부하가 클 때 유지 관리 기간이 시작되면 `resmgr:cpu quantum`과 같은 대기 이벤트가 발생할 수 있습니다. 이 대기 이벤트는 데이터베이스 리소스 관리자와 관련이 있습니다. 다음과 같은 옵션이 있습니다.
  + DB 인스턴스의 사용량이 적은 시간 동안 유지 관리 기간이 활성화되는지 확인합니다.
  + `resource_plan`속성을 빈 문자열로 설정하여 기본 유지 관리 계획을 비활성화합니다.
  + 파라미터 그룹에서 `resource_manager_plan` 파라미터를 `FORCE:`로 설정합니다. 인스턴스가 Enterprise Edition을 사용하는 경우 이 설정을 사용하면 데이터베이스 리소스 관리자 계획이 활성화되지 않습니다.

**유지 관리 기간 설정을 수정하려면**

1. Oracle SQL 클라이언트를 사용하여 데이터베이스에 연결합니다.

1. 스케줄러 기간에 대한 현재 구성을 쿼리합니다.

   다음 예에서는 `MONDAY_WINDOW`의 구성을 쿼리합니다.

   ```
   SELECT ENABLED, RESOURCE_PLAN, DURATION, REPEAT_INTERVAL
   FROM   DBA_SCHEDULER_WINDOWS 
   WHERE  WINDOW_NAME='MONDAY_WINDOW';
   ```

   다음 출력은 이 기간이 기본값을 사용하고 있음을 보여줍니다.

   ```
   ENABLED         RESOURCE_PLAN                  DURATION         REPEAT_INTERVAL
   --------------- ------------------------------ ---------------- ------------------------------
   TRUE            DEFAULT_MAINTENANCE_PLAN       +000 04:00:00    freq=daily;byday=MON;byhour=22
                                                                   ;byminute=0; bysecond=0
   ```

1. `DBMS_SCHEDULER` 패키지를 사용하여 이 기간을 수정합니다.

   다음 예에서는 리소스 관리자가 유지 관리 기간 동안 실행되지 않도록 리소스 계획을 null로 설정합니다.

   ```
   BEGIN
     -- disable the window to make changes
     DBMS_SCHEDULER.DISABLE(name=>'"SYS"."MONDAY_WINDOW"',force=>TRUE);
   
     -- specify the empty string to use no plan
     DBMS_SCHEDULER.SET_ATTRIBUTE(name=>'"SYS"."MONDAY_WINDOW"', attribute=>'RESOURCE_PLAN', value=>'');
   
     -- re-enable the window
     DBMS_SCHEDULER.ENABLE(name=>'"SYS"."MONDAY_WINDOW"');
   END;
   /
   ```

   다음 예는 이 기간의 최대 지속 시간을 2시간으로 설정합니다.

   ```
   BEGIN
     DBMS_SCHEDULER.DISABLE(name=>'"SYS"."MONDAY_WINDOW"',force=>TRUE);
     DBMS_SCHEDULER.SET_ATTRIBUTE(name=>'"SYS"."MONDAY_WINDOW"', attribute=>'DURATION', value=>'0 2:00:00');
     DBMS_SCHEDULER.ENABLE(name=>'"SYS"."MONDAY_WINDOW"');
   END;
   /
   ```

   다음 예는 반복 간격을 매주 월요일 오전 10시로 설정합니다.

   ```
   BEGIN
     DBMS_SCHEDULER.DISABLE(name=>'"SYS"."MONDAY_WINDOW"',force=>TRUE);
     DBMS_SCHEDULER.SET_ATTRIBUTE(name=>'"SYS"."MONDAY_WINDOW"', attribute=>'REPEAT_INTERVAL', value=>'freq=daily;byday=MON;byhour=10;byminute=0;bysecond=0');
     DBMS_SCHEDULER.ENABLE(name=>'"SYS"."MONDAY_WINDOW"');
   END;
   /
   ```

## Oracle Scheduler 작업의 시간대 설정
<a name="Appendix.Oracle.CommonDBATasks.Scheduler.TimeZone"></a>

Oracle Scheduler의 시간대를 수정하려면 Oracle 프로시저 `dbms_scheduler.set_scheduler_attribute`를 사용할 수 있습니다. `dbms_scheduler` 패키지에 대한 자세한 내용은 Oracle 설명서의 [DBMS\$1SCHEDULER](https://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/DBMS_SCHEDULER.html) 및 [SET\$1SCHEDULER\$1ATTRIBUTE](https://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/DBMS_SCHEDULER.html#GUID-2AB97BF7-7154-4E6C-933F-B2659B18A907)를 참조하세요.

**현재 시간대 설정을 수정하려면**

1. SQL Developer와 같은 클라이언트를 사용하여 데이터베이스에 연결합니다. 자세한 내용은 [Oracle SQL Developer를 사용하여 DB 인스턴스에 연결](USER_ConnectToOracleInstance.SQLDeveloper.md) 섹션을 참조하세요.

1. `time_zone_name`의 시간대를 대체하여 기본 시간대를 다음과 같이 설정합니다.

   ```
   BEGIN
     DBMS_SCHEDULER.SET_SCHEDULER_ATTRIBUTE(
       attribute => 'default_timezone',
       value => 'time_zone_name'
     );
   END;
   /
   ```

다음 예제에서는 시간대를 아시아/상하이로 변경합니다.

다음과 같이 현재 시간대를 쿼리하여 시작합니다.

```
SELECT VALUE FROM DBA_SCHEDULER_GLOBAL_ATTRIBUTE WHERE ATTRIBUTE_NAME='DEFAULT_TIMEZONE';
```

출력은 현재 시간대가 ETC/UTC임을 보여줍니다.

```
VALUE
-------
Etc/UTC
```

그런 다음 시간대를 아시아/상하이로 설정합니다.

```
BEGIN
  DBMS_SCHEDULER.SET_SCHEDULER_ATTRIBUTE(
    attribute => 'default_timezone',
    value => 'Asia/Shanghai'
  );
END;
/
```

시스템 시간대 변경에 대한 자세한 내용은 [Oracle 시간대](Appendix.Oracle.Options.Timezone.md) 단원을 참조하세요.

## SYS가 소유한 Oracle Scheduler 작업 해제
<a name="Appendix.Oracle.CommonDBATasks.Scheduler.Disabling"></a>

SYS 사용자가 소유한 Oracle Scheduler 작업을 비활성화하려면 `rdsadmin.rdsadmin_dbms_scheduler.disable` 프로시저를 사용해야 합니다.

이 프로시저는 Oracle Scheduler 작업에 `name` 공통 파라미터를 사용합니다. 자세한 내용은 [Oracle Scheduler 프로시저용 공통 파라미터](#Appendix.Oracle.CommonDBATasks.Scheduler.CommonParameters) 섹션을 참조하세요.

다음 예제는 `SYS.CLEANUP_ONLINE_IND_BUILD` Oracle Scheduler 작업을 비활성화합니다.

```
BEGIN
   rdsadmin.rdsadmin_dbms_scheduler.disable('SYS.CLEANUP_ONLINE_IND_BUILD');
END;
/
```

## SYS가 소유한 Oracle Scheduler 작업 켜기
<a name="Appendix.Oracle.CommonDBATasks.Scheduler.Enabling"></a>

SYS 소유 Oracle Scheduler 작업을 활성화하려면 `rdsadmin.rdsadmin_dbms_scheduler.enable` 프로시저를 사용해야 합니다.

이 프로시저는 Oracle Scheduler 작업에 `name` 공통 파라미터를 사용합니다. 자세한 내용은 [Oracle Scheduler 프로시저용 공통 파라미터](#Appendix.Oracle.CommonDBATasks.Scheduler.CommonParameters) 섹션을 참조하세요.

다음 예제는 `SYS.CLEANUP_ONLINE_IND_BUILD` Oracle Scheduler 작업을 활성화합니다.

```
BEGIN
   rdsadmin.rdsadmin_dbms_scheduler.enable('SYS.CLEANUP_ONLINE_IND_BUILD');
END;
/
```

## CALENDAR 형식 작업에 대한 Oracle Scheduler 반복 간격 수정
<a name="Appendix.Oracle.CommonDBATasks.Scheduler.Modifying_Calendar"></a>

`CALENDAR` 형식의 SYS 소유 Oracle Scheduler 작업을 수정하는 반복 간격을 수정하려면 `rdsadmin.rdsadmin_dbms_scheduler.disable` 프로시저를 사용합니다.

이 프로시저에서는 Oracle Scheduler 작업을 위해 다음과 같은 공통 파라미터를 사용합니다.
+ `name`
+ `attribute`
+ `value`

자세한 내용은 [Oracle Scheduler 프로시저용 공통 파라미터](#Appendix.Oracle.CommonDBATasks.Scheduler.CommonParameters) 섹션을 참조하세요.

다음 예제는 `SYS.CLEANUP_ONLINE_IND_BUILD` Oracle Scheduler 작업의 반복 간격을 수정합니다.

```
BEGIN
     rdsadmin.rdsadmin_dbms_scheduler.set_attribute(
          name      => 'SYS.CLEANUP_ONLINE_IND_BUILD', 
          attribute => 'repeat_interval', 
          value     => 'freq=daily;byday=FRI,SAT;byhour=20;byminute=0;bysecond=0');
END;
/
```

## NAMED 형식 작업에 대한 Oracle Scheduler 반복 간격 수정
<a name="Appendix.Oracle.CommonDBATasks.Scheduler.Modifying_Named"></a>

일부 Oracle Scheduler 작업은 간격 대신 일정 이름을 사용합니다. 이 유형의 작업에서는 마스터 사용자 스키마에서 이름이 지정된 새 일정을 생성해야 합니다. 이렇게 하려면 표준 Oracle `sys.dbms_scheduler.create_schedule` 프로시저를 사용합니다. 또한 `rdsadmin.rdsadmin_dbms_scheduler.set_attribute procedure`를 사용하여 새 명명된 일정을 할당합니다.

이 프로시저에서는 Oracle Scheduler 작업을 위해 다음과 같은 공통 파라미터를 사용합니다.
+ `name`
+ `attribute`
+ `value`

자세한 내용은 [Oracle Scheduler 프로시저용 공통 파라미터](#Appendix.Oracle.CommonDBATasks.Scheduler.CommonParameters) 섹션을 참조하세요.

다음 예제는 `SYS.BSLN_MAINTAIN_STATS_JOB` Oracle Scheduler 작업의 반복 간격을 수정합니다.

```
BEGIN
     DBMS_SCHEDULER.CREATE_SCHEDULE (
          schedule_name   => 'rds_master_user.new_schedule',
          start_date      => SYSTIMESTAMP,
          repeat_interval => 'freq=daily;byday=MON,TUE,WED,THU,FRI;byhour=0;byminute=0;bysecond=0',
          end_date        => NULL,
          comments        => 'Repeats daily forever');
END;
/
 
BEGIN
     rdsadmin.rdsadmin_dbms_scheduler.set_attribute (
          name      => 'SYS.BSLN_MAINTAIN_STATS_JOB', 
          attribute => 'schedule_name',
          value     => 'rds_master_user.new_schedule');
END;
/
```

## Oracle Scheduler 작업 생성을 위한 자동 커밋 해제
<a name="Appendix.Oracle.CommonDBATasks.Scheduler.autocommit"></a>

`DBMS_SCHEDULER.CREATE_JOB`에서 Oracle Scheduler 작업을 생성하면, 작업이 즉시 생성되고 변경 사항이 커밋됩니다. 다음을 수행하려면 Oracle Scheduler 작업 생성을 사용자 트랜잭션에 통합해야 할 수 있습니다.
+ 사용자 트랜잭션이 롤백될 때 Oracle Schedule 작업을 롤백합니다.
+ 기본 사용자 트랜잭션이 커밋될 때 Oracle Scheduler 작업을 생성합니다.

프로시저 `rdsadmin.rdsadmin_dbms_scheduler.set_no_commit_flag`를 사용하여 이 동작을 설정할 수 있습니다. 이 프로시저에는 파라미터가 없습니다. 이 절차는 다음 RDS for Oracle 릴리스에서 사용할 수 있습니다.
+ 21.0.0.0.ru-2022-07.rur-2022-07.r1 이상
+ 19.0.0.0.ru-2022-07.rur-2022-07.r1 이상

다음 예에서는 Oracle Scheduler의 자동 커밋을 해제하고 Oracle Scheduler 작업을 생성한 다음 트랜잭션을 롤백합니다. 자동 커밋이 해제된 상태이기 때문에 데이터베이스는 Oracle Scheduler 작업 생성을 롤백합니다.

```
BEGIN
  rdsadmin.rdsadmin_dbms_scheduler.set_no_commit_flag;
  DBMS_SCHEDULER.CREATE_JOB(job_name   => 'EMPTY_JOB', 
                            job_type   => 'PLSQL_BLOCK', 
                            job_action => 'begin null; end;',
                            auto_drop  => false);
  ROLLBACK;
END;
/

PL/SQL procedure successfully completed.

SELECT * FROM DBA_SCHEDULER_JOBS WHERE JOB_NAME='EMPTY_JOB';

no rows selected
```

# RDS for Oracle DB 인스턴스 문제 진단
<a name="Appendix.Oracle.CommonDBATasks.Diagnostics"></a>

Oracle 데이터베이스에는 데이터베이스 문제를 조사하는 데 사용할 수 있는 결함 진단 가능성 인프라가 포함되어 있습니다. Oracle 용어에서 *문제*는 코드 버그 또는 데이터 손상과 같은 중대한 오류입니다. *인시던트*는 문제의 발생입니다. 동일한 오류가 세 번 발생하면 인프라에 이 문제의 세 가지 인시던트가 표시됩니다. 자세한 내용은 Oracle 데이터베이스 설명서의 [문제 진단 및 해결](https://docs.oracle.com/en/database/oracle/oracle-database/19/admin/diagnosing-and-resolving-problems.html#GUID-8DEB1BE0-8FB9-4FB2-A19A-17CF6F5791C3)을 참조하세요.

ADRCI(자동 진단 리포지토리 명령 인터프리터) 유틸리티는 진단 데이터를 관리하는 데 사용하는 Oracle 명령줄 도구입니다. 예를 들어, 이 도구를 사용하여 문제를 조사하고 진단 데이터를 패키징할 수 있습니다. *인시던트 패키지*에는 한 인시던트 또는 특정 문제를 참조하는 모든 인시던트에 대한 진단 데이터가 포함됩니다. .zip 파일로 구현된 인시던트 패키지를 Oracle Support에 업로드할 수 있습니다.

관리형 서비스 환경을 제공하기 위해 Amazon RDS는 ADRCI에 대한 shell 액세스를 제공하지 않습니다. RDS for Oracle 인스턴스에 대한 진단 작업을 수행하려면 Amazon RDS 패키지 `rdsadmin.rdsadmin_adrci_util`을 사용합니다.

`rdsadmin_adrci_util`의 함수를 사용하여 문제와 인시던트를 나열하고 패키지징할 수 있으며 추적 파일도 표시할 수 있습니다. 모든 함수는 작업 ID를 반환합니다. 이 ID는 `dbtask-task_id.log`와 같이 ADRCI 출력이 포함된 로그 파일 이름의 일부를 구성합니다. 로그 파일은 BDUMP 디렉터리에 상주합니다. [데이터베이스 로그 파일 다운로드](USER_LogAccess.Procedural.Downloading.md)에 설명된 절차에 따라 로그 파일을 다운로드할 수 있습니다.

## 진단 절차에 대한 공통 파라미터
<a name="Appendix.Oracle.CommonDBATasks.CommonDiagParameters"></a>

진단 작업을 수행하려면 Amazon RDS 패키지 `rdsadmin.rdsadmin_adrci_util`의 함수를 사용합니다. 이 패키지에는 다음과 같은 공통 파라미터가 있습니다.


****  

| 파라미터 이름 | 데이터 형식 | 유효한 값 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | --- | 
|  `incident_id`  |  숫자  |  유효한 인시던트 ID 또는 null   |  Null  |  아니요  |  값이 null이면 이 함수는 모든 인시던트를 표시합니다. 값이 null이 아니고 유효한 인시던트 ID를 나타내면 이 함수는 지정된 인시던트를 표시합니다.   | 
|  `problem_id`  |  숫자  |  유효한 문제 ID 또는 null  |  Null  |  아니요  |  값이 null이면 이 함수에 모든 문제를 표시합니다. 값이 null이 아니고 유효한 문제 ID를 나타내면 이 함수는 지정된 문제를 표시합니다.  | 
|  `last`  |  숫자  |  0보다 큰 유효한 정수 또는 null  |  Null  |  아니요  |  값이 null이면 이 함수는 50개 이하의 항목을 표시합니다. 값이 null이 아니면 이 함수는 지정된 숫자를 표시합니다.  | 

## 인시던트 나열
<a name="Appendix.Oracle.CommonDBATasks.Incidents"></a>

Oracle에 대한 진단 인시던트를 나열하려면 Amazon RDS 함수 `rdsadmin.rdsadmin_adrci_util.list_adrci_incidents`를 사용합니다. 기본 또는 세부 모드로 인시던트를 나열할 수 있습니다. 기본적으로 이 함수는 가장 최근 인시던트 50개를 나열합니다.

이 함수는 다음과 같은 공통 파라미터를 사용합니다.
+  `incident_id`
+  `problem_id`
+  `last`

`incident_id` 및 `problem_id`를 지정하면 `incident_id`가 `problem_id`를 재정의합니다. 자세한 내용은 [진단 절차에 대한 공통 파라미터](#Appendix.Oracle.CommonDBATasks.CommonDiagParameters) 섹션을 참조하세요.

이 함수는 다음과 같은 추가 파라미터를 사용합니다.


****  

| 파라미터 이름 | 데이터 형식 | 유효한 값 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | --- | 
|  `detail`  |  부울  | TRUE 또는 FALSE |  `FALSE`  |  아니요  |  `TRUE`이면 이 함수는 세부 모드에서 인시던트를 나열합니다. `FALSE`이면 이 함수는 기본 모드에서 인시던트를 나열합니다.  | 

모든 인시던트를 나열하려면 인수 없이 `rdsadmin.rdsadmin_adrci_util.list_adrci_incidents` 함수를 쿼리합니다. 쿼리는 작업 ID를 반환합니다.

```
SQL> SELECT rdsadmin.rdsadmin_adrci_util.list_adrci_incidents AS task_id FROM DUAL;

TASK_ID
------------------
1590786706158-3126
```

또는 인수 없이 `rdsadmin.rdsadmin_adrci_util.list_adrci_incidents` 함수를 호출하고 출력을 SQL 클라이언트 변수에 저장합니다. 다른 문에서 변수를 사용할 수 있습니다.

```
SQL> VAR task_id VARCHAR2(80);
SQL> EXEC :task_id := rdsadmin.rdsadmin_adrci_util.list_adrci_incidents;

PL/SQL procedure successfully completed.
```

로그 파일을 읽으려면 Amazon RDS 프로시저 `rdsadmin.rds_file_util.read_text_file`을 호출합니다. 작업 ID를 파일 이름의 일부로 제공합니다. 다음 출력은 53523, 53522 및 53521이라는 세 가지 인시던트를 보여줍니다.

```
SQL> SELECT * FROM TABLE(rdsadmin.rds_file_util.read_text_file('BDUMP', 'dbtask-'||:task_id||'.log'));

TEXT
-------------------------------------------------------------------------------------------------------------------------
2020-05-29 21:11:46.193 UTC [INFO ] Listing ADRCI incidents.
2020-05-29 21:11:46.256 UTC [INFO ]
ADR Home = /rdsdbdata/log/diag/rdbms/orcl_a/ORCL:
*************************************************************************
INCIDENT_ID PROBLEM_KEY                                                 CREATE_TIME
----------- ----------------------------------------------------------- ----------------------------------------
53523       ORA 700 [EVENT_CREATED_INCIDENT] [942] [SIMULATED_ERROR_003 2020-05-29 20:15:20.928000 +00:00
53522       ORA 700 [EVENT_CREATED_INCIDENT] [942] [SIMULATED_ERROR_002 2020-05-29 20:15:15.247000 +00:00
53521       ORA 700 [EVENT_CREATED_INCIDENT] [942] [SIMULATED_ERROR_001 2020-05-29 20:15:06.047000 +00:00
3 rows fetched


2020-05-29 21:11:46.256 UTC [INFO ] The ADRCI incidents were successfully listed.
2020-05-29 21:11:46.256 UTC [INFO ] The task finished successfully.

14 rows selected.
```

특정 인시던트를 나열하려면 `incident_id` 파라미터를 사용하여 ID를 지정합니다. 다음 예제에서는 인시던트 53523에 대한 로그 파일만 쿼리합니다.

```
SQL> EXEC :task_id := rdsadmin.rdsadmin_adrci_util.list_adrci_incidents(incident_id=>53523);

PL/SQL procedure successfully completed.

SQL> SELECT * FROM TABLE(rdsadmin.rds_file_util.read_text_file('BDUMP', 'dbtask-'||:task_id||'.log'));

TEXT
------------------------------------------------------------------------------------------------------------------
2020-05-29 21:15:25.358 UTC [INFO ] Listing ADRCI incidents.
2020-05-29 21:15:25.426 UTC [INFO ]
ADR Home = /rdsdbdata/log/diag/rdbms/orcl_a/ORCL:
*************************************************************************
INCIDENT_ID          PROBLEM_KEY                                                 CREATE_TIME
-------------------- ----------------------------------------------------------- ---------------------------------
53523                ORA 700 [EVENT_CREATED_INCIDENT] [942] [SIMULATED_ERROR_003 2020-05-29 20:15:20.928000 +00:00
1 rows fetched


2020-05-29 21:15:25.427 UTC [INFO ] The ADRCI incidents were successfully listed.
2020-05-29 21:15:25.427 UTC [INFO ] The task finished successfully.

12 rows selected.
```

## 문제 나열
<a name="Appendix.Oracle.CommonDBATasks.Problems"></a>

Oracle에 대한 진단 문제를 나열하려면 Amazon RDS 함수 `rdsadmin.rdsadmin_adrci_util.list_adrci_problems`를 사용합니다.

기본적으로 이 함수는 가장 최근 문제 50개를 나열합니다.

이 함수는 공통 파라미터 `problem_id` 및 `last`를 사용합니다. 자세한 내용은 [진단 절차에 대한 공통 파라미터](#Appendix.Oracle.CommonDBATasks.CommonDiagParameters) 섹션을 참조하세요.

모든 문제에 대한 작업 ID를 가져오려면 인수 없이 `rdsadmin.rdsadmin_adrci_util.list_adrci_problems` 함수를 호출하고 출력을 SQL 클라이언트 변수에 저장합니다.

```
SQL> EXEC :task_id := rdsadmin.rdsadmin_adrci_util.list_adrci_problems;

PL/SQL procedure successfully completed.
```

로그 파일을 읽으려면 `rdsadmin.rds_file_util.read_text_file` 함수를 호출하여 작업 ID를 파일 이름의 일부로 제공합니다. 다음 출력에서 로그 파일에는 1, 2 및 3이라는 세 가지 문제가 표시됩니다.

```
SQL> SELECT * FROM TABLE(rdsadmin.rds_file_util.read_text_file('BDUMP', 'dbtask-'||:task_id||'.log'));

TEXT
----------------------------------------------------------------------------------------------------------------------
2020-05-29 21:18:50.764 UTC [INFO ] Listing ADRCI problems.
2020-05-29 21:18:50.829 UTC [INFO ]
ADR Home = /rdsdbdata/log/diag/rdbms/orcl_a/ORCL:
*************************************************************************
PROBLEM_ID   PROBLEM_KEY                                                 LAST_INCIDENT        LASTINC_TIME
---------- ----------------------------------------------------------- ------------- ---------------------------------
2          ORA 700 [EVENT_CREATED_INCIDENT] [942] [SIMULATED_ERROR_003 53523         2020-05-29 20:15:20.928000 +00:00
3          ORA 700 [EVENT_CREATED_INCIDENT] [942] [SIMULATED_ERROR_002 53522         2020-05-29 20:15:15.247000 +00:00
1          ORA 700 [EVENT_CREATED_INCIDENT] [942] [SIMULATED_ERROR_001 53521         2020-05-29 20:15:06.047000 +00:00
3 rows fetched


2020-05-29 21:18:50.829 UTC [INFO ] The ADRCI problems were successfully listed.
2020-05-29 21:18:50.829 UTC [INFO ] The task finished successfully.

14 rows selected.
```

다음 예제에서는 문제 3만 나열합니다.

```
SQL> EXEC :task_id := rdsadmin.rdsadmin_adrci_util.list_adrci_problems(problem_id=>3);

PL/SQL procedure successfully completed.
```

문제 3에 대한 로그 파일을 읽으려면 `rdsadmin.rds_file_util.read_text_file`을 호출합니다. 작업 ID를 파일 이름의 일부로 제공합니다.

```
SQL> SELECT * FROM TABLE(rdsadmin.rds_file_util.read_text_file('BDUMP', 'dbtask-'||:task_id||'.log'));

TEXT
-------------------------------------------------------------------------
2020-05-29 21:19:42.533 UTC [INFO ] Listing ADRCI problems.
2020-05-29 21:19:42.599 UTC [INFO ]
ADR Home = /rdsdbdata/log/diag/rdbms/orcl_a/ORCL:
*************************************************************************
PROBLEM_ID PROBLEM_KEY                                                 LAST_INCIDENT LASTINC_TIME
---------- ----------------------------------------------------------- ------------- ---------------------------------
3          ORA 700 [EVENT_CREATED_INCIDENT] [942] [SIMULATED_ERROR_002 53522         2020-05-29 20:15:15.247000 +00:00
1 rows fetched


2020-05-29 21:19:42.599 UTC [INFO ] The ADRCI problems were successfully listed.
2020-05-29 21:19:42.599 UTC [INFO ] The task finished successfully.

12 rows selected.
```

## 인시던트 패키지 생성
<a name="Appendix.Oracle.CommonDBATasks.IncPackages"></a>

Amazon RDS 함수 `rdsadmin.rdsadmin_adrci_util.create_adrci_package`를 사용하여 인시던트 패키지를 생성할 수 있습니다. 출력은 Oracle Support에 제공할 수 있는.zip 파일입니다.

이 함수는 다음과 같은 공통 파라미터를 사용합니다.
+ `problem_id`
+ `incident_id`

앞의 파라미터 중 하나를 지정해야 합니다. 두 파라미터를 모두 지정하면 `incident_id`가 `problem_id`를 재정의합니다. 자세한 내용은 [진단 절차에 대한 공통 파라미터](#Appendix.Oracle.CommonDBATasks.CommonDiagParameters) 섹션을 참조하세요.

특정 인시던트에 대한 패키지를 생성하려면 `rdsadmin.rdsadmin_adrci_util.create_adrci_package` 파라미터를 사용하는 Amazon RDS 함수 `incident_id`를 호출합니다. 다음 예제에서는 인시던트 53523에 대한 패키지를 생성합니다.

```
SQL> EXEC :task_id := rdsadmin.rdsadmin_adrci_util.create_adrci_package(incident_id=>53523);

PL/SQL procedure successfully completed.
```

로그 파일을 읽으려면 `rdsadmin.rds_file_util.read_text_file`을 호출합니다. 작업 ID를 파일 이름의 일부로 제공할 수 있습니다. 출력은 인시던트 패키지 `ORA700EVE_20200529212043_COM_1.zip`을 생성했음을 보여줍니다.

```
SQL> SELECT * FROM TABLE(rdsadmin.rds_file_util.read_text_file('BDUMP', 'dbtask-'||:task_id||'.log'));

TEXT
--------------------------------------------------------------------------------------------------------------------------------------
2020-05-29 21:20:43.031 UTC [INFO ] The ADRCI package is being created.
2020-05-29 21:20:47.641 UTC [INFO ] Generated package 1 in file /rdsdbdata/log/trace/ORA700EVE_20200529212043_COM_1.zip, mode complete
2020-05-29 21:20:47.642 UTC [INFO ] The ADRCI package was successfully created.
2020-05-29 21:20:47.642 UTC [INFO ] The task finished successfully.
```

특정 문제에 대한 진단 데이터를 패키징하려면 `problem_id` 파라미터를 사용하여 ID를 지정합니다. 다음 예제에서는 문제 3에 대한 데이터만 패키징합니다.

```
SQL> EXEC :task_id := rdsadmin.rdsadmin_adrci_util.create_adrci_package(problem_id=>3);

PL/SQL procedure successfully completed.
```

작업 출력을 읽으려면 `rdsadmin.rds_file_util.read_text_file`을 호출하여 작업 ID를 파일 이름의 일부로 제공합니다. 출력은 인시던트 패키지 `ORA700EVE_20200529212111_COM_1.zip`을 생성했음을 보여줍니다.

```
SQL> SELECT * FROM TABLE(rdsadmin.rds_file_util.read_text_file('BDUMP', 'dbtask-'||:task_id||'.log'));

TEXT
------------------------------------------------------------------------------------------------------------------------------------------------------------
2020-05-29 21:21:11.050 UTC [INFO ] The ADRCI package is being created.
2020-05-29 21:21:15.646 UTC [INFO ] Generated package 2 in file /rdsdbdata/log/trace/ORA700EVE_20200529212111_COM_1.zip, mode complete
2020-05-29 21:21:15.646 UTC [INFO ] The ADRCI package was successfully created.
2020-05-29 21:21:15.646 UTC [INFO ] The task finished successfully.
```

또한 로그 파일을 다운로드할 수 있습니다. 자세한 내용은 [데이터베이스 로그 파일 다운로드](USER_LogAccess.Procedural.Downloading.md) 섹션을 참조하세요.

## 추적 파일 표시
<a name="Appendix.Oracle.CommonDBATasks.ShowTrace"></a>

Amazon RDS 함수 `rdsadmin.rdsadmin_adrci_util.show_adrci_tracefile`을 사용하여 추적 디렉터리 아래에 추적 파일을 나열하고 현재 ADR 홈 아래에 모든 인시던트 디렉터리를 나열할 수 있습니다. 추적 파일 및 인시던트 추적 파일의 내용을 표시할 수도 있습니다.

이 함수는 다음 파라미터를 사용합니다.


****  

| 파라미터 이름 | 데이터 형식 | 유효한 값 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | --- | 
|  `filename`  |  varchar2  | 유효한 추적 파일 이름 |  Null  |  아니요  |  값이 null이면 이 함수는 모든 추적 파일을 표시합니다. 값이 null이 아니면 이 함수는 지정된 파일을 표시합니다.  | 

추적 파일을 표시하려면 Amazon RDS 함수 `rdsadmin.rdsadmin_adrci_util.show_adrci_tracefile`을 호출합니다.

```
SQL> EXEC :task_id := rdsadmin.rdsadmin_adrci_util.show_adrci_tracefile;

PL/SQL procedure successfully completed.
```

추적 파일 이름을 나열하려면 Amazon RDS 프로시저 `rdsadmin.rds_file_util.read_text_file`을 호출하여 작업 ID를 파일 이름의 일부로 제공합니다.

```
SQL> SELECT * FROM TABLE(rdsadmin.rds_file_util.read_text_file('BDUMP', 'dbtask-'||:task_id||'.log')) WHERE TEXT LIKE '%/alert_%';

TEXT
---------------------------------------------------------------
     diag/rdbms/orcl_a/ORCL/trace/alert_ORCL.log.2020-05-28
     diag/rdbms/orcl_a/ORCL/trace/alert_ORCL.log.2020-05-27
     diag/rdbms/orcl_a/ORCL/trace/alert_ORCL.log.2020-05-26
     diag/rdbms/orcl_a/ORCL/trace/alert_ORCL.log.2020-05-25
     diag/rdbms/orcl_a/ORCL/trace/alert_ORCL.log.2020-05-24
     diag/rdbms/orcl_a/ORCL/trace/alert_ORCL.log.2020-05-23
     diag/rdbms/orcl_a/ORCL/trace/alert_ORCL.log.2020-05-22
     diag/rdbms/orcl_a/ORCL/trace/alert_ORCL.log.2020-05-21
     diag/rdbms/orcl_a/ORCL/trace/alert_ORCL.log

9 rows selected.
```

다음 예제에서는 `alert_ORCL.log`에 대한 출력을 생성합니다.

```
SQL> EXEC :task_id := rdsadmin.rdsadmin_adrci_util.show_adrci_tracefile('diag/rdbms/orcl_a/ORCL/trace/alert_ORCL.log');

PL/SQL procedure successfully completed.
```

로그 파일을 읽으려면 `rdsadmin.rds_file_util.read_text_file`을 호출합니다. 작업 ID를 파일 이름의 일부로 제공합니다. 출력에는 alert\$1ORCL.log의 처음 10줄이 표시됩니다.

```
SQL> SELECT * FROM TABLE(rdsadmin.rds_file_util.read_text_file('BDUMP', 'dbtask-'||:task_id||'.log')) WHERE ROWNUM <= 10;

TEXT
-----------------------------------------------------------------------------------------
2020-05-29 21:24:02.083 UTC [INFO ] The trace files are being displayed.
2020-05-29 21:24:02.128 UTC [INFO ] Thu May 28 23:59:10 2020
Thread 1 advanced to log sequence 2048 (LGWR switch)
  Current log# 3 seq# 2048 mem# 0: /rdsdbdata/db/ORCL_A/onlinelog/o1_mf_3_hbl2p8xs_.log
Thu May 28 23:59:10 2020
Archived Log entry 2037 added for thread 1 sequence 2047 ID 0x5d62ce43 dest 1:
Fri May 29 00:04:10 2020
Thread 1 advanced to log sequence 2049 (LGWR switch)
  Current log# 4 seq# 2049 mem# 0: /rdsdbdata/db/ORCL_A/onlinelog/o1_mf_4_hbl2qgmh_.log
Fri May 29 00:04:10 2020

10 rows selected.
```

또한 로그 파일을 다운로드할 수 있습니다. 자세한 내용은 [데이터베이스 로그 파일 다운로드](USER_LogAccess.Procedural.Downloading.md) 섹션을 참조하세요.

# Oracle DB 인스턴스에 대한 공통 기타 작업 수행
<a name="Appendix.Oracle.CommonDBATasks.Misc"></a>

그 다음에는 Oracle을 실행하는 Amazon RDS DB 인스턴스에서 기타 DBA 작업을 수행하는 방법을 알아봅니다. 관리형 서비스 환경을 제공하기 위해 Amazon RDS는 DB 인스턴스에 대해 shell 액세스를 제공하지 않으며, 고급 권한이 필요한 특정 시스템 절차와 테이블에 대한 액세스를 제한합니다.

**Topics**
+ [메인 데이터 스토리지 공간에서 디렉터리 생성 및 삭제](#Appendix.Oracle.CommonDBATasks.NewDirectories)
+ [DB 인스턴스 디렉터리의 파일 목록 표시](#Appendix.Oracle.CommonDBATasks.ListDirectories)
+ [DB 인스턴스 디렉터리의 파일 목록 읽기](#Appendix.Oracle.CommonDBATasks.ReadingFiles)
+ [Opatch 파일 액세스](#Appendix.Oracle.CommonDBATasks.accessing-opatch-files)
+ [Advisor 작업 관리](#Appendix.Oracle.CommonDBATasks.managing-advisor-tasks)
+ [테이블스페이스 전송](rdsadmin_transport_util.md)

## 메인 데이터 스토리지 공간에서 디렉터리 생성 및 삭제
<a name="Appendix.Oracle.CommonDBATasks.NewDirectories"></a>

디렉터리를 생성하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_util.create_directory`를 사용합니다. 디렉터리를 최대 10,000개까지 만들어 메인 데이터 스토리지 공간에 저장할 수 있습니다. 디렉터리를 삭제하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_util.drop_directory`를 사용합니다.

`create_directory` 및 `drop_directory` 프로시저에는 다음과 같은 필수 파라미터가 있습니다.


****  

| 파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | 
|  `p_directory_name`  |  VARCHAR2  |  —  |  예  |  디렉터리의 이름입니다.  | 

다음 예제에서는 `PRODUCT_DESCRIPTIONS`라는 새 디렉터리를 생성합니다.

```
EXEC rdsadmin.rdsadmin_util.create_directory(p_directory_name => 'product_descriptions');
```

데이터 딕셔너리는 디렉터리 이름을 대문자로 저장합니다. `DBA_DIRECTORIES`에 쿼리를 실행하면 디렉터리 목록을 표시할 수 있습니다. 실제 호스트 경로 이름은 시스템이 자동으로 선택합니다. 다음은 `PRODUCT_DESCRIPTIONS`라는 디렉터리의 디렉터리 경로를 얻는 예제입니다.

```
SELECT DIRECTORY_PATH 
  FROM DBA_DIRECTORIES 
 WHERE DIRECTORY_NAME='PRODUCT_DESCRIPTIONS';
        
DIRECTORY_PATH
----------------------------------------
/rdsdbdata/userdirs/01
```

DB 인스턴스의 마스터 사용자 이름은 새로운 디렉터리에서도 읽기/쓰기 권한이 있으며, 다른 사용자에게 액세스 권한을 부여할 수도 있습니다. `EXECUTE` 권한은 DB 인스턴스의 디렉터리에 사용할 수 없습니다. 디렉터리는 메인 데이터 스토리지 공간에 생성되어 일정 공간과 I/O 대역폭을 사용합니다.

다음 예제에서는 `PRODUCT_DESCRIPTIONS`라는 디렉터리를 삭제합니다.

```
EXEC rdsadmin.rdsadmin_util.drop_directory(p_directory_name => 'product_descriptions');
```

**참고**  
Oracle SQL 명령 `DROP DIRECTORY`를 사용하여 디렉터리를 삭제할 수도 있습니다.

디렉터리를 삭제해도 그 내용은 제거되지 않습니다. `rdsadmin.rdsadmin_util.create_directory` 프로시저가 경로 이름을 재사용하므로 삭제된 디렉터리의 파일이 새로 생성된 디렉터리에 나타날 수도 있습니다. 디렉터리를 삭제하기 전에 `UTL_FILE.FREMOVE`를 사용하여 디렉터리에서 파일을 제거하는 것이 좋습니다. 자세한 내용은 Oracle 설명서의 [FREMOVE 프로시저](https://docs.oracle.com/database/121/ARPLS/u_file.htm#ARPLS70924)를 참조하세요.

## DB 인스턴스 디렉터리의 파일 목록 표시
<a name="Appendix.Oracle.CommonDBATasks.ListDirectories"></a>

디렉터리의 파일을 나열하려면 Amazon RDS 프로시저 `rdsadmin.rds_file_util.listdir`을 사용합니다. Oracle 복제본의 경우 이 프로시저가 지원되지 않습니다. `listdir` 프로시저에는 다음과 같은 파라미터가 있습니다.


****  

| 파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | 
|  `p_directory`  |  varchar2  |  —  |  예  |  목록을 표시할 디렉터리의 이름입니다.  | 

다음 예에서는 사용자 `rdsadmin`에게 디렉터리 `PRODUCT_DESCRIPTIONS`에 대한 읽기/쓰기 권한을 부여한 다음 이 디렉터리에 있는 파일을 나열합니다.

```
GRANT READ,WRITE ON DIRECTORY PRODUCT_DESCRIPTIONS TO rdsadmin;
SELECT * FROM TABLE(rdsadmin.rds_file_util.listdir(p_directory => 'PRODUCT_DESCRIPTIONS'));
```

## DB 인스턴스 디렉터리의 파일 목록 읽기
<a name="Appendix.Oracle.CommonDBATasks.ReadingFiles"></a>

텍스트 파일을 읽으려면 Amazon RDS 프로시저 `rdsadmin.rds_file_util.read_text_file`을 사용합니다. `read_text_file` 프로시저에는 다음과 같은 파라미터가 있습니다.


****  

| 파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | 
|  `p_directory`  |  varchar2  |  —  |  예  |  파일이 포함된 디렉터리의 이름입니다.  | 
|  `p_filename`  |  varchar2  |  —  |  예  |  읽을 파일의 이름입니다.  | 

다음 예제에서는 `rice.txt` 디렉터리에 `PRODUCT_DESCRIPTIONS` 파일을 생성합니다.

```
declare
  fh sys.utl_file.file_type;
begin
  fh := utl_file.fopen(location=>'PRODUCT_DESCRIPTIONS', filename=>'rice.txt', open_mode=>'w');
  utl_file.put(file=>fh, buffer=>'AnyCompany brown rice, 15 lbs');
  utl_file.fclose(file=>fh);
end;
/
```

다음 예제에서는 `rice.txt` 디렉터리에서 `PRODUCT_DESCRIPTIONS` 파일을 읽습니다.

```
SELECT * FROM TABLE
    (rdsadmin.rds_file_util.read_text_file(
        p_directory => 'PRODUCT_DESCRIPTIONS',
        p_filename  => 'rice.txt'));
```

## Opatch 파일 액세스
<a name="Appendix.Oracle.CommonDBATasks.accessing-opatch-files"></a>

Opatch는 Oracle 소프트웨어에 패치를 적용하고 롤백할 수 있는 Oracle 유틸리티입니다. 데이터베이스에 적용된 패치를 확인하는 Oracle 메커니즘이 `opatch lsinventory` 명령입니다. BYOL(Bring Your Own Licence) 고객에 대한 서비스 요청을 개시하기 위해 Oracle Support는 해당 `lsinventory` 파일 및 Opatch 에서 생성된 `lsinventory_detail` 파일을 요청합니다.

관리형 서비스 환경을 제공하기 위해 Amazon RDS는 Opatch에 대한 shell 액세스를 제공하지 않습니다. 그 대신, BDUMP 디렉터리의 `lsinventory-dbv.txt`에는 현재 엔진 버전과 관련한 패치 정보가 포함되어 있습니다. 마이너 또는 메이저 업그레이드를 수행하면 Amazon RDS가 패치를 적용한 후 1 시간 이내에 `lsinventory-dbv.txt`를 업데이트합니다. 적용된 패치를 확인하려면 `lsinventory-dbv.txt`를 확인하세요. 이 작업은 `opatch lsinventory` 명령을 실행하는 것과 유사합니다.

**참고**  
이 단원의 예제에서는 BDUMP 디렉터리의 이름이 `BDUMP`라고 가정합니다. 읽기 전용 복제본에서는 BDUMP 디렉터리 이름이 다릅니다. 읽기 전용 복제본에서 `V$DATABASE.DB_UNIQUE_NAME`을 쿼리하여 BDUMP 이름을 가져오는 방법에 대한 자세한 내용은 [파일 나열](USER_LogAccess.Concepts.Oracle.md#USER_LogAccess.Concepts.Oracle.WorkingWithTracefiles.ViewingBackgroundDumpDest) 단원을 참조하세요.

인벤토리 파일은 Amazon RDS 명명 규칙 `lsinventory-dbv.txt` 및 `lsinventory_detail-dbv.txt`를 사용합니다. 여기서 *dbv*는 DB 버전의 전체 이름입니다. `lsinventory-dbv.txt` 파일은 모든 DB 버전에서 사용할 수 있습니다. 해당 `lsinventory_detail-dbv.txt`는 19.0.0.0, ru-2020-01.rur-2020-01.r1 이상 버전에서 사용할 수 있습니다.

예를 들어 DB 버전이 19.0.0.0.ru-2021-07.rur-2021-07.r1인 경우 인벤토리 파일의 이름은 다음과 같습니다.

```
lsinventory-19.0.0.0.ru-2021-07.rur-2021-07.r1.txt
lsinventory_detail-19.0.0.0.ru-2021-07.rur-2021-07.r1.txt
```

DB 엔진의 현재 버전과 일치하는 파일을 다운로드해야 합니다.

### 콘솔
<a name="Appendix.Oracle.CommonDBATasks.accessing-opatch-files.console"></a>

**콘솔을 사용하여 인벤토리 파일을 다운로드하려면**

1. [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)에서 Amazon RDS 콘솔을 엽니다.

1. 탐색 창에서 **데이터베이스**를 선택합니다.

1. 보고자 하는 로그 파일을 보유한 DB 인스턴스의 이름을 선택합니다.

1. **로그 및 이벤트** 탭을 선택합니다.

1. 아래로 스크롤하여 [**Logs**] 섹션을 찾습니다.

1. **로그** 섹션에서 `lsinventory`를 검색합니다.

1. 액세스할 파일을 선택한 다음 **다운로드**를 선택합니다.

### SQL
<a name="Appendix.Oracle.CommonDBATasks.accessing-opatch-files.sql"></a>

SQL 클라이언트에서 `lsinventory-dbv.txt`를 읽으려면 `SELECT` 문을 사용하면 됩니다. 이 기술에서는 `rdsadmin` 함수인 `rdsadmin.rds_file_util.read_text_file` 또는 `rdsadmin.tracefile_listing`을 사용합니다.

다음 예제 쿼리에서 *dbv*를 Oracle DB 버전으로 바꿉니다. 예를 들어, DB 버전은 19.0.0.0.ru-2020-04.rur-2020-04.r1일 수 있습니다.

```
SELECT text
FROM   TABLE(rdsadmin.rds_file_util.read_text_file('BDUMP', 'lsinventory-dbv.txt'));
```

### PL/SQL
<a name="Appendix.Oracle.CommonDBATasks.accessing-opatch-files.plsql"></a>

SQL 클라이언트에서 `lsinventory-dbv.txt`를 읽으려면 PL/SQL 프로그램을 작성하면 됩니다. 이 프로그램은 `utl_file`을 사용하여 파일을 읽고 `dbms_output`을 사용하여 인쇄합니다. 이는 Oracle에서 제공하는 패키지입니다.

다음 예제 프로그램에서 *dbv*를 Oracle DB 버전으로 바꿉니다. 예를 들어, DB 버전은 19.0.0.0.ru-2020-04.rur-2020-04.r1일 수 있습니다.

```
SET SERVEROUTPUT ON
DECLARE
  v_file              SYS.UTL_FILE.FILE_TYPE;
  v_line              VARCHAR2(1000);
  v_oracle_home_type  VARCHAR2(1000);
  c_directory         VARCHAR2(30) := 'BDUMP';
  c_output_file       VARCHAR2(30) := 'lsinventory-dbv.txt';
BEGIN
  v_file := SYS.UTL_FILE.FOPEN(c_directory, c_output_file, 'r');
  LOOP
    BEGIN
      SYS.UTL_FILE.GET_LINE(v_file, v_line,1000);
      DBMS_OUTPUT.PUT_LINE(v_line);
    EXCEPTION
      WHEN no_data_found THEN
        EXIT;
    END;
  END LOOP;
END;
/
```

또는 `rdsadmin.tracefile_listing`을 쿼리하고 출력을 파일로 스풀링합니다. 다음 예제에서는 출력을 `/tmp/tracefile.txt`로 스풀링합니다.

```
SPOOL /tmp/tracefile.txt
SELECT * 
FROM   rdsadmin.tracefile_listing 
WHERE  FILENAME LIKE 'lsinventory%';
SPOOL OFF;
```

## Advisor 작업 관리
<a name="Appendix.Oracle.CommonDBATasks.managing-advisor-tasks"></a>

Oracle Database에는 다양한 Advisor가 포함되어 있습니다. 각 Advisor는 자동화 및 수동 작업을 지원합니다. `rdsadmin.rdsadmin_util` 패키지의 프로시저를 사용하여 일부 Advisor 작업을 관리할 수 있습니다.

Advisor 작업 프로시저는 다음 엔진 버전에서 사용할 수 있습니다.
+ Oracle Database 21c(21.0.0)
+ 19.0.0.0.ru-2021-01.rur-2021-01.r1 이상의 Oracle Database 19c 버전 

  자세한 내용은 *Amazon RDS for Oracle 릴리스 정보*의 [버전 19.0.0.0.ru-2021-01.rur-2021-01.r1](https://docs.aws.amazon.com/AmazonRDS/latest/OracleReleaseNotes/oracle-version-19-0.html#oracle-version-RU-RUR.19.0.0.0.ru-2021-01.rur-2021-01.r1)을 참조하세요.

**Topics**
+ [Advisor 작업에 대한 파라미터 설정](#Appendix.Oracle.CommonDBATasks.setting-task-parameters)
+ [AUTO\$1STATS\$1ADVISOR\$1TASK 비활성화](#Appendix.Oracle.CommonDBATasks.dropping-advisor-task)
+ [AUTO\$1STATS\$1ADVISOR\$1TASK 다시 활성화](#Appendix.Oracle.CommonDBATasks.recreating-advisor-task)

### Advisor 작업에 대한 파라미터 설정
<a name="Appendix.Oracle.CommonDBATasks.setting-task-parameters"></a>

일부 Advisor 작업에 대한 파라미터를 설정하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_util.advisor_task_set_parameter`를 사용합니다. `advisor_task_set_parameter` 프로시저에는 다음과 같은 파라미터가 있습니다.


****  

| 파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | 
|  `p_task_name`  |  varchar2  |  —  |  예  |  파라미터를 변경할 Advisor 작업의 이름입니다. 유효한 값은 다음과 같습니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/Appendix.Oracle.CommonDBATasks.Misc.html)  | 
|  `p_parameter`  |  varchar2  |  —  |  예  |  작업 파라미터의 이름입니다. Advisor 작업에 유요한 파라미터를 찾으려면 다음 쿼리를 실행합니다. *p\$1task\$1name*을 `p_task_name`의 유효한 값으로 바꿉니다. <pre>COL PARAMETER_NAME FORMAT a30<br />COL PARAMETER_VALUE FORMAT a30<br />SELECT PARAMETER_NAME, PARAMETER_VALUE<br />FROM DBA_ADVISOR_PARAMETERS<br />WHERE TASK_NAME='p_task_name'<br />AND PARAMETER_VALUE != 'UNUSED'<br />ORDER BY PARAMETER_NAME;</pre>  | 
|  `p_value`  |  varchar2  |  —  |  예  |  작업 파라미터의 값입니다. 작업 파라미터의 유효한 값을 찾으려면 다음 쿼리를 실행합니다. *p\$1task\$1name*을 `p_task_name`의 유효한 값으로 바꿉니다. <pre>COL PARAMETER_NAME FORMAT a30<br />COL PARAMETER_VALUE FORMAT a30<br />SELECT PARAMETER_NAME, PARAMETER_VALUE<br />FROM DBA_ADVISOR_PARAMETERS<br />WHERE TASK_NAME='p_task_name'<br />AND PARAMETER_VALUE != 'UNUSED'<br />ORDER BY PARAMETER_NAME;</pre>  | 

다음 PL/SQL 프로그램은 `ACCEPT_PLANS`에 대해 `FALSE`를 `SYS_AUTO_SPM_EVOLVE_TASK`로 설정합니다. SQL Plan Management 자동화 작업은 계획을 확인하고 결과에 대한 보고서를 생성하지만 계획을 자동으로 개선하지는 않습니다. 보고서를 사용하여 새 SQL 계획 기준을 식별하고 수동으로 적용할 수 있습니다.

```
BEGIN 
  rdsadmin.rdsadmin_util.advisor_task_set_parameter(
    p_task_name => 'SYS_AUTO_SPM_EVOLVE_TASK',
    p_parameter => 'ACCEPT_PLANS',
    p_value     => 'FALSE');
END;
```

다음 PL/SQL 프로그램은 `EXECUTION_DAYS_TO_EXPIRE`에 대해 `10`를 `AUTO_STATS_ADVISOR_TASK`로 설정합니다. 미리 정의된 작업 `AUTO_STATS_ADVISOR_TASK`는 유지 관리 기간 동안 하루에 한 번 자동으로 실행됩니다. 이 예에서는 작업 실행의 보존 기간을 10일로 설정합니다.

```
BEGIN 
  rdsadmin.rdsadmin_util.advisor_task_set_parameter(
    p_task_name => 'AUTO_STATS_ADVISOR_TASK',
    p_parameter => 'EXECUTION_DAYS_TO_EXPIRE',
    p_value     => '10');
END;
```

### AUTO\$1STATS\$1ADVISOR\$1TASK 비활성화
<a name="Appendix.Oracle.CommonDBATasks.dropping-advisor-task"></a>

`AUTO_STATS_ADVISOR_TASK`를 비활성화하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_util.advisor_task_drop`을 사용합니다. `advisor_task_drop` 프로시저는 다음 파라미터를 받습니다.


****  

| 파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | 
|  `p_task_name`  |  varchar2  |  —  |  예  |  비활성화할 Advisor 작업의 이름입니다. 유일한 유효 값은 `AUTO_STATS_ADVISOR_TASK`입니다.  | 

다음 명령은 `AUTO_STATS_ADVISOR_TASK`를 삭제합니다.

```
EXEC rdsadmin.rdsadmin_util.advisor_task_drop('AUTO_STATS_ADVISOR_TASK')
```

`rdsadmin.rdsadmin_util.dbms_stats_init`를 사용하여 `AUTO_STATS_ADVISOR_TASK`를 다시 활성화할 수 있습니다.

### AUTO\$1STATS\$1ADVISOR\$1TASK 다시 활성화
<a name="Appendix.Oracle.CommonDBATasks.recreating-advisor-task"></a>

`AUTO_STATS_ADVISOR_TASK`를 다시 활성화하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_util.dbms_stats_init`를 사용합니다. `dbms_stats_init` 프로시저에는 파라미터가 없습니다.

다음 명령은 `AUTO_STATS_ADVISOR_TASK`를 다시 활성화합니다.

```
EXEC rdsadmin.rdsadmin_util.dbms_stats_init()
```

# 테이블스페이스 전송
<a name="rdsadmin_transport_util"></a>

Amazon RDS 패키지 `rdsadmin.rdsadmin_transport_util`을 사용하여 온프레미스 Oracle 데이터베이스의 테이블스페이스 세트를 RDS for Oracle DB 인스턴스로 복사합니다. 물리적 수준에서 전송 가능한 테이블스페이스 기능은 소스 데이터 파일과 메타데이터 파일을 대상 인스턴스에 점진적으로 복사합니다. Amazon EFS 또는 Amazon S3를 사용하여 파일을 전송할 수 있습니다. 자세한 내용은 [Oracle 전송 가능한 테이블스페이스를 사용한 마이그레이션](oracle-migrating-tts.md) 단원을 참조하십시오.

**Topics**
+ [전송된 테이블스페이스를 DB 인스턴스로 가져오기](rdsadmin_transport_util_import_xtts_tablespaces.md)
+ [전송 가능한 테이블스페이스를 DB 인스턴스로 가져오기](rdsadmin_transport_util_import_xtts_metadata.md)
+ [테이블스페이스 가져오기 후 분리된 파일 나열](rdsadmin_transport_util_list_xtts_orphan_files.md)
+ [테이블스페이스 가져오기 후 분리된 파일 삭제](rdsadmin_transport_util_cleanup_incomplete_xtts_import.md)

# 전송된 테이블스페이스를 DB 인스턴스로 가져오기
<a name="rdsadmin_transport_util_import_xtts_tablespaces"></a>

`rdsadmin.rdsadmin_transport_util.import_xtts_tablespaces` 프로시저를 사용하여 원본 DB 인스턴스에서 이전에 내보낸 테이블스페이스를 복원합니다. 전송 단계에서는 읽기 전용 테이블스페이스를 백업하고 Data Pump 메타데이터를 내보내고 이러한 파일을 대상 DB 인스턴스로 전송하고 테이블스페이스를 가져옵니다. 자세한 내용은 [4단계: 테이블스페이스 전송](oracle-migrating-tts.md#oracle-migrating-tts.final-br-phase) 섹션을 참조하세요.

## 구문
<a name="rdsadmin_transport_util_import_xtts_tablespaces-syntax"></a>

```
FUNCTION import_xtts_tablespaces(
    p_tablespace_list IN CLOB,
    p_directory_name  IN VARCHAR2,
    p_platform_id     IN NUMBER DEFAULT 13,
    p_parallel        IN INTEGER DEFAULT 0) RETURN VARCHAR2;
```

## 파라미터
<a name="rdsadmin_transport_util_import_xtts_tablespaces-parameters"></a>


****  

| 파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | 
|  `p_tablespace_list`  |  `CLOB`  |  —  |  예  |  가져올 테이블스페이스 목록입니다.  | 
|  `p_directory_name`  |  `VARCHAR2`  |  —  |  예  | 테이블스페이스 백업이 포함된 디렉터리입니다. | 
|  `p_platform_id`  |  `NUMBER`  |  `13`  |  아니요  |  백업 단계에서 지정한 것과 일치하는 플랫폼 ID를 입력합니다. 플랫폼 목록을 찾으려면 `V$TRANSPORTABLE_PLATFORM`을 쿼리하세요. 기본 플랫폼은 little endian인 Linux x86 64비트입니다.  | 
|  `p_parallel`  |  `INTEGER`  |  `0`  |  아니요  |  병렬 처리의 정도입니다. 기본적으로 병렬 처리는 비활성화됩니다.  | 

## 예제
<a name="rdsadmin_transport_util_import_xtts_tablespaces-examples"></a>

다음 예에서는 *DATA\$1PUMP\$1DIR* 디렉터리에서 *TBS1*, *TBS2* 및 *TBS3* 테이블스페이스를 가져옵니다. 소스 플랫폼은 플랫폼 ID가 `6`인 AIX 기반 시스템(64비트)입니다. `V$TRANSPORTABLE_PLATFORM` 쿼리를 통해 플랫폼 ID를 찾을 수 있습니다.

```
VAR task_id CLOB

BEGIN
  :task_id:=rdsadmin.rdsadmin_transport_util.import_xtts_tablespaces(
        'TBS1,TBS2,TBS3',
        'DATA_PUMP_DIR',
        p_platform_id => 6);
END;
/

PRINT task_id
```

# 전송 가능한 테이블스페이스를 DB 인스턴스로 가져오기
<a name="rdsadmin_transport_util_import_xtts_metadata"></a>

`rdsadmin.rdsadmin_transport_util.import_xtts_metadata` 프로시저를 사용하여 전송 가능한 테이블스페이스 메타데이터를 RDS for Oracle DB 인스턴스로 가져옵니다. 작업 중에 메타데이터 가져오기 상태가 `rdsadmin.rds_xtts_operation_info` 테이블에 표시됩니다. 자세한 내용은 [5단계: 대상 DB 인스턴스에 테이블스페이스 메타데이터 가져오기](oracle-migrating-tts.md#oracle-migrating-tts.transport.import-dmp) 섹션을 참조하세요.

## 구문
<a name="rdsadmin_transport_util_import_xtts_metadata-syntax"></a>

```
PROCEDURE import_xtts_metadata(
    p_datapump_metadata_file IN SYS.DBA_DATA_FILES.FILE_NAME%TYPE,
    p_directory_name         IN VARCHAR2,
    p_exclude_stats          IN BOOLEAN DEFAULT FALSE,
    p_remap_tablespace_list  IN CLOB DEFAULT NULL,
    p_remap_user_list        IN CLOB DEFAULT NULL);
```

## 파라미터
<a name="rdsadmin_transport_util_import_xtts_metadata-parameters"></a>


****  

| 파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | 
|  `p_datapump_metadata_file`  |  `SYS.DBA_DATA_FILES.FILE_NAME%TYPE`  |  —  |  예  |  전송 가능한 테이블스페이스에 대한 메타데이터가 포함된 Oracle Data Pump 파일의 이름입니다.  | 
|  `p_directory_name`  |  `VARCHAR2`  |  —  |  예  |  Data Pump 파일이 포함된 디렉터리입니다.  | 
|  `p_exclude_stats`  |  `BOOLEAN`  |  `FALSE`  |  아니요  |  통계 제외 여부를 나타내는 플래그입니다.  | 
|  `p_remap_tablespace_list`  |  `CLOB`  |  NULL  |  아니요  |  메타데이터를 가져오는 동안 재매핑할 테이블스페이스 목록입니다. `from_tbs:to_tbs` 형식을 사용합니다. 예를 들어, `users:user_data`를 지정합니다.  | 
|  `p_remap_user_list`  |  `CLOB`  |  NULL  |  아니요  |  메타데이터를 가져오는 동안 재매핑할 사용자 스키마 목록입니다. `from_schema_name:to_schema_name` 형식을 사용합니다. 예를 들어, `hr:human_resources`를 지정합니다.  | 

## 예제
<a name="rdsadmin_transport_util_import_xtts_metadata-examples"></a>

이 예시에서는 *DATA\$1PUMP\$1DIR*에 위치한 *xttdump.dmp* 파일에서 테이블스페이스 메타데이터를 가져옵니다.

```
BEGIN
  rdsadmin.rdsadmin_transport_util.import_xtts_metadata('xttdump.dmp','DATA_PUMP_DIR');
END;
/
```

# 테이블스페이스 가져오기 후 분리된 파일 나열
<a name="rdsadmin_transport_util_list_xtts_orphan_files"></a>

`rdsadmin.rdsadmin_transport_util.list_xtts_orphan_files` 프로시저를 사용하여 테이블스페이스 가져오기 후 분리된 데이터 파일을 나열합니다. 데이터 파일을 식별한 후 `rdsadmin.rdsadmin_transport_util.cleanup_incomplete_xtts_import`를 호출하여 삭제할 수 있습니다.

## 구문
<a name="rdsadmin_transport_util_list_xtts_orphan_files-syntax"></a>

```
FUNCTION list_xtts_orphan_files RETURN xtts_orphan_files_list_t PIPELINED;
```

## 예제
<a name="rdsadmin_transport_util_list_xtts_orphan_files-examples"></a>

다음 예에서는 `rdsadmin.rdsadmin_transport_util.list_xtts_orphan_files` 프로시저를 호출합니다. 출력에는 분리된 두 개의 데이터 파일이 표시됩니다.

```
SQL> SELECT * FROM TABLE(rdsadmin.rdsadmin_transport_util.list_xtts_orphan_files);

FILENAME       FILESIZE
-------------- ---------
datafile_7.dbf 104865792
datafile_8.dbf 104865792
```

# 테이블스페이스 가져오기 후 분리된 파일 삭제
<a name="rdsadmin_transport_util_cleanup_incomplete_xtts_import"></a>

`rdsadmin.rdsadmin_transport_util.list_xtts_orphan_files` 프로시저를 사용하여 테이블스페이스 가져오기 후 분리된 데이터 파일을 삭제합니다. 이 명령을 실행하면 `rds-xtts-delete_xtts_orphaned_files-YYYY-MM-DD.HH24-MI-SS.FF.log` 이름 형식을 사용하는 로그 파일이 `BDUMP` 디렉터리에 생성됩니다. `rdsadmin.rdsadmin_transport_util.cleanup_incomplete_xtts_import` 프로시저를 사용하여 분리된 파일을 찾습니다. `rdsadmin.rds_file_util.read_text_file` 프로시저를 호출하여 로그 파일을 읽을 수 있습니다. 자세한 내용은 [6단계: 남은 파일 정리](oracle-migrating-tts.md#oracle-migrating-tts.cleanup) 섹션을 참조하세요.

## 구문
<a name="rdsadmin_transport_util_cleanup_incomplete_xtts_import-syntax"></a>

```
PROCEDURE cleanup_incomplete_xtts_import(
    p_directory_name IN VARCHAR2);
```

## 파라미터
<a name="rdsadmin_transport_util_cleanup_incomplete_xtts_import-parameters"></a>


****  

| 파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | 
|  `p_directory_name`  |  `VARCHAR2`  |  —  |  예  |  분리된 데이터 파일이 포함된 디렉터리입니다.  | 

## 예제
<a name="rdsadmin_transport_util_cleanup_incomplete_xtts_import-examples"></a>

다음 예시에서는 *DATA\$1PUMP\$1DIR*에서 분리된 데이터 파일을 삭제합니다.

```
BEGIN
  rdsadmin.rdsadmin_transport_util.cleanup_incomplete_xtts_import('DATA_PUMP_DIR');
END;
/
```

다음 예시에서는 이전 명령으로 생성된 로그 파일을 읽습니다.

```
SELECT * 
FROM TABLE(rdsadmin.rds_file_util.read_text_file(
       p_directory => 'BDUMP',
       p_filename  => 'rds-xtts-delete_xtts_orphaned_files-2023-06-01.09-33-11.868894000.log'));

TEXT
--------------------------------------------------------------------------------
orphan transported datafile datafile_7.dbf deleted.
orphan transported datafile datafile_8.dbf deleted.
```

# RDS for Oracle에서 스토리지 작업
<a name="User_Oracle_AdditionalStorage"></a>

모든 RDS for Oracle 인스턴스에는 기본 스토리지 볼륨이 있습니다. 스토리지 용량을 늘리려면 DB 인스턴스에 최대 3개의 추가 스토리지 볼륨을 연결할 수 있습니다. 워크로드 요구 사항에 따라 각 볼륨에 대해 gp3 스토리지와 io2 스토리지 중에서 선택합니다. 예를 들어 자주 액세스하는 데이터를 io2 볼륨에 배치하고 기록 데이터를 gp3 볼륨에 넣을 수 있습니다.

추가 스토리지 볼륨을 사용하여 다음과 같은 이점을 누릴 수 있습니다.
+ **향상된 용량** - 최대 3개의 추가 스토리지 볼륨을 연결하여 DB 인스턴스당 총 스토리지를 최대 256TiB까지 확장합니다.
+ **유연한 스토리지 구성 및 성능 최적화** - 다양한 스토리지 유형(gp3 및 io2)을 혼합하여 데이터 액세스 패턴에 따라 비용과 성능을 모두 최적화합니다. 고성능 io2 스토리지의 자주 액세스하는 데이터와 비용 효율적인 gp3 스토리지의 아카이브 데이터를 분리합니다.
+ **필요에 따라 스토리지 용량 확장 및 축소** - 데이터 마이그레이션 중에 추가 스토리지가 필요할 때 볼륨을 연결한 다음 나중에 볼륨을 삭제합니다. 이렇게 하면 총 DB 인스턴스 스토리지를 확장하고 줄일 수 있습니다.
+ **온라인 데이터 이동** - Oracle Database의 내장 기능을 사용하여 가동 중지 시간 없이 볼륨 간에 데이터를 이동할 수 있습니다.

**참고**  
추가 스토리지 볼륨은 제거할 수 있지만 기본 볼륨은 제거할 수 없습니다.

**Topics**
+ [RDS for Oracle에서 추가 스토리지 볼륨 사용 시 고려 사항](#User_Oracle_AdditionalStorage.considerations)
+ [RDS for Oracle에서 추가 스토리지 볼륨 사용 시 제한 사항](#User_Oracle_AdditionalStorage.limitations)
+ [RDS for Oracle의 추가 스토리지 볼륨을 사용한 데이터베이스 관리 작업](#User_Oracle_AdditionalStorage.DBManagement)
+ [RDS for Oracle을 사용하여 스토리지 볼륨 추가, 제거 또는 수정](User_Oracle_AdditionalStorage.ModifyStorageVolumes.md)
+ [RDS for Oracle에서 추가 스토리지 볼륨으로 데이터 백업 및 복원](User_Oracle_AdditionalStorage.BackupRestore.md)
+ [RDS for Oracle의 추가 스토리지 볼륨 사용 사례](User_Oracle_AdditionalStorage.UseCases.md)

## RDS for Oracle에서 추가 스토리지 볼륨 사용 시 고려 사항
<a name="User_Oracle_AdditionalStorage.considerations"></a>

RDS for Oracle에서 추가 스토리지 볼륨을 사용할 때는 다음 사항을 고려하세요.
+ 인스턴스당 최대 3개의 스토리지 볼륨을 추가할 수 있습니다.
+ 추가 스토리지 볼륨은 다음 볼륨 이름을 사용해야 합니다.
  + rdsdbdata2
  + rdsdbdata3
  + rdsdbdata4
+ 범용 SSD(gp3)와 프로비저닝된 IOPS SSD(io2) 스토리지 유형만 추가할 수 있습니다.
+ 애플리케이션이 계속 실행되는 동안 Oracle의 온라인 재배치 기능을 사용하여 볼륨 간에 데이터를 이동할 수 있습니다.
+ DB 인스턴스를 수정하여 추가 스토리지 볼륨을 생성하면 RDS는 일정 수정 설정에 관계없이 스토리지 볼륨을 즉시 생성합니다. 스토리지 볼륨 추가는 온라인 작업이며 데이터베이스 성능에 영향을 주지 않습니다. [수정 예약 설정 사용](USER_ModifyInstance.ApplyImmediately.md)을(를) 참조하세요.

최적의 성능을 얻으려면 추가 스토리지 볼륨을 사용할 때 다음을 확인하세요.
+ 데이터 이동 계획
  + 사용량이 적은 시간에 대규모 이동 예약
  + 대규모 작업을 더 작은 청크로 나누기
  + 이동 중 시스템 리소스 모니터링
+ 리소스 관리
  + 두 볼륨 모두에 충분한 여유 공간 유지
  + AWR 또는 Statspack을 사용하여 I/O 패턴 모니터링
  + 스토리지가 가득 찬 시나리오 감시
+ 모범 사례
  + 가능한 경우 온라인 데이터 파일 재배치 작업 사용
  + 적절한 인덱스 유지
  + 공간 사용량을 정기적으로 모니터링

복제본과 함께 추가 스토리지 볼륨을 사용하는 경우:
+ 추가 스토리지 볼륨이 있는 DB 인스턴스에 대한 RDS for Oracle 복제본을 생성할 때 RDS는 복제본에 추가 스토리지 볼륨을 자동으로 구성합니다. 그러나 기본 DB 인스턴스의 스토리지 볼륨에서 이루어진 후속 수정 사항은 복제본에 자동으로 적용되지 않습니다.
+ 볼륨에서 데이터 파일 위치를 관리할 때는 기본 인스턴스와 복제본 인스턴스 간의 일관된 동작을 보장하기 위해 세션 수준 변경 대신 파라미터 그룹 설정을 사용하는 것이 좋습니다.

## RDS for Oracle에서 추가 스토리지 볼륨 사용 시 제한 사항
<a name="User_Oracle_AdditionalStorage.limitations"></a>

RDS for Oracle에서 추가 스토리지 볼륨을 사용하는 경우 다음 제한 사항이 적용됩니다.
+ 메모리가 64GiB 미만인 인스턴스 유형에는 대용량 스토리지 볼륨을 지원하기에 충분한 메모리가 없기 때문에 스토리지 볼륨을 추가할 수 없습니다.
+ 추가 스토리지 볼륨의 경우 최소 스토리지 크기는 200GiB입니다. 추가 스토리지 볼륨을 연결하려면 DB 인스턴스의 기본 스토리지 볼륨이 200GiB 이상이어야 합니다. DB 인스턴스의 최대 스토리지 크기는 모든 볼륨에서 총 256TiB입니다.
+ 추가 스토리지 볼륨이 있는 DB 인스턴스에는 다음 기능이 지원되지 않습니다.
  + 교차 리전 자동 백업
  + 스토리지 자동 크기 조정(추가 스토리지 볼륨의 경우)
  + 교차 계정 스냅샷 복사
  + 퍼블릭 스냅샷
+ 기본 스토리지 볼륨(`rdsdbdata`)은 삭제할 수 없지만 비어 있는 다른 추가 스토리지 볼륨은 삭제할 수 있습니다.
+ 온라인 다시 실행 로그, 아카이브된 다시 실행 로그 및 제어 파일은 추가 스토리지 볼륨에 저장할 수 없습니다. 이러한 파일은 기본 스토리지 볼륨(`rdsdbdata`)에만 저장할 수 있습니다.

## RDS for Oracle의 추가 스토리지 볼륨을 사용한 데이터베이스 관리 작업
<a name="User_Oracle_AdditionalStorage.DBManagement"></a>

RDS for Oracle에서 추가 스토리지 볼륨을 사용하는 동안 테이블스페이스 생성 또는 스토리지 볼륨 간 데이터 이동과 같은 데이터베이스 관리 작업을 수행할 수 있습니다. 추가 스토리지 볼륨이 있는 데이터베이스 관리 작업에 대한 자세한 내용은 다음 섹션을 참조하세요.
+ [RDS for Oracle에서 데이터베이스 파일 위치 지정](Appendix.Oracle.CommonDBATasks.TablespacesAndDatafiles.md#Appendix.Oracle.CommonDBATasks.DatabaseFileLocations)
+ [RDS for Oracle에서 테이블스페이스 생성 및 크기 조정](Appendix.Oracle.CommonDBATasks.TablespacesAndDatafiles.md#Appendix.Oracle.CommonDBATasks.CreatingTablespacesAndDatafiles)
+ [RDS for Oracle의 볼륨 간에 데이터 파일 이동](Appendix.Oracle.CommonDBATasks.MovingDataBetweenVolumes.md#Appendix.Oracle.CommonDBATasks.MovingDatafiles)

# RDS for Oracle을 사용하여 스토리지 볼륨 추가, 제거 또는 수정
<a name="User_Oracle_AdditionalStorage.ModifyStorageVolumes"></a>

AWS Management Console 또는 AWS CLI을 사용하여 추가 스토리지 볼륨을 추가, 수정 및 제거할 수 있습니다. 모든 작업은 `additional-storage-volumes` 파라미터와 함께 `modify-db-instance` 명령을 사용합니다.

**중요**  
스토리지 볼륨을 추가하거나 제거하면 백업 보류 중 작업과 블랙아웃 기간이 생성됩니다. 백업 워크플로가 완료되면 블랙아웃 창이 닫힙니다.



## 스토리지 볼륨 추가
<a name="User_Oracle_AdditionalStorage.ModifyStorageVolumes.Add"></a>

기본 스토리지 볼륨 외에 최대 3개의 스토리지 볼륨을 추가할 수 있습니다. RDS for Oracle DB 인스턴스에 새 스토리지 볼륨을 추가하려면 `additional-storage-volumes` 파라미터와 함께 `modify-db-instance` 명령을 사용합니다.

다음 코드 스니펫은 `rdsdbdata3`라는 이름의 5,000GiB 범용 SSD(gp3) 볼륨을 4000 프로비저닝 IOPS와 함께 새로 추가합니다.

```
aws rds modify-db-instance \
  --db-instance-identifier my-oracle-instance \
  --region us-east-1 \
  --additional-storage-volumes '[
        {
            "VolumeName":"rdsdbdata3",
            "StorageType":"gp3",
            "AllocatedStorage":5000
            "IOPS":4000}
    ]' \
  --apply-immediately
```

## 스토리지 볼륨 수정
<a name="User_Oracle_AdditionalStorage.ModifyStorageVolumes.Modifying"></a>

추가 스토리지 볼륨의 스토리지 유형, 할당된 스토리지 크기, IOPS 및 스토리지 처리량 설정을 수정할 수 있습니다. 다음 코드 조각은 `rdsdbdata2` 볼륨에 대한 IOPS 설정을 수정합니다.

```
aws rds modify-db-instance \
  --db-instance-identifier my-oracle-instance \
  --region us-east-1 \
  --additional-storage-volumes '[
        {
            "VolumeName":"rdsdbdata2",
            "IOPS":8000}
    ]' \
  --apply-immediately
```

**참고**  
인스턴스에 추가한 후에는 추가 스토리지 볼륨에 대한 스토리지 할당을 줄일 수 없습니다.

## 스토리지 볼륨 제거
<a name="User_Oracle_AdditionalStorage.ModifyStorageVolumes.Remove"></a>

더 이상 필요하지 않은 경우 RDS for Oracle DB 인스턴스에서 추가 스토리지 볼륨을 제거할 수 있습니다. 볼륨을 제거하기 전에 볼륨에서 모든 데이터베이스 파일을 이동했고 이를 참조하는 데이터베이스 객체가 없는지 확인합니다. 볼륨 상태가 `Not-in-use`인지 확인합니다. 추가 스토리지 볼륨을 제거할 수 있지만 기본 스토리지 볼륨은 제거할 수 없습니다.

**주의**  
추가 스토리지 볼륨을 제거하기 전에 볼륨에 저장된 데이터베이스 파일이 없는지 확인합니다. 활성 데이터베이스 파일이 있는 볼륨을 제거하면 데이터베이스가 손상됩니다.

다음 예제에서는 `rdsdbdata4` 볼륨을 제거합니다.

```
aws rds modify-db-instance \
  --db-instance-identifier my-oracle-instance \
  --region us-east-1 \
  --additional-storage-volumes '[
        {
            "VolumeName":"rdsdbdata2",
            "SetForDelete":true}
    ]' \
  --apply-immediately
```

# RDS for Oracle에서 추가 스토리지 볼륨으로 데이터 백업 및 복원
<a name="User_Oracle_AdditionalStorage.BackupRestore"></a>

자동 백업을 사용하고 추가 스토리지 볼륨이 있는 DB 인스턴스에서 DB 스냅샷을 생성할 수 있습니다. 모든 백업 작업에는 기본 볼륨과 추가 스토리지 볼륨이 모두 포함됩니다. 추가 스토리지 볼륨과 함께 DB 인스턴스에 특정 시점으로 복구를 사용할 수도 있습니다. 데이터베이스를 복원할 때 스토리지 볼륨을 추가할 수 있습니다. 기존 볼륨의 스토리지 설정을 수정할 수도 있습니다. 스냅샷에서 데이터베이스를 복원할 때는 추가 스토리지 볼륨을 삭제할 수 없습니다.

**Topics**
+ [수동 스냅샷 생성](#User_Oracle_AdditionalStorage.BackupRestore.ManualSnapshots)
+ [수동 스냅샷 복원](#User_Oracle_AdditionalStorage.BackupRestore.RestoreSnapshots)
+ [시점 복구](#User_Oracle_AdditionalStorage.BackupRestore.PitR)

## 수동 스냅샷 생성
<a name="User_Oracle_AdditionalStorage.BackupRestore.ManualSnapshots"></a>

다음 예시에서는 추가 스토리지 볼륨을 사용하여 데이터베이스의 수동 스냅샷을 생성합니다.

```
aws rds create-db-snapshot \
--db-instance-identifier my-oracle-asv-instance \
--db-snapshot-identifier my-snapshot
```

## 수동 스냅샷 복원
<a name="User_Oracle_AdditionalStorage.BackupRestore.RestoreSnapshots"></a>

스냅샷에서 복원할 때 새 스토리지 볼륨을 추가하거나 기존 볼륨의 IOPS 또는 처리량 설정을 수정할 수 있습니다. 다음 예시에서는 스냅샷에서 DB 인스턴스를 복원하고 `rdsdbdata2` 볼륨에 대한 IOPS 설정을 수정합니다.

```
aws rds restore-db-instance-from-db-snapshot \
  --db-instance-identifier my-restored-instance \
  --db-snapshot-identifier my-snapshot \
  --region us-east-1 \
  --additional-storage-volumes '[
        {
            "VolumeName":"rdsdbdata2",
            "IOPS":5000
        }
    ]'
```

## 시점 복구
<a name="User_Oracle_AdditionalStorage.BackupRestore.PitR"></a>

특정 시점 복구(PITR) 중에 사용자 지정 구성을 사용하여 새 스토리지 볼륨을 추가할 수 있습니다. 다음 예제에서는 PITR을 수행하고 `rdsdbdata2` 볼륨에 대해 5,000IOPS 및 200MB/s 스토리지 처리량을 갖춘 새로운 5,000GiB 범용 SSD(gp3)를 추가합니다.

```
aws rds restore-db-instance-to-point-in-time \
  --source-db-instance-identifier my-source-instancemy-source-instance \
  --target-db-instance my-pitr-instance\
  --use-latest-restorable-time \
  --region us-east-1 \
  --additional-storage-volumes '[
        {
            "VolumeName":"rdsdbdata2",
            "StorageType":"gp3",
            "AllocatedStorage":5000,
            "IOPS":5000,
            "StorageThroughput":200
        }
    ]'
```

# RDS for Oracle의 추가 스토리지 볼륨 사용 사례
<a name="User_Oracle_AdditionalStorage.UseCases"></a>

추가 스토리지 볼륨은 다양한 데이터베이스 관리 시나리오를 지원합니다. 다음 섹션에서는 일반적인 사용 사례 및 구현 접근 방식을 설명합니다.

**Topics**
+ [스토리지 용량을 64TiB 이상으로 확장](#User_Oracle_AdditionalStorage.UseCases.Extendingstoragecapacity)
+ [별도의 볼륨에서 자주 액세스하거나 자주 액세스하지 않는 데이터의 스토리지 계층화](#User_Oracle_AdditionalStorage.UseCases.Storagetiering)
+ [데이터 로드 및 언로드용 임시 스토리지](#User_Oracle_AdditionalStorage.UseCases.Temporarystorage)
+ [추가 스토리지 볼륨과 함께 Oracle 전송 가능한 테이블스페이스 사용](#User_Oracle_AdditionalStorage.UseCases.TransportableTablespaces)

## 스토리지 용량을 64TiB 이상으로 확장
<a name="User_Oracle_AdditionalStorage.UseCases.Extendingstoragecapacity"></a>

기본 스토리지 볼륨이 64TiB 한도에 도달했지만 데이터베이스에 더 많은 스토리지 공간이 필요한 경우 추가 스토리지 볼륨을 사용할 수 있습니다. `modify-db-instance` 명령을 사용하여 각각 최대 64TiB의 추가 스토리지 볼륨을 DB 인스턴스에 연결할 수 있습니다. 추가 스토리지 볼륨을 연결한 후 표준 Oracle SQL을 사용하여 추가 스토리지 볼륨에 테이블스페이스를 생성하고 테이블, 인덱스 및 파티션과 같은 객체를 이러한 테이블스페이스로 이동할 수 있습니다. 자세한 내용은 [RDS for Oracle의 추가 스토리지 볼륨을 사용한 데이터베이스 관리 작업](User_Oracle_AdditionalStorage.md#User_Oracle_AdditionalStorage.DBManagement) 섹션을 참조하세요.

## 별도의 볼륨에서 자주 액세스하거나 자주 액세스하지 않는 데이터의 스토리지 계층화
<a name="User_Oracle_AdditionalStorage.UseCases.Storagetiering"></a>

볼륨 간에 다양한 스토리지 유형을 구성하여 추가 스토리지 볼륨을 사용하여 비용과 성능을 최적화할 수 있습니다. 예를 들어, 비용 효율적인 범용(gp3) 스토리지 볼륨에 기록 데이터를 저장하면서 자주 액세스하는 데이터에 고성능 프로비저닝된 IOPS SSD 스토리지(io2) 볼륨을 사용할 수 있습니다. 표준 Oracle 명령을 사용하여 특정 데이터베이스 객체(테이블, 인덱스 및 파티션)를 이러한 테이블스페이스로 이동할 수 있습니다. 자세한 내용은 [RDS for Oracle의 추가 스토리지 볼륨을 사용한 데이터베이스 관리 작업](User_Oracle_AdditionalStorage.md#User_Oracle_AdditionalStorage.DBManagement) 섹션을 참조하세요.

## 데이터 로드 및 언로드용 임시 스토리지
<a name="User_Oracle_AdditionalStorage.UseCases.Temporarystorage"></a>

다음 단계에 따라 추가 스토리지 볼륨을 대용량 데이터 로드 또는 내보내기를 위한 임시 스토리지로 사용할 수 있습니다.
+ 다음 명령을 사용하여 추가 스토리지 볼륨에 디렉터리를 생성합니다.

  ```
  BEGIN
  rdsadmin.rdsadmin_util.create_directory(
              p_directory_name => 'DATA_PUMP_DIR2',
              p_database_volume_name => 'rdsdbdata2');
  END;
  /
  ```
+ 디렉터리를 생성한 후 [Oracle Data Pump를 사용한 가져오기](Oracle.Procedural.Importing.DataPump.md)에 설명된 단계에 따라 데이터를 내보내고 새 디렉터리로 가져옵니다.
+ 작업을 완료한 후 파일을 제거하고 선택적으로 볼륨을 삭제하여 스토리지 비용을 절감합니다. 볼륨이 비어 있는 경우에만 추가 스토리지 볼륨을 제거할 수 있습니다.

## 추가 스토리지 볼륨과 함께 Oracle 전송 가능한 테이블스페이스 사용
<a name="User_Oracle_AdditionalStorage.UseCases.TransportableTablespaces"></a>

다음 단계에 따라 Oracle 전송 가능한 테이블스페이스를 사용하여 추가 스토리지 볼륨으로 데이터 파일을 추가 스토리지 볼륨으로 이동할 수 있습니다.
+ 추가 스토리지 볼륨을 사용하여 전송 가능한 테이블스페이스를 대상 데이터베이스로 가져오기 전에 `db_create_file_dest` 파라미터를 세션 수준에서 설정합니다.

  ```
  ALTER SESSION SET db_create_file_dest = '/rdsdbdata2/db';
  
  VAR x CLOB;
  
  BEGIN
  :x := rdsadmin.rdsadmin_transport_util.import_xtts_tablespaces(
  p_tablespace_list => 'TBTEST1',
  p_directory_name => 'XTTS_DIR_DATA2',
  p_platform_id => 13);
  END;
  /
  
  PRINT :x;
  ```
+ 전송 가능한 테이블스페이스 가져오기 상태를 확인합니다.

  ```
  ALTER SESSION SET nls_date_format = 'DD.MM.YYYY HH24:MI:SS';
  
  COL xtts_operation_start_utc FORMAT A30
  COL xtts_operation_end_utc FORMAT A30
  COL xtts_operation_state FORMAT A30
  COL xtts_operation_type FORMAT A30
  
  SELECT xtts_operation_start_utc, xtts_operation_type, xtts_operation_state
  FROM rdsadmin.rds_xtts_operation_info;
  ```
+ 전송 가능한 테이블스페이스 가져오기가 완료되면 전송 가능한 테이블스페이스 메타데이터를 가져옵니다.

  ```
  BEGIN
  rdsadmin.rdsadmin_transport_util.import_xtts_metadata(
  p_datapump_metadata_file => 'xttdump.dmp',
  p_directory_name => 'XTTS_DIR_DATA2');
  END;
  /
  ```

# RDS for Oracle 고급 기능 구성
<a name="CHAP_Oracle.advanced-features"></a>

RDS for Oracle은 HugePages, 인스턴스 스토어 및 확장 데이터 유형을 비롯한 다양한 고급 기능을 지원합니다.

**Topics**
+ [RDS for Oracle 인스턴스 스토어에 임시 데이터 저장](CHAP_Oracle.advanced-features.instance-store.md)
+ [RDS for Oracle 인스턴스에 HugePages 활성화](Oracle.Concepts.HugePages.md)
+ [RDS for Oracle에서 확장 데이터 유형 활성화](Oracle.Concepts.ExtendedDataTypes.md)

# RDS for Oracle 인스턴스 스토어에 임시 데이터 저장
<a name="CHAP_Oracle.advanced-features.instance-store"></a>

Oracle DB 클래스에 지원되는 RDS에서 임시 테이블스페이스 및 데이터베이스 스마트 플래시 캐시(플래시 캐시)에 인스턴스 스토어를 사용하세요.

**Topics**
+ [RDS for Oracle 인스턴스 스토어 개요](#CHAP_Oracle.advanced-features.instance-store.overview)
+ [RDS for Oracle 인스턴스 스토어 활성화](#CHAP_Oracle.advanced-features.instance-store.Enable)
+ [RDS for Oracle 인스턴스 스토어 구성](CHAP_Oracle.advanced-features.instance-store.configuring.md)
+ [Oracle 읽기 전용 복제본에서 인스턴스 스토어로 작업하기](CHAP_Oracle.advanced-features.instance-store.replicas.md)
+ [인스턴스 스토어와 Amazon EBS에 임시 테이블스페이스 그룹 구성](CHAP_Oracle.advanced-features.instance-store.temp-ebs.md)
+ [RDS for Oracle 인스턴스 스토어 제거](#CHAP_Oracle.advanced-features.instance-store.Disable)

## RDS for Oracle 인스턴스 스토어 개요
<a name="CHAP_Oracle.advanced-features.instance-store.overview"></a>

**인스턴스 스토어는 RDS for Oracle DB 인스턴스에 블록 수준의 임시 스토리지를 제공합니다. 자주 변경되는 정보를 임시로 저장하는 데 인스턴스 스토어를 사용할 수 있습니다.

인스턴스 스토어는 호스트 컴퓨터에 물리적으로 연결된 NVMe 디바이스를 기반으로 합니다. 이 스토리지는 짧은 지연 시간, 임의 I/O 성능, 순차 읽기 처리량에 최적화되어 있습니다.

인스턴스 스토어의 크기는 DB 인스턴스 유형에 따라 다릅니다. 인스턴스 스토어 유형에 대한 자세한 내용은 **Linux 인스턴스용 Amazon Elastic Compute Cloud 사용 설명서의 [Amazon EC2 인스턴스 스토어](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/InstanceStorage.html) 섹션을 참조하세요.

**Topics**
+ [RDS for Oracle 인스턴스 스토어의 데이터 유형](#CHAP_Oracle.advanced-features.instance-store.overview.uses)
+ [RDS for Oracle 인스턴스 스토어의 이점](#CHAP_Oracle.advanced-features.instance-store.overview.benefits)
+ [RDS for Oracle 인스턴스 스토어가 지원되는 인스턴스 클래스](#CHAP_Oracle.advanced-features.instance-store.overview.instance-classes)
+ [RDS for Oracle 인스턴스 스토어가 지원되는 엔진 버전](#CHAP_Oracle.advanced-features.instance-store.overview.db-versions)
+ [RDS for Oracle 인스턴스 스토어가 지원되는 AWS 리전](#CHAP_Oracle.advanced-features.instance-store.overview.regions)
+ [RDS for Oracle 인스턴스 스토어의 비용](#CHAP_Oracle.advanced-features.instance-store.overview.cost)

### RDS for Oracle 인스턴스 스토어의 데이터 유형
<a name="CHAP_Oracle.advanced-features.instance-store.overview.uses"></a>

다음 유형의 RDS for Oracle 임시 데이터를 인스턴스 스토어에 배치할 수 있습니다.

임시 테이블스페이스  
Oracle Database는 임시 테이블스페이스를 사용하여 메모리에 들어가지 않는 중간 쿼리 결과를 저장합니다. 쿼리가 클수록 일시적으로 캐시해야 하지만 유지할 필요는 없는 많은 양의 중간 데이터가 생성될 수 있습니다. 특히 임시 테이블스페이스는 정렬, 해시 집계 및 조인에 유용합니다. RDS for Oracle DB 인스턴스가 Enterprise Edition 또는 Standard Edition 2를 사용하는 경우 인스턴스 스토어에 임시 테이블스페이스를 배치할 수 있습니다.

플래시 캐시  
플래시 캐시는 통상적인 경로에서의 단일 블록 랜덤 읽기 성능을 향상시킵니다. 가장 좋은 방법은 활성 데이터 세트의 대부분을 수용할 수 있도록 캐시의 크기를 조정하는 것입니다. RDS for Oracle DB 인스턴스가 Enterprise Edition을 사용하는 경우 인스턴스 스토어에 플래시 캐시를 배치할 수 있습니다.

기본적으로 인스턴스 스토어는 임시 테이블스페이스용으로 구성되며 플래시 캐시에 대해서는 구성되지 않습니다. Oracle 데이터 파일과 데이터베이스 로그 파일을 인스턴스 스토어에 배치할 수 없습니다.

### RDS for Oracle 인스턴스 스토어의 이점
<a name="CHAP_Oracle.advanced-features.instance-store.overview.benefits"></a>

손실되어도 되는 임시 파일 및 캐시를 저장하기 위해 인스턴스 스토어를 사용하는 것을 고려해 볼 수 있습니다. DB 성능을 개선하고 싶거나 워크로드 증가로 인해 Amazon EBS 스토리지의 성능 문제가 발생하는 경우 인스턴스 스토어를 지원하는 인스턴스 클래스로 확장하는 것을 고려해 보세요.

임시 테이블스페이스와 플래시 캐시를 인스턴스 스토어에 배치하면 다음과 같은 이점을 얻을 수 있습니다.
+ 읽기 지연 시간이 단축됨
+ 처리량이 향상됨
+ Amazon EBS 볼륨의 로드가 감소함
+ Amazon EBS 로드 감소로 스토리지 및 스냅샷 비용이 절감됨
+ 높은 IOPS를 프로비저닝할 필요가 줄어들어 전체 비용이 절감될 수 있음

 임시 테이블스페이스를 인스턴스 스토어에 배치하면 임시 공간을 사용하는 쿼리의 성능을 즉시 높일 수 있습니다. 인스턴스 스토어에 플래시 캐시를 배치하면 캐시된 블록 읽기는 일반적으로 Amazon EBS 읽기보다 지연 시간이 훨씬 짧습니다. 플래시 캐시는 성능 이점을 제공하기 전에 '워밍업'되어야 합니다. 데이터베이스는 블록이 데이터베이스 버퍼 캐시에서 노후화됨에 따라 플래시 캐시에 블록을 쓰기 때문에 캐시가 저절로 워밍업됩니다.

**참고**  
캐시 관리로 인해 플래시 캐시가 성능 오버헤드를 유발하는 경우도 있습니다. 프로덕션 환경에서 플래시 캐시를 켜기 전에 테스트 환경에서 워크로드를 분석하고 캐시를 테스트하는 것이 좋습니다.

### RDS for Oracle 인스턴스 스토어가 지원되는 인스턴스 클래스
<a name="CHAP_Oracle.advanced-features.instance-store.overview.instance-classes"></a>

Amazon RDS는 다음 DB 인스턴스 클래스에 인스턴스 스토어를 지원합니다.
+ db.m5d
+ db.m6id
+ db.r5d
+ db.r6id
+ db.x2idn
+ db.x2iedn

RDS for Oracle은 BYOL 라이선스 모델에 대한 위의 DB 인스턴스 클래스만 지원합니다. 자세한 내용은 [지원되는 RDS for Oracle DB 인스턴스 클래스](Oracle.Concepts.InstanceClasses.md#Oracle.Concepts.InstanceClasses.Supported) 및 [EE 및 SE2용 기존 보유 라이선스 사용(BYOL)](Oracle.Concepts.Licensing.md#Oracle.Concepts.Licensing.BYOL)(을)를 참조하세요.

지원되는 DB 인스턴스 유형에 대한 총 인스턴스 스토리지를 확인하려면 AWS CLI에서 다음 명령을 실행합니다.

**Example**  

```
aws ec2 describe-instance-types \
  --filters "Name=instance-type,Values=*5d.*large*,*6id.*large*" \
  --query "InstanceTypes[?contains(InstanceType,'m5d')||contains(InstanceType,'r5d')||contains(InstanceType,'m6id')||contains(InstanceType,'r6id')][InstanceType, InstanceStorageInfo.TotalSizeInGB]" \
  --output table
```

위 명령은 인스턴스 스토어의 원시 디바이스 크기를 반환합니다. RDS for Oracle은 이 공간의 일부를 구성에 사용합니다. 임시 테이블스페이스 또는 플래시 캐시에 사용할 수 있는 인스턴스 스토어의 공간이 약간 더 작습니다.

### RDS for Oracle 인스턴스 스토어가 지원되는 엔진 버전
<a name="CHAP_Oracle.advanced-features.instance-store.overview.db-versions"></a>

다음 RDS for Oracle 엔진 버전에 인스턴스 스토어가 지원됩니다.
+ 21.0.0.0.ru-2022-01.rur-2022-01.r1 이상의 Oracle Database 21c 버전
+ 19.0.0.0.ru-2021-10.rur-2021-10.r1 이상의 Oracle Database 19c 버전

### RDS for Oracle 인스턴스 스토어가 지원되는 AWS 리전
<a name="CHAP_Oracle.advanced-features.instance-store.overview.regions"></a>

인스턴스 스토어는 이러한 인스턴스 유형 중 하나 이상이 지원되는 모든 AWS 리전에서 사용 가능합니다. db.m5d 및 db.r5d 인스턴스 클래스에 대한 자세한 내용은 [DB 인스턴스 클래스](Concepts.DBInstanceClass.md) 섹션을 참조하세요. Amazon RDS for Oracle에서 지원하는 인스턴스 클래스에 대한 자세한 내용은 [RDS for Oracle DB 인스턴스 클래스](Oracle.Concepts.InstanceClasses.md) 섹션을 참조하세요.

### RDS for Oracle 인스턴스 스토어의 비용
<a name="CHAP_Oracle.advanced-features.instance-store.overview.cost"></a>

인스턴스 스토어의 비용은 인스턴스 스토어가 활성화된 인스턴스의 비용에 포함됩니다. RDS for Oracle DB 인스턴스에서 인스턴스 스토어를 활성화해도 추가 비용이 발생하지 않습니다. 인스턴스 스토어가 활성화된 인스턴스에 대한 자세한 내용은 [RDS for Oracle 인스턴스 스토어가 지원되는 인스턴스 클래스](#CHAP_Oracle.advanced-features.instance-store.overview.instance-classes) 섹션을 참조하세요.

## RDS for Oracle 인스턴스 스토어 활성화
<a name="CHAP_Oracle.advanced-features.instance-store.Enable"></a>

RDS for Oracle 임시 데이터에 인스턴스 스토어를 활성화하려면 다음 중 하나를 수행합니다.
+ 지원되는 인스턴스 클래스를 사용하여 RDS for Oracle DB 인스턴스를 생성합니다. 자세한 내용은 [Amazon RDS DB 인스턴스 생성](USER_CreateDBInstance.md) 섹션을 참조하세요.
+ 지원되는 인스턴스 클래스를 사용하도록 RDS for Oracle DB 인스턴스를 수정합니다. 자세한 내용은 [Amazon RDS DB 인스턴스 수정](Overview.DBInstance.Modifying.md) 섹션을 참조하세요.

# RDS for Oracle 인스턴스 스토어 구성
<a name="CHAP_Oracle.advanced-features.instance-store.configuring"></a>

기본적으로 인스턴스 스토어 공간의 100%가 임시 테이블스페이스에 할당됩니다. 플래시 캐시 및 임시 테이블스페이스에 공간을 할당하도록 인스턴스 스토어를 구성하려면 인스턴스의 파라미터 그룹에서 다음 파라미터를 설정합니다.

**db\$1flash\$1cache\$1size=\$1DBInstanceStore\$1\$10,2,4,6,8,10\$1/10\$1**  
이 파라미터는 플래시 캐시에 할당된 스토리지 공간의 양을 지정합니다. 이 파라미터는 Oracle Database Enterprise Edition에서만 유효합니다. 기본값은 `{DBInstanceStore*0/10}`입니다. `db_flash_cache_size`에 0이 아닌 값을 설정한 경우, 사용자가 인스턴스를 재시작한 후 RDS for Oracle 인스턴스에서 플래시 캐시를 활성화합니다.

**rds.instance\$1store\$1temp\$1size=\$1DBInstanceStore\$1\$10,2,4,6,8,10\$1/10\$1**  
이 파라미터는 임시 테이블스페이스에 할당된 스토리지 공간의 양을 지정합니다. 기본값은 `{DBInstanceStore*10/10}`입니다. 이 파라미터는 Oracle Database Enterprise Edition의 경우 수정 가능하며 Standard Edition 2의 경우 읽기 전용입니다. `rds.instance_store_temp_size`에 0이 아닌 값을 설정한 경우 Amazon RDS가 임시 테이블스페이스를 위해 인스턴스 스토어에 공간을 할당합니다.  
인스턴스 스토어를 사용하지 않는 DB 인스턴스에 대해 `db_flash_cache_size` 및 `rds.instance_store_temp_size` 파라미터를 설정할 수 있습니다. 이 경우 두 설정 모두 `0`으로 평가되어 기능이 비활성화니다. 이 경우 서로 다른 크기의 인스턴스 및 인스턴스 스토어를 사용하지 않는 인스턴스에 동일한 파라미터 그룹을 사용할 수 있습니다. 이러한 파라미터를 수정할 경우 관련 인스턴스를 재부팅하여 변경 사항을 적용해야 합니다.  
임시 테이블스페이스에 공간을 할당하는 경우 Amazon RDS는 임시 테이블스페이스를 자동으로 생성하지 않습니다. 인스턴스 스토어에 임시 테이블스페이스를 생성하는 방법을 알아보려면 [인스턴스 스토어에 임시 테이블스페이스 생성](Appendix.Oracle.CommonDBATasks.TablespacesAndDatafiles.md#Appendix.Oracle.CommonDBATasks.creating-tts-instance-store) 섹션을 참조하세요.

위 파라미터의 합산 값은 10/10 또는 100%를 초과할 수 없습니다. 다음 테이블에는 올바른 파라미터 설정과 잘못된 파라미터 설정이 나와 있습니다.


| db\$1flash\$1cache\$1size 설정 | rds.instance\$1store\$1temp\$1size 설정 | 설명 | 
| --- | --- | --- | 
|  db\$1flash\$1cache\$1size=\$1DBInstanceStore\$10/10\$1  |  rds.instance\$1store\$1temp\$1size=\$1DBInstanceStore\$110/10\$1  |  이는 Oracle Database의 모든 버전에 올바른 구성입니다. Amazon RDS가 인스턴스 스토어 공간의 100%를 임시 테이블스페이스에 할당합니다. 이 값이 기본값입니다.  | 
|  db\$1flash\$1cache\$1size=\$1DBInstanceStore\$110/10\$1  |  rds.instance\$1store\$1temp\$1size=\$1DBInstanceStore\$10/10\$1  |  Oracle Database Enterprise Edition에서만 올바른 구성입니다. Amazon RDS가 인스턴스 스토어 공간의 100%를 플래시 캐시에 할당합니다.  | 
|  db\$1flash\$1cache\$1size=\$1DBInstanceStore\$12/10\$1  |  rds.instance\$1store\$1temp\$1size=\$1DBInstanceStore\$18/10\$1  |  Oracle Database Enterprise Edition에서만 올바른 구성입니다. Amazon RDS가 인스턴스 스토어 공간의 20%를 플래시 캐시에 할당하고, 인스턴스 스토어 공간의 80%를 임시 테이블스페이스에 할당합니다.  | 
|  db\$1flash\$1cache\$1size=\$1DBInstanceStore\$16/10\$1  |  rds.instance\$1store\$1temp\$1size=\$1DBInstanceStore\$14/10\$1  |  Oracle Database Enterprise Edition에서만 올바른 구성입니다. Amazon RDS가 인스턴스 스토어 공간의 60%를 플래시 캐시에 할당하고, 인스턴스 스토어 공간의 40%를 임시 테이블스페이스에 할당합니다.  | 
|  db\$1flash\$1cache\$1size=\$1DBInstanceStore\$12/10\$1  |  rds.instance\$1store\$1temp\$1size=\$1DBInstanceStore\$14/10\$1  | Oracle Database Enterprise Edition에서만 올바른 구성입니다. Amazon RDS가 인스턴스 스토어 공간의 20%를 플래시 캐시에 할당하고, 인스턴스 스토어 공간의 40%를 임시 테이블스페이스에 할당합니다. | 
|  db\$1flash\$1cache\$1size=\$1DBInstanceStore\$18/10\$1  |  rds.instance\$1store\$1temp\$1size=\$1DBInstanceStore\$18/10\$1  |  인스턴스 스토어 공간의 합산 비율이 100%를 초과하기 때문에 잘못된 구성입니다. 이러한 경우 Amazon RDS가 시도에 실패합니다.  | 

## DB 인스턴스 유형 변경 시 고려 사항
<a name="CHAP_Oracle.advanced-features.instance-store.configuring.modifying"></a>

DB 인스턴스 유형을 변경하면 인스턴스 스토어의 플래시 캐시 또는 임시 테이블스페이스 구성에 영향을 미칠 수 있습니다. 다음과 같은 수정 사항과 그 효과를 고려하세요.

**인스턴스 스토어를 지원하는 DB 인스턴스를 스케일 업하거나 스케일 다운합니다.**  
다음 값이 인스턴스 스토어의 새로운 크기에 비례하여 증가하거나 감소합니다.  
+ 플래시 캐시의 새로운 크기
+ 인스턴스 스토어에 있는 임시 테이블스페이스에 할당된 공간
예를 들어 db.m5d.4xlarge 인스턴스의 `db_flash_cache_size={DBInstanceStore*6/10}` 설정은 약 340GB의 플래시 캐시 공간을 제공합니다. 인스턴스 유형을 db.m5d.8xlarge로 스케일 업하면 플래시 캐시 공간이 약 680GB로 늘어납니다.

**인스턴스 스토어를 사용하지 않는 DB 인스턴스를 인스턴스 스토어를 사용하는 인스턴스로 수정합니다.**  
`db_flash_cache_size`를 `0`보다 큰 값으로 설정하면 플래시 캐시가 구성됩니다. `rds.instance_store_temp_size`를 `0`보다 큰 값으로 설정하면 임시 테이블스페이스에서 사용할 수 있도록 인스턴스 스토어 공간이 할당됩니다. RDS for Oracle은 인스턴스 스토어로 임시 파일을 자동으로 이동하지 않습니다. 할당된 공간 사용에 대한 자세한 내용은 [인스턴스 스토어에 임시 테이블스페이스 생성](Appendix.Oracle.CommonDBATasks.TablespacesAndDatafiles.md#Appendix.Oracle.CommonDBATasks.creating-tts-instance-store) 또는 [읽기 전용 복제본의 인스턴스 스토어에 임시 파일 추가](Appendix.Oracle.CommonDBATasks.using-tempfiles.md#Appendix.Oracle.CommonDBATasks.adding-tempfile-replica) 섹션을 참조하세요.

**인스턴스 스토어를 사용하는 DB 인스턴스를 인스턴스 스토어를 사용하지 않는 인스턴스로 수정합니다.**  
이 경우 RDS for Oracle은 플래시 캐시를 제거합니다. RDS는 현재 Amazon EBS 볼륨의 인스턴스 스토어에 있는 임시 파일을 다시 생성합니다. 새로운 임시 파일의 최대 크기는 `rds.instance_store_temp_size` 파라미터 이전 크기입니다.

# Oracle 읽기 전용 복제본에서 인스턴스 스토어로 작업하기
<a name="CHAP_Oracle.advanced-features.instance-store.replicas"></a>

읽기 전용 복제본은 인스턴스 스토어의 플래시 캐시와 임시 테이블스페이스를 지원합니다. 플래시 캐시는 기본 DB 인스턴스와 동일한 방식으로 작동하지만, 임시 테이블스페이스의 경우 다음과 같은 차이점이 있습니다.
+ 읽기 전용 복제본에 임시 테이블스페이스를 생성할 수 없습니다. 기본 인스턴스에서 새 임시 테이블스페이스를 생성하는 경우 RDS for Oracle은 임시 파일 없이 테이블스페이스 정보를 복제합니다. 새 임시 파일을 추가하려면 다음 방법 중 하나를 사용합니다.
  + Amazon RDS 프로시저 `rdsadmin.rdsadmin_util.add_inst_store_tempfile`을 사용합니다. RDS for Oracle은 읽기 전용 복제본의 인스턴스 스토어에 임시 파일을 생성하여 지정된 임시 테이블스페이스에 임시 파일을 추가합니다.
  + `ALTER TABLESPACE … ADD TEMPFILE` 명령을 실행합니다. RDS for Oracle은 임시 파일을 Amazon EBS 스토리지에 저장합니다.
**참고**  
임시 파일 크기 및 스토리지 유형은 기본 DB 인스턴스와 읽기 전용 복제본에서 다를 수 있습니다.
+ 기본 임시 테이블스페이스 설정은 기본 DB 인스턴스에서만 관리할 수 있습니다. RDS for Oracle은 이 설정을 모든 읽기 전용 복제본에 복제합니다.
+ 임시 테이블스페이스 그룹은 기본 DB 인스턴스에서만 구성할 수 있습니다. RDS for Oracle은 이 설정을 모든 읽기 전용 복제본에 복제합니다.

# 인스턴스 스토어와 Amazon EBS에 임시 테이블스페이스 그룹 구성
<a name="CHAP_Oracle.advanced-features.instance-store.temp-ebs"></a>

인스턴스 스토어와 Amazon EBS 모두에 임시 테이블스페이스를 포함하도록 임시 테이블스페이스 그룹을 구성할 수 있습니다. 이 방법은 `rds.instance_store_temp_size`의 최대 설정에서 허용하는 것보다 더 큰 임시 저장소가 필요한 경우에 유용합니다.

인스턴스 스토어와 Amazon EBS 모두에 임시 테이블스페이스 그룹을 구성하면 두 테이블스페이스의 성능 특성이 크게 달라집니다. Oracle Database는 내부 알고리즘을 기반으로 쿼리를 제공할 테이블스페이스를 선택합니다. 따라서 비슷한 쿼리의 성능이 달라질 수 있습니다.

일반적으로 다음과 같이 인스턴스 스토어에 임시 테이블스페이스를 생성합니다.

1. 인스턴스 스토어에 임시 테이블스페이스를 생성합니다.

1. 새 테이블스페이스를 데이터베이스 기본 임시 테이블스페이스로 설정합니다.

인스턴스 스토어의 테이블스페이스 크기가 충분하지 않은 경우 다음과 같이 추가 임시 스토리지를 생성할 수 있습니다.

1. 인스턴스 스토어의 임시 테이블스페이스를 임시 테이블스페이스 그룹에 할당합니다.

1. Amazon EBS에 임시 테이블스페이스가 없는 경우 새 임시 테이블스페이스를 생성합니다.

1. Amazon EBS의 임시 테이블스페이스를 인스턴스 스토어 테이블스페이스가 포함된 동일한 테이블스페이스 그룹에 할당합니다.

1. 새 테이블스페이스를 데이터베이스 기본 임시 테이블스페이스로 설정합니다.

다음 예에서는 인스턴스 스토어의 임시 테이블스페이스 크기가 애플리케이션 요구 사항을 충족하지 않는다고 가정합니다. 이 예에서는 인스턴스 스토어에 임시 테이블스페이스 `temp_in_inst_store`를 생성하여 테이블스페이스 그룹 `temp_group`에 할당하고 이 그룹에 이름이 `temp_in_ebs`인 기존 Amazon EBS 테이블스페이스를 추가하고 이 그룹을 기본 임시 테이블스페이스로 설정합니다.

```
SQL> EXEC rdsadmin.rdsadmin_util.create_inst_store_tmp_tblspace('temp_in_inst_store');

PL/SQL procedure successfully completed.

SQL> ALTER TABLESPACE temp_in_inst_store TABLESPACE GROUP temp_group;

Tablespace altered.

SQL> ALTER TABLESPACE temp_in_ebs TABLESPACE GROUP temp_group;

Tablespace altered.

SQL> EXEC rdsadmin.rdsadmin_util.alter_default_temp_tablespace('temp_group');

PL/SQL procedure successfully completed.

SQL> SELECT * FROM DBA_TABLESPACE_GROUPS;

GROUP_NAME                     TABLESPACE_NAME
------------------------------ ------------------------------
TEMP_GROUP                     TEMP_IN_EBS
TEMP_GROUP                     TEMP_IN_INST_STORE

SQL> SELECT PROPERTY_VALUE FROM DATABASE_PROPERTIES WHERE PROPERTY_NAME='DEFAULT_TEMP_TABLESPACE';

PROPERTY_VALUE
--------------
TEMP_GROUP
```

## RDS for Oracle 인스턴스 스토어 제거
<a name="CHAP_Oracle.advanced-features.instance-store.Disable"></a>

인스턴스 스토어를 제거하려면 db.m5 또는 db.r5 등 인스턴스 스토어를 지원하지 않는 인스턴스 유형을 사용하도록 RDS for Oracle DB 인스턴스를 수정합니다.

# RDS for Oracle 인스턴스에 HugePages 활성화
<a name="Oracle.Concepts.HugePages"></a>

Amazon RDS for Oracle은 Linux 커널 HugePages를 지원해 데이터베이스 확장성을 높입니다. HugePages를 사용하면 페이지 표가 작아지고 메모리 관리에 사용되는 CPU 시간이 줄어 대용량 데이터베이스 인스턴스의 성능이 높아집니다. 자세한 내용은 Oracle 문서의 [Overview of HugePages](https://docs.oracle.com/database/121/UNXAR/appi_vlm.htm#UNXAR400) 단원을 참조하세요.

HugePages는 지원되는 모든 버전의 RDS for Oracle에서 사용할 수 있습니다.

 `use_large_pages` 파라미터는 DB 인스턴스에서 HugePages의 활성화 여부를 제어합니다. 이 파라미터는 `ONLY`, `FALSE` 또는 `{DBInstanceClassHugePagesDefault}`로 설정할 수 있습니다. Oracle용 기본 DB 파라미터 그룹에서는 `use_large_pages` 파라미터가 `{DBInstanceClassHugePagesDefault}`로 설정됩니다.

DB 인스턴스에서 HugePages의 자동 활성화 여부를 제어하기 위해 파라미터 그룹에서 `DBInstanceClassHugePagesDefault` 수식 변수를 사용할 수 있습니다. 값은 다음과 같이 결정합니다.
+ 다음 표에서 언급한 DB 인스턴스 클래스의 경우 `DBInstanceClassHugePagesDefault`는 항상 `FALSE`가 기본값이며 `use_large_pages`는 `FALSE`로 평가됩니다. 이때는 DB 인스턴스 클래스의 메모리 크기가 14GiB 이상이라면 이러한 DB 인스턴스 클래스의 HugePages를 수동으로 활성화할 수 있습니다.
+ 다음 표에서 언급하지 않은 DB 인스턴스 클래스의 경우 DB 인스턴스 클래스의 메모리가 14GiB 미만이면 `DBInstanceClassHugePagesDefault`는 항상 `FALSE`로 평가됩니다. 또한 `use_large_pages`는 `FALSE`로 평가됩니다.
+ 다음 표에서 언급하지 않은 DB 인스턴스 클래스의 경우 인스턴스 클래스의 메모리가 14GiB 이상에서 100GiB 미만이면 `DBInstanceClassHugePagesDefault`의 기본값이 `TRUE`로 평가됩니다. 또한 `use_large_pages`는 `ONLY`로 평가됩니다. `use_large_pages`를 `FALSE`로 설정하면 HugePages를 수동으로 비활성화할 수 있습니다.
+ 다음 표에서 언급하지 않은 DB 인스턴스 클래스의 경우 인스턴스 클래스의 메모리가 100GiB 이상이면 `DBInstanceClassHugePagesDefault`는 항상 `TRUE`로 평가됩니다. 또한 `use_large_pages`는 `ONLY`로 평가되며 HugePages는 비활성화할 수 없습니다.

다음 DB 인스턴스 클래스의 경우, HugePages가 기본적으로 활성화되지 않습니다.


****  

| DB 인스턴스 클래스 패밀리 | HugePages가 기본적으로 활성화되지 않는 DB 인스턴스 클래스 | 
| --- | --- | 
|  db.m5  |  db.m5.large  | 
|  db.m4  |  db.m4.large, db.m4.xlarge, db.m4.2xlarge, db.m4.4xlarge, db.m4.10xlarge  | 
|  db.t3  |  db.t3.micro, db.t3.small, db.t3.medium, db.t3.large  | 

DB 인스턴스 클래스에 대한 자세한 내용은 [ DB 인스턴스 클래스의 하드웨어 사양](Concepts.DBInstanceClass.Summary.md) 단원을 참조하세요.

신규 또는 기존 DB 인스턴스에 HugePages를 수동으로 활성화하려면 `use_large_pages` 파라미터를 `ONLY`로 설정합니다. Oracle Automatic Memory Management(AMM)에 HugePages를 사용할 수 없습니다. 파라미터 `use_large_pages`를 `ONLY`로 설정하면 `memory_target` 및 `memory_max_target`도 `0`으로 설정해야 합니다. DB 인스턴스를 위한 DB 파라미터를 설정하는 자세한 방법은 [Amazon RDS의 파라미터 그룹](USER_WorkingWithParamGroups.md) 단원을 참조하세요.

`sga_target`, `sga_max_size`, `pga_aggregate_target` 파라미터도 설정할 수 있습니다. 시스템 글로벌 영역(SGA)과 프로그램 글로벌 영역(PGA) 메모리 파라미터를 설정할 때 값을 모두 더합니다. 사용 가능한 인스턴스 메모리(`DBInstanceClassMemory`)에서 이 합산 값을 빼면 HugePages 할당 후 가용 메모리를 알 수 있습니다. 최소 2GiB 또는 총 가용 인스턴스 메모리의 10퍼센트 중에서 적은 용량을 비워두어야 합니다.

파라미터를 구성한 후 DB 인스턴스를 재부팅해야 변경 사항이 적용됩니다. 자세한 내용은 [ DB 인스턴스 재부팅](USER_RebootInstance.md) 섹션을 참조하세요.

**참고**  
장애 조치 없이 인스턴스를 재부팅할 때까지 Oracle DB 인스턴스는 SGA 관련 초기화 파라미터에 대한 변경 사항을 연기합니다. Amazon RDS 콘솔에서 **재부팅**을 선택하지만 **장애 조치로 재부팅**을 *선택하지 않습니다*. AWS CLI에서 `reboot-db-instance` 파라미터로 `--no-force-failover` 명령을 호출합니다. DB 인스턴스는 장애 조치 중이나 인스턴스를 다시 시작하는 기타 유지 관리 작업 중에는 SGA 관련 파라미터를 처리하지 않습니다.

다음은 HugePages를 수동으로 활성화할 수 있는 샘플 파라미터 구성입니다. 사용자의 필요에 맞게 값을 설정해야 합니다.

```
1. memory_target            = 0
2. memory_max_target        = 0
3. pga_aggregate_target     = {DBInstanceClassMemory*1/8}
4. sga_target               = {DBInstanceClassMemory*3/4}
5. sga_max_size             = {DBInstanceClassMemory*3/4}
6. use_large_pages          = ONLY
```

파라미터 그룹에서 파라미터 값이 다음과 같이 설정되어 있다고 가정합니다.

```
1. memory_target            = IF({DBInstanceClassHugePagesDefault}, 0, {DBInstanceClassMemory*3/4})
2. memory_max_target        = IF({DBInstanceClassHugePagesDefault}, 0, {DBInstanceClassMemory*3/4})
3. pga_aggregate_target     = IF({DBInstanceClassHugePagesDefault}, {DBInstanceClassMemory*1/8}, 0)
4. sga_target               = IF({DBInstanceClassHugePagesDefault}, {DBInstanceClassMemory*3/4}, 0)
5. sga_max_size             = IF({DBInstanceClassHugePagesDefault}, {DBInstanceClassMemory*3/4}, 0)
6. use_large_pages          = {DBInstanceClassHugePagesDefault}
```

이 파라미터 그룹은 메모리가 100GiB 미만인 db.r4 DB 인스턴스 클래스에서 사용됩니다. 이렇게 파라미터를 설정하고 `use_large_pages`가 `{DBInstanceClassHugePagesDefault}`로 설정되면 db.r4 인스턴스에서 HugePages가 활성화됩니다.

또 다른 예제에서는 파라미터 그룹의 파라미터 값이 다음과 같이 설정되어 있다고 가정합니다.

```
1. memory_target           = IF({DBInstanceClassHugePagesDefault}, 0, {DBInstanceClassMemory*3/4})
2. memory_max_target       = IF({DBInstanceClassHugePagesDefault}, 0, {DBInstanceClassMemory*3/4})
3. pga_aggregate_target    = IF({DBInstanceClassHugePagesDefault}, {DBInstanceClassMemory*1/8}, 0)
4. sga_target              = IF({DBInstanceClassHugePagesDefault}, {DBInstanceClassMemory*3/4}, 0)
5. sga_max_size            = IF({DBInstanceClassHugePagesDefault}, {DBInstanceClassMemory*3/4}, 0)
6. use_large_pages         = FALSE
```

위의 파라미터 그룹은 db.r4 DB 인스턴스 클래스와 db.r5 DB 인스턴스 클래스 모두에서 메모리가 100GiB 미만일 때 사용됩니다. 이 파라미터 설정을 사용하면 db.r4 및 db.r5 인스턴스에서 HugePages가 비활성화됩니다.

**참고**  
위의 파라미터 그룹이 메모리 크기가 100GiB 이상인 db.r4 DB 인스턴스 클래스 또는 db.r5 DB 인스턴스에서 사용될 경우에는 `FALSE`의 `use_large_pages` 설정이 `ONLY` 설정으로 재정의됩니다. 이때는 재정의에 대한 알림 메시지가 고객에게 전송됩니다.

DB 인스턴스에 HugePages가 활성화된 후 향상된 모니터링을 활성화하여 방대한 페이지 정보를 볼 수 있습니다. 자세한 내용은 [Enhanced Monitoring을 사용하여 OS 지표 모니터링](USER_Monitoring.OS.md) 단원을 참조하십시오.

# RDS for Oracle에서 확장 데이터 유형 활성화
<a name="Oracle.Concepts.ExtendedDataTypes"></a>

Amazon RDS for Oracle은 확장 데이터 유형을 지원합니다. 확장 데이터 유형의 경우 `VARCHAR2`, `NVARCHAR2`, `RAW` 데이터 유형의 최대 크기는 32,767바이트입니다. 확장 데이터 유형을 사용하려면 `MAX_STRING_SIZE` 파라미터를 `EXTENDED`로 설정하세요. 자세한 내용은 Oracle 설명서의 [확장 데이터 유형](https://docs.oracle.com/database/121/SQLRF/sql_elements001.htm#SQLRF55623) 단원을 참조하세요.

확장 데이터 유형을 사용하지 않을 경우 `MAX_STRING_SIZE` 파라미터를 `STANDARD`(기본값)로 유지하세요. 이 경우 `VARCHAR2` 및 `NVARCHAR2` 데이터 유형의 크기 제한은 4,000바이트이며 RAW 데이터 유형의 크기 제한은 2,000바이트입니다.

신규 또는 기존 DB 인스턴스에 대해 확장 데이터 유형을 활성화할 수 있습니다. 신규 DB 인스턴스의 경우 확장 데이터 형식을 활성화하면 일반적으로 DB 인스턴스 생성 시간이 길어집니다. 기존 DB 인스턴스의 경우 변환 과정 중 DB 인스턴스를 사용할 수 없습니다.

## 확장 데이터 유형에 대한 고려 사항
<a name="Oracle.Concepts.ExtendedDataTypes.considerations"></a>

DB 인스턴스에 확장 데이터 유형을 활성화할 때는 다음 사항을 고려하세요.
+ 신규 또는 기존 DB 인스턴스에 대해 확장 데이터 형식을 활성화하면 인스턴스를 재부팅해야만 변경 사항이 적용됩니다.
+ 확장 데이터 유형을 활성화하면 데이터 유형에 표준 크기를 사용하도록 DB 인스턴스를 변경할 수 없습니다. `MAX_STRING_SIZE` 파라미터를 `STANDARD`로 다시 설정하면 `incompatible-parameters` 상태가 됩니다.
+ 확장 데이터 유형을 사용하는 DB 인스턴스를 복원하면 `MAX_STRING_SIZE` 파라미터를 `EXTENDED`로 설정한 상태에서 파라미터 그룹을 지정해야 합니다. 복원 과정에서 `MAX_STRING_SIZE`를 `STANDARD`로 설정한 상태에서 기본값 파라미터 그룹 또는 기타 파라미터 그룹을 지정한 경우에는 `incompatible-parameters` 상태가 됩니다.
+ `incompatible-parameters` 설정 때문에 DB 인스턴스 상태가 `MAX_STRING_SIZE`가 되면 `MAX_STRING_SIZE` 파라미터를 `EXTENDED`로 설정하고 DB 인스턴스를 재부팅해야만 DB 인스턴스를 사용 가능합니다.

## 신규 DB 인스턴스에 확장 데이터 유형 활성화
<a name="Oracle.Concepts.ExtendedDataTypes.CreateDBInstance"></a>

`MAX_STRING_SIZE`를 `EXTENDED`로 설정한 DB 인스턴스를 생성하면 인스턴스가 기본값인 `STANDARD`로 설정된 `MAX_STRING_SIZE`을 표시합니다. 인스턴스를 재부팅하여 변경 사항을 활성화합니다.

**신규 DB 인스턴스에 확장 데이터 유형을 활성화하는 방법**

1. 파라미터 그룹의 `MAX_STRING_SIZE` 파라미터를 `EXTENDED`로 설정하세요.

   파라미터를 설정하려면 새 파라미터 그룹을 생성하거나 기존 DB 파라미터 그룹을 수정하면 됩니다.

   자세한 내용은 [Amazon RDS의 파라미터 그룹](USER_WorkingWithParamGroups.md) 섹션을 참조하세요.

1. RDS for Oracle DB 인스턴스를 새로 생성합니다.

   자세한 내용은 [Amazon RDS DB 인스턴스 생성](USER_CreateDBInstance.md) 섹션을 참조하세요.

1. `MAX_STRING_SIZE`를 `EXTENDED`로 설정한 파라미터 그룹과 DB 인스턴스를 연결합니다.

   자세한 내용은 [Amazon RDS DB 인스턴스 생성](USER_CreateDBInstance.md) 섹션을 참조하세요.

1. 파라미터 변경 사항을 적용하려면 DB 인스턴스를 재부팅하세요.

   자세한 내용은 [ DB 인스턴스 재부팅](USER_RebootInstance.md) 섹션을 참조하세요.

## 기존 DB 인스턴스에 확장 데이터 유형 활성화
<a name="Oracle.Concepts.ExtendedDataTypes.ModifyDBInstance"></a>

확장 데이터 유형을 활성화하도록 DB 인스턴스를 수정하면 RDS는 확장 크기를 사용하도록 데이터베이스의 데이터를 변환합니다. 변환 및 가동 중지는 파라미터를 변경한 다음에 데이터베이스를 재부팅할 때 발생합니다. 변환 과정 중에는 DB 인스턴스를 사용할 수 없습니다.

데이터 변환에 걸리는 시간은 DB 인스턴스 클래스, 데이터베이스 크기 및 마지막 DB 스냅샷의 시간에 따라 달라집니다. 가동 중지를 줄이려면 재부팅 직전에 스냅샷을 생성하는 것이 좋습니다. 이렇게 하면 변환 워크플로우 중에 발생하는 백업 시간이 단축됩니다.

**참고**  
확장 데이터 유형을 활성화한 후에는 변환 과정 중 시간인 특정 시점으로 복원을 수행할 수 없습니다. 변환 직전 또는 변환 직후 시간으로는 복원할 수 있습니다.

**기존 DB 인스턴스에 확장 데이터 유형을 활성화하는 방법**

1. 데이터베이스의 스냅샷을 만드십시오.

   데이터베이스에 잘못된 객체가 있는 경우 Amazon RDS는 이들 객체를 다시 컴파일하려고 합니다. Amazon RDS가 잘못된 객체를 다시 컴파일할 수 없는 경우 확장 데이터 유형으로의 변환은 실패할 수 있습니다. 변환에 문제가 있는 경우 스냅샷을 사용하면 데이터베이스를 복원할 수 있습니다. 변환하기 전에 항상 잘못된 객체가 있는지 점검하고 잘못된 객체를 수정하거나 제거하세요. 프로덕션 데이터베이스의 경우 먼저 DB 인스턴스의 복사본에서 변환 프로세스를 테스트하는 것이 좋습니다.

   자세한 내용은 [Amazon RDS의 단일 AZ DB 인스턴스에 대한 DB 스냅샷 생성](USER_CreateSnapshot.md) 섹션을 참조하세요.

1. 파라미터 그룹의 `MAX_STRING_SIZE` 파라미터를 `EXTENDED`로 설정하세요.

   파라미터를 설정하려면 새 파라미터 그룹을 생성하거나 기존 DB 파라미터 그룹을 수정하면 됩니다.

   자세한 내용은 [Amazon RDS의 파라미터 그룹](USER_WorkingWithParamGroups.md) 섹션을 참조하세요.

1. `MAX_STRING_SIZE`를 `EXTENDED`로 설정한 파라미터 그룹과 연결하도록 DB 인스턴스를 수정하세요.

   자세한 내용은 [Amazon RDS DB 인스턴스 수정](Overview.DBInstance.Modifying.md) 섹션을 참조하세요.

1. 파라미터 변경 사항을 적용하려면 DB 인스턴스를 재부팅하세요.

   자세한 내용은 [ DB 인스턴스 재부팅](USER_RebootInstance.md) 섹션을 참조하세요.

# Amazon RDS의 Oracle로 데이터 가져오기
<a name="Oracle.Procedural.Importing"></a>

Amazon RDS DB for Oracle 인스턴스로 데이터를 가져오는 방법은 다음 사항에 따라 다릅니다.
+ 보유하고 있는 데이터의 양
+ 데이터베이스의 데이터베이스 객체 수
+ 데이터베이스의 데이터베이스 객체 다양성

예를 들어, 요구 사항에 따라 다음과 같은 도구를 사용할 수 있습니다.
+ Oracle SQL Developer - 20MB 데이터베이스를 가져옵니다.
+ Oracle Data Pump - 복합 데이터베이스 또는 수백 메가바이트나 수 테라바이트 크기의 데이터베이스를 가져옵니다. 예를 들어 온프레미스 데이터베이스에서 RDS for Oracle DB 인스턴스로 테이블스페이스를 전송할 수 있습니다. Amazon S3 또는 Amazon EFS를 사용하여 데이터 파일 및 메타데이터를 전송할 수 있습니다. 자세한 내용은 [Oracle 전송 가능한 테이블스페이스를 사용한 마이그레이션](oracle-migrating-tts.md), [Amazon EFS 통합](oracle-efs-integration.md), [Amazon S3 통합](oracle-s3-integration.md) 단원을 참조하세요.
+ AWS Database Migration Service(AWS DMS) - 다운타임 없이 데이터베이스를 마이그레이션합니다. AWS DMS에 대한 자세한 내용은 [AWS Database Migration Service란 무엇입니까?](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html) 및 블로그 게시물 [AWS DMS를 사용하여 거의 0에 가까운 다운타임으로 Oracle 데이터베이스 마이그레이션](https://aws.amazon.com/blogs/database/migrating-oracle-databases-with-near-zero-downtime-using-aws-dms/)을 참조하세요.

**중요**  
이전 마이그레이션 기술을 사용하기 전에 데이터베이스를 백업하는 것이 좋습니다. 데이터를 가져온 후 스냅샷을 생성하여 RDS for Oracle DB 인스턴스를 백업할 수 있습니다. 나중에 스냅샷을 복원할 수 있습니다. 자세한 내용은 [데이터 백업, 복원 및 내보내기](CHAP_CommonTasks.BackupRestore.md) 섹션을 참조하세요.

많은 데이터베이스 엔진의 경우 대상 데이터베이스로 전환할 준비가 될 때까지 진행 중인 복제가 계속될 수 있습니다. AWS DMS를 사용하여 동일하거나 다른 데이터베이스 엔진에서 RDS for Oracle로 마이그레이션할 수 있습니다. 다른 데이터베이스 엔진에서 마이그레이션하는 경우 AWS Schema Conversion Tool을 사용하여 AWS DMS에서 마이그레이션되지 않는 스키마 객체를 마이그레이션할 수 있습니다.

**Topics**
+ [Oracle SQL Developer를 사용한 가져오기](Oracle.Procedural.Importing.SQLDeveloper.md)
+ [Oracle 전송 가능한 테이블스페이스를 사용한 마이그레이션](oracle-migrating-tts.md)
+ [Oracle Data Pump를 사용한 가져오기](Oracle.Procedural.Importing.DataPump.md)
+ [Oracle 내보내기/가져오기를 통해 가져오기](Oracle.Procedural.Importing.ExportImport.md)
+ [Oracle SQL\$1Loader를 사용하여 가져오기](Oracle.Procedural.Importing.SQLLoader.md)
+ [Oracle 구체화된 보기로 마이그레이션](Oracle.Procedural.Importing.Materialized.md)

# Oracle SQL Developer를 사용한 가져오기
<a name="Oracle.Procedural.Importing.SQLDeveloper"></a>

Oracle SQL Developer는 Oracle에서 무상으로 배포한 그래픽 Java 도구입니다. SQL Developer는 두 Oracle 데이터베이스 간의 데이터 마이그레이션이나 MySQL 등의 다른 데이터베이스에서 Oracle 데이터베이스로 데이터 마이그레이션을 위한 옵션을 제공합니다. 이 도구는 작은 데이터베이스를 마이그레이션하는 데 매우 적합합니다.

데스크톱 컴퓨터(Windows, Linux 또는 Mac) 또는 서버 중 하나에 이 도구를 설치할 수 있습니다. SQL Developer를 설치한 후에는 SQL Developer를 사용하여 원본 및 대상 데이터베이스에 연결할 수 있습니다. 도구 메뉴의 **Database Copy** 명령을 사용하여 데이터를 RDS for Oracle DB 인스턴스에 복사합니다.

SQL Developer를 다운로드하려면 [ http://www.oracle.com/technetwork/developer-tools/sql-developer](http://www.oracle.com/technetwork/developer-tools/sql-developer)를 참조하십시오.

데이터 마이그레이션을 시작하기 전에 Oracle SQL Developer 제품을 읽는 것이 좋습니다. Oracle에서는 MySQL 및 SQL Server 등 다른 데이터베이스에서 마이그레이션하는 방법을 설명하는 문서도 제공합니다. 자세한 정보는 Oracle 설명서에서 [http://www.oracle.com/technetwork/database/migration](http://www.oracle.com/technetwork/database/migration)을 참조하십시오.

# Oracle 전송 가능한 테이블스페이스를 사용한 마이그레이션
<a name="oracle-migrating-tts"></a>

Oracle 전송 가능한 테이블스페이스 기능을 사용하여 온프레미스 Oracle 데이터베이스의 테이블스페이스 세트를 RDS for Oracle DB 인스턴스로 복사할 수 있습니다. 물리적 수준에서 Amazon EFS 또는 Amazon S3를 사용하여 소스 데이터 파일과 메타데이터 파일을 대상 DB 인스턴스에 전송합니다. 전송 가능한 테이블스페이스 기능은 `rdsadmin.rdsadmin_transport_util` 패키지를 사용합니다. 이 패키지의 구문 및 의미는 [테이블스페이스 전송](rdsadmin_transport_util.md) 섹션을 참조하세요.

테이블스페이스를 전송하는 방법을 설명하는 블로그 게시물은 [전송 가능한 테이블스페이스를 사용하도록 Oracle 데이터베이스를 AWS로 마이그레이션](https://aws.amazon.com/blogs/database/migrate-oracle-databases-to-aws-using-transportable-tablespace/) 및 [RMAN을 사용한 Amazon RDS for Oracle 전송 가능 테이블스페이스](https://aws.amazon.com/blogs/database/amazon-rds-for-oracle-transportable-tablespaces-using-rman/)를 참조하세요.

**Topics**
+ [Oracle 전송 가능한 테이블스페이스 개요](#oracle-migrating-tts.overview)
+ [1단계: 소스 호스트 설정](#oracle-migrating-tts.setup-phase)
+ [2단계: 전체 테이블스페이스 백업 준비](#oracle-migrating-tts.initial-br-phase)
+ [3단계: 증분 백업 생성 및 전송](#oracle-migrating-tts.roll-forward-phase)
+ [4단계: 테이블스페이스 전송](#oracle-migrating-tts.final-br-phase)
+ [5단계: 전송된 테이블스페이스 검증](#oracle-migrating-tts.validate)
+ [6단계: 남은 파일 정리](#oracle-migrating-tts.cleanup)

## Oracle 전송 가능한 테이블스페이스 개요
<a name="oracle-migrating-tts.overview"></a>

전송 가능한 테이블스페이스 세트는 전송 중인 테이블스페이스 세트에 대한 데이터 파일과 테이블스페이스 메타데이터를 포함하는 내보내기 덤프 파일로 구성됩니다. 전송 가능한 테이블스페이스와 같은 물리적 마이그레이션 솔루션에서는 데이터 파일, 구성 파일 및 Data Pump 덤프 파일과 같은 물리적 파일을 전송합니다.

**Topics**
+ [전송 가능한 테이블스페이스의 장점 및 단점](#oracle-migrating-tts.overview.benefits)
+ [전송 가능한 테이블스페이스의 제한 사항](#oracle-migrating-tts.limitations)
+ [전송 가능한 테이블스페이스의 사전 요구 사항](#oracle-migrating-tts.requirements)

### 전송 가능한 테이블스페이스의 장점 및 단점
<a name="oracle-migrating-tts.overview.benefits"></a>

가동 중지 시간을 최소화하면서 하나 이상의 대규모 테이블스페이스를 RDS로 마이그레이션해야 하는 경우 전송 가능한 테이블스페이스를 사용하는 것이 좋습니다. 전송 가능한 테이블스페이스에는 논리적 마이그레이션에 비해 다음과 같은 이점이 있습니다.
+ 대부분의 다른 Oracle 마이그레이션 솔루션보다 가동 중지 시간이 짧습니다.
+ 전송 가능한 테이블스페이스 기능은 물리적 파일만 복사하므로 논리적 마이그레이션에서 발생할 수 있는 데이터 무결성 오류와 논리적 손상을 방지합니다.
+ 추가 라이선스가 필요하지 않습니다.
+ 예를 들어 Oracle Solaris 플랫폼에서 Linux로 마이그레이션하는 등 다양한 플랫폼 및 엔디안(endianness) 유형 간에 테이블스페이스 세트를 마이그레이션할 수 있습니다. 하지만 Windows 서버 간에 테이블스페이스를 주고받는 것은 지원되지 않습니다.
**참고**  
Linux는 완벽하게 테스트되고 지원됩니다. 일부 UNIX 버전은 테스트되지 않았습니다.

전송 가능한 테이블스페이스를 사용하는 경우 Amazon S3 또는 Amazon EFS를 사용하여 데이터를 전송할 수 있습니다.
+ EFS를 사용하는 경우 백업은 가져오는 동안 EFS 파일 시스템에 남아 있습니다. 나중에 파일을 제거할 수 있습니다. 이 기법에서는 DB 인스턴스에 EBS 스토리지를 프로비저닝할 필요가 없습니다. 따라서 S3 대신 Amazon EFS를 사용하는 것이 좋습니다. 자세한 내용은 [Amazon EFS 통합](oracle-efs-integration.md) 섹션을 참조하세요.
+ S3를 사용하는 경우 DB 인스턴스에 연결된 EBS 스토리지에 RMAN 백업을 다운로드합니다. 가져오는 동안 파일은 EBS 스토리지에 남아 있습니다. 가져온 후에는 DB 인스턴스에 할당된 상태로 남아 있는 이 공간을 비워 여유 공간을 확보할 수 있습니다.

전송 가능한 테이블스페이스의 주요 단점은 Oracle Database에 대해 비교적 높은 수준의 지식이 필요하다는 것입니다. 자세한 내용은 **Oracle Database 관리자 안내서의 [데이터베이스 간 테이블스페이스 전송](https://docs.oracle.com/en/database/oracle/oracle-database/19/admin/transporting-data.html#GUID-F7B2B591-AA88-4D16-8DCF-712763923FFB)을 참조하세요.

### 전송 가능한 테이블스페이스의 제한 사항
<a name="oracle-migrating-tts.limitations"></a>

RDS for Oracle에서 이 기능을 사용하는 경우 전송 가능한 테이블스페이스에 대한 Oracle Database 제한 사항이 적용됩니다. 자세한 내용은 **Oracle Database 관리자 안내서의 [전송 가능한 테이블스페이스 제한 사항]( https://docs.oracle.com/en/database/oracle/oracle-database/19/admin/transporting-data.html#GUID-DAB51E42-9BBC-4001-B5CB-0ECDBE128787) 및 [데이터 전송에 대한 일반 제한 사항](https://docs.oracle.com/en/database/oracle/oracle-database/19/admin/transporting-data.html#GUID-28800719-6CB9-4A71-95DD-4B61AA603173)을 참조하세요. RDS for Oracle의 전송 가능한 테이블스페이스에 대한 다음과 같은 추가 제한 사항에 유의하세요.
+ 소스 데이터베이스와 대상 데이터베이스 모두 Standard Edition 2(SE2)를 사용할 수 없습니다. Enterprise Edition만 지원됩니다.
+ Oracle Database 11g 데이터베이스를 소스로 사용할 수 없습니다. RMAN 크로스 플랫폼 전송 가능한 테이블스페이스 기능은 Oracle Database 11g에서 지원하지 않는 RMAN 전송 메커니즘을 사용합니다.
+ 전송 가능한 테이블스페이스를 사용하여 RDS for Oracle DB 인스턴스에서 데이터를 마이그레이션할 수 없습니다. RDS for Oracle DB 인스턴스로 데이터를 마이그레이션하는 경우에만 전송 가능한 테이블스페이스를 사용할 수 있습니다.
+ Windows 운영 체제는 지원되지 않습니다.
+ 하위 릴리스 수준에서는 테이블스페이스를 데이터베이스로 전송할 수 없습니다. 대상 데이터베이스는 릴리스 수준이 소스 데이터베이스 이상이어야 합니다. 예를 들어 Oracle Database 21c에서 Oracle Database 19c로 테이블스페이스를 전송할 수 없습니다.
+ `SYSTEM` 및 `SYSAUX`와 같은 관리 테이블스페이스는 전송할 수 없습니다.
+ PL/SQL 패키지, Java 클래스, 뷰, 트리거, 시퀀스, 사용자, 역할 및 임시 테이블과 같은 비데이터 객체는 전송할 수 없습니다. 비데이터 객체를 전송하려면 객체를 수동으로 만들거나 Data Pump 메타데이터 내보내기 및 가져오기를 사용하세요. 자세한 내용은 [내 Oracle 지원 노트 1454872.1](https://support.oracle.com/knowledge/Oracle%20Cloud/1454872_1.html)을 참조하세요.
+ 암호화된 테이블스페이스 또는 암호화된 열을 사용하는 테이블스페이스를 전송할 수 없습니다.
+ Amazon S3를 사용하여 파일을 전송하는 경우 지원되는 최대 파일 크기는 5TiB입니다.
+ 소스 데이터베이스에서 Spatial과 같은 Oracle 옵션을 사용하는 경우 대상 데이터베이스에 동일한 옵션이 구성되어 있지 않으면 테이블스페이스를 전송할 수 없습니다.
+ Oracle 복제본 구성에서는 테이블스페이스를 RDS for Oracle DB 인스턴스로 전송할 수 없습니다. 이 문제를 해결하려면 모든 복제본을 삭제하고 테이블스페이스를 전송한 다음 복제본을 다시 생성하면 됩니다.

### 전송 가능한 테이블스페이스의 사전 요구 사항
<a name="oracle-migrating-tts.requirements"></a>

 시작하기 전에 다음 작업을 완료하세요.
+ My Oracle Support의 다음 문서에 설명된 전송 가능한 테이블스페이스의 요구 사항을 검토하세요.
  + [교차 플랫폼 증분 백업을 사용하여 전송 가능한 테이블스페이스 가동 시간 단축(문서 ID 2471245.1)](https://support.oracle.com/epmos/faces/DocumentDisplay?id=2471245.1)
  + [전송 가능한 테이블스페이스(TTS) 제한 사항 및 한계: 세부 정보, 참조 및 해당하는 경우 버전(문서 ID 1454872.1)](https://support.oracle.com/epmos/faces/DocumentDisplay?id=1454872.1)
  + [전송 가능한 테이블스페이스(TTS)에 대한 기본 참고 사항 - 일반적인 질문 및 문제(문서 ID 1166564.1)](https://support.oracle.com/epmos/faces/DocumentDisplay?id=1166564.1)
+ 엔디안 변환을 계획하세요. 소스 플랫폼 ID를 지정하는 경우 RDS for Oracle은 엔디안을 자동으로 변환합니다. 플랫폼 ID를 찾는 방법을 알아보려면 [동일한 Data Guard 구성의 이기종 기본 및 물리적 대기에 대한 Data Guard 지원(문서 ID 413484.1)](https://support.oracle.com/epmos/faces/DocumentDisplay?id=413484.1)을 참조하세요.
+ 대상 DB 인스턴스에서 전송 가능한 테이블스페이스 기능이 사용 설정되어 있는지 확인하세요. 이 기능은 다음 쿼리를 실행할 때 `ORA-20304` 오류가 발생하지 않는 경우에만 사용 설정됩니다.

  ```
  SELECT * FROM TABLE(rdsadmin.rdsadmin_transport_util.list_xtts_orphan_files);
  ```

  전송 가능한 테이블스페이스 기능이 사용 설정되지 않았으면 DB 인스턴스를 재부팅하세요. 자세한 내용은 [ DB 인스턴스 재부팅](USER_RebootInstance.md) 섹션을 참조하세요.
+ 소스 및 대상 데이터베이스에서 시간대 파일이 동일한지 확인합니다.
+ 소스 및 대상 데이터베이스의 데이터베이스 문자 세트가 다음 요구 사항 중 하나를 충족하는지 확인합니다.
  + 문자 세트가 동일해야 합니다.
  + 문자 세트가 호환되어야 합니다. 호환성 요구 사항 목록은 Oracle Database 설명서의 [General Limitations on Transporting Data](https://docs.oracle.com/en/database/oracle/oracle-database/19/spmdu/general-limitations-on-transporting-data.html#GUID-28800719-6CB9-4A71-95DD-4B61AA603173)를 참조하세요.
+ Amazon S3를 사용하여 파일을 전송하려는 경우 다음을 수행하세요.
  + 파일 전송에 Amazon S3 버킷을 사용할 수 있고 Amazon S3 버킷이 DB 인스턴스와 동일한 AWS 리전에 있어야 합니다. 지침을 보려면 *Amazon Simple Storage Service 시작 안내서*에서 [버킷 생성](https://docs.aws.amazon.com/AmazonS3/latest/userguide/CreatingABucket.html)을 참조하세요.
  + [Amazon S3와 RDS for Oracle 통합을 위한 IAM 권한 구성](oracle-s3-integration.preparing.md)의 지침에 따라 Amazon RDS 통합을 위해 Amazon S3 버킷을 준비해야 합니다.
+ Amazon EFS를 사용하여 파일을 전송하려는 경우 [Amazon EFS 통합](oracle-efs-integration.md)의 지침에 따라 EFS를 구성해야 합니다.
+ 대상 DB 인스턴스에서 자동 백업을 켜는 것이 좋습니다. [메타데이터 가져오기 단계](#oracle-migrating-tts.transport.import-dmp)가 실패할 수 있으므로 DB 인스턴스를 가져오기 전 상태로 복원할 수 있어야 합니다. 그러면 테이블스페이스를 다시 백업하고 전송하고 가져올 필요가 없습니다.

## 1단계: 소스 호스트 설정
<a name="oracle-migrating-tts.setup-phase"></a>

이 단계에서는 My Oracle Support에서 제공하는 전송 테이블스페이스 스크립트를 복사하고 필요한 구성 파일을 설정합니다. 다음 단계에서는 **소스 호스트가 **대상 인스턴스로 전송할 테이블스페이스가 포함된 데이터베이스를 실행하고 있습니다.

**소스 호스트를 설정하는 방법**

1. 소스 호스트에 Oracle 홈의 소유자로 로그인합니다.

1. `ORACLE_HOME` 및 `ORACLE_SID` 환경 변수가 소스 데이터베이스를 가리키는지 확인합니다.

1. 데이터베이스에 관리자로 로그인하고 시간대 버전, DB 문자 세트 및 국가 문자 세트가 대상 데이터베이스와 동일한지 확인합니다.

   ```
   SELECT * FROM V$TIMEZONE_FILE;
   SELECT * FROM NLS_DATABASE_PARAMETERS 
     WHERE PARAMETER IN ('NLS_CHARACTERSET','NLS_NCHAR_CHARACTERSET');
   ```

1. [Oracle Support 노트 2471245.1](https://support.oracle.com/epmos/faces/DocumentDisplay?id=2471245.1)에 설명된 대로 전송 가능한 테이블스페이스 유틸리티를 설정합니다.

   설정에는 소스 호스트의 `xtt.properties` 파일 편집이 포함됩니다. 다음 샘플 `xtt.properties` 파일은 `/dsk1/backups` 디렉터리에 있는 세 개의 테이블스페이스에 대한 백업을 지정합니다. 이는 대상 DB 인스턴스로 전송하려는 테이블스페이스입니다. 또한 엔디안을 자동으로 변환할 소스 플랫폼 ID를 지정합니다.
**참고**  
유효한 플랫폼 ID 정보는 [동일한 Data Guard 구성의 이기종 기본 및 물리적 대기에 대한 Data Guard 지원(문서 ID 413484.1)](https://support.oracle.com/epmos/faces/DocumentDisplay?id=413484.1)을 참조하세요.

   ```
   #linux system 
   platformid=13
   #list of tablespaces to transport
   tablespaces=TBS1,TBS2,TBS3
   #location where backup will be generated
   src_scratch_location=/dsk1/backups
   #RMAN command for performing backup
   usermantransport=1
   ```

## 2단계: 전체 테이블스페이스 백업 준비
<a name="oracle-migrating-tts.initial-br-phase"></a>

이 단계에서는 테이블스페이스를 처음으로 백업하고 대상 호스트로 백업을 전송한 다음, `rdsadmin.rdsadmin_transport_util.import_xtts_tablespaces` 프로시저에 따라 테이블스페이스를 복원합니다. 이 단계가 완료되면 초기 테이블스페이스 백업이 대상 DB 인스턴스에 상주하며 증분 백업으로 업데이트할 수 있습니다.

**Topics**
+ [1단계: 소스 호스트의 테이블스페이스 백업](#oracle-migrating-tts.backup-full)
+ [2단계: 백업 파일을 대상 DB 인스턴스로 전송](#oracle-migrating-tts.transfer-full)
+ [3단계: 대상 DB 인스턴스에 테이블스페이스 가져오기](#oracle-migrating-tts.initial-tts-import)

### 1단계: 소스 호스트의 테이블스페이스 백업
<a name="oracle-migrating-tts.backup-full"></a>

이 단계에서는 `xttdriver.pl` 스크립트를 사용하여 테이블스페이스의 전체 백업을 만듭니다. `xttdriver.pl`의 출력은 `TMPDIR` 환경 변수에 저장됩니다.

**테이블스페이스를 백업하는 방법**

1. 테이블스페이스가 읽기 전용 모드인 경우 `ALTER TABLESPACE` 권한이 있는 사용자로 소스 데이터베이스에 로그인하고 테이블스페이스를 읽기/쓰기 모드로 설정합니다. 그렇지 않은 경우 다음 단계로 건너뜁니다.

   다음 예에서는 `tbs1`, `tbs2` 및 `tbs3`를 읽기/쓰기 모드로 설정합니다.

   ```
   ALTER TABLESPACE tbs1 READ WRITE;
   ALTER TABLESPACE tbs2 READ WRITE;
   ALTER TABLESPACE tbs3 READ WRITE;
   ```

1. `xttdriver.pl` 스크립트를 사용하여 테이블스페이스를 백업합니다. 선택적으로 스크립트를 디버그 모드에서 실행하도록 `--debug`를 지정할 수 있습니다.

   ```
   export TMPDIR=location_of_log_files
   cd location_of_xttdriver.pl
   $ORACLE_HOME/perl/bin/perl xttdriver.pl --backup
   ```

### 2단계: 백업 파일을 대상 DB 인스턴스로 전송
<a name="oracle-migrating-tts.transfer-full"></a>

이 단계에서는 스크래치 위치에서 백업 및 구성 파일을 대상 DB 인스턴스로 복사합니다. 다음 옵션 중 하나를 선택하세요.
+ 소스 및 대상 호스트가 Amazon EFS 파일 시스템을 공유하는 경우 `cp` 등의 운영 체제 유틸리티를 사용하여 스크래치 위치에서 백업 파일과 `res.txt` 파일을 공유 디렉터리로 복사합니다. [3단계: 대상 DB 인스턴스에 테이블스페이스 가져오기](#oracle-migrating-tts.initial-tts-import) 단원을 참조하세요.
+ Amazon S3 버킷으로 백업을 스테이징해야 하는 경우 다음 단계를 완료하세요.

![\[Amazon 3 또는 Amazon EFS를 사용하여 파일을 전송합니다.\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/oracle-tts.png)


#### 2.2단계: 백업을 Amazon S3 버킷에 업로드
<a name="oracle-migrating-tts.upload-full"></a>

스크래치 디렉터리의 백업과 `res.txt` 파일을 Amazon S3 버킷에 업로드합니다. 자세한 내용은 **Amazon Simple Storage Service 사용 설명서의 [객체 업로드](https://docs.aws.amazon.com/AmazonS3/latest/userguide/upload-objects.html)를 참조하세요.

#### 2.3단계: Amazon S3 버킷에서 대상 DB 인스턴스로 백업 다운로드
<a name="oracle-migrating-tts.download-full"></a>

이 단계에서는 `rdsadmin.rdsadmin_s3_tasks.download_from_s3` 프로시저를 사용하여 RDS for Oracle DB 인스턴스에 백업을 다운로드합니다.

**Amazon S3 버킷에서 백업을 다운로드하는 방법**

1. SQL\$1Plus 또는 Oracle SQL Developer를 시작하고 RDS for Oracle DB 인스턴스에 로그인합니다.

1. Amazon RDS `rdsadmin.rdsadmin_s3_tasks.download_from_s3` 프로시저를 사용하여 Amazon S3 버킷에서 대상 DB 인스턴스로 백업을 다운로드합니다. 다음 예제에서는 `amzn-s3-demo-bucket`이라는 이름의 Amazon S3 버킷에서 모든 파일을 `DATA_PUMP_DIR` 디렉터리로 다운로드합니다.

   ```
   EXEC UTL_FILE.FREMOVE ('DATA_PUMP_DIR', 'res.txt');
   SELECT rdsadmin.rdsadmin_s3_tasks.download_from_s3(
     p_bucket_name    =>  'amzn-s3-demo-bucket',
     p_directory_name =>  'DATA_PUMP_DIR') 
   AS TASK_ID FROM DUAL;
   ```

   `SELECT` 문은 `VARCHAR2` 데이터 형식으로 작업 ID를 반환합니다. 자세한 내용은 [Amazon S3 버킷의 파일을 Oracle DB 인스턴스로 다운로드](oracle-s3-integration.using.md#oracle-s3-integration.using.download) 섹션을 참조하세요.

### 3단계: 대상 DB 인스턴스에 테이블스페이스 가져오기
<a name="oracle-migrating-tts.initial-tts-import"></a>

테이블스페이스를 대상 DB 인스턴스로 복원하려면 `rdsadmin.rdsadmin_transport_util.import_xtts_tablespaces` 프로시저를 사용합니다. 이 프로시저는 데이터 파일을 올바른 엔디안(endian) 형식으로 자동 변환합니다.

Linux 이외의 플랫폼에서 가져오는 경우 `import_xtts_tablespaces` 호출 시 `p_platform_id` 파라미터를 사용하여 소스 플랫폼을 지정합니다. 지정하는 플랫폼 ID가 [2단계: 소스 호스트의 테이블스페이스 메타데이터 내보내기](#oracle-migrating-tts.transport.export)의 `xtt.properties` 파일에서 지정하는 ID와 일치해야 합니다.

**대상 DB 인스턴스에 테이블스페이스 가져오기**

1. Oracle SQL 클라이언트를 시작하고 마스터 사용자로 대상 RDS for Oracle DB 인스턴스에 로그인합니다.

1. 가져올 테이블스페이스와 백업이 포함된 디렉터리를 지정하여 `rdsadmin.rdsadmin_transport_util.import_xtts_tablespaces` 프로시저를 실행합니다.

   다음 예에서는 *DATA\$1PUMP\$1DIR* 디렉터리에서 *TBS1*, *TBS2* 및 *TBS3* 테이블스페이스를 가져옵니다. 소스 플랫폼은 플랫폼 ID가 `6`인 AIX 기반 시스템(64비트)입니다. `V$TRANSPORTABLE_PLATFORM` 쿼리를 통해 플랫폼 ID를 찾을 수 있습니다.

   ```
   VAR task_id CLOB
   
   BEGIN
     :task_id:=rdsadmin.rdsadmin_transport_util.import_xtts_tablespaces(
           'TBS1,TBS2,TBS3',
           'DATA_PUMP_DIR',
           p_platform_id => 6);
   END;
   /
   
   PRINT task_id
   ```

1. (선택 사항) `rdsadmin.rds_xtts_operation_info` 테이블을 쿼리하여 진행 상황을 모니터링합니다. `xtts_operation_state` 열에는 `EXECUTING`, `COMPLETED` 또는 `FAILED` 값이 표시됩니다.

   ```
   SELECT * FROM rdsadmin.rds_xtts_operation_info;
   ```
**참고**  
장기 실행 작업의 경우 `V$SESSION_LONGOPS`, `V$RMAN_STATUS` 및 `V$RMAN_OUTPUT`을 쿼리할 수도 있습니다.

1. 이전 단계의 작업 ID를 사용하여 완료된 가져오기의 로그를 확인합니다.

   ```
   SELECT * FROM TABLE(rdsadmin.rds_file_util.read_text_file('BDUMP', 'dbtask-'||'&task_id'||'.log'));
   ```

   다음 단계로 이동하기 전에 가져오기가 성공적으로 완료되었는지 확인합니다.

## 3단계: 증분 백업 생성 및 전송
<a name="oracle-migrating-tts.roll-forward-phase"></a>

이 단계에서는 소스 데이터베이스가 활성 상태인 동안 정기적으로 증분 백업을 만들어 전송합니다. 이 방법을 사용하면 최종 테이블스페이스 백업의 크기가 줄어듭니다. 증분 백업을 여러 개 수행하는 경우 대상 인스턴스에 적용하려면 먼저 마지막 증분 백업 이후에 `res.txt` 파일을 복사해야 합니다.

가져오기 단계가 선택 사항이라는 점을 제외하고 단계는 [2단계: 전체 테이블스페이스 백업 준비](#oracle-migrating-tts.initial-br-phase)와 동일합니다.

## 4단계: 테이블스페이스 전송
<a name="oracle-migrating-tts.final-br-phase"></a>

이 단계에서는 읽기 전용 테이블스페이스를 백업하고 Data Pump 메타데이터를 내보내고 이러한 파일을 대상 호스트로 전송하고 테이블스페이스와 메타데이터를 모두 가져옵니다.

**Topics**
+ [1단계: 읽기 전용 테이블스페이스 백업](#oracle-migrating-tts.final-backup)
+ [2단계: 소스 호스트의 테이블스페이스 메타데이터 내보내기](#oracle-migrating-tts.transport.export)
+ [3단계: (Amazon S3만 해당) 백업 및 내보내기 파일을 대상 DB 인스턴스로 전송](#oracle-migrating-tts.transport)
+ [4단계: 대상 DB 인스턴스에 테이블스페이스 가져오기](#oracle-migrating-tts.restore-full)
+ [5단계: 대상 DB 인스턴스에 테이블스페이스 메타데이터 가져오기](#oracle-migrating-tts.transport.import-dmp)

### 1단계: 읽기 전용 테이블스페이스 백업
<a name="oracle-migrating-tts.final-backup"></a>

이 단계는 [1단계: 소스 호스트의 테이블스페이스 백업](#oracle-migrating-tts.backup-full)과 동일하지만 한 가지 차이점은 테이블스페이스를 마지막으로 백업하기 전에 테이블스페이스를 읽기 전용 모드로 설정한다는 점입니다.

다음 예에서는 `tbs1`, `tbs2` 및 `tbs3`를 읽기 전용 모드로 설정합니다.

```
ALTER TABLESPACE tbs1 READ ONLY;
ALTER TABLESPACE tbs2 READ ONLY;
ALTER TABLESPACE tbs3 READ ONLY;
```

### 2단계: 소스 호스트의 테이블스페이스 메타데이터 내보내기
<a name="oracle-migrating-tts.transport.export"></a>

소스 호스트에서 `expdb` 유틸리티를 실행하여 테이블스페이스 메타데이터를 내보냅니다. 다음 예에서는 *DATA\$1PUMP\$1DIR* 디렉터리의 *TBS1*, *TBS2*, *TBS3* 테이블스페이스를 *xttdump.dmp* 덤프 파일로 내보냅니다.

```
expdp username/pwd \
dumpfile=xttdump.dmp \
directory=DATA_PUMP_DIR \
statistics=NONE \
transport_tablespaces=TBS1,TBS2,TBS3 \
transport_full_check=y \
logfile=tts_export.log
```

*DATA\$1PUMP\$1DIR*이 Amazon EFS의 공유 디렉터리인 경우 [4단계: 대상 DB 인스턴스에 테이블스페이스 가져오기](#oracle-migrating-tts.restore-full)로 건너뛰세요.

### 3단계: (Amazon S3만 해당) 백업 및 내보내기 파일을 대상 DB 인스턴스로 전송
<a name="oracle-migrating-tts.transport"></a>

Amazon S3를 사용하여 테이블스페이스 백업과 Data pump 내보내기 파일을 스테이징하려면 다음 단계를 완료하세요.

#### 3.1단계: 소스 호스트에서 Amazon S3 버킷으로 백업 및 덤프 파일 업로드
<a name="oracle-migrating-tts.transport.upload-dmp"></a>

소스 호스트에서 Amazon S3 버킷으로 백업 및 덤프 파일을 업로드합니다. 자세한 내용은 **Amazon Simple Storage Service 사용 설명서의 [객체 업로드](https://docs.aws.amazon.com/AmazonS3/latest/userguide/upload-objects.html)를 참조하세요.

#### 3.2단계: Amazon S3 버킷에서 대상 DB 인스턴스로 백업 및 덤프 파일 다운로드
<a name="oracle-migrating-tts.transport.download-dmp"></a>

이 단계에서는 `rdsadmin.rdsadmin_s3_tasks.download_from_s3` 프로시저를 사용하여 RDS for Oracle DB 인스턴스에 백업 및 덤프 파일을 다운로드합니다. [2.3단계: Amazon S3 버킷에서 대상 DB 인스턴스로 백업 다운로드](#oracle-migrating-tts.download-full) 섹션의 단계를 따르세요.

### 4단계: 대상 DB 인스턴스에 테이블스페이스 가져오기
<a name="oracle-migrating-tts.restore-full"></a>

`rdsadmin.rdsadmin_transport_util.import_xtts_tablespaces` 프로시저를 사용하여 테이블스페이스를 복원합니다. 이 프로시저의 구문 및 의미는 [전송된 테이블스페이스를 DB 인스턴스로 가져오기](rdsadmin_transport_util_import_xtts_tablespaces.md) 섹션을 참조하세요.

**중요**  
최종 테이블스페이스 가져오기를 완료한 후 다음 단계는 [Oracle Data Pump 메타데이터를 가져오는 것](#oracle-migrating-tts.transport.export)입니다. 가져오기에 실패할 경우 DB 인스턴스를 실패 이전 상태로 되돌리는 것이 중요합니다. 따라서 [Amazon RDS의 단일 AZ DB 인스턴스에 대한 DB 스냅샷 생성](USER_CreateSnapshot.md)의 지침에 따라 DB 인스턴스의 DB 스냅샷을 만드는 것이 좋습니다. 스냅샷에는 가져온 테이블스페이스가 모두 포함되므로 가져오기가 실패할 경우 백업 및 가져오기 프로세스를 반복하지 않아도 됩니다.  
대상 DB 인스턴스에 자동 백업이 켜져 있는데 메타데이터를 가져오기 전에 Amazon RDS가 유효한 스냅샷이 시작되었음을 감지하지 못하면 RDS는 스냅샷 생성을 시도합니다. 인스턴스 활동에 따라 이 스냅샷은 성공하거나 실패할 수 있습니다. 유효한 스냅샷이 검색되지 않거나 스냅샷을 시작할 수 없는 경우 메타데이터 가져오기가 오류와 함께 종료됩니다.

**대상 DB 인스턴스에 테이블스페이스 가져오기**

1. Oracle SQL 클라이언트를 시작하고 마스터 사용자로 대상 RDS for Oracle DB 인스턴스에 로그인합니다.

1. 가져올 테이블스페이스와 백업이 포함된 디렉터리를 지정하여 `rdsadmin.rdsadmin_transport_util.import_xtts_tablespaces` 프로시저를 실행합니다.

   다음 예에서는 *DATA\$1PUMP\$1DIR* 디렉터리에서 *TBS1*, *TBS2* 및 *TBS3* 테이블스페이스를 가져옵니다.

   ```
   BEGIN
     :task_id:=rdsadmin.rdsadmin_transport_util.import_xtts_tablespaces('TBS1,TBS2,TBS3','DATA_PUMP_DIR');
   END;
   /
   PRINT task_id
   ```

1. (선택 사항) `rdsadmin.rds_xtts_operation_info` 테이블을 쿼리하여 진행 상황을 모니터링합니다. `xtts_operation_state` 열에는 `EXECUTING`, `COMPLETED` 또는 `FAILED` 값이 표시됩니다.

   ```
   SELECT * FROM rdsadmin.rds_xtts_operation_info;
   ```
**참고**  
장기 실행 작업의 경우 `V$SESSION_LONGOPS`, `V$RMAN_STATUS` 및 `V$RMAN_OUTPUT`을 쿼리할 수도 있습니다.

1. 이전 단계의 작업 ID를 사용하여 완료된 가져오기의 로그를 확인합니다.

   ```
   SELECT * FROM TABLE(rdsadmin.rds_file_util.read_text_file('BDUMP', 'dbtask-'||'&task_id'||'.log'));
   ```

   다음 단계로 이동하기 전에 가져오기가 성공적으로 완료되었는지 확인합니다.

1. [Amazon RDS의 단일 AZ DB 인스턴스에 대한 DB 스냅샷 생성](USER_CreateSnapshot.md)의 지침에 따라 수동 DB 스냅샷을 생성합니다.

### 5단계: 대상 DB 인스턴스에 테이블스페이스 메타데이터 가져오기
<a name="oracle-migrating-tts.transport.import-dmp"></a>

이 단계에서는 `rdsadmin.rdsadmin_transport_util.import_xtts_metadata` 프로시저에 따라 전송 가능한 테이블스페이스 메타데이터를 RDS for Oracle DB 인스턴스로 가져옵니다. 이 프로시저의 구문 및 의미는 [전송 가능한 테이블스페이스를 DB 인스턴스로 가져오기](rdsadmin_transport_util_import_xtts_metadata.md) 섹션을 참조하세요. 작업 중에는 가져오기 상태가 `rdsadmin.rds_xtts_operation_info` 테이블에 표시됩니다.

**중요**  
메타데이터를 가져오기 전에 테이블스페이스를 가져온 후 DB 스냅샷이 성공적으로 생성되었는지 확인하는 것이 좋습니다. 가져오기 단계가 실패하면 DB 인스턴스를 복원하고 가져오기 오류를 해결한 다음 가져오기를 다시 시도하세요.

**RDS for Oracle DB 인스턴스로 Data Pump 메타데이터 가져오기**

1. Oracle SQL 클라이언트를 시작하고 마스터 사용자로 대상 DB 인스턴스에 로그인합니다.

1. 전송된 테이블스페이스에 스키마를 소유하는 사용자가 아직 없다면 생성합니다.

   ```
   CREATE USER tbs_owner IDENTIFIED BY password;
   ```

1. 덤프 파일의 이름과 디렉터리 위치를 지정하여 메타데이터를 가져옵니다.

   ```
   BEGIN
     rdsadmin.rdsadmin_transport_util.import_xtts_metadata('xttdump.dmp','DATA_PUMP_DIR');
   END;
   /
   ```

1. (선택 사항) 전송 가능한 테이블스페이스 기록 테이블을 쿼리하여 메타데이터 가져오기 상태를 확인합니다.

   ```
   SELECT * FROM rdsadmin.rds_xtts_operation_info;
   ```

   작업이 완료되면 테이블스페이스가 읽기 전용 모드가 됩니다.

1. (선택 사항) 로그 파일을 확인합니다.

   다음 예에서는 BDUMP 디렉터리의 내용을 나열한 다음 가져오기 로그를 쿼리합니다.

   ```
   SELECT * FROM TABLE(rdsadmin.rds_file_util.listdir(p_directory => 'BDUMP'));
   
   SELECT * FROM TABLE(rdsadmin.rds_file_util.read_text_file(
     p_directory => 'BDUMP',
     p_filename => 'rds-xtts-import_xtts_metadata-2023-05-22.01-52-35.560858000.log'));
   ```

## 5단계: 전송된 테이블스페이스 검증
<a name="oracle-migrating-tts.validate"></a>

이 선택적 단계에서는 `rdsadmin.rdsadmin_rman_util.validate_tablespace` 프로시저를 사용하여 전송된 테이블스페이스를 검증한 다음 테이블스페이스를 읽기/쓰기 모드로 설정합니다.

**전송된 데이터를 검증하는 방법**

1. SQL\$1Plus 또는 SQL Developer를 시작하고 마스터 사용자로 대상 DB 인스턴스에 로그인합니다.

1. `rdsadmin.rdsadmin_rman_util.validate_tablespace` 프로시저를 사용하여 테이블스페이스를 검증합니다.

   ```
   SET SERVEROUTPUT ON
   BEGIN
       rdsadmin.rdsadmin_rman_util.validate_tablespace(
           p_tablespace_name     => 'TBS1',
           p_validation_type     => 'PHYSICAL+LOGICAL',
           p_rman_to_dbms_output => TRUE);
       rdsadmin.rdsadmin_rman_util.validate_tablespace(
           p_tablespace_name     => 'TBS2',
           p_validation_type     => 'PHYSICAL+LOGICAL',
           p_rman_to_dbms_output => TRUE);
       rdsadmin.rdsadmin_rman_util.validate_tablespace(
           p_tablespace_name     => 'TBS3',
           p_validation_type     => 'PHYSICAL+LOGICAL',
           p_rman_to_dbms_output => TRUE);
   END;
   /
   ```

1. 테이블스페이스를 읽기/쓰기 모드로 설정합니다.

   ```
   ALTER TABLESPACE TBS1 READ WRITE;
   ALTER TABLESPACE TBS2 READ WRITE;
   ALTER TABLESPACE TBS3 READ WRITE;
   ```

## 6단계: 남은 파일 정리
<a name="oracle-migrating-tts.cleanup"></a>

이 선택적 단계에서는 불필요한 파일을 모두 제거합니다. `rdsadmin.rdsadmin_transport_util.list_xtts_orphan_files` 프로시저를 사용하여 테이블스페이스 가져오기 후 분리된 데이터 파일을 나열한 다음, `rdsadmin.rdsadmin_transport_util.list_xtts_orphan_files` 프로시저를 사용하여 삭제합니다. 이 프로시저의 구문 및 의미는 [테이블스페이스 가져오기 후 분리된 파일 나열](rdsadmin_transport_util_list_xtts_orphan_files.md) 및 [테이블스페이스 가져오기 후 분리된 파일 삭제](rdsadmin_transport_util_cleanup_incomplete_xtts_import.md) 섹션을 참조하세요.

**남은 파일을 정리하는 방법**

1. 다음과 같이 *DATA\$1PUMP\$1DIR*에서 오래된 백업을 제거합니다.

   1. `rdsadmin.rdsadmin_file_util.listdir`을 실행하여 백업 파일을 나열합니다.

      ```
      SELECT * FROM TABLE(rdsadmin.rds_file_util.listdir(p_directory => 'DATA_PUMP_DIR'));
      ```

   1. `UTL_FILE.FREMOVE`를 호출하여 백업을 하나씩 제거합니다.

      ```
      EXEC UTL_FILE.FREMOVE ('DATA_PUMP_DIR', 'backup_filename');
      ```

1. 테이블스페이스를 가져왔지만 테이블스페이스에 대한 메타데이터를 가져오지 않은 경우 다음과 같이 분리된 데이터 파일을 삭제할 수 있습니다.

   1. 삭제해야 하는 분리된 데이터 파일을 나열합니다. 다음 예에서는 `rdsadmin.rdsadmin_transport_util.list_xtts_orphan_files` 프로시저를 호출합니다.

      ```
      SQL> SELECT * FROM TABLE(rdsadmin.rdsadmin_transport_util.list_xtts_orphan_files);
      
      FILENAME       FILESIZE
      -------------- ---------
      datafile_7.dbf 104865792
      datafile_8.dbf 104865792
      ```

   1. `rdsadmin.rdsadmin_transport_util.cleanup_incomplete_xtts_import` 프로시저를 실행하여 분리된 파일을 삭제합니다.

      ```
      BEGIN
        rdsadmin.rdsadmin_transport_util.cleanup_incomplete_xtts_import('DATA_PUMP_DIR');
      END;
      /
      ```

      정리 작업을 수행하면 `BDUMP` 디렉터리에 `rds-xtts-delete_xtts_orphaned_files-YYYY-MM-DD.HH24-MI-SS.FF.log` 이름 형식을 사용하는 로그 파일이 생성됩니다.

   1. 이전 단계에서 생성된 로그 파일을 읽습니다. 다음 예에서는 `rds-xtts-delete_xtts_orphaned_files-2023-06-01.09-33-11.868894000.log` 로그를 읽습니다.

      ```
      SELECT * 
      FROM TABLE(rdsadmin.rds_file_util.read_text_file(
             p_directory => 'BDUMP',
             p_filename  => 'rds-xtts-delete_xtts_orphaned_files-2023-06-01.09-33-11.868894000.log'));
      
      TEXT
      --------------------------------------------------------------------------------
      orphan transported datafile datafile_7.dbf deleted.
      orphan transported datafile datafile_8.dbf deleted.
      ```

1. 테이블스페이스를 가져오고 테이블스페이스에 대한 메타데이터도 가져왔지만 호환성 오류나 기타 Oracle Data Pump 문제가 발생한 경우 부분적으로 전송된 데이터 파일을 다음과 같이 정리하세요.

   1. `DBA_TABLESPACES`를 쿼리하여 부분적으로 전송된 데이터 파일이 포함된 테이블스페이스를 나열합니다.

      ```
      SQL> SELECT TABLESPACE_NAME FROM DBA_TABLESPACES WHERE PLUGGED_IN='YES';
      
      TABLESPACE_NAME
      --------------------------------------------------------------------------------
      TBS_3
      ```

   1. 테이블스페이스와 부분적으로 전송된 데이터 파일을 삭제합니다.

      ```
      DROP TABLESPACE TBS_3 INCLUDING CONTENTS AND DATAFILES;
      ```

# Oracle Data Pump를 사용한 가져오기
<a name="Oracle.Procedural.Importing.DataPump"></a>

Oracle Data Pump는 Oracle 데이터를 덤프 파일로 내보내고 다른 Oracle 데이터베이스로 가져올 수 있는 유틸리티입니다. Oracle Data Pump는 Oracle 내보내기/가져오기 유틸리티를 장기적으로 대체합니다. Oracle Data Pump는 Oracle 데이터베이스에서 Amazon RDS DB 인스턴스로 대량의 데이터를 이동하는 기본적인 방법입니다.

이 섹션의 예에서는 Oracle 데이터베이스로 데이터를 가져오는 한 방법만 설명하지만, Oracle Data Pump는 다른 여러 가져오기 방법을 지원합니다. 자세한 내용은 [Oracle 데이터베이스 설명서](https://docs.oracle.com/en/database/oracle/oracle-database/19/sutil/oracle-data-pump.html#GUID-501A9908-BCC5-434C-8853-9A6096766B5A)를 참조하세요.

이 부분의 예제에서는 `DBMS_DATAPUMP` 패키지를 사용합니다. Oracle Data Pump 명령줄 유틸리티 `impdp` 및 `expdp`를 사용하여 동일한 작업을 수행할 수 있습니다. Oracle 인스턴트 클라이언트를 포함하여 Oracle 클라이언트 설치의 일부로 원격 호스트에 이러한 유틸리티를 설치할 수 있습니다. 자세한 내용을 알아보려면 [Oracle Instant Client를 사용하여 Amazon RDS for Oracle DB 인스턴스에 대해 Data Pump 가져오기 또는 내보내기를 실행하려면 어떻게 해야 합니까?](https://aws.amazon.com/premiumsupport/knowledge-center/rds-oracle-instant-client-datapump/)를 참조하세요.

**Topics**
+ [Oracle Data Pump 개요](#Oracle.Procedural.Importing.DataPump.Overview)
+ [Oracle Data Pump와 Amazon S3 버킷으로 데이터 가져오기](#Oracle.Procedural.Importing.DataPump.S3)
+ [Oracle Data Pump와 데이터베이스 링크로 데이터 가져오기](#Oracle.Procedural.Importing.DataPump.DBLink)

## Oracle Data Pump 개요
<a name="Oracle.Procedural.Importing.DataPump.Overview"></a>

Oracle Data Pump는 다음 구성 요소로 이루어집니다.
+ 명령줄 클라이언트 `expdp` 및 `impdp`
+ `DBMS_DATAPUMP` PL/SQL 패키지
+ `DBMS_METADATA` PL/SQL 패키지

다음 시나리오에 Oracle Data Pump를 사용하면 됩니다.
+ Oracle 데이터베이스(온프레미스 또는 Amazon EC2 인스턴스 중 하나)에서 RDS for Oracle DB 인스턴스로 데이터를 가져옵니다.
+ RDS for Oracle DB 인스턴스에서 Oracle 데이터베이스(온프레미스 또는 Amazon EC2 인스턴스)로 데이터를 가져옵니다.
+ RDS for Oracle DB 인스턴스 간에 데이터를 가져옵니다(예: EC2-Classic에서 VPC로 데이터 마이그레이션).

Oracle Data Pump 유틸리티를 다운로드하려면 Oracle Technology Network 웹사이트의 [Oracle 데이터베이스 소프트웨어 다운로드](http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html)를 참조하세요. Oracle 데이터베이스 버전 간에 마이그레이션할 때 호환성 고려 사항은 [Oracle 데이터베이스 설명서](https://docs.oracle.com/en/database/oracle/oracle-database/19/sutil/oracle-data-pump-overview.html#GUID-BAA3B679-A758-4D55-9820-432D9EB83C68)를 참조하세요.

### Oracle Data Pump 워크플로우
<a name="Oracle.Procedural.Importing.DataPump.Overview.how-it-works"></a>

일반적으로 Oracle Data Pump를 사용하는 단계는 다음과 같습니다.

1. 데이터를 소스 데이터베이스의 덤프 파일로 내보냅니다.

1. 덤프 파일을 대상 RDS for Oracle DB 인스턴스로 업로드합니다. Amazon S3 버킷을 사용하거나 두 데이터베이스 간 데이터베이스 링크를 사용하여 전송할 수 있습니다.

1. 덤프 파일의 데이터를 RDS for Oracle DB 인스턴스로 가져옵니다.

### Oracle Data Pump 모범 사례
<a name="Oracle.Procedural.Importing.DataPump.Overview.best-practices"></a>

Oracle Data Pump를 사용하여 데이터를 RDS for Oracle 인스턴스로 가져오는 경우 다음과 같은 모범 사례를 적용하는 것이 좋습니다.
+ 특정 스키마 및 객체를 가져오려면 `schema` 또는 `table` 모드로 가져오기를 수행하십시오.
+ 가져오는 스키마를 애플리케이션에 필요한 스키마로 제한하십시오.
+ `full` 모드로 가져오거나 시스템 유지관리 구성 요소의 스키마를 가져오지 않습니다.

  RDS for Oracle은 `SYS` 또는 `SYSDBA` 관리 사용자에 대한 액세스를 허용하지 않으므로 이 작업을 수행하면 Oracle 데이터 딕셔너리가 손상되고 데이터베이스 안정성에 영향을 줄 수 있습니다.
+ 대량의 데이터를 로드할 경우 다음을 수행합니다.

  1. 덤프 파일을 대상 RDS for Oracle DB 인스턴스로 전송합니다.

  1. DB 인스턴스의 스냅샷을 만듭니다.

  1. 가져오기를 테스트하여 성공적으로 수행되는지 확인합니다.

  데이터베이스 구성 요소가 무효화된 경우 DB 인스턴스를 삭제하고 DB 스냅샷에서 다시 생성할 수 있습니다. 복원된 DB 인스턴스에는 DB 스냅샷을 가져왔을 때 DB 인스턴스에 준비된 모든 덤프 파일이 포함됩니다.
+ Oracle Data Pump 내보내기 파라미터 `TRANSPORT_TABLESPACES`, `TRANSPORTABLE` 또는 `TRANSPORT_FULL_CHECK`를 사용하여 생성된 덤프 파일을 가져오지 마세요. RDS for Oracle DB 인스턴스는 이러한 덤프 파일 가져오기를 지원하지 않습니다.
+ `SYS`, `SYSTEM`, `RDSADMIN`, `RDSSEC` 및 `RDS_DATAGUARD`에 Oracle 스케줄러 객체가 포함되어 있고 다음 범주에 속하는 덤프 파일은 가져오지 마세요.
  + 작업
  + 프로그램
  + Schedules
  + 체인
  + 규칙
  + 평가 컨텍스트
  + 규칙 세트

  RDS for Oracle DB 인스턴스는 이러한 덤프 파일 가져오기를 지원하지 않습니다.
+ 지원되지 않는 Oracle Scheduler 객체를 제외하려면 Data Pump 내보내기 중에 추가 지시문을 사용합니다. `DBMS_DATAPUMP`를 사용하는 경우 `DBMS_METADATA.START_JOB` 앞에 `METADATA_FILTER`를 추가로 넣을 수 있습니다.

  ```
  DBMS_DATAPUMP.METADATA_FILTER(
    v_hdnl,
    'EXCLUDE_NAME_EXPR',
    q'[IN (SELECT NAME FROM SYS.OBJ$ 
           WHERE TYPE# IN (66,67,74,79,59,62,46) 
           AND OWNER# IN
             (SELECT USER# FROM SYS.USER$ 
              WHERE NAME IN ('RDSADMIN','SYS','SYSTEM','RDS_DATAGUARD','RDSSEC')
              )
          )
    ]',
    'PROCOBJ'
  );
  ```

  `expdp`를 사용하는 경우 다음 예에 표시된 `exclude` 지시문이 포함된 파라미터 파일을 생성합니다. 그런 다음 `PARFILE=parameter_file` 명령과 함께 `expdp`을 사용합니다.

  ```
  exclude=procobj:"IN 
    (SELECT NAME FROM sys.OBJ$
     WHERE TYPE# IN (66,67,74,79,59,62,46) 
     AND OWNER# IN 
       (SELECT USER# FROM SYS.USER$ 
        WHERE NAME IN ('RDSADMIN','SYS','SYSTEM','RDS_DATAGUARD','RDSSEC')
       )
    )"
  ```

## Oracle Data Pump와 Amazon S3 버킷으로 데이터 가져오기
<a name="Oracle.Procedural.Importing.DataPump.S3"></a>

다음 가져오기 프로세스에서는 Oracle Data Pump와 Amazon S3 버킷을 사용합니다. 단계는 다음과 같습니다.

1. Oracle [DBMS\$1DATAPUMP](https://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/DBMS_DATAPUMP.html) 패키지를 사용한 소스 데이터베이스의 데이터를 내보냅니다.

1. 덤프 파일을 Amazon S3 버킷에 저장합니다.

1. 덤프 파일을 Amazon S3 버킷에서 대상 RDS for Oracle DB 인스턴스의 `DATA_PUMP_DIR` 디렉터리로 다운로드합니다.

1. `DBMS_DATAPUMP` 패키지를 사용하여 복사된 덤프 파일의 데이터를 RDS for Oracle DB 인스턴스로 가져옵니다.

**Topics**
+ [Oracle Data Pump와 Amazon S3 버킷으로 데이터를 가져오기 위한 요건](#Oracle.Procedural.Importing.DataPumpS3.requirements)
+ [1단계: RDS for Oracle 대상 DB 인스턴스의 데이터베이스 사용자에게 권한 부여](#Oracle.Procedural.Importing.DataPumpS3.Step1)
+ [2단계: DBMS\$1DATAPUMP를 사용하여 데이터를 덤프 파일로 내보내기](#Oracle.Procedural.Importing.DataPumpS3.Step2)
+ [3단계: 덤프 파일을 Amazon S3 버킷에 업로드](#Oracle.Procedural.Importing.DataPumpS3.Step3)
+ [4단계: Amazon S3 버킷에서 대상 DB 인스턴스로 덤프 파일 다운로드](#Oracle.Procedural.Importing.DataPumpS3.Step4)
+ [5단계: DBMS\$1DATAPUMP를 사용하여 덤프 파일을 대상 DB 인스턴스로 가져오기](#Oracle.Procedural.Importing.DataPumpS3.Step5)
+ [6단계: 정리](#Oracle.Procedural.Importing.DataPumpS3.Step6)

### Oracle Data Pump와 Amazon S3 버킷으로 데이터를 가져오기 위한 요건
<a name="Oracle.Procedural.Importing.DataPumpS3.requirements"></a>

이 프로세스를 수행하려면 다음 요구 사항이 충족되어야 합니다.
+ 파일 전송에 Amazon S3 버킷을 사용할 수 있고 Amazon S3 버킷이 DB 인스턴스와 동일한 AWS 리전에 있어야 합니다. 지침을 보려면 *Amazon Simple Storage Service 시작 안내서*에서 [버킷 생성](https://docs.aws.amazon.com/AmazonS3/latest/userguide/CreatingABucket.html)을 참조하세요.
+ Amazon S3 버킷에 업로드하는 객체는 5TB 이하여야 합니다. Amazon S3의 객체 작업에 대한 자세한 내용은 [Amazon Simple Storage Service 사용 설명서](https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingObjects.html)를 참조하세요.
**참고**  
덤프 파일이 5TB를 초과하면 병렬 옵션을 사용하여 Oracle Data Pump 내보내기를 실행할 수 있습니다. 이 작업은 개별 파일에 대해 5TB 제한을 초과하지 않도록 데이터를 여러 덤프 파일로 분산합니다.
+ [Amazon S3와 RDS for Oracle 통합을 위한 IAM 권한 구성](oracle-s3-integration.preparing.md)의 지침에 따라 Amazon RDS 통합을 위한 Amazon S3 버킷을 준비해야 합니다.
+ 원본 인스턴스 및 대상 DB 인스턴스에 덤프 파일을 저장할 수 있는 충분한 스토리지 공간이 있는지 확인해야 합니다.

**참고**  
이 프로세스는 덤프 파일을 모든 Oracle DB 인스턴스의 사전 구성된 디렉터리인 `DATA_PUMP_DIR` 디렉터리로 가져옵니다. 이 디렉터리는 데이터 파일과 동일한 스토리지 볼륨에 위치합니다. 덤프 파일을 가져올 때 기존 Oracle 데이터 파일은 더 많은 공간을 사용합니다. 따라서 DB 인스턴스가 공간의 추가 사용을 수용할 수 있는지 확인해야 합니다. 가져온 덤프 파일은 자동으로 삭제되거나 `DATA_PUMP_DIR` 디렉터리에서 제거됩니다. 가져온 덤프 파일을 제거하려면 Oracle 웹사이트에 있는 [UTL\$1FILE.FREMOVE](https://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/UTL_FILE.html#GUID-09B09C2A-2C21-4F70-BF04-D0EEA7B59CAF)를 사용하십시오.

### 1단계: RDS for Oracle 대상 DB 인스턴스의 데이터베이스 사용자에게 권한 부여
<a name="Oracle.Procedural.Importing.DataPumpS3.Step1"></a>

이 단계에서는 데이터를 가져올 스키마를 생성하고 사용자에게 필요한 권한을 부여합니다.

**사용자를 생성하고 RDS for Oracle 대상 인스턴스에 필요한 권한을 부여하는 방법**

1. SQL\$1Plus 또는 Oracle SQL Developer를 사용하여 데이터를 가져올 RDS for Oracle DB 인스턴스에 마스터 사용자로 로그인합니다. DB 인스턴스 연결에 대한 정보는 [Oracle DB 인스턴스에 연결](USER_ConnectToOracleInstance.md) 섹션을 참조하세요.

1. 데이터를 가져오려면 먼저 테이블 스페이스를 생성해야 합니다. 자세한 내용은 [RDS for Oracle에서 테이블스페이스 생성 및 크기 조정](Appendix.Oracle.CommonDBATasks.TablespacesAndDatafiles.md#Appendix.Oracle.CommonDBATasks.CreatingTablespacesAndDatafiles)을 참조하세요.

1. 사용자 계정을 생성하고 데이터를 가져올 사용자 계정이 없는 경우 필요한 권한 및 역할을 부여합니다. 데이터를 다수의 사용자 스키마로 가져오려는 경우에는 사용자 계정을 각각 생성한 후에 필요한 권한과 역할을 부여합니다.

   예를 들어 다음 SQL 문은 새로운 사용자를 생성하고 해당 사용자가 소유한 스키마에 데이터를 가져오는 데 필요한 권한과 역할을 부여합니다. 다음 단계에서 `schema_1`을 이 단계의 스키마 이름으로 대체합니다.

   ```
   CREATE USER schema_1 IDENTIFIED BY my_password;
   GRANT CREATE SESSION, RESOURCE TO schema_1;
   ALTER USER schema_1 QUOTA 100M ON users;
   ```
**참고**  
보안 모범 사례로 여기에 표시된 프롬프트 이외의 암호를 지정하는 것이 좋습니다.

   위 문은 새로운 사용자에게 `CREATE SESSION` 권한과 `RESOURCE` 역할을 부여합니다. 어떤 데이터베이스 객체를 가져오느냐에 따라 권한과 역할이 추가로 필요할 수 있습니다.

### 2단계: DBMS\$1DATAPUMP를 사용하여 데이터를 덤프 파일로 내보내기
<a name="Oracle.Procedural.Importing.DataPumpS3.Step2"></a>

덤프 파일을 만들려면 `DBMS_DATAPUMP` 패키지를 사용합니다.

**Oracle 데이터를 덤프 파일로 내보내는 방법**

1. SQL Plus 또는 Oracle SQL Developer를 사용하여 관리 사용자 권한으로 소스 RDS for Oracle DB 인스턴스에 연결합니다. 소스 데이터베이스가 RDS for Oracle DB 인스턴스인 경우 Amazon RDS 마스터 사용자 권한으로 연결합니다.

1. `DBMS_DATAPUMP` 프로시저를 호출하여 데이터를 내보냅니다.

   다음 스크립트는 `SCHEMA_1` 스키마를 `DATA_PUMP_DIR` 디렉터리에 있는 `sample.dmp` 덤프 파일로 내보냅니다. `SCHEMA_1`을 내보내려는 스키마 이름으로 바꿉니다.

   ```
   DECLARE
     v_hdnl NUMBER;
   BEGIN
     v_hdnl := DBMS_DATAPUMP.OPEN(
       operation => 'EXPORT', 
       job_mode  => 'SCHEMA', 
       job_name  => null
     );
     DBMS_DATAPUMP.ADD_FILE( 
       handle    => v_hdnl         , 
       filename  => 'sample.dmp'   , 
       directory => 'DATA_PUMP_DIR', 
       filetype  => dbms_datapump.ku$_file_type_dump_file
     );
     DBMS_DATAPUMP.ADD_FILE( 
       handle    => v_hdnl, 
       filename  => 'sample_exp.log', 
       directory => 'DATA_PUMP_DIR' , 
       filetype  => dbms_datapump.ku$_file_type_log_file
     );
     DBMS_DATAPUMP.METADATA_FILTER(v_hdnl,'SCHEMA_EXPR','IN (''SCHEMA_1'')');
     DBMS_DATAPUMP.METADATA_FILTER(
       v_hdnl,
       'EXCLUDE_NAME_EXPR',
       q'[IN (SELECT NAME FROM SYS.OBJ$ 
              WHERE TYPE# IN (66,67,74,79,59,62,46) 
              AND OWNER# IN 
                (SELECT USER# FROM SYS.USER$ 
                 WHERE NAME IN ('RDSADMIN','SYS','SYSTEM','RDS_DATAGUARD','RDSSEC')
                )
             )
       ]',
       'PROCOBJ'
     );
     DBMS_DATAPUMP.START_JOB(v_hdnl);
   END;
   /
   ```
**참고**  
Data Pump는 작업을 비동기적으로 시작합니다. Data Pump 작업 모니터링에 대한 자세한 내용은 Oracle 설명서의 [Monitoring Job Status](https://docs.oracle.com/en/database/oracle/oracle-database/19/sutil/oracle-data-pump-overview.html#GUID-E365D74E-12CD-495C-BA23-5A55F679C7E7)를 참조하세요.

1. (선택 사항) `rdsadmin.rds_file_util.read_text_file` 프로시저를 호출하여 내보내기 로그의 내용을 확인할 수 있습니다. 자세한 내용은 [DB 인스턴스 디렉터리의 파일 목록 읽기](Appendix.Oracle.CommonDBATasks.Misc.md#Appendix.Oracle.CommonDBATasks.ReadingFiles)을 참조하세요.

### 3단계: 덤프 파일을 Amazon S3 버킷에 업로드
<a name="Oracle.Procedural.Importing.DataPumpS3.Step3"></a>

Amazon RDS 프로시저 `rdsadmin.rdsadmin_s3_tasks.upload_to_s3`를 사용하여 덤프 파일을 Amazon S3 버킷에 업로드합니다. 다음 예제에서는 `DATA_PUMP_DIR` 디렉터리에서 모든 파일을 `amzn-s3-demo-bucket`이라는 이름의 Amazon S3 버킷에 업로드합니다.

```
SELECT rdsadmin.rdsadmin_s3_tasks.upload_to_s3(
  p_bucket_name    =>  'amzn-s3-demo-bucket',       
  p_directory_name =>  'DATA_PUMP_DIR') 
AS TASK_ID FROM DUAL;
```

`SELECT` 문은 `VARCHAR2` 데이터 형식으로 작업 ID를 반환합니다. 자세한 내용은 [RDS for Oracle DB 인스턴스에서 Amazon S3 버킷으로 파일 업로드](oracle-s3-integration.using.md#oracle-s3-integration.using.upload)을 참조하세요.

### 4단계: Amazon S3 버킷에서 대상 DB 인스턴스로 덤프 파일 다운로드
<a name="Oracle.Procedural.Importing.DataPumpS3.Step4"></a>

Amazon RDS `rdsadmin.rdsadmin_s3_tasks.download_from_s3` 프로시저를 사용하여 단계를 수행합니다. 디렉터리에 파일을 다운로드할 때 동일한 이름의 파일이 디렉터리에 이미 있는 경우, 이 `download_from_s3` 프로시저는 다운로드를 건너뜁니다. 다운로드 디렉터리에서 파일을 제거하려면 Oracle 웹사이트에 있는 [UTL\$1FILE.FREMOVE](https://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/UTL_FILE.html#GUID-09B09C2A-2C21-4F70-BF04-D0EEA7B59CAF)를 사용하세요.

**덤프 파일을 다운로드하는 방법**

1. SQL\$1Plus 또는 Oracle SQL Developer를 시작하여 Amazon RDS 대상 Oracle DB 인스턴스에서 마스터로 로그인합니다.

1. Amazon RDS `rdsadmin.rdsadmin_s3_tasks.download_from_s3` 프로시저를 사용하여 덤프 파일을 다운로드합니다.

   다음 예에서는 `amzn-s3-demo-bucket`이라는 이름의 Amazon S3 버킷에서 모든 파일을 `DATA_PUMP_DIR` 디렉터리로 다운로드합니다.

   ```
   SELECT rdsadmin.rdsadmin_s3_tasks.download_from_s3(
     p_bucket_name    =>  'amzn-s3-demo-bucket',
     p_directory_name =>  'DATA_PUMP_DIR')
   AS TASK_ID FROM DUAL;
   ```

   `SELECT` 문은 `VARCHAR2` 데이터 형식으로 작업 ID를 반환합니다. 자세한 내용은 [Amazon S3 버킷의 파일을 Oracle DB 인스턴스로 다운로드](oracle-s3-integration.using.md#oracle-s3-integration.using.download)을 참조하세요.

### 5단계: DBMS\$1DATAPUMP를 사용하여 덤프 파일을 대상 DB 인스턴스로 가져오기
<a name="Oracle.Procedural.Importing.DataPumpS3.Step5"></a>

`DBMS_DATAPUMP`를 사용하여 스키마를 RDS for Oracle DB 인스턴스로 가져옵니다. `METADATA_REMAP`과 같은 추가 옵션이 필요할 수 있습니다.

**대상 DB 인스턴스로 데이터를 가져오는 방법**

1. SQL\$1Plus 또는 SQL Developer를 시작하여 마스터 사용자로 RDS for Oracle DB 인스턴스에 로그인합니다.

1. `DBMS_DATAPUMP` 프로시저를 직접 호출하여 데이터를 가져옵니다.

   다음 예에서는 `sample_copied.dmp`에서 대상 DB 인스턴스로 *SCHEMA\$11* 데이터를 가져옵니다.

   ```
   DECLARE
     v_hdnl NUMBER;
   BEGIN
     v_hdnl := DBMS_DATAPUMP.OPEN( 
       operation => 'IMPORT', 
       job_mode  => 'SCHEMA', 
       job_name  => null);
     DBMS_DATAPUMP.ADD_FILE( 
       handle    => v_hdnl, 
       filename  => 'sample_copied.dmp', 
       directory => 'DATA_PUMP_DIR', 
       filetype  => dbms_datapump.ku$_file_type_dump_file);
     DBMS_DATAPUMP.ADD_FILE( 
       handle    => v_hdnl, 
       filename  => 'sample_imp.log', 
       directory => 'DATA_PUMP_DIR', 
       filetype  => dbms_datapump.ku$_file_type_log_file);
     DBMS_DATAPUMP.METADATA_FILTER(v_hdnl,'SCHEMA_EXPR','IN (''SCHEMA_1'')');
     DBMS_DATAPUMP.START_JOB(v_hdnl);
   END;
   /
   ```
**참고**  
Data Pump 작업은 비동기로 시작됩니다. Data Pump 작업 모니터링에 대한 자세한 정보는 Oracle 설명서의 [Monitoring Job Status](https://docs.oracle.com/en/database/oracle/oracle-database/19/sutil/oracle-data-pump-overview.html#GUID-E365D74E-12CD-495C-BA23-5A55F679C7E7)를 참조하십시오. `rdsadmin.rds_file_util.read_text_file` 절차를 사용하여 가져오기 로그의 내용을 볼 수 있습니다. 자세한 내용은 [DB 인스턴스 디렉터리의 파일 목록 읽기](Appendix.Oracle.CommonDBATasks.Misc.md#Appendix.Oracle.CommonDBATasks.ReadingFiles)을 참조하세요.

1. 대상 DB 인스턴스의 스키마 테이블을 나열하여 데이터 가져오기 작업을 확인합니다.

   예를 들어 다음 쿼리는 `SCHEMA_1`의 테이블 수를 반환합니다.

   ```
   SELECT COUNT(*) FROM DBA_TABLES WHERE OWNER='SCHEMA_1';
   ```

### 6단계: 정리
<a name="Oracle.Procedural.Importing.DataPumpS3.Step6"></a>

데이터를 가져온 후에는 유지하지 않을 파일을 삭제할 수 있습니다.

**불필요한 파일을 제거하는 방법**

1. SQL\$1Plus 또는 SQL Developer를 시작하여 마스터 사용자로 RDS for Oracle DB 인스턴스에 로그인합니다.

1. 다음 명령을 사용하여 `DATA_PUMP_DIR`의 파일을 나열합니다.

   ```
   SELECT * FROM TABLE(rdsadmin.rds_file_util.listdir('DATA_PUMP_DIR')) ORDER BY MTIME;
   ```

1. 다음 명령을 사용하여 `DATA_PUMP_DIR`에서 더 이상 필요하지 않은 파일을 삭제합니다.

   ```
   EXEC UTL_FILE.FREMOVE('DATA_PUMP_DIR','filename');
   ```

   예를 들어, 다음 명령은 `sample_copied.dmp`라는 파일을 삭제합니다.

   ```
   EXEC UTL_FILE.FREMOVE('DATA_PUMP_DIR','sample_copied.dmp'); 
   ```

## Oracle Data Pump와 데이터베이스 링크로 데이터 가져오기
<a name="Oracle.Procedural.Importing.DataPump.DBLink"></a>

다음 가져오기 프로세스에서는 Oracle Data Pump 및 Oracle [DBMS\$1FILE\$1TRANSFER](https://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/DBMS_FILE_TRANSFER.html) 패키지를 사용합니다. 단계는 다음과 같습니다.

1. 소스 Oracle 데이터베이스(온프레미스 데이터베이스, Amazon EC2 인스턴스 또는 RDS for Oracle DB 인스턴스 등)에 연결합니다.

1. [DBMS\$1DATAPUMP](https://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/DBMS_DATAPUMP.html) 패키지를 사용하여 데이터를 내보냅니다.

1. `DBMS_FILE_TRANSFER.PUT_FILE`을 사용하여 데이터베이스 링크를 통해 연결된 대상 RDS for Oracle DB 인스턴스의 `DATA_PUMP_DIR` 디렉터리에 Oracle 데이터베이스의 덤프 파일을 복사합니다.

1. ` DBMS_DATAPUMP` 패키지를 사용하여 복사된 덤프 파일의 데이터를 RDS for Oracle DB 인스턴스로 가져옵니다.

Oracle Data Pump 및 `DBMS_FILE_TRANSFER` 패키지를 사용하는 가져오기 프로세스는 다음 단계로 이루어집니다.

**Topics**
+ [Oracle Data Pump와 데이터베이스 링크로 데이터를 가져오기 위한 요건](#Oracle.Procedural.Importing.DataPumpDBLink.requirements)
+ [1단계: RDS for Oracle 대상 DB 인스턴스 사용자에게 권한 부여](#Oracle.Procedural.Importing.DataPumpDBLink.Step1)
+ [2단계: 소스 데이터베이스에서 사용자에게 권한 부여](#Oracle.Procedural.Importing.DataPumpDBLink.Step2)
+ [3단계: DBMS\$1DATAPUMP를 사용하여 덤프 파일 생성](#Oracle.Procedural.Importing.DataPumpDBLink.Step3)
+ [4단계: 대상 DB 인스턴스의 데이터베이스 링크 생성](#Oracle.Procedural.Importing.DataPumpDBLink.Step4)
+ [5단계: DBMS\$1FILE\$1TRANSFER를 사용하여 내보낸 덤프 파일을 대상 DB 인스턴스로 복사](#Oracle.Procedural.Importing.DataPumpDBLink.Step5)
+ [6단계: DBMS\$1DATAPUMP를 사용하여 대상 DB 인스턴스로 데이터 파일 가져오기](#Oracle.Procedural.Importing.DataPumpDBLink.Step6)
+ [7단계: 정리](#Oracle.Procedural.Importing.DataPumpDBLink.Step7)

### Oracle Data Pump와 데이터베이스 링크로 데이터를 가져오기 위한 요건
<a name="Oracle.Procedural.Importing.DataPumpDBLink.requirements"></a>

이 프로세스를 수행하려면 다음 요구 사항이 충족되어야 합니다.
+ `DBMS_FILE_TRANSFER` 및 `DBMS_DATAPUMP` 패키지에 대한 실행 권한이 있어야 합니다.
+ 원본 DB 인스턴스의 `DATA_PUMP_DIR` 디렉터리에 대한 쓰기 권한이 있어야 합니다.
+ 원본 인스턴스 및 대상 DB 인스턴스에 덤프 파일을 저장할 수 있는 충분한 스토리지 공간이 있는지 확인해야 합니다.

**참고**  
이 프로세스는 덤프 파일을 모든 Oracle DB 인스턴스의 사전 구성된 디렉터리인 `DATA_PUMP_DIR` 디렉터리로 가져옵니다. 이 디렉터리는 데이터 파일과 동일한 스토리지 볼륨에 위치합니다. 덤프 파일을 가져올 때 기존 Oracle 데이터 파일은 더 많은 공간을 사용합니다. 따라서 DB 인스턴스가 공간의 추가 사용을 수용할 수 있는지 확인해야 합니다. 가져온 덤프 파일은 자동으로 삭제되거나 `DATA_PUMP_DIR` 디렉터리에서 제거됩니다. 가져온 덤프 파일을 제거하려면 Oracle 웹사이트에 있는 [UTL\$1FILE.FREMOVE](https://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/UTL_FILE.html#GUID-09B09C2A-2C21-4F70-BF04-D0EEA7B59CAF)를 사용하십시오.

### 1단계: RDS for Oracle 대상 DB 인스턴스 사용자에게 권한 부여
<a name="Oracle.Procedural.Importing.DataPumpDBLink.Step1"></a>

RDS for Oracle 대상 DB 인스턴스에서 사용자에게 권한을 부여하려면 다음 단계를 수행합니다.

1. SQL Plus 또는 Oracle SQL Developer를 사용하여 데이터를 가져올 RDS for Oracle DB 인스턴스에 연결합니다. Amazon RDS 마스터 사용자 권한으로 연결합니다. DB 인스턴스 연결에 대한 자세한 정보는 [Oracle DB 인스턴스에 연결](USER_ConnectToOracleInstance.md) 단원을 참조하십시오.

1. 데이터를 가져오려면 먼저 테이블 스페이스를 생성해야 합니다. 자세한 내용은 [RDS for Oracle에서 테이블스페이스 생성 및 크기 조정](Appendix.Oracle.CommonDBATasks.TablespacesAndDatafiles.md#Appendix.Oracle.CommonDBATasks.CreatingTablespacesAndDatafiles) 섹션을 참조하세요.

1. 데이터를 가져올 사용자 계정이 존재하지 않으면 사용자 계정을 생성한 후 필요한 권한과 역할을 부여합니다. 데이터를 다수의 사용자 스키마로 가져오려는 경우에는 사용자 계정을 각각 생성한 후에 필요한 권한과 역할을 부여합니다.

   예를 들어 다음 명령은 *schema\$11*이라는 신규 사용자를 생성하고, 해당 사용자의 스키마로 데이터를 가져오는 데 필요한 권한과 역할을 부여합니다.

   ```
   CREATE USER schema_1 IDENTIFIED BY my-password;
   GRANT CREATE SESSION, RESOURCE TO schema_1;
   ALTER USER schema_1 QUOTA 100M ON users;
   ```
**참고**  
보안 모범 사례로 여기에 표시된 프롬프트 이외의 암호를 지정하는 것이 좋습니다.

   앞선 예에서는 새로운 사용자에게 `CREATE SESSION` 권한과 `RESOURCE` 역할을 부여합니다. 하지만 가져오는 데이터베이스 객체에 따라 권한과 역할이 추가로 필요할 수도 있습니다.
**참고**  
다음 단계에서 `schema_1`을 이 단계의 스키마 이름으로 대체합니다.

### 2단계: 소스 데이터베이스에서 사용자에게 권한 부여
<a name="Oracle.Procedural.Importing.DataPumpDBLink.Step2"></a>

SQL\$1Plus 또는 Oracle SQL Developer를 사용하여 가져올 데이터를 포함하는 RDS for Oracle DB 인스턴스에 연결합니다. 필요할 경우 사용자 계정을 생성하고 필요한 권한을 부여합니다.

**참고**  
원본 데이터베이스가 Amazon RDS 인스턴스인 경우 이 단계를 건너뛸 수 있습니다. 이 경우 Amazon RDS 마스터 사용자 계정을 사용하여 데이터를 내보냅니다.

다음 명령은 새 사용자를 생성하고 필요한 권한을 부여합니다.

```
CREATE USER export_user IDENTIFIED BY my-password;
GRANT CREATE SESSION, CREATE TABLE, CREATE DATABASE LINK TO export_user;
ALTER USER export_user QUOTA 100M ON users;
GRANT READ, WRITE ON DIRECTORY data_pump_dir TO export_user;
GRANT SELECT_CATALOG_ROLE TO export_user;
GRANT EXECUTE ON DBMS_DATAPUMP TO export_user;
GRANT EXECUTE ON DBMS_FILE_TRANSFER TO export_user;
```

**참고**  
보안 모범 사례로 여기에 표시된 프롬프트 이외의 암호를 지정하는 것이 좋습니다.

### 3단계: DBMS\$1DATAPUMP를 사용하여 덤프 파일 생성
<a name="Oracle.Procedural.Importing.DataPumpDBLink.Step3"></a>

덤프 파일을 만들려면 다음을 수행합니다.

1. SQL\$1Plus 또는 Oracle SQL Developer를 통해 관리 사용자 권한으로, 또는 2단계에서 생성한 사용자 권한으로 소스 Oracle 인스턴스에 연결합니다. 소스 데이터베이스가 Amazon RDS for Oracle DB 인스턴스인 경우 Amazon RDS 마스터 사용자 권한으로 연결합니다.

1. Oracle Data Pump 유틸리티를 사용하여 덤프 파일을 생성합니다.

   다음 스크립트는 `DATA_PUMP_DIR` 디렉터리에 *sample.dmp*라는 덤프 파일을 생성합니다.

   ```
   DECLARE
     v_hdnl NUMBER;
   BEGIN
     v_hdnl := DBMS_DATAPUMP.OPEN( 
       operation => 'EXPORT' , 
       job_mode  => 'SCHEMA' , 
       job_name  => null
     );
     DBMS_DATAPUMP.ADD_FILE( 
       handle    => v_hdnl, 
       filename  => 'sample.dmp'    , 
       directory => 'DATA_PUMP_DIR' , 
       filetype  => dbms_datapump.ku$_file_type_dump_file
     );
     DBMS_DATAPUMP.ADD_FILE( 
       handle    => v_hdnl           , 
       filename  => 'sample_exp.log' , 
       directory => 'DATA_PUMP_DIR'  , 
       filetype  => dbms_datapump.ku$_file_type_log_file
     );
     DBMS_DATAPUMP.METADATA_FILTER(
       v_hdnl              ,
       'SCHEMA_EXPR'       ,
       'IN (''SCHEMA_1'')'
     );
     DBMS_DATAPUMP.METADATA_FILTER(
       v_hdnl,
       'EXCLUDE_NAME_EXPR',
       q'[IN (SELECT NAME FROM sys.OBJ$ 
              WHERE TYPE# IN (66,67,74,79,59,62,46) 
              AND OWNER# IN 
                (SELECT USER# FROM SYS.USER$ 
                 WHERE NAME IN ('RDSADMIN','SYS','SYSTEM','RDS_DATAGUARD','RDSSEC')
                )
             )
       ]',
       'PROCOBJ'
     );
     DBMS_DATAPUMP.START_JOB(v_hdnl);
   END;
   /
   ```
**참고**  
Data Pump 작업은 비동기로 시작됩니다. Data Pump 작업 모니터링에 대한 자세한 정보는 Oracle 설명서의 [Monitoring Job Status](https://docs.oracle.com/en/database/oracle/oracle-database/19/sutil/oracle-data-pump-overview.html#GUID-E365D74E-12CD-495C-BA23-5A55F679C7E7)를 참조하십시오. `rdsadmin.rds_file_util.read_text_file` 절차를 사용하여 내보내기 로그의 내용을 볼 수 있습니다. 자세한 내용은 [DB 인스턴스 디렉터리의 파일 목록 읽기](Appendix.Oracle.CommonDBATasks.Misc.md#Appendix.Oracle.CommonDBATasks.ReadingFiles) 섹션을 참조하세요.

### 4단계: 대상 DB 인스턴스의 데이터베이스 링크 생성
<a name="Oracle.Procedural.Importing.DataPumpDBLink.Step4"></a>

소스 DB 인스턴스와 대상 DB 인스턴스 간에 데이터베이스 링크를 생성합니다. 데이터베이스 링크를 생성하고 내보내기 덤프 파일을 전송하려면 로컬 Oracle 인스턴스가 DB 인스턴스와 네트워크로 연결되어 있어야 합니다.

이번 단계에서도 이전 단계와 동일한 사용자 계정에 연결합니다.

동일한 VPC 또는 피어링된 VPC 내에서 두 DB 인스턴스 간에 데이터베이스 링크를 생성하려면 두 DB 인스턴스에 서로에게 이르는 유효한 경로가 있어야 합니다. 각 DB 인스턴스의 보안 그룹은 다른 DB 인스턴스로(부터)의 수신 및 발신을 허용해야 합니다. 보안 그룹 인바운드 또는 아웃바운드 규칙은 동일한 VPC 또는 피어링된 VPC에서 보안 그룹을 참조할 수 있습니다. 자세한 내용은 [VPC의 DB 인스턴스에 사용하기 위한 데이터베이스 링크 조정](Appendix.Oracle.CommonDBATasks.DBLinks.md) 섹션을 참조하세요.

다음 명령은 대상 DB 인스턴스의 Amazon RDS 마스터 사용자에게 연결하는 `to_rds`라는 데이터베이스 링크를 생성합니다.

```
CREATE DATABASE LINK to_rds 
  CONNECT TO <master_user_account> IDENTIFIED BY <password>
  USING '(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=<dns or ip address of remote db>)
         (PORT=<listener port>))(CONNECT_DATA=(SID=<remote SID>)))';
```

### 5단계: DBMS\$1FILE\$1TRANSFER를 사용하여 내보낸 덤프 파일을 대상 DB 인스턴스로 복사
<a name="Oracle.Procedural.Importing.DataPumpDBLink.Step5"></a>

`DBMS_FILE_TRANSFER`를 사용하여 원본 데이터베이스의 덤프 파일을 대상 DB 인스턴스로 복사합니다. 다음 스크립트는 원본 인스턴스에 있는 sample.dmp라는 덤프 파일을 *to\$1rds*(이전 단계에서 생성됨)라는 대상 데이터베이스 링크로 복사합니다.

```
BEGIN
  DBMS_FILE_TRANSFER.PUT_FILE(
    source_directory_object       => 'DATA_PUMP_DIR',
    source_file_name              => 'sample.dmp',
    destination_directory_object  => 'DATA_PUMP_DIR',
    destination_file_name         => 'sample_copied.dmp', 
    destination_database          => 'to_rds' );
END;
/
```

### 6단계: DBMS\$1DATAPUMP를 사용하여 대상 DB 인스턴스로 데이터 파일 가져오기
<a name="Oracle.Procedural.Importing.DataPumpDBLink.Step6"></a>

DB 인스턴스에서 Oracle Data Pump를 사용하여 스키마를 가져옵니다. METADATA\$1REMAP 등 추가 옵션이 필요할 수 있습니다.

 Amazon RDS 마스터 사용자 계정으로 DB 인스턴스에 연결하여 데이터를 가져옵니다.

```
DECLARE
  v_hdnl NUMBER;
BEGIN
  v_hdnl := DBMS_DATAPUMP.OPEN( 
    operation => 'IMPORT', 
    job_mode  => 'SCHEMA', 
    job_name  => null);
  DBMS_DATAPUMP.ADD_FILE( 
    handle    => v_hdnl, 
    filename  => 'sample_copied.dmp',
    directory => 'DATA_PUMP_DIR', 
    filetype  => dbms_datapump.ku$_file_type_dump_file );
  DBMS_DATAPUMP.ADD_FILE( 
    handle    => v_hdnl, 
    filename  => 'sample_imp.log', 
    directory => 'DATA_PUMP_DIR', 
    filetype  => dbms_datapump.ku$_file_type_log_file);
  DBMS_DATAPUMP.METADATA_FILTER(v_hdnl,'SCHEMA_EXPR','IN (''SCHEMA_1'')');
  DBMS_DATAPUMP.START_JOB(v_hdnl);
END;
/
```

**참고**  
Data Pump 작업은 비동기로 시작됩니다. Data Pump 작업 모니터링에 대한 자세한 정보는 Oracle 설명서의 [Monitoring Job Status](https://docs.oracle.com/en/database/oracle/oracle-database/19/sutil/oracle-data-pump-overview.html#GUID-E365D74E-12CD-495C-BA23-5A55F679C7E7)를 참조하십시오. `rdsadmin.rds_file_util.read_text_file` 절차를 사용하여 가져오기 로그의 내용을 볼 수 있습니다. 자세한 내용은 [DB 인스턴스 디렉터리의 파일 목록 읽기](Appendix.Oracle.CommonDBATasks.Misc.md#Appendix.Oracle.CommonDBATasks.ReadingFiles) 섹션을 참조하세요.

DB 인스턴스에서 해당 사용자의 테이블을 보고 데이터 가져오기를 확인할 수 있습니다. 예를 들어 다음 쿼리는 `schema_1`의 테이블 수를 반환합니다.

```
SELECT COUNT(*) FROM DBA_TABLES WHERE OWNER='SCHEMA_1'; 
```

### 7단계: 정리
<a name="Oracle.Procedural.Importing.DataPumpDBLink.Step7"></a>

데이터를 가져온 후에는 유지하지 않을 파일을 삭제할 수 있습니다. 다음 명령을 사용하여 `DATA_PUMP_DIR`의 파일을 나열할 수 있습니다.

```
SELECT * FROM TABLE(rdsadmin.rds_file_util.listdir('DATA_PUMP_DIR')) ORDER BY MTIME;
```

`DATA_PUMP_DIR`에서 더 이상 필요하지 않은 파일을 삭제하려면 다음 명령을 사용합니다.

```
EXEC UTL_FILE.FREMOVE('DATA_PUMP_DIR','<file name>');
```

예를 들어, 다음 명령은 `"sample_copied.dmp"`라는 파일을 삭제합니다.

```
EXEC UTL_FILE.FREMOVE('DATA_PUMP_DIR','sample_copied.dmp'); 
```

# Oracle 내보내기/가져오기를 통해 가져오기
<a name="Oracle.Procedural.Importing.ExportImport"></a>

다음 조건에서는 Oracle 내보내기/가져오기 유틸리티를 마이그레이션에 사용하는 것이 효과적일 수도 있습니다.
+ 데이터 크기가 작습니다.
+ 이진 플로트 및 더블과 같은 데이터 유형은 필요하지 않습니다.

가져오기 프로세스는 필요한 스키마 객체를 생성합니다. 따라서 객체를 생성하기 위해 스크립트를 먼저 실행할 필요가 없습니다.

내보내기 및 가져오기 유틸리티로 Oracle Instant Client를 설치하기 위한 가장 쉬운 방법은 Oracle을 설치하는 것입니다. 소프트웨어를 다운로드하려면 [https://www.oracle.com/database/technologies/instant-client.html](https://www.oracle.com/database/technologies/instant-client.html)을 방문하세요. 설명서를 보려면 *Oracle Database 유틸리티* 설명서의 [SQL\$1Loader, 내보내기, 가져오기를 위한 Instant Client](https://docs.oracle.com/en/database/oracle/oracle-database/21/sutil/instant-client-sql-loader-export-import.html#GUID-FF1B6F75-09F5-4911-9317-9776FAD15965)를 참조하세요.

**테이블을 내보낸 다음 가져오기**

1. `exp` 명령을 사용하여 소스 데이터베이스에서 테이블을 내보냅니다.

   다음 명령은 `tab1`, `tab2` 및 `tab3`이라는 테이블을 내보냅니다. 덤프 파일은 `exp_file.dmp`입니다.

   ```
   exp cust_dba@ORCL FILE=exp_file.dmp TABLES=(tab1,tab2,tab3) LOG=exp_file.log
   ```

   내보내기 프로세스에서는 지정된 테이블에 대한 스키마 및 데이터를 모두 포함하는 이진 덤프 파일을 생성합니다.

1. 이제 `imp` 명령을 사용하여 이 스키마와 데이터를 대상 데이터베이스로 가져옵니다.

   다음 명령을 실행하면 덤프 파일 `exp_file.dmp`에서 `tab1`, `tab2`, `tab3` 테이블을 가져옵니다.

   ```
   imp cust_dba@targetdb FROMUSER=cust_schema TOUSER=cust_schema \  
   TABLES=(tab1,tab2,tab3) FILE=exp_file.dmp LOG=imp_file.log
   ```

사용자의 필요에 맞게 여러 버전의 내보내기 및 가져오기가 있습니다. 자세한 내용은 Oracle 설명서를 참조하십시오.

# Oracle SQL\$1Loader를 사용하여 가져오기
<a name="Oracle.Procedural.Importing.SQLLoader"></a>

객체 수가 제한되어 있는 대규모 데이터베이스의 경우 Oracle SQL\$1Loader를 사용할 수도 있습니다. 원본 데이터베이스에서 내보내고 대상 데이터베이스로 로드하는 프로세스는 스키마와 매우 밀접한 관계가 있으므로, 다음 예에서는 샘플 스키마 객체를 생성하여 원본에서 내보내고 대상 데이터베이스에 로드합니다.

Oracle SQL\$1Loader를 설치하는 가장 쉬운 방법은 Oracle Instant Client를 설치하는 것입니다. 소프트웨어를 다운로드하려면 [https://www.oracle.com/database/technologies/instant-client.html](https://www.oracle.com/database/technologies/instant-client.html)을 방문하세요. 설명서를 보려면 *Oracle Database 유틸리티* 설명서의 [SQL\$1Loader, 내보내기, 가져오기를 위한 Instant Client](https://docs.oracle.com/en/database/oracle/oracle-database/21/sutil/instant-client-sql-loader-export-import.html#GUID-FF1B6F75-09F5-4911-9317-9776FAD15965)를 참조하세요.

**Oracle SQL\$1Loader를 사용하여 데이터를 가져오려면**

1. 다음 SQL 문을 사용해 샘플 원본 테이블을 생성합니다.

   ```
   CREATE TABLE customer_0 TABLESPACE users 
      AS (SELECT ROWNUM id, o.* 
          FROM   ALL_OBJECTS o, ALL_OBJECTS x 
          WHERE  ROWNUM <= 1000000);
   ```

1. 대상 RDS for Oracle DB 인스턴스에서 데이터를 로드하는 데 사용되는 대상 테이블을 생성합니다. `WHERE 1=2` 절을 사용하면 `ALL_OBJECTS`의 구조를 복사하지만 행은 복사하지 않게 됩니다.

   ```
   CREATE TABLE customer_1 TABLESPACE users 
     AS (SELECT 0 AS ID, OWNER, OBJECT_NAME, CREATED
         FROM   ALL_OBJECTS
         WHERE  1=2);
   ```

1. 원본 데이터베이스의 데이터를 텍스트 파일로 내보냅니다. 다음 예에서는 SQL\$1Plus를 사용합니다. 실제 데이터의 경우 대개 데이터베이스의 모든 객체에 대한 내보내기를 수행하는 스크립트를 생성해야 할 것입니다.

   ```
   ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY/MM/DD HH24:MI:SS'
   
   SET LINESIZE 800 HEADING OFF FEEDBACK OFF ARRAY 5000 PAGESIZE 0
   SPOOL customer_0.out 
   SET MARKUP HTML PREFORMAT ON
   SET COLSEP ','
   
   SELECT id, owner, object_name, created 
   FROM   customer_0; 
   
   SPOOL OFF
   ```

1. 데이터를 설명하는 제어 파일을 생성해야 합니다. 이 단계를 수행하려면 스크립트를 작성해야 할 수 있습니다.

   ```
   cat << EOF > sqlldr_1.ctl 
   load data
   infile customer_0.out
   into table customer_1
   APPEND
   fields terminated by "," optionally enclosed by '"'
   (
     id           POSITION(01:10)    INTEGER EXTERNAL,
     owner        POSITION(12:41)    CHAR,
     object_name  POSITION(43:72)    CHAR,
     created      POSITION(74:92)    date "YYYY/MM/DD HH24:MI:SS"
   )
   ```

   필요할 경우 이전 코드에서 생성된 파일을 Amazon EC2 인스턴스 등의 스테이징 영역으로 복사합니다.

1. 대상 데이터베이스에 대한 적절한 사용자 이름 및 암호와 함께 SQL\$1Loader를 사용하여 데이터를 가져옵니다.

   ```
   sqlldr cust_dba@targetdb CONTROL=sqlldr_1.ctl BINDSIZE=10485760 READSIZE=10485760 ROWS=1000 
   ```

# Oracle 구체화된 보기로 마이그레이션
<a name="Oracle.Procedural.Importing.Materialized"></a>

Oracle 구체화된 보기 복제를 사용하여 최신 데이터 세트를 효율적으로 마이그레이션할 수 있습니다. 복제를 사용하면 대상 테이블을 원본 테이블과 동기화된 상태로 유지할 수 있습니다. 따라서 필요한 경우 나중에 Amazon RDS로 전환할 수 있습니다.

구체화된 보기로 마이그레이션하려면 먼저 다음 요구 사항을 충족해야 합니다.
+ 대상 데이터베이스에서 원본 데이터베이스로의 액세스를 구성합니다. 다음 예에서는 SQL\$1Net을 통해 RDS for Oracle 대상 데이터베이스가 원본에 연결할 수 있도록 원본 데이터베이스에서 액세스 규칙이 활성화되었습니다.
+ RDS for Oracle DB 인스턴스에서 원본 데이터베이스로 연결되는 데이터베이스 링크를 생성합니다.

**구체화된 보기를 사용하여 데이터 마이그레이션**

1. 원본 및 RDS for Oracle 대상 인스턴스 모두에서 동일한 암호로 인증할 수 있는 사용자 계정을 생성합니다. 다음 예에서는 이름이 `dblink_user`인 사용자를 생성합니다.

   ```
   CREATE USER dblink_user IDENTIFIED BY my-password
     DEFAULT TABLESPACE users
     TEMPORARY TABLESPACE temp;
      
   GRANT CREATE SESSION TO dblink_user;
   
   GRANT SELECT ANY TABLE TO dblink_user;
   
   GRANT SELECT ANY DICTIONARY TO dblink_user;
   ```
**참고**  
보안 모범 사례로 여기에 표시된 프롬프트 이외의 암호를 지정하는 것이 좋습니다.

1. 새로 생성된 사용자를 사용하여 RDS for Oracle 대상 인스턴스에서 원본 인스턴스로의 데이터베이스 링크를 생성합니다.

   ```
   CREATE DATABASE LINK remote_site
     CONNECT TO dblink_user IDENTIFIED BY my-password
     USING '(description=(address=(protocol=tcp) (host=my-host) 
       (port=my-listener-port)) (connect_data=(sid=my-source-db-sid)))';
   ```
**참고**  
보안 모범 사례로 여기에 표시된 프롬프트 이외의 암호를 지정하는 것이 좋습니다.

1. 링크를 테스트합니다.

   ```
   SELECT * FROM V$INSTANCE@remote_site;
   ```

1. 원본 인스턴스에서 주 키와 구체화 보기 로그를 사용하여 샘플 테이블을 생성합니다.

   ```
   CREATE TABLE customer_0 TABLESPACE users 
     AS (SELECT ROWNUM id, o.* 
         FROM   ALL_OBJECTS o, ALL_OBJECTS x
         WHERE  ROWNUM <= 1000000);
   
   ALTER TABLE customer_0 ADD CONSTRAINT pk_customer_0 PRIMARY KEY (id) USING INDEX;
   
   CREATE MATERIALIZED VIEW LOG ON customer_0;
   ```

1. 대상 RDS for Oracle DB 인스턴스에서 구체화된 보기를 생성합니다.

   ```
   CREATE MATERIALIZED VIEW customer_0 
     BUILD IMMEDIATE REFRESH FAST 
     AS (SELECT * 
         FROM   cust_dba.customer_0@remote_site);
   ```

1. 대상 RDS for Oracle DB 인스턴스에서 구체화된 보기를 새로 고칩니다.

   ```
   EXEC DBMS_MVIEW.REFRESH('CUSTOMER_0', 'f');
   ```

1. 구체화된 보기를 삭제하고 `PRESERVE TABLE` 절을 포함하여 구체화된 보기 컨테이너 테이블과 그 내용을 보관합니다.

   ```
   DROP MATERIALIZED VIEW customer_0 PRESERVE TABLE;
   ```

   보관한 테이블에는 끊긴 구체화된 보기와 같은 이름이 있습니다.

# Amazon RDS의 Oracle의 읽기 전용 복제본 작업
<a name="oracle-read-replicas"></a>

Oracle DB 인스턴스 간 복제를 구성하기 위해 복제본 데이터베이스를 생성할 수 있습니다. Amazon RDS 읽기 전용 복제본의 개요는 [Amazon RDS 읽기 전용 복제본의 개요개요](USER_ReadRepl.md#USER_ReadRepl.Overview) 섹션을 참조하세요. Oracle 복제본과 다른 DB 엔진 간의 차이점에 대한 요약은 [DB 엔진별 읽기 전용 복제본의 차이점](USER_ReadRepl.Overview.Differences.md) 섹션을 참조하세요.

**Topics**
+ [RDS for Oracle 복제본 개요](oracle-read-replicas.overview.md)
+ [RDS for Oracle 복제본에 대한 요구 사항 및 고려 사항](oracle-read-replicas.limitations.md)
+ [Oracle 복제본 생성 준비](oracle-read-replicas.Configuration.md)
+ [탑재된 모드에서 RDS for Oracle 복제본 생성](oracle-read-replicas.creating-in-mounted-mode.md)
+ [RDS for Oracle 복제본 모드 수정](oracle-read-replicas.changing-replica-mode.md)
+ [RDS for Oracle 복제본 백업 작업](oracle-read-replicas.backups.md)
+ [Oracle Data Guard 전환 수행](oracle-replication-switchover.md)
+ [RDS for Oracle 복제본 문제 해결](oracle-read-replicas.troubleshooting.md)
+ [RDS for Oracle을 사용하여 전송 압축 다시 실행](oracle-read-replicas.redo-transport-compression.md)

# RDS for Oracle 복제본 개요
<a name="oracle-read-replicas.overview"></a>

*Oracle 복제본* 데이터베이스는 프라이머리 데이터베이스의 실제 복사본입니다. 읽기 전용 모드의 Oracle 복제본을 *읽기 전용 복제본*이라고 합니다. 탑재된 모드의 Oracle 복제본을 *탑재된 복제본*이라고 합니다. Oracle 데이터베이스는 복제본에서의 쓰기를 허용하지 않지만, 복제본을 승격하여 쓰기 가능한 상태로 만들 수 있습니다. 승격된 읽기 전용 복제본에는 승격 요청이 이루어진 시점까지 복제된 데이터가 있습니다.

다음 동영상은 RDS for Oracle 재해 복구에 대한 유용한 개요를 제공합니다.

[![AWS Videos](http://img.youtube.com/vi/-XpzhIevwVg/0.jpg)](http://www.youtube.com/watch?v=-XpzhIevwVg)


자세한 내용은 블로그 게시물 [Amazon RDS for Oracle 교차 리전 자동 백업으로 관리형 재해 복구 - 1부](https://aws.amazon.com/blogs/database/managed-disaster-recovery-with-amazon-rds-for-oracle-cross-region-automated-backups-part-1/) 및 [Amazon RDS for Oracle 교차 리전 자동 백업으로 관리형 재해 복구 - 2부](https://aws.amazon.com/blogs/database/part-2-managed-disaster-recovery-with-amazon-rds-for-oracle-xrab/)를 참조하세요.

**Topics**
+ [읽기 전용 복제본 및 탑재된 복제본](#oracle-read-replicas.overview.modes)
+ [CDB 읽기 전용 복제본](#oracle-read-replicas.overview.data-guard)
+ [아카이브된 다시 실행 로그 보존](#oracle-read-replicas.overview.log-retention)
+ [Oracle 복제 중 중단](#oracle-read-replicas.overview.outages)

## 읽기 전용 복제본 및 탑재된 복제본
<a name="oracle-read-replicas.overview.modes"></a>

Oracle 복제본을 생성하거나 수정할 때 다음 모드 중 하나로 배치할 수 있습니다.

읽기 전용  
이 값이 기본값입니다. Active Data Guard는 원본 데이터베이스의 변경 사항을 모든 읽기 전용 복제본 데이터베이스로 전송하고 적용합니다.  
원본 DB 인스턴스 하나에서 최대 5개까지 읽기 전용 복제본을 생성할 수 있습니다. 모든 DB 엔진에 적용되는 읽기 전용 복제본에 대한 일반적인 정보는 [DB 인스턴스 읽기 전용 복제본 작업](USER_ReadRepl.md) 단원을 참조하세요. RDS for Oracle에 대한 자세한 내용은 Oracle 설명서의 [Oracle Data Guard concepts and administration](https://docs.oracle.com/en/database/oracle/oracle-database/19/sbydb/oracle-data-guard-concepts.html#GUID-F78703FB-BD74-4F20-9971-8B37ACC40A65)(Oracle Data Guard 개념 및 관리)를 참조하세요.

탑재  
이 경우 복제는 Oracle Data Guard를 사용하지만 복제본 데이터베이스는 사용자 연결을 허용하지 않습니다. 탑재된 복제본의 주된 용도는 리전 간 재해 복구입니다.  
탑재된 복제본은 읽기 전용 워크로드를 처리할 수 없습니다. 탑재된 복제본은 아카이브된 로그 보존 정책에 관계없이 아카이브된 다시 실행 로그 파일을 적용한 후 삭제합니다.

동일한 원본 DB 인스턴스에 대해 탑재된 DB 복제본과 읽기 전용 DB 복제본을 조합하여 생성할 수 있습니다. 읽기 전용 복제본을 탑재된 모드로 변경하거나 탑재된 복제본을 읽기 전용 모드로 변경할 수 있습니다. 두 경우 모두 Oracle 데이터베이스는 아카이브된 로그 보존 설정을 유지합니다.

## CDB 읽기 전용 복제본
<a name="oracle-read-replicas.overview.data-guard"></a>

RDS for Oracle이 단일 테넌트와 다중 테넌트 구성 모두에서 Oracle Database 19c 및 21c CDB에 대해 Data Guard 읽기 전용 복제본을 지원합니다. 비CDB에서와 마찬가지로 CDB에서도 읽기 전용 복제본을 생성, 관리 및 승격할 수 있습니다. 마운트된 복제본도 지원됩니다. 이점은 다음과 같습니다.
+ 관리형 재해 복구, 고가용성, 복제본에 대한 읽기 전용 액세스
+ 다른 AWS 리전에서 읽기 전용 복제본 생성 가능
+ 기존 RDS 읽기 전용 복제본 API와의 통합: [CreateDBInstanceReadReplica](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstanceReadReplica.html), [PromoteReadReplica](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_PromoteReadReplica.html), [SwitchoverReadReplica](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_SwitchoverReadReplica.html)

이 기능을 사용하려면 복제본과 기본 DB 인스턴스 모두에 대해 Active Data Guard 라이선스와 Oracle Database Enterprise Edition 라이선스가 필요합니다. CDB 아키텍처 사용과 관련된 추가 비용은 없습니다. DB 인스턴스에 대한 비용만 지불하면 됩니다.

CDB 아키텍처의 단일 테넌트 및 다중 테넌트 구성에 대한 자세한 내용은 [RDS for Oracle CDB 개요](Oracle.Concepts.CDBs.md) 섹션을 참조하세요.

## 아카이브된 다시 실행 로그 보존
<a name="oracle-read-replicas.overview.log-retention"></a>

기본 DB 인스턴스에 리전 간 읽기 전용 복제본이 없는 경우 Amazon RDS for Oracle이 원본 DB 인스턴스에 대한 최소 2시간의 아카이브된 다시 실행 로그를 유지합니다. 이는 `rdsadmin.rdsadmin_util.set_configuration`에서 `archivelog retention hours`에 대한 설정과 무관하게 true입니다.

RDS는 2시간 후 또는 아카이브 로그 보존 시간 설정이 지난 후 중 더 긴 시간이 경과한 후에 소스 DB 인스턴스에서 로그를 제거합니다. RDS는 아카이브 로그 보존 시간이 데이터베이스에 성공적으로 적용된 경우에만 해당 설정이 경과된 후 읽기 전용 복제본에서 로그를 제거합니다.

경우에 따라 기본 DB 인스턴스에 하나 이상의 리전 간 읽기 전용 복제본이 있을 수 있습니다. 이 경우 Amazon RDS for Oracle은 원본 DB 인스턴스에 대한 트랜잭션 로그가 전송되어 모든 리전 간 읽기 전용 복제본에 적용될 때까지 이 로그를 유지합니다. `rdsadmin.rdsadmin_util.set_configuration`에 대한 내용은 [보관된 다시 실행 로그 보존](Appendix.Oracle.CommonDBATasks.RetainRedoLogs.md)을 참조하세요.

## Oracle 복제 중 중단
<a name="oracle-read-replicas.overview.outages"></a>

읽기 전용 복제본을 생성하면 Amazon RDS가 원본 DB 인스턴스의 DB 스냅샷을 캡처하고 복제를 시작합니다. DB 스냅샷 작업이 시작될 때 원본 DB 인스턴스에서 매우 짧은 I/O 중단이 발생합니다. 이러한 I/O 중단은 일반적으로 1초 정도 지속됩니다. 원본 DB 인스턴스가 다중 AZ 배포인 경우에는 I/O 중단을 방지할 수 있습니다. 이 경우에는 보조 DB 인스턴스에서 스냅샷을 생성하기 때문입니다.

DB 스냅샷은 Oracle 복제본이 됩니다. Amazon RDS는 서비스 중단 없이 원본 데이터베이스 및 복제본에 필요한 파라미터와 권한을 설정합니다. 마찬가지로 복제본을 삭제해도 중단이 발생하지 않습니다.

# RDS for Oracle 복제본에 대한 요구 사항 및 고려 사항
<a name="oracle-read-replicas.limitations"></a>

Oracle 복제본을 생성하기 전에 다음 요구 사항 및 고려 사항을 숙지하세요.

**Topics**
+ [Oracle 복제본에 대한 버전 및 라이선스 요구 사항](#oracle-read-replicas.limitations.versions-and-licenses)
+ [RDS for Oracle 복제본에 대한 옵션 그룹 제한 사항](#oracle-read-replicas.limitations.options)
+ [RDS for Oracle 복제본에 대한 Backup 및 복구 고려 사항](#oracle-read-replicas.limitations.backups)
+ [RDS for Oracle 복제본에 대한 Oracle Data Guard 요구 사항 및 제한 사항](#oracle-read-replicas.data-guard.requirements)
+ [RDS for Oracle 복제본에 대한 다중 테넌트 구성 제한 사항](#oracle-read-replicas.limitations.multitenant)
+ [RDS for Oracle 복제본에 대한 기타 고려 사항](#oracle-read-replicas.limitations.miscellaneous)

## Oracle 복제본에 대한 버전 및 라이선스 요구 사항
<a name="oracle-read-replicas.limitations.versions-and-licenses"></a>

RDS for Oracle 복제본을 생성하기 전에 다음 사항을 고려하세요.
+ 복제본이 읽기 전용 모드인 경우 Active Data Guard 라이선스가 있는지 확인하세요. 복제본을 탑재된 모드로 배치하는 경우 Active Data Guard 라이선스가 필요하지 않습니다. Oracle DB 엔진만 탑재된 복제본을 지원합니다.
+ Oracle 복제본은 Oracle Enterprise Edition(EE)에 대해서만 지원됩니다.
+ 비CDB의 Oracle 복제본은 Oracle Database 19c를 실행하는 비CDB 인스턴스를 사용하여 생성된 DB 인스턴스에 대해서만 지원됩니다.
+ Oracle 복제본은 두 개 이상의 vCPU가 있는 DB 인스턴스 클래스에서 실행 중인 DB 인스턴스에만 사용할 수 있습니다. 소스 DB 인스턴스는 db.t3.small 인스턴스 클래스를 사용할 수 없습니다.
+ 소스 DB 인스턴스의 Oracle DB 엔진 버전과 모든 복제본은 동일해야 합니다. Amazon RDS는 복제본의 유지 관리 기간과 상관없이 소스 DB 인스턴스를 업그레이드한 직후 복제본을 업그레이드합니다. 리전 간 복제본의 메이저 버전 업그레이드의 경우 Amazon RDS에서 자동으로 다음을 수행합니다.
  + 대상 버전에 대한 옵션 그룹을 생성합니다.
  + 모든 옵션과 옵션 설정을 원래 옵션 그룹에서 새 옵션 그룹으로 복사합니다.
  + 업그레이드된 리전 간 복제본을 새 옵션 그룹과 연결합니다.

  DB 엔진 버전 업그레이드에 대한 자세한 내용은 [RDS for Oracle DB 엔진 업그레이드](USER_UpgradeDBInstance.Oracle.md) 섹션을 참조하세요.

## RDS for Oracle 복제본에 대한 옵션 그룹 제한 사항
<a name="oracle-read-replicas.limitations.options"></a>

RDS for Oracle 복제본의 옵션 그룹으로 작업할 때는 다음 사항을 고려하세요.
+ 소스와 복제본이 동일한 AWS 리전에 있는 경우 소스 DB 인스턴스 옵션 그룹과 다른 복제본 옵션 그룹을 사용할 수 없습니다.

  원본 옵션 그룹 또는 원본 옵션 그룹 멤버십에 대한 수정 사항은 Oracle 복제본으로 전파됩니다. 이러한 변경 사항은 복제본의 유지 관리 기간과 상관없이 원본 DB 인스턴스에 적용된 직후 복제본에 적용됩니다. 옵션 그룹에 대한 자세한 내용은 [옵션 그룹 작업](USER_WorkingWithOptionGroups.md) 섹션을 참조하세요.
+ 복제본에 대해 자동으로 생성되는 전용 옵션 그룹에서 RDS for Oracle 교차 리전 복제본을 제거할 수 없습니다.
+ RDS for Oracle 교차 리전 복제본에 대한 전용 옵션 그룹을 다른 DB 인스턴스에 추가할 수 없습니다.
+ 다음 옵션을 제외하고 RDS for Oracle 리전 간 복제본의 전용 옵션 그룹에서 비복제 옵션을 추가하거나 제거할 수 없습니다.
  + `NATIVE_NETWORK_ENCRYPTION`
  + `OEM`
  + `OEM_AGENT`
  + `SSL`

  RDS for Oracle 리전 간 복제본에 다른 옵션을 추가하려면 원본 DB 인스턴스의 옵션 그룹에 추가하세요. 이 옵션은 모든 원본 DB 인스턴스의 복제본에도 설치됩니다. 라이선스가 있는 옵션의 경우 복제본에 대한 라이선스가 충분해야 합니다.

  RDS for Oracle 리전 간 복제본을 승격하면 승격된 복제본은 옵션 관리를 포함하여 다른 Oracle DB 인스턴스와 동일하게 동작합니다. 원본 DB 인스턴스를 삭제하여 복제본을 명시적 또는 암시적으로 승격할 수 있습니다.

  옵션 그룹에 대한 자세한 내용은 [옵션 그룹 작업](USER_WorkingWithOptionGroups.md) 섹션을 참조하세요.
+ RDS for Oracle 리전 간 복제본에는 `EFS_INTEGRATION` 옵션을 추가할 수 없습니다.

## RDS for Oracle 복제본에 대한 Backup 및 복구 고려 사항
<a name="oracle-read-replicas.limitations.backups"></a>

RDS for Oracle 복제본을 생성하기 전에 다음 사항을 고려하세요.
+ RDS for Oracle 복제본의 스냅샷을 생성하거나 자동 백업을 설정하려면 백업 보존 기간을 수동으로 설정해야 합니다. 자동 백업은 기본적으로 켜져 있지 않습니다.
+ 복제본 백업을 복원할 때는 백업이 완료된 시간이 아니라 데이터베이스 시간으로 복원됩니다. 이 데이터베이스 시간이란 백업에 있는 데이터의 가장 최근에 적용된 트랜잭션 시간입니다. 복제본이 기본 복제본보다 몇 분 또는 몇 시간 정도 지연될 수 있기 때문에 이러한 차이는 상당합니다.

  차이점을 찾으려면 `describe-db-snapshots` 명령을 사용하세요. 복제본 백업의 데이터베이스 시간인 `snapshotDatabaseTime`와 기본 데이터베이스에서 가장 최근에 적용된 트랜잭션인 `OriginalSnapshotCreateTime` 필드를 비교합니다.

## RDS for Oracle 복제본에 대한 Oracle Data Guard 요구 사항 및 제한 사항
<a name="oracle-read-replicas.data-guard.requirements"></a>

RDS Custom for Oracle 복제를 생성하기 전에 다음과 같은 요구 사항과 제한 사항에 유의하세요.
+ 기본 DB 인스턴스가 다중 테넌트 아키텍처의 단일 테넌트 또는 다중 테넌트 구성을 사용하는 경우 다음을 고려하세요.
  + Enterprise Edition으로 Oracle Database 19c 이상을 사용해야 합니다.
  + 기본 CDB 인스턴스는 `ACTIVE` 수명 주기에 속해야 합니다.
  + 비CDB 인스턴스를 CDB 인스턴스로 변환하고 해당 복제본을 동일한 작업에서 변환할 수 없습니다. 대신 비CDB 복제본을 삭제하고 기본 DB 인스턴스를 CDB로 변환한 다음, 새 복제본을 생성하세요.
+ 기본 인스턴스의 로그인 트리거는 `RDS_DATAGUARD` 사용자와 `AUTHENTICATED_IDENTITY` 값이 `RDS_DATAGUARD` 또는 `rdsdb`인 모든 사용자에 대한 액세스를 허용해야 합니다. 또한 트리거는 `RDS_DATAGUARD` 사용자의 현재 스키마를 설정하지 않아야 합니다.
+ Data Guard 브로커 프로세스에서 연결을 차단하지 않으려면 제한된 세션을 활성화하지 마십시오. 제한된 세션에 대한 자세한 내용은 [제한 세션 활성화 및 비활성화](Appendix.Oracle.CommonDBATasks.RestrictedSession.md) 섹션을 참조하세요.

## RDS for Oracle 복제본에 대한 다중 테넌트 구성 제한 사항
<a name="oracle-read-replicas.limitations.multitenant"></a>

RDS for Oracle 복제본에서 다중 테넌트 구성을 사용하는 경우 다음 제한 사항에 유의하세요.
+ 기본 DB 인스턴스에서만 테넌트 데이터베이스를 생성, 삭제 또는 수정할 수 있습니다. 이러한 변경 사항은 복제본에 자동으로 전파됩니다.
+ RDS for Oracle 기본, 소스 또는 복제본 인스턴스의 테넌트 데이터베이스는 사용자 지정 문자 집합으로 생성할 수 없습니다. 사용자 지정 문자 집합이 필요한 경우 DB 인스턴스에 대한 읽기 전용 복제본을 생성하기 전에 테넌트 데이터베이스를 생성하세요.

## RDS for Oracle 복제본에 대한 기타 고려 사항
<a name="oracle-read-replicas.limitations.miscellaneous"></a>

RDS for Oracle 복제본을 생성하기 전에 다음 사항을 고려하세요.
+ 추가 스토리지 볼륨이 있는 DB 인스턴스에 대한 RDS for Oracle 복제본을 생성할 때 RDS는 복제본에 추가 스토리지 볼륨을 자동으로 구성합니다. 그러나 기본 DB 인스턴스의 스토리지 볼륨에서 이루어진 후속 수정 사항은 복제본에 자동으로 적용되지 않습니다.
+ 기본 DB 인스턴스에 스토리지 볼륨을 추가하는 경우 RDS는 복제본에 스토리지 볼륨을 자동으로 추가하지 않습니다. 추가 스토리지 볼륨을 추가하려면 복제본을 수정해야 합니다.
+ 기본 DB 인스턴스의 스토리지 크기 및 IOPS와 같은 스토리지 볼륨 구성을 수정하는 경우 RDS는 복제본의 스토리지 볼륨을 자동으로 수정하지 않습니다. 스토리지 볼륨 구성을 업데이트하려면 복제본을 수정해야 합니다.
+ 볼륨에서 데이터 파일 위치를 관리할 때 기본 인스턴스에서 변경한 내용은 복제본에 자동으로 동기화되지 않습니다.
  + 읽기 전용 복제본의 경우: 파라미터 그룹 설정을 사용하여 기본 파일 위치를 제어하거나 파일을 생성한 후 수동으로 이동할 수 있습니다.
  + 마운트된 복제본의 경우: 기본 데이터베이스의 데이터 파일 위치를 수동으로 변경하려면 마운트된 복제본을 다시 생성하여 이러한 변경 사항을 반영해야 합니다. 이를 방지하려면 파라미터 그룹 설정을 사용하여 기본 파일 위치를 관리하는 것이 좋습니다.
+ DB 인스턴스가 하나 이상의 리전 간 복제본의 원본인 경우 원본 DB는 모든 리전 간 복제본에 적용될 때까지 아카이브된 재실행 로그 파일을 유지합니다. 아카이브된 다시 실행 로그 때문에 스토리지 소비가 증가할 수 있습니다.
+ RDS 자동화를 방해하지 않으려면 특정 사용자가 기본 및 복제본 데이터베이스에 로그온할 수 있도록 시스템 트리거가 허용해야 합니다. [시스템 트리거](https://docs.oracle.com/en/database/oracle/oracle-database/19/lnpls/plsql-triggers.html#GUID-FE23FCE8-DE36-41EF-80A9-6B4B49E80E5B)에는 DDL, 로그온 및 데이터베이스 역할 트리거가 포함되어 있습니다. 다음 예제 코드에 나열된 사용자를 제외하도록 트리거에 코드를 추가하는 것이 좋습니다.

  ```
  -- Determine who the user is
  SELECT SYS_CONTEXT('USERENV','AUTHENTICATED_IDENTITY') INTO CURRENT_USER FROM DUAL;
  -- The following users should always be able to login to either the Primary or Replica
  IF CURRENT_USER IN ('master_user', 'SYS', 'SYSTEM', 'RDS_DATAGUARD', 'rdsdb') THEN
  RETURN;
  END IF;
  ```
+ 블록 변경 내용 추적은 읽기 전용 복제본에 대해 지원되지만 마운트된 복제본에는 지원되지 않습니다. 마운트된 복제본을 읽기 전용 복제본으로 변경한 다음 블록 변경 내용 추적을 활성화할 수 있습니다. 자세한 내용은 [블록 변경 추적 활성화 및 비활성화](Appendix.Oracle.CommonDBATasks.BlockChangeTracking.md) 섹션을 참조하세요.
+ 소스 데이터베이스가 Secrets Manager를 사용하여 마스터 사용자 자격 증명을 관리하는 경우 Oracle 읽기 전용 복제본을 만들 수 없습니다.

# Oracle 복제본 생성 준비
<a name="oracle-read-replicas.Configuration"></a>

복제본 사용을 시작하려면 먼저 다음 작업을 수행해야 합니다.

**Topics**
+ [자동 백업 활성화](#oracle-read-replicas.configuration.autobackups)
+ [강제 로깅 모드 활성화](#oracle-read-replicas.configuration.force-logging)
+ [로깅 구성 변경](#oracle-read-replicas.configuration.logging-config)
+ [MAX\$1STRING\$1SIZE 파라미터 설정](#oracle-read-replicas.configuration.string-size)
+ [컴퓨팅 및 스토리지 리소스 계획](#oracle-read-replicas.configuration.planning-resources)

## 자동 백업 활성화
<a name="oracle-read-replicas.configuration.autobackups"></a>

임의의 DB 인스턴스를 원본 DB 인스턴스로 사용하려면 원본 DB 인스턴스의 자동 백업을 활성화해야 합니다. 이 절차를 수행하는 방법에 대한 자세한 내용은 [자동 백업 활성화](USER_WorkingWithAutomatedBackups.Enabling.md) 단원을 참조하세요.

## 강제 로깅 모드 활성화
<a name="oracle-read-replicas.configuration.force-logging"></a>

강제 로깅 모드를 활성화하는 것이 좋습니다. 강제 로깅 모드에서 Oracle 데이터베이스는 `NOLOGGING`이 데이터 정의 언어(DDL) 문과 함께 사용되더라도 다시 실행 레코드를 기록합니다.

**강제 로깅 모드를 활성화하려면**

1. SQL Developer와 같은 클라이언트 도구를 사용하여 Oracle 데이터베이스에 로그인합니다.

1. 다음 절차를 실행하여 강제 로깅 모드를 활성화합니다.

   ```
   exec rdsadmin.rdsadmin_util.force_logging(p_enable => true);
   ```

이 프로시저에 대한 자세한 내용은 [강제 로깅 설정](Appendix.Oracle.CommonDBATasks.Log.md#Appendix.Oracle.CommonDBATasks.SettingForceLogging) 단원을 참조하십시오.

## 로깅 구성 변경
<a name="oracle-read-replicas.configuration.logging-config"></a>

크기가 m인 n개의 온라인 다시 실행 로그의 경우 RDS는 기본 DB 인스턴스와 모든 복제본에 크기가 m인 n\$11 대기 로그를 자동으로 생성합니다.******** 기본 복제본의 로깅 구성을 변경할 때마다 변경 내용이 복제본에 자동으로 전파됩니다.

로깅 구성을 변경하는 경우 다음 지침을 고려하세요.
+ DB 인스턴스를 복제본의 소스로 만들기 전에 변경을 완료하는 것이 좋습니다. RDS for Oracle은 인스턴스가 소스가 된 후의 인스턴스 업데이트도 지원합니다.
+ 기본 DB 인스턴스의 로깅 구성을 변경하기 전에 각 복제본에 새 구성을 수용할 수 있는 충분한 스토리지가 있는지 확인하세요.

Amazon RDS 프로시저 `rdsadmin.rdsadmin_util.add_logfile` 및 `rdsadmin.rdsadmin_util.drop_logfile`을 사용하여 DB 인스턴스의 로깅 구성을 수정할 수 있습니다. 자세한 내용은 [온라인 다시 실행 로그 추가](Appendix.Oracle.CommonDBATasks.Log.md#Appendix.Oracle.CommonDBATasks.RedoLogs) 및 [온라인 다시 실행 로그 드롭](Appendix.Oracle.CommonDBATasks.Log.md#Appendix.Oracle.CommonDBATasks.DroppingRedoLogs)(을)를 참조하세요.

## MAX\$1STRING\$1SIZE 파라미터 설정
<a name="oracle-read-replicas.configuration.string-size"></a>

Oracle 복제본을 생성하기 전에 원본 DB 인스턴스와 복제본의 `MAX_STRING_SIZE` 파라미터 설정이 동일한지 확인하세요. 동일한 파라미터 그룹과 연결하여 이 작업을 수행할 수 있습니다. 원본 및 복제본에 대해 다른 파라미터 그룹이 있는 경우 `MAX_STRING_SIZE`를 동일한 값으로 설정할 수 있습니다. 이 파라미터에 대한 자세한 내용은 [신규 DB 인스턴스에 확장 데이터 유형 활성화](Oracle.Concepts.ExtendedDataTypes.md#Oracle.Concepts.ExtendedDataTypes.CreateDBInstance) 단원을 참조하세요.

## 컴퓨팅 및 스토리지 리소스 계획
<a name="oracle-read-replicas.configuration.planning-resources"></a>

원본 DB 인스턴스와 해당 복제본이 운영 로드에 맞게 컴퓨팅 및 스토리지 면에서 제대로 크기가 조정되었는지 확인합니다. 복제본이 컴퓨팅, 네트워크 또는 스토리지 리소스 용량에 도달하면 복제본은 해당 소스에서 변경 사항을 수신하거나 적용하는 것을 중지합니다. Amazon RDS for Oracle은 개입을 통해 소스 DB 인스턴스와 해당 복제본 간의 긴 복제본 지연 시간을 줄이지 않습니다. 복제본의 스토리지 및 CPU 리소스를 해당 원본 및 다른 복제본과 별도로 수정할 수 있습니다.

# 탑재된 모드에서 RDS for Oracle 복제본 생성
<a name="oracle-read-replicas.creating-in-mounted-mode"></a>

기본적으로 Oracle 복제본은 읽기 전용입니다. 탑재된 모드에서 복제본을 생성하려면 콘솔, AWS CLI 또는 RDS API를 사용합니다.

## 콘솔
<a name="oracle-read-replicas.creating-in-mounted-mode.console"></a>

**소스 Oracle DB 인스턴스에서 탑재된 복제본을 생성하려면**

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)에서 Amazon RDS 콘솔을 엽니다.

1. 탐색 창에서 **데이터베이스**를 선택합니다.

1. 탑재된 복제본의 소스로 사용할 Oracle DB 인스턴스를 선택합니다.

1. **작업**에서 **읽기 전용 복제본 만들기**를 선택합니다.

1. **복제본 모드**에서 **탑재**를 선택합니다.

1. 사용하려는 설정을 선택합니다. **DB 인스턴스 식별자**에 읽기 전용 복제본의 이름을 입력합니다. 필요에 따라 다른 설정을 조정합니다.

1. **리전**의 경우 탑재된 복제본을 시작할 리전을 선택합니다.

1. 인스턴스 크기 및 스토리지 유형을 선택합니다. 읽기 전용 복제본의 원본 DB 인스턴스와 동일한 DB 인스턴스 클래스와 스토리지 유형을 사용하는 것이 좋습니다.

1. 탑재된 복제본에 대한 장애 조치 지원을 위해 다른 가용 영역에 대기 복제본을 생성하려면 **다중 AZ 배포**에서 **대시 인스턴스 생성**을 선택합니다. 탑재된 복제본을 다중 AZ DB 인스턴스로 생성하는 작업은 원본 데이터베이스가 다중 AZ DB 인스턴스인지 여부와는 무관합니다.

1. 사용하고자 하는 기타 설정을 선택합니다.

1. **복제본 생성**을 선택합니다.

**데이터베이스** 페이지에서 탑재된 복제본에는 복제본 역할이 있습니다.

## AWS CLI
<a name="oracle-read-replicas.creating-in-mounted-mode.cli"></a>

탑재된 모드에서 Oracle 복제본을 생성하려면 `--replica-mode` 명령 [create-db-instance-read-replica](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance-read-replica.html)에서 `mounted`를 AWS CLI로 설정합니다.

**Example**  
대상 LinuxmacOS, 또는Unix:  

```
aws rds create-db-instance-read-replica \
    --db-instance-identifier myreadreplica \
    --source-db-instance-identifier mydbinstance \
    --replica-mode mounted
```
Windows의 경우:  

```
aws rds create-db-instance-read-replica ^
    --db-instance-identifier myreadreplica ^
    --source-db-instance-identifier mydbinstance ^
    --replica-mode mounted
```

읽기 전용 복제본을 탑재된 상태로 변경하려면 `--replica-mode` 명령 [modify-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html)에서 `mounted`를 AWS CLI로 설정합니다. 탑재된 복제본을 읽기 전용 모드로 배치하려면 `--replica-mode`를 `open-read-only`로 설정합니다. 

## RDS API
<a name="oracle-read-replicas.creating-in-mounted-mode.api"></a>

탑재된 모드에서 Oracle 복제본을 생성하려면 RDS API 작업 [CreateDBInstanceReadReplica](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstanceReadReplica.html)에서 `ReplicaMode=mounted`를 지정합니다.

# RDS for Oracle 복제본 모드 수정
<a name="oracle-read-replicas.changing-replica-mode"></a>

기존 복제본의 복제본 모드를 변경하려면 콘솔, AWS CLI 또는 RDS API를 사용합니다. 탑재된 모드로 변경하면 복제본이 모든 활성 연결을 해제합니다. 읽기 전용 모드로 변경하면 Amazon RDS는 Active Data Guard를 초기화합니다.

변경 작업은 몇 분 정도 걸릴 수 있습니다. 작업 중에는 DB 인스턴스 상태가 **수정 중**으로 변경됩니다. 상태 변경에 대한 자세한 내용은 [ Amazon RDSDB 인스턴스 상태 보기](accessing-monitoring.md#Overview.DBInstance.Status) 단원을 참조하세요.

## 콘솔
<a name="oracle-read-replicas.changing-replica-mode.console"></a>

**Oracle 복제본의 복제본 모드를 탑재에서 읽기 전용으로 변경하려면**

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)에서 Amazon RDS 콘솔을 엽니다.

1. 탐색 창에서 **데이터베이스**를 선택합니다.

1. 탑재된 복제본 데이터베이스를 선택합니다.

1. **수정**을 선택합니다.

1. **복제본 모드**의 경우 **읽기 전용**을 선택합니다.

1. 사용하려는 기타 설정을 선택합니다.

1. [**Continue**]를 선택합니다.

1. **수정 사항 예약**에 대해 **즉시 적용**을 선택합니다.

1. **DB 인스턴스 수정**을 선택합니다.

## AWS CLI
<a name="oracle-read-replicas.changing-replica-mode.cli"></a>

읽기 전용 복제본을 탑재된 모드로 변경하려면 `--replica-mode` 명령 [modify-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html)에서 `mounted`를 AWS CLI로 설정합니다. 탑재된 복제본을 읽기 전용 모드로 변경하려면 `--replica-mode`를 `open-read-only`로 설정합니다.

**Example**  
대상 LinuxmacOS, 또는Unix:  

```
aws rds modify-db-instance \
    --db-instance-identifier myreadreplica \
    --replica-mode mode
```
Windows의 경우:  

```
aws rds modify-db-instance ^
    --db-instance-identifier myreadreplica ^
    --replica-mode mode
```

## RDS API
<a name="oracle-read-replicas.changing-replica-mode.api"></a>

읽기 전용 복제본을 탑재된 모드로 변경하려면 [ModifyDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstanceReadReplica.html)에서 `ReplicaMode=mounted`를 설정합니다. 탑재된 복제본을 읽기 전용 모드로 변경하려면 `ReplicaMode=read-only`를 설정합니다.

# RDS for Oracle 복제본 백업 작업
<a name="oracle-read-replicas.backups"></a>

RDS for Oracle 복제본의 백업을 생성하고 복원할 수 있습니다. 자동 백업과 수동 스냅샷이 모두 지원됩니다. 자세한 내용은 [데이터 백업, 복원 및 내보내기](CHAP_CommonTasks.BackupRestore.md) 섹션을 참조하세요. 다음 섹션에서는 기본 복제본과 RDS for Oracle 복제본의 백업 관리 간의 주요 차이점을 설명합니다.

## RDS for Oracle 복제본 백업 켜기
<a name="oracle-read-replicas.backups.turning-on"></a>

Oracle 복제본에서는 기본적으로 자동 백업이 켜져 있지 않습니다. 백업 보존 기간을 0이 아닌 양수 값으로 설정하여 자동 백업을 켭니다.

### 콘솔
<a name="USER_WorkingWithAutomatedBackups.Enabling.CON"></a>

**자동 백업을 즉시 활성화하려면**

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)에서 Amazon RDS 콘솔을 엽니다.

1. 탐색 창에서 **데이터베이스**를 선택한 다음 수정하려는 DB 인스턴스 또는 다중 AZ DB 클러스터를 선택합니다.

1. **수정**을 선택합니다.

1. **백업 보존 기간**으로 0이 아닌 양수 값(예: 3일)을 선택합니다.

1. [**Continue**]를 선택합니다.

1. **즉시 적용**을 선택합니다.

1. **DB 인스턴스 수정** 또는 **클러스터 수정**을 선택하여 변경 내용을 저장하고 자동 백업을 활성화합니다.

### AWS CLI
<a name="USER_WorkingWithAutomatedBackups.Enabling.CLI"></a>

자동 백업을 활성화하려면 AWS CLI [modify-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) 또는 [modify-db-cluster](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-cluster.html) 명령을 사용합니다.

다음 파라미터를 포함합니다.
+ `--db-instance-identifier`(또는 다중 AZ DB 클러스터의 경우 `--db-cluster-identifier`)
+ `--backup-retention-period`
+ `--apply-immediately` 또는 `--no-apply-immediately`

다음 예에서는 백업 보존 기간을 3일로 설정하여 자동 백업을 활성화합니다. 변경이 바로 적용됩니다.

**Example**  
대상 LinuxmacOS, 또는Unix:  

```
aws rds modify-db-instance \
    --db-instance-identifier my_db_instance  \
    --backup-retention-period 3 \
    --apply-immediately
```
Windows의 경우:  

```
aws rds modify-db-instance ^
    --db-instance-identifier my_db_instance  ^
    --backup-retention-period 3 ^
    --apply-immediately
```

### RDS API
<a name="USER_WorkingWithAutomatedBackups.Enabling.API"></a>

자동 백업을 활성화하려면 RDS API [ModifyDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html) 또는 [ModifyDBCluster](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBCluster.html) 작업을 다음 필수 파라미터와 함께 사용합니다.
+ `DBInstanceIdentifier` 또는 `DBClusterIdentifier`
+ `BackupRetentionPeriod`

## RDS for Oracle 복제본 백업 복구
<a name="oracle-read-replicas.backups.restoring"></a>

기본 인스턴스의 백업을 복원할 수 있는 것처럼 Oracle 복제본 백업을 복원할 수 있습니다. 자세한 내용은 다음 자료를 참조하세요.
+ [DB 인스턴스 복원](USER_RestoreFromSnapshot.md)
+ [Amazon RDS에서 DB 인스턴스를 지정된 시간으로 복원](USER_PIT.md)

복제본 백업을 복원할 때 주요 고려 사항은 복원할 시점을 결정하는 것입니다. 이 데이터베이스 시간이란 백업에 있는 데이터의 가장 최근에 적용된 트랜잭션 시간입니다. 복제본 백업을 복원할 때는 백업이 완료된 시간이 아니라 데이터베이스 시간으로 복원됩니다. RDS for Oracle 복제본이 기본 복제본보다 몇 분 또는 몇 시간 정도 지연될 수 있기 때문에 이러한 차이는 상당합니다. 따라서 복제본 백업의 데이터베이스 시간, 즉 복원하는 시점이 백업 생성 시간보다 훨씬 빠를 수 있습니다.

데이터베이스 시간과 생성 시간의 차이를 구하려면 `describe-db-snapshots` 명령을 사용합니다. 복제본 백업의 데이터베이스 시간인 `SnapshotDatabaseTime`와 기본 데이터베이스에서 가장 최근에 적용된 트랜잭션인 `OriginalSnapshotCreateTime` 필드를 비교합니다. 다음 예에서는 두 날짜 간의 차이 일수를 반환합니다.

```
aws rds describe-db-snapshots \
    --db-instance-identifier my-oracle-replica
    --db-snapshot-identifier my-replica-snapshot

{
    "DBSnapshots": [
        {
            "DBSnapshotIdentifier": "my-replica-snapshot",
            "DBInstanceIdentifier": "my-oracle-replica", 
            "SnapshotDatabaseTime": "2022-07-26T17:49:44Z",
            ...
            "OriginalSnapshotCreateTime": "2021-07-26T19:49:44Z"
        }
    ]
}
```

# Oracle Data Guard 전환 수행
<a name="oracle-replication-switchover"></a>

*전환*은 기본 데이터베이스와 대기 데이터베이스 간의 역할 전환입니다. 전환하는 동안 원래 기본 데이터베이스는 대기 역할로 전환되고 원래 대기 데이터베이스는 기본 역할로 전환됩니다.

Oracle Data Guard 환경에서 기본 데이터베이스는 하나 이상의 대기 데이터베이스를 지원합니다. 기본 데이터베이스에서 대기 데이터베이스로 관리형 전환 기반 역할 전환을 수행할 수 있습니다. *전환*은 기본 데이터베이스와 대기 데이터베이스 간의 역할 전환입니다. 전환하는 동안 원래 기본 데이터베이스는 대기 역할로 전환되고 원래 대기 데이터베이스는 기본 역할로 전환됩니다.

**Topics**
+ [Oracle Data Guard 전환 개요](#oracle-replication-switchover.overview)
+ [Oracle Guard 전환 요구 사항](oracle-switchover.preparing.md)
+ [Oracle Data Guard 전환 단계](oracle-switchover.initiating.md)
+ [Oracle Data Guard 전환 모니터링](oracle-switchover.monitoring.md)

## Oracle Data Guard 전환 개요
<a name="oracle-replication-switchover.overview"></a>

mazon RDS는 Oracle Database 복제본에 대한 완전관리형 전환 기반 역할 전환을 지원합니다. 마운트되거나 읽기 전용으로 열려 있는 대기 데이터베이스로만 전환을 시작할 수 있습니다.

복제본은 별도의 AWS 리전에 있거나 단일 리전의 다른 가용 영역(AZ)에 있을 수 있습니다. 모든 AWS 리전가 지원됩니다.

![\[대기 인스턴스를 기본 DB 인스턴스로 전환\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/read-replica-switchover.png)


전환은 읽기 전용 복제본 승격과는 다릅니다. 전환 시 소스 및 복제본 DB 인스턴스의 역할이 변경됩니다. 승격 시 읽기 전용 복제본은 소스 DB 인스턴스가 되지만, 소스 DB 인스턴스는 복제본이 되지 않습니다. 자세한 내용은 [읽기 전용 복제본을 독립 DB 인스턴스로 승격](USER_ReadRepl.Promote.md) 섹션을 참조하세요.

**Topics**
+ [Oracle Data Guard 전환 이점](#oracle-replication-switchover.overview.benefits)
+ [지원되는 Oracle Database 버전](#oracle-replication-switchover.overview.engine-support)
+ [Oracle Data Guard 전환 비용](#oracle-replication-switchover.overview.cost)
+ [Oracle Data Guard 전환 작동 방식](#oracle-replication-switchover.overview.how-it-works)

### Oracle Data Guard 전환 이점
<a name="oracle-replication-switchover.overview.benefits"></a>

RDS for Oracle 읽기 전용 복제본과 마찬가지로 관리형 전환은 Oracle Data Guard에 의존합니다. 이 작업은 데이터 손실이 전혀 없도록 설계되었습니다. Amazon RDS는 전환의 다음 측면을 자동화합니다.
+ 기본 데이터베이스와 지정된 대기 데이터베이스의 역할을 반대로 하여 새 대기 데이터베이스를 원래 대기 데이터베이스와 동일한 상태(마운트 또는 읽기 전용)로 만듭니다.
+ 데이터 일관성을 보장합니다.
+ 전환 후에도 복제 구성을 유지합니다.
+ 반복 반전을 지원하여 새 대기 데이터베이스를 원래의 기본 역할로 되돌릴 수 있습니다.

### 지원되는 Oracle Database 버전
<a name="oracle-replication-switchover.overview.engine-support"></a>

Oracle Data Guard 전환은 Oracle Database 19c 이상 버전 릴리스에서 지원됩니다.

### Oracle Data Guard 전환 비용
<a name="oracle-replication-switchover.overview.cost"></a>

Oracle Data Guard 전환 기능에는 추가 비용이 발생하지 않습니다. Oracle Database Enterprise Edition에는 탑재된 모드에서 대기 데이터베이스에 대한 지원이 포함되어 있습니다. 대기 데이터베이스를 읽기 전용 모드에서 열려면 Oracle Active Data Guard 옵션이 필요합니다.

### Oracle Data Guard 전환 작동 방식
<a name="oracle-replication-switchover.overview.how-it-works"></a>

Oracle Data Guard 전환은 완전관리형 작업입니다. CLI 명령 `switchover-read-replica`을 발행하여 대기 데이터베이스의 전환을 시작합니다. 그런 다음 Amazon RDS가 복제 구성의 기본 및 대기 역할을 수정합니다.

이 *원래 대기* 및 *원본 기본*은 전환 이전에 존재하는 역할입니다. 이 *신규 대기* 및 *신규 기본*은 전환 이후에 존재하는 역할입니다. *방관자 복제본*은 Oracle Data Guard 환경에서 대기 데이터베이스 역할을 하지만 역할을 전환하지 않는 복제 데이터베이스입니다.

**Topics**
+ [Oracle Data Guard 전환 단계](#oracle-replication-switchover.overview.how-it-works.during-switchover)
+ [Oracle Data Guard 전환 단계](#oracle-replication-switchover.overview.how-it-works.after-switchover)

#### Oracle Data Guard 전환 단계
<a name="oracle-replication-switchover.overview.how-it-works.during-switchover"></a>

전환을 수행하려면 Amazon RDS는 다음 단계를 따라야 합니다.

1. 원래 기본 데이터베이스에서 새 트랜잭션을 차단합니다. 전환 중에 Amazon RDS는 Oracle Data Guard 구성의 모든 데이터베이스에 대한 복제를 중단합니다. 전환 중에는 원래 기본 데이터베이스가 쓰기 요청을 처리할 수 없습니다.

1. 적용되지 않은 트랜잭션을 원래 대기 데이터베이스로 출하하고 적용합니다.

1. 새 대기 데이터베이스를 읽기 전용 또는 마운트된 모드로 재시작합니다. 모드는 전환 전 원래 대기 데이터베이스의 열린 상태에 따라 달라집니다.

1. 새 기본 데이터베이스를 읽기/쓰기 모드에서 엽니다.

#### Oracle Data Guard 전환 단계
<a name="oracle-replication-switchover.overview.how-it-works.after-switchover"></a>

Amazon RDS는 기본 및 대기 데이터베이스의 역할을 전환합니다. 애플리케이션을 다시 연결하고 원하는 다른 구성을 수행하는 것은 사용자의 책임입니다.

**Topics**
+ [성공 기준](#oracle-replication-switchover.overview.how-it-works.after-switchover.success)
+ [새 기본 데이터베이스에 연결](#oracle-replication-switchover.overview.how-it-works.after-switchover.connection)
+ [새 기본 데이터베이스 구성](#oracle-replication-switchover.overview.how-it-works.after-switchover.success.configuration)

##### 성공 기준
<a name="oracle-replication-switchover.overview.how-it-works.after-switchover.success"></a>

Oracle Data Guard 전환은 원래 대기 데이터베이스가 다음을 수행할 때 성공합니다.
+ 새 기본 데이터베이스로서의 역할로 전환
+ 재구성 완료

가동 중지 시간을 제한하기 위해 새 기본 데이터베이스는 가능한 한 빨리 활성화됩니다. Amazon RDS는 방관자 복제본을 비동기적으로 구성하기 때문에 이러한 복제본은 원래 기본 데이터베이스 이후에 활성화될 수 있습니다.

##### 새 기본 데이터베이스에 연결
<a name="oracle-replication-switchover.overview.how-it-works.after-switchover.connection"></a>

Amazon RDS는 전환 후 현재 데이터베이스 연결을 새 기본 데이터베이스로 전파하지 않습니다. Oracle Data Guard 전환이 완료되면 애플리케이션을 새 기본 데이터베이스에 다시 연결합니다.

##### 새 기본 데이터베이스 구성
<a name="oracle-replication-switchover.overview.how-it-works.after-switchover.success.configuration"></a>

새 기본 데이터베이스로 전환하기 위해 Amazon RDS는 원래 대기 데이터베이스의 모드를 열림 상태로 변경합니다. 역할 변경은 이 데이터베이스의 유일한 변경 사항입니다. Amazon RDS는 다중 AZ 복제본과 같은 기능을 설정하지 않습니다.

다른 옵션을 사용하여 교차 리전 복제본으로 전환하는 경우 새 기본 데이터베이스는 자체 옵션을 유지합니다. Amazon RDS는 원래 기본 데이터베이스의 옵션을 마이그레이션하지 않습니다. 원래의 기본 데이터베이스에 SSL, NNE, OEM 및 OEM\$1AGENT와 같은 옵션이 있는 경우 Amazon RDS는 이를 새로운 기본 데이터베이스로 전파하지 않습니다.

# Oracle Guard 전환 요구 사항
<a name="oracle-switchover.preparing"></a>

Oracle Data Guard 전환을 시작하기 전에 복제 환경이 다음 요구 사항을 충족하는지 확인하세요.
+ 원래 대기 데이터베이스가 마운트되거나 읽기 전용으로 열려 있습니다.
+ 자동 백업은 원래 대기 데이터베이스에서 활성화됩니다.
+ 원래 기본 데이터베이스와 원래 대기 데이터베이스가 `available` 상태입니다.
+ 원래 기본 데이터베이스와 원래 대기 데이터베이스에 `required`, `next window` 또는 `in progress` 상태의 보류 중인 유지 관리 작업이 없습니다. 이러한 상태의 작업은 전환을 차단합니다. 보류 중인 유지 관리 업데이트의 상태를 확인하는 방법은 [보류 중인 유지 관리 업데이트 보기](USER_UpgradeDBInstance.Maintenance.md#USER_UpgradeDBInstance.Maintenance.Viewing) 섹션을 참조하세요.

  `available` 상태의 보류 중인 유지 관리 작업은 전환을 차단하지 않습니다. RDS for Oracle은 `available` 상태의 운영 체제(OS) 업데이트를 자주 릴리스합니다. 이러한 보류 중인 OS 업데이트는 다음 유지 관리 기간으로 예약하여 `next window` 상태가 되지 않는 한 전환을 차단하지 않습니다.
**참고**  
전환을 실행할 수 있도록 예약된 유지 관리 작업을 연기하려면 RDS 콘솔에서 **작업**을 선택한 다음 **업그레이드 보류**를 선택합니다. 보류 중인 유지 관리 작업을 적용하거나 유지 관리 기간을 전환 전 간격으로 이동하여 전환이 차단되는 것을 방지할 수도 있습니다. 자세한 내용은 re:Post 문서 [How to remove RDS pending maintenance items](https://repost.aws/questions/QUV3dBjmVVRnmVV1pAlzjx1w/how-to-remove-rds-pending-maintenance-item)를 참조하세요.
+ 원래 대기 데이터베이스가 복제 중 상태입니다.
+ 기본 데이터베이스 또는 대기 데이터베이스가 현재 전환 수명 주기 내에 있을 때는 전환을 시작하려고 하지 않습니다. 전환 후 복제본 데이터베이스를 재구성하는 경우 Amazon RDS에서는 다른 전환을 시작할 수 없습니다.
**참고**  
*방관자 복제본*은 전환 대상이 아닌 Oracle Data Guard 구성의 복제본입니다. 방관자 복제본은 전환 중에 어떤 상태로든 존재할 수 있습니다.
+ 원래 대기 데이터베이스에는 원래 기본 데이터베이스에 원하는 만큼 가까운 구성이 있습니다. 원래의 기본 데이터베이스와 원래 대기 데이터베이스의 옵션이 서로 다른 시나리오를 가정해 보겠습니다. 전환이 완료된 후 Amazon RDS는 원래 기본 데이터베이스와 동일한 옵션을 갖도록 새 기본 데이터베이스를 자동으로 재구성하지 않습니다.
+ 전환을 시작하기 전에 원하는 다중 AZ 배포를 구성합니다. Amazon RDS는 전환의 일환으로 다중 AZ를 관리하지 않습니다. 다중 AZ 배포는 그대로 유지됩니다.

  db\$1maz가 다중 AZ 배포의 기본 데이터베이스이고 db\$1sz가 단일 AZ 복제본이라고 가정해 보겠습니다. db\$1maz에서 db\$1sz로의 전환을 시작합니다. 다음으로 db\$1maz가 다중 AZ 복제본 데이터베이스이고 db\$1sz가 단일 AZ 기본 데이터베이스입니다. 새 기본 데이터베이스는 이제 다중 AZ 배포로 보호되지 않습니다.
+ 기본 데이터베이스는 리전 간 전환에 대비하여 복제 구성 외부의 DB 인스턴스와 동일한 옵션 그룹을 사용하지 않습니다. 리전 간 전환이 성공하려면 현재 기본 데이터베이스와 해당 읽기 전용 복제본이 현재 기본 데이터베이스의 옵션 그룹을 사용하는 유일한 DB 인스턴스여야 합니다. 그렇지 않으면 Amazon RDS에서 전환을 차단합니다.

# Oracle Data Guard 전환 단계
<a name="oracle-switchover.initiating"></a>

RDS for Oracle용 읽기 전용 복제본을 기본 역할로 전환하고 이전 기본 DB 인스턴스를 복제본 역할로 전환할 수 있습니다.

## 콘솔
<a name="USER_ReadRepl.Promote.Console"></a>

**Oracle 읽기 전용 복제본을 기본 DB 역할로 전환하려면**

1. [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)에서 AWS Management Console에 로그인한 후 Amazon RDS 콘솔을 엽니다.

1. Amazon RDS 콘솔에서 **데이터베이스**를 선택합니다.

   **데이터베이스** 창이 표시됩니다. 각 읽기 전용 복제본은 **역할** 열에 **복제본**이라고 표시됩니다.

1. 기본 역할로 전환하려는 읽기 전용 복제본을 선택합니다.

1. **작업**에서는 **복제본 전환**을 선택합니다.

1. **동의**를 선택합니다. 그런 다음 **복제본 전환**을 선택합니다.

1. **데이터베이스** 페이지에서 전환 진행 상황을 모니터링합니다.  
![\[Oracle Data Guard 전환 진행 상황을 모니터링합니다.\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/oracle-switchover-progress.png)

   전환이 완료되면 전환 대상의 역할이 **복제본**에서 **소스**로 바뀝니다.  
![\[소스 데이터베이스와 복제본 데이터베이스가 역할을 바꿉니다.\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/oracle-switchover-complete.png)

## AWS CLI
<a name="USER_ReadRepl.Promote.CLI"></a>

Oracle 복제본을 기본 DB 역할로 전환하려면 AWS CLI [https://docs.aws.amazon.com/cli/latest/reference/rds/switchover-read-replica.html](https://docs.aws.amazon.com/cli/latest/reference/rds/switchover-read-replica.html) 명령을 사용합니다. 다음 예에서는 *replica-to-be-made-primary*라는 Oracle 복제본을 새 기본 데이터베이스로 만듭니다.

**Example**  
대상 LinuxmacOS, 또는Unix:  

```
aws rds switchover-read-replica \
    --db-instance-identifier replica-to-be-made-primary
```
Windows의 경우:  

```
aws rds switchover-read-replica ^
    --db-instance-identifier replica-to-be-made-primary
```

## RDS API
<a name="USER_ReadRepl.Promote.API"></a>

Oracle 복제본을 기본 DB 역할로 전환하려면 필수 파라미터 `DBInstanceIdentifier`를 사용하여 Amazon RDS API [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_SwitchoverReadReplica.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_SwitchoverReadReplica.html) 작업을 호출합니다. 이 파라미터는 기본 DB 역할을 맡으려는 Oracle 복제본의 이름을 지정합니다.

# Oracle Data Guard 전환 모니터링
<a name="oracle-switchover.monitoring"></a>

인스턴스 상태를 확인하려면 AWS CLI 명령 `describe-db-instances`를 사용합니다. 다음 명령은 DB 인스턴스 *orcl2*의 상태를 확인합니다. 이 데이터베이스는 전환 전에는 대기 데이터베이스였지만 전환 후에는 새로운 기본 데이터베이스입니다.

```
aws rds describe-db-instances \
    --db-instance-identifier orcl2
```

전환이 성공적으로 완료되었는지 확인하려면 `V$DATABASE.OPEN_MODE`를 쿼리합니다. 새 기본 데이터베이스의 값이 `READ WRITE`인지 확인합니다.

```
SELECT OPEN_MODE FROM V$DATABASE;
```

전환 관련 이벤트를 찾으려면 AWS CLI 명령 `describe-events`를 사용합니다. 다음 예제에서는 *orcl2*에서 이벤트를 찾습니다.

```
aws rds describe-events \
    --source-identifier orcl2 \
    --source-type db-instance
```

# RDS for Oracle 복제본 문제 해결
<a name="oracle-read-replicas.troubleshooting"></a>

이 섹션에서는 발생할 수 있는 복제 문제 및 해결 방법에 대해 설명합니다.

**Topics**
+ [Oracle 복제 지연 모니터링](#oracle-read-replicas.troubleshooting.lag)
+ [트리거 추가 또는 수정 후 Oracle 복제 실패 문제 해결](#oracle-read-replicas.troubleshooting.triggers)

## Oracle 복제 지연 모니터링
<a name="oracle-read-replicas.troubleshooting.lag"></a>

Amazon CloudWatch에서 복제 지연 시간을 모니터링하려면 Amazon RDS `ReplicaLag` 지표를 확인합니다. 복제본 지연 시간에 대한 자세한 내용은 [읽기 전용 복제본 모니터링](USER_ReadRepl.Monitoring.md) 및 [Amazon RDS에 대한 Amazon CloudWatch 지표](rds-metrics.md) 단원을 참조하세요.

읽기 전용 복제본 지연 시간이 너무 긴 경우 다음 보기를 쿼리합니다.
+ `V$ARCHIVED_LOG` – 읽기 전용 복제본에 적용된 커밋을 표시합니다.
+ `V$DATAGUARD_STATS` – `ReplicaLag` 지표를 구성하는 구성 요소의 세부 분류를 표시합니다.
+ `V$DATAGUARD_STATUS` – Oracle의 내부 복제 프로세스의 로그 출력을 표시합니다.

탑재된 복제본의 경우, 지연 시간이 너무 긴 경우 `V$` 보기를 쿼리할 수 없습니다. 대신 다음을 수행합니다.
+ CloudWatch에서 `ReplicaLag` 지표를 확인합니다.
+ 콘솔에서 복제본에 대한 알림 로그 파일을 확인합니다. 복구 메시지에서 오류를 찾습니다. 메시지에는 기본 시퀀스 번호와 비교할 수 있는 로그 시퀀스 번호가 포함됩니다. 자세한 정보는 [Amazon RDS for Oracle 데이터베이스 로그 파일](USER_LogAccess.Concepts.Oracle.md)의 내용을 참조하세요.

## 트리거 추가 또는 수정 후 Oracle 복제 실패 문제 해결
<a name="oracle-read-replicas.troubleshooting.triggers"></a>

트리거를 추가하거나 수정하고 나서 복제가 실패하면 트리거가 문제가 될 수 있습니다. RDS에서 복제를 위해 필요한 다음 사용자 계정을 트리거가 제외하는지 확인합니다.
+ 관리자 권한을 가진 사용자 계정
+ `SYS`
+ `SYSTEM`
+ `RDS_DATAGUARD`
+ `rdsdb`

자세한 정보는 [RDS for Oracle 복제본에 대한 기타 고려 사항](oracle-read-replicas.limitations.md#oracle-read-replicas.limitations.miscellaneous)의 내용을 참조하세요.

# RDS for Oracle을 사용하여 전송 압축 다시 실행
<a name="oracle-read-replicas.redo-transport-compression"></a>

RDS for Oracle 다시 실행 전송 압축을 사용하여 기본 DB 인스턴스와 대기 복제본 간의 복제 성능을 개선합니다. 이는 네트워크 대역폭이 제한되거나 지연 시간이 긴 연결 환경에서 특히 유용합니다.

## 다시 실행 전송 압축에 대한 라이선스 획득
<a name="oracle-read-replicas.redo-transport-compression.license"></a>

다시 실행 전송 압축은 [Oracle 고급 압축](//www.oracle.com/database/advanced-compression/) 옵션의 일부입니다. 다시 실행 전송 압축을 사용하려면 Oracle 고급 압축 옵션에 유효한 라이선스가 필요합니다. 라이선싱에 대한 정보는 Oracle 담당자에게 문의하세요.

## 다시 실행 전송 압축 구성
<a name="oracle-read-replicas.redo-transport-compression.config"></a>

다시 실행 전송 압축을 구성하려면 `rds.replica.redo_compression` 파라미터를 사용할 수 있습니다. 이 파라미터는 Oracle 버전 19c 및 21c에서 사용할 수 있습니다.

`rds.replica.redo_compression` 파라미터는 다음 값 중 하나를 받습니다.
+ `DISABLE` - 다시 실행 전송 압축을 비활성화하는 기본값입니다.
+ `ENABLE` - 기본 알고리즘 [ZLIB](https://zlib.net/)를 통해 전송 압축을 다시 실행할 수 있는 값입니다.
+ `ZLIB` - 우수한 압축 비율을 제공하는 ZLIB 알고리즘을 사용하여 전송 압축 재실행을 명시적으로 활성화하는 값입니다.
+ `LZO` - 특히 압축 해제 중에 압축 속도를 최적화하는 [LZO](https://www.oberhumer.com/opensource/lzo/) 알고리즘을 사용하여 재실행 전송 압축을 명시적으로 활성화하는 값입니다.

## 다시 실행 전송 압축에 대한 성능 고려 사항
<a name="oracle-read-replicas.redo-transport-compression.performance"></a>

압축 및 압축 해제 작업은 기본 인스턴스와 대기 인스턴스 모두에서 CPU 리소스를 사용합니다. 다시 실행 전송 압축을 사용하는 경우 인스턴스 리소스 사용 및 네트워크 조건을 고려합니다.

## 다시 실행 전송 압축 관련 주제
<a name="oracle-read-replicas.redo-transport-compression.related"></a>

다시 실행 전송 압축 구성에 대한 자세한 내용은 다음 리소스를 참조하세요.
+ [Amazon RDS DB 인스턴스용 DB 파라미터 그룹](USER_WorkingWithDBInstanceParamGroups.md)
+ Oracle Database 19c 릴리스 정보의 [RedoCompression](https://docs.oracle.com/en/database/oracle/oracle-database/19/dgbkr/oracle-data-guard-broker-properties.html#GUID-5E6DDFD0-6196-48EB-94AF-21A1AFBB7DE1) 

# Oracle DB 인스턴스에 옵션 추가
<a name="Appendix.Oracle.Options"></a>

Amazon RDS에서 옵션은 추가 기능입니다. 다음에는 Oracle DB 엔진을 실행하는 Amazon RDS 인스턴스에 추가할 수 있는 옵션에 대한 설명이 나와 있습니다.

**Topics**
+ [Oracle DB 옵션 개요](Appendix.Oracle.Options.overview.md)
+ [Amazon S3 통합](oracle-s3-integration.md)
+ [Oracle Application Express(APEX)](Appendix.Oracle.Options.APEX.md)
+ [Amazon EFS 통합](oracle-efs-integration.md)
+ [Oracle Java 가상 머신](oracle-options-java.md)
+ [Oracle Enterprise Manager](Oracle.Options.OEM.md)
+ [Oracle 레이블 보안](Oracle.Options.OLS.md)
+ [Oracle Locator](Oracle.Options.Locator.md)
+ [Oracle 기본 네트워크 암호화](Appendix.Oracle.Options.NetworkEncryption.md)
+ [Oracle OLAP](Oracle.Options.OLAP.md)
+ [Oracle 보안 소켓 Layer](Appendix.Oracle.Options.SSL.md)
+ [Oracle Spatial](Oracle.Options.Spatial.md)
+ [Oracle SQLT](Oracle.Options.SQLT.md)
+ [Oracle Statspack](Appendix.Oracle.Options.Statspack.md)
+ [Oracle 시간대](Appendix.Oracle.Options.Timezone.md)
+ [Oracle 시간대 파일 자동 업그레이드](Appendix.Oracle.Options.Timezone-file-autoupgrade.md)
+ [Oracle Transparent Data Encryption](Appendix.Oracle.Options.AdvSecurity.md)
+ [Oracle UTL\$1MAIL](Oracle.Options.UTLMAIL.md)
+ [Oracle XML DB](Appendix.Oracle.Options.XMLDB.md)

# Oracle DB 옵션 개요
<a name="Appendix.Oracle.Options.overview"></a>

Oracle 데이터베이스에 대한 옵션을 활성화하려면 먼저 옵션 그룹에 추가한 다음 옵션 그룹을 DB 인스턴스에 연결해야 합니다. 자세한 내용은 [옵션 그룹 작업](USER_WorkingWithOptionGroups.md) 단원을 참조하십시오.

**Topics**
+ [Oracle Database 옵션 요약](#Appendix.Oracle.Options.summary)
+ [다른 버전에 대해 지원되는 옵션](#Appendix.Oracle.Options.editions)
+ [특정 옵션의 메모리 요구 사항](#Appendix.Oracle.Options.memory)

## Oracle Database 옵션 요약
<a name="Appendix.Oracle.Options.summary"></a>

Oracle DB 인스턴스에 대해 다음 옵션을 추가할 수 있습니다.


****  

| 옵션 | 옵션 ID | 
| --- | --- | 
|  [Amazon S3 통합](oracle-s3-integration.md)  |  `S3_INTEGRATION`  | 
|  [Oracle Application Express(APEX)](Appendix.Oracle.Options.APEX.md)  |  `APEX` `APEX-DEV`  | 
|  [Oracle Enterprise Manager](Oracle.Options.OEM.md)  |  `OEM` `OEM_AGENT`  | 
|  [Oracle Java 가상 머신](oracle-options-java.md)  |  `JVM`  | 
|  [Oracle 레이블 보안](Oracle.Options.OLS.md)  |  `OLS`  | 
|  [Oracle Locator](Oracle.Options.Locator.md)  |  `LOCATOR`  | 
|  [Oracle 기본 네트워크 암호화](Appendix.Oracle.Options.NetworkEncryption.md)  |  `NATIVE_NETWORK_ENCRYPTION`  | 
|  [Oracle OLAP](Oracle.Options.OLAP.md)  |  `OLAP`  | 
|  [Oracle 보안 소켓 Layer](Appendix.Oracle.Options.SSL.md)  |  `SSL`  | 
|  [Oracle Spatial](Oracle.Options.Spatial.md)  |  `SPATIAL`  | 
|  [Oracle SQLT](Oracle.Options.SQLT.md)  |  `SQLT`  | 
|  [Oracle Statspack](Appendix.Oracle.Options.Statspack.md)  |  `STATSPACK`  | 
|  [Oracle 시간대](Appendix.Oracle.Options.Timezone.md)  |  `Timezone`  | 
|  [Oracle 시간대 파일 자동 업그레이드](Appendix.Oracle.Options.Timezone-file-autoupgrade.md)  |  `TIMEZONE_FILE_AUTOUPGRADE`  | 
|  [Oracle Transparent Data Encryption](Appendix.Oracle.Options.AdvSecurity.md)  |  `TDE`  | 
|  [Oracle UTL\$1MAIL](Oracle.Options.UTLMAIL.md)  |  `UTL_MAIL`  | 
|  [Oracle XML DB](Appendix.Oracle.Options.XMLDB.md)  |  `XMLDB`  | 

## 다른 버전에 대해 지원되는 옵션
<a name="Appendix.Oracle.Options.editions"></a>

RDS for Oracle에서는 지원되지 않는 버전에 옵션을 추가할 수 없습니다. 다른 Oracle Database 버전에서 지원되는 RDS 옵션을 확인하려면 `aws rds describe-option-group-options` 명령을 사용하세요. 다음 예에서는 Oracle Database 19c Enterprise Edition에 대해 지원되는 옵션을 나열합니다.

```
aws rds describe-option-group-options \
    --engine-name oracle-ee \
    --major-engine-version 19
```

자세한 내용은 *AWS CLI 명령 참조*에서 [describe-option-group-options](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-option-group-options.html)를 참조하세요.

## 특정 옵션의 메모리 요구 사항
<a name="Appendix.Oracle.Options.memory"></a>

일부 옵션은 DB 인스턴스에서 실행하려면 추가 메모리가 필요합니다. 예를 들어 Oracle Enterprise Manager Database Control은 약 300MB의 RAM을 사용합니다. 작은 DB 인스턴스에 대해 이 옵션을 활성화할 경우 메모리 제약으로 인해 성능 문제가 발생할 수 있습니다. 데이터베이스에서 RAM에 대한 필요성이 줄어들도록 Oracle 파라미터를 조정할 수 있습니다. 또는 더 큰 DB 인스턴스로 확장할 수 있습니다.

# Amazon S3 통합
<a name="oracle-s3-integration"></a>

RDS for Oracle DB 인스턴스와 Amazon S3 버킷 사이에서 파일을 전송할 수 있습니다. Oracle Data Pump와 같은 Oracle Database 기능과의 Amazon S3 통합을 사용할 수 있습니다. 예를 들어 Amazon S3의 Data Pump 파일을 DB 인스턴스로 다운로드할 수 있습니다. 자세한 내용은 [Amazon RDS의 Oracle로 데이터 가져오기](Oracle.Procedural.Importing.md)을 참조하세요.

**참고**  
DB 인스턴스와 Amazon S3 버킷은 같은 AWS 리전에 있어야 합니다.

**Topics**
+ [Amazon S3와 RDS for Oracle 통합을 위한 IAM 권한 구성](oracle-s3-integration.preparing.md)
+ [Amazon S3 통합 옵션 추가](oracle-s3-integration.preparing.option-group.md)
+ [Amazon RDS for Oracle와 Amazon S3 버킷 사이의 파일 전송](oracle-s3-integration.using.md)
+ [Amazon S3 통합 문제 해결](#oracle-s3-integration.troubleshooting)
+ [Amazon S3 통합 옵션 제거](oracle-s3-integration.removing.md)

# Amazon S3와 RDS for Oracle 통합을 위한 IAM 권한 구성
<a name="oracle-s3-integration.preparing"></a>

RDS for Oracle이 Amazon S3와 통합되게 하려면 DB 인스턴스에 Amazon S3 버킷에 대한 액세스 권한이 있어야 합니다. DB 인스턴스가 사용하는 Amazon VPC가 Amazon S3 엔드포인트에 대한 액세스 권한을 제공할 필요가 없습니다.

RDS for Oracle은 한 계정의 DB 인스턴스와 다른 계정의 Amazon S3 버킷 간에 파일 전송을 지원합니다. 추가 단계가 필요한 경우 다음 섹션에 설명되어 있습니다.

**Topics**
+ [1단계: Amazon RDS 역할에 대한 IAM 정책 생성](#oracle-s3-integration.preparing.policy)
+ [2단계: (선택 사항) Amazon S3 버킷에 대한 IAM 정책 생성](#oracle-s3-integration.preparing.policy-bucket)
+ [3단계: DB 인스턴스에 대한 IAM 역할 생성 및 정책 연결](#oracle-s3-integration.preparing.role)
+ [4단계: IAM 역할을 RDS for Oracle DB 인스턴스와 연결하는 방법](#oracle-s3-integration.preparing.instance)

## 1단계: Amazon RDS 역할에 대한 IAM 정책 생성
<a name="oracle-s3-integration.preparing.policy"></a>

이 단계에서는 Amazon S3 버킷과 RDS DB 인스턴스 간에 파일을 전송하는 데 필요한 권한이 있는 AWS Identity and Access Management(IAM) 정책을 만듭니다. 이 단계에서는 이미 S3 버킷을 생성한 것으로 가정합니다.

정책을 생성하기 전에 다음 정보를 기록해 둡니다.
+ 버킷의 Amazon 리소스 이름(ARN)
+ 버킷에서 SSE-KMS 또는 SSE-S3 암호화를 사용하는 경우 AWS KMS 키에 대한 ARN
**참고**  
RDS for Oracle DB 인스턴스는 SSE-C로 암호화된 Amazon S3 버킷에 액세스할 수 없습니다.

자세한 내용은 *Amazon Simple Storage Service 사용 설명서*의 [서버 측 암호화를 사용하여 데이터 보호](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html)를 참조하세요.

### 콘솔
<a name="oracle-s3-integration.preparing.policy.console"></a>

**Amazon S3 버킷에 Amazon RDS 액세스를 허용하는 IAM 정책을 생성하려면**

1. [IAM 관리 콘솔](https://console.aws.amazon.com/iam/home?#home)을 엽니다.

1. **액세스 관리**에서 **정책**을 선택합니다.

1. **정책 생성(Create Policy)**을 선택합니다.

1. [**Visual editor**] 탭에서 [**Choose a service**]를 선택한 다음 [**S3**]을 선택합니다.

1. **작업**에서 **모두 확장**을 선택한 후 Amazon S3 버킷에서 Amazon RDS(으)로 파일을 전송하는 데 필요한 버킷 권한 및 객체 권한을 선택합니다. 예를 들어, 다음을 수행합니다.
   + **목록**을 확장한 후 **ListBucket**을 선택합니다.
   + **읽기**를 확장한 후 **GetObject**를 선택합니다.
   + **쓰기**를 확장한 다음 **PutObject**, **DeleteObject**, **AbortMultipartUpload** 및 **ListMultipartUploadParts**를 선택합니다. Amazon S3에 대용량 파일(100MB 이상)을 업로드할 때는 멀티파트 업로드 권한이 필요합니다.
   + **권한 관리(Permissions management)**를 확장한 다음 **PutObjectAcl**을 선택합니다. 이 권한은 다른 계정에서 소유한 버킷에 파일을 업로드할 계획이고 이 계정이 버킷 콘텐츠를 완전히 제어해야 하는 경우에 필요합니다.

   *객체 권한(Object permissions)*은 Amazon S3 객체 작업에 대한 권한입니다. 이 권한은 버킷 자체가 아닌 버킷의 객체에 부여해야 합니다. 자세한 내용은 [객체 작업에 대한 권한](https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-objects)을 참조하세요.

1. **리소스**를 선택하고 다음을 수행합니다.

   1. **특정 항목**을 선택합니다.

   1. **bucket**의 경우 **ARN 추가**를 선택합니다. 버킷 ARN을 입력합니다. 버킷 이름은 자동으로 입력됩니다. 그런 다음 **추가**를 선택합니다.

   1. **object** 리소스가 표시되면 **ARN 추가**를 선택하여 리소스를 수동으로 추가하거나 **임의**를 선택합니다.
**참고**  
**Amazon Resource Name(ARN)(Amazon 리소스 이름(ARN))**을 더 구체적인 ARN 값으로 설정하여 Amazon RDS에서 Amazon S3 버킷의 특정 파일 또는 폴더에만 액세스하도록 허용할 수 있습니다. Amazon S3에 대한 액세스 정책을 정의하는 방법에 대한 자세한 내용은 [Amazon S3 리소스에 대한 액세스 권한 관리](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html) 섹션을 참조하십시오.

1. (선택 사항) **추가 권한 추가**를 선택하여 정책에 리소스를 추가합니다. 예를 들어, 다음을 수행합니다.

   1. 버킷이 사용자 지정 KMS 키로 암호화되면 서비스에 대해 **KMS**를 선택합니다.

   1. **수동 작업**의 경우 다음을 선택합니다.
      + **암호화**
      + **ReEncrypt 시작 지점** 및 **ReEncrypt 종료 지점**
      + **Decrypt**
      + **DescribeKey**
      + **GenerateDataKey**

   1. **리소스**에서 **특정 항목**을 선택합니다.

   1. **key**의 경우 **ARN 추가**를 선택합니다. 사용자 지정 키의 ARN을 리소스로 입력한 다음, **추가**를 선택합니다.

      자세한 내용은 *Amazon Simple Storage Service 사용 설명서*의 [AWS Key Management Service(SSE-KMS)에 저장된 KMS 키로 서버 측 암호화를 사용하여 데이터 보호](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html)를 참조하세요.

   1. Amazon RDS가 다른 버킷에 액세스하게 하려면 이러한 버킷에 대한 ARN을 추가합니다. 또는 Amazon S3의 모든 버킷 및 객체에 대한 액세스 권한을 부여할 수도 있습니다.

1. **Next: Tags(다음: 태그)**를 선택한 후 **Next: Review(다음: 검토)**를 선택합니다.

1. **이름**에서 IAM 정책의 이름을 입력합니다(예: `rds-s3-integration-policy`). IAM 역할을 만들어 DB 인스턴스와 연결할 때 이 이름을 사용합니다. **Description** 값(선택 사항)을 추가할 수도 있습니다.

1. **정책 생성**을 선택합니다.

### AWS CLI
<a name="oracle-s3-integration.preparing.policy.CLI"></a>

Amazon RDS에 Amazon S3 버킷에 대한 액세스 권한을 부여하는 AWS Identity and Access Management(IAM) 정책을 생성합니다. 정책을 생성한 후 정책의 ARN을 기록해 둡니다. 이후 단계에 이 ARN이 필요합니다.

필요한 액세스 유형에 따라 정책에 적절한 조치를 포함합니다.
+ `GetObject` – Amazon S3 버킷에서 Amazon RDS로 파일을 전송하는 데 필요합니다.
+ `ListBucket` – Amazon S3 버킷에서 Amazon RDS로 파일을 전송하는 데 필요합니다.
+ `PutObject` – Amazon RDS에서 Amazon S3 버킷으로 파일을 전송하는 데 필요합니다.
+ `AbortMultipartUpload` - Amazon RDS에서 Amazon S3 버킷으로 대용량 파일(100MB 이상)을 전송하는 멀티파트 업로드에 필요합니다.
+ `ListMultipartUploadParts` - Amazon RDS에서 Amazon S3 버킷으로 대용량 파일(100MB 이상)을 전송하는 멀티파트 업로드에 필요합니다.

다음 AWS CLI 명령은 이 옵션으로 `rds-s3-integration-policy`라는 IAM 정책을 만듭니다. `amzn-s3-demo-bucket`이라는 버킷에 대한 액세스 권한을 부여합니다.

**Example**  
대상 LinuxmacOS, 또는Unix:  

```
aws iam create-policy \
   --policy-name rds-s3-integration-policy \
   --policy-document '{
     "Version": "2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "s3integration",
         "Action": [
           "s3:GetObject",
           "s3:ListBucket",
           "s3:PutObject",
           "s3:AbortMultipartUpload",
           "s3:ListMultipartUploadParts"
         ],
         "Effect": "Allow",
         "Resource": [
           "arn:aws:s3:::amzn-s3-demo-bucket", 
           "arn:aws:s3:::amzn-s3-demo-bucket/*"
         ]
       }
     ]
   }'
```
다음 예제에는 사용자 지정 KMS 키에 대한 사용 권한이 포함되어 있습니다.  

```
aws iam create-policy \
   --policy-name rds-s3-integration-policy \
   --policy-document '{
     "Version": "2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "s3integration",
         "Action": [
           "s3:GetObject",
           "s3:ListBucket",
           "s3:PutObject",
           "kms:Decrypt",
           "kms:Encrypt",
           "kms:ReEncrypt*",
           "kms:GenerateDataKey",
           "kms:DescribeKey",
         ],
         "Effect": "Allow",
         "Resource": [
           "arn:aws:s3:::amzn-s3-demo-bucket", 
           "arn:aws:s3:::amzn-s3-demo-bucket/*",
           "arn:aws:kms:::your-kms-arn"
         ]
       }
     ]
   }'
```
Windows의 경우:  

```
aws iam create-policy ^
   --policy-name rds-s3-integration-policy ^
   --policy-document '{
     "Version": "2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "s3integration",
         "Action": [
           "s3:GetObject",
           "s3:ListBucket",
           "s3:PutObject",
           "s3:AbortMultipartUpload",
           "s3:ListMultipartUploadParts"
         ],
         "Effect": "Allow",
         "Resource": [
           "arn:aws:s3:::amzn-s3-demo-bucket", 
           "arn:aws:s3:::amzn-s3-demo-bucket/*"
         ]
       }
     ]
   }'
```
다음 예제에는 사용자 지정 KMS 키에 대한 사용 권한이 포함되어 있습니다.  

```
aws iam create-policy ^
   --policy-name rds-s3-integration-policy ^
   --policy-document '{
     "Version": "2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "s3integration",
         "Action": [
           "s3:GetObject",
           "s3:ListBucket",
           "s3:PutObject",
           "kms:Decrypt",
           "kms:Encrypt",
           "kms:ReEncrypt",
           "kms:GenerateDataKey",
           "kms:DescribeKey",
         ],
         "Effect": "Allow",
         "Resource": [
           "arn:aws:s3:::amzn-s3-demo-bucket", 
           "arn:aws:s3:::amzn-s3-demo-bucket/*",
           "arn:aws:kms:::your-kms-arn"
         ]
       }
     ]
   }'
```

## 2단계: (선택 사항) Amazon S3 버킷에 대한 IAM 정책 생성
<a name="oracle-s3-integration.preparing.policy-bucket"></a>

이 단계는 다음 조건에서만 필요합니다.
+ 한 계정(계정 A)에서 Amazon S3 버킷에 파일을 업로드하고 다른 계정(계정 B)에서 액세스할 계획입니다.
+ 계정 B가 버킷을 소유하고 있습니다.
+ 계정 B는 버킷에 로드된 객체를 완전히 제어해야 합니다.

앞서 나온 조건에 해당하지 않는 경우 [3단계: DB 인스턴스에 대한 IAM 역할 생성 및 정책 연결](#oracle-s3-integration.preparing.role)으로 건너뜁니다.

버킷 정책을 생성하려면 다음이 있어야 합니다.
+ 계정 A의 계정 ID
+ 계정 A의 사용자 이름
+ 계정 B의 Amazon S3 버킷에 대한 ARN 값

### 콘솔
<a name="oracle-s3-integration.preparing.policy-bucket.console"></a>

**버킷 정책 생성 또는 편집**

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)에서 Amazon S3 콘솔을 엽니다.

1. **버킷** 목록에서 버킷 정책을 만들 버킷 이름 또는 버킷 정책을 편집할 버킷 이름을 선택합니다.

1. **Permissions**를 선택합니다.

1. **버킷 정책**에서 **편집**을 선택합니다. 버킷 정책 편집(Edit bucket policy) 페이지가 열립니다.

1. **버킷 정책 편집 **페이지에서 *Amazon S3 사용 설명서*의 **정책 예제**를 탐색하거나 **정책 생성기**를 선택하여 정책을 자동으로 생성하거나 **정책** 섹션에서 JSON을 편집합니다.

   **정책 생성기(Policy generator)**를 선택하면 새 창에서 AWS 정책 생성기가 열립니다.

   1. **AWS 정책 생성기** 페이지의 **정책 유형 선택**에서 **S3 버킷 정책**을 선택합니다.

   1. 제공된 필드에 정보를 입력하여 명령문을 추가한 다음 **명령문 추가(Add Statement)**를 선택합니다. 명령문을 추가하려는 만큼 반복합니다. 이러한 필드에 대한 자세한 내용은 *IAM 사용 설명서*의 [IAM JSON 정책 요소 참조](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html)를 참조하세요.
**참고**  
편의상 **버킷 정책 편집(Edit bucket policy)** 페이지는 **정책(Policy)** 텍스트 필드 위에 현재 버킷의 **버킷 ARN(Bucket ARN)**(Amazon 리소스 이름)을 표시합니다. **AWS 정책 생성기** 페이지의 명령문에 사용하기 위해 이 ARN을 복사할 수 있습니다.

   1. 명령문 추가를 마친 후 **정책 생성(Generate Policy)**을 선택합니다.

   1. 생성된 정책 텍스트를 복사하고 **닫기(Close)**를 선택하고 Amazon S3 콘솔의 **버킷 정책 편집(Edit bucket policy)** 페이지로 돌아갑니다.

1. **정책(Policy)** 상자에서 기존 정책을 편집하거나 정책 생성기에서 버킷 정책을 붙여 넣습니다. 정책을 저장하기 전에 보안 경고, 오류, 일반 경고 및 제안 사항을 해결해야 합니다.

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "ExamplePermissions",
         "Effect": "Allow",
         "Principal": {
           "AWS": "arn:aws:iam::123456789012:user/account-A-user"
         },
         "Action": [
           "s3:PutObject",
           "s3:PutObjectAcl"
         ],
         "Resource": [
           "arn:aws:s3:::amzn-s3-demo-destination-bucket",
           "arn:aws:s3:::amzn-s3-demo-destination-bucket/*"
         ]
       }
     ]
   }
   ```

------

1. **변경 사항 저장**을 선택하면 버킷 권한 페이지로 돌아갑니다.

## 3단계: DB 인스턴스에 대한 IAM 역할 생성 및 정책 연결
<a name="oracle-s3-integration.preparing.role"></a>

이 단계에서는 [1단계: Amazon RDS 역할에 대한 IAM 정책 생성](#oracle-s3-integration.preparing.policy)에서 IAM 정책을 생성했다고 가정합니다. 그리고 RDS for Oracle DB 인스턴스에 대한 역할을 생성한 다음 해당 역할에 정책을 연결합니다.

### 콘솔
<a name="oracle-s3-integration.preparing.role.console"></a>

**Amazon S3 버킷에 Amazon RDS 액세스를 허용하는 IAM 역할을 생성하려면**

1. [IAM 관리 콘솔](https://console.aws.amazon.com/iam/home?#home)을 엽니다.

1. 탐색 창에서 **Roles**를 선택합니다.

1. **역할 생성(Create role)**을 선택합니다.

1. **AWS 서비스**를 선택합니다.

1. 기타 **AWS 서비스 사용 사례**에서 **RDS**를 선택한 다음 **RDS - 데이터베이스에 역할 추가**를 선택합니다. 이후 **다음**을 선택합니다.

1. **권한 정책**의 **검색**에 [1단계: Amazon RDS 역할에 대한 IAM 정책 생성](#oracle-s3-integration.preparing.policy)에서 생성한 IAM 정책의 이름을 입력하고, 목록에 표시된 정책을 선택합니다. 그리고 **다음**을 선택합니다.

1. **역할 이름**에 IAM 역할의 이름을 입력합니다(예: `rds-s3-integration-role`). **설명** 값(선택 사항)을 추가할 수도 있습니다.

1. **역할 생성**을 선택합니다.

### AWS CLI
<a name="integration.preparing.role.CLI"></a>

**역할을 생성하고 역할에 정책을 연결하는 방법**

1. Amazon RDS가 Amazon S3 버킷에 액세스하기 위해 사용자 대신 가정할 수 있는 IAM 역할을 만듭니다.

   서비스 권한을 특정 리소스로 제한하는 리소스 기반 신뢰 관계의 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn) 및 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount) 전역 조건 컨텍스트 키를 사용하는 것이 좋습니다. 이는 [혼동된 대리자 문제](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html)를 방지하는 가장 효과적인 방법입니다.

   전역 조건 컨텍스트 키를 모두 사용하고 `aws:SourceArn` 값에 계정 ID가 포함되도록 할 수 있습니다. 이 경우 `aws:SourceAccount` 값과 `aws:SourceArn` 값의 계정이 동일한 문에서 사용될 때 동일한 계정 ID를 사용해야 합니다.
   + 단일 리소스에 대한 교차 서비스 액세스를 원하는 경우 `aws:SourceArn`을 사용하세요.
   + 해당 계정의 모든 리소스가 교차 서비스 사용과 연결되도록 허용하려는 경우 `aws:SourceAccount`를 사용하세요.

   신뢰 정책에서는 역할에 액세스하는 리소스의 전체 Amazon 리소스 이름(ARN)이 포함된 `aws:SourceArn` 전역 조건 컨텍스트 키를 사용해야 합니다.

   다음 AWS CLI 명령은 이 목적으로 `rds-s3-integration-role`이라는 역할을 생성합니다.  
**Example**  

   대상 LinuxmacOS, 또는Unix:

   ```
   aws iam create-role \
      --role-name rds-s3-integration-role \
      --assume-role-policy-document '{
        "Version": "2012-10-17",		 	 	 
        "Statement": [
          {
            "Effect": "Allow",
            "Principal": {
               "Service": "rds.amazonaws.com"
             },
            "Action": "sts:AssumeRole",
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "my_account_ID",
                    "aws:SourceArn": "arn:aws:rds:Region:my_account_ID:db:dbname"
                }
            }
          }
        ]
      }'
   ```

   Windows의 경우:

   ```
   aws iam create-role ^
      --role-name rds-s3-integration-role ^
      --assume-role-policy-document '{
        "Version": "2012-10-17",		 	 	 
        "Statement": [
          {
            "Effect": "Allow",
            "Principal": {
               "Service": "rds.amazonaws.com"
             },
            "Action": "sts:AssumeRole",
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "my_account_ID",
                    "aws:SourceArn": "arn:aws:rds:Region:my_account_ID:db:dbname"
                }
            }
          }
        ]
      }'
   ```

   자세한 내용은 *IAM 사용 설명서*의 [IAM 사용자에게 권한을 위임하기 위한 역할 생성](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html)을 참조하십시오.

1. 역할이 생성되면 역할의 ARN을 기록하십시오. 이후 단계에 이 ARN이 필요합니다.

1. 생성한 정책을 생성한 역할에 연결하십시오.

   다음 AWS CLI 명령은 정책을 `rds-s3-integration-role`이라는 역할에 연결합니다.  
**Example**  

   대상 LinuxmacOS, 또는Unix:

   ```
   aws iam attach-role-policy \
      --policy-arn your-policy-arn \
      --role-name rds-s3-integration-role
   ```

   Windows의 경우:

   ```
   aws iam attach-role-policy ^
      --policy-arn your-policy-arn ^
      --role-name rds-s3-integration-role
   ```

   `your-policy-arn`을 이전 단계에서 기록한 정책 ARN으로 바꾸세요.

## 4단계: IAM 역할을 RDS for Oracle DB 인스턴스와 연결하는 방법
<a name="oracle-s3-integration.preparing.instance"></a>

Amazon S3 통합 권한을 구성하는 마지막 단계는 IAM 역할을 DB 인스턴스와 연결하는 것입니다. 다음과 같은 요구 사항을 확인합니다.
+ 필수 Amazon S3 권한 정책이 연결된 IAM 역할에 대한 액세스 권한이 있어야 합니다.
+ 한 번에 하나의 IAM 역할만 RDS for Oracle DB 인스턴스에 연결할 수 있습니다.
+ DB 인스턴스는 **사용 가능** 상태여야 합니다.

### 콘솔
<a name="oracle-s3-integration.preparing.instance.console"></a>

**IAM 역할을 RDS for Oracle DB 인스턴스와 연결하는 방법**

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)에서 Amazon RDS 콘솔을 엽니다.

1. 탐색 창에서 **데이터베이스**를 선택합니다.

1. 세부 정보를 표시하고자 하는 RDS for Oracle DB 인스턴스 이름을 선택합니다.

1. **연결성 및 보안(Connectivity & security)** 탭에서 페이지 하단의 **IAM 역할 관리(Manage IAM roles)** 섹션이 나올 때까지 아래로 스크롤합니다.

1. **IAM 역할을 이 인스턴스에 추가**에는 [3단계: DB 인스턴스에 대한 IAM 역할 생성 및 정책 연결](#oracle-s3-integration.preparing.role)에서 생성한 역할을 선택합니다.

1. **기능**에서 **S3\$1INTEGRATION**을 선택하십시오.  
![\[S3_INTEGRATION 역할 추가\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/ora-s3-integration-role.png)

1. [**Add role**]을 선택합니다.

### AWS CLI
<a name="oracle-s3-integration.preparing.instance.CLI"></a>

다음 AWS CLI 명령은 `mydbinstance`라는 Oracle DB 인스턴스에 역할을 추가합니다.

**Example**  
대상 LinuxmacOS, 또는Unix:  

```
aws rds add-role-to-db-instance \
   --db-instance-identifier mydbinstance \
   --feature-name S3_INTEGRATION \
   --role-arn your-role-arn
```
Windows의 경우:  

```
aws rds add-role-to-db-instance ^
   --db-instance-identifier mydbinstance ^
   --feature-name S3_INTEGRATION ^
   --role-arn your-role-arn
```

`your-role-arn`을 이전 단계에서 기록한 역할 ARN으로 바꿉니다. `S3_INTEGRATION` 옵션에 대해 `--feature-name`을 지정해야 합니다.

# Amazon S3 통합 옵션 추가
<a name="oracle-s3-integration.preparing.option-group"></a>

Amazon RDS for Oracle을 Amazon S3와 통합하려면 DB 인스턴스가 `S3_INTEGRATION` 옵션을 포함하는 옵션 그룹과 연결되어 있어야 합니다.

## 콘솔
<a name="oracle-s3-integration.preparing.option-group.console"></a>

**Amazon S3 통합을 위한 옵션 그룹을 구성하려면**

1. 새 옵션 그룹을 만들거나 `S3_INTEGRATION` 옵션을 추가할 수 있는 기존 옵션 그룹을 식별하십시오.

   옵션 그룹의 생성에 대한 자세한 내용은 [옵션 그룹 생성](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Create) 단원을 참조하십시오.

1. [`S3_INTEGRATION`] 옵션을 옵션 그룹에 추가합니다.

   옵션 그룹에 옵션을 추가하는 방법에 대한 자세한 내용은 [옵션 그룹에 옵션 추가](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.AddOption) 단원을 참조하십시오.

1. 새 RDS for Oracle DB 인스턴스를 생성하고 옵션 그룹을 연결하거나, RDS for Oracle DB 인스턴스를 수정하여 옵션 그룹을 연결합니다.

   DB 인스턴스 생성에 대한 자세한 내용은 [Amazon RDS DB 인스턴스 생성](USER_CreateDBInstance.md) 단원을 참조하십시오.

   DB 인스턴스 수정에 대한 자세한 내용은 [g70][/g70][g69][/g69] 섹션을 참조하세요.

## AWS CLI
<a name="oracle-s3-integration.preparing.option-group.cli"></a>

**Amazon S3 통합을 위한 옵션 그룹을 구성하려면**

1. 새 옵션 그룹을 만들거나 `S3_INTEGRATION` 옵션을 추가할 수 있는 기존 옵션 그룹을 식별하십시오.

   옵션 그룹의 생성에 대한 자세한 내용은 [옵션 그룹 생성](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Create) 단원을 참조하십시오.

1. [`S3_INTEGRATION`] 옵션을 옵션 그룹에 추가합니다.

   예를 들어 다음 AWS CLI 명령은 `S3_INTEGRATION` 옵션을 **myoptiongroup**이라는 옵션 그룹에 추가합니다.  
**Example**  

   대상 LinuxmacOS, 또는Unix:

   ```
   aws rds add-option-to-option-group \
      --option-group-name myoptiongroup \
      --options OptionName=S3_INTEGRATION,OptionVersion=1.0
   ```

   Windows의 경우:

   ```
   aws rds add-option-to-option-group ^
      --option-group-name myoptiongroup ^
      --options OptionName=S3_INTEGRATION,OptionVersion=1.0
   ```

1. 새 RDS for Oracle DB 인스턴스를 생성하고 옵션 그룹을 연결하거나, RDS for Oracle DB 인스턴스를 수정하여 옵션 그룹을 연결합니다.

   DB 인스턴스 생성에 대한 자세한 내용은 [Amazon RDS DB 인스턴스 생성](USER_CreateDBInstance.md) 섹션을 참조하세요.

   RDS for Oracle DB 인스턴스 수정에 대한 자세한 내용은 [Amazon RDS DB 인스턴스 수정](Overview.DBInstance.Modifying.md) 섹션을 참조하세요.

# Amazon RDS for Oracle와 Amazon S3 버킷 사이의 파일 전송
<a name="oracle-s3-integration.using"></a>

RDS for Oracle DB 인스턴스와 Amazon S3 버킷 간에 파일을 전송하려면 Amazon RDS 패키지 `rdsadmin_s3_tasks`를 사용하면 됩니다. 파일을 업로드할 때 GZIP으로 파일을 압축하고 다운로드 시 압축을 풀 수 있습니다.

**Topics**
+ [파일 전송 요구 사항 및 제한 사항](#oracle-s3-integration.using.reqs)
+ [RDS for Oracle DB 인스턴스에서 Amazon S3 버킷으로 파일 업로드](#oracle-s3-integration.using.upload)
+ [Amazon S3 버킷의 파일을 Oracle DB 인스턴스로 다운로드](#oracle-s3-integration.using.download)
+ [파일 전송 상태 모니터링](#oracle-s3-integration.using.task-status)

## 파일 전송 요구 사항 및 제한 사항
<a name="oracle-s3-integration.using.reqs"></a>

DB 인스턴스와 Amazon S3 버킷 사이에서 파일을 전송하기 전에 다음에 유의하세요.
+ `rdsadmin_s3_tasks` 패키지는 단일 디렉터리에서 파일을 전송합니다. 전송에 하위 디렉터리를 포함시킬 수 없습니다.
+ Amazon S3 버킷의 최대 객체 크기는 5TB입니다.
+ `rdsadmin_s3_tasks`에서 생성한 작업은 비동기적으로 실행됩니다.
+ Data Pump 디렉터리(예: `DATA_PUMP_DIR` 또는 사용자 생성 디렉터리)에서 파일을 업로드할 수 있습니다. Oracle 백그라운드 프로세스에서 사용하는 디렉터리(예: `adump`, `bdump`, 또는 `trace` 디렉터리)에서는 파일을 업로드할 수 없습니다.
+ 다운로드 제한은 `download_from_s3`의 프로시저 직접 호출당 파일 2,000개입니다. Amazon S3에서 2,000개 이상의 파일을 다운로드해야 하는 경우 프로시저 호출당 2,000개 이하의 파일로 다운로드를 개별 작업으로 분할하세요.
+ 다운로드 폴더에 파일이 있고 같은 이름의 파일을 다운로드하려고 하면 `download_from_s3`를 통해 다운로드를 건너뜁니다. 다운로드 디렉터리에서 파일을 제거하려면 PL/SQL 프로시저 [UTL\$1FILE.FREMOVE](https://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/UTL_FILE.html#GUID-09B09C2A-2C21-4F70-BF04-D0EEA7B59CAF)를 사용하세요.

## RDS for Oracle DB 인스턴스에서 Amazon S3 버킷으로 파일 업로드
<a name="oracle-s3-integration.using.upload"></a>

DB 인스턴스에서 Amazon S3 버킷으로 파일을 업로드하려면 절차 `rdsadmin.rdsadmin_s3_tasks.upload_to_s3`를 참조하면 됩니다. 예를 들어 Oracle Recovery Manager(RMAN) 백업 파일 또는 Oracle Data Pump 파일을 업로드할 수 있습니다. 객체 작업에 대한 자세한 내용은 [Amazon Simple Storage Service 사용 설명서](https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingObjects.html)를 참조하세요. RMAN 백업 수행에 대한 자세한 내용은 [Oracle DB 인스턴스에 대한 공통 RMAN 작업 수행](Appendix.Oracle.CommonDBATasks.RMAN.md) 단원을 참조하세요.

`rdsadmin.rdsadmin_s3_tasks.upload_to_s3` 프로시저에는 다음과 같은 파라미터가 있습니다.


****  

| 파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | 
|  `p_bucket_name`  |  VARCHAR2  |  –  |  필수  |  파일을 업로드할 Amazon S3 버킷의 이름입니다.  | 
|  `p_directory_name`  |  VARCHAR2  |  –  |  필수  |  파일을 업로드할 Oracle 디렉터리 객체의 이름입니다. 이 디렉터리는 사용자가 생성한 디렉터리 객체 또는 Data Pump 디렉터리(예: `DATA_PUMP_DIR`)일 수 있습니다. 백그라운드 프로세스에서 사용하는 디렉터리(예: `adump`, `bdump`, 또는 `trace` 디렉터리)에서는 파일을 업로드할 수 없습니다.  지정된 디렉터리의 파일만 업로드할 수 있습니다. 지정된 디렉터리의 하위 디렉터리에서는 파일을 업로드할 수 없습니다.   | 
|  `p_s3_prefix`  |  VARCHAR2  |  –  |  필수  |  파일이 업로드되는 Amazon S3 파일 이름 접두사입니다. 빈 접두사는 모든 파일을 지정된 Amazon S3 버킷의 최상위 레벨에 업로드하며, 접두사를 파일 이름에 추가하지 않습니다. 예를 들어 접두사가 `folder_1/oradb`이면 파일이 `folder_1`에 업로드됩니다. 이 경우 `oradb` 접두사가 각 파일에 추가됩니다.  | 
|  `p_prefix`  |  VARCHAR2  |  –  |  필수  |  업로드되기 위해 파일 이름과 일치해야 하는 파일 이름 접두사입니다. 빈 접두사는 지정된 디렉터리의 모든 파일을 업로드합니다.  | 
|  `p_compression_level`  |  NUMBER  |  `0`   |  선택 사항  |  GZIP 압축 수준입니다. 사용할 수 있는 값은 `0`\$1`9`입니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/oracle-s3-integration.using.html)  | 
|  `p_bucket_owner_full_control`  |  VARCHAR2  |  –  |  선택 사항  |  버킷에 대한 액세스 제어 설정입니다. 유일하게 유효한 값은 null과 `FULL_CONTROL`입니다. 이 설정은 한 계정(계정 A)의 파일을 다른 계정(계정 B)에서 소유한 버킷으로 업로드하고 계정 B가 해당 파일을 완전히 제어해야 하는 경우에만 필요합니다.  | 

`rdsadmin.rdsadmin_s3_tasks.upload_to_s3` 프로시저의 반환 값이 작업 ID입니다.

다음 예제에서는 `DATA_PUMP_DIR` 디렉터리에 있는 모든 파일을 *amzn-s3-demo-bucket*이라는 이름의 Amazon S3 버킷에 업로드합니다. 파일이 압축되지 않습니다.

```
SELECT rdsadmin.rdsadmin_s3_tasks.upload_to_s3(
      p_bucket_name    =>  'amzn-s3-demo-bucket',
      p_prefix         =>  '', 
      p_s3_prefix      =>  '', 
      p_directory_name =>  'DATA_PUMP_DIR') 
   AS TASK_ID FROM DUAL;
```

다음 예제에서는 `db` 디렉터리에 있는 `DATA_PUMP_DIR` 접두사의 모든 파일을 `amzn-s3-demo-bucket`이라는 이름의 Amazon S3 버킷에 업로드합니다. Amazon RDS는 파일에 최고 수준의 GZIP 압축을 적용합니다.

```
SELECT rdsadmin.rdsadmin_s3_tasks.upload_to_s3(
      p_bucket_name       =>  'amzn-s3-demo-bucket', 
      p_prefix            =>  'db', 
      p_s3_prefix         =>  '', 
      p_directory_name    =>  'DATA_PUMP_DIR',
      p_compression_level =>  9) 
   AS TASK_ID FROM DUAL;
```

다음 예제에서는 `DATA_PUMP_DIR` 디렉터리에 있는 모든 파일을 `amzn-s3-demo-bucket`이라는 이름의 Amazon S3 버킷에 업로드합니다. 파일은 `dbfiles` 폴더에 업로드됩니다. 이 예제에서 GZIP 압축 수준은 가장 빠른 압축 수준인 *1*입니다.

```
SELECT rdsadmin.rdsadmin_s3_tasks.upload_to_s3(
      p_bucket_name       =>  'amzn-s3-demo-bucket', 
      p_prefix            =>  '', 
      p_s3_prefix         =>  'dbfiles/', 
      p_directory_name    =>  'DATA_PUMP_DIR',
      p_compression_level =>  1) 
   AS TASK_ID FROM DUAL;
```

다음 예제에서는 `DATA_PUMP_DIR` 디렉터리에 있는 모든 파일을 `amzn-s3-demo-bucket`이라는 이름의 Amazon S3 버킷에 업로드합니다. 파일은 `dbfiles` 폴더에 업로드되고 `ora`는 각 파일 이름의 시작 부분에 추가됩니다. 압축이 적용되지 않습니다.

```
SELECT rdsadmin.rdsadmin_s3_tasks.upload_to_s3(
      p_bucket_name    =>  'amzn-s3-demo-bucket', 
      p_prefix         =>  '', 
      p_s3_prefix      =>  'dbfiles/ora', 
      p_directory_name =>  'DATA_PUMP_DIR') 
   AS TASK_ID FROM DUAL;
```

다음 예제에서는 명령이 계정 A에서 실행되지만, 계정 B에서 버킷 콘텐츠를 완전히 제어해야 한다고 가정합니다. 명령 `rdsadmin_s3_tasks.upload_to_s3`는 `DATA_PUMP_DIR` 디렉터리의 모든 파일을 `s3bucketOwnedByAccountB`라는 이름의 버킷으로 전송합니다. 액세스 제어가 `FULL_CONTROL`로 설정되어 계정 B가 버킷의 파일에 액세스할 수 있습니다. GZIP 압축 수준은 속도 및 파일 크기가 균형을 이루는 *6*입니다.

```
SELECT rdsadmin.rdsadmin_s3_tasks.upload_to_s3(
      p_bucket_name               =>  's3bucketOwnedByAccountB', 
      p_prefix                    =>  '', 
      p_s3_prefix                 =>  '', 
      p_directory_name            =>  'DATA_PUMP_DIR',
      p_bucket_owner_full_control =>  'FULL_CONTROL',
      p_compression_level         =>  6) 
   AS TASK_ID FROM DUAL;
```

각 예에서, `SELECT` 문은 `VARCHAR2` 데이터 형식으로 작업 ID를 반환합니다.

작업의 출력 파일을 표시하여 결과를 볼 수 있습니다.

```
SELECT text FROM table(rdsadmin.rds_file_util.read_text_file('BDUMP','dbtask-task-id.log'));
```

*`task-id`*를 절차에서 반환된 작업 ID로 대체합니다.

**참고**  
작업은 비동기식으로 실행됩니다.

## Amazon S3 버킷의 파일을 Oracle DB 인스턴스로 다운로드
<a name="oracle-s3-integration.using.download"></a>

RDS for Oracle 인스턴스로 Amazon S3 버킷의 파일을 다운로드하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_s3_tasks.download_from_s3`를 사용하십시오.

`download_from_s3` 프로시저에는 다음과 같은 파라미터가 있습니다.


****  

| 파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | 
|  `p_bucket_name`  |  VARCHAR2  |  –  |  필수  |  파일을 다운로드할 수 있는 Amazon S3 버킷의 이름입니다.  | 
|  `p_directory_name`  |  VARCHAR2  |  –  |  필수  |  파일을 다운로드할 Oracle 디렉터리 객체의 이름입니다. 이 디렉터리는 사용자가 생성한 디렉터리 객체 또는 Data Pump 디렉터리(예: `DATA_PUMP_DIR`)일 수 있습니다.  | 
|  `p_error_on_zero_downloads`  |  VARCHAR2  | FALSE |  선택  |  Amazon S3 버킷에 접두사와 일치하는 객체가 없을 때 작업에서 오류가 발생하는지 여부를 결정하는 플래그입니다. 이 파라미터가 설정되지 않았거나 FALSE(기본값)로 설정된 경우 작업은 객체를 찾을 수 없다는 메시지를 인쇄하지만 예외를 발생시키거나 실패하지는 않습니다. 이 파라미터가 TRUE이면 작업에서 예외가 발생하고 실패합니다. 일치 테스트에 실패할 수 있는 접두사 사양의 예로는 `' import/test9.log'`와 같은 접두사의 공백과 `test9.log` 및 `test9.LOG`와 같은 대/소문자 불일치가 있습니다.  | 
|  `p_s3_prefix`  |  VARCHAR2  |  –  |  필수  |  다운로드되기 위해 파일 이름과 일치해야 하는 파일 이름 접두사입니다. 빈 접두사는 지정된 Amazon S3 버킷에 모든 상위 수준 파일을 다운로드하고, 버킷의 폴더에는 파일을 다운로드하지 않습니다. 이 프로시저는 접두사와 일치하는 첫 레벨 폴더에서만 Amazon S3개 객체를 다운로드합니다. 지정된 접두사와 일치하는 중첩된 디렉터리 구조는 다운로드되지 않습니다. 예를 들어 Amazon S3 버킷에 `folder_1/folder_2/folder_3` 폴더 구조가 있다고 가정합니다. `'folder_1/folder_2/'` 접두사를 지정합니다. 이 경우 `folder_2`의 파일만 다운로드되고 `folder_1` 또는 `folder_3`의 파일은 다운로드되지 않습니다. 대신에 `'folder_1/folder_2'` 접두사를 지정하는 경우에는 `folder_1` 접두사와 일치하는 `'folder_2'`의 모든 파일들이 다운로드되고, `folder_2`의 파일들은 다운로드되지 않습니다.  | 
|  `p_decompression_format`  |  VARCHAR2  |  –  |  선택  |  압축 형식입니다. 유효 값은 압축 해제 미적용 시 `NONE`, 압축 해제 적용 시 `GZIP`입니다.  | 

`rdsadmin.rdsadmin_s3_tasks.download_from_s3` 프로시저의 반환 값이 작업 ID입니다.

다음 예에서는 `amzn-s3-demo-bucket`라는 Amazon S3 버킷의 모든 파일을 `DATA_PUMP_DIR` 디렉터리로 다운로드합니다. 파일은 압축되지 않으므로 압축 해제가 적용되지 않습니다.

```
SELECT rdsadmin.rdsadmin_s3_tasks.download_from_s3(
      p_bucket_name    =>  'amzn-s3-demo-bucket',
      p_directory_name =>  'DATA_PUMP_DIR') 
   AS TASK_ID FROM DUAL;
```

다음 예제에서는 `db`이라는 Amazon S3 버킷에서 접두사가 `amzn-s3-demo-bucket`인 모든 파일을 `DATA_PUMP_DIR` 디렉터리로 다운로드합니다. 파일이 GZIP으로 압축되므로 압축 해제가 적용됩니다. 파라미터 `p_error_on_zero_downloads`는 접두사 오류 검사를 켜므로 접두사가 버킷의 파일과 일치하지 않으면 작업이 예외를 발생시키고 실패합니다.

```
SELECT rdsadmin.rdsadmin_s3_tasks.download_from_s3(
      p_bucket_name               =>  'amzn-s3-demo-bucket', 
      p_s3_prefix                 =>  'db', 
      p_directory_name            =>  'DATA_PUMP_DIR',
      p_decompression_format      =>  'GZIP',
      p_error_on_zero_downloads   =>  'TRUE') 
   AS TASK_ID FROM DUAL;
```

다음 예제에서는 `myfolder/`이라는 Amazon S3 버킷의 `amzn-s3-demo-bucket` 폴더에 있는 모든 파일을 `DATA_PUMP_DIR` 디렉터리로 다운로드합니다. `p_s3_prefix` 파라미터를 사용하여 Amazon S3 폴더를 지정합니다. 업로드된 파일은 GZIP으로 압축되지만, 다운로드 중에는 압축이 풀리지 않습니다.

```
SELECT rdsadmin.rdsadmin_s3_tasks.download_from_s3(
      p_bucket_name          =>  'amzn-s3-demo-bucket', 
      p_s3_prefix            =>  'myfolder/', 
      p_directory_name       =>  'DATA_PUMP_DIR',
      p_decompression_format =>  'NONE')
   AS TASK_ID FROM DUAL;
```

다음 예에서는 `amzn-s3-demo-bucket`이라는 Amazon S3 버킷의 `mydumpfile.dmp` 파일을 `DATA_PUMP_DIR` 디렉터리로 다운로드합니다. 압축 해제가 적용되지 않습니다.

```
SELECT rdsadmin.rdsadmin_s3_tasks.download_from_s3(
      p_bucket_name    =>  'amzn-s3-demo-bucket', 
      p_s3_prefix      =>  'mydumpfile.dmp', 
      p_directory_name =>  'DATA_PUMP_DIR') 
   AS TASK_ID FROM DUAL;
```

각 예에서, `SELECT` 문은 `VARCHAR2` 데이터 형식으로 작업 ID를 반환합니다.

작업의 출력 파일을 표시하여 결과를 볼 수 있습니다.

```
SELECT text FROM table(rdsadmin.rds_file_util.read_text_file('BDUMP','dbtask-task-id.log'));
```

*`task-id`*를 절차에서 반환된 작업 ID로 대체합니다.

**참고**  
작업은 비동기식으로 실행됩니다.  
`UTL_FILE.FREMOVE` Oracle 프로시저를 사용하여 디렉터리에서 파일을 제거할 수 있습니다. 자세한 내용은 Oracle 설명서의 [FREMOVE 프로시저](https://docs.oracle.com/database/121/ARPLS/u_file.htm#ARPLS70924)를 참조하십시오.

## 파일 전송 상태 모니터링
<a name="oracle-s3-integration.using.task-status"></a>

파일 전송 작업은 Amazon RDS 이벤트가 시작되고 완료될 때 이벤트를 게시합니다. 이벤트 메시지에 파일 전송을 위한 작업 ID가 포함됩니다. 이벤트 보기에 대한 자세한 내용은 [Amazon RDS 이벤트 보기](USER_ListEvents.md) 단원을 참조하십시오.

진행 중인 작업의 상태를 bdump 파일에서 볼 수 있습니다. 이 bdump 파일은 `/rdsdbdata/log/trace` 디렉터리에 위치합니다. 각 bdump 파일 이름은 다음 형식으로 되어 있습니다.

```
dbtask-task-id.log
```

`task-id`를 모니터링하고자 하는 작업의 ID로 바꾸십시오.

**참고**  
작업은 비동기식으로 실행됩니다.

`rdsadmin.rds_file_util.read_text_file` 저장 프로시저를 사용하여 bdump 파일의 내용을 볼 수 있습니다. 예를 들어, 다음 쿼리는 `dbtask-1234567890123-1234.log` bdump 파일의 내용을 반환합니다.

```
SELECT text FROM table(rdsadmin.rds_file_util.read_text_file('BDUMP','dbtask-1234567890123-1234.log'));
```

다음 샘플에서는 전송 실패에 대한 로그 파일을 보여줍니다.

```
TASK_ID                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1234567890123-1234


TEXT                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
2023-04-17 18:21:33.993 UTC [INFO ] File #1: Uploading the file /rdsdbdata/datapump/A123B4CDEF567890G1234567890H1234/sample.dmp to Amazon S3 with bucket name amzn-s3-demo-bucket and key sample.dmp.
2023-04-17 18:21:34.188 UTC [ERROR] RDS doesn't have permission to write to Amazon S3 bucket name amzn-s3-demo-bucket and key sample.dmp.
2023-04-17 18:21:34.189 UTC [INFO ] The task failed.
```

## Amazon S3 통합 문제 해결
<a name="oracle-s3-integration.troubleshooting"></a>

문제 해결 팁을 보려면 AWS re:Post 문서인 [Amazon RDS for Oracle을 Amazon S3와 통합할 때 발생하는 문제를 해결하려면 어떻게 해야 합니까?](https://repost.aws/en/knowledge-center/rds-oracle-s3-integration)를 참조하세요.

# Amazon S3 통합 옵션 제거
<a name="oracle-s3-integration.removing"></a>

DB 인스턴스에서 Amazon S3 통합 옵션을 제거할 수 있습니다.

DB 인스턴스에서 Amazon S3 통합 옵션을 제거하려면 다음 중 하나를 수행합니다.
+ 여러 DB 인스턴스에서 Amazon S3 통합 옵션을 제거하려면 DB 인스턴스가 속한 옵션 그룹에서 해당 `S3_INTEGRATION` 옵션을 제거합니다. 이 변경은 해당 옵션 그룹을 사용하는 모든 DB 인스턴스에 영향을 미칩니다. 자세한 내용은 [옵션 그룹에서 옵션 제거](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.RemoveOption)을 참조하세요.

   
+ 단일 DB 인스턴스에서 Amazon S3 통합 옵션을 제거하려면 인스턴스를 수정하고 `S3_INTEGRATION` 옵션이 포함되지 않은 다른 옵션 그룹을 지정합니다. 기본(비어 있음) 옵션 그룹을 지정하거나 다른 사용자 지정 옵션 그룹을 지정할 수 있습니다. 자세한 내용은 [Amazon RDS DB 인스턴스 수정](Overview.DBInstance.Modifying.md)을 참조하세요.

# Oracle Application Express(APEX)
<a name="Appendix.Oracle.Options.APEX"></a>

Amazon RDS는 `APEX` 및 `APEX-DEV` 옵션 사용을 통해 Oracle Application Express(APEX)를 지원합니다. Oracle APEX를 웹 기반 애플리케이션을 위한 런타임 환경 또는 전체 개발 환경으로 배포할 수 있습니다. 사용자는 Oracle APEX를 사용하여 웹 브라우저 내에서 전체 애플리케이션을 빌드할 수 있습니다. 자세한 내용은 Oracle 문서의 [Oracle Application Express](https://apex.oracle.com/)를 참조하세요.

**Topics**
+ [Oracle APEX 구성 요소](#Appendix.Oracle.Options.APEX.components)
+ [요구 사항 및 제한 사항](Appendix.Oracle.Options.APEX.Requirements.md)
+ [Oracle APEX 및 Oracle Rest Data Services(ORDS) 설정](Appendix.Oracle.Options.APEX.settingUp.md)
+ [Oracle Rest Data Services(ORDS) 구성](Appendix.Oracle.Options.APEX.ORDSConf.md)
+ [Oracle APEX 업그레이드 및 제거](Appendix.Oracle.Options.APEX.UpgradeandRemove.md)

## Oracle APEX 구성 요소
<a name="Appendix.Oracle.Options.APEX.components"></a>

Oracle APEX는 다음과 같은 주요 구성 요소로 구성됩니다.
+ *리포지토리* - Oracle APEX 애플리케이션 및 구성 요소에 대한 메타데이터를 저장합니다. 리포지토리는 Amazon RDS DB 인스턴스에 설치되는 테이블, 인덱스 및 기타 객체로 구성됩니다.
+ *listener* - Oracle APEX 클라이언트와의 HTTP 통신을 관리합니다. 리스너는 Amazon EC2 인스턴스, 회사의 온프레미스 서버 또는 사용자의 데스크톱 컴퓨터와 같은 별도의 호스트에 상주합니다. 리스너는 웹 브라우저에서 수신되는 유입 연결을 허용하고 처리를 위해 해당 연결을 Amazon RDS DB 인스턴스에 전달한 다음, 리포지토리의 결과를 브라우저로 다시 보냅니다.

  RDS for Oracle은 다음과 같은 유형의 리스너를 지원합니다.
  + Oracle APEX 버전 5.0 이상은 Oracle REST Data Services(ORDS) 버전 19.1 이상을 사용합니다. 지원되는 최신 버전의 Oracle APEX 및 ORDS를 사용하는 것이 좋습니다. 이 설명서에서는 이전 버전과의 호환성에 대해서만 이전 버전을 설명합니다.
  + Oracle APEX 버전 4.1.1의 경우 Oracle APEX Listener 버전 1.1.4를 사용할 수 있습니다.
  + Oracle HTTP 서버 및 `mod_plsql` 리스너를 사용할 수 있습니다.
**참고**  
Amazon RDS는 Oracle APEX의 리스너로 PL/SQL 게이트웨이가 내장된 Oracle XML DB HTTP 서버를 지원하지 않습니다. 일반적으로 Oracle은 인터넷 기반 애플리케이션용으로 포함된 PL/SQL 게이트웨이 사용을 권장합니다.

  이러한 리스너 유형에 대한 자세한 내용은 Oracle 설명서에서 [About Choosing a Web Listener](https://docs.oracle.com/database/apex-5.1/HTMIG/choosing-web-listener.htm#HTMIG29321)를 참조하세요.

`APEX` 및 `APEX-DEV` 옵션을 RDS for Oracle DB 인스턴스에 추가하면 Amazon RDS에서 Oracle APEX 리포지토리만 설치합니다. 리스너를 별도의 호스트에 설치합니다.

# 요구 사항 및 제한 사항
<a name="Appendix.Oracle.Options.APEX.Requirements"></a>

다음 주제에는 Oracle APEX 및 ORDS의 요구 사항과 제한 사항이 나와 있습니다.

## Oracle APEX 버전 요구 사항
<a name="Appendix.Oracle.Options.APEX.versions"></a>

`APEX` 옵션은 DB 인스턴스에 대한 DB 인스턴스 클래스의 스토리지를 사용합니다. 다음은 Oracle APEX에 대한 지원 버전과 대략적인 스토리지 요구 사항입니다.


****  

| Oracle APEX 버전 | 스토리지 요구 사항 | 지원되는 Oracle Database 버전 | 참고 | 
| --- | --- | --- | --- | 
|  Oracle APEX 버전 24.2.v1  |  114MiB  |  모두  |  이 버전은 패치 37885097: APEX 24.2용 PSE 번들(24.2.0 기반 PSES), PATCH\$1VERSION 4를 포함합니다.  | 
|  Oracle APEX 버전 24.1.v1  |  112MiB  |  모두  |  이 버전은 패치 36695709: APEX 24.1용 PSE 번들(24.1.0 기반 PSES), PATCH\$1VERSION 3을 포함합니다. EC2 인스턴스에 설치할 APEX 이미지 버전이 정확히 동일한 경우 패치 37544819: 24.1.3 PSE BUNDLE FOR APEX 24.1(PSES ON TOP OF 24.1.0)을 다운로드합니다.  | 
|  Oracle APEX 버전 23.2.v1  |  110MiB  |  모두  |  이 버전에는 패치 35895964: APEX 23.2용 PSE 번들(23.2.0 기반 PSES), PATCH\$1VERSION 6이 포함됩니다. EC2 인스턴스에 설치할 APEX 이미지 버전이 정확히 동일한 경우 패치 37593125: 23.2.6 PSE BUNDLE FOR APEX 23.2(PSES ON TOP OF 23.2.0)을 다운로드합니다.  | 
|  Oracle APEX 버전 23.1.v1  |  106MiB  |  모두  |  이 버전은 패치 35283657: APEX 23.1용 PSE 번들(23.1.0 기반 PSES), PATCH\$1VERSION 2를 포함합니다.  | 
|  Oracle APEX 버전 22.2.v1  |  106MiB  |  모두  |  이 버전은 패치 34628174: APEX 22.2용 PSE 번들(22.2.0 기반 PSES), PATCH\$1VERSION 4를 포함합니다.  | 
|  Oracle APEX 버전 22.1.v1  |  124MiB  |  모두  |  이 버전은 패치 34020981: APEX 22.1용 PSE 번들(22.1.0 기반 PSES), PATCH\$1VERSION 6을 포함합니다.  | 
|  Oracle APEX 버전 21.1.v1  |  125MiB  |  모두  |  이 버전은 패치 33420059: APEX 21.2용 PSE 번들(21.2.0 기반 PSES), PATCH\$1VERSION 8을 포함합니다.  | 
|  Oracle APEX 버전 21.1.v1  |  125MiB  |  모두  |  이 버전은 패치 32598392: APEX 21.1용 PSE 번들, PATCH\$1VERSION 3를 포함합니다.  | 
|  Oracle APEX 버전 20.2.v1  |  148MiB  |  Oracle Database 21c를 제외한 모든 제품  |  이 버전은 패치 32006852: APEX 20.2용 PSE 번들, PATCH\$1VERSION 2020.11.12를 포함합니다. 다음 쿼리를 실행하여 패치 번호와 날짜를 확인할 수 있습니다. <pre>SELECT PATCH_VERSION, PATCH_NUMBER <br />FROM   APEX_PATCHES;</pre>  | 
|  Oracle APEX 버전 20.1.v1  |  173MiB  |  Oracle Database 21c를 제외한 모든 제품  |  이 버전은 패치 30990551: APEX 20.1용 PSE 번들, PATCH\$1VERSION 2020.07.15를 포함합니다.  | 
|  Oracle APEX 버전 19.2.v1  |  149 MiB  |  Oracle Database 21c를 제외한 모든 제품  |  | 
|  Oracle APEX 버전 19.1.v1  |  148MiB  |  Oracle Database 21c를 제외한 모든 제품  |  | 

다운로드 가능한 Oracle APEX .zip 파일은 Oracle 웹 사이트의 [Oracle APEX 이전 릴리스 아카이브](https://www.oracle.com/tools/downloads/apex-all-archives-downloads.html)를 참조하세요.

## Oracle APEX 및 ORDS 사전 조건
<a name="Appendix.Oracle.Options.APEX.PreReqs"></a>

Oracle APEX 및 ORDS 사용의 사전 조건은 다음과 같습니다.
+ 시스템이 Java 런타임 환경(JRE)을 사용해야 합니다.
+ Oracle 클라이언트 설치에는 다음이 포함되어야 합니다.
  + 관리 작업을 위한 SQL\$1Plus 또는 SQL Developer
  + RDS for Oracle DB 인스턴스에 대한 연결을 구성하기 위한 Oracle Net Services

## Oracle APEX 제한 사항
<a name="Appendix.Oracle.Options.APEX.limitations"></a>

Amazon RDS에서 관리하는 `APEX_version` 사용자 계정은 수정할 수 없습니다. 따라서 이 사용자에게 데이터베이스 프로필을 적용하거나 암호 규칙을 적용할 수 없습니다. `APEX_version`의 프로필 및 암호 설정은 Oracle 및 AWS에서 사전 정의하며 Amazon RDS의 보안 요구 사항을 충족하도록 설계되었습니다.

# Oracle APEX 및 Oracle Rest Data Services(ORDS) 설정
<a name="Appendix.Oracle.Options.APEX.settingUp"></a>

다음 주제에서는 Oracle APEX 및 ORDS를 설정하는 데 필요한 단계를 나열합니다.

**Topics**
+ [DB 인스턴스에 APEX 및 APEX-DEV 옵션 추가](#Appendix.Oracle.Options.APEX.Add)
+ [DB 인스턴스의 퍼블릭 사용자 계정 잠금 해제](#Appendix.Oracle.Options.APEX.PublicUser)
+ [Oracle APEX용 RESTful 서비스 구성](#Appendix.Oracle.Options.APEX.ConfigureRESTful)
+ [별도의 호스트에 ORDS 설치 준비](#Appendix.Oracle.Options.APEX.ORDS.ords-setup)
+ [Oracle APEX Listener 설정](#Appendix.Oracle.Options.APEX.Listener)

## DB 인스턴스에 APEX 및 APEX-DEV 옵션 추가
<a name="Appendix.Oracle.Options.APEX.Add"></a>

RDS for Oracle DB 인스턴스에 `APEX` 및 `APEX-DEV` 옵션을 추가하려면 다음을 수행합니다.

1. 새 옵션 그룹을 생성하거나 기존 옵션 그룹을 복사 또는 수정합니다.

1. 옵션 그룹에 `APEX` 및 `APEX-DEV` 옵션을 추가합니다.

1. 옵션 그룹과 DB 인스턴스를 연결합니다.

`APEX` 및 `APEX-DEV` 옵션을 추가하는 경우 DB 인스턴스를 자동으로 다시 시작하는 동안 잠시 작동이 중단됩니다.

**참고**  
`APEX` 옵션이 설치되면 `APEX_MAIL`을 사용할 수 있습니다. `APEX_MAIL` 패키지에 대한 실행 권한은 `PUBLIC`에 부여되므로 APEX 관리자 계정이 없어도 사용할 수 있습니다.

**DB 인스턴스에 APEX 및 APEX-DEV 옵션을 추가하는 방법**

1. 사용할 옵션 그룹을 결정합니다. 새 옵션 그룹을 생성하거나 기존 옵션 그룹을 사용합니다. 기존 옵션 그룹을 사용하려면 다음 단계로 건너뛰십시오. 그렇지 않으면 다음 설정을 사용하여 사용자 지정 DB 옵션을 생성합니다.

   1. [**Engine**]에서 사용할 Oracle 버전을 선택합니다. 모든 버전에서 `APEX` 및 `APEX-DEV` 옵션이 지원됩니다.

   1. **메이저 엔진 버전**에서 DB 인스턴스의 버전을 선택합니다.

   자세한 내용은 [옵션 그룹 생성](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Create) 섹션을 참조하세요.

1. 해당 옵션을 옵션 그룹에 추가합니다. Oracle APEX 런타임 환경만 배포하려면 `APEX` 옵션만 추가합니다. 전체 개발 환경을 배포하려면 `APEX` 및 `APEX-DEV` 옵션을 모두 추가합니다.

   **버전**에서 사용하고자 하는 Oracle APEX 버전을 선택합니다.
**중요**  
하나 이상의 DB 인스턴스에 이미 연결되어 있는 기존 옵션 그룹에 `APEX` 또는 `APEX-DEV` 옵션을 추가하면 인스턴스가 잠시 중단됩니다. 이때 모든 DB 인스턴스가 자동으로 다시 시작됩니다.

   옵션 추가에 대한 자세한 내용은 [옵션 그룹에 옵션 추가](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.AddOption) 섹션을 참조하세요.

1. 옵션 그룹을 새 DB 인스턴스 또는 기존 DB 인스턴스에 적용합니다: 
   + 새 DB 인스턴스의 경우, 인스턴스를 시작할 때 옵션 그룹을 적용합니다. 자세한 내용은 [Amazon RDS DB 인스턴스 생성](USER_CreateDBInstance.md) 섹션을 참조하세요.
   + 기존 DB 인스턴스의 경우, 해당 인스턴스를 수정하고 새 옵션 그룹을 연결하여 옵션 그룹을 적용합니다. 기존 DB 인스턴스에 `APEX` 또는 `APEX-DEV` 옵션을 추가하는 경우 DB 인스턴스를 자동으로 다시 시작하는 동안 인스턴스가 잠시 중단됩니다. 자세한 내용은 [Amazon RDS DB 인스턴스 수정](Overview.DBInstance.Modifying.md) 섹션을 참조하세요.

## DB 인스턴스의 퍼블릭 사용자 계정 잠금 해제
<a name="Appendix.Oracle.Options.APEX.PublicUser"></a>

`APEX` 또는 `APEX-DEV` 옵션을 DB 인스턴스에 설치한 후 다음 작업을 수행해야 합니다.

1. `APEX_PUBLIC_USER` 계정의 암호를 변경합니다.

1. 계정의 잠금을 해제합니다.

이 작업은 Oracle SQL\$1Plus 명령줄 유틸리티를 사용하여 수행할 수 있습니다. DB 인스턴스에 마스터 사용자로 연결하고 다음 명령을 실행합니다. `new_password`를 원하는 암호로 바꿉니다.

```
1. ALTER USER APEX_PUBLIC_USER IDENTIFIED BY new_password;
2. ALTER USER APEX_PUBLIC_USER ACCOUNT UNLOCK;
```

## Oracle APEX용 RESTful 서비스 구성
<a name="Appendix.Oracle.Options.APEX.ConfigureRESTful"></a>

Oracle APEX에 RESTful 서비스를 구성하려면(Oracle APEX 4.1.1.V1에는 필요하지 않음) SQL\$1Plus를 사용하여 마스터 사용자로서 DB 인스턴스에 연결합니다. 그런 다음 `rdsadmin.rdsadmin_run_apex_rest_config` 저장 프로시저를 실행합니다. 저장 프로시저를 실행할 때 다음 사용자를 위한 암호를 제공합니다.
+ `APEX_LISTENER`
+ `APEX_REST_PUBLIC_USER`

저장 프로시저는 이들 사용자를 위해 새 데이터베이스 계정을 만드는 `apex_rest_config.sql` 스크립트를 실행합니다.

**참고**  
Oracle APEX 버전 4.1.1.v1을 위한 구성은 필요하지 않습니다. 이 Oracle APEX 버전에 한해 저장 프로시저를 실행할 필요가 없습니다.

다음 명령으로 저장 프로시저를 실행합니다.

```
1. EXEC rdsadmin.rdsadmin_run_apex_rest_config('apex_listener_password', 'apex_rest_public_user_password');
```

## 별도의 호스트에 ORDS 설치 준비
<a name="Appendix.Oracle.Options.APEX.ORDS.ords-setup"></a>

Amazon EC2 인스턴스, 회사의 온프레미스 서버 또는 사용자의 데스크톱 컴퓨터와 같은 별도의 호스트에 ORDS를 설치합니다. 이 섹션의 예제에서는 호스트가 Linux를 실행하고 `myapexhost.example.com` 이름이 지정되었다고 가정합니다.

ORDS를 설치하려면 먼저 권한 없는 OS 사용자를 생성한 다음, Oracle APEX 설치 파일을 다운로드하여 압축을 풀어야 합니다.

**ORDS 설치를 준비하려면**

1. `myapexhost.example.com`에 `root`로 로그인합니다.

1. 리스너 설치를 소유할 권한 없는 OS 사용자를 생성합니다. 다음 명령은 *apexuser*라는 새 사용자를 생성합니다.

   ```
   useradd -d /home/apexuser apexuser
   ```

   다음 명령은 새로운 사용자에게 암호를 할당합니다.

   ```
   passwd apexuser;
   ```

1. `myapexhost.example.com`에 `apexuser`로 로그인하고, Oracle의 Oracle APEX 설치 파일을 `/home/apexuser` 디렉터리에 다운로드합니다.
   + [http://www.oracle.com/technetwork/developer-tools/apex/downloads/index.html](http://www.oracle.com/technetwork/developer-tools/apex/downloads/index.html) 
   + [Oracle Application Express Prior Release Archives](http://www.oracle.com/technetwork/developer-tools/apex/downloads/all-archives-099381.html) 

1. `/home/apexuser` 디렉터리에서 파일의 압축을 풉니다.

   ```
   unzip apex_version.zip
   ```

   파일의 압축을 풀면 `apex` 디렉터리에 `/home/apexuser` 디렉터리가 있습니다.

1. `myapexhost.example.com`에 `apexuser`로 로그인한 상태에서 Oracle REST Data Services 파일을 Oracle에서 `/home/apexuser` 디렉터리로 다운로드합니다. [http://www.oracle.com/technetwork/developer-tools/apex-listener/downloads/index.html](http://www.oracle.com/technetwork/developer-tools/apex-listener/downloads/index.html)

## Oracle APEX Listener 설정
<a name="Appendix.Oracle.Options.APEX.Listener"></a>

**참고**  
Oracle APEX Listener는 더 이상 사용되지 않습니다.

Amazon RDS for Oracle은 Oracle APEX 버전 4.1.1 및 Oracle APEX Listener 버전 1.1.4를 계속 지원합니다. 지원되는 최신 버전의 Oracle APEX 및 ORDS를 사용하는 것이 좋습니다.

Amazon EC2 인스턴스, 회사의 온프레미스 서버 또는 사용자의 데스크톱 컴퓨터와 같은 별도의 호스트에 Oracle APEX Listener를 설치합니다. 여기에서는 호스트의 이름이 `myapexhost.example.com`이고 이 호스트에서 Linux를 실행 중이라고 가정합니다.

### Oracle APEX Listener 설치 준비
<a name="Appendix.Oracle.Options.APEX.Listener.preparing"></a>

Oracle APEX Listener를 설치하려면 먼저 권한 없는 OS 사용자를 생성한 다음, Oracle APEX 설치 파일을 다운로드하여 압축을 풀어야 합니다.

**Oracle APEX Listener 설치를 준비하려면**

1. `myapexhost.example.com`에 `root`로 로그인합니다.

1. 리스너 설치를 소유할 권한 없는 OS 사용자를 생성합니다. 다음 명령은 *apexuser*라는 새 사용자를 생성합니다.

   ```
   useradd -d /home/apexuser apexuser
   ```

   다음 명령은 새로운 사용자에게 암호를 할당합니다.

   ```
   passwd apexuser;
   ```

1. `myapexhost.example.com`에 `apexuser`로 로그인하고, Oracle의 Oracle APEX 설치 파일을 `/home/apexuser` 디렉터리에 다운로드합니다.
   + [http://www.oracle.com/technetwork/developer-tools/apex/downloads/index.html](http://www.oracle.com/technetwork/developer-tools/apex/downloads/index.html) 
   + [Oracle Application Express Prior Release Archives](http://www.oracle.com/technetwork/developer-tools/apex/downloads/all-archives-099381.html) 

1. `/home/apexuser` 디렉터리에서 파일의 압축을 풉니다.

   ```
   unzip apex_<version>.zip                
   ```

   파일의 압축을 풀면 `apex` 디렉터리에 `/home/apexuser` 디렉터리가 있습니다.

1. `myapexhost.example.com`에 `apexuser`로 여전히 로그인되어 있는 경우, Oracle의 Oracle APEX 리스너 파일을 `/home/apexuser` 디렉터리에 다운로드합니다.

#### Oracle APEX Listener 설치 및 구성
<a name="Appendix.Oracle.Options.APEX.Listener.installing"></a>

Oracle APEX를 사용하기 전에 `apex.war` 파일을 다운로드하고 Java를 사용하여 Oracle APEX Listener를 설치한 다음 리스너를 시작해야 합니다.

**Oracle APEX Listener를 설치하고 구성하려면**

1. Oracle APEX Listener를 기반으로 새 디렉터리를 생성하고 리스너 파일을 엽니다.

   다음 코드를 실행합니다.

   ```
   mkdir /home/apexuser/apexlistener
   cd /home/apexuser/apexlistener 
   unzip ../apex_listener.version.zip
   ```

1. 다음 코드를 실행합니다.

   ```
   java -Dapex.home=./apex -Dapex.images=/home/apexuser/apex/images -Dapex.erase -jar ./apex.war
   ```

1. 다음 프로그램 프롬프트에 정보를 입력합니다.
   + APEX Listener 관리자 이름. 기본값은 *adminlistener*입니다.
   + APEX Listener 관리자의 암호 
   + APEX Listener Manger의 사용자 이름입니다. 기본값은 *managerlistener*입니다.
   + APEX Listener 관리자의 암호 

   다음과 같이 구성을 완료하는 데 필요한 URL이 인쇄됩니다.

   ```
   INFO: Please complete configuration at: http://localhost:8080/apex/listenerConfigure
   Database is not yet configured
   ```

1. Oracle Application Express를 사용할 수 있도록 Oracle APEX Listener를 계속 실행합니다. 이 구성 절차를 마치면 Listener를 백그라운드에서 실행할 수 있습니다.

1. 웹 브라우저에서 Oracle APEX Listener 프로그램에 제공된 URL로 이동합니다. Oracle Application Express Listener 관리 창이 나타납니다. 다음 정보를 입력합니다.
   + **Username(사용자 이름**)`APEX_PUBLIC_USER` – 
   + **Password(암호)** – *APEX\$1PUBLIC\$1USER*에 대한 암호입니다. 앞에서 Oracle APEX 리포지토리를 구성할 때 지정한 암호입니다. 자세한 내용은 [DB 인스턴스의 퍼블릭 사용자 계정 잠금 해제](#Appendix.Oracle.Options.APEX.PublicUser) 섹션을 참조하세요.
   + **Connection Type(연결 유형)** – 기본 
   + **Hostname(호스트 이름)** – Amazon RDS DB 인스턴스의 엔드포인트입니다(예: `mydb.f9rbfa893tft.us-east-1.rds.amazonaws.com`).
   + **Port(포트**) – 1521
   + **SID** – Amazon RDS DB 인스턴스에 있는 데이터베이스의 이름입니다(예: `mydb`).

1. **Apply(적용)**를 선택합니다. Oracle APEX 관리 창이 나타납니다.

1. Oracle APEX `admin` 사용자용 암호를 설정합니다. 이를 위해 SQL\$1Plus를 사용하여 DB 인스턴스에 마스터 사용자로 연결하고 다음 명령을 실행합니다.

   ```
   1. EXEC rdsadmin.rdsadmin_util.grant_apex_admin_role;
   2. grant APEX_ADMINISTRATOR_ROLE to master;
   3. @/home/apexuser/apex/apxchpwd.sql
   ```

   `master`를 마스터 사용자 이름으로 바꿉니다. `apxchpwd.sql` 스크립트에서 메시지가 표시되면 새 `admin` 암호를 입력합니다.

1. 브라우저에서 Oracle APEX 관리 창으로 돌아가서 **관리**를 선택합니다. 그런 다음 [**Application Express Internal Administration**]을 선택합니다. 자격 증명을 요구하는 메시지가 표시되면 다음 정보를 입력합니다.
   + **User name(사용자 이름**)`admin` – 
   + **Password(암호)** – `apxchpwd.sql` 스크립트를 사용하여 설정한 암호 

   [**Login**]을 선택한 다음 `admin` 사용자용 새 암호를 설정합니다.

이제 리스너를 사용할 준비가 끝났습니다.

# Oracle Rest Data Services(ORDS) 구성
<a name="Appendix.Oracle.Options.APEX.ORDSConf"></a>

다음 주제에서는 ORDS 21 및 22의 구성 옵션을 나열합니다.

**Topics**
+ [ORDS 21 이하 설치 및 구성](#Appendix.Oracle.Options.APEX.ORDS)
+ [ORDS 22 이상 설치 및 구성](#Appendix.Oracle.Options.APEX.ORDS22)

## ORDS 21 이하 설치 및 구성
<a name="Appendix.Oracle.Options.APEX.ORDS"></a>

이제 Oracle APEX에서 사용하기 위해 Oracle Rest Data Services(ORDS)를 설치하고 구성할 수 있습니다. Oracle APEX 버전 5.0 이상은 ORDS 버전 19.1\$121을 사용합니다. ORDS 22 이상을 설치하는 방법에 대해 알아보려면 [ORDS 22 이상 설치 및 구성](#Appendix.Oracle.Options.APEX.ORDS22) 섹션을 참조하세요.

Amazon EC2 인스턴스, 회사의 온프레미스 서버 또는 사용자의 데스크톱 컴퓨터와 같은 별도의 호스트에 리스너를 설치합니다. 이 단원의 예에서는 호스트의 이름이 `myapexhost.example.com`이고 이 호스트에서 Linux를 실행 중이라고 가정합니다.

**Oracle APEX에서 사용할 ORDS 21 이하를 설치 및 구성하려면 다음과 같이 하세요.**

1. [Oracle REST data services](https://www.oracle.com/database/technologies/appdev/rest-data-services-downloads-212.html)로 이동하여 Readme를 검토합니다. 필요한 버전의 Java를 설치했는지 확인합니다.

1. ORDS 설치를 위한 새 디렉터리를 만듭니다.

   ```
   mkdir /home/apexuser/ORDS
   cd /home/apexuser/ORDS
   ```

1. [Oracle REST 데이터 서비스](https://www.oracle.com/database/technologies/appdev/rest-data-services-downloads-212.html)에서 `ords.version.number.zip` 파일을 다운로드합니다.

1. `/home/apexuser/ORDS` 디렉터리에 파일의 압축을 풉니다.

1. 다중 테넌트 데이터베이스에 ORDS를 설치하는 경우 `/home/apexuser/ORDS/params/ords_params.properties` 파일에 다음 줄을 추가합니다.

   ```
   pdb.disable.lockdown=false
   ```

1. 마스터 사용자에게 ORDS를 설치하는 데 필요한 권한을 부여합니다.

   Oracle APEX 옵션이 설치된 후 마스터 사용자에게 ORDS 스키마를 설치하는 데 필요한 권한을 부여합니다. 이렇게 하려면 데이터베이스에 연결하고 다음 명령을 실행합니다. `MASTER_USER`를 마스터 사용자의 대문자 이름으로 바꿉니다.
**중요**  
사용자 이름을 입력할 때 대소문자를 구분하는 식별자로 사용자를 생성하지 않는 한 대문자를 사용합니다. 예를 들어 `CREATE USER myuser` 또는 `CREATE USER MYUSER`를 실행하는 경우 데이터 딕셔너리에 `MYUSER`가 저장됩니다. 그러나 `CREATE USER "MyUser"`에서 큰 따옴표를 사용하는 경우 데이터 딕셔너리를 `MyUser`에 저장합니다. 자세한 내용은 [SYS 객체에 대한 SELECT 또는 EXECUTE 권한 부여](Appendix.Oracle.CommonDBATasks.TransferPrivileges.md) 섹션을 참조하세요.

   ```
   exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_OBJECTS', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_ROLE_PRIVS', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_TAB_COLUMNS', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('USER_CONS_COLUMNS', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('USER_CONSTRAINTS', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('USER_OBJECTS', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('USER_PROCEDURES', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('USER_TAB_COLUMNS', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('USER_TABLES', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('USER_VIEWS', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('WPIUTL', 'MASTER_USER', 'EXECUTE', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('DBMS_SESSION', 'MASTER_USER', 'EXECUTE', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('DBMS_UTILITY', 'MASTER_USER', 'EXECUTE', true);
   ```
**참고**  
이들 명령은 ORDS 버전 19.1 이상에 적용됩니다.

1. 다운로드한 ords.war 파일을 사용하여 ORDS 스키마를 설치합니다.

   ```
   java -jar ords.war install advanced
   ```

   프로그램에서 다음 정보를 묻는 메시지를 표시합니다. 기본값은 괄호 안에 표시되어 있습니다. 자세한 내용은 Oracle 설명서의 [Introduction to Oracle REST Data Services](https://docs.oracle.com/en/database/oracle/oracle-rest-data-services/20.2/aelig/installing-REST-data-services.html#GUID-6F7B4E61-B730-4E73-80B8-F53299123730)를 참조하세요.
   + 구성 데이터를 저장할 위치를 입력합니다.

     */home/apexuser/ORDS*를 입력합니다. ORDS 구성 파일의 위치입니다.
   + 사용할 데이터베이스 연결 유형을 지정합니다. [1] 기본 [2] TNS [3] 사용자 지정 URL [1]에 대한 번호를 입력합니다.

     원하는 연결 유형을 선택합니다.
   + 데이터베이스 서버 [localhost]의 이름 *DB\$1instance\$1endpoint*를 입력합니다.

     기본값을 선택하거나 알맞은 값을 입력합니다.
   + 데이터베이스 리스너 포트 [1521]: *DB\$1instance\$1port*를 입력합니다.

     기본값을 선택하거나 알맞은 값을 입력합니다.
   + 데이터베이스 서비스 이름을 지정하려면 1을, 데이터베이스 SID를 지정하려면 2를 입력합니다[1]:

     데이터베이스 SID를 지정하려면 `2`를 선택합니다.
   + 데이터베이스 SID[xe]

     기본값을 선택하거나 알맞은 값을 입력합니다.
   + Oracle REST Data Services 스키마를 확인/설치하려면 1을 입력하고 이 [1]단계를 건너뛰려면 2를 입력합니다.

     를 선택합니다`1` 이 단계에서는 ORDS\$1PUBLIC\$1USER라는 Oracle REST Data Services 프록시 사용자를 생성합니다.
   + ORDS\$1PUBLIC\$1USER의 데이터베이스 암호를 입력합니다.

     암호를 입력한 다음 확인합니다.
   + 관리자 권한으로 로그인하여 Oracle REST Data Services 스키마를 확인해야 합니다.

     관리자 사용자 이름을 입력합니다. *master\$1user*

     *master\$1user*의 데이베이스 암호를 입력합니다. *master\$1user\$1password*

     암호를 확인합니다. *master\$1user\$1password*
**참고**  
보안 모범 사례로 여기에 표시된 프롬프트 이외의 암호를 지정하는 것이 좋습니다.
   + ORDS\$1METADATA [SYSAUX]에 대한 기본 테이블 스페이스를 입력합니다.

     ORDS\$1METADATA [TEMP]에 대한 기본 테이블 스페이스를 입력합니다.

     ORDS\$1PUBLIC\$1USER [USERS]에 대한 기본 테이블 스페이스를 입력합니다.

     ORDS\$1PUBLIC\$1USER [TEMP]에 대한 기본 테이블 스페이스를 입력합니다.
   + PL/SQL 게이트웨이를 사용하려면 1을 입력하고 이 단계를 건너뛰려면 2을 입력합니다 Oracle Application Express를 사용 중이거나 mod\$1plsql에서 마이그레이션하는 경우 1을 입력해야 합니다[1].

     기본값을 선택합니다.
   + PL/SQL 게이트웨이 데이터베이스 사용자 이름 [APEX\$1PUBLIC\$1USER]를 입력합니다.

     기본값을 선택합니다.
   + APEX\$1PUBLIC\$1USER의 데이터베이스 암호를 입력합니다.

     암호를 입력한 다음 확인합니다.
   + Application Express RESTful Services 데이터베이스 사용자(APEX\$1LISTENER, APEX\$1REST\$1PUBLIC\$1USER)를 위한 암호를 지정하려면 1을 입력하고 이 [1]단계를 건너뛰려면 2를 입력합니다.

     APEX 4.1.1.V1의 경우 `2`를 선택하고 다른 모든 APEX 버전의 경우 `1`을 선택합니다.
   + [APEX 4.1.1.v1에는 필요하지 않음] APEX\$1LISTENER의 데이터베이스 암호

     암호를 입력한 다음(필요한 경우) 확인합니다.
   + [APEX 4.1.1.v1에는 필요하지 않음] APEX\$1REST\$1PUBLIC\$1USER의 데이터베이스 암호

     암호를 입력한 다음(필요한 경우) 확인합니다.
   + 숫자를 입력하여 활성화할 기능을 선택합니다.

     SQL 개발자 웹, REST Enabled SQL 및 데이터베이스 API 등 모든 기능을 활성화하려면 `1`을 입력합니다.
   + 독립 실행형 모드로 시작하려면 1을 입력하고 [1]을 종료하려면 2를 입력합니다.

     `1`를 입력합니다.
   + APEX 정적 리소스 위치를 입력합니다.

     `/home/apexuser`에 APEX 설치 파일의 압축을 푼 경우 `/home/apexuser/apex/images`를 입력합니다. 그렇지 않으면 `unzip_path/apex/images`를 입력합니다. 여기서 *unzip\$1path*는 파일의 압축을 푼 디렉터리입니다.
   + HTTP를 사용하는 경우 1을 입력하고 HTTPS [1]를 사용하는 경우 2를 입력합니다.

     `1`을 입력하는 경우 HTTP 포트를 지정합니다. `2`를 입력하는 경우 HTTPS 포트와 SSL 호스트 이름을 지정합니다. HTTPS 옵션은 인증서 제공 방법을 지정하라는 메시지를 표시합니다.
     + 자체 서명된 인증서를 사용하려면 `1`을 입력합니다.
     + 자신의 인증서를 제공하려면 `2`를 입력합니다. `2`를 입력하는 경우 SSL 인증서의 경로와 SSL 인증서 프라이빗 키의 경로를 지정합니다.

1. APEX `admin` 사용자용 암호를 설정합니다. 이를 위해 SQL\$1Plus를 사용하여 DB 인스턴스에 마스터 사용자로 연결하고 다음 명령을 실행합니다.

   ```
   1. EXEC rdsadmin.rdsadmin_util.grant_apex_admin_role;
   2. grant APEX_ADMINISTRATOR_ROLE to master;
   3. @/home/apexuser/apex/apxchpwd.sql
   ```

   `master`를 마스터 사용자 이름으로 바꿉니다. `apxchpwd.sql` 스크립트에서 메시지가 표시되면 새 `admin` 암호를 입력합니다.

1. ORDS 리스너를 시작합니다. 다음 코드를 실행합니다.

   ```
   java -jar ords.war
   ```

   ORDS를 처음으로 시작할 때 APEX 고정 리소스의 위치를 제공하라는 메시지가 나타납니다. 이 이미지 폴더는 APEX 설치 디렉터리의 `/apex/images` 디렉터리에 위치합니다.

1. 브라우저에서 Oracle APEX 관리 창으로 돌아가서 **관리**를 선택합니다. 그런 다음 [**Application Express Internal Administration**]을 선택합니다. 자격 증명을 요구하는 메시지가 표시되면 다음 정보를 입력합니다.
   + **User name(사용자 이름**)`admin` – 
   + **Password(암호)** – `apxchpwd.sql` 스크립트를 사용하여 설정한 암호 

   [**Login**]을 선택한 다음 `admin` 사용자용 새 암호를 설정합니다.

이제 리스너를 사용할 준비가 끝났습니다.

## ORDS 22 이상 설치 및 구성
<a name="Appendix.Oracle.Options.APEX.ORDS22"></a>

이제 Oracle APEX에서 사용하기 위해 Oracle Rest Data Services(ORDS)를 설치하고 구성할 수 있습니다. 이 섹션의 예제에서는 별도 호스트의 이름이 `myapexhost.example.com`이고 이 호스트에서 Linux를 실행 중이라고 가정합니다. ORDS 22의 지침은 이전 릴리스의 지침과는 다릅니다.

**Oracle APEX에서 사용할 ORDS 22 이상을 설치 및 구성하려면 다음과 같이 하세요.**

1. [Oracle REST data services](http://www.oracle.com/technetwork/developer-tools/rest-data-services/downloads/index.html)로 이동하여 다운로드하려는 ORDS 버전에 대한 Readme를 검토합니다. 필요한 버전의 Java를 설치했는지 확인합니다.

1. ORDS 설치를 위한 새 디렉터리를 만듭니다.

   ```
   mkdir /home/apexuser/ORDS
   cd /home/apexuser/ORDS
   ```

1. [Oracle REST data services](http://www.oracle.com/technetwork/developer-tools/rest-data-services/downloads/index.html)에서 `ords.version.number.zip` 또는 `ords-latest.zip` 파일을 다운로드합니다.

1. `/home/apexuser/ORDS` 디렉터리에 파일의 압축을 풉니다.

1. 마스터 사용자에게 ORDS를 설치하는 데 필요한 권한을 부여합니다.

   `APEX` 옵션이 설치된 후 마스터 사용자에게 ORDS 스키마를 설치하는 데 필요한 권한을 부여합니다. 이렇게 하려면 데이터베이스에 로깅하여 다음 명령을 실행합니다. `MASTER_USER`를 마스터 사용자의 대문자 이름으로 바꿉니다.
**중요**  
사용자 이름을 입력할 때 대소문자를 구분하는 식별자로 사용자를 생성하지 않는 한 대문자를 사용합니다. 예를 들어 `CREATE USER myuser` 또는 `CREATE USER MYUSER`를 실행하는 경우 데이터 딕셔너리에 `MYUSER`가 저장됩니다. 그러나 `CREATE USER "MyUser"`에서 큰 따옴표를 사용하는 경우 데이터 딕셔너리를 `MyUser`에 저장합니다. 자세한 내용은 [SYS 객체에 대한 SELECT 또는 EXECUTE 권한 부여](Appendix.Oracle.CommonDBATasks.TransferPrivileges.md) 섹션을 참조하세요.

   ```
   exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_OBJECTS', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_ROLE_PRIVS', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_TAB_COLUMNS', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('USER_CONS_COLUMNS', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('USER_CONSTRAINTS', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('USER_OBJECTS', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('USER_PROCEDURES', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('USER_TAB_COLUMNS', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('USER_TABLES', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('USER_VIEWS', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('WPIUTL', 'MASTER_USER', 'EXECUTE', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('DBMS_SESSION', 'MASTER_USER', 'EXECUTE', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('DBMS_UTILITY', 'MASTER_USER', 'EXECUTE', true);
   
   exec rdsadmin.rdsadmin_util.grant_sys_object('DBMS_LOB', 'MASTER_USER', 'EXECUTE', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('DBMS_ASSERT', 'MASTER_USER', 'EXECUTE', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('DBMS_OUTPUT', 'MASTER_USER', 'EXECUTE', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('DBMS_SCHEDULER', 'MASTER_USER', 'EXECUTE', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('HTP', 'MASTER_USER', 'EXECUTE', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('OWA', 'MASTER_USER', 'EXECUTE', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('WPG_DOCLOAD', 'MASTER_USER', 'EXECUTE', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('DBMS_CRYPTO', 'MASTER_USER', 'EXECUTE', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('DBMS_METADATA', 'MASTER_USER', 'EXECUTE', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('DBMS_SQL', 'MASTER_USER', 'EXECUTE', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('UTL_SMTP', 'MASTER_USER', 'EXECUTE', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('DBMS_NETWORK_ACL_ADMIN', 'MASTER_USER', 'EXECUTE', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('SESSION_PRIVS', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_USERS', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_NETWORK_ACL_PRIVILEGES', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_NETWORK_ACLS', 'MASTER_USER', 'SELECT', true);
   exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_REGISTRY', 'MASTER_USER', 'SELECT', true);
   ```
**참고**  
위의 명령은 ORDS 22 이상에 적용됩니다.

1. 다운로드한 `ords` 스크립트를 사용하여 ORDS 스키마를 설치합니다. 구성 파일 및 로그 파일을 포함할 디렉터리를 지정합니다. Oracle Corporation은 이러한 디렉터리를 ORDS 제품 소프트웨어가 포함되어 있는 디렉터리 내에 배치하지 말 것을 권장합니다.

   ```
   mkdir -p /home/apexuser/ords_config /home/apexuser/ords_logs
   
   /home/apexuser/ORDS/bin/ords \
     --config /home/apexuser/ords_config \
     install --interactive --log-folder /home/apexuser/ords_logs
   ```

   컨테이너 데이터베이스(CDB) 아키텍처를 실행하는 DB 인스턴스의 경우 ORDS 23.3 이상을 사용하고 ORDS를 설치할 때 `--pdb-skip-disable-lockdown` 인수를 전달합니다.

   ```
   /home/apexuser/ORDS/bin/ords \
     --config /home/apexuser/ords_config \
     install --interactive --log-folder /home/apexuser/ords_logs --pdb-skip-disable-lockdown
   ```

   프로그램에서 다음 정보를 묻는 메시지를 표시합니다. 기본값은 괄호 안에 표시되어 있습니다. 자세한 내용은 Oracle 설명서의 [Introduction to Oracle REST Data Services](https://docs.oracle.com/en/database/oracle/oracle-rest-data-services/20.2/aelig/installing-REST-data-services.html#GUID-6F7B4E61-B730-4E73-80B8-F53299123730)를 참조하세요.
   + `Choose the type of installation:`

     데이터베이스에 ORDS 스키마를 설치하고 로컬 ORDS 구성 파일에 데이터베이스 연결 풀을 생성하도록 **2**를 선택합니다.
   + `Specify the database connection type to use. Enter number for [1] Basic [2] TNS [3] Custom URL:`

     원하는 연결 유형을 선택합니다. 이 예제에서는 사용자가 **1**을 선택한 것으로 가정합니다.
   + `Enter the name of the database server [localhost]:` ***DB\$1instance\$1endpoint***

     기본값을 선택하거나 알맞은 값을 입력합니다.
   + `Enter the database listener port [1521]:` ***DB\$1instance\$1port***

     기본값 **1521**을 선택하거나 적절한 값을 입력합니다.
   + `Enter the database service name [orcl]:`

     RDS for Oracle DB 인스턴스에서 사용하는 데이터베이스 이름을 입력합니다.
   + `Provide database user name with administrator privileges`

      Oracle DB 인스턴스의 RDS에 마스터 사용자 이름을 입력합니다.
   + `Enter the database password for [username]:`

     Oracle DB 인스턴스의 RDS에 마스터 사용자 비밀번호를 입력합니다.
   + `Enter the default tablespace for ORDS_METADATA and ORDS_PUBLIC_USER [SYSAUX]:`
   + `Enter the temporary tablespace for ORDS_METADATA [TEMP]. Enter the default tablespace for ORDS_PUBLIC_USER [USERS]. Enter the temporary tablespace for ORDS_PUBLIC_USER [TEMP].`
   + `Enter a number to select additional feature(s) to enable [1]:`
   + `Enter a number to configure and start ORDS in standalone mode [1]: `

      독립형 모드에서 ORDS를 바로 시작하지 않도록 **2**를 선택합니다.
   + `Enter a number to select the protocol [1] HTTP`
   + `Enter the HTTP port [8080]:`
   + `Enter the APEX static resources location:`

     Oracle APEX 설치 파일(`/home/apexuser/apex/images`)에 대한 경로를 입력합니다.

1. Oracle APEX `admin` 사용자용 암호를 설정합니다. 이를 위해 SQL\$1Plus를 사용하여 DB 인스턴스에 마스터 사용자로 연결하고 다음 명령을 실행합니다.

   ```
   1. EXEC rdsadmin.rdsadmin_util.grant_apex_admin_role;
   2. grant APEX_ADMINISTRATOR_ROLE to master;
   3. @/home/apexuser/apex/apxchpwd.sql
   ```

   `master`를 마스터 사용자 이름으로 바꿉니다. `apxchpwd.sql` 스크립트에서 메시지가 표시되면 새 `admin` 암호를 입력합니다.

1. `serve` 명령과 함께 `ords` 스크립트를 사용하여 독립형 모드에서 ORDS를 실행합니다. 프로덕션 배포의 경우 Apache Tomcat 또는 Oracle WebLogic Server 등의 지원되는 Java EE 애플리케이션 서버를 사용하는 것이 좋습니다. 자세한 내용은 Oracle 데이터베이스 설명서의 [Oracle REST Data Services 배포 및 모니터링](https://docs.oracle.com/en/database/oracle/oracle-rest-data-services/23.1/ordig/deploying-and-monitoring-oracle-rest-data-services.html#GUID-6791F5DF-AC67-4885-BFFA-B80964C17EC9)을 참조하세요.

   ```
   /home/apexuser/ORDS/bin/ords \
     --config /home/apexuser/ords_config serve \
     --port 8193 \
     --apex-images /home/apexuser/apex/images
   ```

   ORDS가 실행 중이지만 Oracle APEX 설치에 액세스할 수 없는 경우, 특히 비CDB 인스턴스에서 다음 오류가 표시될 수 있습니다.

   ```
   The procedure named apex_admin could not be accessed, it may not be declared, or the user executing this request may not have been granted execute privilege on the procedure, or a function specified by security.requestValidationFunction configuration property has prevented access.
   ```

   이 오류를 해결하려면 `config` 명령으로 `ords` 스크립트를 실행하여 ORDS에서 사용하는 요청 검증 함수를 변경합니다. 기본적으로 ORDS는 CDB 인스턴스에서만 지원되는 `ords_util.authorize_plsql_gateway` 프로시저를 사용합니다. 비CDB 인스턴스의 경우 이 프로시저를 `wwv_flow_epg_include_modules.authorize` 패키지로 변경할 수 있습니다. 사용 사례에 적합한 요청 검증 기능을 구성하는 모범 사례는 Oracle 데이터베이스 설명서 및 Oracle 지원을 참조하세요.

1. 브라우저에서 Oracle APEX 관리 창으로 돌아가서 **관리**를 선택합니다. 그런 다음 [**Application Express Internal Administration**]을 선택합니다. 자격 증명을 요구하는 메시지가 표시되면 다음 정보를 입력합니다.
   + **User name(사용자 이름**)`admin` – 
   + **Password(암호)** – `apxchpwd.sql` 스크립트를 사용하여 설정한 암호 

   [**Login**]을 선택한 다음 `admin` 사용자용 새 암호를 설정합니다.

이제 리스너를 사용할 준비가 끝났습니다.

# Oracle APEX 업그레이드 및 제거
<a name="Appendix.Oracle.Options.APEX.UpgradeandRemove"></a>

Oracle APEX를 업그레이드하거나 제거하려면 이 주제의 지침을 따르세요.

**Topics**
+ [Oracle APEX 버전 업그레이드](#Appendix.Oracle.Options.APEX.Upgrade)
+ [APEX 및 APEX-DEV 옵션 제거](#Appendix.Oracle.Options.APEX.Remove)

## Oracle APEX 버전 업그레이드
<a name="Appendix.Oracle.Options.APEX.Upgrade"></a>

**중요**  
Oracle APEX를 업그레이드하기 전에 DB 인스턴스를 백업하세요. 자세한 내용은 [Amazon RDS의 단일 AZ DB 인스턴스에 대한 DB 스냅샷 생성](USER_CreateSnapshot.md) 및 [Oracle DB 업그레이드 테스트](USER_UpgradeDBInstance.Oracle.UpgradeTesting.md)(을)를 참조하세요.

DB 인스턴스와 함께 Oracle APEX를 업그레이드하려면 다음을 실행합니다.
+ 업그레이드된 DB 인스턴스 버전의 새 옵션 그룹을 생성합니다.
+ `APEX` 및 `APEX-DEV` 옵션의 업그레이드된 버전을 새 옵션 그룹에 추가합니다. DB 인스턴스가 사용하는 다른 옵션도 포함시켜야 합니다. 자세한 내용은 [옵션 그룹 고려 사항](USER_UpgradeDBInstance.Oracle.OGPG.md#USER_UpgradeDBInstance.Oracle.OGPG.OG) 섹션을 참조하세요.
+ DB 인스턴스를 업그레이드할 때 업그레이드된 DB 인스턴스의 새 옵션 그룹을 지정합니다.

Oracle APEX 버전을 업그레이드한 후에도 이전 버전의 Oracle APEX 스키마가 데이터베이스에 남아 있을 수 있습니다. 더 이상 필요 없는 경우에는 업그레이드 후에 데이터베이스에서 기존 Oracle APEX 스키마를 제거할 수 있습니다.

Oracle APEX 버전을 업그레이드하고 이전 Oracle APEX 버전에서 RESTful 서비스가 구성되지 않은 경우 RESTful 서비스를 구성하는 것이 좋습니다. 자세한 내용은 [Oracle APEX용 RESTful 서비스 구성](Appendix.Oracle.Options.APEX.settingUp.md#Appendix.Oracle.Options.APEX.ConfigureRESTful) 섹션을 참조하세요.

DB 인스턴스의 메이저 버전 업그레이드를 계획할 때 대상 데이터베이스 버전과 호환되지 않는 Oracle APEX 버전을 사용하는 경우가 있습니다. 이러한 경우 DB 인스턴스를 업그레이드하려면 먼저 Oracle APEX 버전을 업그레이드해야 합니다. Oracle APEX를 먼저 업그레이드하면 DB 인스턴스를 업그레이드하는 시간을 줄일 수 있습니다.

**참고**  
Oracle APEX 업그레이드 이후 업그레이드된 버전과 사용할 리스너를 설치 및 구성합니다. 지침은 [Oracle APEX Listener 설정](Appendix.Oracle.Options.APEX.settingUp.md#Appendix.Oracle.Options.APEX.Listener) 섹션을 참조하세요.

## APEX 및 APEX-DEV 옵션 제거
<a name="Appendix.Oracle.Options.APEX.Remove"></a>

DB 인스턴스에서 `APEX` 및 `APEX-DEV` 옵션을 제거할 수 있습니다. DB 인스턴스에서 이러한 옵션을 제거하려면 다음 중 하나를 수행합니다.
+ 여러 DB 인스턴스에서 `APEX` 및 `APEX-DEV` 옵션을 제거하려면 DB 인스턴스가 속한 옵션 그룹에서 해당 옵션을 제거합니다. 이 변경은 해당 옵션 그룹을 사용하는 모든 DB 인스턴스에 영향을 미칩니다. 여러 DB 인스턴스에 연결된 옵션 그룹에서 옵션을 제거하면 DB 인스턴스가 다시 시작되는 동안 인스턴스가 잠시 중단됩니다.

  자세한 내용은 [옵션 그룹에서 옵션 제거](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.RemoveOption) 섹션을 참조하세요.
+ 단일 DB 인스턴스에서 `APEX` 및 `APEX-DEV` 옵션을 제거하려면 DB 인스턴스를 수정하고 이러한 옵션이 포함되지 않은 다른 옵션 그룹을 지정합니다. 기본(빈) 옵션 그룹을 지정하거나 다른 사용자 지정 옵션 그룹을 지정할 수 있습니다. 이러한 옵션을 제거하는 경우 DB 인스턴스를 자동으로 다시 시작하는 동안 인스턴스가 잠시 중단됩니다.

  자세한 내용은 [Amazon RDS DB 인스턴스 수정](Overview.DBInstance.Modifying.md) 섹션을 참조하세요.

DB 인스턴스에서 `APEX` 및 `APEX-DEV` 옵션을 제거하면 데이터베이스에서 APEX 스키마가 제거됩니다.

# Amazon EFS 통합
<a name="oracle-efs-integration"></a>

Amazon Elastic File System(Amazon EFS)은 완전히 탄력적인 서버리스 파일 스토리지를 제공하므로 스토리지 용량과 성능을 프로비저닝하거나 관리하지 않고도 파일 데이터를 공유할 수 있습니다. Amazon EFS를 사용하면 파일 시스템을 생성한 다음 NFS 버전 4.0 및 4.1(NFSv4) 프로토콜을 통해 VPC에 탑재할 수 있습니다. 그러면 다른 POSIX 호환 파일 시스템처럼 EFS 파일 시스템을 사용할 수 있습니다. 일반적인 정보는 [Amazon What is Amazon Elastic File System이란 무엇인가요?](https://docs.aws.amazon.com/efs/latest/ug/whatisefs.html)와 [Amazon RDS for Oracle을 Amazon EFS와 통합](https://aws.amazon.com//blogs/database/integrate-amazon-rds-for-oracle-with-amazon-efs/) AWS 블로그를 참조하세요.

**Topics**
+ [Amazon EFS 통합 개요](#oracle-efs-integration.overview)
+ [Amazon EFS와 RDS for Oracle 통합을 위한 네트워크 권한 구성](oracle-efs-integration.network.md)
+ [Amazon EFS와 RDS for Oracle 통합을 위한 IAM 권한 구성](oracle-efs-integration.iam.md)
+ [EFS\$1INTEGRATION 옵션 추가](oracle-efs-integration.adding.md)
+ [Amazon EFS 파일 시스템 권한 구성](oracle-efs-integration.file-system.md)
+ [RDS for Oracle DB 인스턴스와 Amazon EFS 파일 시스템 간 파일 전송](oracle-efs-integration.transferring.md)
+ [EFS\$1INTEGRATION 옵션 제거](oracle-efs-integration.removing.md)
+ [Amazon EFS 통합 문제 해결](oracle-efs-integration.troubleshooting.md)

## Amazon EFS 통합 개요
<a name="oracle-efs-integration.overview"></a>

Amazon EFS를 사용하면 RDS for Oracle DB 인스턴스와 EFS 파일 시스템 사이에서 파일을 전송할 수 있습니다. 예를 들어 EFS를 사용하여 다음 사용 사례를 지원할 수 있습니다.
+ 애플리케이션과 여러 데이터베이스 서버 간에 파일 시스템을 공유합니다.
+ 전송 가능한 테이블스페이스 데이터 파일을 포함하여 마이그레이션 관련 파일을 위한 공유 디렉터리를 생성합니다. 자세한 내용은 [Oracle 전송 가능한 테이블스페이스를 사용한 마이그레이션](oracle-migrating-tts.md) 섹션을 참조하세요.
+ 서버에 추가 스토리지 공간을 할당하지 않고 아카이브된 재실행 로그 파일을 저장하고 공유합니다.
+ 파일 읽기 및 쓰기를 위해 `UTL_FILE`과 같은 Oracle Database 유틸리티를 사용합니다.

### Amazon EFS 통합의 이점
<a name="oracle-efs-integration.overview.advantages"></a>

다른 데이터 전송 솔루션 대신 EFS 파일 시스템을 선택하면 다음과 같은 이점을 얻을 수 있습니다.
+ Amazon EFS와 RDS for Oracle DB 인스턴스 사이에서 Oracle Data Pump 파일을 전송할 수 있습니다. Data Pump는 EFS 파일 시스템에서 직접 가져오기 때문에 이러한 파일을 로컬로 복사할 필요가 없습니다. 자세한 내용은 [Amazon RDS의 Oracle로 데이터 가져오기](Oracle.Procedural.Importing.md) 섹션을 참조하세요.
+ 데이터베이스 링크를 사용하는 것보다 데이터 마이그레이션이 빠릅니다.
+ 파일을 보관할 스토리지 공간을 RDS for Oracle DB 인스턴스에 할당하지 않아도 됩니다.
+ EFS 파일 시스템은 프로비저닝할 필요 없이 스토리지의 규모를 자동으로 조정할 수 있습니다.
+ Amazon EFS 통합에는 최소 수수료나 설정 비용이 없습니다. 사용한 만큼만 지불합니다.
+ Amazon EFS 통합은 전송 중인 데이터의 암호화와 미사용 시 암호화라는 두 가지 형태의 암호화를 지원합니다. 전송 중인 데이터의 암호화는 기본적으로 TLS 버전 1.2를 사용하여 활성화됩니다. Amazon EFS 파일 시스템을 생성할 때 저장 데이터 암호화를 활성화할 수 있습니다. 자세한 내용을 알아보려면 *Amazon Elastic File System User Guide*(Amazon Elastic File System 사용 설명서)의 [Encrypting data at rest](https://docs.aws.amazon.com/efs/latest/ug/encryption-at-rest.html)(저장 데이터 암호화)를 참조하세요.

### Amazon EFS 통합을 위한 요구 사항
<a name="oracle-efs-integration.overview.requirements"></a>

다음 요구 사항을 충족하는지 확인합니다.
+ 데이터베이스가 데이터베이스 버전 19.0.0.0.ru-2022-07.rur-2022-07.r1 이상을 실행해야 합니다.
+ DB 인스턴스와 EFS 파일 시스템은 동일한 AWS 리전, VPC 및 AWS 계정에 있어야 합니다. RDS for Oracle은 EFS에 대한 교차 계정 및 교차 리전 액세스를 지원하지 않습니다.
+ VPC에 **DNS 확인** 및 **DNS 호스트 이름**이 모두 있어야 합니다. 자세한 내용은 *Amazon Virtual Private Cloud 사용 설명서*의 [VPC의 DNS 속성](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-dns.html#vpc-dns-support)을 참조하세요.
+ `mount` 명령에서 DNS 이름을 사용하는 경우 Amazon에서 제공하는 DNS 서버를 사용하도록 VPC가 구성되어 있어야 합니다. 사용자 지정 DNS 서버는 지원되지 않습니다.
+ RDS가 아닌 솔루션을 사용하여 EFS 파일 시스템을 백업해야 합니다. RDS for Oracle은 EFS 파일 시스템의 자동 백업 또는 수동 DB 스냅샷을 지원하지 않습니다. 자세한 내용은 [Amazon EFS 파일 시스템 백업](https://docs.aws.amazon.com/efs/latest/ug/efs-backup-solutions.html)을 참조하세요.

# Amazon EFS와 RDS for Oracle 통합을 위한 네트워크 권한 구성
<a name="oracle-efs-integration.network"></a>

RDS for Oracle을 Amazon EFS와 통합하려면 DB 인스턴스에 EFS 파일 시스템에 대한 네트워크 액세스 권한이 있어야 합니다. 자세한 내용은 *Amazon Elastic File System 사용 설명서*의 [NFS 클라이언트의 Amazon EFS 파일 시스템에 대한 네트워크 액세스 제어](https://docs.aws.amazon.com/efs/latest/ug/NFS-access-control-efs.html)를 참조하세요.

**Topics**
+ [보안 그룹을 통한 네트워크 액세스 제어](#oracle-efs-integration.network.inst-access)
+ [파일 시스템 정책을 통한 네트워크 액세스 제어](#oracle-efs-integration.network.file-system-policy)

## 보안 그룹을 통한 네트워크 액세스 제어
<a name="oracle-efs-integration.network.inst-access"></a>

VPC 보안 그룹과 같은 네트워크 계층 보안 메커니즘을 사용하여 EFS 파일 시스템에 대한 DB 인스턴스 액세스를 제어할 수 있습니다. DB 인스턴스의 EFS 파일 시스템에 대한 액세스를 허용하려면 EFS 파일 시스템이 다음 요구 사항을 충족하는지 확인하세요.
+ EFS 탑재 대상은 RDS for Oracle DB 인스턴스에서 사용하는 모든 가용 영역에 있습니다.

  *EFS 탑재 대상*이 EFS 파일 시스템을 탑재할 수 있는 NFSv4 엔드포인트의 IP 주소를 제공해야 합니다. DB 인스턴스의 가용 영역에서 사용하는 EFS 탑재 대상의 IP 주소로 변환되는 DNS 이름을 사용하여 파일 시스템을 탑재해야 합니다.

  여러 AZ에 있는 DB 인스턴스에서 동일한 EFS 파일 시스템을 사용하도록 구성할 수 있습니다. 다중 AZ의 경우 배포의 각 AZ에 대한 탑재 지점이 필요합니다. DB 인스턴스를 다른 AZ로 이동해야 할 수도 있습니다. 이러한 이유를 고려하여, VPC 내의 각 AZ에 EFS 탑재 지점을 생성하는 것이 좋습니다. 기본적으로 콘솔을 사용하여 새 EFS 파일 시스템을 생성하면 RDS는 모든 AZ에 대한 탑재 대상을 생성합니다.
+ 보안 그룹이 탑재 대상에 연결되어 있습니다.
+ 보안 그룹에는 TCP/2049(유형 NFS)에서 RDS for Oracle DB 인스턴스의 네트워크 서브넷 또는 보안 그룹을 허용하는 인바운드 규칙이 있습니다.

자세한 내용은 *Amazon Elastic File System 사용 설명서*의 [Amazon EFS 파일 시스템 생성](https://docs.aws.amazon.com/efs/latest/ug/creating-using-create-fs.html#configure-efs-network-access) 및 [EFS 탑재 대상 및 보안 그룹 생성 및 관리](https://docs.aws.amazon.com/efs/latest/ug/accessing-fs.html)를 참조하세요.

## 파일 시스템 정책을 통한 네트워크 액세스 제어
<a name="oracle-efs-integration.network.file-system-policy"></a>

RDS for Oracle과의 Amazon EFS 통합은 기본(빈) EFS 파일 시스템 정책을 사용하여 작동합니다. 기본 정책은 인증에 IAM을 사용하지 않습니다. 대신 탑재 대상을 사용하여 파일 시스템에 연결할 수 있는 익명 클라이언트에 대한 전체 액세스 권한을 부여합니다. 기본 정책은 파일 시스템 생성 시를 포함하여 사용자가 구성한 파일 시스템 정책이 존재하지 않을 때마다 적용됩니다. 자세한 내용은 *Amazon Elastic File System 사용 설명서*에서 [기본 EFS 파일 시스템 정책](https://docs.aws.amazon.com/efs/latest/ug/iam-access-control-nfs-efs.html#default-filesystempolicy)을 참조하세요.

RDS for Oracle을 비롯한 모든 클라이언트의 EFS 파일 시스템에 대한 액세스를 강화하기 위해 IAM 권한을 구성할 수 있습니다. 이 방법에서는 파일 시스템 정책을 생성합니다. 자세한 내용은 *Amazon Elastic File System 사용 설명서*에서 [파일 시스템 정책 생성](https://docs.aws.amazon.com/efs/latest/ug/create-file-system-policy.html)을 참조하세요.

# Amazon EFS와 RDS for Oracle 통합을 위한 IAM 권한 구성
<a name="oracle-efs-integration.iam"></a>

기본적으로 Amazon EFS 통합 기능은 IAM 역할을 사용하지 않습니다. `USE_IAM_ROLE` 옵션 설정은 `FALSE`입니다. RDS for Oracle을 Amazon EFS 및 IAM 역할과 통합하려면 DB 인스턴스에는 Amazon EFS 파일 시스템에 액세스할 수 있는 IAM 권한이 있어야 합니다.

**Topics**
+ [1단계: DB 인스턴스의 IAM 역할 생성 및 정책 연결](#oracle-efs-integration.iam.role)
+ [2단계: Amazon EFS 파일 시스템의 파일 시스템 정책 생성](#oracle-efs-integration.iam.policy)
+ [3단계: IAM 역할을 RDS for Oracle DB 인스턴스와 연결](#oracle-efs-integration.iam.instance)

## 1단계: DB 인스턴스의 IAM 역할 생성 및 정책 연결
<a name="oracle-efs-integration.iam.role"></a>

이 단계에서는 Amazon RDS가 EFS 파일 시스템에 액세스할 수 있도록 RDS for Oracle DB 인스턴스의 역할을 생성합니다.

### 콘솔
<a name="oracle-efs-integration.iam.role.console"></a>

**Amazon RDS가 EFS 파일 시스템에 액세스하도록 허용하는 IAM 역할을 생성하는 방법**

1. [IAM 관리 콘솔](https://console.aws.amazon.com/iam/home?#home)을 엽니다.

1. 탐색 창에서 **Roles**를 선택합니다.

1. **Create role**(역할 생성)을 선택합니다.

1. **AWS 서비스**에서 **RDS**를 선택합니다.

1. **사용 사례 선택**을 선택하려면 **RDS– 데이터베이스에 역할 추가**를 선택하십시오.

1. **다음**을 선택합니다.

1. 권한 정책은 추가하지 마세요. **다음**을 선택합니다.

1. **역할 이름**을 IAM 역할의 이름으로 설정합니다(예: `rds-efs-integration-role`). **설명** 값(선택 사항)을 추가할 수도 있습니다.

1. **역할 생성**을 선택합니다.

### AWS CLI
<a name="integration.preparing.role.CLI"></a>

서비스 권한을 특정 리소스로 제한하려면 리소스 기반 신뢰 관계에 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn) 및 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount) 전역 조건 컨텍스트 키를 사용하는 것이 좋습니다. 이는 [혼동된 대리자 문제](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html)를 방지하는 가장 효과적인 방법입니다.

전역 조건 컨텍스트 키를 모두 사용하고 `aws:SourceArn` 값에 계정 ID가 포함되도록 할 수 있습니다. 이 경우 `aws:SourceAccount` 값과 `aws:SourceArn` 값의 계정이 동일한 문에서 사용될 때 동일한 계정 ID를 사용해야 합니다.
+ 단일 리소스에 대한 교차 서비스 액세스를 원하는 경우 `aws:SourceArn`을 사용하세요.
+ 해당 계정의 모든 리소스가 교차 서비스 사용과 연결되도록 허용하려는 경우 `aws:SourceAccount`를 사용하세요.

신뢰 정책에서는 역할에 액세스하는 리소스의 전체 Amazon 리소스 이름(ARN)이 포함된 `aws:SourceArn` 전역 조건 컨텍스트 키를 사용해야 합니다.

다음 AWS CLI 명령은 이 목적으로 `rds-efs-integration-role`이라는 역할을 생성합니다.

**Example**  
대상 LinuxmacOS, 또는Unix:  

```
aws iam create-role \
   --role-name rds-efs-integration-role \
   --assume-role-policy-document '{
     "Version": "2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
            "Service": "rds.amazonaws.com"
          },
         "Action": "sts:AssumeRole",
         "Condition": {
             "StringEquals": {
                 "aws:SourceAccount": my_account_ID,
                 "aws:SourceArn": "arn:aws:rds:Region:my_account_ID:db:dbname"
             }
         }
       }
     ]
   }'
```
Windows의 경우:  

```
aws iam create-role ^
   --role-name rds-efs-integration-role ^
   --assume-role-policy-document '{
     "Version": "2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
            "Service": "rds.amazonaws.com"
          },
         "Action": "sts:AssumeRole",
         "Condition": {
             "StringEquals": {
                 "aws:SourceAccount": my_account_ID,
                 "aws:SourceArn": "arn:aws:rds:Region:my_account_ID:db:dbname"
             }
         }
       }
     ]
   }'
```

자세한 내용은 *IAM 사용 설명서*의 [IAM 사용자에게 권한을 위임하기 위한 역할 생성](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html)을 참조하십시오.

## 2단계: Amazon EFS 파일 시스템의 파일 시스템 정책 생성
<a name="oracle-efs-integration.iam.policy"></a>

이 단계에서는 Amazon EFS 파일 시스템의 파일 시스템 정책을 생성합니다.

**EFS 파일 시스템 정책을 생성하거나 편집하는 방법**

1. [EFS 관리 콘솔](https://console.aws.amazon.com/efs/home?#home)을 엽니다.

1. **파일 시스템**을 선택합니다.

1. **파일 시스템** 페이지에서 파일 시스템 정책을 편집하거나 생성할 파일 시스템을 선택합니다. 해당 파일 시스템의 세부 정보 페이지가 표시됩니다.

1. **File system policy**(파일 시스템 정책) 탭을 선택합니다.

   정책이 비어 있으면 기본 EFS 파일 시스템 정책이 사용 중인 것입니다. 자세한 내용은 *Amazon Elastic File System 사용 설명서*에서 [기본 EFS 파일 시스템 정책](https://docs.aws.amazon.com/efs/latest/ug/iam-access-control-nfs-efs.html#default-filesystempolicy )을 참조하세요.

1. **편집**을 선택합니다. **파일 시스템 정책** 페이지가 나타납니다.

1. **정책 편집기**에서 다음과 같은 정책을 입력한 다음 **Save**(저장)를 선택합니다.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Id": "ExamplePolicy01",
       "Statement": [
           {
               "Sid": "ExampleStatement01",
               "Effect": "Allow",
               "Principal": {
                   "AWS": "arn:aws:iam::123456789012:role/rds-efs-integration-role"
               },
               "Action": [
                   "elasticfilesystem:ClientMount",
                   "elasticfilesystem:ClientWrite",
                   "elasticfilesystem:ClientRootAccess"
               ],
               "Resource": "arn:aws:elasticfilesystem:us-east-1:123456789012:file-system/fs-1234567890abcdef0"
           }
       ]
   }
   ```

------

## 3단계: IAM 역할을 RDS for Oracle DB 인스턴스와 연결
<a name="oracle-efs-integration.iam.instance"></a>

이 단계에서는 IAM 역할을 DB 인스턴스와 연결합니다. 다음 요구 사항에 유의하세요.
+ 필수 Amazon EFS 권한 정책이 연결된 IAM 역할에 대한 액세스 권한이 있어야 합니다.
+ 한 번에 하나의 IAM 역할만 RDS for Oracle DB 인스턴스에 연결할 수 있습니다.
+ 인스턴스의 상태는 **사용 가능**이어야 합니다.

자세한 내용은 *Amazon Elastic File System 사용 설명서*의 [Amazon EFS ID 및 액세스 관리](https://docs.aws.amazon.com/efs/latest/ug/auth-and-access-control.html)를 참조하세요.

### 콘솔
<a name="oracle-efs-integration.iam.instance.console"></a>

**IAM 역할을 RDS for Oracle DB 인스턴스와 연결하는 방법**

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)에서 Amazon RDS 콘솔을 엽니다.

1. **데이터베이스**를 선택합니다.

1. 데이터베이스 인스턴스를 사용할 수 없는 경우 **작업**을 선택한 수 **시작**을 선택합니다. 인스턴스 상태가 **시작됨**으로 표시되면 다음 단계로 이동합니다.

1. 세부 정보를 표시하고자 하는 Oracle DB 인스턴스 이름을 선택합니다.

1. **연결성 및 보안(Connectivity & security)** 탭에서 페이지 하단의 **IAM 역할 관리(Manage IAM roles)** 섹션이 나올 때까지 아래로 스크롤합니다.

1. **Add IAM roles to this instance**(이 인스턴스에 IAM 역할 추가) 섹션에서 추가할 역할을 선택합니다.

1. **Feature**(기능)에서 **EFS\$1INTEGRATION**을 선택합니다.

1. [**Add role**]을 선택합니다.

### AWS CLI
<a name="oracle-efs-integration.iam.instance.CLI"></a>

다음 AWS CLI 명령은 `mydbinstance`라는 Oracle DB 인스턴스에 역할을 추가합니다.

**Example**  
대상 LinuxmacOS, 또는Unix:  

```
aws rds add-role-to-db-instance \
   --db-instance-identifier mydbinstance \
   --feature-name EFS_INTEGRATION \
   --role-arn your-role-arn
```
Windows의 경우:  

```
aws rds add-role-to-db-instance ^
   --db-instance-identifier mydbinstance ^
   --feature-name EFS_INTEGRATION ^
   --role-arn your-role-arn
```

`your-role-arn`을 이전 단계에서 기록한 역할 ARN으로 바꿉니다. `EFS_INTEGRATION` 옵션에 대해 `--feature-name`을 지정해야 합니다.

# EFS\$1INTEGRATION 옵션 추가
<a name="oracle-efs-integration.adding"></a>

Amazon RDS for Oracle을 Amazon EFS와 통합하려면 DB 인스턴스가 `EFS_INTEGRATION` 옵션을 포함하는 옵션 그룹과 연결되어 있어야 합니다.

동일한 옵션 그룹에 속한 여러 Oracle DB 인스턴스는 동일한 EFS 파일 시스템을 공유합니다. 서로 다른 DB 인스턴스가 동일한 데이터에 액세스할 수 있지만 서로 다른 Oracle 디렉터리를 사용하여 액세스를 나눌 수 있습니다. 자세한 정보는 [RDS for Oracle DB 인스턴스와 Amazon EFS 파일 시스템 간 파일 전송](oracle-efs-integration.transferring.md) 섹션을 참조하세요.

## 콘솔
<a name="oracle-efs-integration.adding.console"></a>

**Amazon EFS 통합을 위한 옵션 그룹을 구성하는 방법**

1. 새 옵션 그룹을 만들거나 `EFS_INTEGRATION` 옵션을 추가할 수 있는 기존 옵션 그룹을 식별하십시오.

   옵션 그룹의 생성에 대한 자세한 내용은 [옵션 그룹 생성](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Create) 단원을 참조하십시오.

1. [`EFS_INTEGRATION`] 옵션을 옵션 그룹에 추가합니다. `EFS_ID` 파일 시스템 ID를 지정하고 `USE_IAM_ROLE` 플래그를 설정해야 합니다.

   자세한 내용은 [옵션 그룹에 옵션 추가](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.AddOption) 단원을 참조하십시오.

1. 다음 방법 중 하나를 사용하여 옵션 그룹을 DB 인스턴스에 연결합니다.
   + 새 Oracle DB 인스턴스를 생성하고 옵션 그룹을 연결합니다. DB 인스턴스 생성에 대한 자세한 내용은 [Amazon RDS DB 인스턴스 생성](USER_CreateDBInstance.md) 섹션을 참조하세요.
   + 옵션 그룹에 연결하도록 DB 인스턴스를 수정합니다. Oracle DB 인스턴스 수정에 대한 자세한 내용은 [Amazon RDS DB 인스턴스 수정](Overview.DBInstance.Modifying.md) 단원을 참조하세요.

## AWS CLI
<a name="oracle-efs-integration.adding.cli"></a>

**EFS 통합을 위한 옵션 그룹을 구성하는 방법**

1. 새 옵션 그룹을 만들거나 `EFS_INTEGRATION` 옵션을 추가할 수 있는 기존 옵션 그룹을 식별하십시오.

   옵션 그룹의 생성에 대한 자세한 내용은 [옵션 그룹 생성](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Create) 단원을 참조하십시오.

1. [`EFS_INTEGRATION`] 옵션을 옵션 그룹에 추가합니다.

   예를 들어 다음 AWS CLI 명령은 `EFS_INTEGRATION` 옵션을 **myoptiongroup**이라는 옵션 그룹에 추가합니다.  
**Example**  

   대상 LinuxmacOS, 또는Unix:

   ```
   aws rds add-option-to-option-group \
      --option-group-name myoptiongroup \
      --options "OptionName=EFS_INTEGRATION,OptionSettings=\ 
      [{Name=EFS_ID,Value=fs-1234567890abcdef0},{Name=USE_IAM_ROLE,Value=TRUE}]"
   ```

   Windows의 경우:

   ```
   aws rds add-option-to-option-group ^
      --option-group-name myoptiongroup ^
      --options "OptionName=EFS_INTEGRATION,OptionSettings=^
      [{Name=EFS_ID,Value=fs-1234567890abcdef0},{Name=USE_IAM_ROLE,Value=TRUE}]"
   ```

1. 다음 방법 중 하나를 사용하여 옵션 그룹을 DB 인스턴스에 연결합니다.
   + 새 Oracle DB 인스턴스를 생성하고 옵션 그룹을 연결합니다. DB 인스턴스 생성에 대한 자세한 내용은 [Amazon RDS DB 인스턴스 생성](USER_CreateDBInstance.md) 섹션을 참조하세요.
   + 옵션 그룹에 연결하도록 DB 인스턴스를 수정합니다. Oracle DB 인스턴스 수정에 대한 자세한 내용은 [Amazon RDS DB 인스턴스 수정](Overview.DBInstance.Modifying.md) 단원을 참조하세요.

# Amazon EFS 파일 시스템 권한 구성
<a name="oracle-efs-integration.file-system"></a>

새로 생성된 EFS 파일 시스템에서는 기본적으로 루트 사용자(UID `0`)에게만 읽기, 쓰기, 실행 권한이 있습니다. 다른 사용자가 파일 시스템을 수정할 수 있게 하려면 루트 사용자가 다른 사용자에게 액세스 권한을 명시적으로 부여해야 합니다. RDS for Oracle DB 인스턴스 사용자는 `others` 범주에 속합니다. 자세한 내용은 *Amazon Elastic File System 사용 설명서*의 [NFS(네트워크 파일 시스템) 수준에서 사용자, 그룹, 권한 작업](https://docs.aws.amazon.com/efs/latest/ug/accessing-fs-nfs-permissions.html)을 참조하세요.

RDS for Oracle DB 인스턴스가 EFS 파일 시스템에 있는 파일을 읽고 쓸 수 있도록 하려면 다음을 수행합니다.
+ EFS 파일 시스템을 Amazon EC2 온프레미스 인스턴스에 로컬로 탑재합니다.
+ 세분화된 권한을 구성합니다.

예를 들어 `other` 사용자에게 EFS 파일 시스템 루트에 쓸 수 있는 권한을 부여하려면 이 디렉터리에서 `chmod 777`을 실행하세요. 자세한 내용은 *Amazon Elastic File System 사용 설명서*의 [예시 Amazon EFS 파일 시스템 사용 사례 및 권한](https://docs.aws.amazon.com/efs/latest/ug/accessing-fs-nfs-permissions.html#accessing-fs-nfs-permissions-ex-scenarios)을 참조하세요.

# RDS for Oracle DB 인스턴스와 Amazon EFS 파일 시스템 간 파일 전송
<a name="oracle-efs-integration.transferring"></a>

RDS for Oracle 인스턴스와 Amazon EFS 파일 시스템 간에 파일을 전송하려면 하나 이상의 Oracle 디렉터리를 생성하고 DB 인스턴스 액세스를 제어하도록 EFS 파일 시스템 권한을 구성해야 합니다.

**Topics**
+ [Oracle 디렉터리 생성](#oracle-efs-integration.transferring.od)
+ [EFS 파일 시스템으로/EFS 파일 시스템에서 데이터 전송: 예제](#oracle-efs-integration.transferring.upload)

## Oracle 디렉터리 생성
<a name="oracle-efs-integration.transferring.od"></a>

Oracle 디렉터리를 생성하려면 `rdsadmin.rdsadmin_util.create_directory_efs` 프로시저를 사용합니다. 프로시저에는 다음과 같은 파라미터가 있습니다.


****  

| 파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | 
|  `p_directory_name`  |  VARCHAR2  |  –  |  예  |  Oracle 디렉터리의 이름입니다.  | 
|  `p_path_on_efs`  |  VARCHAR2  |  –  |  예  |  EFS 파일 시스템의 경로입니다. 경로 이름의 접두사는 `/rdsefs-fsid/` 패턴을 사용합니다. 여기서 *fsid*는 EFS 파일 시스템 ID의 자리 표시자입니다. 예를 들어 EFS 파일 시스템의 이름이 `fs-1234567890abcdef0`이고 이 파일 시스템에 이름이 `mydir`인 하위 디렉터리를 생성하는 경우 다음 값을 지정할 수 있습니다. <pre>/rdsefs-fs-1234567890abcdef0/mydir</pre>  | 

EFS 파일 시스템 `fs-1234567890abcdef0`에 이름이 `/datapump1`인 하위 디렉터리를 생성한다고 가정해 보겠습니다. 다음 예제에서는 EFS 파일 시스템의 `/datapump1` 디렉터리를 가리키는 Oracle 디렉터리 `DATA_PUMP_DIR_EFS`를 생성합니다. `p_path_on_efs` 파라미터의 파일 시스템 경로 값에는 문자열 접두사 `/rdsefs-`가 붙습니다.

```
BEGIN
  rdsadmin.rdsadmin_util.create_directory_efs(
    p_directory_name => 'DATA_PUMP_DIR_EFS', 
    p_path_on_efs    => '/rdsefs-fs-1234567890abcdef0/datapump1');
END;
/
```

## EFS 파일 시스템으로/EFS 파일 시스템에서 데이터 전송: 예제
<a name="oracle-efs-integration.transferring.upload"></a>

다음 예제에서는 Oracle Data Pump를 사용하여 이름이 `MY_TABLE`인 테이블을 `datapump.dmp` 파일로 내보냅니다. 이 파일은 EFS 파일 시스템에 있습니다.

```
DECLARE
  v_hdnl NUMBER;
BEGIN
  v_hdnl := DBMS_DATAPUMP.OPEN(operation => 'EXPORT', job_mode => 'TABLE', job_name=>null);
  DBMS_DATAPUMP.ADD_FILE(
    handle    => v_hdnl,
    filename  => 'datapump.dmp',
    directory => 'DATA_PUMP_DIR_EFS',
    filetype  => dbms_datapump.ku$_file_type_dump_file);
  DBMS_DATAPUMP.ADD_FILE(
    handle    => v_hdnl,
    filename  => 'datapump-exp.log',
    directory => 'DATA_PUMP_DIR_EFS',
    filetype  => dbms_datapump.ku$_file_type_log_file);
  DBMS_DATAPUMP.METADATA_FILTER(v_hdnl,'NAME_EXPR','IN (''MY_TABLE'')');
  DBMS_DATAPUMP.START_JOB(v_hdnl);
END;
/
```

다음 예제에서는 Oracle Data Pump를 사용하여 이름이 `MY_TABLE`인 테이블을 `datapump.dmp` 파일로 가져옵니다. 이 파일은 EFS 파일 시스템에 있습니다.

```
DECLARE
  v_hdnl NUMBER;
BEGIN
  v_hdnl := DBMS_DATAPUMP.OPEN(
    operation => 'IMPORT',
    job_mode  => 'TABLE',
    job_name  => null);
  DBMS_DATAPUMP.ADD_FILE(
    handle    => v_hdnl,
    filename  => 'datapump.dmp',
    directory => 'DATA_PUMP_DIR_EFS',
    filetype  => dbms_datapump.ku$_file_type_dump_file );
  DBMS_DATAPUMP.ADD_FILE(
    handle    => v_hdnl,
    filename  => 'datapump-imp.log',
    directory => 'DATA_PUMP_DIR_EFS',
    filetype  => dbms_datapump.ku$_file_type_log_file);
  DBMS_DATAPUMP.METADATA_FILTER(v_hdnl,'NAME_EXPR','IN (''MY_TABLE'')');
  DBMS_DATAPUMP.START_JOB(v_hdnl);
END;
/
```

자세한 내용은 [Amazon RDS의 Oracle로 데이터 가져오기](Oracle.Procedural.Importing.md) 섹션을 참조하세요.

# EFS\$1INTEGRATION 옵션 제거
<a name="oracle-efs-integration.removing"></a>

옵션을 제거하는 단계는 여러 DB 인스턴스에서 `EFS_INTEGRATION` 옵션을 제거할지 단일 인스턴스에서 제거할지에 따라 달라집니다.


| DB 인스턴스 개수 | 작업 | 관련 정보 | 
| --- | --- | --- | 
| 다양함 | DB 인스턴스가 속한 옵션 그룹에서 EFS\$1INTEGRATION 옵션을 제거합니다. 이 변경은 해당 옵션 그룹을 사용하는 모든 인스턴스에 영향을 미칩니다. | [옵션 그룹에서 옵션 제거](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.RemoveOption) | 
| 단일 | DB 인스턴스를 수정하고 EFS\$1INTEGRATION 옵션이 포함되지 않은 다른 옵션 그룹을 지정합니다. 기본(비어 있음) 옵션 그룹을 지정하거나 다른 사용자 지정 옵션 그룹을 지정할 수 있습니다. | [Amazon RDS DB 인스턴스 수정](Overview.DBInstance.Modifying.md) | 

`EFS_INTEGRATION` 옵션을 제거한 후에는 선택적으로 DB 인스턴스에 연결되어 있던 EFS 파일 시스템을 삭제할 수 있습니다.

# Amazon EFS 통합 문제 해결
<a name="oracle-efs-integration.troubleshooting"></a>

RDS for Oracle DB 인스턴스는 Amazon EFS 파일 시스템에 대한 연결을 모니터링합니다. 모니터링에서 문제가 감지되면 RDS for Oracle DB 인스턴스는 문제를 수정하고 RDS 콘솔에 이벤트를 게시하려 시도할 수 있습니다. 자세한 내용은 [Amazon RDS 이벤트 보기](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_ListEvents.html)를 참조하세요.

이 섹션의 정보는 Amazon EFS 통합 작업 시 일반적 문제를 진단하고 수정하는 데 도움이 됩니다.


| Notification | 설명 | 작업 | 
| --- | --- | --- | 
|  `The EFS for RDS Oracle instance instance_name isn't available on the primary host. NFS port 2049 of your EFS isn't reachable.`  |  DB 인스턴스가 EFS 파일 시스템과 통신할 수 없습니다.  |  다음을 확인하세요. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/oracle-efs-integration.troubleshooting.html)  | 
|  `The EFS isn't reachable.`  |  `EFS_INTEGRATION` 옵션을 설치하는 동안 오류가 발생했습니다.  |  다음을 확인하세요. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/oracle-efs-integration.troubleshooting.html)  | 
|  `The associated role with your DB instance wasn't found.`  |  `EFS_INTEGRATION` 옵션을 설치하는 동안 오류가 발생했습니다.  |  IAM 역할을 RDS for Oracle DB 인스턴스에 연결했는지 확인합니다.  | 
|  `The associated role with your DB instance wasn't found.`  |  `EFS_INTEGRATION` 옵션을 설치하는 동안 오류가 발생했습니다. RDS for Oracle은 `USE_IAM_ROLE` 옵션 설정이 `TRUE`인 DB 스냅샷에서 복원되었습니다.  |  IAM 역할을 RDS for Oracle DB 인스턴스에 연결했는지 확인합니다.  | 
|  `The associated role with your DB instance wasn't found.`  |  `EFS_INTEGRATION` 옵션을 설치하는 동안 오류가 발생했습니다. RDS for Oracle은 `USE_IAM_ROLE` 옵션 설정이 `TRUE`인 올인원 CloudFormation 템플릿에서 생성되었습니다.  |  차선책으로 다음 단계를 따라 완료하세요. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/oracle-efs-integration.troubleshooting.html)  | 
|  `PLS-00302: component 'CREATE_DIRECTORY_EFS' must be declared`  |  이 오류는 Amazon EFS를 지원하지 않는 RDS for Oracle 버전을 사용할 때 발생할 수 있습니다.  |  RDS for Oracle DB 인스턴스 버전 19.0.0.0.ru-2022-07.rur-2022-07.r1 이상을 사용하고 있는지 확인하세요.  | 
|  `Read access of your EFS is denied. Check your file system policy.`  |  DB 인스턴스가 EFS 파일 시스템을 읽을 수 없습니다.  |  EFS 파일 시스템이 IAM 역할을 통해 또는 EFS 파일 시스템 수준에서 읽기 액세스를 허용하는지 확인하세요.  | 
|  해당 사항 없음  |  DB 인스턴스가 EFS 파일 시스템에 쓸 수 없습니다.  |  다음 단계를 따릅니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/oracle-efs-integration.troubleshooting.html)  | 

# Oracle Java 가상 머신
<a name="oracle-options-java"></a>

Amazon RDS는 `JVM` 옵션을 사용함으로써 Oracle Jave 가상 머신(JVM)을 지원합니다. Oracle Java는 Oracle 데이터베이스에서 Oracle Java 기능을 지원하는 SQL 스키마 및 함수를 제공합니다. 자세한 내용은 Oracle 설명서의 [ Oracle 데이터베이스에 Jave 도입](https://docs.oracle.com/database/121/JJDEV/chone.htm) 단원을 참조하십시오. 모든 버전의 Oracle Database 21c(21.0.0) 및 Oracle Database 19c(19.0.0)에서 Oracle JVM을 사용할 수 있습니다.

## Oracle JVM 고려 사항
<a name="oracle-options-java.considerations"></a>

Amazon RDS의 Java 구현에는 권한 집합이 제한되어 있습니다. 마스터 사용자에게는 `RDS_JAVA_ADMIN` 역할이 부여되며, `JAVA_ADMIN` 역할에 의해 부여된 권한의 하위 집합이 부여됩니다. `RDS_JAVA_ADMIN` 역할에 부여된 권한을 나열하려면 DB 인스턴스에서 다음 쿼리를 실행하십시오.

```
SELECT * FROM dba_java_policy 
   WHERE grantee IN ('RDS_JAVA_ADMIN', 'PUBLIC') 
   AND enabled = 'ENABLED' 
   ORDER BY type_name, name, grantee;
```

## Oracle JVM 사전 조건
<a name="oracle-options-java.prerequisites"></a>

다음은 Oracle Java 사용 시 사전 조건입니다.
+ DB 인스턴스 클래스는 충분히 커야 합니다. Oracle Java는 db.t3.small DB 인스턴스 클래스에 대해 지원되지 않습니다. 자세한 내용은 [DB 인스턴스 클래스](Concepts.DBInstanceClass.md) 섹션을 참조하세요.
+ DB 인스턴스는 **마이너 버전 자동 업그레이드**가 활성화되어 있어야 합니다. 이 옵션을 사용하면 DB 인스턴스가 마이너 DB 엔진 버전 업그레이드를 사용할 수 있을 때 자동으로 수신할 수 있습니다. Amazon RDS는 이 옵션을 사용하여 DB 인스턴스를 최신 Oracle Patch Set Update(PSU) 또는 Release Update(RU)로 업데이트합니다. 자세한 내용은 [Amazon RDS DB 인스턴스 수정](Overview.DBInstance.Modifying.md) 섹션을 참조하세요.

## Oracle JVM의 모범 사례
<a name="oracle-options-java.best-practices"></a>

다음은 Oracle Java 사용에 관한 모범 사례입니다.
+ 보안을 극대화하기 위해 Secure Sockets Layer(SSL)와 함께 `JVM` 옵션을 사용합니다. 자세한 내용은 [Oracle 보안 소켓 Layer](Appendix.Oracle.Options.SSL.md) 섹션을 참조하세요.
+ DB 인스턴스를 구성하여 네트워크 액세스를 제한하십시오. 자세한 내용은 [VPC에서 DB 인스턴스에 액세스하는 시나리오](USER_VPC.Scenarios.md) 및 [VPC에서 DB 인스턴스를 사용한 작업](USER_VPC.WorkingWithRDSInstanceinaVPC.md) 단원을 참조하십시오.
+ 다음 조건을 충족하는 경우 TLSv1.2를 지원하도록 HTTPS 엔드포인트의 구성을 업데이트합니다.
  + Oracle Java Virtual Machine(JVM)을 사용하여 TLSv1 또는 TLSv1.1 프로토콜을 통해 HTTPS 엔드포인트를 연결합니다.
  + 이 엔드포인트는 TLSv1.2 프로토콜을 지원하지 않습니다.
  + 2021년 4월 릴리스 업데이트가 Oracle DB에 적용되지 않았습니다.

  엔드포인트 구성을 업데이트하면 JVM과 HTTPS 엔드포인트의 연결이 계속해서 작동합니다. Oracle JRE 및 JDK의 TLS 변경 사항에 대한 자세한 내용은 [Oracle JRE 및 JDK 암호화 로드맵](https://java.com/en/jre-jdk-cryptoroadmap.html)을 참조하세요.

## Oracle JVM 옵션 추가
<a name="oracle-options-java.add"></a>

`JVM` 옵션을 DB 인스턴스에 추가하는 일반적인 프로세스는 다음과 같습니다.

1. 새 옵션 그룹을 생성하거나 기존 옵션 그룹을 복사 또는 수정합니다.

1. [] 옵션을 옵션 그룹에 추가합니다.

1. 옵션 그룹을 DB 인스턴스에 연동시킵니다.

`JVM` 옵션을 추가하는 동안 잠시 작동이 중단됩니다. 옵션을 추가한 후 DB 인스턴스를 재시작할 필요가 없습니다. 옵션 그룹이 활성화되는 즉시 Oracle java를 사용 가능합니다.

**참고**  
이 중단 기간 동안에는 암호 확인 기능이 잠시 비활성화됩니다. 중단 기간 중에 암호 확인 기능과 관련된 이벤트를 볼 수도 있습니다. Oracle DB 인스턴스를 사용하기 전에 암호 확인 기능이 다시 활성화됩니다.

**DB 인스턴스에 JVM 옵션을 추가하려면**

1. 사용할 옵션 그룹을 결정합니다. 새 옵션 그룹을 생성하거나 기존 옵션 그룹을 사용합니다. 기존 옵션 그룹을 사용하려면 다음 단계로 건너뛰십시오. 그렇지 않으면 다음 설정을 사용하여 사용자 지정 DB 옵션을 생성합니다.
   + **엔진**에는 DB 인스턴스에서 사용하는 DB 엔진을 선택하십시오(**oracle-ee**, **oracle-se**, **oracle-se1** 또는 **oracle-se2**).
   + **메이저 엔진 버전**에서 DB 인스턴스의 버전을 선택합니다.

   자세한 내용은 [옵션 그룹 생성](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Create) 섹션을 참조하세요.

1. [**JVM**] 옵션을 옵션 그룹에 추가합니다. 옵션 추가에 대한 자세한 내용은 [옵션 그룹에 옵션 추가](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.AddOption) 섹션을 참조하세요.

1. 옵션 그룹을 새 DB 인스턴스 또는 기존 DB 인스턴스에 적용합니다: 
   + 새 DB 인스턴스의 경우, 인스턴스를 시작할 때 옵션 그룹을 적용하십시오. 자세한 내용은 [Amazon RDS DB 인스턴스 생성](USER_CreateDBInstance.md) 섹션을 참조하세요.
   + 기존 DB 인스턴스의 경우, 해당 인스턴스를 수정하고 새 옵션 그룹을 연결하여 옵션 그룹을 적용하십시오. 자세한 내용은 [Amazon RDS DB 인스턴스 수정](Overview.DBInstance.Modifying.md) 섹션을 참조하세요.

1. 필수 권한을 사용자에게 부여하십시오.

   Amazon RDS 마스터 사용자는 기본값으로 `JVM` 옵션을 사용하는 권한을 가져야 합니다. 다른 사용자가 이러한 사용 권한을 필요로 하는 경우 SQL 클라이언트에서 DB 인스턴스에 마스터 사용자로 연결하고 사용자에게 사용 권한을 부여하십시오.

   다음 예제에서는 `JVM` 사용자에게 `test_proc` 옵션 사용 권한을 부여합니다.

   ```
   create user test_proc identified by password;
   CALL dbms_java.grant_permission('TEST_PROC', 'oracle.aurora.security.JServerPermission', 'LoadClassInPackage.*', '');
   ```
**참고**  
보안 모범 사례로 여기에 표시된 프롬프트 이외의 암호를 지정하는 것이 좋습니다.

   사용자에게 권한이 부여되면 다음 쿼리는 출력을 반환해야 합니다.

   ```
   select * from dba_java_policy where grantee='TEST_PROC';
   ```
**참고**  
Oracle 사용자 이름은 대소문자를 구분하며 일반적으로 모두 대문자입니다.

## Oracle JVM 옵션 제거
<a name="oracle-options-java.remove"></a>

DB 인스턴스에서 `JVM` 옵션을 제거할 수 있습니다. 옵션을 제거하는 동안 잠시 작동이 중단됩니다. `JVM` 옵션을 제거한 후 DB 인스턴스를 재시작할 필요가 없습니다.

**주의**  
 `JVM` 옵션을 삭제했을 때 DB 인스턴스가 옵션의 일부로 활성화되어 있는 데이터 형식을 사용하고 있다면 데이터가 손실될 수 있습니다. 따라서 처리 전에 데이터를 백업해야 합니다. 자세한 내용은 [데이터 백업, 복원 및 내보내기](CHAP_CommonTasks.BackupRestore.md) 섹션을 참조하세요.

DB 인스턴스에서 `JVM` 옵션을 제거하려면 다음 중 하나를 수행합니다.
+ 소속 옵션 그룹에서 `JVM` 옵션을 제거합니다. 이 변경은 해당 옵션 그룹을 사용하는 모든 DB 인스턴스에 영향을 미칩니다. 자세한 내용은 [옵션 그룹에서 옵션 제거](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.RemoveOption) 섹션을 참조하세요.
+ DB 인스턴스를 수정하고 `JVM` 옵션이 포함되지 않은 다른 옵션 그룹을 지정합니다. 이 변경은 단일 DB 인스턴스에 영향을 미칩니다. 기본(빈) 옵션 그룹을 지정하거나 다른 사용자 지정 옵션 그룹을 지정할 수 있습니다. 자세한 내용은 [Amazon RDS DB 인스턴스 수정](Overview.DBInstance.Modifying.md) 섹션을 참조하세요.

# Oracle Enterprise Manager
<a name="Oracle.Options.OEM"></a>

Amazon RDS는 Oracle Enterprise Manager(OEM)를 지원합니다. OEM은 엔터프라이즈 정보 기술의 통합 관리를 위한 Oracle 제품 라인입니다.

Amazon RDS는 Oracle Database 19c 비CDB 또는 CDB에서만 OEM을 지원합니다. 다음 표에서는 지원되는 OEM 옵션에 대해 설명합니다.


****  

| 옵션 | 옵션 ID | 지원되는 OEM 릴리스 | 
| --- | --- | --- | 
|  [OEM Database Express](Appendix.Oracle.Options.OEM_DBControl.md)  |  `OEM`  |  OEM Database Express 19c  | 
|  [OEM Management Agent](Oracle.Options.OEMAgent.md)  |  `OEM_AGENT`  |  OEM Cloud Control for 13c  | 

**참고**  
OEM 데이터베이스 또는 OEM Management Agent를 사용할 수 있지만 둘 다 사용할 수는 없습니다.

# Oracle Enterprise Manager Database Express
<a name="Appendix.Oracle.Options.OEM_DBControl"></a>

Amazon RDS는 OEM 옵션 사용을 통해 Oracle Enterprise Manager Database Express(EM Express)를 지원합니다. Amazon RDS는 CDB 또는 비CDB 아키텍처를 사용하여 Oracle Database 19c용 EM Express를 지원합니다.

EM Express는 데이터베이스에 포함된 웹 기반 데이터베이스 관리 도구이며 개방되었을 때만 사용할 수 있습니다. 주요 성능 관리 및 기본 데이터베이스 관리 기능을 지원합니다. 자세한 내용은 Oracle 설명서의 [Introduction to Oracle Enterprise Manager Database Express](https://docs.oracle.com/en/database/oracle/oracle-database/19/admqs/getting-started-with-database-administration.html#GUID-BA75AD46-D22E-4914-A31E-C395CD6A2BBA)를 참조하세요.

**참고**  
EM Express는 db.t3.small DB 인스턴스 클래스에서 지원되지 않습니다. DB 인스턴스 클래스에 대한 자세한 내용은 [RDS for Oracle DB 인스턴스 클래스](Oracle.Concepts.InstanceClasses.md) 섹션을 참조하세요.

## OEM 옵션 설정
<a name="Appendix.Oracle.Options.OEM_DBControl.Options"></a>

Amazon RDS는 OEM 옵션에 대해 다음 설정을 지원합니다.


****  

| 옵션 설정 | 유효한 값 | 설명 | 
| --- | --- | --- | 
| **포트** | 정수 값 |  EM Express를 수신하는 RDS for Oracle DB 인스턴스의 포트입니다. 기본값은 5500입니다.  | 
| ** 보안 그룹** | — |  **Port(포트)**에 액세스할 수 있는 보안 그룹입니다.  | 

## 1단계: OEM 옵션 추가
<a name="Appendix.Oracle.Options.OEM_DBControl.Add"></a>

OEM 옵션을 DB 인스턴스에 추가하는 일반적인 프로세스는 다음과 같습니다.

1. 새 옵션 그룹을 생성하거나 기존 옵션 그룹을 복사 또는 수정합니다.

1. 옵션을 옵션 그룹에 추가합니다.

1. 옵션 그룹과 DB 인스턴스를 연결합니다.

OEM 옵션을 추가하는 경우 DB 인스턴스를 자동으로 다시 시작하는 동안 잠시 작동이 중단됩니다.

**DB 인스턴스에 OEM 옵션을 추가하려면**

1. 사용할 옵션 그룹을 결정합니다. 새 옵션 그룹을 생성하거나 기존 옵션 그룹을 사용합니다. 기존 옵션 그룹을 사용하려면 다음 단계로 건너뛰십시오. 그렇지 않으면 다음 설정을 사용하여 사용자 지정 DB 옵션을 생성합니다.

   1. [**Engine**]에서 DB 인스턴스의 Oracle 에디션을 선택합니다.

   1. **메이저 엔진 버전**에서 DB 인스턴스의 버전을 선택합니다.

   자세한 내용은 [옵션 그룹 생성](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Create) 섹션을 참조하세요.

1. OEM 옵션을 옵션 그룹에 추가하고 옵션 설정을 구성합니다. 옵션 추가에 대한 자세한 내용은 [옵션 그룹에 옵션 추가](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.AddOption) 섹션을 참조하세요. 각 설정에 대한 자세한 내용은 [OEM 옵션 설정](#Appendix.Oracle.Options.OEM_DBControl.Options) 섹션을 참조하십시오.
**참고**  
하나 이상의 DB 인스턴스에 이미 연결되어 있는 기존 옵션 그룹에 OEM 옵션을 추가하면 모든 DB 인스턴스가 자동으로 다시 시작되는 동안 인스턴스가 잠시 중단됩니다.

1. 옵션 그룹을 새 DB 인스턴스 또는 기존 DB 인스턴스에 적용합니다:
   + 새 DB 인스턴스의 경우, 인스턴스를 시작할 때 옵션 그룹을 적용하십시오. 자세한 내용은 [Amazon RDS DB 인스턴스 생성](USER_CreateDBInstance.md) 섹션을 참조하세요.
   + 기존 DB 인스턴스의 경우, 해당 인스턴스를 수정하고 새 옵션 그룹을 연결하여 옵션 그룹을 적용하십시오. OEM 옵션을 추가하는 경우 DB 인스턴스를 자동으로 다시 시작하는 동안 잠시 작동이 중단됩니다. 자세한 내용은 [Amazon RDS DB 인스턴스 수정](Overview.DBInstance.Modifying.md) 섹션을 참조하세요.

**참고**  
AWS CLI를 사용하여 OEM 옵션을 추가할 수도 있습니다. 예제는 [옵션 그룹에 옵션 추가](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.AddOption)을 참조하세요.

## 2단계: (CDB만 해당) DBSNMP 사용자 계정 잠금 해제
<a name="Appendix.Oracle.Options.OEM_DBControl.DBSNMP"></a>

DB 인스턴스는 CDB 아키텍처를 사용하므로, EM Express에 `DBSNMP`로 로그인해야 합니다. `DBSNMP`는 CDB에서 일반 사용자입니다. 기본적으로 이 계정은 잠겨 있습니다. DB 인스턴스가 CDB 아키텍처를 사용하지 않는 경우 이 단계를 건너뛰세요.

**CDB 인스턴스에서 DBSNMP 사용자 계정을 잠금 해제하려면**

1. SQL\$1Plus 또는 다른 Oracle SQL 애플리케이션에서 마스터 사용자로 DB 인스턴스에 로그인합니다.

1. 다음 저장 프로시저를 실행하여 `DBSNMP` 계정을 잠금 해제합니다.

   ```
   1. EXEC rdsadmin.rdsadmin_util.reset_oem_agent_password('new_password');
   ```

   프로시저가 존재하지 않는다는 오류 메시지가 표시되면 CDB 인스턴스를 재부팅하여 자동으로 설치합니다. 자세한 내용은 [ DB 인스턴스 재부팅](USER_RebootInstance.md) 섹션을 참조하세요.

## 3단계: 브라우저를 통해 EM Express에 액세스
<a name="Appendix.Oracle.Options.OEM_DBControl.Using"></a>

웹 브라우저에서 EM Express에 액세스하면 사용자 이름과 암호를 묻는 로그인 창이 나타납니다.

**브라우저를 통해 EM Express에 액세스하려면**

1. 사용자의 Amazon RDS DB 인스턴스에 대한 엔드포인트와 EM Express 포트를 식별합니다. 사용자의 Amazon RDS DB 인스턴스에 대한 엔드포인트를 찾는 방법은 [RDS for Oracle DB 인스턴스의 엔드포인트 찾기](USER_Endpoint.md) 섹션을 참조하십시오.

1. 브라우저 로케이터 표시줄에 다음 형식을 사용하여 URL을 입력합니다.

   ```
   https://endpoint.rds.amazonaws.com:port/em
   ```

   예를 들어, Amazon RDS DB 인스턴스의 엔드포인트가 `mydb.a1bcde234fgh.us-east-1.rds.amazonaws.com`이고 EM Express 포트가 `1158`인 경우 다음 URL을 사용하여 EM Express에 액세스합니다.

   ```
   1. https://mydb.f9rbfa893tft.us-east-1.rds.amazonaws.com:1158/em
   ```

1. 로그인 세부 정보를 입력하라는 메시지가 표시되면 데이터베이스 아키텍처에 따라 다음 작업 중 하나를 수행합니다.  
**데이터베이스가 CDB가 아닙니다.**  
DB 인스턴스에 대한 마스터 사용자 이름과 마스터 암호를 입력합니다.  
**데이터베이스가 CDB입니다.**  
사용자 및 `DBSNMP` 암호에 `DBSNMP`를 입력합니다. `Container` 필드는 비워둡니다.

## OEM Database 설정 수정
<a name="Appendix.Oracle.Options.OEM_DBControl.ModifySettings"></a>

OEM Database를 활성화한 후 옵션의 보안 그룹 설정을 수정할 수 있습니다.

옵션 그룹을 DB 인스턴스와 연동한 이후에는 OEM 포트 번호를 수정할 수 없습니다. DB 인스턴스의 OEM 포트 번호를 변경하려면 다음과 같이 합니다.

1. 새 옵션 그룹을 생성합니다.

1. 새 포트 번호가 포함된 OEM 옵션에 새 옵션 그룹을 추가합니다.

1. DB 인스턴스에서 기존 옵션 그룹을 제거합니다.

1. 새 옵션 그룹을 DB 인스턴스에 추가합니다.

옵션 설정을 변경하는 방법에 대한 자세한 내용은 [옵션 설정 수정](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.ModifyOption)을(를) 참조하십시오. 각 설정에 대한 자세한 내용은 [OEM 옵션 설정](#Appendix.Oracle.Options.OEM_DBControl.Options) 단원을 참조하십시오.

## OEM Database Express 작업 실행
<a name="Appendix.Oracle.Options.OEM_DBControl.DBTasks"></a>

Amazon RDS 절차를 통해 특정 OEM Database Express 작업을 실행할 수 있습니다. 이 프로시저를 실행하면 다음과 같은 작업을 수행할 수 있습니다.

**참고**  
OEM Database Express 작업은 비동기식으로 실행됩니다.

**Topics**
+ [OEM Database Express의 웹 사이트 프런트 엔드를 Adobe Flash로 전환](#Appendix.Oracle.Options.OEM_DBControl.DBTasks.FrontEndToFlash)
+ [OEM Database Express의 웹 사이트 프런트 엔드를 Oracle JET로 전환](#Appendix.Oracle.Options.OEM_DBControl.DBTasks.FrontEndToOracleJET)

### OEM Database Express의 웹 사이트 프런트 엔드를 Adobe Flash로 전환
<a name="Appendix.Oracle.Options.OEM_DBControl.DBTasks.FrontEndToFlash"></a>

**참고**  
이 작업은 Oracle Database 19c 비 CDB의 경우에만 가능합니다.

Oracle Database 19c부터 Oracle은 Adobe Flash 기반의 이전 OEM Database Express 사용자 인터페이스를 더 이상 사용하지 않습니다. 대신, 이제 OEM Database Express에서 Oracle JET로 구축된 인터페이스를 사용합니다. 새 인터페이스 사용에 문제가 있는 경우 더 이상 사용하지 않는 Flash 기반 인터페이스로 다시 전환할 수 있습니다. 새 인터페이스 사용 시 발생할 수 있는 문제에는 OEM Database Express에 로그인한 후 `Loading` 화면이 멈추는 것이 포함됩니다. Flash 기반의 OEM Database Express 버전에 있는 특정 기능을 사용하지 못할 수도 있습니다.

OEM Database Express 웹 사이트 프런트 엔드를 Adobe Flash로 전환하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_oem_tasks.em_express_frontend_to_flash`를 실행하십시오. 이 프로시저는 `execemx emx` SQL 명령과 동일합니다.

보안 모범 사례에서는 Adobe Flash의 사용을 권장하지 않습니다. Flash 기반의 OEM Database Express로 되돌릴 수 있지만 가능하면 JET 기반의 OEM Database Express 웹 사이트를 사용하는 것이 좋습니다. Adobe Flash를 사용하도록 되돌리고 Oracle JET를 사용하도록 다시 전환하려면 `rdsadmin.rdsadmin_oem_tasks.em_express_frontend_to_jet` 프로시저를 사용하십시오. Oracle Database 업그레이드 후 최신 버전의 Oracle JET에서 OEM Database Express의 JET 관련 문제를 해결할 수 있습니다. Oracle JET로의 전환에 대한 자세한 내용은 [OEM Database Express의 웹 사이트 프런트 엔드를 Oracle JET로 전환](#Appendix.Oracle.Options.OEM_DBControl.DBTasks.FrontEndToOracleJET) 단원을 참조하십시오.

**참고**  
읽기 전용 복제본의 원본 DB 인스턴스에서 이 작업을 실행하면 읽기 전용 복제본이 해당 OEM Database Express 웹 사이트 프런트 엔드를 Adobe Flash로 전환하게 됩니다.

다음 프로시저 호출은 OEM Database Express 웹 사이트에서 Adobe Flash로 전환하는 작업을 생성하고 작업 ID를 반환합니다.

```
SELECT rdsadmin.rdsadmin_oem_tasks.em_express_frontend_to_flash() as TASK_ID from DUAL;
```

작업의 출력 파일을 표시하여 결과를 볼 수 있습니다.

```
SELECT text FROM table(rdsadmin.rds_file_util.read_text_file('BDUMP','dbtask-task-id.log'));
```

*`task-id`*를 절차에서 반환된 작업 ID로 대체합니다. Amazon RDS 프로시저 `rdsadmin.rds_file_util.read_text_file`에 대한 자세한 내용은 [DB 인스턴스 디렉터리의 파일 목록 읽기](Appendix.Oracle.CommonDBATasks.Misc.md#Appendix.Oracle.CommonDBATasks.ReadingFiles) 단원을 참조하십시오.

AWS Management Console에 대한 **Logs & events(로그 및 이벤트)** 섹션에서 로그 항목을 검색하여 `task-id`에서 작업의 출력 파일 내용을 볼 수도 있습니다.

### OEM Database Express의 웹 사이트 프런트 엔드를 Oracle JET로 전환
<a name="Appendix.Oracle.Options.OEM_DBControl.DBTasks.FrontEndToOracleJET"></a>

**참고**  
이 작업은 Oracle Database 19c 비 CDB의 경우에만 가능합니다.

OEM Database Express 웹 사이트 프런트 엔드를 Oracle JET로 전환하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_oem_tasks.em_express_frontend_to_jet`를 실행합니다. 이 프로시저는 `execemx omx` SQL 명령과 동일합니다.

기본적으로 19c 이상을 실행하는 Oracle DB 인스턴스에 대한 OEM Database Express 웹 사이트에서는 Oracle JET를 사용합니다. `rdsadmin.rdsadmin_oem_tasks.em_express_frontend_to_flash` 프로시저를 사용하여 OEM Database Express 웹 사이트 프런트 엔드를 Adobe Flash로 전환한 경우 Oracle JET로 다시 전환할 수 있습니다. 이렇게 하려면 `rdsadmin.rdsadmin_oem_tasks.em_express_frontend_to_jet` 프로시저를 사용하십시오. Adobe Flash로 전환하는 방법에 대한 자세한 내용은 [OEM Database Express의 웹 사이트 프런트 엔드를 Adobe Flash로 전환](#Appendix.Oracle.Options.OEM_DBControl.DBTasks.FrontEndToFlash) 단원을 참조하십시오.

**참고**  
읽기 전용 복제본의 원본 DB 인스턴스에서 이 작업을 실행하면 읽기 전용 복제본이 해당 OEM Database Express 웹 사이트 프런트 엔드를 Oracle JET로 전환하게 됩니다.

다음 프로시저 호출은 OEM Database Express 웹 사이트를 Oracle JET로 전환하는 작업을 생성하고 작업 ID를 반환합니다.

```
SELECT rdsadmin.rdsadmin_oem_tasks.em_express_frontend_to_jet() as TASK_ID from DUAL;
```

작업의 출력 파일을 표시하여 결과를 볼 수 있습니다.

```
SELECT text FROM table(rdsadmin.rds_file_util.read_text_file('BDUMP','dbtask-task-id.log'));
```

*`task-id`*를 절차에서 반환된 작업 ID로 대체합니다. Amazon RDS 프로시저 `rdsadmin.rds_file_util.read_text_file`에 대한 자세한 내용은 [DB 인스턴스 디렉터리의 파일 목록 읽기](Appendix.Oracle.CommonDBATasks.Misc.md#Appendix.Oracle.CommonDBATasks.ReadingFiles) 단원을 참조하십시오.

AWS Management Console에 대한 **Logs & events(로그 및 이벤트)** 섹션에서 로그 항목을 검색하여 `task-id`에서 작업의 출력 파일 내용을 볼 수도 있습니다.

## OEM Database 옵션 제거
<a name="Appendix.Oracle.Options.OEM_DBControl.Remove"></a>

DB 인스턴스에서 OEM 옵션을 제거할 수 있습니다. OEM 옵션을 제거하는 경우 인스턴스를 자동으로 다시 시작하는 동안 인스턴스가 잠시 중단됩니다. 따라서 OEM 옵션을 제거한 후 DB 인스턴스를 다시 시작할 필요가 없습니다.

DB 인스턴스에서 OEM 옵션을 제거하려면 다음 중 하나를 수행합니다.
+ OEM Agent가 속한 옵션 그룹에서 OEM 옵션을 제거합니다. 이 변경은 해당 옵션 그룹을 사용하는 모든 DB 인스턴스에 영향을 미칩니다. 자세한 내용은 [옵션 그룹에서 옵션 제거](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.RemoveOption) 섹션을 참조하세요.
+ DB 인스턴스를 수정하고, OEM 옵션이 포함되지 않은 다른 옵션 그룹을 지정합니다. 이 변경은 단일 DB 인스턴스에 영향을 미칩니다. 기본(빈) 옵션 그룹을 지정하거나 다른 사용자 지정 옵션 그룹을 지정할 수 있습니다. 자세한 내용은 [Amazon RDS DB 인스턴스 수정](Overview.DBInstance.Modifying.md) 섹션을 참조하세요.

# Oracle Management Agent for Enterprise Manager Cloud Control
<a name="Oracle.Options.OEMAgent"></a>

Oracle Enterprise Manager(OEM) Management Agent는 호스트에서 실행되는 대상을 모니터링하고 해당 정보를 미들티어 Oracle Management Service(OMS)에 전달하는 소프트웨어 구성 요소입니다. Amazon RDS는 `OEM_AGENT` 옵션 사용을 통해 Management Agent를 지원합니다.

자세한 내용은 Oracle 설명서에서 [Overview of Oracle Enterprise Manager Cloud Control 12c](http://docs.oracle.com/cd/E24628_01/doc.121/e25353/overview.htm) 및 [Overview of Oracle Enterprise Manager Cloud Control 13c](http://docs.oracle.com/cd/E63000_01/EMCON/overview.htm#EMCON109) 섹션을 참조하십시오.

**Topics**
+ [Management Agent 요구 사항](#Oracle.Options.OEMAgent.PreReqs)
+ [OMS 호스트 통신 사전 요구 사항](#Oracle.Options.OEMAgent.PreReqs.host)
+ [Management Agent의 제한 사항](#Oracle.Options.OEMAgent.limitations)
+ [Management Agent 옵션 설정](#Oracle.Options.OEMAgent.Options)
+ [Management Agent 옵션을 DB 인스턴스에 활성화](#Oracle.Options.OEMAgent.Enable)
+ [Management Agent 옵션 제거](#Oracle.Options.OEMAgent.Remove)
+ [Management Agent를 사용하여 데이터베이스 작업 수행](#Oracle.Options.OEMAgent.DBTasks)

## Management Agent 요구 사항
<a name="Oracle.Options.OEMAgent.PreReqs"></a>

다음은 Management Agent 사용을 위한 일반적인 요구 사항입니다.
+ DB 인스턴스는 Oracle Database 19c(19.0.0.0)를 실행해야 합니다. CDB 아키텍처 또는 비CDB 아키텍처를 사용할 수 있습니다.
+ DB 인스턴스에 연결하도록 구성된 Oracle Management Service(OMS)를 사용해야 합니다. 다음과 같은 OMS 요구 사항을 확인합니다.
  + Management Agent 버전 13.5.0.0.v2 및 13.5.0.0.v3에는 OMS 버전 13.5.0.23 또는 24.1이 필요합니다.
  + Management Agent 버전 13.5.0.0.v1에는 OMS 버전 13.5.0.0 또는 24.1이 필요합니다.
  + Management Agent 버전 13.4.0.9.v1 및 13.4.0.9.v2에는 OMS 버전 13.4.0.9 이상과 32198287 패치가 필요합니다.
+ 대부분의 경우 OMS에서 DB 인스턴스로 연결을 허용하도록 VPC를 구성해야 합니다. Amazon Virtual Private Cloud(Amazon VPC)에 익숙하지 않은 경우 계속하기 전에 [자습서: DB 인스턴스에 사용할 Amazon VPC 생성(IPv4 전용)](CHAP_Tutorials.WebServerDB.CreateVPC.md)의 단계를 완료하는 것이 좋습니다.
+ 12c 및 13c용 Oracle Enterprise Manager Cloud Control과 함께 Management Agent를 사용할 수 있습니다. OEM 릴리스를 위한 충분한 스토리지 공간이 있는지 확인합니다.
  + OEM 13c 릴리스 5의 경우 최소 8.5GiB이 필요합니다.
  + OEM 13c 릴리스 4의 경우 최소 8.5GiB
  + OEM 13c 릴리스 3의 경우 최소 8.5GiB
  + OEM 13c 릴리스 2의 경우 최소 5.5GiB
  + OEM 13c 릴리스 1의 경우 최소 4.5GiB가 필요합니다.
  + OEM 12c의 경우 최소 2.5GiB
+ Management Agent 버전 `OEM_AGENT 13.2.0.0.v3` 및 `13.3.0.0.v2`를 사용 중이고 TCPS 연결을 사용하려면 Oracle 설명서의 [대상 데이터베이스와의 통신을 위한 서드 파티 CA 인증서 구성](https://docs.oracle.com/cd/E73210_01/EMSEC/GUID-8337AD48-1A32-4CD5-84F3-256FAE93D043.htm#EMSEC15996)에 설명된 지침을 따르세요. 또한 Oracle Doc ID가 2241358.1인 Oracle 문서의 지침에 따라 OMS에서 JDK를 업데이트하십시오. 그러면 데이터베이스가 지원하는 모든 암호 그룹을 OMS에서 지원하게 됩니다.
**참고**  
Management Agent와 DB 인스턴스 간 TCPS 연결은 Management Agent `OEM_AGENT 13.2.0.0.v3`, `13.3.0.0.v2`, `13.4.0.9.v1` 이상 버전에서 지원됩니다.

## OMS 호스트 통신 사전 요구 사항
<a name="Oracle.Options.OEMAgent.PreReqs.host"></a>

OMS 호스트와 Amazon RDS DB 인스턴스가 통신해야 합니다. 해결 방법: 
+ OMS 호스트가 방화벽 뒤에 있는 경우 Management Agent에서 OMS 호스트로 연결하려면 DB 인스턴스의 IP 주소를 방화벽에 추가합니다. OMS용 방화벽이 다음 네트워크 트래픽을 허용하도록 합니다.  
OMS 호스트에서 DB 인스턴스로의 기준  
OMS 호스트에서 데이터베이스 리스너 포트(기본값 1521) 및 OEM 에이전트 포트(기본값 3872)로의 트래픽을 허용하는 단방향 방화벽 규칙을 구성합니다.  
DB 인스턴스에서 OMS 호스트로의 기준  
DB 인스턴스에서 OMS HTTP 포트(기본값 4903)로의 트래픽을 허용하는 단방향 방화벽 규칙을 구성합니다.
+ OMS에 공개적으로 확인할 수 있는 호스트 이름이 있는 경우 OMS에서 Management Agent로 연결하려면 OMS 주소를 보안 그룹에 추가합니다. 보안 그룹에는 DB 리스너 포트 및 Management Agent 포트에 대한 액세스를 허용하는 인바운드 규칙이 있어야 합니다. 보안을 생성하고 인바운드 규칙을 추가하는 방법의 예는 [자습서: DB 인스턴스에 사용할 Amazon VPC 생성(IPv4 전용)](CHAP_Tutorials.WebServerDB.CreateVPC.md) 섹션을 참조하십시오.
+ OMS에 공개적으로 확인할 수 있는 호스트 이름이 없는 경우 OMS에서 Management Agent로 연결하려면 다음 중 하나를 사용합니다.
  + OMS가 프라이빗 VPC의 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스에 호스팅된 경우 VPC 피어링을 설정하여 OMS에서 Management Agent로 연결할 수 있습니다. 자세한 내용은 [VPC에 있는 DB 인스턴스에 다른 VPC에 있는 EC2 인스턴스가 액세스](USER_VPC.Scenarios.md#USER_VPC.Scenario3) 섹션을 참조하세요.
  + OMS가 온프레미스에 호스팅된 경우 VPN 연결을 설정하여 OMS에서 Management Agent로 액세스를 허용할 수 있습니다. 자세한 내용은 [클라이언트 애플리케이션이 인터넷을 통해 VPC에 있는 DB 인스턴스에 액세스](USER_VPC.Scenarios.md#USER_VPC.Scenario4) 또는 [VPN 연결](https://docs.aws.amazon.com/vpc/latest/userguide/vpn-connections.html)을 참조하십시오.
+ OEM Management Agent 버전 13.5.0.0(v1\$1v3)을 24.1 OMS 호스트에 연결하려면 구성 옵션에서 TLS 1.2 프로토콜 `TLSv1.2`를 사용하도록 `MINIMUM_TLS_VERSION`을 설정합니다.

## Management Agent의 제한 사항
<a name="Oracle.Options.OEMAgent.limitations"></a>

다음은 Management Agent를 사용할 때 적용되는 몇 가지 제한 사항입니다.
+ 사용자 지정 Oracle 관리 에이전트 이미지는 제공할 수 없습니다.
+ 작업 실행 및 데이터베이스 패치 적용과 같이 호스트 자격 증명이 필요한 관리 작업은 지원되지 않습니다.
+ 호스트 측정치 및 프로세스 목록에는 실제 시스템 상태가 반영되지 않을 수 있습니다. 따라서 OEM을 사용하여 루트 파일 시스템이나 마운트 지점 파일 시스템을 모니터링하면 안 됩니다. 운영 체제 모니터링에 대한 자세한 내용은 [Enhanced Monitoring을 사용하여 OS 지표 모니터링](USER_Monitoring.OS.md) 섹션을 참조하십시오.
+ 자동 검색은 지원되지 않습니다. 데이터베이스 대상을 수동으로 추가해야 합니다.
+ OMS 모듈 가용성은 데이터베이스 에디션에 따라 다릅니다. 예를 들어, 데이터베이스 성능 진단 및 튜닝 모듈은 Oracle Database Enterprise Edition에만 사용할 수 있습니다.
+ Management Agent는 추가 메모리 및 컴퓨팅 리소스를 사용합니다. `OEM_AGENT` 옵션을 활성화한 후 성능 문제가 발생할 경우 더 큰 DB 인스턴스 클래스로 조정하는 것이 좋습니다. 자세한 내용은 [DB 인스턴스 클래스](Concepts.DBInstanceClass.md) 및 [Amazon RDS DB 인스턴스 수정](Overview.DBInstance.Modifying.md) 섹션을 참조하십시오.
+ Amazon RDS 호스트에서 `OEM_AGENT`를 실행 중인 사용자에게는 경고 로그에 대한 운영 체제 액세스 권한이 없습니다. 따라서 OEM에서 `DB Alert Log` 및 `DB Alert Log Error Status`에 대한 지표를 수집할 수 없습니다.

## Management Agent 옵션 설정
<a name="Oracle.Options.OEMAgent.Options"></a>

Amazon RDS는 Management Agent 옵션에 대해 다음 설정을 지원합니다.


| 옵션 설정 | 필수 | 유효한 값 | 설명 | 
| --- | --- | --- | --- | 
|  **버전** (`AGENT_VERSION`)  |  예  |  `13.5.0.0.v3` `13.5.0.0.v2` `13.5.0.0.v1` `13.4.0.9.v2` `13.4.0.9.v1` `13.3.0.0.v2` `13.3.0.0.v1` `13.2.0.0.v3` `13.2.0.0.v2` `13.2.0.0.v1` `13.1.0.0.v1`  |  Management Agent 소프트웨어의 버전입니다. 현재 지원되는 최소 버전은 `13.1.0.0.v1`입니다. AWS CLI 옵션 이름은 `OptionVersion`입니다.  AWS GovCloud (US) 리전에서는 13.1 버전을 사용할 수 없습니다.   | 
|  **포트** (`AGENT_PORT`)  |  예  |  정수 값  |  OMS 호스트에 대해 수신 대기하는 DB 인스턴스의 포트입니다. 기본값은 3872입니다. OMS 호스트는 이 포트에 액세스할 수 있는 보안 그룹에 속해야 합니다. AWS CLI 옵션 이름은 `Port`입니다.  | 
|  ** 보안 그룹**  |  예  |  기존 보안 그룹  |  **Port(포트)**에 액세스할 수 있는 보안 그룹입니다. OMS 호스트는 이 보안 그룹에 속해야 합니다. AWS CLI 옵션 이름은 `VpcSecurityGroupMemberships` 또는 `DBSecurityGroupMemberships`입니다.  | 
|  **OMS\$1HOST**  |  예  |  문자열 값, 예: *my.example.oms*   |  OMS의 공개적으로 액세스할 수 있는 호스트 이름 또는 IP 주소입니다. AWS CLI 옵션 이름은 `OMS_HOST`입니다.  | 
|  **OMS\$1PORT**  |  예  |  정수 값  |  Management Agent에 대해 수신 대기하는 OMS 호스트의 HTTPS 업로드 포트입니다. HTTPS 업로드 포트를 결정하려면 OMS 호스트를 연결하고 다음 명령을 실행합니다(`SYSMAN` 암호 필요). emctl status oms -details  AWS CLI 옵션 이름은 `OMS_PORT`입니다.  | 
|  **AGENT\$1REGISTRATION\$1PASSWORD**  |  예  |  문자열 값  |  Management Agent가 OMS에 자신을 인증하기 위해 사용하는 암호입니다. `OEM_AGENT` 옵션을 활성화하기 전에 OMS에서 지속적인 암호를 생성하는 것이 좋습니다. 지속적인 암호가 있으면 단일 Management Agent 옵션 그룹을 여러 Amazon RDS 데이터베이스 간에 공유할 수 있습니다. AWS CLI 옵션 이름은 `AGENT_REGISTRATION_PASSWORD`입니다.  | 
|  **ALLOW\$1TLS\$1ONLY**  |  아니요  |  `true`, `false`(기본값)  |  에이전트가 서버로서 수신하는 동안 OEM 에이전트가 `TLSv1` 프로토콜만 지원하도록 구성하는 값입니다. 해당 설정은 더 이상 지원되지 않습니다. Management Agent 버전 13.1.0.0.v1 이상은 기본적으로 TLS(전송 계층 보안)를 지원합니다.  | 
|  **MINIMUM\$1TLS\$1VERSION**  |  아니요  |  `TLSv1` (default)`TLSv1.2`  |  에이전트가 서버로서 수신하는 동안 OEM 에이전트에서 지원하는 최소 TLS 버전을 지정하는 값입니다. 지원되지 않는 에이전트 버전에서는 `TLSv1` 설정만 지원합니다. 13.5.0.0(v1\$1v3)을 24.1 OMS 호스트에 연결하려면 이 값을 `TLSv1.2`로 설정합니다.  | 
|  **TLS\$1CIPHER\$1SUITE**  |  아니요  |  [Management Agent 옵션 설정](#Oracle.Options.OEMAgent.Options)을(를) 참조하세요.  |  에이전트가 서버로서 수신하는 동안 OEM 에이전트가 사용하는 TLS 암호 그룹을 지정하는 값입니다.  | 

다음 표에는 관리 에이전트 옵션에서 지원하는 TLS 암호 그룹이 나와 있습니다.


| 암호 그룹 | 지원되는 에이전트 버전 | FedRAMP 규정 준수 | 
| --- | --- | --- | 
| TLS\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1SHA | 모두 | 아니요 | 
| TLS\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1SHA256 | 13.1.0.0.v1 이상 | 아니요 | 
| TLS\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA | 13.2.0.0.v3 이상 | 아니요 | 
| TLS\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA256 | 13.2.0.0.v3 이상 | 아니요 | 
| TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1SHA | 13.2.0.0.v3 이상 | 예 | 
| TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA | 13.2.0.0.v3 이상 | 예 | 
| TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1SHA256 | 13.2.0.0.v3 이상 | 예 | 
| TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA384 | 13.2.0.0.v3 이상 | 예 | 
| TLS\$1ECDHE\$1ECDSA\$1WITH\$1AES\$1256\$1GCM\$1SHA384 | 13.4.0.9.v1 이상 | 예 | 
| TLS\$1ECDHE\$1ECDSA\$1WITH\$1AES\$1256\$1CBC\$1SHA384 | 13.4.0.9.v1 이상 | 예 | 

### 암호 제품군과의 인증서 호환성
<a name="Oracle.Options.OEMAgent.CertificateCompatibility"></a>

RDS for Oracle은 RSA 및 타원 곡선 디지털 서명 알고리즘(ECDSA) 인증서를 모두 지원합니다. DB 인스턴스에 OEM 에이전트 옵션을 구성할 때 `TLS_CIPHER_SUITE` 옵션 설정에서 지정한 암호 제품군이 DB 인스턴스에서 사용하는 인증서 유형과 호환되는지 확인해야 합니다.

다음 표는 인증서 유형과 암호 제품군 간의 호환성을 보여 줍니다.


| 인증서 유형 | 호환되는 암호 제품군 | 호환되지 않는 암호 제품군 | 
| --- | --- | --- | 
| RSA 인증서(rds-ca-2019, rds-ca-rsa2048-g1, rds-ca-rsa4096-g1) |  TLS\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1SHA TLS\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1SHA256 TLS\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA TLS\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA256 TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1SHA TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1SHA256 TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA384  |  TLS\$1ECDHE\$1ECDSA\$1WITH\$1AES\$1256\$1GCM\$1SHA384 TLS\$1ECDHE\$1ECDSA\$1WITH\$1AES\$1256\$1CBC\$1SHA384  | 
| ECDSA 인증서(rds-ca-ecc384-g1) |  TLS\$1ECDHE\$1ECDSA\$1WITH\$1AES\$1256\$1GCM\$1SHA384 TLS\$1ECDHE\$1ECDSA\$1WITH\$1AES\$1256\$1CBC\$1SHA384  |  TLS\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1SHA TLS\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1SHA256 TLS\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA TLS\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA256 TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1SHA TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1SHA256 TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA384  | 

`TLS_CIPHER_SUITE` 옵션 설정에서 암호 제품군을 지정할 때 DB 인스턴스에서 사용하는 인증서 유형과 호환되는지 확인합니다. 옵션 그룹을 DB 인스턴스의 인증서 유형과 호환되지 않는 암호 제품군이 포함된 OEM 에이전트 옵션과 연결하려고 하면 비호환성을 나타내는 오류 메시지와 함께 작업이 실패합니다.

## Management Agent 옵션을 DB 인스턴스에 활성화
<a name="Oracle.Options.OEMAgent.Enable"></a>

Management Agent 옵션을 활성화하려면 다음 단계를 사용합니다.

**Topics**
+ [1단계: Management Agent 옵션을 DB 인스턴스에 추가](#Oracle.Options.OEMAgent.Add)
+ [2단계: DBSNMP 사용자 계정 잠금 해제](#Oracle.Options.OEMAgent.DBSNMP)
+ [3단계: Management Agent 콘솔에 대상 추가](#Oracle.Options.OEMAgent.Using)

### 1단계: Management Agent 옵션을 DB 인스턴스에 추가
<a name="Oracle.Options.OEMAgent.Add"></a>

DB 인스턴스에 Management Agent 옵션을 추가하려면 다음을 수행하세요.

1. 새 옵션 그룹을 생성하거나 기존 옵션 그룹을 복사 또는 수정합니다.

1. [] 옵션을 옵션 그룹에 추가합니다.

1. 옵션 그룹을 DB 인스턴스에 연동시킵니다.

오류가 발생할 경우 [My Oracle Support](https://support.oracle.com/) 문서에서 특정 문제를 해결하는 자세한 내용을 확인합니다.

Management Agent 옵션을 추가한 후 DB 인스턴스를 재시작할 필요가 없습니다. 옵션 그룹이 활성화되자마자 OEM Agent가 활성화됩니다.

OMS 호스트가 신뢰할 수 없는 타사 인증서를 사용하는 경우 Amazon RDS가 다음 오류를 반환합니다.

```
You successfully installed the OEM_AGENT option. Your OMS host is using an untrusted third party certificate. 
Configure your OMS host with the trusted certificates from your third party.
```

이 오류가 반환되면 문제가 해결될 때까지 관리 에이전트 옵션을 사용할 수 없습니다. 문제 해결에 대한 정보는 My Oracle Support 설명서 [2202569.1](https://support.oracle.com/epmos/faces/DocContentDisplay?id=2202569.1)을 참조하십시오.

#### 콘솔
<a name="Oracle.Options.OEMAgent.Add.Console"></a>

**Management Agent 옵션을 DB 인스턴스에 추가하려면**

1. 사용할 옵션 그룹을 결정합니다. 새 옵션 그룹을 생성하거나 기존 옵션 그룹을 사용합니다. 기존 옵션 그룹을 사용하려면 다음 단계로 건너뛰십시오. 그렇지 않으면 다음 설정을 사용하여 사용자 지정 DB 옵션을 생성합니다.

   1. [**Engine**]에서 DB 인스턴스의 Oracle 에디션을 선택합니다.

   1. **메이저 엔진 버전**에서 DB 인스턴스의 버전을 선택합니다.

   자세한 내용은 [옵션 그룹 생성](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Create) 섹션을 참조하세요.

1. [**OEM\$1AGENT**] 옵션을 옵션 그룹에 추가하고 옵션 설정을 구성합니다. 옵션 추가에 대한 자세한 내용은 [옵션 그룹에 옵션 추가](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.AddOption) 섹션을 참조하세요. 각 설정에 대한 자세한 내용은 [Management Agent 옵션 설정](#Oracle.Options.OEMAgent.Options) 섹션을 참조하십시오.

1. 옵션 그룹을 새 DB 인스턴스 또는 기존 DB 인스턴스에 적용합니다: 
   + 새 DB 인스턴스의 경우, 인스턴스를 시작할 때 옵션 그룹을 적용합니다. 자세한 내용은 [Amazon RDS DB 인스턴스 생성](USER_CreateDBInstance.md) 섹션을 참조하세요.
   + 기존 DB 인스턴스의 경우, 해당 인스턴스를 수정하고 새 옵션 그룹을 연결하여 옵션 그룹을 적용합니다. 자세한 내용은 [Amazon RDS DB 인스턴스 수정](Overview.DBInstance.Modifying.md) 섹션을 참조하세요.

#### AWS CLI
<a name="Oracle.Options.OEMAgent.Add.CLI"></a>

다음 예에서는 AWS CLI [add-option-to-option-group](https://docs.aws.amazon.com/cli/latest/reference/rds/add-option-to-option-group.html) 명령을 사용하여 `OEM_AGENT` 옵션을 `myoptiongroup`이라는 옵션 그룹에 추가합니다.

대상 LinuxmacOS, 또는Unix:

```
aws rds add-option-to-option-group \
    --option-group-name "myoptiongroup" \
    --options OptionName=OEM_AGENT,OptionVersion=13.1.0.0.v1,Port=3872,VpcSecurityGroupMemberships=sg-1234567890,OptionSettings=[{Name=OMS_HOST,Value=my.example.oms},{Name=OMS_PORT,Value=4903},{Name=AGENT_REGISTRATION_PASSWORD,Value=password}] \
    --apply-immediately
```

Windows의 경우:

```
aws rds add-option-to-option-group ^
    --option-group-name "myoptiongroup" ^
    --options OptionName=OEM_AGENT,OptionVersion=13.1.0.0.v1,Port=3872,VpcSecurityGroupMemberships=sg-1234567890,OptionSettings=[{Name=OMS_HOST,Value=my.example.oms},{Name=OMS_PORT,Value=4903},{Name=AGENT_REGISTRATION_PASSWORD,Value=password}] ^
    --apply-immediately
```

### 2단계: DBSNMP 사용자 계정 잠금 해제
<a name="Oracle.Options.OEMAgent.DBSNMP"></a>

Management Agent는 `DBSNMP` 사용자 계정을 사용하여 데이터베이스에 연결하고 Oracle Enterprise Manager에 문제를 보고합니다. CDB에서 `DBSNMP`는 일반 사용자입니다. 이 사용자 계정은 Management Agent와 OEM Database Express 모두에 필요합니다. 기본적으로 이 계정은 잠겨 있습니다. 이 계정의 잠금을 해제하는 절차는 데이터베이스가 비CDB 아키텍처를 사용하는지 아니면 CDB 아키텍처를 사용하는지에 따라 달라집니다.

**DBSNMP 사용자 계정을 잠금 해제하려면**

1. SQL\$1Plus 또는 다른 Oracle SQL 애플리케이션에서 마스터 사용자로 DB 인스턴스에 로그인합니다.

1. 데이터베이스 아키텍처에 따라 다음 작업 중 하나를 수행합니다.  
**데이터베이스가 CDB가 아닙니다.**  
다음 SQL 문을 실행합니다.  

   ```
   1. ALTER USER dbsnmp IDENTIFIED BY new_password ACCOUNT UNLOCK;
   ```  
**데이터베이스가 CDB입니다.**  
다음 저장 프로시저를 실행하여 `DBSNMP` 계정을 잠금 해제합니다.  

   ```
   1. EXEC rdsadmin.rdsadmin_util.reset_oem_agent_password('new_password');
   ```
프로시저가 존재하지 않는다는 오류 메시지가 표시되면 CDB 인스턴스를 재부팅하여 자동으로 설치합니다. 자세한 내용은 [ DB 인스턴스 재부팅](USER_RebootInstance.md) 섹션을 참조하세요.

### 3단계: Management Agent 콘솔에 대상 추가
<a name="Oracle.Options.OEMAgent.Using"></a>

DB 인스턴스를 대상으로 추가하려면 엔드포인트와 포트를 알고 있어야 합니다. 사용자의 Amazon RDS DB 인스턴스에 대한 엔드포인트를 찾는 방법은 [RDS for Oracle DB 인스턴스의 엔드포인트 찾기](USER_Endpoint.md) 섹션을 참조하십시오. 데이터베이스에서 CDB 아키텍처를 사용하는 경우 `CDB$ROOT` 컨테이너를 별도로 대상으로 추가하세요.

**Management Agent 콘솔에 대상을 추가하려면**

1. OMS 콘솔에서 [**Setup**], [**Add Target**], [**Add Targets Manually**]를 선택합니다.

1. [**Add Targets Declaratively by Specifying Target Monitoring Properties**]를 선택합니다.

1. [**Target Type**]에서 [**Database Instance**]를 선택합니다.

1. **Monitoring Agent(모니터링 에이전트)**에서 RDS DB 인스턴스 식별자와 동일한 식별자가 있는 에이전트를 선택합니다.

1. [**Add Manually**]를 선택합니다.

1. Amazon RDS DB 인스턴스의 엔드포인트를 입력하거나 호스트 이름 목록에서 이를 선택합니다. 지정된 호스트 이름이 Amazon RDS DB 인스턴스의 엔드포인트와 일치하는지 확인합니다.

1. 다음 데이터베이스 속성을 지정합니다.
   + **대상 이름**에 이름을 입력합니다.
   + **Database system name(데이터베이스 시스템 이름)**에 이름을 입력합니다.
   + **Monitor username(모니터 사용자 이름)**에 **dbsnmp**를 입력합니다.
   + **모니터 암호**에 [2단계: DBSNMP 사용자 계정 잠금 해제](#Oracle.Options.OEMAgent.DBSNMP)의 암호를 입력합니다.
   + **역할**에 **normal**을 입력합니다.
   + **Oracle home path(Oracle 홈 경로)**에 **/oracle**을 입력합니다.
   + [**Listener Machine name**]에는 에이전트 식별자가 이미 나타나 있습니다.
   + **포트**에 데이터베이스 포트를 입력합니다. RDS 기본 포트는 1521입니다.
   + **데이터베이스 이름**에 데이터베이스 이름을 입력합니다. 데이터베이스가 CDB인 경우 이름은 `RDSCDB`입니다.

1. [**Test Connection**]을 선택합니다.

1. [**Next**]를 선택합니다. 모니터링되는 리소스 목록에 대상 데이터베이스가 나타납니다.

## Management Agent 옵션 제거
<a name="Oracle.Options.OEMAgent.Remove"></a>

DB 인스턴스에서 OEM Agent를 제거할 수 있습니다. OEM Agent를 제거한 후 DB 인스턴스를 재시작할 필요가 없습니다.

DB 인스턴스에서 OEM Agent를 제거하려면 다음 중 하나를 수행합니다.
+ OEM Agent가 속한 옵션 그룹에서 OEM Agent 옵션을 제거합니다. 이 변경은 해당 옵션 그룹을 사용하는 모든 DB 인스턴스에 영향을 미칩니다. 자세한 내용은 [옵션 그룹에서 옵션 제거](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.RemoveOption) 섹션을 참조하세요.
+ DB 인스턴스를 수정하고, OEM Agent 옵션이 포함되지 않은 다른 옵션 그룹을 지정합니다. 이 변경은 단일 DB 인스턴스에 영향을 미칩니다. 기본(빈) 옵션 그룹을 지정하거나 다른 사용자 지정 옵션 그룹을 지정할 수 있습니다. 자세한 내용은 [Amazon RDS DB 인스턴스 수정](Overview.DBInstance.Modifying.md) 섹션을 참조하세요.

## Management Agent를 사용하여 데이터베이스 작업 수행
<a name="Oracle.Options.OEMAgent.DBTasks"></a>

Amazon RDS 프로시저를 사용하여 Management Agent에서 특정 EMCTL 명령을 실행할 수 있습니다. 이 프로시저를 실행하면 다음과 같은 작업을 수행할 수 있습니다.

**참고**  
작업은 비동기식으로 실행됩니다.

**Topics**
+ [Management Agent 보호](#Oracle.Options.OEMAgent.DBTasks.SecureAgent)
+ [Management Agent의 상태 가져오기](#Oracle.Options.OEMAgent.DBTasks.GetAgentStatus)
+ [Management Agent 다시 시작](#Oracle.Options.OEMAgent.DBTasks.RestartAgent)
+ [Management Agent가 모니터링하는 대상 나열](#Oracle.Options.OEMAgent.DBTasks.ListTargets)
+ [Management Agent가 모니터링하는 수집 스레드 나열](#Oracle.Options.OEMAgent.DBTasks.ListCollectionThreads)
+ [Management Agent 상태 지우기](#Oracle.Options.OEMAgent.DBTasks.ClearState)
+ [Management Agent에서 OMS 업로드](#Oracle.Options.OEMAgent.DBTasks.ForceUploadOMS)
+ [OMS에 대해 ping 실행](#Oracle.Options.OEMAgent.DBTasks.PingOMS)
+ [진행 중인 작업 상태 보기](#Oracle.Options.OEMAgent.DBTasks.ViewTaskStatus)

### Management Agent 보호
<a name="Oracle.Options.OEMAgent.DBTasks.SecureAgent"></a>

Management Agent를 보호하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_oem_agent_tasks.secure_oem_agent`를 실행합니다. 이 프로시저는 `emctl secure agent` 명령을 실행하는 것과 동일합니다.

다음 프로시저에서는 Management Agent를 보호하는 작업을 생성하고 작업 ID를 반환합니다.

```
SELECT rdsadmin.rdsadmin_oem_agent_tasks.secure_oem_agent as TASK_ID from DUAL;
```

작업의 출력 파일을 표시하여 결과를 보려면 [진행 중인 작업 상태 보기](#Oracle.Options.OEMAgent.DBTasks.ViewTaskStatus) 섹션을 참조하세요.

### Management Agent의 상태 가져오기
<a name="Oracle.Options.OEMAgent.DBTasks.GetAgentStatus"></a>

Management Agent의 상태를 가져오려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_oem_agent_tasks.get_status_oem_agent`를 실행합니다. 이 프로시저는 `emctl status agent` 명령과 동일합니다.

다음 절차에서는 Management Agent의 상태를 가져오는 작업을 생성하고 작업 ID를 반환합니다.

```
SELECT rdsadmin.rdsadmin_oem_agent_tasks.get_status_oem_agent() as TASK_ID from DUAL;
```

작업의 출력 파일을 표시하여 결과를 보려면 [진행 중인 작업 상태 보기](#Oracle.Options.OEMAgent.DBTasks.ViewTaskStatus) 섹션을 참조하세요.

### Management Agent 다시 시작
<a name="Oracle.Options.OEMAgent.DBTasks.RestartAgent"></a>

Management Agent를 다시 시작하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_oem_agent_tasks.restart_oem_agent`를 실행합니다. 이 프로시저는 `emctl stop agent` 및 `emctl start agent` 명령을 실행하는 것과 동일합니다.

다음 절차에서는 Management Agent를 다시 시작하는 작업을 생성하고 작업 ID를 반환합니다.

```
SELECT rdsadmin.rdsadmin_oem_agent_tasks.restart_oem_agent as TASK_ID from DUAL;    
```

작업의 출력 파일을 표시하여 결과를 보려면 [진행 중인 작업 상태 보기](#Oracle.Options.OEMAgent.DBTasks.ViewTaskStatus) 섹션을 참조하세요.

### Management Agent가 모니터링하는 대상 나열
<a name="Oracle.Options.OEMAgent.DBTasks.ListTargets"></a>

Management Agent가 모니터링하는 대상을 나열하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_oem_agent_tasks.list_targets_oem_agent`를 실행합니다. 이 프로시저는 `emctl config agent listtargets` 명령을 실행하는 것과 동일합니다.

다음 절차에서는 Management Agent가 모니터링하는 대상을 나열하는 작업을 생성하고 작업 ID를 반환합니다.

```
SELECT rdsadmin.rdsadmin_oem_agent_tasks.list_targets_oem_agent as TASK_ID from DUAL;
```

작업의 출력 파일을 표시하여 결과를 보려면 [진행 중인 작업 상태 보기](#Oracle.Options.OEMAgent.DBTasks.ViewTaskStatus) 섹션을 참조하세요.

### Management Agent가 모니터링하는 수집 스레드 나열
<a name="Oracle.Options.OEMAgent.DBTasks.ListCollectionThreads"></a>

Management Agent가 모니터링하는 실행 중, 준비된 및 예약된 수집 스레드를 모두 나열하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_oem_agent_tasks.list_clxn_threads_oem_agent`를 실행합니다. 이 프로시저는 `emctl status agent scheduler` 명령과 동일합니다.

다음 절차에서는 컬렉션 스레드를 나열하는 작업을 생성하고 작업 ID를 반환합니다.

```
SELECT rdsadmin.rdsadmin_oem_agent_tasks.list_clxn_threads_oem_agent() as TASK_ID from DUAL;          
```

작업의 출력 파일을 표시하여 결과를 보려면 [진행 중인 작업 상태 보기](#Oracle.Options.OEMAgent.DBTasks.ViewTaskStatus) 섹션을 참조하세요.

### Management Agent 상태 지우기
<a name="Oracle.Options.OEMAgent.DBTasks.ClearState"></a>

Management Agent 상태를 지우려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_oem_agent_tasks.clearstate_oem_agent`를 실행합니다. 이 프로시저는 `emctl clearstate agent` 명령을 실행하는 것과 동일합니다.

다음 절차에서는 Management Agent의 상태를 지우는 작업을 생성하고 작업 ID를 반환합니다.

```
SELECT rdsadmin.rdsadmin_oem_agent_tasks.clearstate_oem_agent() as TASK_ID from DUAL;
```

작업의 출력 파일을 표시하여 결과를 보려면 [진행 중인 작업 상태 보기](#Oracle.Options.OEMAgent.DBTasks.ViewTaskStatus) 섹션을 참조하세요.

### Management Agent에서 OMS 업로드
<a name="Oracle.Options.OEMAgent.DBTasks.ForceUploadOMS"></a>

Management Agent가 관련 OMS(Oracle Management Server)를 업로드하도록 하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_oem_agent_tasks.upload_oem_agent`를 실행합니다. 이 프로시저는 `emclt upload agent` 명령을 실행하는 것과 동일합니다.

다음 절차에서는 Management Agent가 연관된 OMS를 업로드하는 작업을 생성하고 작업 ID를 반환합니다.

```
SELECT rdsadmin.rdsadmin_oem_agent_tasks.upload_oem_agent() as TASK_ID from DUAL;
```

작업의 출력 파일을 표시하여 결과를 보려면 [진행 중인 작업 상태 보기](#Oracle.Options.OEMAgent.DBTasks.ViewTaskStatus) 섹션을 참조하세요.

### OMS에 대해 ping 실행
<a name="Oracle.Options.OEMAgent.DBTasks.PingOMS"></a>

Management Agent의 OMS에 대해 ping을 실행하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_oem_agent_tasks.ping_oms_oem_agent`를 실행합니다. 이 프로시저는 `emctl pingOMS` 명령을 실행하는 것과 동일합니다.

다음 절차에서는 Management Agent의 OMS에 대해 ping을 수행하는 작업을 생성하고 작업 ID를 반환합니다.

```
SELECT rdsadmin.rdsadmin_oem_agent_tasks.ping_oms_oem_agent() as TASK_ID from DUAL;
```

작업의 출력 파일을 표시하여 결과를 보려면 [진행 중인 작업 상태 보기](#Oracle.Options.OEMAgent.DBTasks.ViewTaskStatus) 섹션을 참조하세요.

### 진행 중인 작업 상태 보기
<a name="Oracle.Options.OEMAgent.DBTasks.ViewTaskStatus"></a>

진행 중인 작업의 상태를 bdump 파일에서 볼 수 있습니다. 이 bdump 파일은 `/rdsdbdata/log/trace` 디렉터리에 위치합니다. 각 bdump 파일 이름은 다음 형식으로 되어 있습니다.

```
dbtask-task-id.log 
```

작업을 모니터링하려면 `task-id`를 모니터링하려는 작업의 ID로 바꾸십시오.

bdump 파일의 콘텐츠를 보려면 Amazon RDS 프로시저 `rdsadmin.rds_file_util.read_text_file`을 실행합니다. 다음 쿼리는 `dbtask-1546988886389-2444.log` bdump 파일의 콘텐츠를 반환합니다.

```
SELECT text FROM table(rdsadmin.rds_file_util.read_text_file('BDUMP','dbtask-1546988886389-2444.log'));
```

Amazon RDS 프로시저 `rdsadmin.rds_file_util.read_text_file`에 대한 자세한 내용은 [DB 인스턴스 디렉터리의 파일 목록 읽기](Appendix.Oracle.CommonDBATasks.Misc.md#Appendix.Oracle.CommonDBATasks.ReadingFiles) 섹션을 참조하십시오.

# Oracle 레이블 보안
<a name="Oracle.Options.OLS"></a>

Amazon RDS에서는 OLS 옵션을 사용하여 Oracle Database의 Enterprise Edition에 대한 Oracle 레이블 보안을 지원합니다.

대부분의 데이터베이스 보안에서는 객체 수준에서 액세스를 제어합니다. Oracle 레이블 보안에서는 개별 테이블 행에 대한 액세스를 세부적으로 제어합니다. 예를 들어 레이블 보안을 사용하면 정책 기반 관리 모델을 통해 규제 준수를 이행할 수 있습니다. 레이블 보안 정책을 사용하여 중요 데이터에 대한 액세스를 제어하고 적절한 권한을 가진 사용자로 액세스를 제한할 수 있습니다. 자세한 내용은 Oracle 설명서의 [Introduction to Oracle Label Security](https://docs.oracle.com/database/121/OLSAG/intro.htm#OLSAG001)를 참조하십시오.

**Topics**
+ [Oracle 레이블 보안 요구 사항](#Oracle.Options.OLS.PreReqs)
+ [Oracle 레이블 보안 사용 시 고려 사항](#Oracle.Options.OLS.Using)
+ [Oracle 레이블 보안 옵션 추가](#Oracle.Options.OLS.Add)
+ [문제 해결](#Oracle.Options.OLS.Troubleshooting)

## Oracle 레이블 보안 요구 사항
<a name="Oracle.Options.OLS.PreReqs"></a>

Oracle 레이블 보안에 대한 다음 요구 사항을 숙지하세요.
+ DB 인스턴스에서 기본 보유 라이선스 사용 모델을 사용해야 합니다. 자세한 내용은 [RDS for Oracle 라이선스 옵션](Oracle.Concepts.Licensing.md) 섹션을 참조하세요.
+ Oracle Enterprise Edition에 유효한 라이선스(소프트웨어 업데이트 라이선스 및 지원 포함)가 있어야 합니다.
+ Oracle 라이선스에 레이블 보안 옵션이 포함되어 있어야 합니다.

## Oracle 레이블 보안 사용 시 고려 사항
<a name="Oracle.Options.OLS.Using"></a>

Oracle 레이블 보안을 사용하려면 테이블의 특정 행에 대한 액세스를 제어하는 정책을 생성합니다. 자세한 내용은 Oracle 설명서의 [Creating an Oracle Label Security Policy](https://docs.oracle.com/database/121/OLSAG/getstrtd.htm#OLSAG3096)를 참조하십시오.

다음을 고려하세요.
+ Oracle 레이블 보안은 영구적이고 지속적인 옵션입니다. 이 옵션은 영구적이므로 옵션 그룹에서 제거할 수 없습니다. Oracle 레이블 보안을 옵션 그룹에 추가하고 이를 DB 인스턴스와 연결하면 나중에 다른 옵션 그룹을 DB 인스턴스와 연결할 수 있지만 이 그룹에는 Oracle 레이블 보안 옵션도 포함되어야 합니다.
+ 레이블 보안을 사용할 경우 모든 작업을 `LBAC_DBA` 역할로 수행합니다. `LBAC_DBA` 역할은 DB 인스턴스에 대한 마스터 사용자에게 부여됩니다. 다른 사용자에게 레이블 보안 정책을 관리할 수 있는 `LBAC_DBA` 역할을 부여할 수 있습니다.
+ Oracle 레이블 보안에 액세스해야 하는 새로운 사용자에게 `OLS_ENFORCEMENT` 패키지에 대한 액세스 권한을 부여해야 합니다. `OLS_ENFORCEMENT` 패키지에 대한 액세스 권한을 부여하려면 마스터 사용자로 DB 인스턴스에 연결하고 다음 SQL 문을 실행합니다.

  ```
  GRANT ALL ON LBACSYS.OLS_ENFORCEMENT TO username;
  ```
+ Oracle Enterprise Manager(OEM) Cloud Control을 통해 레이블 보안을 구성할 수 있습니다. Amazon RDS는 Management Agent 옵션을 통해 OEM Cloud Control을 지원합니다. 자세한 내용은 [Oracle Management Agent for Enterprise Manager Cloud Control](Oracle.Options.OEMAgent.md) 섹션을 참조하세요.

## Oracle 레이블 보안 옵션 추가
<a name="Oracle.Options.OLS.Add"></a>

Oracle 레이블 보안 옵션을 DB 인스턴스에 추가하는 일반적인 프로세스는 다음과 같습니다.

1. 새 옵션 그룹을 생성하거나 기존 옵션 그룹을 복사 또는 수정합니다.

1. 옵션을 옵션 그룹에 추가합니다.
**중요**  
Oracle 레이블 보안은 영구적이고 지속적인 옵션입니다.

1. 옵션 그룹을 DB 인스턴스에 연결합니다.

레이블 보안 옵션을 추가하면 옵션 그룹이 활성화되고 레이블 보안이 활성화됩니다.

**DB 인스턴스에 레이블 보안 옵션을 추가하려면**

1. 사용할 옵션 그룹을 결정합니다. 새 옵션 그룹을 생성하거나 기존 옵션 그룹을 사용합니다. 기존 옵션 그룹을 사용하려면 다음 단계로 건너뛰십시오. 그렇지 않으면 다음 설정을 사용하여 사용자 지정 DB 옵션을 생성합니다.

   1. [**Engine**]에서 [**oracle-ee**]를 선택합니다.

   1. **메이저 엔진 버전**에서 DB 인스턴스의 버전을 선택합니다.

   자세한 내용은 [옵션 그룹 생성](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Create) 섹션을 참조하세요.

1. [**OLS**] 옵션을 옵션 그룹에 추가합니다. 옵션 추가에 대한 자세한 내용은 [옵션 그룹에 옵션 추가](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.AddOption) 섹션을 참조하세요.
**중요**  
하나 이상의 DB 인스턴스에 이미 연결되어 있는 기존 옵션 그룹에 레이블 보안을 추가하면 모든 DB 인스턴스가 다시 시작됩니다.

1. 옵션 그룹을 새 DB 인스턴스 또는 기존 DB 인스턴스에 적용합니다: 
   + 새 DB 인스턴스의 경우, 인스턴스를 시작할 때 옵션 그룹을 적용합니다. 자세한 내용은 [Amazon RDS DB 인스턴스 생성](USER_CreateDBInstance.md) 섹션을 참조하세요.

      
   + 기존 DB 인스턴스의 경우, 해당 인스턴스를 수정하고 새 옵션 그룹을 연결하여 옵션 그룹을 적용합니다. 기존 DB 인스턴스에 레이블 보안 옵션을 추가하는 경우 DB 인스턴스를 자동으로 다시 시작하는 동안 인스턴스가 잠시 중단됩니다. 자세한 내용은 [Amazon RDS DB 인스턴스 수정](Overview.DBInstance.Modifying.md) 섹션을 참조하세요.

## 문제 해결
<a name="Oracle.Options.OLS.Troubleshooting"></a>

다음은 Oracle 레이블 보안을 사용할 때 생길 수 있는 문제입니다.


****  

| 문제 | 문제 해결 제안 | 
| --- | --- | 
|  정책을 생성하려고 하면 다음과 비슷한 오류 메시지가 표시됩니다. `insufficient authorization for the SYSDBA package`.  |  사용자의 이름이 16자 또는 24자인 경우 레이블 보안 명령을 실행할 수 없는 Oracle 레이블 보안 기능의 알려진 문제입니다. 새 사용자의 이름 문자 수를 변경하고 새 사용자에게 LBAC\$1DBA를 부여한 다음 새 사용자로 로그인하여 OLS 명령을 실행할 수 있습니다. 자세한 내용은 Oracle Support에 문의하세요.  | 

# Oracle Locator
<a name="Oracle.Options.Locator"></a>

Amazon RDS는 `LOCATOR` 옵션 사용을 통해 Oracle Locator를 지원합니다. Oracle Locator에는 인터넷 및 무선 서비스 기반 애플리케이션과 파트너 기반 GIS 솔루션을 지원할 때 필요한 기능이 있습니다. Oracle Locator는 Oracle Spatial의 제한된 서브셋입니다. 자세한 내용은 Oracle 문서의 [Oracle Locator](https://docs.oracle.com/database/121/SPATL/sdo_locator.htm#SPATL340)를 참조하십시오.

**중요**  
Oracle Locator를 사용하면 CVSS(공통 취약성 평가 시스템) 점수가 9 이상인 보안 취약성 또는 기타 발표된 보안 취약성이 있는 경우 Amazon RDS에서 DB 인스턴스를 최신 Oracle PSU로 자동 업데이트합니다.

## Oracle Locator에서 지원되는 데이터베이스 릴리스
<a name="Oracle.Options.Locator.Releases"></a>

RDS for Oracle은 Oracle Database 19c용 Oracle Locator를 지원합니다. Oracle Locator는 Oracle Database 21c에서 지원되지 않지만 관련 기능을 Oracle Spatial 옵션에서 사용할 수 있습니다. 이전에는 Spatial 옵션을 사용하려면 추가 라이선스가 필요했습니다. Oracle Locator는 Oracle Spatial 기능의 하위 집합으로서 추가 라이선스가 필요하지 않았습니다. 2019년에 Oracle은 모든 Oracle Spatial 기능이 추가 비용 없이 Enterprise Edition 및 Standard Edition 2 라이선스에 포함되었다고 발표했습니다. 따라서 Oracle Spatial 옵션에 더 이상 추가 라이선스가 필요하지 않습니다. 자세한 내용은 Oracle Database Insider 블로그의 [Machine Learning, Spatial and Graph - No License Required\$1](https://blogs.oracle.com/database/post/machine-learning-spatial-and-graph-no-license-required)(기계 학습, Spatial 및 그래프 - 라이선스 불필요\$1)를 참조하세요.

## Oracle Locator의 사전 요구 사항
<a name="Oracle.Options.Locator.PreReqs"></a>

Oracle Locator 사용을 위한 사전 요구 사항은 다음과 같습니다.
+ DB 인스턴스 클래스는 충분해야 합니다. Oracle Locator는 db.t3.small DB 인스턴스 클래스에 대해 지원되지 않습니다. 자세한 내용은 [RDS for Oracle DB 인스턴스 클래스](Oracle.Concepts.InstanceClasses.md) 섹션을 참조하세요.
+ DB 인스턴스는 **마이너 버전 자동 업그레이드**가 활성화되어 있어야 합니다. 이 옵션을 사용하면 DB 인스턴스를 활성화하여 사용 가능할 때 마이너 DB 엔진 버전 업그레이드를 자동으로 받을 수 있으며, Oracle Java Virtual Machine(JVM)을 설치하는 옵션에 필요합니다. Amazon RDS는 이 옵션을 사용하여 DB 인스턴스를 최신 Oracle Patch Set Update(PSU) 또는 Release Update(RU)로 업데이트합니다. 자세한 내용은 [Amazon RDS DB 인스턴스 수정](Overview.DBInstance.Modifying.md) 섹션을 참조하세요.

## Oracle Locator의 모범 사례
<a name="Oracle.Options.Locator.BestPractces"></a>

다음은 Oracle Locator 사용에 관한 모범 사례입니다.
+ 보안을 극대화하기 위해 Secure Sockets Layer(SSL)와 함께 `LOCATOR` 옵션을 사용합니다. 자세한 내용은 [Oracle 보안 소켓 Layer](Appendix.Oracle.Options.SSL.md) 섹션을 참조하세요.
+ DB 인스턴스에 대한 액세스를 제한하도록 DB 인스턴스를 구성합니다. 자세한 내용은 [VPC에서 DB 인스턴스에 액세스하는 시나리오](USER_VPC.Scenarios.md) 및 [VPC에서 DB 인스턴스를 사용한 작업](USER_VPC.WorkingWithRDSInstanceinaVPC.md) 단원을 참조하십시오.

## Oracle Locator 옵션 추가
<a name="Oracle.Options.Locator.Add"></a>

`LOCATOR` 옵션을 DB 인스턴스에 추가하는 일반적인 프로세스는 다음과 같습니다.

1. 새 옵션 그룹을 생성하거나 기존 옵션 그룹을 복사 또는 수정합니다.

1. [] 옵션을 옵션 그룹에 추가합니다.

1. 옵션 그룹을 DB 인스턴스에 연동시킵니다.

Oracle Java Virtual Machine(JVM)이 DB 인스턴스에 설치되어 있지 *않은* 경우 `LOCATOR` 옵션이 추가되는 동안 잠시 중단이 발생합니다. Oracle Java Virtual Machine(JVM)이 DB 인스턴스에 이미 설치되어 있으면 중단이 발생하지 않습니다. 옵션을 추가한 후 DB 인스턴스를 재시작할 필요가 없습니다. 옵션 그룹이 활성화되는 즉시 Oracle Locator를 사용할 수 있습니다.

**참고**  
이 중단 기간 동안에는 암호 확인 기능이 잠시 비활성화됩니다. 중단 기간 중에 암호 확인 기능과 관련된 이벤트를 볼 수도 있습니다. Oracle DB 인스턴스를 사용하기 전에 암호 확인 기능이 다시 활성화됩니다.

**`LOCATOR` 옵션을 DB 인스턴스에 추가하려면**

1. 사용할 옵션 그룹을 결정합니다. 새 옵션 그룹을 생성하거나 기존 옵션 그룹을 사용합니다. 기존 옵션 그룹을 사용하려면 다음 단계로 건너뛰십시오. 그렇지 않으면 다음 설정을 사용하여 사용자 지정 DB 옵션을 생성합니다.

   1. [**Engine**]에서 DB 인스턴스의 Oracle 에디션을 선택합니다.

   1. **메이저 엔진 버전**에서 DB 인스턴스의 버전을 선택합니다.

   자세한 내용은 [옵션 그룹 생성](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Create) 섹션을 참조하세요.

1. [**LOCATOR**] 옵션을 옵션 그룹에 추가합니다. 옵션 추가에 대한 자세한 내용은 [옵션 그룹에 옵션 추가](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.AddOption) 섹션을 참조하세요.

1. 옵션 그룹을 새 DB 인스턴스 또는 기존 DB 인스턴스에 적용합니다: 
   + 새 DB 인스턴스의 경우, 인스턴스를 시작할 때 옵션 그룹을 적용합니다. 자세한 내용은 [Amazon RDS DB 인스턴스 생성](USER_CreateDBInstance.md) 섹션을 참조하세요.
   + 기존 DB 인스턴스의 경우, 해당 인스턴스를 수정하고 새 옵션 그룹을 연결하여 옵션 그룹을 적용합니다. 자세한 내용은 [Amazon RDS DB 인스턴스 수정](Overview.DBInstance.Modifying.md) 섹션을 참조하세요.

## Oracle Locator 사용
<a name="Oracle.Options.Locator.Using"></a>

Oracle Locator 옵션을 활성화한 후에 사용할 수 있습니다. Oracle Locator 기능만 사용해야 합니다. Oracle Spatial 기능을 사용하려면 Oracle Spatial 라이선스가 있어야 합니다.

Oracle Locator에 지원되는 기능 목록은 Oracle 설명서에서 [Locator에 포함되는 기능](https://docs.oracle.com/database/121/SPATL/sdo_locator.htm#GUID-EC6DEA23-8FD7-4109-A0C1-93C0CE3D6FF2__CFACCEEG)을 참조하십시오.

Oracle Locator에 지원되지 않는 기능 목록은 Oracle 설명서에서 [Locator에 포함되지 않는 기능](https://docs.oracle.com/database/121/SPATL/sdo_locator.htm#GUID-EC6DEA23-8FD7-4109-A0C1-93C0CE3D6FF2__CFABACEA)을 참조하십시오.

## Oracle Locator 옵션 제거
<a name="Oracle.Options.Locator.Remove"></a>

`LOCATOR` 옵션에서 제공하는 데이터 유형을 사용하는 모든 객체를 삭제한 후 DB 인스턴스에서 옵션을 삭제할 수 있습니다. Oracle Java Virtual Machine(JVM)이 DB 인스턴스에 설치되어 있지 *않은* 경우 `LOCATOR` 옵션이 제거되는 동안 잠시 중단이 발생합니다. Oracle Java Virtual Machine(JVM)이 DB 인스턴스에 이미 설치되어 있으면 중단이 발생하지 않습니다. `LOCATOR` 옵션을 제거한 후 DB 인스턴스를 재시작할 필요가 없습니다.

**`LOCATOR` 옵션을 삭제하려면**

1. 데이터를 백업합니다.
**주의**  
인스턴스에서 옵션의 일부로 활성화된 데이터 유형을 사용하고 `LOCATOR` 옵션을 제거하면 데이터가 손실될 수 있습니다. 자세한 내용은 [데이터 백업, 복원 및 내보내기](CHAP_CommonTasks.BackupRestore.md) 섹션을 참조하세요.

1. 기존 객체가 `LOCATOR` 옵션의 데이터 유형 또는 기능을 참조하는지 확인합니다.

   `LOCATOR` 옵션이 있는 경우 `LOCATOR` 옵션이 없는 새 옵션 그룹을 적용할 때 인스턴스가 중단될 수 있습니다. 다음 쿼리를 사용하여 객체를 식별할 수 있습니다.

   ```
   SELECT OWNER, SEGMENT_NAME, TABLESPACE_NAME, BYTES/1024/1024 mbytes
   FROM   DBA_SEGMENTS
   WHERE  SEGMENT_TYPE LIKE '%TABLE%'
   AND    (OWNER, SEGMENT_NAME) IN
          (SELECT DISTINCT OWNER, TABLE_NAME 
           FROM   DBA_TAB_COLUMNS
           WHERE  DATA_TYPE='SDO_GEOMETRY'
           AND    OWNER <> 'MDSYS')
   ORDER BY 1,2,3,4;
   
   SELECT OWNER, TABLE_NAME, COLUMN_NAME
   FROM   DBA_TAB_COLUMNS 
   WHERE  DATA_TYPE = 'SDO_GEOMETRY' 
   AND    OWNER <> 'MDSYS' 
   ORDER BY 1,2,3;
   ```

1. `LOCATOR` 옵션의 데이터 유형 또는 기능을 참조하는 모든 객체를 삭제합니다.

1. 다음 중 하나를 수행하십시오.
   + 소속 옵션 그룹에서 `LOCATOR` 옵션을 제거합니다. 이 변경은 해당 옵션 그룹을 사용하는 모든 DB 인스턴스에 영향을 미칩니다. 자세한 내용은 [옵션 그룹에서 옵션 제거](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.RemoveOption) 섹션을 참조하세요.
   + DB 인스턴스를 수정하고 `LOCATOR` 옵션이 포함되지 않은 다른 옵션 그룹을 지정합니다. 이 변경은 단일 DB 인스턴스에 영향을 미칩니다. 기본(빈) 옵션 그룹을 지정하거나 다른 사용자 지정 옵션 그룹을 지정할 수 있습니다. 자세한 내용은 [Amazon RDS DB 인스턴스 수정](Overview.DBInstance.Modifying.md) 섹션을 참조하세요.

# Oracle 기본 네트워크 암호화
<a name="Appendix.Oracle.Options.NetworkEncryption"></a>

Amazon RDS는 Oracle 기본 네트워크 암호화(NNE)를 지원합니다. `NATIVE_NETWORK_ENCRYPTION` 옵션을 사용하면 DB 인스턴스 간 이동 시 데이터를 암호화할 수 있습니다. Amazon RDS는 Oracle 데이터베이스의 모든 버전에 대해 NNE를 지원합니다.

Oracle 기본 네트워크 암호화에 대한 자세한 설명은 본 문서의 범위에서 벗어나지만 배포할 솔루션을 결정하려면 각 알고리즘과 키의 장단점은 잘 알고 있어야 합니다. Oracle 기본 네트워크 암호화를 통해 제공되는 알고리즘 및 키에 대한 자세한 내용은 Oracle 설명서의 [Configuring Network Data Encryption](http://www.oracle.com/webfolder/technetwork/tutorials/obe/db/11g/r2/prod/security/network_encrypt/ntwrkencrypt.htm)을 참조하십시오. AWS 보안에 대한 자세한 내용은 [AWS 보안 센터](https://aws.amazon.com/security)를 참조하세요.

**참고**  
Native Network Encryption 또는 Secure Sockets Layer를 사용할 수 있지만 둘 다 사용할 수는 없습니다. 자세한 내용은 [Oracle 보안 소켓 Layer](Appendix.Oracle.Options.SSL.md) 단원을 참조하십시오.

**Topics**
+ [NATIVE\$1NETWORK\$1ENCRYPTION 옵션 설정](Oracle.Options.NNE.Options.md)
+ [NATIVE\$1NETWORK\$1ENCRYPTION 옵션 추가](Oracle.Options.NNE.Add.md)
+ [sqlnet.ora에서 NNE 값 설정](Oracle.Options.NNE.Using.md)
+ [NATIVE\$1NETWORK\$1ENCRYPTION 옵션 설정 수정](Oracle.Options.NNE.ModifySettings.md)
+ [NATIVE\$1NETWORK\$1ENCRYPTION 옵션 제거](Oracle.Options.NNE.Remove.md)

# NATIVE\$1NETWORK\$1ENCRYPTION 옵션 설정
<a name="Oracle.Options.NNE.Options"></a>

서버와 클라이언트 모두에서 암호화 요구 사항을 지정할 수 있습니다. DB 인스턴스는 예를 들어 데이터베이스 링크를 사용하여 다른 데이터베이스에 연결할 때 클라이언트 역할을 수행할 수 있습니다. 서버 측에서 암호화를 강제하지 않도록 할 수 있습니다. 예를 들어 서버에 필요하기 때문에 모든 클라이언트 통신에 암호화를 사용하도록 강제하지 않을 수 있습니다. 이 경우 `SQLNET.*CLIENT` 옵션을 사용하여 클라이언트 측에서 암호화를 강제할 수 있습니다.

Amazon RDS는 `NATIVE_NETWORK_ENCRYPTION` 옵션에 대해 다음 설정을 지원합니다.

**참고**  
쉼표를 사용하여 옵션 설정의 값을 구분하는 경우 쉼표 뒤에 공백을 넣지 마십시오.


****  

| 옵션 설정 | 유효값 | 기본값 | 설명 | 
| --- | --- | --- | --- | 
|  `SQLNET.ALLOW_WEAK_CRYPTO_CLIENTS`  |  `TRUE`, `FALSE`  |  `TRUE`  |  비보안 암호를 사용하는 클라이언트가 데이터베이스에 연결을 시도할 때 서버의 동작입니다. `TRUE`인 경우, 클라이언트는 2021년 7월 PSU에 패치되지 않은 경우에도 연결할 수 있습니다. 설정이 `FALSE`인 경우 클라이언트는 2021년 7월 PSU로 패치된 경우에만 데이터베이스에 연결할 수 있습니다. `SQLNET.ALLOW_WEAK_CRYPTO_CLIENTS`를 `FALSE`로 설정하기 전에 다음 조건을 충족하는지 확인하세요. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/Oracle.Options.NNE.Options.html)  | 
|  `SQLNET.ALLOW_WEAK_CRYPTO`  |  `TRUE`, `FALSE`  |  `TRUE`  |  비보안 암호를 사용하는 클라이언트가 데이터베이스에 연결을 시도할 때 서버의 동작입니다. 다음 암호는 안전하지 않은 것으로 간주됩니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/Oracle.Options.NNE.Options.html) 설정이 `TRUE`인 경우 클라이언트는 앞의 비보안 암호를 사용할 때 연결할 수 있습니다. 설정이 `FALSE`인 경우 데이터베이스는 클라이언트가 앞의 비보안 암호를 사용할 때 연결하는 것을 막습니다. `SQLNET.ALLOW_WEAK_CRYPTO`를 `FALSE`로 설정하기 전에 다음 조건을 충족하는지 확인하세요. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/Oracle.Options.NNE.Options.html)  | 
|  `SQLNET.CRYPTO_CHECKSUM_CLIENT`  |  `Accepted`, `Rejected`, `Requested`, `Required`   |  `Requested`  |  DB 인스턴스가 클라이언트 또는 클라이언트 역할을 하는 서버에 연결된 경우의 데이터 무결성 동작입니다. DB 인스턴스가 데이터베이스 링크를 사용하는 경우 해당 DB 인스턴스는 클라이언트 역할을 합니다. `Requested` 은(는) 클라이언트에서 DB 인스턴스가 체크섬을 수행할 필요가 없음을 나타냅니다.  | 
|  `SQLNET.CRYPTO_CHECKSUM_SERVER`  |  `Accepted`, `Rejected`, `Requested`, `Required`   |  `Requested`  |  클라이언트 또는 클라이언트 역할을 하는 서버가 DB 인스턴스에 연결된 경우의 데이터 무결성 동작입니다. DB 인스턴스가 데이터베이스 링크를 사용하는 경우 해당 DB 인스턴스는 클라이언트 역할을 합니다. `Requested` 은(는) DB 인스턴스에서 클라이언트가 체크섬을 수행할 필요가 없음을 나타냅니다.  | 
|  `SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENT`  |  `SHA256`, `SHA384`, `SHA512`, `SHA1`, `MD5`  |  `SHA256`, `SHA384`, `SHA512`  |  체크섬 알고리즘 목록입니다. 단일 값 또는 쉼표로 구분된 값 목록을 지정할 수 있습니다. 쉼표를 사용하는 경우 쉼표 뒤에 공백을 삽입하지 마십시오. 그렇지 않으면 `InvalidParameterValue` 오류가 발생합니다. 이 파라미터 및 `SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER `은(는) 공통 암호를 가져야 합니다.  | 
|  `SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER`  |  `SHA256`, `SHA384`, `SHA512`, `SHA1`, `MD5`  |  `SHA256`, `SHA384`, `SHA512`, `SHA1`, `MD5`  |  체크섬 알고리즘 목록입니다. 단일 값 또는 쉼표로 구분된 값 목록을 지정할 수 있습니다. 쉼표를 사용하는 경우 쉼표 뒤에 공백을 삽입하지 마십시오. 그렇지 않으면 `InvalidParameterValue` 오류가 발생합니다. 이 파라미터 및 `SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENT`은(는) 공통 암호를 가져야 합니다.  | 
|  `SQLNET.ENCRYPTION_CLIENT`  |  `Accepted`, `Rejected`, `Requested`, `Required`   |  `Requested`  |  클라이언트 또는 클라이언트 역할을 하는 서버가 DB 인스턴스에 연결된 경우의 클라이언트의 암호화 동작입니다. DB 인스턴스가 데이터베이스 링크를 사용하는 경우 해당 DB 인스턴스는 클라이언트 역할을 합니다. `Requested` 은(는) 클라이언트에서 서버의 트래픽을 암호화할 필요가 없음을 나타냅니다.  | 
|  `SQLNET.ENCRYPTION_SERVER`  |  `Accepted`, `Rejected`, `Requested`, `Required`   |  `Requested`  |  클라이언트 또는 클라이언트 역할을 하는 서버가 DB 인스턴스에 연결된 경우의 서버의 암호화 동작입니다. DB 인스턴스가 데이터베이스 링크를 사용하는 경우 해당 DB 인스턴스는 클라이언트 역할을 합니다. `Requested`는 DB 인스턴스에서 클라이언트의 송신 트래픽을 암호화할 필요가 없음을 나타냅니다.  | 
|  `SQLNET.ENCRYPTION_TYPES_CLIENT`  |  `RC4_256`, `AES256`, `AES192`, `3DES168`, `RC4_128`, `AES128`, `3DES112`, `RC4_56`, `DES`, `RC4_40`, `DES40`  |  `RC4_256`, `AES256`, `AES192`, `3DES168`, `RC4_128`, `AES128`, `3DES112`, `RC4_56`, `DES`, `RC4_40`, `DES40`  |  클라이언트에서 사용하는 암호화 알고리즘 목록입니다. 클라이언트에서는 알고리즘이 성공하거나 목록의 끝에 도달할 때까지 각 알고리즘을 순서대로 진행하여 서버 입력 복호화를 시도합니다. Amazon RDS는 다음과 같은 Oracle의 기본 목록을 사용합니다. RDS는 `RC4_256`으로 시작하고 목록을 순서대로 진행합니다. 순서를 변경하거나 DB 인스턴스가 수락할 알고리즘을 제한할 수 있습니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/Oracle.Options.NNE.Options.html) 단일 값 또는 쉼표로 구분된 값 목록을 지정할 수 있습니다. 쉼표인 경우 쉼표 뒤에 공백을 삽입하지 마십시오. 그렇지 않으면 `InvalidParameterValue` 오류가 발생합니다. 이 파라미터 및 `SQLNET.SQLNET.ENCRYPTION_TYPES_SERVER`은(는) 공통 암호를 가져야 합니다.  | 
|  `SQLNET.ENCRYPTION_TYPES_SERVER`  |  `RC4_256`, `AES256`, `AES192`, `3DES168`, `RC4_128`, `AES128`, `3DES112`, `RC4_56`, `DES`, `RC4_40`, `DES40`  |  `RC4_256`, `AES256`, `AES192`, `3DES168`, `RC4_128`, `AES128`, `3DES112`, `RC4_56`, `DES`, `RC4_40`, `DES40`  |  DB 인스턴스에서 사용하는 암호화 알고리즘 목록입니다. DB 인스턴스에서는 알고리즘이 성공하거나 목록의 끝에 도달할 때까지 각 알고리즘을 순서대로 사용하여 클라이언트 입력을 해독합니다. Amazon RDS는 다음과 같은 Oracle의 기본 목록을 사용합니다. 순서를 변경하거나 클라이언트가 수락할 알고리즘을 제한할 수 있습니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/Oracle.Options.NNE.Options.html) 단일 값 또는 쉼표로 구분된 값 목록을 지정할 수 있습니다. 쉼표인 경우 쉼표 뒤에 공백을 삽입하지 마십시오. 그렇지 않으면 `InvalidParameterValue` 오류가 발생합니다. 이 파라미터 및 `SQLNET.SQLNET.ENCRYPTION_TYPES_SERVER`은(는) 공통 암호를 가져야 합니다.  | 

# NATIVE\$1NETWORK\$1ENCRYPTION 옵션 추가
<a name="Oracle.Options.NNE.Add"></a>

`NATIVE_NETWORK_ENCRYPTION` 옵션을 DB 인스턴스에 추가하는 일반적인 프로세스는 다음과 같습니다.

1. 새 옵션 그룹을 생성하거나 기존 옵션 그룹을 복사 또는 수정합니다.

1. [] 옵션을 옵션 그룹에 추가합니다.

1. 옵션 그룹을 DB 인스턴스에 연결합니다.

옵션 그룹이 활성화되면 NNE가 활성화됩니다.

**AWS Management Console을 사용하여 DB 인스턴스에 NATIVE\$1NETWORK\$1ENCRYPTION 옵션을 추가하는 방법**

1. [**Engine**]에서 사용할 Oracle 버전을 선택합니다. NNE는 모든 에디션에서 지원됩니다.

1. **메이저 엔진 버전**에서 DB 인스턴스의 버전을 선택합니다.

   자세한 내용은 [옵션 그룹 생성](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Create) 섹션을 참조하세요.

1. 옵션 그룹에 **NATIVE\$1NETWORK\$1ENCRYPTION** 옵션을 추가합니다. 옵션 추가에 대한 자세한 내용은 [옵션 그룹에 옵션 추가](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.AddOption) 섹션을 참조하세요.
**참고**  
**NATIVE\$1NETWORK\$1ENCRYPTION** 옵션을 추가한 후 DB 인스턴스를 재시작할 필요가 없습니다. 옵션 그룹이 활성화되자마자 NNE가 활성화됩니다.

1. 옵션 그룹을 새 DB 인스턴스 또는 기존 DB 인스턴스에 적용합니다: 
   + 새 DB 인스턴스의 경우, 인스턴스를 시작할 때 옵션 그룹을 적용합니다. 자세한 내용은 [Amazon RDS DB 인스턴스 생성](USER_CreateDBInstance.md) 섹션을 참조하세요.
   + 기존 DB 인스턴스의 경우, 해당 인스턴스를 수정하고 새 옵션 그룹을 연결하여 옵션 그룹을 적용합니다. **NATIVE\$1NETWORK\$1ENCRYPTION** 옵션을 추가한 후 DB 인스턴스를 재시작할 필요가 없습니다. 옵션 그룹이 활성화되자마자 NNE가 활성화됩니다. 자세한 내용은 [Amazon RDS DB 인스턴스 수정](Overview.DBInstance.Modifying.md) 섹션을 참조하세요.

# sqlnet.ora에서 NNE 값 설정
<a name="Oracle.Options.NNE.Using"></a>

Oracle 기본 네트워크 암호화를 사용하여 서버 측 및 클라이언트 측에서 네트워크 암호화를 설정할 수 있습니다. 해당 클라이언트는 DB 인스턴스에 연결하는 데 사용되는 컴퓨터입니다. sqlnet.ora에서 다음과 같은 클라이언트 설정을 지정할 수 있습니다.
+ `SQLNET.ALLOW_WEAK_CRYPTO`
+ `SQLNET.ALLOW_WEAK_CRYPTO_CLIENTS`
+ `SQLNET.CRYPTO_CHECKSUM_CLIENT`
+ `SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENT`
+ `SQLNET.ENCRYPTION_CLIENT`
+ `SQLNET.ENCRYPTION_TYPES_CLIENT`

자세한 내용은 Oracle 설명서의 [Configuring Network Data Encryption and Integrity for Oracle Servers and Clients](http://docs.oracle.com/cd/E11882_01/network.112/e40393/asoconfg.htm)를 참조하십시오.

DB 인스턴스가 애플리케이션의 연결 요청을 거부하는 경우가 있습니다. 예를 들어 클라이언트와 서버의 암호화 알고리즘이 일치하지 않는 경우 거부가 발생할 수 있습니다. Oracle 기본 네트워크 암호화를 테스트하려면 클라이언트의 sqlnet.ora 파일에 다음 줄을 추가합니다.

```
DIAG_ADR_ENABLED=off
TRACE_DIRECTORY_CLIENT=/tmp
TRACE_FILE_CLIENT=nettrace
TRACE_LEVEL_CLIENT=16
```

연결이 시도될 때 선행 줄이 클라이언트에서 `/tmp/nettrace*`(이)라는 추적 파일을 생성합니다. 추적 파일에는 연결 관련 정보가 포함되어 있습니다. Oracle 기본 네트워크 암호화를 사용할 때 연결 관련 문제에 대한 자세한 내용은 Oracle 데이터베이스 설명서의 [About Negotiating Encryption and Integrity](http://docs.oracle.com/cd/E11882_01/network.112/e40393/asoconfg.htm#autoId12)를 참조하세요.

# NATIVE\$1NETWORK\$1ENCRYPTION 옵션 설정 수정
<a name="Oracle.Options.NNE.ModifySettings"></a>

`NATIVE_NETWORK_ENCRYPTION` 옵션을 활성화한 후 해당 설정을 수정할 수 있습니다. 현재는 AWS CLI 또는 RDS API로만 `NATIVE_NETWORK_ENCRYPTION` 옵션 설정을 수정할 수 있습니다. 콘솔은 사용할 수 없습니다. 다음 예제에서는 옵션의 두 가지 설정을 수정합니다.

```
aws rds add-option-to-option-group \
    --option-group-name my-option-group \
    --options "OptionName=NATIVE_NETWORK_ENCRYPTION,OptionSettings=[{Name=SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER,Value=SHA256},{Name=SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER,Value=SHA256}]" \
    --apply-immediately
```

CLI를 사용하여 옵션 설정을 수정하는 방법은 [AWS CLI](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.ModifyOption.CLI) 섹션을 참조하세요. 각 설정에 대한 자세한 내용은 [NATIVE\$1NETWORK\$1ENCRYPTION 옵션 설정](Oracle.Options.NNE.Options.md) 섹션을 참조하십시오.

**Topics**
+ [CRYPTO\$1CHECKSUM\$1\$1 값 수정](#Oracle.Options.NNE.ModifySettings.checksum)
+ [ALLOW\$1WEAK\$1CRYPTO\$1 설정 수정](#Oracle.Options.NNE.ModifySettings.encryption)

## CRYPTO\$1CHECKSUM\$1\$1 값 수정
<a name="Oracle.Options.NNE.ModifySettings.checksum"></a>

**NATIVE\$1NETWORK\$1ENCRYPTION** 옵션 설정을 수정하는 경우 다음 옵션 설정에 공통 암호가 하나 이상 있어야 합니다.
+ `SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER`
+ `SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENT`

다음 예제에서는 `SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER`를 수정한 시나리오를 보여줍니다. 구성은 `CRYPTO_CHECKSUM_TYPES_CLIENT` 및 `CRYPTO_CHECKSUM_TYPES_SERVER`가 모두 `SHA256`을 사용해서 유효합니다.


| 옵션 설정 | 수정 전 값 | 수정 후 값 | 
| --- | --- | --- | 
|  `SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENT`  |  `SHA256`, `SHA384`, `SHA512`  |  변경 사항이 없습니다  | 
|  `SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER`  |  `SHA256`, `SHA384`, `SHA512`, `SHA1`, `MD5`  | SHA1,MD5,SHA256 | 

또 다른 예를 들어, `SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER`을(를) 기본 설정에서 `SHA1,MD5`(으)로 수정하려고 한다고 가정합니다. 이 경우 `SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENT`을(를) `SHA1` 또는 `MD5`(으)로 설정해야 합니다. 이러한 알고리즘은 `SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENT`에 대한 기본값에 포함되지 않습니다.

## ALLOW\$1WEAK\$1CRYPTO\$1 설정 수정
<a name="Oracle.Options.NNE.ModifySettings.encryption"></a>

기본값으로 `SQLNET.ALLOW_WEAK_CRYPTO*` 옵션을 `FALSE`로 설정하려면 다음 조건을 충족하는지 확인하세요.
+ `SQLNET.ENCRYPTION_TYPES_SERVER` 및 `SQLNET.ENCRYPTION_TYPES_CLIENT`는 일치하는 보안 암호화 방법이 하나 있습니다. `DES`, `3DES` 또는 `RC4`가 아닌 경우 방법이 안전한 것으로 간주됩니다(모든 키 길이).
+ `SQLNET.CHECKSUM_TYPES_SERVER` 및 `SQLNET.CHECKSUM_TYPES_CLIENT`는 일치하는 보안 체크섬 방법이 하나 있습니다. `MD5`가 아닌 경우 방법은 안전한 것으로 간주됩니다.
+ 클라이언트는 2021년 7월 PSU로 패치됩니다. 클라이언트가 패치되지 않은 경우 클라이언트는 연결을 끊고`ORA-12269` 오류를 받습니다.

다음 예는 NNE 설정 샘플을 보여줍니다. `SQLNET.ENCRYPTION_TYPES_SERVER` 및 `SQLNET.ENCRYPTION_TYPES_CLIENT`를 FALSE로 설정하려는 경우 비보안 연결을 차단합니다. 체크섬 옵션 설정은 두 가지 모두 `SHA256`을 가지고 있어서 필수 구성 요소를 충족합니다. 그러나 `SQLNET.ENCRYPTION_TYPES_CLIENT` 및 `SQLNET.ENCRYPTION_TYPES_SERVER`는 `DES`, `3DES` 및 `RC4` 암호화 방법을 사용하여 안전하지 않습니다. 따라서 `SQLNET.ALLOW_WEAK_CRYPTO*` 옵션이 `FALSE`로 설정되면 먼저 `SQLNET.ENCRYPTION_TYPES_SERVER` 및 `SQLNET.ENCRYPTION_TYPES_CLIENT`를 `AES256`과 같은 보안 암호화 방법으로 설정합니다.


| 옵션 설정 | 값 | 
| --- | --- | 
|  `SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENT`  |  `SHA256`, `SHA384`, `SHA512`  | 
|  `SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER`  | SHA1,MD5,SHA256 | 
|  `SQLNET.ENCRYPTION_TYPES_CLIENT`  |  `RC4_256`, `3DES168`, `DES40`  | 
|  `SQLNET.ENCRYPTION_TYPES_SERVER`  |  `RC4_256`, `3DES168`, `DES40`  | 

# NATIVE\$1NETWORK\$1ENCRYPTION 옵션 제거
<a name="Oracle.Options.NNE.Remove"></a>

DB 인스턴스에서 NNE를 제거할 수 있습니다.

DB 인스턴스에서 `NATIVE_NETWORK_ENCRYPTION` 옵션을 제거하려면 다음 중 하나를 수행합니다.
+ 여러 DB 인스턴스에서 옵션을 제거하려면 DB 인스턴스가 속한 옵션 그룹에서 해당 `NATIVE_NETWORK_ENCRYPTION` 옵션을 제거합니다. 이 변경은 해당 옵션 그룹을 사용하는 모든 DB 인스턴스에 영향을 미칩니다. `NATIVE_NETWORK_ENCRYPTION` 옵션을 제거한 후 DB 인스턴스를 재시작할 필요가 없습니다. 자세한 내용은 [옵션 그룹에서 옵션 제거](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.RemoveOption) 단원을 참조하십시오.
+ 단일 DB 인스턴스에서 해당 옵션을 제거하려면 DB 인스턴스를 수정하고 `NATIVE_NETWORK_ENCRYPTION` 옵션이 포함되지 않은 다른 옵션 그룹을 지정합니다. 기본(빈) 옵션 그룹을 지정하거나 다른 사용자 지정 옵션 그룹을 지정할 수 있습니다. `NATIVE_NETWORK_ENCRYPTION` 옵션을 제거한 후 DB 인스턴스를 재시작할 필요가 없습니다. 자세한 내용은 [Amazon RDS DB 인스턴스 수정](Overview.DBInstance.Modifying.md) 단원을 참조하십시오.

# Oracle OLAP
<a name="Oracle.Options.OLAP"></a>

Amazon RDS는 `OLAP` 옵션 사용을 통해 Oracle OLAP를 지원합니다. 이 옵션은 Oracle DB 인스턴스에 대한 OLAP(On-line Analytical Processing)를 제공합니다. Oracle OLAP를 사용하여 OLAP 표준에 따라 차원 객체 및 큐브를 생성함으로써 많은 양의 데이터를 분석할 수 있습니다. 자세한 내용은 [Oracle 설명서](https://docs.oracle.com/en/database/oracle/oracle-database/19/olaug/index.html)를 참조하십시오.

**중요**  
Oracle OLAP를 사용하면 CVSS(공통 취약성 평가 시스템) 점수가 9 이상인 보안 취약성 또는 기타 발표된 보안 취약성이 있는 경우 Amazon RDS에서 DB 인스턴스를 최신 Oracle PSU로 자동 업데이트합니다.

Amazon RDS는 Oracle Database 19c 이상의 Enterprise Edition용 Oracle OLAP을 지원합니다.

## Oracle OLAP의 사전 조건
<a name="Oracle.Options.OLAP.PreReqs"></a>

다음은 Oracle OLAP 사용 시 사전 조건입니다.
+ Oracle에서 제공하는 Oracle OLAP 라이선스를 보유해야 합니다. 자세한 내용은 Oracle 설명서의 [라이선스 정보](https://docs.oracle.com/en/database/oracle/oracle-database/19/dblic/Licensing-Information.html#GUID-B6113390-9586-46D7-9008-DCC9EDA45AB4)를 참조하십시오.
+ DB 인스턴스는 충분한 인스턴스 클래스여야 합니다. Oracle OLAP는 db.t3.small DB 인스턴스 클래스에 대해 지원되지 않습니다. 자세한 내용은 [RDS for Oracle DB 인스턴스 클래스](Oracle.Concepts.InstanceClasses.md) 단원을 참조하십시오.
+ DB 인스턴스는 **마이너 버전 자동 업그레이드**가 활성화되어 있어야 합니다. 이 옵션을 사용하면 DB 인스턴스를 활성화하여 사용 가능할 때 마이너 DB 엔진 버전 업그레이드를 자동으로 받을 수 있으며, Oracle Java Virtual Machine(JVM)을 설치하는 옵션에 필요합니다. Amazon RDS는 이 옵션을 사용하여 DB 인스턴스를 최신 Oracle Patch Set Update(PSU) 또는 Release Update(RU)로 업데이트합니다. 자세한 내용은 [Amazon RDS DB 인스턴스 수정](Overview.DBInstance.Modifying.md) 섹션을 참조하세요.
+ DB 인스턴스에는 이름이 `OLAPSYS`인 사용자가 없어야 합니다. 이 경우 OLAP 옵션 설치가 실패합니다.

## Oracle OLAP의 모범 사례
<a name="Oracle.Options.OLAP.BestPractces"></a>

다음은 Oracle OLAP 사용에 관한 모범 사례입니다.
+ 보안을 극대화하기 위해 Secure Sockets Layer(SSL)와 함께 `OLAP` 옵션을 사용합니다. 자세한 내용은 [Oracle 보안 소켓 Layer](Appendix.Oracle.Options.SSL.md) 섹션을 참조하세요.
+ DB 인스턴스에 대한 액세스를 제한하도록 DB 인스턴스를 구성합니다. 자세한 내용은 [VPC에서 DB 인스턴스에 액세스하는 시나리오](USER_VPC.Scenarios.md) 및 [VPC에서 DB 인스턴스를 사용한 작업](USER_VPC.WorkingWithRDSInstanceinaVPC.md) 단원을 참조하십시오.

## Oracle OLAP 옵션 추가
<a name="Oracle.Options.OLAP.Add"></a>

`OLAP` 옵션을 DB 인스턴스에 추가하는 일반적인 프로세스는 다음과 같습니다.

1. 새 옵션 그룹을 생성하거나 기존 옵션 그룹을 복사 또는 수정합니다.

1. [] 옵션을 옵션 그룹에 추가합니다.

1. 옵션 그룹을 DB 인스턴스에 연동시킵니다.

Oracle Java Virtual Machine(JVM)이 DB 인스턴스에 설치되어 있지 *않은* 경우 `OLAP` 옵션이 추가되는 동안 잠시 중단이 발생합니다. Oracle Java Virtual Machine(JVM)이 DB 인스턴스에 이미 설치되어 있으면 중단이 발생하지 않습니다. 옵션을 추가한 후 DB 인스턴스를 재시작할 필요가 없습니다. 옵션 그룹이 활성화되는 즉시 Oracle OLAP를 사용할 수 있습니다.

**OLAP 옵션을 DB 인스턴스에 추가하려면**

1. 사용할 옵션 그룹을 결정합니다. 새 옵션 그룹을 생성하거나 기존 옵션 그룹을 사용합니다. 기존 옵션 그룹을 사용하려면 다음 단계로 건너뛰십시오. 그렇지 않으면 다음 설정을 사용하여 사용자 지정 DB 옵션을 생성합니다.
   + **엔진**에서 DB 인스턴스의 Oracle 에디션을 선택합니다.
   + **메이저 엔진 버전**에서 DB 인스턴스의 버전을 선택합니다.

   자세한 내용은 [옵션 그룹 생성](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Create) 섹션을 참조하세요.

1. **OLAP** 옵션을 옵션 그룹에 추가합니다. 옵션 추가에 대한 자세한 내용은 [옵션 그룹에 옵션 추가](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.AddOption) 섹션을 참조하세요.

1. 옵션 그룹을 새 DB 인스턴스 또는 기존 DB 인스턴스에 적용합니다: 
   + 새 DB 인스턴스의 경우, 인스턴스를 시작할 때 옵션 그룹을 적용하십시오. 자세한 내용은 [Amazon RDS DB 인스턴스 생성](USER_CreateDBInstance.md) 섹션을 참조하세요.
   + 기존 DB 인스턴스의 경우, 해당 인스턴스를 수정하고 새 옵션 그룹을 연결하여 옵션 그룹을 적용하십시오. 자세한 내용은 [Amazon RDS DB 인스턴스 수정](Overview.DBInstance.Modifying.md) 섹션을 참조하세요.

## Oracle OLAP 사용
<a name="Oracle.Options.OLAP.Using"></a>

Oracle OLAP 옵션을 활성화한 후에 사용할 수 있습니다. Oracle OLAP에 대해 지원되는 기능 목록은 [Oracle 설명서](https://docs.oracle.com/en/database/oracle/oracle-database/19/olaug/overview.html#GUID-E2056FE4-C623-4D29-B7D8-C4762F941966)를 참조하십시오.

## Oracle OLAP 옵션 제거
<a name="Oracle.Options.OLAP.Remove"></a>

`OLAP` 옵션에서 제공하는 데이터 유형을 사용하는 모든 객체를 삭제한 후 DB 인스턴스에서 옵션을 삭제할 수 있습니다. Oracle Java Virtual Machine(JVM)이 DB 인스턴스에 설치되어 있지 *않은* 경우 `OLAP` 옵션이 제거되는 동안 잠시 중단이 발생합니다. Oracle Java Virtual Machine(JVM)이 DB 인스턴스에 이미 설치되어 있으면 중단이 발생하지 않습니다. `OLAP` 옵션을 제거한 후 DB 인스턴스를 재시작할 필요가 없습니다.

**`OLAP` 옵션을 삭제하려면**

1. 데이터를 백업합니다.
**주의**  
인스턴스에서 옵션의 일부로 활성화된 데이터 유형을 사용하고 `OLAP` 옵션을 제거하면 데이터가 손실될 수 있습니다. 자세한 내용은 [데이터 백업, 복원 및 내보내기](CHAP_CommonTasks.BackupRestore.md) 섹션을 참조하세요.

1. 기존 객체가 `OLAP` 옵션의 데이터 유형 또는 기능을 참조하는지 확인합니다.

1. `OLAP` 옵션의 데이터 유형 또는 기능을 참조하는 모든 객체를 삭제합니다.

1. 다음 중 하나를 수행하십시오.
   + 소속 옵션 그룹에서 `OLAP` 옵션을 제거합니다. 이 변경은 해당 옵션 그룹을 사용하는 모든 DB 인스턴스에 영향을 미칩니다. 자세한 내용은 [옵션 그룹에서 옵션 제거](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.RemoveOption) 섹션을 참조하세요.
   + DB 인스턴스를 수정하고 `OLAP` 옵션이 포함되지 않은 다른 옵션 그룹을 지정합니다. 이 변경은 단일 DB 인스턴스에 영향을 미칩니다. 기본(빈) 옵션 그룹을 지정하거나 다른 사용자 지정 옵션 그룹을 지정할 수 있습니다. 자세한 내용은 [Amazon RDS DB 인스턴스 수정](Overview.DBInstance.Modifying.md) 섹션을 참조하세요.

# Oracle 보안 소켓 Layer
<a name="Appendix.Oracle.Options.SSL"></a>

RDS for Oracle DB 인스턴스에 대해 SSL 암호화를 활성화하려면 DB 인스턴스와 연결된 옵션 그룹에 Oracle SSL 옵션을 추가합니다. Amazon RDS는 Oracle에서 요구하는 대로 SSL 연결을 위해 두 번째 포트를 사용합니다. 이 접근 방식에서는 DB 인스턴스와 SQL\$1Plus 간에 클리어 텍스트 통신과 SSL로 암호화된 통신이 동시에 발생할 수 있습니다. 예를 들어 이 포트를 클리어 텍스트 통신에 사용하여 VPC 내의 다른 리소스와 통신하면서 동일한 포트를 SSL로 암호화된 통신에 사용하여 VPC 외부의 리소스와 통신할 수 있습니다.

**참고**  
동일한 RDS for Oracle DB 인스턴스에서 SSL 또는 NNE(기본 네트워크 암호화)를 사용할 수 있지만 동시에 사용할 수는 없습니다. SSL 암호화를 사용할 경우 다른 연결 암호화는 모두 해제해야 합니다. 자세한 내용은 [Oracle 기본 네트워크 암호화](Appendix.Oracle.Options.NetworkEncryption.md) 섹션을 참조하세요.

SSL/TLS 및 NNE는 더 이상 Oracle Advanced Security의 일부가 아닙니다. RDS for Oracle에서는 다음 데이터베이스 버전의 모든 정식 에디션에서 SSL 암호화를 사용할 수 있습니다.
+ Oracle Database 21c(21.0.0)
+ Oracle Database 19c(19.0.0)

**Topics**
+ [Oracle SSL 옵션에 대한 TLS 버전](#Appendix.Oracle.Options.SSL.TLS)
+ [Oracle SSL 옵션에 대한 암호 그룹](#Appendix.Oracle.Options.SSL.CipherSuites)
+ [FIPS 지원](#Appendix.Oracle.Options.SSL.FIPS)
+ [암호 제품군과의 인증서 호환성](#Appendix.Oracle.Options.SSL.CertificateCompatibility)
+ [SSL 옵션 추가](Appendix.Oracle.Options.SSL.OptionGroup.md)
+ [RDS for Oracle DB 인스턴스에 SSL을 사용하도록 SQL\$1Plus 구성](Appendix.Oracle.Options.SSL.ClientConfiguration.md)
+ [SSL을 사용하여 RDS for Oracle DB 인스턴스에 연결](Appendix.Oracle.Options.SSL.Connecting.md)
+ [JDBC를 통한 SSL 연결 설정](Appendix.Oracle.Options.SSL.JDBC.md)
+ [SSL 연결과 DN 일치 적용](Appendix.Oracle.Options.SSL.DNMatch.md)
+ [SSL 연결 문제 해결](Appendix.Oracle.Options.SSL.troubleshooting.md)

## Oracle SSL 옵션에 대한 TLS 버전
<a name="Appendix.Oracle.Options.SSL.TLS"></a>

Amazon RDS for Oracle은 TLS(전송 계층 보안) 버전 1.0 및 1.2를 지원합니다. 새 Oracle SSL 옵션을 추가할 경우, 유효한 값에 `SQLNET.SSL_VERSION`을 명시적으로 설정합니다. 다음은 이 옵션 설정으로 허용되는 값입니다.
+ `"1.0"` – 클라이언트는 TLS 버전 1.0만 사용하여 DB 인스턴스에 연결할 수 있습니다. 기존 Oracle SSL 옵션에서 `SQLNET.SSL_VERSION`은 `"1.0"`으로 자동 설정됩니다. 필요할 경우 설정을 변경할 수 있습니다.
+ `"1.2"` – 클라이언트는 TLS 1.2만 사용하여 DB 인스턴스에 연결할 수 있습니다.
+ `"1.2 or 1.0"` – 클라이언트는 TLS 1.2 또는 1.0을 사용하여 DB 인스턴스에 연결할 수 있습니다.

## Oracle SSL 옵션에 대한 암호 그룹
<a name="Appendix.Oracle.Options.SSL.CipherSuites"></a>

Amazon RDS for Oracle은 여러 개의 SSL 암호 그룹을 지원합니다. 기본적으로 Oracle SSL은 `SSL_RSA_WITH_AES_256_CBC_SHA` 암호 그룹을 사용하도록 구성되어 있습니다. SSL 연결을 통해 사용할 다른 암호 그룹을 지정하려면 `SQLNET.CIPHER_SUITE` 옵션 설정을 사용하십시오.

`SQLNET.CIPHER_SUITE`에 대해 여러 값을 지정할 수 있습니다. 이 기법은 DB 인스턴스 간에 데이터베이스 링크가 있고 암호 그룹을 업데이트하려는 경우에 유용합니다.

다음 표에는 Oracle 데이터베이스 19c 및 21c의 모든 버전에서 RDS for Oracle에 대한 SSL 지원이 요약되어 있습니다.


| 암호 그룹(SQLNET.CIPHER\$1SUITE) | TLS 버전 지원(SQLNET.SSL\$1VERSION) | FIPS 지원 | FedRAMP 규정 준수 | 
| --- | --- | --- | --- | 
| SSL\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA(기본) | 1.0 및 1.2 | 예 | 아니요 | 
| SSL\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA256 | 1.2 | 예 | 아니요 | 
| SSL\$1RSA\$1WITH\$1AES\$1256\$1GCM\$1SHA384 | 1.2 | 예 | 아니요 | 
| TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1256\$1GCM\$1SHA384 | 1.2 | 예 | 예 | 
| TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1128\$1GCM\$1SHA256 | 1.2 | 예 | 예 | 
| TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA384 | 1.2 | 예 | 예 | 
| TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1SHA256 | 1.2 | 예 | 예 | 
| TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA | 1.2 | 예 | 예 | 
| TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1SHA | 1.2 | 예 | 예 | 
| TLS\$1ECDHE\$1ECDSA\$1WITH\$1AES\$1256\$1GCM\$1SHA384 | 1.2 | 예 | 예 | 
| TLS\$1ECDHE\$1ECDSA\$1WITH\$1AES\$1256\$1CBC\$1SHA384 | 1.2 | 예 | 예 | 

## FIPS 지원
<a name="Appendix.Oracle.Options.SSL.FIPS"></a>

RDS for Oracle을 사용하면 140-2에 대해 FIPS(Federal Information Processing Standard) 표준을 사용할 수 있습니다. FIPS 140-2는 암호 모듈 보안 요구 사항을 정의하는 미국 정부 표준입니다. Oracle SSL 옵션에 대해 `FIPS.SSLFIPS_140`을 `TRUE`로 설정하여 FIPS 표준을 활성화합니다. FIPS 140-2가 SSL용으로 구성된 경우 암호화 라이브러리는 클라이언트와 RDS for Oracle DB 인스턴스 간의 데이터를 암호화합니다.

클라이언트는 FIPS를 준수하는 암호 제품군을 사용해야 합니다. 연결을 설정할 때 클라이언트와 RDS for Oracle DB 인스턴스는 메시지를 주고받을 때 사용할 암호 제품군을 협상합니다. [Oracle SSL 옵션에 대한 암호 그룹](#Appendix.Oracle.Options.SSL.CipherSuites)의 테이블에서는 각 TLS 버전에 대한 FIPS 호환 SSL 암호 그룹을 보여줍니다. 자세한 내용은 Oracle Database 설명서의 [Oracle Database FIPS 140-2 설정](https://docs.oracle.com/en/database/oracle/oracle-database/12.2/dbseg/oracle-database-fips-140-settings.html#GUID-DDBEB3F9-B216-44BB-8C18-43B5E468CBBB)을 참조하세요.

## 암호 제품군과의 인증서 호환성
<a name="Appendix.Oracle.Options.SSL.CertificateCompatibility"></a>

RDS for Oracle은 RSA 및 타원 곡선 디지털 서명 알고리즘(ECDSA) 인증서를 모두 지원합니다. DB 인스턴스에 대해 SSL을 구성할 때 `SQLNET.CIPHER_SUITE` 옵션 설정에서 지정한 암호 제품군이 DB 인스턴스에서 사용하는 인증서 유형과 호환되는지 확인해야 합니다.

다음 표는 인증서 유형과 암호 제품군 간의 호환성을 보여 줍니다.


| 인증서 유형 | 호환되는 암호 제품군 | 호환되지 않는 암호 제품군 | 
| --- | --- | --- | 
| RSA 인증서(rds-ca-2019, rds-ca-rsa2048-g1, rds-ca-rsa4096-g1) |  SSL\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA SSL\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA256 SSL\$1RSA\$1WITH\$1AES\$1256\$1GCM\$1SHA384 TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1256\$1GCM\$1SHA384 TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1128\$1GCM\$1SHA256 TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA384 TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1SHA256 TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1SHA  |  TLS\$1ECDHE\$1ECDSA\$1WITH\$1AES\$1256\$1GCM\$1SHA384 TLS\$1ECDHE\$1ECDSA\$1WITH\$1AES\$1256\$1CBC\$1SHA384  | 
| ECDSA 인증서(rds-ca-ecc384-g1) |  TLS\$1ECDHE\$1ECDSA\$1WITH\$1AES\$1256\$1GCM\$1SHA384 TLS\$1ECDHE\$1ECDSA\$1WITH\$1AES\$1256\$1CBC\$1SHA384  |  SSL\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA SSL\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA256 SSL\$1RSA\$1WITH\$1AES\$1256\$1GCM\$1SHA384 TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1256\$1GCM\$1SHA384 TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1128\$1GCM\$1SHA256 TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA384 TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1SHA256 TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1SHA  | 

`SQLNET.CIPHER_SUITE` 옵션 설정에서 여러 암호 제품군을 지정하는 경우 DB 인스턴스에서 사용하는 인증서 유형과 호환되는 암호 제품군을 하나 이상 포함해야 합니다. 인증서 유형이 다른 DB 인스턴스가 여러 개인 옵션 그룹을 사용하는 경우 각 인증서 유형에 대해 하나 이상의 암호 제품군을 포함합니다.

옵션 그룹을 DB 인스턴스의 인증서 유형과 호환되지 않는 암호 그룹만 포함하는 SSL 옵션과 연결하려고 하면 비호환성을 나타내는 오류 메시지와 함께 작업이 실패합니다.

# SSL 옵션 추가
<a name="Appendix.Oracle.Options.SSL.OptionGroup"></a>

SSL을 사용하려면 RDS for Oracle DB 인스턴스가 `SSL` 옵션을 포함하는 옵션 그룹과 연결되어 있어야 합니다.

## 콘솔
<a name="Appendix.Oracle.Options.SSL.OptionGroup.Console"></a>

**SSL 옵션을 옵션 그룹에 추가하려면**

1. 새 옵션 그룹을 만들거나 `SSL` 옵션을 추가할 수 있는 기존 옵션 그룹을 식별하십시오.

   옵션 그룹의 생성에 대한 자세한 내용은 [옵션 그룹 생성](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Create) 단원을 참조하십시오.

1. [`SSL`] 옵션을 옵션 그룹에 추가합니다.

   SSL 연결에 FIPS 확인 암호 제품군만 사용하려면 `FIPS.SSLFIPS_140` 옵션을 `TRUE`로 설정합니다. FIPS 표준에 대한 자세한 내용은 [FIPS 지원](Appendix.Oracle.Options.SSL.md#Appendix.Oracle.Options.SSL.FIPS) 단원을 참조하십시오.

   옵션 그룹에 옵션을 추가하는 방법에 대한 자세한 내용은 [옵션 그룹에 옵션 추가](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.AddOption) 단원을 참조하십시오.

1. 새 RDS for Oracle DB 인스턴스를 생성하고 옵션 그룹을 연결하거나, RDS for Oracle DB 인스턴스를 수정하여 옵션 그룹을 연결합니다.

   DB 인스턴스 생성에 대한 자세한 내용은 [Amazon RDS DB 인스턴스 생성](USER_CreateDBInstance.md) 단원을 참조하세요.

   DB 인스턴스 수정에 대한 자세한 내용은 [Amazon RDS DB 인스턴스 수정](Overview.DBInstance.Modifying.md) 단원을 참조하세요.

## AWS CLI
<a name="Appendix.Oracle.Options.SSL.OptionGroup.CLI"></a>

**SSL 옵션을 옵션 그룹에 추가하려면**

1. 새 옵션 그룹을 만들거나 `SSL` 옵션을 추가할 수 있는 기존 옵션 그룹을 식별하십시오.

   옵션 그룹의 생성에 대한 자세한 내용은 [옵션 그룹 생성](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Create) 단원을 참조하십시오.

1. [`SSL`] 옵션을 옵션 그룹에 추가합니다.

   다음 옵션 설정을 지정합니다.
   + `Port` – SSL 포트 번호입니다.
   + `VpcSecurityGroupMemberships` – 옵션이 활성화되는 VPC 보안 그룹입니다.
   + `SQLNET.SSL_VERSION` – 클라이언트가 DB 인스턴스에 연결할 때 사용할 수 있는 TLS 버전입니다.

   예를 들어 다음 AWS CLI 명령은 `SSL` 옵션을 `ora-option-group`이라는 옵션 그룹에 추가합니다.  
**Example**  

   대상 LinuxmacOS, 또는Unix:

   ```
   aws rds add-option-to-option-group --option-group-name ora-option-group \
     --options 'OptionName=SSL,Port=2484,VpcSecurityGroupMemberships="sg-68184619",OptionSettings=[{Name=SQLNET.SSL_VERSION,Value=1.0}]'
   ```

   Windows의 경우:

   ```
   aws rds add-option-to-option-group --option-group-name ora-option-group ^
     --options 'OptionName=SSL,Port=2484,VpcSecurityGroupMemberships="sg-68184619",OptionSettings=[{Name=SQLNET.SSL_VERSION,Value=1.0}]'
   ```

1. 새 RDS for Oracle DB 인스턴스를 생성하고 옵션 그룹을 연결하거나, RDS for Oracle DB 인스턴스를 수정하여 옵션 그룹을 연결합니다.

   DB 인스턴스 생성에 대한 자세한 내용은 [Amazon RDS DB 인스턴스 생성](USER_CreateDBInstance.md) 단원을 참조하세요.

   DB 인스턴스 수정에 대한 자세한 내용은 [Amazon RDS DB 인스턴스 수정](Overview.DBInstance.Modifying.md) 단원을 참조하세요.

# RDS for Oracle DB 인스턴스에 SSL을 사용하도록 SQL\$1Plus 구성
<a name="Appendix.Oracle.Options.SSL.ClientConfiguration"></a>

Oracle SSL 옵션을 사용하는 RDS for Oracle DB 인스턴스에 연결하려면 우선 연결 전에 SQL\$1Plus를 구성해야 합니다.

**참고**  
해당 클라이언트에서 DB 인스턴스에 액세스하는 것을 허용하려면 보안 그룹을 올바르게 구성해야 합니다. 자세한 내용은 [보안 그룹을 통한 액세스 제어](Overview.RDSSecurityGroups.md) 섹션을 참조하세요. 또한 이러한 지침은 Oracle 홈을 직접 사용하는 SQL\$1Plus 및 기타 클라이언트에 대한 것입니다. JDBC 연결에 대한 자세한 정보는 [JDBC를 통한 SSL 연결 설정](Appendix.Oracle.Options.SSL.JDBC.md) 단원을 참조하십시오.

**SSL을 사용하여 RDS for Oracle DB 인스턴스에 연결하도록 SQL\$1Plus를 구성하려면**

1. `ORACLE_HOME` 환경 변수를 Oracle 홈 디렉터리의 위치로 설정합니다.

   Oracle 홈 디렉터리 경로는 설치에 따라 달라집니다. 다음은 `ORACLE_HOME` 환경 변수를 설정하는 예제입니다.

   ```
   prompt>export ORACLE_HOME=/home/user/app/user/product/19.0.0/dbhome_1
   ```

   Oracle 환경 변수 설정에 대한 자세한 정보는 Oracle 설명서의 [SQL\$1Plus Environment Variables](http://docs.oracle.com/database/121/SQPUG/ch_two.htm#SQPUG331) 및 운영 체제에 해당하는 Oracle 설치 안내서를 참조하십시오.

1. `$ORACLE_HOME/lib`를 `LD_LIBRARY_PATH` 환경 변수에 추가합니다.

   다음은 LD\$1LIBRARY\$1PATH 환경 변수를 설정하는 예제입니다.

   ```
   prompt>export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib 
   ```

1. `$ORACLE_HOME/ssl_wallet`에 Oracle Wallet을 위한 디렉터리를 만듭니다.

   다음은 Oracle Wallet 디렉터리를 생성하는 예제입니다.

   ```
   prompt>mkdir $ORACLE_HOME/ssl_wallet
   ```

1. 모든 AWS 리전에서 작동하는 인증서 번들 .pem 파일을 다운로드하고 파일을 ssl\$1wallet 디렉터리에 저장합니다. 자세한 내용은 [SSL/TLS를 사용하여 DB 인스턴스 또는 클러스터 에 대한 연결 암호화](UsingWithRDS.SSL.md) 섹션을 참조하세요.

1. `$ORACLE_HOME/network/admin` 디렉터리에서 `tnsnames.ora` 파일을 수정하거나 생성하고 다음 항목을 포함합니다.

   ```
   net_service_name = 
     (DESCRIPTION = 
       (ADDRESS_LIST = 
         (ADDRESS = 
           (PROTOCOL = TCPS) 
           (HOST = endpoint) 
           (PORT = ssl_port_number)
         )
       )
       (CONNECT_DATA = 
         (SID = database_name)
       )
       (SECURITY = 
         (SSL_SERVER_CERT_DN = "C=US,ST=Washington,L=Seattle,O=Amazon.com,OU=RDS,CN=endpoint")
       )
     )
   ```

1. 동일한 디렉터리에서 sqlnet.ora 파일을 수정하거나 만들고 다음 파라미터를 포함합니다.
**참고**  
TLS 보안 연결을 통해 개체와 통신하기 위해 Oracle이 인증에 필요한 인증서가 있는 wallet을 요구합니다. 7단계에서와 같이 Oracle의 ORAPKI 유틸리티를 사용하여 Oracle Wallet을 만들고 유지 관리할 수 있습니다. 자세한 내용은 Oracle 설명서의 [Setting up Oracle wallet using ORAPKI](https://docs.oracle.com/cd/E92519_02/pt856pbr3/eng/pt/tsvt/task_SettingUpOracleWalletUsingORAPKI.html)를 참조하십시오.

   ```
   WALLET_LOCATION = (SOURCE = (METHOD = FILE) (METHOD_DATA = (DIRECTORY = $ORACLE_HOME/ssl_wallet))) 
   SSL_CLIENT_AUTHENTICATION = FALSE 
   SSL_VERSION = 1.0 
   SSL_CIPHER_SUITES = (SSL_RSA_WITH_AES_256_CBC_SHA) 
   SSL_SERVER_DN_MATCH = ON
   ```
**참고**  
DB 인스턴스가 지원하는 경우 `SSL_VERSION`을 더 높은 값으로 설정할 수 있습니다.

1. 다음 명령을 실행하여 Oracle Wallet을 만듭니다.

   ```
   prompt>orapki wallet create -wallet $ORACLE_HOME/ssl_wallet -auto_login_only
   ```

1. OS 유틸리티를 사용하여 .pem 번들 파일의 각 인증서를 별도의 .pem 파일로 추출합니다.

1. .pem 파일의 절대 파일 이름으로 `certificate-pem-file`을 대체하여 개별 `orapki` 명령을 통해 Wallet에 각 인증서를 추가합니다.

   ```
   prompt>orapki wallet add -wallet $ORACLE_HOME/ssl_wallet -trusted_cert -cert
         certificate-pem-file -auto_login_only
   ```

   자세한 내용은 [SSL/TLS 인증서 교체](UsingWithRDS.SSL-certificate-rotation.md) 섹션을 참조하세요.

# SSL을 사용하여 RDS for Oracle DB 인스턴스에 연결
<a name="Appendix.Oracle.Options.SSL.Connecting"></a>

앞에서 설명한 대로 SSL을 사용하도록 SQL\$1Plus를 구성한 후에는 SSL 옵션을 통해 RDS for Oracle DB 인스턴스에 연결할 수 있습니다. 선택적으로, tnsnames.ora 및 sqlnet.ora 파일이 들어있는 디렉터리를 가리키는 `TNS_ADMIN` 값을 먼저 내보낼 수 있습니다. 그러면 SQL \$1Plus가 이러한 파일을 일관되게 찾을 수 있습니다. 다음 예에서는 `TNS_ADMIN` 값을 내보냅니다.

```
export TNS_ADMIN = ${ORACLE_HOME}/network/admin          
```

DB 인스턴스에 연결합니다. 예를 들어 SQL\$1Plus와 tnsnames.ora 파일의 *<net\$1service\$1name>*을 사용하여 연결할 수 있습니다.

```
sqlplus mydbuser@net_service_name          
```

다음 명령을 사용하면 tnsnames.ora 파일 사용 없이 SQL\$1Plus를 사용하여 DB 인스턴스에 연결할 수도 있습니다.

```
sqlplus 'mydbuser@(DESCRIPTION = (ADDRESS = (PROTOCOL = TCPS)(HOST = endpoint) (PORT = ssl_port_number))(CONNECT_DATA = (SID = database_name)))'          
```

SSL을 사용하지 않고 RDS for Oracle DB 인스턴스에 연결할 수도 있습니다. 예를 들어 다음 명령을 실행하면 SSL 암호화 없이 클리어 텍스트 포트를 통해 DB 인스턴스에 연결됩니다.

```
sqlplus 'mydbuser@(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = endpoint) (PORT = port_number))(CONNECT_DATA = (SID = database_name)))'          
```

TCP(Transmission Control Protocol) 포트 액세스를 닫으려는 경우 IP 주소 수신이 없는 보안 그룹을 만들어 인스턴스에 추가합니다. 이렇게 하면 TCP 포트를 통한 연결이 닫히지만 SSL 옵션 보안 그룹에 의해 허용되는 범위 내에 있는 IP 주소를 사용하여 지정되는 SSL 포트를 통해 계속 연결할 수 있습니다.

# JDBC를 통한 SSL 연결 설정
<a name="Appendix.Oracle.Options.SSL.JDBC"></a>

JDBC를 통한 SSL 연결을 사용하려면 키 스토어를 만들고 Amazon RDS 루트 CA 인증서를 신뢰하고 아래에 지정된 코드 조각을 사용해야 합니다.

키 스토어를 JKS 형식으로 만들려면 다음 명령을 사용하면 됩니다. 키 스토어 만들기에 대한 자세한 내용은 Oracle 설명서의 [키 스토어 생성](https://docs.oracle.com/cd/E35822_01/server.740/es_admin/src/tadm_ssl_jetty_keystore.html)을 참조하세요. 참조 정보는 **Java 플랫폼, 표준 에디션 도구 참조의 [keytool](https://docs.oracle.com/javase/8/docs/technotes/tools/windows/keytool.html)을 참조하세요.

```
keytool -genkey -alias client -validity 365 -keyalg RSA -keystore clientkeystore         
```

다음 단계에 따라 Amazon RDS 루트 CA 인증서를 신뢰합니다.

**Amazon RDS 루트 CA 인증서를 신뢰하려면**

1. 모든 AWS 리전에서 작동하는 인증서 번들 .pem 파일을 다운로드하고 파일을 ssl\$1wallet 디렉터리에 저장합니다.

   인증서 다운로드에 대한 자세한 내용은 [SSL/TLS를 사용하여 DB 인스턴스 또는 클러스터 에 대한 연결 암호화](UsingWithRDS.SSL.md) 단원을 참조하세요.

1. OS 유틸리티를 사용하여 .pem 파일의 각 인증서를 별도의 파일로 추출합니다.

1. 별도의 `openssl` 명령을 사용하여 각 인증서를 .der 형식으로 변환하고 *certificate-pem-file*을 인증서 .pem 파일 이름(.pem 확장자 제외)으로 대체합니다.

   ```
   openssl x509 -outform der -in certificate-pem-file.pem -out certificate-pem-file.der                
   ```

1. 다음 명령을 사용하여 각 인증서를 키 스토어로 가져옵니다.

   ```
   keytool -import -alias rds-root -keystore clientkeystore.jks -file certificate-pem-file.der                
   ```

   자세한 내용은 [SSL/TLS 인증서 교체](UsingWithRDS.SSL-certificate-rotation.md) 단원을 참조하십시오.

1. 키 스토어가 성공적으로 만들어졌는지 확인하십시오.

   ```
   keytool -list -v -keystore clientkeystore.jks                                            
   ```

   메시지가 표시되면 키 스토어 암호를 입력하십시오.

다음은 JDBC를 사용하여 SSL 연결을 설정하는 방법을 보여 주는 코드 예입니다.

```
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;
 
public class OracleSslConnectionTest {
    private static final String DB_SERVER_NAME = "dns-name-provided-by-amazon-rds";
    private static final Integer SSL_PORT = "ssl-option-port-configured-in-option-group";
    private static final String DB_SID = "oracle-sid";
    private static final String DB_USER = "user-name";
    private static final String DB_PASSWORD = "password";
    // This key store has only the prod root ca.
    private static final String KEY_STORE_FILE_PATH = "file-path-to-keystore";
    private static final String KEY_STORE_PASS = "keystore-password";
 
    public static void main(String[] args) throws SQLException {
        final Properties properties = new Properties();
        final String connectionString = String.format(
                "jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCPS)(HOST=%s)(PORT=%d))(CONNECT_DATA=(SID=%s)))",
                DB_SERVER_NAME, SSL_PORT, DB_SID);
        properties.put("user", DB_USER);
        properties.put("password", DB_PASSWORD);
        properties.put("oracle.jdbc.J2EE13Compliant", "true");
        properties.put("javax.net.ssl.trustStore", KEY_STORE_FILE_PATH);
        properties.put("javax.net.ssl.trustStoreType", "JKS");
        properties.put("javax.net.ssl.trustStorePassword", KEY_STORE_PASS);
        final Connection connection = DriverManager.getConnection(connectionString, properties);
        // If no exception, that means handshake has passed, and an SSL connection can be opened
    }
}
```

**참고**  
보안 모범 사례로 여기에 표시된 프롬프트 이외의 암호를 지정하는 것이 좋습니다.

# SSL 연결과 DN 일치 적용
<a name="Appendix.Oracle.Options.SSL.DNMatch"></a>

Oracle 파라미터 `SSL_SERVER_DN_MATCH`를 사용하여 데이터베이스 서버에 대한 DN(고유 이름)을 서비스 이름과 일치하도록 적용할 수 있습니다. 일치 확인을 적용한 경우 SSL에서 인증서가 서버에서 가져온 것인지를 확인합니다. 일치 확인을 적용하지 않은 경우 SSL에서 확인을 수행하지만 일치 여부에 상관없이 연결을 허용합니다. 일치를 적용하지 않은 경우 서버 ID가 위조될 수 있습니다.

DN 일치를 적용하려면 DN 일치 속성을 추가하고 아래 지정된 연결 문자열을 사용합니다.

다음과 같이 속성을 클라이언트 연결에 추가하여 DN 일치를 적용합니다.

```
properties.put("oracle.net.ssl_server_dn_match", "TRUE");            
```

SSL을 사용할 때 DN 일치를 적용하려면 다음 연결 문자열을 사용합니다.

```
final String connectionString = String.format(
    "jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCPS)(HOST=%s)(PORT=%d))" +
    "(CONNECT_DATA=(SID=%s))" +
    "(SECURITY = (SSL_SERVER_CERT_DN = 
\"C=US,ST=Washington,L=Seattle,O=Amazon.com,OU=RDS,CN=%s\")))",
    DB_SERVER_NAME, SSL_PORT, DB_SID, DB_SERVER_NAME);
```

# SSL 연결 문제 해결
<a name="Appendix.Oracle.Options.SSL.troubleshooting"></a>

데이터베이스를 쿼리한 후 `ORA-28860` 오류가 표시될 수 있습니다.

```
ORA-28860: Fatal SSL error
28860. 00000 - "Fatal SSL error"
*Cause: An error occurred during the SSL connection to the peer. It is likely that this side sent data which the peer rejected.
*Action: Enable tracing to determine the exact cause of this error.
```

이 오류는 클라이언트가 서버에서 지원하지 않는 TLS 버전을 사용하여 연결을 시도할 때 발생합니다. 이 오류를 방지하려면 sqlnet.ora를 편집하고 `SSL_VERSION`을 올바른 TLS 버전으로 설정하세요. 자세한 내용은 My Oracle Support 문서의 [Oracle Support Document 2748438.1](https://support.oracle.com/epmos/faces/DocumentDisplay?id=2748438.1)을 참조하세요.

# Oracle Spatial
<a name="Oracle.Options.Spatial"></a>

Amazon RDS는 `SPATIAL` 옵션 사용을 통해 Oracle Spatial을 지원합니다. Oracle Spatial에는 Oracle 데이터베이스에서 공간 데이터의 저장, 검색, 업데이트 및 쿼리를 신속하게 실행할 수 있는 SQL 스키마 및 기능이 있습니다. 자세한 내용은 Oracle 설명서에서 [Spatial Concepts](http://docs.oracle.com/database/121/SPATL/spatial-concepts.htm#SPATL010)를 참조하십시오. Amazon RDS는 모든 지원되는 릴리스의 모든 에디션에서 Oracle Spatial을 지원합니다.

## 공간 패치 번들(SPB) 작동 방식
<a name="Oracle.Options.Spatial.SPBs"></a>

분기마다 RDS for Oracle은 각 지원되는 메이저 엔진에 대해 새로운 마이너 엔진 버전을 릴리스합니다. 릴리스 업데이트(RU) 엔진 버전은 지정된 분기에 대한 RU 패치를 포함하여 Oracle의 버그 수정을 통합합니다. 공간 패치 번들(SPB) 엔진 버전에는 Oracle Spatial과 관련된 RU 패치와 패치가 포함되어 있습니다. 예를 들어 19.0.0.0.ru-2025-01.spb-1.r1은 엔진 버전 19.0.0.0.ru-2025-01.rur-2025-01.r1에 RU 패치와 공간 패치가 포함된 마이너 엔진 버전입니다. SPB는 Oracle Database 19c에서만 지원됩니다.

SPB는 RU와 동일한 방식으로 작동하지만 이름이 다릅니다. RU는 이름 지정 형식 19.0.0.0.ru-2025-01.rur-2025-01.r1을 사용합니다. SPB 이름에는 19.0.0.0.ru-2025-01.spb-1.r1과 같은 'spb' 텍스트가 포함됩니다. 일반적으로 SPB는 해당 분기별 RU가 있고서 2\$13주 후에 릴리스됩니다. 예를 들어 19.0.0.0.ru-2025-01.spb-1.r1은 19.0.0.0.ru-2025-01.rur-2025-01.r1 이후에 릴리스됩니다.

RDS for Oracle은 RU 및 SPB의 마이너 버전 자동 업그레이드에 대한 별도 경로를 갖추고 있습니다. DB 인스턴스가 RU를 사용하는 경우 RDS는 인스턴스를 RU로 자동으로 업그레이드합니다. DB 인스턴스가 SPB를 사용하는 경우 RDS는 인스턴스를 SPB로 업그레이드합니다.

RU 및 SPB에 대한 자세한 내용은 [Oracle 마이너 버전 업그레이드](USER_UpgradeDBInstance.Oracle.Minor.md) 섹션을 참조하시기 바랍니다. Oracle Database 19c에 대해 지원되는 RU 및 SPB 목록은 [Amazon RDS for Oracle 릴리스 정보](https://docs.aws.amazon.com/AmazonRDS/latest/OracleReleaseNotes/oracle-version-19-0.html)에 나와 있는 *Amazon RDS for Oracle Database 19c(19.0.0.0)*를 참조하시기 바랍니다.

## Oracle Spatial의 사전 요구 사항
<a name="Oracle.Options.Spatial.PreReqs"></a>

Oracle Spatial 사용을 위한 사전 요구 사항은 다음과 같습니다.
+ DB 인스턴스가 충분한 인스턴스 클래스인지 확인합니다. Oracle Spatial은 db.t3.small DB 인스턴스 클래스에 대해 지원되지 않습니다. 자세한 내용은 [RDS for Oracle DB 인스턴스 클래스](Oracle.Concepts.InstanceClasses.md) 섹션을 참조하세요.
+ DB 인스턴스에 **자동 마이너 버전 업그레이드**가 활성화되어 있는지 확인합니다. 이 옵션을 사용하면 DB 인스턴스를 활성화하여 사용 가능할 때 마이너 DB 엔진 버전 업그레이드를 자동으로 받을 수 있으며, Oracle Java Virtual Machine(JVM)을 설치하는 옵션에 필요합니다. Amazon RDS는 이 옵션을 사용하여 DB 인스턴스를 최신 Oracle Patch Set Update(PSU) 또는 Release Update(RU)로 업데이트합니다. 자세한 내용은 [Amazon RDS DB 인스턴스 수정](Overview.DBInstance.Modifying.md) 섹션을 참조하세요.

## Oracle Spatial의 모범 사례
<a name="Oracle.Options.Spatial.BestPractces"></a>

다음은 Oracle Spatial 사용에 관한 모범 사례입니다.
+ 보안을 극대화하기 위해 Secure Sockets Layer(SSL)와 함께 `SPATIAL` 옵션을 사용합니다. 자세한 내용은 [Oracle 보안 소켓 Layer](Appendix.Oracle.Options.SSL.md) 섹션을 참조하세요.
+ DB 인스턴스에 대한 액세스를 제한하도록 DB 인스턴스를 구성합니다. 자세한 내용은 [VPC에서 DB 인스턴스에 액세스하는 시나리오](USER_VPC.Scenarios.md) 및 [VPC에서 DB 인스턴스를 사용한 작업](USER_VPC.WorkingWithRDSInstanceinaVPC.md) 단원을 참조하십시오.

## Oracle Spatial 옵션 추가
<a name="Oracle.Options.Spatial.Add"></a>

`SPATIAL` 옵션을 DB 인스턴스에 추가하는 일반적인 프로세스는 다음과 같습니다.

1. 새 옵션 그룹을 생성하거나 기존 옵션 그룹을 복사 또는 수정합니다.

1. [] 옵션을 옵션 그룹에 추가합니다.

1. 옵션 그룹을 DB 인스턴스에 연동시킵니다.

Oracle Java Virtual Machine(JVM)이 DB 인스턴스에 설치되어 있지 *않은* 경우 `SPATIAL` 옵션이 추가되는 동안 잠시 중단이 발생합니다. Oracle Java Virtual Machine(JVM)이 DB 인스턴스에 이미 설치되어 있으면 중단이 발생하지 않습니다. 옵션을 추가한 후 DB 인스턴스를 재시작할 필요가 없습니다. 옵션 그룹이 활성화되는 즉시 Oracle Spatial을 사용할 수 있습니다.

**참고**  
이 중단 기간 동안에는 암호 확인 기능이 잠시 비활성화됩니다. 중단 기간 중에 암호 확인 기능과 관련된 이벤트를 볼 수도 있습니다. Oracle DB 인스턴스를 사용하기 전에 암호 확인 기능이 다시 활성화됩니다.

**`SPATIAL` 옵션을 DB 인스턴스에 추가하려면**

1. 사용할 옵션 그룹을 결정합니다. 새 옵션 그룹을 생성하거나 기존 옵션 그룹을 사용합니다. 기존 옵션 그룹을 사용하려면 다음 단계로 건너뛰십시오. 그렇지 않으면 다음 설정을 사용하여 사용자 지정 DB 옵션을 생성합니다.

   1. **엔진**에서 DB 인스턴스의 Oracle 에디션을 선택합니다.

   1. **메이저 엔진 버전**에서 DB 인스턴스의 버전을 선택합니다.

   자세한 내용은 [옵션 그룹 생성](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Create) 섹션을 참조하세요.

1. [**SPATIAL**] 옵션을 옵션 그룹에 추가합니다. 옵션 추가에 대한 자세한 내용은 [옵션 그룹에 옵션 추가](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.AddOption) 섹션을 참조하세요.

1. 옵션 그룹을 새 DB 인스턴스 또는 기존 DB 인스턴스에 적용합니다: 
   + 새 DB 인스턴스의 경우, 인스턴스를 시작할 때 옵션 그룹을 적용합니다. 자세한 내용은 [Amazon RDS DB 인스턴스 생성](USER_CreateDBInstance.md) 섹션을 참조하세요.
   + 기존 DB 인스턴스의 경우, 해당 인스턴스를 수정하고 새 옵션 그룹을 연결하여 옵션 그룹을 적용합니다. 자세한 내용은 [Amazon RDS DB 인스턴스 수정](Overview.DBInstance.Modifying.md) 섹션을 참조하세요.

## Oracle Spatial 옵션 제거
<a name="Oracle.Options.Spatial.Remove"></a>

`SPATIAL` 옵션에서 제공하는 데이터 유형을 사용하는 모든 객체를 삭제한 후 DB 인스턴스에서 옵션을 삭제할 수 있습니다. Oracle Java Virtual Machine(JVM)이 DB 인스턴스에 설치되어 있지 *않은* 경우 `SPATIAL` 옵션이 제거되는 동안 잠시 중단이 발생합니다. Oracle Java Virtual Machine(JVM)이 DB 인스턴스에 이미 설치되어 있으면 중단이 발생하지 않습니다. `SPATIAL` 옵션을 제거한 후 DB 인스턴스를 재시작할 필요가 없습니다.

**`SPATIAL` 옵션을 삭제하려면**

1. 데이터를 백업합니다.
**주의**  
인스턴스에서 옵션의 일부로 활성화된 데이터 유형을 사용하고 `SPATIAL` 옵션을 제거하면 데이터가 손실될 수 있습니다. 자세한 내용은 [데이터 백업, 복원 및 내보내기](CHAP_CommonTasks.BackupRestore.md) 섹션을 참조하세요.

1. 기존 객체가 `SPATIAL` 옵션의 데이터 유형 또는 기능을 참조하는지 확인합니다.

   `SPATIAL` 옵션이 있는 경우 `SPATIAL` 옵션이 없는 새 옵션 그룹을 적용할 때 인스턴스가 중단될 수 있습니다. 다음 쿼리를 사용하여 객체를 식별할 수 있습니다.

   ```
   SELECT OWNER, SEGMENT_NAME, TABLESPACE_NAME, BYTES/1024/1024 mbytes
   FROM   DBA_SEGMENTS
   WHERE  SEGMENT_TYPE LIKE '%TABLE%'
   AND    (OWNER, SEGMENT_NAME) IN
          (SELECT DISTINCT OWNER, TABLE_NAME 
           FROM   DBA_TAB_COLUMNS
           WHERE  DATA_TYPE='SDO_GEOMETRY'
           AND    OWNER <> 'MDSYS')
   ORDER BY 1,2,3,4;
   
   SELECT OWNER, TABLE_NAME, COLUMN_NAME
   FROM   DBA_TAB_COLUMNS 
   WHERE  DATA_TYPE = 'SDO_GEOMETRY' 
   AND    OWNER <> 'MDSYS' 
   ORDER BY 1,2,3;
   ```

1. `SPATIAL` 옵션의 데이터 유형 또는 기능을 참조하는 모든 객체를 삭제합니다.

1. 다음 중 하나를 수행하십시오.
   + 소속 옵션 그룹에서 `SPATIAL` 옵션을 제거합니다. 이 변경은 해당 옵션 그룹을 사용하는 모든 DB 인스턴스에 영향을 미칩니다. 자세한 내용은 [옵션 그룹에서 옵션 제거](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.RemoveOption) 섹션을 참조하세요.
   + DB 인스턴스를 수정하고 `SPATIAL` 옵션이 포함되지 않은 다른 옵션 그룹을 지정합니다. 이 변경은 단일 DB 인스턴스에 영향을 미칩니다. 기본(빈) 옵션 그룹을 지정하거나 다른 사용자 지정 옵션 그룹을 지정할 수 있습니다. 자세한 내용은 [Amazon RDS DB 인스턴스 수정](Overview.DBInstance.Modifying.md) 섹션을 참조하세요.

# Oracle SQLT
<a name="Oracle.Options.SQLT"></a>

Amazon RDS는 SQLT 옵션 사용을 통해 Oracle SQLTXPLAIN(SQLT)을 지원합니다. 모든 버전의 Oracle Database 19c 이상에서 SQLT를 사용할 수 있습니다.

Oracle `EXPLAIN PLAN` 문은 SQL 문의 실행 계획을 확인할 수 있습니다. 이 문은 Oracle 옵티마이저가 특정 실행 계획(예: 중첩 루프 조인)을 선택했는지 확인할 수 있습니다. 또한 옵티마이저의 결정(예: 해시 조인이 아니라 중첩 루프 조인을 선택한 이유)을 이해하도록 돕습니다. 따라서 `EXPLAIN PLAN`을 통해 문의 성능을 파악할 수 있습니다.

SQLT는 보고서를 생성하는 Oracle 유틸리티입니다. 이 보고서에는 객체 통계, 객체 메타데이터, 옵티마이저 관련 초기화 파라미터와 데이터베이스 관리자가 최적의 성능을 위해 SQL 문을 튜닝하는 데 사용할 수 있는 기타 정보가 포함됩니다. SQLT는 모든 섹션에 대한 하이퍼링크가 포함된 HTML 보고서를 생성합니다.

Automatic Workload Repository 또는 Statspack 보고서와 달리 SQLT는 개별 SQL 문에서 작동합니다. SQLT는 성능 데이터를 수집, 저장 및 표시하는 SQLT, PL/SQL 및 SQL\$1Plus 파일의 모음입니다.

다음은 각 SQLT 버전에 지원되는 Oracle 버전입니다.


****  

| SQLT 버전 | Oracle Database 21c | Oracle Database 19c | 
| --- | --- | --- | 
|  2018-07-25.v1  |  지원  |  지원  | 
|  2018-03-31.v1  |  지원되지 않음  |  지원되지 않음  | 
|  2016-04-29.v1  |  지원되지 않음  |  지원되지 않음  | 

이를 사용하기 위해 SQLT 및 액세스 지침을 다운로드하려면:
+ My Oracle 지원 계정에 로그인하고 다음 문서를 여십시오.
+ SQLT를 다운로드하려면: [문서 215187.1](https://support.oracle.com/epmos/faces/DocumentDisplay?id=215187.1)
+ SQLT 사용 지침: [문서 1614107.1](https://support.oracle.com/epmos/faces/DocumentDisplay?id=1614107.1)
+ SQLT에 대한 FAQ: [문서 1454160.1](https://support.oracle.com/epmos/faces/DocumentDisplay?id=1454160.1)
+ SQLT 출력 읽기에 대한 자세한 내용: [문서 1456176.1](https://support.oracle.com/epmos/main/downloadattachmentprocessor?parent=DOCUMENT&sourceId=1456176.1&attachid=1456176.1:58&clickstream=yes)
+ 주요 보고서: [문서 1922234.1](https://support.oracle.com/epmos/faces/DocumentDisplay?parent=DOCUMENT&sourceId=215187.1&id=1922234.1)를 해석하려면

Amazon RDS는 다음 SQLT 메서드를 지원하지 않습니다.
+ `XPLORE` 
+ `XHUME` 

## SQLT의 사전 조건
<a name="Oracle.Options.SQLT.PreReqs"></a>

다음은 SQLT 사용을 위한 사전 조건입니다.
+ SQLT에 필요한 사용자 및 역할을 제거해야 합니다(있는 경우).

  SQLT 옵션이 DB 인스턴스에 다음 사용자 및 역할을 생성합니다.
  + `SQLTXPLAIN` user
  + `SQLTXADMIN` user
  + `SQLT_USER_ROLE` 역할

  DB 인스턴스에 이러한 사용자 또는 역할이 있는 경우 SQL 클라이언트를 사용해 DB 인스턴스에 로그인하여 다음 문을 사용하여 삭제하십시오.

  ```
  DROP USER SQLTXPLAIN CASCADE;
  DROP USER SQLTXADMIN CASCADE;   
  DROP ROLE SQLT_USER_ROLE CASCADE;
  ```
+ SQLT에 필요한 테이블 공간을 제거해야 합니다(있는 경우).

  SQLT 옵션이 DB 인스턴스에 다음 테이블 공간을 생성합니다.
  + `RDS_SQLT_TS`
  + `RDS_TEMP_SQLT_TS`

  DB 인스턴스에 이러한 테이블 공간이 있는 경우 SQL 클라이언트를 사용해 DB 인스턴스에 로그인하여 삭제하십시오.

## SQLT 옵션 설정
<a name="Oracle.Options.SQLT.Options"></a>

 SQLT에서는 Oracle Tuning Pack 및 Oracle Diagnostics Pack에서 제공하는 사용이 허가된 기능을 사용할 수 있습니다. Oracle Tuning Pack에는 SQL Tuning Advisor가 들어 있고, Oracle Diagnostics Pack에는 Automatic Workload Repository가 들어 있습니다. SQLT 설정에 따라 SQLT에서 이러한 기능에 대한 액세스가 활성화 또는 비활성화됩니다.

Amazon RDS는 SQLT 옵션에 대해 다음 설정을 지원합니다.


****  

| 옵션 설정 | 유효한 값 | 기본값 | 설명 | 
| --- | --- | --- | --- | 
|  `LICENSE_PACK`  |  `T`, `D`, `N`  |  `N`   |  SQLT를 사용하여 액세스하려고 하는 Oracle Management Pack입니다. 다음 값 중 하나를 입력합니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/Oracle.Options.SQLT.html)  Amazon RDS는 Oracle Management Pack에 대한 라이선스를 제공하지 않습니다. DB에 포함되어 있는 않은 팩을 사용하려고 하는 경우에는 DB 인스턴스에서 SQLT를 사용할 수 있습니다. 그러나 SQLT에서 해당 팩에 액세스할 수 없고 SQLT 보고서에 해당 팩에 대한 데이터가 포함되지 않습니다. 예를 들어, `T`를 지정한 경우 DB 인스턴스에는 Oracle Tuning Pack이 포함되지 않고, SQLT가 DB 인스턴스에서 작동하지만 SQLT 보고서에는 Oracle Tuning Pack과 관련된 데이터가 들어 있지 않습니다.   | 
|  `VERSION`  |  `2016-04-29.v1` `2018-03-31.v1` `2018-07-25.v1`  |  `2016-04-29.v1`   |  설치하려는 SQLT 버전  Oracle Database 19c 및 21c의 경우 지원되는 유일한 버전은 `2018-07-25.v1`입니다. 이 버전은 이러한 릴리스의 기본값입니다.   | 

## SQLT 옵션 추가
<a name="Oracle.Options.SQLT.Add"></a>

SQLT 옵션을 DB 인스턴스에 추가하는 일반적인 프로세스는 다음과 같습니다.

1. 새 옵션 그룹을 생성하거나 기존 옵션 그룹을 복사 또는 수정합니다.

1. SQLT 옵션을 옵션 그룹에 추가합니다.

1. 옵션 그룹을 DB 인스턴스에 연동시킵니다.

SQLT 옵션을 추가하면 옵션 그룹이 활성화되는 순간, SQLT가 활성화됩니다.

**DB 인스턴스에 SQLT 옵션을 추가하려면**

1. 사용할 옵션 그룹을 결정합니다. 새 옵션 그룹을 생성하거나 기존 옵션 그룹을 사용합니다. 기존 옵션 그룹을 사용하려면 다음 단계로 건너뛰십시오. 그렇지 않으면 다음 설정을 사용하여 사용자 지정 DB 옵션을 생성합니다.

   1. [**Engine**]에서 사용할 Oracle 버전을 선택합니다. 모든 버전에서 SQLT 옵션이 지원됩니다.

   1. **메이저 엔진 버전**에서 DB 인스턴스의 버전을 선택합니다.

   자세한 내용은 [옵션 그룹 생성](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Create) 섹션을 참조하세요.

1. [**SQLT**] 옵션을 옵션 그룹에 추가합니다. 옵션 추가에 대한 자세한 내용은 [옵션 그룹에 옵션 추가](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.AddOption) 섹션을 참조하세요.

1. 옵션 그룹을 새 DB 인스턴스 또는 기존 DB 인스턴스에 적용합니다: 
   + 새 DB 인스턴스의 경우, 인스턴스를 시작할 때 옵션 그룹을 적용합니다. 자세한 내용은 [Amazon RDS DB 인스턴스 생성](USER_CreateDBInstance.md) 섹션을 참조하세요.

      
   + 기존 DB 인스턴스의 경우, 해당 인스턴스를 수정하고 새 옵션 그룹을 연결하여 옵션 그룹을 적용합니다. 자세한 내용은 [Amazon RDS DB 인스턴스 수정](Overview.DBInstance.Modifying.md) 섹션을 참조하세요.

1. (선택 사항) SQLT 옵션을 사용하여 각 DB 인스턴스에서 SQLT 설치를 확인합니다.

   1. SQL 클라이언트를 사용하여 마스터 관리자로 DB 인스턴스에 연결합니다.

      SQL 클라이언트를 사용하여 Oracle DB 인스턴스에 연결하는 방법에 대한 자세한 내용은 [Oracle DB 인스턴스에 연결](USER_ConnectToOracleInstance.md) 단원을 참조하십시오.

   1. 다음 쿼리를 실행합니다.

      ```
      SELECT sqltxplain.sqlt$a.get_param('tool_version') sqlt_version FROM DUAL;                        
      ```

      이 쿼리는 Amazon RDS에 있는 SQLT 옵션의 현재 버전을 반환합니다. `12.1.160429`는 Amazon RDS에서 사용 가능한 SQLT 버전의 예입니다.

1. SQLT 옵션에서 생성한 사용자의 암호를 변경합니다.

   1. SQL 클라이언트를 사용하여 마스터 관리자로 DB 인스턴스에 연결합니다.

   1. 다음 SQL 문을 실행하여 `SQLTXADMIN` 사용자의 암호를 변경합니다.

      ```
      ALTER USER SQLTXADMIN IDENTIFIED BY new_password ACCOUNT UNLOCK;                         
      ```
**참고**  
보안 모범 사례로 여기에 표시된 프롬프트 이외의 암호를 지정하는 것이 좋습니다.

   1. 다음 SQL 문을 실행하여 `SQLTXPLAIN` 사용자의 암호를 변경합니다.

      ```
      ALTER USER SQLTXPLAIN IDENTIFIED BY new_password ACCOUNT UNLOCK;                         
      ```
**참고**  
보안 모범 사례로 여기에 표시된 프롬프트 이외의 암호를 지정하는 것이 좋습니다.

**참고**  
SQLT를 업그레이드하려면 이전 버전의 SQLT를 제거한 다음 새 버전을 설치해야 합니다. 따라서 SQLT를 업그레이드하면 모든 SQLT 메타데이터가 손실될 수 있습니다. 데이터베이스의 메이저 버전 업그레이드 역시 SQLT를 제거한 후 다시 설치합니다. 메이저 버전 업그레이드의 예로는 Oracle Database 19c에서 Oracle Database 21c로의 업그레이드가 있습니다.

## SQLT 사용
<a name="Oracle.Options.SQLT.Using"></a>

SQLT는 Oracle SQL\$1Plus 유틸리티와 함께 작동합니다.

**SQLT를 사용하려면**

1.  My Oracle Support 사이트의 [문서 215187.1](https://support.oracle.com/epmos/faces/DocumentDisplay?id=215187.1)에서 SQLT .zip 파일을 다운로드합니다.
**참고**  
My Oracle Support 사이트에서 SQLT 12.1.160429를 다운로드할 수 없습니다. Oracle에는 이 구 버전이 사용되지 않습니다.

1.  SQLT .zip 파일의 압축을 풉니다.

1.  명령 프롬프트에서 파일 시스템의 `sqlt/run` 디렉터리로 변경합니다.

1.  명령 프롬프트에서 SQL\$1Plus를 열고 DB 인스턴스에 마스터 사용자로 연결합니다.

   SQL\$1Plus를 사용한 DB 인스턴스 연결에 대한 자세한 내용은 [Oracle DB 인스턴스에 연결](USER_ConnectToOracleInstance.md) 단원을 참조하십시오.

1.  SQL 문의 SQL ID를 가져옵니다.

   ```
   SELECT SQL_ID FROM V$SQL WHERE SQL_TEXT='sql_statement';                               
   ```

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

   ```
   SQL_ID
   -------------
   chvsmttqjzjkn
   ```

1. SQLT를 사용하여 SQL 문을 분석합니다.

   ```
   START sqltxtract.sql sql_id sqltxplain_user_password                    
   ```

   예를 들어 SQL ID `chvsmttqjzjkn`의 경우 다음과 같이 입력합니다.

   ```
   START sqltxtract.sql chvsmttqjzjkn sqltxplain_user_password                    
   ```

   SQLT가 SQLT 명령이 실행된 디렉터리에 HTML 보고서 및 관련 리소스를 .zip 파일로 생성합니다.

1.  (선택 사항) 애플리케이션 사용자가 SQLT를 사용하여 SQL 문을 진단하도록 하려면 다음 문을 사용하여 각 애플리케이션 사용자에게 `SQLT_USER_ROLE`을 부여하십시오.

   ```
   GRANT SQLT_USER_ROLE TO application_user_name;                
   ```
**참고**  
Oracle에서는 `SYS` 사용자 또는 `DBA` 역할을 가진 사용자가 SQLT를 실행하는 것을 권장하지 않습니다. 애플리케이션 사용자에게 `SQLT_USER_ROLE`을 부여해 애플리케이션 사용자의 계정으로 SQLT 진단을 실행하는 것이 가장 좋습니다.

## SQLT 옵션 업그레이드
<a name="Oracle.Options.SQLT.Upgrading"></a>

Amazon RDS for Oracle을 사용하면 SQLT 옵션을 기존 버전에서 상위 버전으로 업그레이드할 수 있습니다. SQLT 옵션을 업그레이드하려면 SQLT 새 버전에 대한 [SQLT 사용](#Oracle.Options.SQLT.Using)의 1단계–3단계를 완료하십시오. 또한, 이 섹션의 7단계에서 SQLT 이전 버전에 대한 권한을 부여한 경우 새 SQLT 버전에 대한 이 권한을 다시 부여하십시오.

SQLT 옵션을 업그레이드하면 이전 SQLT 버전의 메타데이터가 손실됩니다. 이전 SQLT 버전의 스키마 및 관련 객체는 삭제되고 최신 버전의 SQLT가 설치됩니다. 최신 SQLT 버전의 변경 사항에 대한 자세한 내용은 My Oracle Support 사이트의[문서 1614201.1](https://support.oracle.com/epmos/faces/DocumentDisplay?parent=DOCUMENT&sourceId=215187.1&id=1614201.1)을 참조하십시오.

**참고**  
버전 다운그레이드는 지원되지 않습니다.

## SQLT 설정 수정
<a name="Oracle.Options.SQLT.ModifySettings"></a>

SQLT를 활성화한 후에는 이 옵션에 대한 `LICENSE_PACK` 및 `VERSION` 설정을 수정할 수 있습니다.

옵션 설정을 변경하는 방법에 대한 자세한 내용은 [옵션 설정 수정](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.ModifyOption)을(를) 참조하십시오. 각 설정에 대한 자세한 내용은 [SQLT 옵션 설정](#Oracle.Options.SQLT.Options) 단원을 참조하십시오.

## SQLT 옵션 제거
<a name="Oracle.Options.SQLT.Remove"></a>

DB 인스턴스에서 SQLT를 제거할 수 있습니다.

DB 인스턴스에서 SQLT를 제거하려면 다음 중 하나를 수행합니다.
+ 여러 DB 인스턴스에서 SQLT를 제거하려면 DB 인스턴스가 속한 옵션 그룹에서 해당 SQLT 옵션을 제거합니다. 이 변경은 해당 옵션 그룹을 사용하는 모든 DB 인스턴스에 영향을 미칩니다. 자세한 내용은 [옵션 그룹에서 옵션 제거](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.RemoveOption) 섹션을 참조하세요.

   
+ 단일 DB 인스턴스에서 SQLT를 제거하려면 DB 인스턴스를 수정하고 SQLT 옵션이 포함되지 않은 다른 옵션 그룹을 지정합니다. 기본(빈) 옵션 그룹을 지정하거나 다른 사용자 지정 옵션 그룹을 지정할 수 있습니다. 자세한 내용은 [Amazon RDS DB 인스턴스 수정](Overview.DBInstance.Modifying.md)을 참조하세요.

# Oracle Statspack
<a name="Appendix.Oracle.Options.Statspack"></a>

Oracle 옵션(STATSPACK)은 Oracle Statspack 성능 통계 기능을 설치하고 활성화합니다. Oracle Statspack은 성능 데이터를 수집, 저장 및 표시하는 SQL, PL/SQL 및 SQL\$1Plus 스크립트의 모음입니다. Oracle Statspack 사용에 대한 자세한 정보는 Oracle 설명서의 [Oracle Statspack](http://docs.oracle.com/cd/E13160_01/wli/docs10gr3/dbtuning/statsApdx.html) 단원을 참조하십시오.

**참고**  
Oracle Statspack은 Oracle에서 더 이상 지원되지 않으며 어드밴스 Automatic Workload Repository(AWR)로 대체되었습니다. AWR은 Diagnostics Pack을 구입한 Oracle Enterprise Edition 고객만 사용할 수 있습니다. Amazon RDS의 Oracle DB 엔진과 함께 Oracle Statspack을 사용할 수 있습니다. Amazon RDS 읽기 전용 복제본에서는 Oracle Statspack을 실행할 수 없습니다.

## Oracle Statspack 설정
<a name="Appendix.Oracle.Options.Statspack.setting-up"></a>

Statspack 스크립트를 실행하려면 Statspack 옵션을 추가해야 합니다.

**Oracle Statspack을 설정하려면**

1. SQL 클라이언트에서 관리 계정으로 Oracle DB에 로그인합니다.

1. Statspack이 설치되어 있는지 여부에 따라 다음 작업 중 하나를 수행합니다.
   + Statspack이 설치되어 있고 `PERFSTAT` 계정이 Statspack과 연결된 경우 4단계로 건너뜁니다.
   + Statspack이 설치되어 있지 않고 `PERFSTAT` 계정이 있는 경우 다음과 같이 계정을 삭제합니다.

     ```
     DROP USER PERFSTAT CASCADE;
     ```

     그렇지 않으면 Statspack 옵션을 추가하려고 하면 오류와 `RDS-Event-0058`이 생성됩니다.

1. Statspack 옵션을 옵션 그룹에 추가합니다. [옵션 그룹에 옵션 추가](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.AddOption) 단원을 참조하십시오.

   Amazon RDS는 자동으로 DB 인스턴스에 Statspack 스크립트를 설치한 다음 `PERFSTAT` 계정을 설정합니다.

1. 다음 SQL 문을 사용하여 암호를 재설정하고 *pwd를* 새 암호로 바꿉니다.

   ```
   ALTER USER PERFSTAT IDENTIFIED BY pwd ACCOUNT UNLOCK;
   ```

   `PERFSTAT` 사용자 계정을 사용하여 로그인하고 Statspack 스크립트를 실행할 수 있습니다.

1. 다음 명령문을 사용하여 `CREATE JOB` 권한을 `PERFSTAT` 계정에 부여합니다.

   ```
   GRANT CREATE JOB TO PERFSTAT;
   ```

1. `PERFSTAT.STATS$IDLE_EVENT` 테이블의 유휴 대기 이벤트가 채워져 있는지 확인합니다.

   Oracle 버그 28523746 때문에 `PERFSTAT.STATS$IDLE_EVENT`의 유휴 대기 이벤트가 채워지지 않을 수 있습니다. 모든 유휴 이벤트를 사용할 수 있도록 하려면 다음 명령문을 실행합니다.

   ```
   INSERT INTO PERFSTAT.STATS$IDLE_EVENT (EVENT)
   SELECT NAME FROM V$EVENT_NAME WHERE WAIT_CLASS='Idle'
   MINUS
   SELECT EVENT FROM PERFSTAT.STATS$IDLE_EVENT;
   COMMIT;
   ```

## Statspack 보고서 생성
<a name="Appendix.Oracle.Options.Statspack.generating-reports"></a>

Statspack 보고서는 두 개의 스냅샷을 비교합니다.

**Statspack 보고서를 생성하려면**

1. SQL 클라이언트에서 `PERFSTAT` 계정으로 Oracle DB에 로그인합니다.

1. 다음 방법 중 하나를 사용하여 스냅샷을 생성합니다.
   + Statspack 스냅샷을 수동으로 생성합니다.
   + 지정된 시간 간격 후에 Statspack 스냅샷을 만드는 작업을 생성합니다. 예를 들어, 다음 작업은 Statspack 스냅샷을 1시간마다 생성합니다.

     ```
     VARIABLE jn NUMBER;
     exec dbms_job.submit(:jn, 'statspack.snap;',SYSDATE,'TRUNC(SYSDATE+1/24,''HH24'')');
     COMMIT;
     ```

1. 다음 쿼리를 사용하여 스냅샷을 봅니다.

   ```
   SELECT SNAP_ID, SNAP_TIME FROM STATS$SNAPSHOT ORDER BY 1;
   ```

1. Amazon RDS 프로시저 `rdsadmin.rds_run_spreport`를 실행하여 *begin\$1snap* 및 *end\$1snap을* 스냅샷 ID로 바꿉니다.

   ```
   exec rdsadmin.rds_run_spreport(begin_snap,end_snap);
   ```

   예를 들어, 다음 명령은 Statspack 스냅샷 1과 2 사이의 간격을 기반으로 보고서를 생성합니다.

   ```
   exec rdsadmin.rds_run_spreport(1,2);
   ```

   Statspack 보고서의 파일 이름에는 두 스냅샷의 번호가 포함됩니다. 예를 들어, Statspack 스냅샷 1과 2를 사용하여 생성한 보고서 파일의 이름은 `ORCL_spreport_1_2.lst`가 됩니다.

1. 출력을 모니터링하여 오류가 있는지 확인합니다.

   Oracle Statspack은 보고서를 실행하기 전에 검사를 수행합니다. 따라서 명령 출력에 오류 메시지가 표시될 수도 있습니다. 예를 들어 Statspack 스냅샷 시작 값이 종료 값보다 큰 잘못된 범위를 기반으로 보고서를 생성하려고 할 수 있습니다. 이 경우 출력에 오류 메시지가 표시되지만 DB 엔진은 오류 파일을 생성하지 않습니다.

   ```
   exec rdsadmin.rds_run_spreport(2,1);
   *
   ERROR at line 1:
   ORA-20000: Invalid snapshot IDs. Find valid ones in perfstat.stats$snapshot.
   ```

   Statspack 스냅샷에 잘못된 숫자를 사용하는 경우 출력에 오류가 표시됩니다. 예를 들어 스냅샷 1과 50에 대한 보고서를 생성하려고 하지만 스냅샷 50이 없는 경우 출력에 오류가 표시됩니다.

   ```
   exec rdsadmin.rds_run_spreport(1,50);
   *
   ERROR at line 1:
   ORA-20000: Could not find both snapshot IDs
   ```

1. (선택 사항) 

   보고서를 검색하려면 [Oracle 추적 파일을 사용한 작업](USER_LogAccess.Concepts.Oracle.md#USER_LogAccess.Concepts.Oracle.WorkingWithTracefiles)의 설명과 같이 추적 파일 프로시저를 호출합니다.

   또는 RDS 콘솔에서 Statspack 보고서를 다운로드합니다. DB 인스턴스 세부 정보의 **로그** 섹션으로 이동하여 **다운로드**를 선택합니다. 다음 예제는 `trace/ORCL_spreport_1_2.lst`를 보여줍니다.  
![\[RDS 콘솔에서 Oracle 로그 파일 목록을 표시합니다. trace/ORCL_spreport_1_2.lst 추적 파일은 동그라미로 표시됩니다.\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/statspack1.png)

   보고서를 생성하는 동안 오류가 발생하면 DB 엔진은 보고서와 동일한 명명 규칙을 사용하지만, `.err`이라는 확장명을 지정합니다. 예를 들어, Statspack 스냅샷 1과 7을 사용하여 보고서를 생성하는 동안 오류가 발생한 경우 보고서 파일의 이름은 `ORCL_spreport_1_7.err`이 됩니다. 표준 스냅샷 보고서와 동일한 기법을 사용하여 오류 보고서를 다운로드할 수 있습니다.

## Statspack 스냅샷 제거
<a name="Appendix.Oracle.Options.Statspack.removing-files"></a>

여러 Oracle Statspack 스냅샷을 제거하려면 다음 명령을 사용합니다.

```
exec statspack.purge(begin snap, end snap); 
```

# Oracle 시간대
<a name="Appendix.Oracle.Options.Timezone"></a>

Oracle DB 인스턴스에서 사용하는 시스템 시간대를 변경하려면 시간대 옵션을 사용합니다. 예를 들면 온프레미스 환경 또는 기존 애플리케이션과 시간을 호환하기 위해 DB 인스턴스의 시간대를 변경할 수 있습니다. 시간대 옵션은 호스트 레벨에서 시간대를 변경합니다. 시간대를 변경하면 `SYSDATE` 및 `SYSTIMESTAMP`를 비롯한 모든 날짜 열과 값이 영향을 받습니다.

시간대 옵션은 `rdsadmin_util.alter_db_time_zone` 명령과 다릅니다. `alter_db_time_zone` 명령은 특정 데이터 유형의 시간대만 변경합니다. 시간대 옵션은 모든 날짜 열과 값의 시간대를 변경합니다. 에 대한 자세한 내용은 `alter_db_time_zone` 단원을 참조하세요.[데이터베이스 시간대 설정](Appendix.Oracle.CommonDBATasks.TimeZoneSupport.md). 업그레이드 고려 사항에 대한 자세한 내용은 [시간대 고려 사항](USER_UpgradeDBInstance.Oracle.OGPG.md#USER_UpgradeDBInstance.Oracle.OGPG.DST) 단원을 참조하십시오.

## 표준 시간대 설정에 대한 제한 사항
<a name="Appendix.Oracle.Options.Timezone.Restrictions"></a>

시간대 옵션은 영구적이고 지속적인 옵션입니다. 따라서 다음을 수행할 수 없습니다.
+ 옵션을 추가한 후에는 옵션 그룹에서 표준 시간대 옵션을 제거합니다.
+ 그룹을 추가한 후에는 DB 인스턴스에서 이 옵션 그룹을 제거합니다.
+ 옵션의 시간대 설정을 다른 시간대로 수정합니다.

## 표준 시간대 설정을 위한 권장 사항
<a name="Appendix.Oracle.Options.Timezone.PreReqs"></a>

시간대 옵션을 프로덕션 데이터베이스에 추가하기 전에 다음을 수행하는 것이 좋습니다.
+ DB 인스턴스의 스냅샷을 만듭니다. 실수로 표준 시간대를 잘못 설정한 경우 DB 인스턴스를 이전 표준 시간대 설정으로 복구해야 합니다. 자세한 내용은 [Amazon RDS의 단일 AZ DB 인스턴스에 대한 DB 스냅샷 생성](USER_CreateSnapshot.md) 섹션을 참조하세요.
+ 테스트 DB 인스턴스에 시간대 옵션을 추가합니다. 시간대 옵션을 추가하면 시스템 날짜를 이용해 날짜나 시간을 추가하는 테이블에 문제가 발생할 수 있습니다. 테스트 인스턴스에서 데이터와 애플리케이션을 분석하는 것이 좋습니다. 이렇게 하면 표준 시간대 변경이 프로덕션 인스턴스에 미치는 영향을 평가할 수 있습니다.

DB 인스턴스가 기본 옵션 그룹을 사용한다면 다음 단계를 따르세요.

1. DB 인스턴스의 스냅샷을 만듭니다.

1. DB 인스턴스에 표준 시간대 옵션을 추가합니다.

현재 DB 인스턴스가 기본이 아닌 옵션 그룹을 사용한다면 다음 단계를 따르세요.

1. DB 인스턴스의 스냅샷을 만듭니다.

1. 새 옵션 그룹을 생성합니다.

1. 기존 옵션 그룹과 현재 연결되어 있는 다른 모든 옵션과 함께 시간대 옵션을 여기에 추가합니다.

   이렇게 하면 시간대 옵션을 활성화하는 동안 기존 옵션이 제거되는 것을 방지할 수 있습니다.

1. 옵션 그룹을 DB 인스턴스에 추가합니다.

## 시간대 옵션 설정
<a name="Appendix.Oracle.Options.Timezone.Options"></a>

Amazon RDS는 시간대 옵션에 대해 다음 설정을 지원합니다.


****  

| 옵션 설정 | 유효한 값 | 설명 | 
| --- | --- | --- | 
| `TIME_ZONE` |  사용 가능한 시간대 중 하나입니다. 전체 목록은 [사용 가능한 시간대](#Appendix.Oracle.Options.Timezone.Zones) 단원을 참조하십시오.  |  DB 인스턴스에 대한 새 시간대를 선택합니다.  | 

## 시간대 옵션 추가
<a name="Appendix.Oracle.Options.Timezone.Add"></a>

DB 인스턴스에 표준 시간대 옵션을 추가하려면 다음 단계를 완료하세요.

1. (권장) DB 인스턴스의 스냅샷을 만듭니다.

1. 다음 태스크 중 하나를 수행합니다.
   + 처음부터 새 옵션 그룹을 만듭니다. 자세한 내용은 [옵션 그룹 생성](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Create) 섹션을 참조하세요.
   + AWS CLI 또는 API를 사용하여 기존 옵션 그룹을 복사합니다. 자세한 내용은 [옵션 그룹 생성](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Copy) 섹션을 참조하세요.
   + 기본값이 아닌 기존 옵션 그룹을 재사용합니다. 가장 좋은 방법은 현재 DB 인스턴스나 스냅샷과 연결되어 있지 않은 옵션 그룹을 사용하는 것입니다.

1. 이전 단계의 옵션 그룹에 새 옵션을 추가합니다.

1. 현재 DB 인스턴스와 연결된 옵션 그룹에 활성화된 옵션이 있는 경우 이러한 옵션을 새 옵션 그룹에 추가합니다. 이 전략은 새 옵션을 활성화하는 동안 기존 옵션이 제거되는 것을 방지합니다.

1. 새 옵션 그룹을 DB 인스턴스에 추가합니다.

시간대 옵션을 추가하는 경우 DB 인스턴스를 자동으로 다시 시작하는 동안 인스턴스가 잠시 중단됩니다.

### 콘솔
<a name="Appendix.Oracle.Options.Timezone.Console"></a>

**시간대 옵션을 옵션 그룹에 추가하고 DB 인스턴스와 연결하는 방법**

1. RDS 콘솔에서 **옵션 그룹**을 선택합니다.

1. 옵션을 추가할 옵션 그룹의 이름을 선택합니다.

1. **옵션 추가**를 선택합니다.

1. **옵션 이름**에서 **표준 시간대**를 선택한 다음 옵션 설정을 구성합니다.

1. 옵션 그룹을 새 DB 인스턴스 또는 기존 DB 인스턴스와 연결합니다.
   + 새 DB 인스턴스의 경우, 인스턴스를 시작할 때 옵션 그룹을 적용하십시오. 자세한 내용은 [Amazon RDS DB 인스턴스 생성](USER_CreateDBInstance.md) 섹션을 참조하세요.
   + 기존 DB 인스턴스의 경우, 해당 인스턴스를 수정하고 새 옵션 그룹을 연결하여 옵션 그룹을 적용하십시오. 기존 DB 인스턴스에 새 옵션을 추가하는 경우 DB 인스턴스를 자동으로 다시 시작하는 동안 인스턴스가 잠시 중단됩니다. 자세한 내용은 [Amazon RDS DB 인스턴스 수정](Overview.DBInstance.Modifying.md) 섹션을 참조하세요.

### AWS CLI
<a name="Appendix.Oracle.Options.Timezone.CLI"></a>

다음 예에서는 AWS CLI [add-option-to-option-group](https://docs.aws.amazon.com/cli/latest/reference/rds/add-option-to-option-group.html) 명령을 사용하여 `Timezone` 옵션 및 `TIME_ZONE` 옵션 설정을 `myoptiongroup`이라는 옵션 그룹에 추가합니다. 표준 시간대는 `Africa/Cairo`로 설정되어 있습니다.

대상 LinuxmacOS, 또는Unix:

```
aws rds add-option-to-option-group \
    --option-group-name "myoptiongroup" \
    --options "OptionName=Timezone,OptionSettings=[{Name=TIME_ZONE,Value=Africa/Cairo}]" \
    --apply-immediately
```

Windows의 경우:

```
aws rds add-option-to-option-group ^
    --option-group-name "myoptiongroup" ^
    --options "OptionName=Timezone,OptionSettings=[{Name=TIME_ZONE,Value=Africa/Cairo}]" ^
    --apply-immediately
```

## 시간대 설정 수정
<a name="Appendix.Oracle.Options.Timezone.ModifySettings"></a>

시간대 옵션은 영구적이고 지속적인 옵션입니다. 추가한 후에는 옵션 그룹에서 이 옵션을 제거할 수 없습니다. 추가한 후에는 DB 인스턴스에서 옵션 그룹을 제거할 수 없습니다. 옵션의 시간대 설정을 다른 시간대로 수정할 수 없습니다. 시간대가 잘못 설정된 경우, 시간대 옵션을 추가하기 전에 DB 인스턴스의 스냅샷을 복구합니다.

## 시간대 옵션 제거
<a name="Appendix.Oracle.Options.Timezone.Remove"></a>

시간대 옵션은 영구적이고 지속적인 옵션입니다. 추가한 후에는 옵션 그룹에서 이 옵션을 제거할 수 없습니다. 추가한 후에는 DB 인스턴스에서 옵션 그룹을 제거할 수 없습니다. 시간대 옵션을 제거하려면, 시간대 옵션을 추가하기 전에 DB 인스턴스의 스냅샷을 복구합니다.

## 사용 가능한 시간대
<a name="Appendix.Oracle.Options.Timezone.Zones"></a>

시간대 옵션에 사용할 수 있는 값은 다음과 같습니다.


****  

| 영역 | 시간대 | 
| --- | --- | 
|  아프리카  |  Africa/Cairo, Africa/Casablanca, Africa/Harare, Africa/Lagos, Africa/Luanda, Africa/Monrovia, Africa/Nairobi, Africa/Tripoli, Africa/Windhoek   | 
|  아메리카  |  America/Araguaina, America/Argentina/Buenos\$1Aires, America/Asuncion, America/Bogota, America/Caracas, America/Chicago, America/Chihuahua, America/Cuiaba, America/Denver, America/Detroit, America/Fortaleza, America/Godthab, America/Guatemala, America/Halifax, America/Lima, America/Los\$1Angeles, America/Manaus, America/Matamoros, America/Mexico\$1City, America/Monterrey, America/Montevideo, America/New\$1York, America/Phoenix, America/Santiago, America/Sao\$1Paulo, America/Tijuana, America/Toronto   | 
|  아시아  |  Asia/Amman, Asia/Ashgabat, Asia/Baghdad, Asia/Baku, Asia/Bangkok, Asia/Beirut, Asia/Calcutta, Asia/Damascus, Asia/Dhaka, Asia/Hong\$1Kong, Asia/Irkutsk, Asia/Jakarta, Asia/Jerusalem, Asia/Kabul, Asia/Karachi, Asia/Kathmandu, Asia/Kolkata, Asia/Krasnoyarsk, Asia/Magadan, Asia/Manila, Asia/Muscat, Asia/Novosibirsk, Asia/Rangoon, Asia/Riyadh, Asia/Seoul, Asia/Shanghai, Asia/Singapore, Asia/Taipei, Asia/Tehran, Asia/Tokyo, Asia/Ulaanbaatar, Asia/Vladivostok, Asia/Yakutsk, Asia/Yerevan   | 
|  대서양  |  Atlantic/Azores, Atlantic/Cape\$1Verde   | 
|  호주  |  Australia/Adelaide, Australia/Brisbane, Australia/Darwin, Australia/Eucla, Australia/Hobart, Australia/Lord\$1Howe, Australia/Perth, Australia/Sydney   | 
|  브라질  |  Brazil/DeNoronha, Brazil/East   | 
|  캐나다  |  Canada/Newfoundland, Canada/Saskatchewan   | 
|  기타  |  Etc/GMT-3  | 
|  유럽  |  Europe/Amsterdam, Europe/Athens, Europe/Berlin, Europe/Dublin, Europe/Helsinki, Europe/Kaliningrad, Europe/London, Europe/Madrid, Europe/Moscow, Europe/Paris, Europe/Prague, Europe/Rome, Europe/Sarajevo   | 
|  태평양  |  Pacific/Apia, Pacific/Auckland, Pacific/Chatham, Pacific/Fiji, Pacific/Guam, Pacific/Honolulu, Pacific/Kiritimati, Pacific/Marquesas, Pacific/Samoa, Pacific/Tongatapu, Pacific/Wake   | 
|  US  |  US/Alaska, US/Central, US/East-Indiana, US/Eastern, US/Pacific   | 
|  UTC  |  UTC  | 

# Oracle 시간대 파일 자동 업그레이드
<a name="Appendix.Oracle.Options.Timezone-file-autoupgrade"></a>

`TIMEZONE_FILE_AUTOUPGRADE` 옵션을 사용하면 현재 시간대 파일을 RDS for Oracle DB 인스턴스의 최신 버전으로 업그레이드할 수 있습니다.

**Topics**
+ [Oracle 시간대 파일 개요](Appendix.Oracle.Options.Timezone-file-autoupgrade.tz-overview.md)
+ [시간대 파일 업데이트 전략](Appendix.Oracle.Options.Timezone-file-autoupgrade.strategies.md)
+ [시간대 파일 업데이트 중 가동 중지 시간](Appendix.Oracle.Options.Timezone-file-autoupgrade.considerations.md)
+ [시간대 파일 업데이트 준비](Appendix.Oracle.Options.Timezone-file-autoupgrade.preparing.md)
+ [시간대 파일 자동 업그레이드 옵션 추가](Appendix.Oracle.Options.Timezone-file-autoupgrade.adding.md)
+ [시간대 파일을 업데이트 한 후 데이터 확인](Appendix.Oracle.Options.Timezone-file-autoupgrade.checking.md)

# Oracle 시간대 파일 개요
<a name="Appendix.Oracle.Options.Timezone-file-autoupgrade.tz-overview"></a>

Oracle 데이터베이스 **시간대 파일은 다음 정보를 저장합니다.
+ 협정 세계표준시(UTC)의 오프셋
+ 일광 절약 시간(DST) 전환 시간
+ 표준 시간 및 DST의 약어

Oracle Database는 여러 버전의 시간대 파일을 제공합니다. 온프레미스 환경에서 Oracle 데이터베이스를 만들 때 시간대 파일 버전을 선택합니다. 자세한 내용은 *Oracle Database Globalization Support Guide*의 [Choosing a Time Zone File](https://docs.oracle.com/en/database/oracle/oracle-database/19/nlspg/datetime-data-types-and-time-zone-support.html#GUID-805AB986-DE12-4FEA-AF56-5AABCD2132DF)(시간대 파일 선택)을 참조하세요.

DST에 대한 규칙이 변경되면 Oracle은 새 표준 시간대 파일을 게시합니다. Oracle은 분기별 Release Updates(RUs) 및 Release Update Revisions(RURs) 일정과 별도로 이러한 새 표준 시간대 파일을 릴리스합니다. 시간대 파일은 데이터베이스 호스트의 `$ORACLE_HOME/oracore/zoneinfo/` 디렉터리에 있습니다. 시간대 파일 이름은 DSTv35와 같이 DSTv*version* 형식을 사용합니다.

## 시간대 파일이 데이터 전송에 미치는 영향
<a name="Appendix.Oracle.Options.Timezone-file-autoupgrade.data-transfer"></a>

Oracle Database에서 `TIMESTAMP WITH TIME ZONE` 데이터 형식은 타임스탬프 및 시간대 데이터를 저장합니다. `TIMESTAMP WITH TIME ZONE` 데이터 형식의 데이터는 연결된 시간대 파일 버전의 규칙을 사용합니다. 따라서 표준 시간대 파일을 업데이트하면 기존 `TIMESTAMP WITH TIME ZONE` 데이터가 영향을 받습니다.

다른 버전의 표준 시간대 파일을 사용하는 데이터베이스 간에 데이터를 전송할 때 문제가 발생할 수 있습니다. 예를 들어, 대상 데이터베이스보다 높은 시간대 파일 버전을 사용하는 소스 데이터베이스에서 데이터를 가져오려고 하면 데이터베이스에 `ORA-39405` 오류가 발생합니다. 이전에는 다음 방법 중 하나를 사용하여 이 오류를 해결해야 했습니다.
+ 원하는 시간대 파일을 사용하여 RDS for Oracle DB 인스턴스를 생성하고 소스 데이터베이스에서 데이터를 내보낸 다음 새 데이터베이스로 가져옵니다.
+ AWS DMS 또는 논리적 복제를 사용하여 데이터를 마이그레이션합니다.

## TIZONE\$1파일\$1AUTOUPGRADE 옵션을 사용한 자동 업데이트
<a name="Appendix.Oracle.Options.Timezone-file-autoupgrade.option-overview"></a>

RDS for Oracle DB 인스턴스에 연결된 옵션 그룹에 `TIMEZONE_FILE_AUTOUPGRADE` 옵션이 포함되어 있으면 RDS가 시간대 파일을 자동으로 업데이트합니다. Oracle 데이터베이스에서 동일한 시간대 파일 버전을 사용하도록 하면 서로 다른 환경 간에 데이터를 이동할 때 시간이 많이 걸리는 수동 기술을 사용하지 않아도 됩니다. `TIMEZONE_FILE_AUTOUPGRADE` 옵션에서는 컨테이너 데이터베이스(CDB)와 비 CDB가 모두 지원됩니다.

`TIMEZONE_FILE_AUTOUPGRADE` 옵션을 추가할지 또는 유지 관리 기간에 추가할지 또는 유지 관리 기간에 추가할지 선택할 수 있습니다. DB 인스턴스에서 새 옵션을 적용한 후 RDS는 최신 DSTv*version* 파일을 설치할 수 있는지 확인합니다. 대상 DSTv *버전은* 다음에 따라 달라집니다.
+ DB 인스턴스가 현재 실행 중인 마이너 엔진 버전
+ DB 인스턴스를 업그레이드하려는 마이너 엔진 버전

예를 들어, 현재 시간대 파일 버전은 DSTv33일 수 있습니다. RDS가 옵션 그룹에 업데이트를 적용할 때, DB 인스턴스 파일 시스템에서 현재 DSTv34를 사용 가능하다고 판단할 수 있습니다. 그러면 RDS가 표준 시간대 파일을 DSTv34로 자동 업데이트합니다.

지원되는 RDS 릴리스 업데이트에서 사용 가능한 DST 버전을 찾으려면 [Amazon Relational Database Service(Amazon RDS) for Oracle 릴리스 정보](https://docs.aws.amazon.com/AmazonRDS/latest/OracleReleaseNotes/Welcome.html)의 패치를 살펴보세요. 예를 들어 [버전 19.0.0.0.ru-2022-10.rur-2022-10.r1](https://docs.aws.amazon.com/AmazonRDS/latest/OracleReleaseNotes/oracle-version-19-0.html#oracle-version-RU-RUR.19.0.0.0.ru-2022-10.rur-2022-10.r1)은 패치 34533061: RDBMS - DSTV39 UPDATE - TZDATA2022C를 나열합니다.

# 시간대 파일 업데이트 전략
<a name="Appendix.Oracle.Options.Timezone-file-autoupgrade.strategies"></a>

DB 엔진 업그레이드와 옵션 그룹에 `TIMEZONE_FILE_AUTOUPGRADE` 옵션을 추가하는 작업은 별개입니다. `TIMEZONE_FILE_AUTOUPGRADE` 옵션을 추가하면 더 최신 파일을 사용할 수 있는 경우 시간대 파일의 업데이트가 시작됩니다. 다음 명령(관련 옵션만 표시됨)을 즉시 또는 다음 유지 관리 기간에 실행합니다.
+ 다음 RDS CLI 명령을 사용해서만 DB 엔진을 업그레이드합니다.

  ```
  modify-db-instance --engine-version name ...
  ```
+ 다음 CLI 명령만 사용하여 `TIMEZONE_FILE_AUTOUPGRADE` 옵션을 추가합니다.

  ```
  add-option-to-option-group --option-group-name name --options OptionName=TIMEZONE_FILE_AUTOUPGRADE ...
  ```
+ 다음 CLI 명령을 사용하여 DB 엔진을 업그레이드하고 인스턴스에 새 옵션 그룹을 추가합니다.

  ```
  modify-db-instance --engine-version name --option-group-name name ...
  ```

업데이트 전략은 데이터베이스와 시간대 파일을 함께 업그레이드할지 아니면 이러한 작업 중 하나만 수행할지 결정합니다. 옵션 그룹을 업데이트한 다음 별도의 API 작업으로 DB 엔진을 업그레이드하는 경우 DB 엔진을 업그레이드할 때 시간대 파일 업데이트가 현재 진행 중일 수 있다는 점에 유의하세요.

이 섹션의 예에서는 다음과 같이 가정합니다.
+ `TIMEZONE_FILE_AUTOUPGRADE`를 DB 인스턴스와 현재 연결되어 있는 옵션 그룹에 아직 추가하지 않았습니다.
+ DB 인스턴스가 데이터베이스 버전 19.0.0.0.ru-2019-07.rur-2019-07.r1 및 표준 시간대 파일 DSTv33을 사용합니다.
+ DB 인스턴스 파일 시스템에 DSTv34 파일이 포함되어 있습니다.
+ 릴리스 업데이트 19.0.0.0.ru-2022-10.rur-2022-10.r1에 DSTv35가 포함되어 있습니다.

다음 전략을 사용하여 시간대 파일을 업데이트할 수 있습니다.

**Topics**
+ [엔진을 업그레이드하지 않고 시간대 파일 업데이트](#Appendix.Oracle.Options.Timezone-file-autoupgrade.strategies.no-upgrade)
+ [시간대 파일 및 DB 엔진 버전 업그레이드](#Appendix.Oracle.Options.Timezone-file-autoupgrade.strategies.upgrade)
+ [시간대 파일 업데이트 없이 DB 엔진 버전 업그레이드](#Appendix.Oracle.Options.Timezone-file-autoupgrade.strategies.upgrade-only)

## 엔진을 업그레이드하지 않고 시간대 파일 업데이트
<a name="Appendix.Oracle.Options.Timezone-file-autoupgrade.strategies.no-upgrade"></a>

이 시나리오에서 데이터베이스는 DSTv33을 사용하고 있지만, DB 인스턴스 파일 시스템에서 DSTv34를 사용할 수 있습니다. DB 인스턴스에서 사용하는 표준 시간대 파일을 DSTv33에서 DSTv34로 업데이트하고 싶지만 엔진은 새 마이너 버전(DSTv35 포함됨)으로 업그레이드하지 않으려고 합니다.

`add-option-to-option-group` 명령으로 `TIMEZONE_FILE_AUTOUPGRADE`를 DB 인스턴스가 사용하는 옵션 그룹에 추가합니다. 옵션을 즉시 추가할지 아니면 유지 관리 기간으로 연기할지 지정합니다. RDS는 `TIMEZONE_FILE_AUTOUPGRADE` 옵션을 적용한 후 다음을 수행합니다.

1. 새 DST 버전이 있는지 확인합니다.

1. 파일 시스템에서 DSTv34를 사용할 수 있는지 확인합니다.

1. 시간대 파일을 즉시 업데이트합니다.

## 시간대 파일 및 DB 엔진 버전 업그레이드
<a name="Appendix.Oracle.Options.Timezone-file-autoupgrade.strategies.upgrade"></a>

이 시나리오에서 데이터베이스는 DSTv33을 사용하고 있지만, DB 인스턴스 파일 시스템에서 DSTv34를 사용할 수 있습니다. 엔진 업그레이드 중 DB 엔진을 마이너 버전 19.0.0.0.ru-2022-10.rur-2022-10.r1(DSTv35 포함됨)로 업그레이드하고, 표준 시간대 파일을 DSTv35로 업데이트하려고 합니다. 따라서 목표는 DSTv34를 건너뛰고 표준 시간대 파일을 DSTv35로 직접 업데이트하는 것입니다.

엔진과 시간대 파일을 함께 업그레이드하려면 `--option-group-name` 및 `--engine-version` 옵션과 함께 `modify-db-instance`를 실행합니다. 명령을 즉시 실행하거나 유지 관리 기간으로 연기할 수 있습니다. `In --option-group-name`에 `TIMEZONE_FILE_AUTOUPGRADE` 옵션이 포함된 옵션 그룹을 지정하세요. 예제:

```
aws rds modify-db-instance 
    --db-instance-identifier my-instance \
    --engine-version new-version \
    ----option-group-name og-with-timezone-file-autoupgrade \    
    --apply-immediately
```

RDS는 엔진을 19.0.0.0.ru-2022-10.rur-2022-10.r1으로 업그레이드하기 시작합니다. `TIMEZONE_FILE_AUTOUPGRADE` 옵션이 적용된 후 RDS는 새 DST 버전을 확인하고, 19.0.0.0.ru-2022-10.rur-2022-10.r1에서 DSTv35를 사용할 수 있는지 확인한 후 즉시 DSTv35로 업데이트를 시작합니다.

엔진을 즉시 업그레이드한 다음 시간대 파일을 업그레이드하려면 작업을 순서대로 수행합니다.

1. 다음 CLI 명령을 사용해서만 DB 엔진을 업그레이드합니다.

   ```
   aws rds modify-db-instance \
       --db-instance-identifier my-instance \
       --engine-version new-version \
       --apply-immediately
   ```

1. 다음 CLI 명령을 사용하여 인스턴스에 연결된 옵션 그룹에 `TIMEZONE_FILE_AUTOUPGRADE` 옵션을 추가합니다.

   ```
   aws rds add-option-to-option-group \
       --option-group-name og-in-use-by-your-instance \
       --options OptionName=TIMEZONE_FILE_AUTOUPGRADE \
       --apply-immediately
   ```

## 시간대 파일 업데이트 없이 DB 엔진 버전 업그레이드
<a name="Appendix.Oracle.Options.Timezone-file-autoupgrade.strategies.upgrade-only"></a>

이 시나리오에서 데이터베이스는 DSTv33을 사용하고 있지만, DB 인스턴스 파일 시스템에서 DSTv34를 사용할 수 있습니다. DB 엔진을 버전 19.0.0.0.ru-2022-10.rur-2022-10.r1(DSTv35 포함됨)로 업그레이드하되, 표준 시간대 파일 DSTv33은 유지하려고 합니다. 다음과 같은 이유로 이 전략을 선택할 수 있습니다.
+ 데이터가 `TIMESTAMP WITH TIME ZONE` 데이터 형식을 사용하지 않습니다.
+ 데이터가 `TIMESTAMP WITH TIME ZONE` 데이터 형식을 사용하지만 시간대 변경의 영향을 받지 않습니다.
+ 추가 가동 중지 시간을 허용할 수 없기 때문에 시간대 파일 업데이트를 연기하려고합니다.

전략은 다음 가능성 중 어느 것에 해당하는지에 따라 달라집니다.
+ DB 인스턴스가 `TIMEZONE_FILE_AUTOUPGRADE`를 포함하는 옵션 그룹과 연결되어 있지 않습니다. RDS가 시간대 파일을 업데이트하지 않도록 `modify-db-instance` 명령으로 새 옵션 그룹을 지정하지 마세요.
+ DB 인스턴스가 현재 `TIMEZONE_FILE_AUTOUPGRADE`를 포함하는 옵션 그룹과 연결되어 있습니다. 단일 `modify-db-instance` 명령 내에서 DB 인스턴스를 `TIMEZONE_FILE_AUTOUPGRADE`를 포함하지 않는 옵션 그룹에 연결하고 DB 엔진을 19.0.0.0.ru-2022-10.rur-2022-10.r1로 업그레이드합니다.

# 시간대 파일 업데이트 중 가동 중지 시간
<a name="Appendix.Oracle.Options.Timezone-file-autoupgrade.considerations"></a>

RDS가 시간대 파일을 업데이트하면 `TIMESTAMP WITH TIME ZONE`을 사용하는 기존 데이터가 변경될 수 있습니다. 이 경우 주요 고려 사항은 가동 중지 시간입니다.

**주의**  
`TIMEZONE_FILE_AUTOUPGRADE` 옵션을 추가하면 엔진 업그레이드의 가동 중지 시간이 길어질 수 있습니다. 대규모 데이터베이스의 시간대 데이터를 업데이트하는 데에는 몇 시간 또는 며칠이 걸릴 수 있습니다.

시간대 파일 업데이트에 소요되는 시간은 다음과 같은 요인에 따라 달라집니다.
+ 데이터베이스의 `TIMESTAMP WITH TIME ZONE` 데이터 양
+ DB 인스턴스 구성
+ DB 인스턴스 클래스
+ 스토리지 구성
+ 데이터베이스 구성
+ 데이터베이스 파라미터 설정

다음을 수행할 때 추가 가동 중지 시간이 발생할 수 있습니다.
+ DB 인스턴스가 오래된 시간대 파일을 사용할 때 옵션 그룹에 옵션 추가
+ 새 엔진 버전에 시간대 파일의 새 버전이 포함되어 있을 때 Oracle 데이터베이스 엔진 업그레이드

**참고**  
시간대 파일을 업데이트하는 동안 RDS for Oracle는 `PURGE DBA_RECYCLEBIN`을 호출합니다.

# 시간대 파일 업데이트 준비
<a name="Appendix.Oracle.Options.Timezone-file-autoupgrade.preparing"></a>

시간대 파일 업그레이드에는 준비와 업그레이드라는 두 가지 단계가 있습니다. 필수는 아니지만 준비 단계를 수행하는 것이 좋습니다. 이 단계에서는 PL/SQL 프로시저 `DBMS_DST.FIND_AFFECTED_TABLES`를 실행하여 영향을 받게 될 데이터를 찾습니다. 준비 기간에 대한 자세한 내용은 Oracle 데이터베이스 설명서에서 [시간대 데이터를 사용하여 시간대 파일 및 타임스탬프 업그레이드](https://docs.oracle.com/en/database/oracle/oracle-database/19/nlspg/datetime-data-types-and-time-zone-support.html#GUID-B0ACDB2E-4B49-4EB4-B4CC-9260DAE1567A)를 참조하세요.

**시간대 파일 업데이트를 준비하려면**

1. SQL 클라이언트를 사용하여 Oracle 데이터베이스에 연결합니다.

1. 사용된 현재 시간대 파일 버전을 확인합니다.

   ```
   SELECT * FROM V$TIMEZONE_FILE;
   ```

1. DB 인스턴스에 사용 가능한 최신 시간대 파일 버전을 확인합니다.

   ```
   SELECT DBMS_DST.GET_LATEST_TIMEZONE_VERSION FROM DUAL;
   ```

1. `TIMESTAMP WITH LOCAL TIME ZONE` 또는 `TIMESTAMP WITH TIME ZONE` 유형의 열이 있는 테이블의 총 크기를 결정합니다.

   ```
   SELECT SUM(BYTES)/1024/1024/1024 "Total_size_w_TSTZ_columns_GB"
   FROM   DBA_SEGMENTS
   WHERE  SEGMENT_TYPE LIKE 'TABLE%'
   AND    (OWNER, SEGMENT_NAME) IN
            (SELECT OWNER, TABLE_NAME
             FROM   DBA_TAB_COLUMNS
             WHERE  DATA_TYPE LIKE 'TIMESTAMP%TIME ZONE');
   ```

1. `TIMESTAMP WITH LOCAL TIME ZONE` 또는 `TIMESTAMP WITH TIME ZONE` 유형의 열이 있는 세그먼트의 이름과 크기를 결정합니다.

   ```
   SELECT OWNER, SEGMENT_NAME, SUM(BYTES)/1024/1024/1024 "SEGMENT_SIZE_W_TSTZ_COLUMNS_GB"
   FROM   DBA_SEGMENTS
   WHERE  SEGMENT_TYPE LIKE 'TABLE%'
   AND    (OWNER, SEGMENT_NAME) IN
            (SELECT OWNER, TABLE_NAME
             FROM   DBA_TAB_COLUMNS
             WHERE  DATA_TYPE LIKE 'TIMESTAMP%TIME ZONE')
   GROUP BY OWNER, SEGMENT_NAME;
   ```

1. 준비 단계를 실행합니다.
   + `DBMS_DST.CREATE_AFFECTED_TABLE` 프로시저는 영향을 받는 데이터를 저장할 테이블을 생성합니다. 이 테이블의 이름을 `DBMS_DST.FIND_AFFECTED_TABLES` 프로시저에 전달합니다. 자세한 내용은 Oracle 데이터베이스 설명서에서 [CREATE\$1AFFECTED\$1TABLE 프로시저](https://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/DBMS_DST.html#GUID-C53BAABA-914A-404C-9CD5-823257BE0B00)를 참조하세요.
   + 이 프로시저 `CREATE_ERROR_TABLE`은 오류를 기록할 테이블을 생성합니다. 자세한 내용은 Oracle 데이터베이스 설명서에서 [CREATE\$1ERROR\$1TABLE 프로시저](https://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/DBMS_DST.html#GUID-6A7EA024-B02D-4486-B1D6-EF6ABF5DE507)를 참조하세요.

   다음 예에서는 영향을 받는 데이터 및 오류 테이블을 만들고 영향을 받는 테이블을 모두 찾습니다.

   ```
   EXEC DBMS_DST.CREATE_ERROR_TABLE('my_error_table')
   EXEC DBMS_DST.CREATE_AFFECTED_TABLE('my_affected_table')
   
   EXEC DBMS_DST.BEGIN_PREPARE(new_version);
   EXEC DBMS_DST.FIND_AFFECTED_TABLES('my_affected_table', TRUE, 'my_error_table');
   EXEC DBMS_DST.END_PREPARE;
   
   SELECT * FROM my_affected_table;
   SELECT * FROM my_error_table;
   ```

1. 영향을 받는 테이블과 오류 테이블을 쿼리합니다.

   ```
   SELECT * FROM my_affected_table;
   SELECT * FROM my_error_table;
   ```

# 시간대 파일 자동 업그레이드 옵션 추가
<a name="Appendix.Oracle.Options.Timezone-file-autoupgrade.adding"></a>

옵션을 옵션 그룹에 추가하면 옵션 그룹은 다음 상태 중 하나가 됩니다.
+ 기존 옵션 그룹은 현재 하나 이상의 DB 인스턴스에 연결되어 있습니다. 옵션을 추가하면 이 옵션 그룹을 사용하는 모든 DB 인스턴스가 자동으로 다시 시작됩니다. 이로 인해 잠시 중단됩니다.
+ 기존 옵션 그룹은 DB 인스턴스에 연결되어 있지 않습니다. 옵션을 추가한 다음 기존 옵션 그룹을 기존 DB 인스턴스 또는 새 DB 인스턴스와 연결할 계획입니다.
+ 새 옵션 그룹을 생성하고 옵션을 추가합니다. 새 옵션 그룹을 기존 DB 인스턴스 또는 새 DB 인스턴스와 연결할 계획입니다.

## 콘솔
<a name="Appendix.Oracle.Options.Timezone-file-autoupgrade.console"></a>

**DB 인스턴스에 시간대 파일 자동 업그레이드 옵션을 추가하려면**

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)에서 Amazon RDS 콘솔을 엽니다.

1. 탐색 창에서 **옵션 그룹**을 선택합니다.

1. 사용할 옵션 그룹을 결정합니다. 새 옵션 그룹을 생성하거나 기존 옵션 그룹을 사용합니다. 기존 옵션 그룹을 사용하려면 다음 단계로 건너뛰십시오. 그렇지 않으면 다음 설정을 사용하여 사용자 지정 DB 옵션을 생성합니다.

   1. **Engine**(엔진)에서 DB 인스턴스에 대한 Oracle Database 에디션을 선택합니다.

   1. **메이저 엔진 버전**에서 DB 인스턴스의 버전을 선택합니다.

   자세한 내용은 [옵션 그룹 생성](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Create) 섹션을 참조하세요.

1. 수정하려는 옵션 그룹을 선택한 다음 **옵션 추가**를 선택합니다.

1. **옵션 추가** 창에서 다음과 같이 합니다.

   1. **TIMEZONE\$1FILE\$1AUTOUPGRADE**를 선택합니다.

   1. 옵션을 추가하는 즉시 연동된 모든 DB 인스턴스에서 옵션을 활성화하려면 **Apply Immediately**에서 **Yes**를 선택합니다. **No**(기본 설정)를 선택하면 다음 유지 관리 기간에 연동된 모든 DB 인스턴스에서 옵션이 활성화됩니다.

1. 원하는 대로 설정이 되었으면 **옵션 추가**를 선택합니다.

## AWS CLI
<a name="Appendix.Oracle.Options.Timezone-file-autoupgrade.CLI"></a>

다음 예에서는 AWS CLI [add-option-to-option-group](https://docs.aws.amazon.com/cli/latest/reference/rds/add-option-to-option-group.html) 명령을 사용하여 `TIMEZONE_FILE_AUTOUPGRADE` 옵션을 `myoptiongroup`이라는 옵션 그룹에 추가합니다.

대상 LinuxmacOS, 또는Unix:

```
aws rds add-option-to-option-group \
    --option-group-name "myoptiongroup" \
    --options "OptionName=TIMEZONE_FILE_AUTOUPGRADE" \
    --apply-immediately
```

Windows의 경우:

```
aws rds add-option-to-option-group ^
    --option-group-name "myoptiongroup" ^
    --options "OptionName=TIMEZONE_FILE_AUTOUPGRADE" ^
    --apply-immediately
```

# 시간대 파일을 업데이트 한 후 데이터 확인
<a name="Appendix.Oracle.Options.Timezone-file-autoupgrade.checking"></a>

시간대 파일을 업데이트한 후 데이터를 확인하는 것이 좋습니다. 준비 단계 동안 RDS for Oracle는 다음 테이블을 자동으로 생성합니다.
+ `rdsadmin.rds_dst_affected_tables` - 업데이트의 영향을 받는 데이터가 포함된 테이블을 나열합니다.
+ `rdsadmin.rds_dst_error_table` - 업데이트 중에 발생한 오류를 나열합니다.

이러한 테이블은 준비 기간에 생성하는 테이블과는 별개입니다. 업데이트 결과를 보려면 다음과 같이 테이블을 쿼리합니다.

```
SELECT * FROM rdsadmin.rds_dst_affected_tables;
SELECT * FROM rdsadmin.rds_dst_error_table;
```

영향을 받는 데이터 및 오류 테이블의 스키마에 대한 자세한 내용은 Oracle 설명서에서 [FIND\$1AFFECTED\$1TABLES Procedure](https://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/DBMS_DST.html#GUID-1F977505-671C-4D5B-8570-86956F136199)를 참조하세요.

# Oracle Transparent Data Encryption
<a name="Appendix.Oracle.Options.AdvSecurity"></a>

Amazon RDS는 Oracle Enterprise Edition에서 지원되는 Oracle Advanced Security 옵션의 한 가지 기능인 Oracle Transparent Data Encryption(TDE)을 지원합니다. 이 기능은 스토리지에 데이터를 쓰기 전에 자동으로 데이터를 암호화한 뒤에 데이터를 스토리지에서 읽을 때 다시 자동으로 해독합니다. 이 옵션은 기존 보유 라이선스 사용(BYOL) 모델에만 지원됩니다.

TDE는 제3자가 데이터 파일 및 백업을 가져올 경우 민감한 데이터를 암호화해야 하는 시나리오에서 유용합니다. TDE는 보안 관련 규정을 준수해야 하는 경우에도 유용합니다.

Oracle Database의 TDE에 대한 자세한 설명은 이 가이드의 범위를 벗어납니다. 자세한 내용은 다음 Oracle Database 리소스를 참조하세요.
+ Oracle Database 설명서의 [투명한 데이터 암호화 소개](https://docs.oracle.com/en/database/oracle/oracle-database/19/asoag/introduction-to-transparent-data-encryption.html#GUID-62AA9447-FDCD-4A4C-B563-32DE04D55952)
+ Oracle Database 설명서의 [Oracle 고급 보안](https://www.oracle.com/security/database-security/)
+ Oracle 백서의 [Oracle 고급 보안 투명한 데이터 암호화 모범 사례](https://www.oracle.com/br/a/tech/docs/technical-resources/twp-transparent-data-encryption-bestpractices.pdf)

RDS for Oracle과 TDE를 사용하는 방법에 대한 자세한 내용은 다음 블로그를 참조하세요.
+ [Amazon RDS의 Oracle Database 암호화 옵션](https://aws.amazon.com/blogs/apn/oracle-database-encryption-options-on-amazon-rds/)
+ [를 통해 가동 중지를 줄여 계정 간 TDE를 지원하는 Amazon RDS for Oracle DB 인스턴스 마이그레이션AWS DMS](https://aws.amazon.com/blogs/database/migrate-a-cross-account-tde-enabled-amazon-rds-for-oracle-db-instance-with-reduced-downtime-using-aws-dms/)

## TDE 암호화 모델
<a name="Appendix.Oracle.Options.AdvSecurity.Modes"></a>

Oracle Transparent Data Encryption은 TDE 테이블스페이스 암호화 및 TDE 열 암호화의 두 가지 모드를 지원합니다. TDE 테이블스페이스 암호화는 전체 애플리케이션 테이블을 암호화하는 데 사용됩니다. TDE 열 암호화는 중요 데이터를 포함하는 개별 데이터 요소를 암호화하는 데 사용됩니다. TDE 테이블스페이스 암호화와 열 암호화를 모두 사용하는 하이브리드 암호화 솔루션을 적용할 수도 있습니다.

**참고**  
Amazon RDS가 DB 인스턴스의 Oracle Wallet 및 TDE 마스터 키를 관리합니다. [`ALTER SYSTEM set encryption key`] 명령을 사용하여 암호화 키를 설정하지 않아도 됩니다.

`TDE` 옵션을 활성화한 후 다음 명령을 사용하여 Oracle Wallet의 상태를 확인할 수 있습니다.

```
SELECT * FROM v$encryption_wallet;
```

암호화된 테이블스페이스를 생성하려면 다음 명령을 사용합니다.

```
CREATE TABLESPACE encrypt_ts ENCRYPTION DEFAULT STORAGE (ENCRYPT);
```

암호화 알고리즘을 지정하려면 다음 명령을 사용하십시오.

```
CREATE TABLESPACE encrypt_ts ENCRYPTION USING 'AES256' DEFAULT STORAGE (ENCRYPT);
```

테이블스페이스 암호화에 대한 이전 문은 온프레미스 Oracle 데이터베이스에서 사용하는 것과 동일합니다.

## TDE 옵션에 대한 제한 사항
<a name="Appendix.Oracle.Options.Timezone.Restrictions"></a>

TDE 옵션은 영구적이고 지속적입니다. TDE 옵션이 활성화된 옵션 그룹에 DB 인스턴스를 연결한 후에는 다음 작업을 수행할 수 없습니다.
+ 현재 연결된 옵션 그룹에서 `TDE` 옵션을 비활성화합니다.
+ DB 인스턴스를 `TDE` 옵션이 포함되지 않은 다른 옵션 그룹에 연결합니다.
+ `TDE` 옵션을 사용하는 DB 스냅샷을 공유합니다. DB 스냅샷 공유에 대한 자세한 내용은 [Amazon RDS의 DB 스냅샷 공유](USER_ShareSnapshot.md) 단원을 참조하십시오.

지속 옵션 및 영구 옵션에 대한 자세한 내용은 [지속적이거나 영구적인 옵션](USER_WorkingWithOptionGroups.md#Overview.OptionGroups.Permanent) 섹션을 참조하세요.

## DB 인스턴스가 TDE를 사용하는지 여부 결정
<a name="Appendix.Oracle.Options.AdvSecurity.Querying"></a>

DB 인스턴스가 `TDE` 옵션을 활성화한 옵션 그룹과 연결되어 있는지 확인할 수 있습니다. DB 인스턴스와 연동되어 있는 옵션 그룹은 RDS 콘솔, [describe-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html) AWS CLI 명령 또는 API 작업 [DescribeDBInstances](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBInstances.html)를 사용하여 확인할 수 있습니다.

## TDE 옵션 추가
<a name="Appendix.Oracle.Options.AdvSecurity.Add"></a>

DB 인스턴스에 `TDE` 옵션을 추가하려면 다음 단계를 완료하세요.

1. (권장) DB 인스턴스의 스냅샷을 만듭니다.

1. 다음 태스크 중 하나를 수행합니다.
   + 처음부터 새 옵션 그룹을 만듭니다. 자세한 내용은 [옵션 그룹 생성](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Create) 섹션을 참조하세요.
   + AWS CLI 또는 API를 사용하여 기존 옵션 그룹을 복사합니다. 자세한 내용은 [옵션 그룹 생성](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Copy) 섹션을 참조하세요.
   + 기본값이 아닌 기존 옵션 그룹을 재사용합니다. 가장 좋은 방법은 현재 DB 인스턴스나 스냅샷과 연결되어 있지 않은 옵션 그룹을 사용하는 것입니다.

1. 이전 단계의 옵션 그룹에 새 옵션을 추가합니다.

1. 현재 DB 인스턴스와 연결된 옵션 그룹에 활성화된 옵션이 있는 경우 이러한 옵션을 새 옵션 그룹에 추가합니다. 이 전략은 새 옵션을 활성화하는 동안 기존 옵션이 제거되는 것을 방지합니다.

1. 새 옵션 그룹을 DB 인스턴스에 추가합니다.

### 콘솔
<a name="Appendix.Oracle.Options.TDE.Console"></a>

**TDE 옵션을 옵션 그룹에 추가하고 DB 인스턴스와 연결하는 방법**

1. RDS 콘솔에서 **옵션 그룹**을 선택합니다.

1. 옵션을 추가할 옵션 그룹의 이름을 선택합니다.

1. **옵션 추가**를 선택합니다.

1. **옵션 이름**에서 **TDE**를 선택한 다음 옵션 설정을 구성합니다.

1. **옵션 추가**를 선택합니다.
**중요**  
하나 이상의 DB 인스턴스에 현재 연결되어 있는 옵션 그룹에 **TDE** 옵션을 추가하면 모든 DB 인스턴스가 자동으로 다시 시작되는 동안 인스턴스가 잠시 중단됩니다.

   옵션 추가에 대한 자세한 내용은 [옵션 그룹에 옵션 추가](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.AddOption) 섹션을 참조하세요.

1. 옵션 그룹을 새 DB 인스턴스 또는 기존 DB 인스턴스와 연결합니다.
   + 새 DB 인스턴스의 경우, 인스턴스를 시작할 때 옵션 그룹을 적용하십시오. 자세한 내용은 [Amazon RDS DB 인스턴스 생성](USER_CreateDBInstance.md) 섹션을 참조하세요.
   + 기존 DB 인스턴스의 경우, 해당 인스턴스를 수정하고 새 옵션 그룹을 연결하여 옵션 그룹을 적용하십시오. DB 인스턴스는 이 작업의 일부로 다시 시작되지 않습니다. 자세한 내용은 [Amazon RDS DB 인스턴스 수정](Overview.DBInstance.Modifying.md) 섹션을 참조하세요.

### AWS CLI
<a name="Appendix.Oracle.Options.TDE.CLI"></a>

다음 예제에서는 AWS CLI [add-option-to-option-group](https://docs.aws.amazon.com/cli/latest/reference/rds/add-option-to-option-group.html) 명령을 사용하여 `TDE` 옵션을 `myoptiongroup`이라는 옵션 그룹에 추가합니다. 자세한 내용은 [시작하기: Flink 1.13.2](https://docs.aws.amazon.com/managed-flink/latest/java/earlier.html#getting-started-1-13)를 참조하세요.

대상 LinuxmacOS, 또는Unix:

```
aws rds add-option-to-option-group \
    --option-group-name "myoptiongroup" \
    --options "OptionName=TDE" \
    --apply-immediately
```

Windows의 경우:

```
aws rds add-option-to-option-group ^
    --option-group-name "myoptiongroup" ^
    --options "OptionName=TDE" ^
    --apply-immediately
```

## TDE 옵션이 포함되지 않은 DB 인스턴스로 데이터 복사
<a name="Appendix.Oracle.Options.AdvSecurity.Remove"></a>

TDE 옵션을 DB 인스턴스에서 제거하거나 TDE 옵션을 포함하지 않는 옵션 그룹과 연결할 수 없습니다. TDE 옵션이 포함되지 않은 인스턴스로 데이터를 마이그레이션하려면 다음 작업을 수행하세요.

1.  DB 인스턴스의 데이터를 복호화합니다.

1.  `TDE`가 활성화된 옵션 그룹과 연결되지 않은 새 DB 인스턴스로 데이터를 복사합니다.

1.  원본 DB 인스턴스를 삭제합니다.

새 인스턴스에는 이전 DB 인스턴스와 동일한 이름을 사용할 수 있습니다.

## Oracle Data Pump와 함께 TDE 사용 시 고려 사항
<a name="Appendix.Oracle.Options.AdvSecurity.Pump"></a>

Oracle Data Pump를 사용하여 암호화된 덤프 파일을 가져오거나 내보낼 수 있습니다. Amazon RDS는 Oracle Data Pump에 대한 암호 암호화 모드 `(ENCRYPTION_MODE=PASSWORD)`를 지원합니다. Amazon RDS는 Oracle Data Pump에 대해 투명 암호화 모드 `(ENCRYPTION_MODE=TRANSPARENT)`를 지원하지 않습니다. 자세한 내용은 [Oracle Data Pump를 사용한 가져오기](Oracle.Procedural.Importing.DataPump.md) 섹션을 참조하세요.

# Oracle UTL\$1MAIL
<a name="Oracle.Options.UTLMAIL"></a>

Amazon RDS는 UTL\$1MAIL 옵션 및 SMTP 서버 사용을 통해 Oracle UTL\$1MAIL을 지원합니다. UTL\$1MAIL 패키지를 사용하여 데이터베이스에서 직접 이메일을 전송할 수 있습니다. Amazon RDS는 다음 Oracle 버전에 대해 UTL\$1MAIL을 지원합니다.
+ Oracle Database 21c(21.0.0.0), 모든 버전
+ Oracle Database 19c(19.0.0.0), 모든 버전

다음은 UTL\$1MAIL을 사용할 때 적용되는 몇 가지 제한 사항입니다.
+ UTL\$1MAIL에서는 TLS(전송 계층 보안)를 지원하지 않으므로 이메일이 암호화되지 않습니다.

  사용자 지정 Oracle wallet을 생성하고 업로드하여 원격 SSL/TLS 리소스에 안전하게 연결하려면 [인증서 및 Oracle Wallet을 사용하여 UTL\$1HTTP 액세스 구성](Oracle.Concepts.ONA.md)의 지침을 따르십시오.

  wallet에 필요한 특정 인증서는 서비스별로 다릅니다. AWS 서비스의 경우 일반적으로 [Amazon Trust Services 리포지토리](https://www.amazontrust.com/repository/)에서 이 정보를 확인할 수 있습니다.
+ UTL\$1MAIL은 SMTP 서버를 통한 인증을 지원하지 않습니다.
+ 단일 첨부만 이메일로 보낼 수 있습니다.
+ 32K를 초과하는 첨부를 보낼 수 없습니다.
+ ASCII 및 EBCDIC(Extended Binary Coded Decimal Interchange Code) 문자 인코딩만 사용할 수 있습니다.
+ SMTP 포트(25)는 탄력적 네트워크 인터페이스 소유자의 정책에 따라 조절됩니다.

UTL\$1MAIL을 활성화하는 경우 DB 인스턴스의 마스터 사용자에게만 실행 권한이 부여됩니다. 필요한 경우, 마스터 사용자는 다른 사용자에게 UTL\$1MAIL을 사용할 수 있는 실행 권한을 부여할 수 있습니다.

**중요**  
UTL\$1MAIL 절차 사용을 추적하려면 Oracle의 기본 제공 감사 기능을 사용하는 것이 좋습니다.

## Oracle UTL\$1MAIL 필수 선행 조건
<a name="Oracle.Options.UTLMAIL.PreReqs"></a>

다음은 Oracle UTL\$1MAIL 사용을 위한 필수 선행 조건입니다.
+ 하나 이상의 SMTP 서버와 해당 IP 주소 또는 퍼블릭 또는 프라이빗 DNS(Domain Name Server) 이름. 사용자 지정 DNS 서버를 통해 확인되는 프라이빗 DNS 이름에 대한 자세한 내용은 [사용자 지정 DNS 서버 설정](Appendix.Oracle.CommonDBATasks.System.md#Appendix.Oracle.CommonDBATasks.CustomDNS) 단원을 참조하십시오.

## Oracle UTL\$1MAIL 옵션 추가
<a name="Oracle.Options.UTLMAIL.Add"></a>

Oracle UTL\$1MAIL 옵션을 DB 인스턴스에 추가하는 일반적인 프로세스는 다음과 같습니다.

1. 새 옵션 그룹을 생성하거나 기존 옵션 그룹을 복사 또는 수정합니다.

1. [] 옵션을 옵션 그룹에 추가합니다.

1. 옵션 그룹을 DB 인스턴스에 연동시킵니다.

UTL\$1MAIL 옵션을 추가하면 옵션 그룹이 활성화되고 UTL\$1MAIL이 활성화됩니다.

**DB 인스턴스에 UTL\$1MAIL 옵션을 추가하려면**

1. 사용할 옵션 그룹을 결정합니다. 새 옵션 그룹을 생성하거나 기존 옵션 그룹을 사용합니다. 기존 옵션 그룹을 사용하려면 다음 단계로 건너뛰십시오. 그렇지 않으면 다음 설정을 사용하여 사용자 지정 DB 옵션을 생성합니다.

   1. [**Engine**]에서 사용할 Oracle 버전을 선택합니다.

   1. **메이저 엔진 버전**에서 DB 인스턴스의 버전을 선택합니다.

   자세한 내용은 [옵션 그룹 생성](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Create) 섹션을 참조하세요.

1. [**UTL\$1MAIL**] 옵션을 옵션 그룹에 추가합니다. 옵션 추가에 대한 자세한 내용은 [옵션 그룹에 옵션 추가](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.AddOption) 섹션을 참조하세요.

1. 옵션 그룹을 새 DB 인스턴스 또는 기존 DB 인스턴스에 적용합니다: 
   + 새 DB 인스턴스의 경우, 인스턴스를 시작할 때 옵션 그룹을 적용합니다. 자세한 내용은 [Amazon RDS DB 인스턴스 생성](USER_CreateDBInstance.md) 섹션을 참조하세요.
   + 기존 DB 인스턴스의 경우, 해당 인스턴스를 수정하고 새 옵션 그룹을 연결하여 옵션 그룹을 적용합니다. 자세한 내용은 [Amazon RDS DB 인스턴스 수정](Overview.DBInstance.Modifying.md) 섹션을 참조하세요.

## Oracle UTL\$1MAIL 사용
<a name="Oracle.Options.UTLMAIL.Using"></a>

UTL\$1MAIL 옵션을 활성화한 후 사용하기 전에 SMTP 서버를 구성해야 합니다.

SMTP\$1OUT\$1SERVER 파라미터를 유효한 IP 주소 또는 퍼블릭 DNS 이름으로 설정하여 SMTP 서버를 구성합니다. SMTP\$1OUT\$1SERVER 파라미터에 대해 여러 서버 주소를 쉼표로 구분된 목록으로 지정할 수 있습니다. 첫 번째 서버를 사용할 수 없는 경우 UTL\$1MAIL에서는 다음 서버를 순서대로 시도합니다.

[DB 파라미터 그룹](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithParamGroups.html)을 사용하여 DB 인스턴스에 대한 기본 SMTP\$1OUT\$1SERVER를 설정할 수 있습니다. DB 인스턴스에서 데이터베이스에 대해 다음 코드를 실행하여 세션에 대한 SMTP\$1OUT\$1SERVER 파라미터를 설정할 수 있습니다.

```
1. ALTER SESSION SET smtp_out_server = mailserver.domain.com:25;
```

UTL\$1MAIL 옵션을 활성화하고 SMTP\$1OUT\$1SERVER를 구성한 후 `SEND` 절차를 사용하여 메일을 보낼 수 있습니다. 자세한 내용은 Oracle 설명서의 [UTL\$1MAIL](http://docs.oracle.com/cd/B19306_01/appdev.102/b14258/u_mail.htm#BABFJJBD)을 참조하십시오.

## Oracle UTL\$1MAIL 옵션 제거
<a name="Oracle.Options.UTLMAIL.Remove"></a>

DB 인스턴스에서 Oracle UTL\$1MAIL을 제거할 수 있습니다.

DB 인스턴스에서 UTL\$1MAIL을 제거하려면 다음 중 하나를 수행합니다.
+ 여러 DB 인스턴스에서 UTL\$1MAIL을 제거하려면 UTL\$1MAIL이 속한 옵션 그룹에서 해당 UTL\$1MAIL 옵션을 제거합니다. 이 변경은 해당 옵션 그룹을 사용하는 모든 DB 인스턴스에 영향을 미칩니다. 자세한 내용은 [옵션 그룹에서 옵션 제거](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.RemoveOption) 섹션을 참조하세요.
+ 단일 DB 인스턴스에서 UTL\$1MAIL을 제거하려면 DB 인스턴스를 수정하고 UTL\$1MAIL 옵션이 포함되지 않은 다른 옵션 그룹을 지정합니다. 기본(빈) 옵션 그룹을 지정하거나 다른 사용자 지정 옵션 그룹을 지정할 수 있습니다. 자세한 내용은 [Amazon RDS DB 인스턴스 수정](Overview.DBInstance.Modifying.md) 섹션을 참조하세요.

## 문제 해결
<a name="Oracle.Options.UTLMAIL.Troubleshooting"></a>

다음은 Amazon RDS에서 UTL\$1MAIL을 사용할 때 발생할 수 있는 문제입니다.
+ Throttling. SMTP 포트(25)는 탄력적 네트워크 인터페이스 소유자의 정책에 따라 조절됩니다. UTL\$1MAIL을 사용하여 이메일을 발송할 수 있지만 오류 `ORA-29278: SMTP transient error: 421 Service not available`이 표시될 경우 포트가 조절되는 것일 수 있습니다. 이메일 발송 시 조절을 경험할 경우 백오프 알고리즘을 구현하는 것이 좋습니다. 백오프 알고리즘에 대한 자세한 내용은 [AWS의 오류 재시도 횟수 및 지수 백오프 섹션](https://docs.aws.amazon.com/general/latest/gr/api-retries.html)과 ['제한 - 최대 송신률 초과' 오류를 처리하는 방법](https://aws.amazon.com/blogs/ses/how-to-handle-a-throttling-maximum-sending-rate-exceeded-error/) 섹션을 참조하세요.

  이러한 조절은 제거를 요청할 수 있습니다. 자세한 내용은 [내 EC2 인스턴스에서 포트 25에 대한 조절을 제거하려면 어떻게 해야 하나요?](https://aws.amazon.com/premiumsupport/knowledge-center/ec2-port-25-throttle/) 단원을 참조하세요.

# Oracle XML DB
<a name="Appendix.Oracle.Options.XMLDB"></a>

Oracle XML DB는 DB 인스턴스에 기본 XML 지원을 추가합니다. XML DB를 사용하면 관계형 데이터베이스뿐 아니라 정형 또는 비정형 XML을 저장 및 검색할 수 있습니다. XML DB 프로토콜 서버는 RDS for Oracle에서 지원되지 않습니다.

XML DB는 Oracle 데이터베이스 12c 이상에 사전 설치되어 있습니다. 따라서 추가 특성으로 XML DB를 명시적으로 설치하기 위해 옵션 그룹을 사용할 필요가 없습니다.

XML DB를 구성 및 사용하는 방법을 알아보려면 Oracle 데이터베이스 설명서의 [Oracle XML DB 개발자 안내서](https://docs.oracle.com/en/database/oracle/oracle-database/19/adxdb/)를 참조하세요.

# RDS for Oracle DB 엔진 업그레이드
<a name="USER_UpgradeDBInstance.Oracle"></a>

Amazon RDS에서 새 Oracle Database 버전을 지원하는 경우, DB 인스턴스를 새 버전으로 업그레이드할 수 있습니다. Amazon RDS에서 사용할 수 있는 Oracle 버전에 대한 자세한 내용은 [https://docs.aws.amazon.com/AmazonRDS/latest/OracleReleaseNotes/Welcome.html](https://docs.aws.amazon.com/AmazonRDS/latest/OracleReleaseNotes/Welcome.html)를 참조하세요.

**중요**  
RDS for Oracle Database 11g, 12c 및 18c는 더 이상 지원되지 않습니다. Oracle Database 11g, 12c 또는 18c 스냅샷을 유지하는 경우 이후 릴리스로 업그레이드하세요. 자세한 내용은 [Oracle DB 스냅샷 업그레이드](USER_UpgradeDBSnapshot.Oracle.md) 단원을 참조하십시오.

**Topics**
+ [RDS for Oracle 엔진 업그레이드 개요](USER_UpgradeDBInstance.Oracle.Overview.md)
+ [Oracle 메이저 버전 업그레이드](USER_UpgradeDBInstance.Oracle.Major.md)
+ [Oracle 마이너 버전 업그레이드](USER_UpgradeDBInstance.Oracle.Minor.md)
+ [Oracle 데이터베이스 업그레이드에 대한 고려 사항](USER_UpgradeDBInstance.Oracle.OGPG.md)
+ [Oracle DB 업그레이드 테스트](USER_UpgradeDBInstance.Oracle.UpgradeTesting.md)
+ [RDS for Oracle DB 인스턴스 버전 업그레이드](USER_UpgradeDBInstance.Oracle.Upgrading.md)
+ [Oracle DB 스냅샷 업그레이드](USER_UpgradeDBSnapshot.Oracle.md)

# RDS for Oracle 엔진 업그레이드 개요
<a name="USER_UpgradeDBInstance.Oracle.Overview"></a>

RDS for Oracle DB 인스턴스를 업그레이드하기 전에 다음 개념을 숙지하세요.

**Topics**
+ [메이저 및 마이너 버전 업그레이드](#USER_UpgradeDBInstance.Oracle.Overview.versions)
+ [RDS for Oracle 지원 날짜 및 필수 업그레이드](#Aurora.VersionPolicy.MajorVersionLifetime)
+ [Oracle 엔진 버전 관리](#Oracle.Concepts.Patching)
+ [엔진 업그레이드 중 자동 스냅샷](#USER_UpgradeDBInstance.Oracle.Overview.snapshots)
+ [다중 AZ 배포에서 Oracle 업그레이드](#USER_UpgradeDBInstance.Oracle.Overview.multi-az)
+ [읽기 전용 복제본의 Oracle 업그레이드](#USER_UpgradeDBInstance.Oracle.Overview.read-replicas)

## 메이저 및 마이너 버전 업그레이드
<a name="USER_UpgradeDBInstance.Oracle.Overview.versions"></a>

메이저 버전은 1\$12년마다 출시되는 Oracle Database의 메이저 릴리스입니다. Oracle Database 19c와 Oracle Database 21c는 메이저 릴리스입니다.

분기마다 RDS for Oracle은 각 지원되는 메이저 엔진에 대해 새로운 마이너 엔진 버전을 릴리스합니다. 릴리스 업데이트(RU) 엔진 버전은 지정된 분기에 대한 RU 패치를 포함하여 Oracle의 버그 수정을 통합합니다. 예를 들어 21.0.0.0.ru-2024-10.rur-2024-10.r1은 2024년 10월 RU를 통합한 Oracle Database 21c의 마이너 버전입니다.

공간 패치 번들(SPB) 엔진 버전에는 RU 패치와 Oracle Spatial과 관련된 패치가 포함되어 있습니다. 예를 들어 19.0.0.0.ru-2025-01.spb-1.r1은 엔진 버전 19.0.0.0.ru-2025-01.rur-2025-01.r1에 RU 패치와 공간 패치가 포함된 마이너 엔진 버전입니다. 일반적으로 RDS for Oracle은 해당 RU가 있고서 2\$13주 후에 SPB를 릴리스합니다. RU와 SPB의 차이점에 대한 설명은 [릴리스 업데이트(RU) 및 공간 패치 번들(SPB)](USER_UpgradeDBInstance.Oracle.Minor.md#RUs-and-SPBs) 섹션을 참조하시기 바랍니다. 자세한 내용은 [Release notes for Amazon Relational Database Service (Amazon RDS) for Oracle](https://docs.aws.amazon.com/AmazonRDS/latest/OracleReleaseNotes)을 참조하시기 바랍니다.

RDS for Oracle은 DB 인스턴스에 대해 다음과 같은 업그레이드를 지원합니다.


| 업그레이드 유형 | 애플리케이션 호환성 | 업그레이드 메서드 | 샘플 업그레이드 경로 | 
| --- | --- | --- | --- | 
| 메이저 버전 | 메이저 버전 업그레이드로 기존 애플리케이션과 호환되지 않는 변경 사항이 도입될 수 있습니다. | 수동 전용 | Oracle Database 19c에서 Oracle Database 21c로 | 
| 마이너 버전 | 마이너 버전 업그레이드에는 기존 애플리케이션과 호환되는 변경 사항만 포함됩니다. | 자동 또는 수동 | 21.0.0.0.ru-2023-07.rur-2022-07.r1에서 21.0.0.0.ru-2023-10.rur-2022-10.r1로 | 

**중요**  
DB 엔진을 업데이트할 때 운영 중단이 발생합니다. 운영 중단 지속 시간은 엔진 버전 및 DB 인스턴스 크기에 따라 다릅니다.  
프로덕션 데이터베이스에 업그레이드를 적용하기 전에 철저하게 테스트하여 애플리케이션이 올바르게 작동하는지 확인해야 합니다. 자세한 내용은 [Oracle DB 업그레이드 테스트](USER_UpgradeDBInstance.Oracle.UpgradeTesting.md) 섹션을 참조하세요.

## RDS for Oracle 지원 날짜 및 필수 업그레이드
<a name="Aurora.VersionPolicy.MajorVersionLifetime"></a>

RDS for Oracle의 데이터베이스 버전에는 예상 지원 날짜가 있습니다. RDS for Oracle DB 엔진의 메이저 또는 마이너 버전이 지원 종료에 가까워지면 RDS는 *강제 업그레이드*라고도 하는 필수 업그레이드를 시작합니다. RDS는 다음 정보를 게시합니다.
+ 더 이상 사용되지 않는 버전의 인스턴스를 지원되는 버전으로 수동으로 업그레이드하기 시작하라는 권장 사항
+ 지원되지 않는 버전에서 더 이상 인스턴스를 만들 수 없는 날짜
+ 유지 관리 기간 동안 RDS가 인스턴스를 지원되는 버전으로 자동 업그레이드하기 시작하는 날짜
+ 유지 관리 기간이 아닐 때 RDS가 인스턴스를 지원되는 버전으로 자동 업그레이드하기 시작하는 날짜

**중요**  
강제 업그레이드는 CloudFormation 스택에 예기치 않은 결과를 초래할 수 있습니다. RDS를 사용하여 DB 인스턴스를 자동으로 업그레이드하는 경우 CloudFormation에 문제가 발생할 수 있습니다.

이 섹션은 다음 주제를 포함합니다:

**Topics**
+ [RDS for Oracle 메이저 릴리스에 대한 지원 날짜](#oracle-major-support-dates)
+ [RDS for Oracle 마이너 버전에 대한 지원 날짜](#oracle-minor-support-dates)

### RDS for Oracle 메이저 릴리스에 대한 지원 날짜
<a name="oracle-major-support-dates"></a>

Oracle에 대한 RDS 메이저 버전은 해당 Oracle 데이터베이스 릴리스 버전에 대한 지원 수명이 끝날 때까지 사용할 수 있습니다. 다음 날짜를 사용하여 테스트 및 업그레이드 주기를 계획할 수 있습니다. 이 날짜는 최신 버전 업그레이드가 필요할 수 있는 가장 빠른 날짜를 나타냅니다. Amazon이 RDS for Oracle 버전에 대한 지원을 원래 명시일보다 오래 연장할 경우, 이 표를 이후 날짜를 반영하도록 업데이트할 계획입니다.

**참고**  
[describe-db-major-engine-versions](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-major-engine-versions.html) AWS CLI 명령을 실행하거나 [DescribeDBMajorEngineVersions](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBMajorEngineVersions.html) RDS API 작업을 사용하여 Oracle 데이터베이스의 메이저 버전을 볼 수 있습니다.


| Oracle 데이터베이스 메이저 릴리스 버전  | 최신 버전으로 업그레이드할 예정일 | 
| --- | --- | 
|  Oracle Database 19c  |  2029년 12월 31일(BYOL 프리미어 지원 포함(추가 지원 수수료 면제)) 2032년 12월 31일(BYOL 추가 지원(추가 비용) 또는 무제한 라이선스 계약 포함) 2029년 12월 31일(라이선스 포함(LI))  | 
|  Oracle Database 21c  | 2027년 7월 31일(추가 지원에는 사용할 수 없음) | 

RDS는 새 메이저 버전으로 업그레이드해야 하기 최소 12개월 전에 사용자에게 알립니다. 알림을 통해 중요한 일정의 타이밍, 사용자의 DB 인스턴스에 미치는 영향, 권장 조치 등 업그레이드 프로세스를 알려줍니다. 메이저 버전으로 업그레이드를 수행하기 전에 새 RDS for Oracle 버전으로 애플리케이션을 철저히 테스트하는 것이 좋습니다.

이 사전 알림 기간이 지나면 후속 주요 버전으로의 자동 업그레이드가 여전히 이전 버전을 실행 중인 모든 RDS for Oracle DB 인스턴스에 적용될 수 있습니다. 이 경우 예약된 유지 관리 기간에 업그레이드가 시작됩니다.

자세한 내용은 My Oracle Support의 [현재 데이터베이스 릴리스 릴리스 일정](https://support.oracle.com/knowledge/Oracle%20Database%20Products/742060_1.html)을 참조하세요.

### RDS for Oracle 마이너 버전에 대한 지원 날짜
<a name="oracle-minor-support-dates"></a>

경우에 따라 RDS for Oracle에서 메이저 릴리스의 마이너 버전에 대한 지원이 종료됩니다. RDS는 새 마이너 버전으로 업그레이드해야 하기 최소 6개월 전에 사용자에게 알립니다. 알림에는 업그레이드 프로세스가 설명되어 있으며, 여기에는 중요한 이정표의 타이밍, 더 이상 사용되지 않는 마이너 버전을 실행하는 DB 인스턴스에 미치는 영향, 권장 조치 등이 포함됩니다. 새로운 마이너 버전으로 업그레이드를 수행하기 전에 새 RDS for Oracle 버전으로 애플리케이션을 철저히 테스트하는 것이 좋습니다.

더 이상 지원 및 사용되지 않는 마이너 버전에 대한 자세한 내용은 [Amazon Relational Database Service(Amazon RDS) for Oracle 릴리스 노트](https://docs.aws.amazon.com/AmazonRDS/latest/OracleReleaseNotes/Welcome.html)를 참조하세요.

## Oracle 엔진 버전 관리
<a name="Oracle.Concepts.Patching"></a>

DB 엔진 버전 관리를 통해 데이터베이스 엔진의 패치 및 업그레이드 시기와 방법을 제어할 수 있습니다. 데이터베이스 엔진 패치 버전과의 호환성을 유연하게 유지할 수 있습니다. 또한 RDS for Oracle의 새 패치 버전을 테스트하여 프로덕션에 배포하기 전에 애플리케이션과 작동하는지 확인할 수 있습니다. 또한 자신의 조건과 일정에 따라 버전을 업그레이드합니다.

**참고**  
Amazon RDS는 Amazon RDS 관련 DB 엔진 버전을 사용하여 공식 Oracle 데이터베이스 패치를 정기적으로 수집합니다. Amazon RDS Oracle 관련 엔진 버전에 포함되는 Oracle 패치의 목록은 [https://docs.aws.amazon.com/AmazonRDS/latest/OracleReleaseNotes/Welcome.html](https://docs.aws.amazon.com/AmazonRDS/latest/OracleReleaseNotes/Welcome.html)를 참조하세요.

## 엔진 업그레이드 중 자동 스냅샷
<a name="USER_UpgradeDBInstance.Oracle.Overview.snapshots"></a>

Oracle DB 인스턴스를 업그레이드하는 동안 스냅샷은 업그레이드 문제로부터 인스턴스를 보호합니다. DB 인스턴스의 백업 보존 기간이 0보다 크면 Amazon RDS는 업그레이드 중에 다음과 같은 DB 스냅샷을 생성합니다.

1. 업그레이드 변경이 수행되기 전 DB 인스턴스의 스냅샷입니다. 업그레이드가 실패하면 이 스냅샷을 복원하여 이전 버전을 실행하는 DB 인스턴스를 생성할 수 있습니다.

1. 업그레이드가 완료된 후 DB 인스턴스의 스냅샷입니다.

**참고**  
백업 보존 기간을 변경하려면 [Amazon RDS DB 인스턴스 수정](Overview.DBInstance.Modifying.md) 섹션을 참조하십시오.

업그레이드 후에는 이전 엔진 버전으로 되돌릴 수 없습니다. 하지만 업그레이드 전 스냅샷을 복원하여 새 Oracle DB 인스턴스를 생성할 수 있습니다.

## 다중 AZ 배포에서 Oracle 업그레이드
<a name="USER_UpgradeDBInstance.Oracle.Overview.multi-az"></a>

DB 인스턴스가 다중 AZ 배포에 있는 경우 Amazon RDS는 기본 복제본과 대기 복제본을 모두 업그레이드합니다. 운영 체제 업데이트가 필요하지 않은 경우 기본 업그레이드와 대기 업그레이드가 동시에 수행됩니다. 업그레이드가 완료될 때까지 인스턴스를 사용할 수 없습니다.

다중 AZ 배포에서 운영 체제 업데이트가 필요한 경우 데이터베이스 업그레이드를 요청할 때 Amazon RDS가 업데이트를 적용합니다. Amazon RDS는 다음 단계를 수행합니다.

1. 현재 대기 DB 인스턴스의 운영 체제를 업데이트합니다.

1. 기본 DB 인스턴스를 대기 DB 인스턴스로 장애 조치합니다.

1. 이전에 대기 인스턴스였던 새 기본 DB 인스턴스의 데이터베이스 버전을 업그레이드합니다. 업그레이드 중에는 기본 데이터베이스를 사용할 수 없습니다.

1. 이전에 기본 DB 인스턴스였던 새로운 대기 DB 인스턴스에서 운영 체제를 업데이트합니다.

1. 새로운 대기 DB 인스턴스에서 데이터베이스 버전을 업그레이드합니다.

1. 새 기본 DB 인스턴스를 원래 기본 DB 인스턴스로 장애 조치하고 새 대기 DB 인스턴스를 원래 대기 DB 인스턴스로 다시 장애 조치합니다. 따라서 Amazon RDS는 복제 구성을 원래 상태로 되돌립니다.

## 읽기 전용 복제본의 Oracle 업그레이드
<a name="USER_UpgradeDBInstance.Oracle.Overview.read-replicas"></a>

원본 DB 인스턴스의 Oracle DB 엔진 버전과 모든 읽기 전용 복제본은 동일해야 합니다. Amazon RDS는 다음과 같은 단계로 업그레이드를 수행합니다.

1. 원본 DB 인스턴스를 업그레이드합니다. 이 단계 중에 읽기 전용 복제본을 사용할 수 있습니다.

1. 복제본 유지 관리 기간과 상관없이 읽기 전용 복제본을 병렬로 업그레이드합니다. 이 단계 중에 원본 DB를 사용할 수 있습니다.

리전 간 읽기 전용 복제본의 메이저 버전 업그레이드의 경우 Amazon RDS는 다음과 같은 추가 작업을 수행합니다.
+ 대상 버전에 대한 옵션 그룹을 자동으로 생성합니다.
+ 모든 옵션과 옵션 설정을 원래 옵션 그룹에서 새 옵션 그룹으로 복사합니다.
+ 업그레이드된 리전 간 읽기 전용 복제본을 새 옵션 그룹과 연결합니다.

# Oracle 메이저 버전 업그레이드
<a name="USER_UpgradeDBInstance.Oracle.Major"></a>

메이저 버전 업그레이드를 수행하려면 DB 인스턴스를 수동으로 수정합니다. 메이저 버전 업그레이드는 자동으로 수행되지 않습니다.

**중요**  
프로덕션 데이터베이스에 업그레이드를 적용하기 전에 철저하게 테스트하여 애플리케이션이 올바르게 작동하는지 확인해야 합니다. 자세한 내용은 [Oracle DB 업그레이드 테스트](USER_UpgradeDBInstance.Oracle.UpgradeTesting.md) 섹션을 참조하세요.

**Topics**
+ [메이저 업그레이드에 지원되는 버전](#USER_UpgradeDBInstance.Oracle.Major.supported-versions)
+ [메이저 업그레이드에 지원되는 인스턴스 클래스](#USER_UpgradeDBInstance.Oracle.Major.instance-classes)
+ [메이저 업그레이드 전에 통계 수집](#USER_UpgradeDBInstance.Oracle.Major.gathering-stats)
+ [메이저 업그레이드 허용](#USER_UpgradeDBInstance.Oracle.Major.allowing-upgrades)

## 메이저 업그레이드에 지원되는 버전
<a name="USER_UpgradeDBInstance.Oracle.Major.supported-versions"></a>

Amazon RDS는 다음과 같은 메이저 버전 업그레이드를 지원합니다.


****  

| 현재 버전 | 지원하는 업그레이드 | 
| --- | --- | 
|  CDB 아키텍처 사용 19.0.0.0  |  21.0.0.0  | 

Oracle Database의 메이저 버전 업그레이드는 같은 달 또는 그 이후에 릴리스된 RU(릴리스 업데이트)로 업그레이드해야 합니다. Oracle Database 버전에 메이저 버전 다운그레이드는 지원되지 않습니다.

## 메이저 업그레이드에 지원되는 인스턴스 클래스
<a name="USER_UpgradeDBInstance.Oracle.Major.instance-classes"></a>

현재 Oracle DB 인스턴스가 업그레이드하려는 버전에서 지원되지 않는 DB 인스턴스 클래스에서 실행될 수 있습니다. 이 경우 업그레이드하기 전에 DB 인스턴스를 지원되는 DB 인스턴스 클래스로 마이그레이션합니다. 각 Amazon RDS for Oracle 버전 및 에디션에서 지원되는 DB 인스턴스 클래스에 대한 자세한 내용은 [DB 인스턴스 클래스](Concepts.DBInstanceClass.md) 섹션을 참조하세요.

## 메이저 업그레이드 전에 통계 수집
<a name="USER_UpgradeDBInstance.Oracle.Major.gathering-stats"></a>

메이저 버전 업그레이드를 수행하기 전에 업그레이드하려는 DB 인스턴스에서 최적화 프로그램 통계를 수집하는 것이 좋습니다. 이렇게 하면 업그레이드 중 DB 인스턴스 가동 중지 시간을 줄일 수 있습니다.

최적화 프로그램 통계를 수집하려면 다음 예제와 같이 마스터 사용자로 DB 인스턴스에 연결하고, `DBMS_STATS.GATHER_DICTIONARY_STATS` 프로시저를 실행합니다.

```
EXEC DBMS_STATS.GATHER_DICTIONARY_STATS;
```

자세한 내용은 Oracle 설명서의 [GATHER\$1DICTIONARY\$1STATS 프로시저](https://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/DBMS_STATS.html?source=%3Aso%3Atw%3Aor%3Aawr%3Aodv%3A%3A#GUID-867989C7-ADFC-4464-8981-437CEA7F331E)를 참조하세요.

## 메이저 업그레이드 허용
<a name="USER_UpgradeDBInstance.Oracle.Major.allowing-upgrades"></a>

메이저 엔진 버전 업그레이드가 애플리케이션과 호환되지 않을 수 있습니다. 업그레이드는 되돌릴 수 없습니다. EngineVersion 파라미터에 현재 메이저 버전과 다른 메이저 버전을 지정하는 경우 메이저 버전 업그레이드를 허용해야 합니다.

CLI 명령 [modify-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html)를 사용하여 메이저 버전을 업그레이드하는 경우 `--allow-major-version-upgrade`를 지정합니다. 이 설정은 영구적이지 않으므로 메이저 업그레이드를 수행할 때마다 `--allow-major-version-upgrade`를 지정해야 합니다. 이 파라미터는 마이너 엔진 버전의 업그레이드에 영향을 주지 않습니다. 자세한 내용은 [DB 인스턴스 엔진 버전 업그레이드](USER_UpgradeDBInstance.Upgrading.md) 섹션을 참조하세요.

콘솔을 사용하여 메이저 버전을 업그레이드하는 경우 업그레이드를 허용하는 옵션을 선택할 필요가 없습니다. 대신 콘솔에 메이저 업그레이드를 되돌릴 수 없다는 경고가 표시됩니다.

# Oracle 마이너 버전 업그레이드
<a name="USER_UpgradeDBInstance.Oracle.Minor"></a>

RDS for Oracle에서 마이너 버전 업그레이드는 메이저 DB 엔진 버전에 대한 업데이트를 의미합니다. RDS에서 마이너 엔진 버전은 릴리스 업데이트(RU) 또는 공간 패치 번들(SPB)입니다. 예를 들어 DB 인스턴스에서 메이저 버전 Oracle Database 19c와 마이너 버전 19.0.0.0.ru-2025-10.rur-2025-10.r1을 실행하는 경우 마이너 버전 19.0.0.0.ru-2026-01.rur-2026-01.r1로 업그레이드할 수 있습니다. RDS for Oracle은 마이너 버전 다운그레이드를 지원하지 않습니다.

수동 또는 자동으로 DB 엔진을 마이너 버전으로 업그레이드할 수 있습니다. 수동 업그레이드하는 방법에 대한 자세한 내용은 [엔진 버전 수동 업그레이드](USER_UpgradeDBInstance.Upgrading.md#USER_UpgradeDBInstance.Upgrading.Manual) 섹션을 참조하세요. 자동 업그레이드를 구성하는 방법에 대한 자세한 내용은 [마이너 엔진 버전 자동 업그레이드](USER_UpgradeDBInstance.Upgrading.md#USER_UpgradeDBInstance.Upgrading.AutoMinorVersionUpgrades) 섹션을 참조하세요. 수동 업그레이드인지, 자동 업그레이드인지와 관계없이 마이너 버전 업그레이드에는 자동 중지 시간이 수반됩니다. 업그레이드를 계획할 때 이 가동 중지 시간을 고려합니다.

또한 Amazon RDS는 업그레이드 롤아웃 정책을 지원하여 여러 데이터베이스 리소스 및 AWS 계정에서 자동 마이너 버전 업그레이드를 관리합니다. 자세한 내용은 [자동 마이너 버전 AWS Organizations 업그레이드에 업그레이드 롤아웃 정책 사용](RDS.Maintenance.AMVU.UpgradeRollout.md) 섹션을 참조하세요.

**중요**  
프로덕션 데이터베이스에 업그레이드를 적용하기 전에 철저하게 테스트하여 애플리케이션이 올바르게 작동하는지 확인해야 합니다. 자세한 내용은 [Oracle DB 업그레이드 테스트](USER_UpgradeDBInstance.Oracle.UpgradeTesting.md) 섹션을 참조하세요.

**Topics**
+ [릴리스 업데이트(RU) 및 공간 패치 번들(SPB)](#RUs-and-SPBs)
+ [Oracle용 마이너 버전 자동 업그레이드 활성화](#oracle-minor-version-upgrade-tuning-on)
+ [자동 마이너 버전 AWS Organizations 업그레이드에 업그레이드 롤아웃 정책 사용](#oracle-minor-version-upgrade-rollout)
+ [RDS for Oracle의 자동 마이너 버전 업그레이드에 대한 알림](#oracle-minor-version-upgrade-advance)
+ [RDS가 자동 마이너 버전 업그레이드 일정을 예약하는 방법](#oracle-minor-version-upgrade-scheduled)
+ [RDS for Oracle용 자동 마이너 버전 업그레이드 관리](#oracle-minor-version-upgrade-managing)

## 릴리스 업데이트(RU) 및 공간 패치 번들(SPB)
<a name="RUs-and-SPBs"></a>

RDS에서 릴리스 업데이트(RU)는 Oracle Database에 대한 보안 수정, 버그 수정 및 새로운 기능을 포함하는 분기별 마이너 엔진 버전입니다. 공간 패치 번들(SPB)은 Oracle Spatial 옵션용으로 설계된 패치가 포함된 RU 엔진 버전입니다. 예를 들어 19.0.0.0.ru-2025-01.spb-1.r1이라는 SPB에는 해당 RU 19.0.0.0.ru-2025-01.rur-2025-01.r1에 있는 모든 패치와 공간에 고유한 패치가 포함됩니다. SPB는 Oracle Database 19c에서만 지원됩니다.

인스턴스가 자동 마이너 버전 업그레이드로 구성된 경우 RU와 SPB는 별도의 업그레이드 경로에 존재합니다. 일반적으로 SPB는 해당 RU가 있고서 2\$13주 후에 릴리스됩니다. 다음 표에는 Oracle Database 19c용 샘플 마이너 버전이 나와 있습니다.


| 표준 RU 업그레이드 경로 | SPB 업그레이드 경로 | 
| --- | --- | 
| 19.0.0.0.ru-2025-01.rur-2025-01.r1 | 19.0.0.0.ru-2025-01.spb-1.r1 | 
| 19.0.0.0.ru-2025-04.rur-2025-04.r1 | 19.0.0.0.ru-2025-04.spb-1.r1 | 
| 19.0.0.0.ru-2025-07.rur-2025-07.r1 | 19.0.0.0.ru-2025-07.spb-1.r1 | 
| 19.0.0.0.ru-2025-10.rur-2025-10.r1 | 19.0.0.0.ru-2025-10.spb-1.r1 | 

DB 인스턴스가 자동 업그레이드용으로 구성된 경우 인스턴스는 현재 버전에 해당하는 업그레이드 경로에 존재합니다. 예를 들어 DB 인스턴스가 버전 19.0.0.0.ru-2025-01.rur-2025-01.r1을 실행하는 경우 19.0.0.0.ru-2025-04.rur-2025-04.r1이 릴리스되면 인스턴스가 이 RU로 자동으로 업그레이드됩니다. 마찬가지로 DB 인스턴스가 19.0.0.0.ru-2025-01.spb-1.r1을 실행하는 경우 19.0.0.0.ru-2025-04.spb-1.r1이 릴리스되면 인스턴스가 이 SPB로 자동으로 업그레이드됩니다. RU인 19.0.0.0.ru-2025-01.rur-2025-01.r1을 실행하는 인스턴스는 별도의 업그레이드 경로에 있는 SPB인 19.0.0.0.ru-2025-04.spb-1.r1로 자동으로 업그레이드되지 않습니다.

인스턴스가 공간을 사용하지 않더라도 DB 인스턴스를 SPB로 업그레이드할 수 있지만, 공간 패치는 Oracle Spatial에만 적용됩니다. RU에서 동일한 엔진 버전 이상의 SPB로 수동으로 업그레이드할 수 있습니다. 예를 들어 19.0.0.0.ru-2025-01.rur-2025-01.r1에서 다음 엔진 버전 중 하나로 인스턴스를 업그레이드할 수 있습니다.
+ 19.0.0.0.ru-2025-01.spb-1.r1
+ 19.0.0.0.ru-2025-04.spb-1.r1

RU가 더 높은 엔진 버전인 경우에만 SPB에서 RU로 인스턴스를 업그레이드할 수 있습니다. 예를 들어 SPB 버전 19.0.0.0.ru-2025-04.spb-1.r1에서 상위 RU 버전 19.0.0.0.ru-2025-07.rur-2025-07.r1로 업그레이드할 수 있지만 동일한 RU 버전 19.0.0.0.ru-2025-04.rur-2025-04.r1로 업그레이드할 수 없습니다.

DB 인스턴스가 자동 마이너 버전 업그레이드용으로 구성되어 있고 RU에서 SPB로 또는 SPB에서 RU로 수동으로 업그레이드하는 경우 자동 업그레이드 경로가 변경됩니다. RU 버전 19.0.0.0.ru-2025-01.rur-2025-01.r1에서 SPB 버전 19.0.0.0.ru-2025-01.spb-1.r1로 수동으로 업그레이드한다고 가정해 보겠습니다. 다음 마이너 버전 자동 업그레이드는 SPB 버전 19.0.0.0.ru-2025-04.spb-1.r1입니다.

SPB가 RU처럼 작동하므로 인스턴스를 RU 및 SPB로 업그레이드하는 데 사용하는 RDS API는 동일합니다. 다음 명령은 RU 및 SPB로 업그레이드하는 것을 보여 줍니다.

```
aws rds modify-db-instance \
    --db-instance-identifier mydbinstance \
    --engine-version 19.0.0.0.ru-2025-01.rur-2025-01.r1

aws rds modify-db-instance \
    --db-instance-identifier mydbinstance \
    --engine-version 19.0.0.0.ru-2025-01.spb-1.r1
```

Oracle Spatial 옵션에 대한 자세한 내용은 [공간 패치 번들(SPB) 작동 방식](Oracle.Options.Spatial.md#Oracle.Options.Spatial.SPBs) 섹션을 참조하시기 바랍니다. Oracle Database 19c에 대해 지원되는 RU 및 SPB에 대해 알아보려면 [Amazon RDS for Oracle Database 19c(19.0.0.0)](https://docs.aws.amazon.com/AmazonRDS/latest/OracleReleaseNotes/oracle-version-19-0.html)를 참조하시기 바랍니다.

## Oracle용 마이너 버전 자동 업그레이드 활성화
<a name="oracle-minor-version-upgrade-tuning-on"></a>

자동 마이너 버전 업그레이드에서 RDS는 수동 개입 없이 사용 가능한 최신 마이너 버전을 Oracle 데이터베이스에 적용합니다. Amazon RDS Oracle DB 인스턴스는 다음과 같은 상황일 때 다음번 유지 관리 기간 중에 업그레이드 일정을 예약합니다.
+ DB 클러스터에 **자동 마이너 버전 업그레이드** 옵션이 활성화되어 있는 경우
+ DB 인스턴스가 아직 최신 마이너 DB 엔진 버전을 실행하고 있지 않은 경우

자동 업그레이드를 활성화하는 방법에 대한 자세한 내용은 [마이너 엔진 버전 자동 업그레이드](USER_UpgradeDBInstance.Upgrading.md#USER_UpgradeDBInstance.Upgrading.AutoMinorVersionUpgrades) 섹션을 참조하세요.

## 자동 마이너 버전 AWS Organizations 업그레이드에 업그레이드 롤아웃 정책 사용
<a name="oracle-minor-version-upgrade-rollout"></a>

Amazon RDS for Oracle은 AWS Organizations 업그레이드 롤아웃 정책을 지원하여 여러 데이터베이스 리소스 및 AWS 계정에서 자동 마이너 버전 업그레이드를 관리합니다. 이 정책은 수동 또는 사용자 지정 도구를 통해 자동 마이너 버전 업그레이드를 조정하는 운영 오버헤드를 없애는 동시에 프로덕션으로 롤아웃되기 전에 비프로덕션 환경에서 업그레이드를 먼저 적용할 수 있도록 합니다. 새 마이너 엔진 버전을 사용할 수 있게 되면 Amazon RDS는 구성된 업그레이드 롤아웃 순서에 따라 DB 인스턴스를 업그레이드합니다.


| 업그레이드 롤아웃 순서 | 일반적인 사용 사례 | 업그레이드 시작 시 | 
| --- | --- | --- | 
| 첫 번째 | 개발 및 테스트 환경 | 가장 빠른 - 새 버전을 검증하는 데 이상적 | 
| 초 | 스테이징 및 중요하지 않은 프로덕션 환경 | '첫 번째' 단계가 완료된 후 | 
| 마지막 | 중요한 프로덕션 환경 | '두 번째' 단계가 완료된 후 | 

**중요**  
DB 인스턴스에 대한 업그레이드 롤아웃 순서를 구성하지 않으면 기본값은 초입니다.

단계 타이밍 및 지속 시간에 대한 자세한 내용은 [RDS가 자동 마이너 버전 업그레이드 일정을 예약하는 방법](#oracle-minor-version-upgrade-scheduled) 섹션을 참조하세요. AWS Organizations에서 업그레이드 롤아웃 정책을 구성하는 방법에 대한 자세한 내용은 [자동 마이너 버전 AWS Organizations 업그레이드에 업그레이드 롤아웃 정책 사용](RDS.Maintenance.AMVU.UpgradeRollout.md) 섹션을 참조하세요.

## RDS for Oracle의 자동 마이너 버전 업그레이드에 대한 알림
<a name="oracle-minor-version-upgrade-advance"></a>

DB 인스턴스에서 마이너 버전 자동 업그레이드가 활성화된 경우 RDS for Oracle은 업그레이드를 적용하기 전에 사용자에게 알리기 위해 보류 중인 유지 관리 작업을 생성합니다. Amazon RDS 콘솔의 데이터베이스 세부 정보 페이지의 **유지 관리 및 백업** 탭에서 보류 중인 유지 관리 작업을 볼 수 있습니다.

새 마이너 버전을 사용할 수 있게 되면 RDS for Oracle은 조기 알림(유지 관리 작업 보류 중)을 게시합니다. 조기 알림은 다음 형식을 취합니다.

```
An automatic minor version upgrade to engine-version will be applied during your maintenance window on apply-date based on the upgrade rollout order rollout-order. You can change the upgrade rollout order or apply this upgrade manually at any time before the scheduled date through the AWS console or AWS CLI.
```

조기 알림의 `apply-date`는 Amazon RDS가 DB 인스턴스를 업그레이드하는 날짜입니다. `rollout-order`는 업그레이드 롤아웃 순서(첫 번째, 두 번째 또는 마지막)입니다. 업그레이드 롤아웃 정책을 구성하지 않은 경우 이 값은 기본적으로 두 번째입니다. 자세한 내용은 [자동 마이너 버전 AWS Organizations 업그레이드에 업그레이드 롤아웃 정책 사용](RDS.Maintenance.AMVU.UpgradeRollout.md) 섹션을 참조하세요.

업그레이드 롤아웃 단계가 시작되면 보류 중인 유지 관리 작업 메시지가 다음 형식으로 변경됩니다.

```
Automatic minor version upgrade to engine-version
```

이 메시지는 업그레이드가 예약되었으며 예약된 적용 날짜에 유지 관리 기간에 적용됨을 나타냅니다. Amazon RDS 콘솔의 데이터베이스 세부 정보 페이지의 **유지 관리 및 백업** 탭 또는 `describe-pending-maintenance-actions` API 응답의 `CurrentApplyDate` 필드에서 예약된 적용 날짜를 확인할 수 있습니다.

다음 예제에서는 AWS CLI의 `describe-pending-maintenance-actions` 명령을 사용하여 보류 중인 유지 관리 작업에 대한 세부 정보를 가져올 수 있습니다.

```
aws rds describe-pending-maintenance-actions 

    "PendingMaintenanceActions": [
        {
            "ResourceIdentifier": "arn:aws:rds:us-east-1:123456789012:db:orclinst1",
            "PendingMaintenanceActionDetails": [
                {
                    "Action": "db-upgrade",
                    "Description": "Automatic minor version upgrade to 21.0.0.0.ru-2024-07.rur-2024-07.r1",
                    "CurrentApplyDate": "2024-12-02T08:10:00Z"
                }
            ]
        }, ...
```

[describe-pending-maintenance-actions](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-pending-maintenance-actions.html)에 대한 자세한 내용은 **AWS CLI 명령 참조를 참조하세요.

## RDS가 자동 마이너 버전 업그레이드 일정을 예약하는 방법
<a name="oracle-minor-version-upgrade-scheduled"></a>

AWS Organizations 업그레이드 롤아웃 정책을 사용하면 Amazon RDS는 구성된 롤아웃 순서에 따라 DB 인스턴스를 단계별로 업그레이드합니다. 이 섹션에서는 각 단계의 타이밍과 지속 시간에 대해 설명합니다.

**0단계: 조기 알림**

RDS for Oracle에서 새 마이너 버전(일반적으로 Oracle의 분기별 RU 릴리스 후 3\$14주)을 릴리스하면 마이너 버전 자동 업그레이드가 활성화된 모든 DB 인스턴스에 조기 알림이 전송됩니다. 이 알림은 Amazon RDS 콘솔의 데이터베이스 세부 정보 페이지의 **유지 관리 및 백업** 탭과 `describe-pending-maintenance-actions` API 응답에 표시됩니다. 조기 알림 단계는 2주 동안 지속됩니다. 이 단계에서는 자동 업그레이드가 수행되지 않습니다.

**1단계: 첫 번째 업그레이드 롤아웃 순서**

조기 알림 단계가 끝나면 RDS for Oracle은 먼저 업그레이드 롤아웃 순서로 DB 인스턴스 업그레이드를 시작합니다. 이 단계는 1월, 4월, 7월 분기별 마이너 버전의 경우 2\$13주, 10월 분기별 마이너 버전의 경우 7\$18주 동안 지속됩니다. 10월 마이너 버전의 연장 기간은 연말 연휴 기간 동안 새 마이너 버전을 테스트할 수 있는 충분한 시간을 제공합니다. 이 단계에서 생성된 새 DB 인스턴스는 업그레이드 롤아웃 순서가 첫 번째인 경우 자동으로 업그레이드됩니다.

**2단계: 두 번째 업그레이드 롤아웃 순서**

1단계가 끝나면 RDS for Oracle은 업그레이드 롤아웃 순서가 두 번째인 DB 인스턴스 업그레이드를 시작합니다. 이 단계는 모든 분기별 마이너 버전에서 2주 동안 지속됩니다. 이 단계에서 업그레이드 롤아웃 순서가 첫 번째 또는 두 번째로 생성된 새로운 DB 인스턴스는 자동으로 업그레이드됩니다.

**3단계: 마지막 업그레이드 롤아웃 순서**

2단계가 끝나면 RDS for Oracle은 업그레이드 롤아웃 순서가 마지막인 DB 인스턴스 업그레이드를 시작합니다. 이 단계는 다음 분기 마이너 버전 릴리스까지 지속됩니다. 이 단계에서 업그레이드 롤아웃 순서가 첫 번째, 두 번째 또는 마지막으로 생성된 새로운 DB 인스턴스는 자동으로 업그레이드됩니다.


| Phase(단계) | 시작 시 | 지속 시간 | 보류 중인 유지 관리 조치 메시지 | 
| --- | --- | --- | --- | 
| 0단계: 조기 알림 | RDS for Oracle에서 새 마이너 버전을 릴리스하는 경우 | 2주 | 엔진 버전으로의 자동 마이너 버전 업그레이드는 업그레이드 롤아웃 순서 롤아웃 순서에 따라 적용 날짜의 유지 관리 기간 동안 적용됩니다. AWS 콘솔 또는 AWS CLI를 통해 예정된 날짜 이전에 언제든지 업그레이드 롤아웃 순서를 변경하거나이 업그레이드를 수동으로 적용할 수 있습니다. | 
| 1단계: 첫 번째 업그레이드 롤아웃 순서 | 조기 알림 단계 종료 | 1월/4월/7월 마이너 버전의 경우 2\$14주, 10월 마이너 버전의 경우 7\$19주 | 마이너 버전을 engine-version으로 자동 업그레이드 | 
| 2단계: 두 번째 업그레이드 롤아웃 순서 | 1단계 종료 | 2주 | 마이너 버전을 engine-version으로 자동 업그레이드 | 
| 3단계: 마지막 업그레이드 롤아웃 순서 | 2단계 종료 | 다음 분기 마이너 버전 릴리스까지 | 마이너 버전을 engine-version으로 자동 업그레이드 | 

## RDS for Oracle용 자동 마이너 버전 업그레이드 관리
<a name="oracle-minor-version-upgrade-managing"></a>

DB 인스턴스에서 마이너 버전 자동 업그레이드가 활성화되면 Amazon RDS는 유지 관리 기간 동안 DB 인스턴스를 최신 마이너 버전으로 자동 업그레이드합니다. 그러나 AWS CLI를 사용하거나 데이터베이스 세부 정보 페이지의 **유지 관리 및 백업** 탭에서 예정된 날짜 이전에 업그레이드를 수동으로 적용하도록 선택할 수 있습니다.

예약된 유지 관리 기간을 기다리는 대신 DB 인스턴스를 즉시 업그레이드하는 방법:

```
aws rds apply-pending-maintenance-action \
    --resource-identifier arn:aws:rds:us-east-1:123456789012:db:orclinst1 \
    --apply-action db-upgrade \
    --opt-in-type immediate
```

예약된 적용 날짜 대신 다음 유지 관리 기간에 업그레이드를 적용하는 방법:

```
aws rds apply-pending-maintenance-action \
    --resource-identifier arn:aws:rds:us-east-1:123456789012:db:orclinst1 \
    --apply-action db-upgrade \
    --opt-in-type next-maintenance
```

자동 마이너 버전 업그레이드를 옵트아웃하려면 DB 인스턴스를 수정하고 자동 마이너 버전 업그레이드 옵션을 끕니다. 이렇게 하면 보류 중인 자동 업그레이드의 예약이 취소됩니다.

자동 마이너 버전 업그레이드를 비활성화하는 방법에 대한 자세한 내용은 [마이너 엔진 버전 자동 업그레이드](USER_UpgradeDBInstance.Upgrading.md#USER_UpgradeDBInstance.Upgrading.AutoMinorVersionUpgrades) 섹션을 참조하세요. 자동 마이너 버전 업그레이드를 해제하는 데 도움이 필요한 경우 AWS Support에 문의하세요.

때로는 RDS가 이전 마이너 버전을 적용하기 전에 새 마이너 버전을 사용할 수 있게 됩니다. 예를 들어 `both 21.0.0.0.ru-2025-10.rur-2025-10.r1` 및 `21.0.0.0.ru-2026-01.rur-2026-01.r1`를 업그레이드 대상으로 사용할 수 있는 경우 인스턴스가 `21.0.0.0.ru-2025-07.rur-2025-07.r1`에서 실행됩니다. 이 경우 DB 인스턴스의 불필요한 가동 중지 시간을 방지하기 위해 RDS는 자동 마이너 버전 업그레이드를 최신 버전으로 예약하여 이전 버전으로의 업그레이드를 건너뜁니다. 이 예제에서 RDS는 인스턴스를 `21.0.0.0.ru-2025-07.rur-2025-07.r1`에서 `21.0.0.0.ru-2026-01.rur-2026-01.r1`로 직접 업그레이드합니다.

# Oracle 데이터베이스 업그레이드에 대한 고려 사항
<a name="USER_UpgradeDBInstance.Oracle.OGPG"></a>

Oracle 인스턴스를 업그레이드하기 전에 다음 정보를 검토합니다.

**Topics**
+ [Oracle 멀티테넌트 고려 사항](#USER_UpgradeDBInstance.Oracle.multi)
+ [옵션 그룹 고려 사항](#USER_UpgradeDBInstance.Oracle.OGPG.OG)
+ [파라미터 그룹 고려 사항](#USER_UpgradeDBInstance.Oracle.OGPG.PG)
+ [시간대 고려 사항](#USER_UpgradeDBInstance.Oracle.OGPG.DST)
+ [공간 패치 번들(SPB) 고려 사항](#USER_UpgradeDBInstance.Oracle.SPB)

## Oracle 멀티테넌트 고려 사항
<a name="USER_UpgradeDBInstance.Oracle.multi"></a>

다음 표에서는 다양한 릴리스에서 지원되는 Oracle Database 아키텍처에 대해 설명합니다.


| Oracle Database 릴리스 | RDS 지원 상태 | 아키텍처 | 
| --- | --- | --- | 
|  Oracle Database 21c  | 지원됨 |  CDB만  | 
|  Oracle Database 19c  | 지원됨 |  CDB 또는 비 CDB  | 

다음 표에서는 지원되는 업그레이드 경로와 지원되지 않는 업그레이드 경로에 대해 설명합니다.


| 업그레이드 경로 | 지원 여부 | 
| --- | --- | 
|  CDB에서 CDB로  |  예  | 
|  비 CDB에서 CDB로  |  아니요, 하지만 비CDB를 CDB로 변환한 다음 업그레이드할 수 있습니다.  | 
|  CDB에서 비 CDB로  |  아니요  | 

RDS for Oracle의 Oracle 멀티테넌트에 대한 자세한 내용은 [CDB 아키텍처의 단일 테넌트 구성](Oracle.Concepts.CDBs.md#Oracle.Concepts.single-tenant) 단원을 참조하세요.

## 옵션 그룹 고려 사항
<a name="USER_UpgradeDBInstance.Oracle.OGPG.OG"></a>

DB 인스턴스가 사용자 지정 옵션 그룹을 사용하는 경우 Amazon RDS가 새 옵션 그룹을 자동으로 할당하지 못할 수 있습니다. 예를 들어, 이 상황은 새로운 메이저 버전으로 업그레이드할 경우 발생합니다. 이 경우 업그레이드할 때 새 옵션 그룹을 지정합니다. 새 옵션 그룹을 생성하고 동일한 옵션을 기존 사용자 지정 옵션 그룹에 추가하는 것이 좋습니다.

자세한 내용은 [옵션 그룹 생성](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Create) 또는 [옵션 그룹 생성](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Copy) 섹션을 참조하세요.

DB 인스턴스가 `APEX` 및 `APEX-DEV` 옵션이 포함된 사용자 지정 옵션 그룹을 사용하는 경우 업그레이드 시간이 단축될 수 있습니다. 이렇게 하려면 DB 인스턴스와 동시에 Oracle APEX 버전을 업그레이드하세요. 자세한 내용은 [Oracle APEX 버전 업그레이드](Appendix.Oracle.Options.APEX.UpgradeandRemove.md#Appendix.Oracle.Options.APEX.Upgrade) 섹션을 참조하세요.

## 파라미터 그룹 고려 사항
<a name="USER_UpgradeDBInstance.Oracle.OGPG.PG"></a>

DB 인스턴스에서 사용자 지정 파라미터 그룹을 사용할 경우 Amazon RDS에서 DB 인스턴스에 새 파라미터 그룹을 자동으로 할당할 수 없는 경우도 있습니다. 예를 들어, 이 상황은 새로운 메이저 버전으로 업그레이드할 경우 발생합니다. 이 경우 업그레이드할 때 새 파라미터 그룹을 지정해야 합니다. 새 파라미터 그룹을 생성하고 기존 사용자 지정 파라미터 그룹에서와 같은 방법으로 파라미터를 구성하는 것이 좋습니다.

자세한 내용은 [Amazon RDS에서 DB 파라미터 그룹 생성](USER_WorkingWithParamGroups.Creating.md) 또는 [Amazon RDS에서 DB 파라미터 그룹 복사](USER_WorkingWithParamGroups.Copying.md) 섹션을 참조하세요.

## 시간대 고려 사항
<a name="USER_UpgradeDBInstance.Oracle.OGPG.DST"></a>

시간대 옵션을 사용하면 Oracle DB 인스턴스에서 사용하는 *시스템 시간대*를 변경할 수 있습니다. 예를 들면 온프레미스 환경 또는 기존 애플리케이션과 시간을 호환하기 위해 DB 인스턴스의 시간대를 변경할 수 있습니다. 시간대 옵션은 호스트 레벨에서 시간대를 변경합니다. Amazon RDS for Oracle은 연중 내내 시스템 시간대를 자동으로 업데이트합니다. 시스템 시간대에 대한 자세한 내용은 [Oracle 시간대](Appendix.Oracle.Options.Timezone.md) 단원을 참조하십시오.

Oracle DB 인스턴스를 생성하면 데이터베이스가 *데이터베이스 시간대*를 자동으로 설정합니다. 데이터베이스 시간대는 일광 절약 시간(DST) 시간대라고도 합니다. 데이터베이스 시간대는 시스템 시간대와 완전히 다릅니다.

Oracle Database 릴리스 간에 패치 세트 또는 개별 패치에 새 DST 버전이 포함될 수 있습니다. 이러한 패치는 다양한 시간대 리전에 대한 전환 규칙의 변경 사항을 반영합니다. 예를 들어 DST가 적용되면 정부가 변경될 수 있습니다. DST 규칙을 변경하면 `TIMESTAMP WITH TIME ZONE` 데이터 형식의 기존 데이터에 영향을 줄 수 있습니다.

RDS for Oracle DB 인스턴스를 업그레이드하더라도 Amazon RDS는 데이터베이스 시간대 파일은 자동으로 업그레이드되지 않습니다. 시간대 파일을 자동으로 업그레이드하려면 엔진 버전 업그레이드 도중 또는 이후에 DB 인스턴스와 연결된 옵션 그룹에 `TIMEZONE_FILE_AUTOUPGRADE` 옵션을 포함하면 됩니다. 자세한 내용은 [Oracle 시간대 파일 자동 업그레이드](Appendix.Oracle.Options.Timezone-file-autoupgrade.md)을 참조하세요.

또는 데이터베이스 시간대 파일을 수동으로 업그레이드하려면 원하는 DST 패치가 있는 새 Oracle DB 인스턴스를 생성합니다. 하지만 `TIMEZONE_FILE_AUTOUPGRADE` 옵션을 사용하여 데이터베이스 시간대 파일을 업그레이드하는 것이 좋습니다.

시간대 파일을 업그레이드한 후 현재 인스턴스에서 새 인스턴스로 데이터를 마이그레이션합니다. 다음을 비롯한 여러 기술을 사용하여 데이터를 마이그레이션할 수 있습니다.
+ AWS Database Migration Service
+ Oracle GoldenGate
+ Oracle Data Pump
+ 원본 내보내기/가져오기(일반 용도로 지원되지 않음)

**참고**  
Oracle Data Pump를 사용하여 데이터를 마이그레이션할 때 유틸리티는 대상 시간대 버전이 소스 시간대 버전보다 낮은 경우 ORA-39405 오류를 발생시킵니다.

자세한 내용은 Oracle 설명서에서 [시간대 제한이 있는 타임스탬프](https://docs.oracle.com/en/database/oracle/oracle-database/19/sutil/oracle-data-pump-overview.html#GUID-9B6C92EE-860E-43DD-9728-735B17B9DA89)를 참조하세요.

## 공간 패치 번들(SPB) 고려 사항
<a name="USER_UpgradeDBInstance.Oracle.SPB"></a>

RDS for Oracle에서 릴리스 업데이트(RU)는 Oracle Database에 대한 보안 수정, 버그 수정 및 새로운 기능을 포함하는 마이너 엔진 버전입니다. 또한 공간 패치 번들(SPB)은 Oracle Spatial 옵션용으로 설계된 패치를 포함하는 마이너 엔진 버전입니다. 예를 들어 19.0.0.0.ru-2025-01.spb-1.r1은 엔진 버전 19.0.0.0.ru-2025-01.rur-2025-01.r1에 RU 패치와 공간 패치가 포함된 마이너 엔진 버전입니다.

데이터베이스를 SPB로 업그레이드하려면 다음 사항을 고려합니다.
+ SPB는 Oracle Database 19c에서만 지원됩니다.
+ 일반적으로 SPB는 해당 분기별 RU가 있고서 2\$13주 후에 릴리스됩니다.
+ 인스턴스가 Oracle Spatial 옵션을 사용하지 않더라도 DB 인스턴스를 SPB로 업그레이드할 수 있지만 엔진 버전의 Spatial 패치는 Oracle Spatial에만 적용됩니다. SPB에서 새 인스턴스를 만들고 나중에 Oracle Spatial 옵션을 설치할 수 있습니다.
+ DB 인스턴스에 대해 마이너 버전 자동 업그레이드를 사용 설정하는 경우 업그레이드 경로는 인스턴스가 현재 SPB를 사용하는지 RU를 사용하는지에 따라 달라집니다. 인스턴스가 SPB를 사용하는 경우 RDS는 인스턴스를 최신 SPB로 자동으로 업그레이드합니다. 인스턴스가 RU를 사용하는 경우 RDS는 인스턴스를 최신 RU로 자동으로 업그레이드합니다.
+ SPB가 현재 RU와 동일한 엔진 버전 또는 그 이상일 경우에만 DB 인스턴스를 RU에서 SPB로 수동으로 업그레이드할 수 있습니다.
+ RU가 상위 버전인 경우에만 SPB에서 RU로 DB 인스턴스를 수동으로 업그레이드할 수 있습니다.

# Oracle DB 업그레이드 테스트
<a name="USER_UpgradeDBInstance.Oracle.UpgradeTesting"></a>

DB 인스턴스를 메이저 버전으로 업그레이드하기 전에 데이터베이스와 해당 데이터베이스에 액세스하는 모든 애플리케이션을 철저히 테스트하여 새 버전과의 호환성을 확인합니다. 다음 절차를 참조하는 것이 좋습니다.

**메이저 버전 업그레이드를 테스트하려면**

1. 다음과 같이 새 버전의 데이터베이스 엔진에 대한 Oracle 업그레이드 문서를 검토하여 데이터베이스나 애플리케이션에 영향을 끼칠 수도 있는 호환성 문제가 있는지 살펴봅니다. 자세한 내용은 Oracle 문서의 [Database Upgrade Guide](https://docs.oracle.com/database/121/UPGRD/toc.htm) 단원을 참조하십시오.

1. DB 인스턴스에서 사용자 지정 옵션 그룹을 사용할 경우 업그레이드하려는 새 버전과 호환되는 새 옵션 그룹을 생성합니다. 자세한 내용은 [옵션 그룹 고려 사항](USER_UpgradeDBInstance.Oracle.OGPG.md#USER_UpgradeDBInstance.Oracle.OGPG.OG) 섹션을 참조하세요.

1. DB 인스턴스에서 사용자 지정 파라미터 그룹을 사용할 경우 업그레이드하려는 새 버전과 호환되는 새 파라미터 그룹을 생성합니다. 자세한 내용은 [파라미터 그룹 고려 사항](USER_UpgradeDBInstance.Oracle.OGPG.md#USER_UpgradeDBInstance.Oracle.OGPG.PG) 섹션을 참조하세요.

1. 업그레이드할 DB 인스턴스의 DB 스냅샷을 생성합니다. 자세한 내용은 [Amazon RDS의 단일 AZ DB 인스턴스에 대한 DB 스냅샷 생성](USER_CreateSnapshot.md) 섹션을 참조하세요.

1. DB 스냅샷을 복구하여 새로운 테스트 DB 인스턴스를 생성합니다. 자세한 내용은 [DB 인스턴스 복원](USER_RestoreFromSnapshot.md) 섹션을 참조하세요.

1. 다음 방법 중 한 가지를 사용하여 이 새로운 테스트 DB 인스턴스를 변경하고 새로운 버전으로 업그레이드합니다.
   + [콘솔](USER_UpgradeDBInstance.Upgrading.md#USER_UpgradeDBInstance.Upgrading.Manual.Console)
   + [AWS CLI](USER_UpgradeDBInstance.Upgrading.md#USER_UpgradeDBInstance.Upgrading.Manual.CLI)
   + [RDS API](USER_UpgradeDBInstance.Upgrading.md#USER_UpgradeDBInstance.Upgrading.Manual.API)

1. 테스트 수행: 
   + 업그레이드한 DB 인스턴스와 관련하여 데이터베이스 및 애플리케이션과 새로운 버전의 호환성을 보장하는 데 필요하다면 최대한 많은 수의 품질 보증 테스트를 실행합니다.
   + 또한 1단계에서 발견된 호환성 문제의 영향을 평가하는 데 필요한 새로운 테스트도 모두 실행합니다.
   + 저장 프로시저와 함수, 트리거를 모두 테스트합니다.
   + 업그레이드한 DB 인스턴스에 대해 애플리케이션의 테스트 버전을 실행합니다. 새 버전에서 애플리케이션이 올바로 작동하는지 확인합니다.
   + 업그레이드한 인스턴스에서 사용할 스토리지를 평가하여 업그레이드 시 추가 스토리지의 필요 여부를 결정합니다. 프러덕션에서 새 버전을 지원하려면 더 큰 인스턴스 클래스를 선택해야 할 수도 있습니다. 자세한 내용은 [DB 인스턴스 클래스](Concepts.DBInstanceClass.md) 섹션을 참조하세요.

1. 모든 테스트가 통과되면 프로덕션 DB 인스턴스로 업그레이드하세요. DB 인스턴스에 대한 쓰기 작업을 허용하기 전에 DB 인스턴스가 제대로 작동하는지 확인하는 것이 좋습니다.

# RDS for Oracle DB 인스턴스 버전 업그레이드
<a name="USER_UpgradeDBInstance.Oracle.Upgrading"></a>



RDS for Oracle DB 인스턴스의 DB 엔진 버전을 수동으로 업그레이드하려면 AWS Management Console, AWS CLI 또는 RDS API를 사용하세요. RDS에서 데이터베이스 업그레이드에 대한 일반적인 정보는 [RDS for Oracle DB 인스턴스 버전 업그레이드](#USER_UpgradeDBInstance.Oracle.Upgrading) 섹션을 참조하세요. 유효한 업그레이드 대상을 가져오려면 AWS CLI [describe-db-engine-versions](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-engine-versions.html) 명령을 사용하세요.

## 콘솔
<a name="USER_UpgradeDBInstance.Oracle.Upgrading.Manual.Console"></a>

**콘솔을 사용하여 RDS for Oracle DB 인스턴스의 엔진 버전을 업그레이드하는 방법**

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)에서 Amazon RDS 콘솔을 엽니다.

1. 탐색 창에서 **데이터베이스**를 선택한 다음 업그레이드하려는 DB 인스턴스를 선택합니다.

1. **수정**을 선택합니다.

1. **DB 엔진 버전**에서 더 높은 데이터베이스 버전을 선택합니다.

1. **계속**해서 수정 사항을 요약한 내용을 확인합니다. 데이터베이스 버전 업그레이드의 영향을 이해해야 합니다. 업그레이드된 DB 인스턴스를 이전 버전으로 다시 변환할 수 없습니다. 계속하기 전에 새 버전으로 데이터베이스와 애플리케이션을 모두 테스트하세요.

1. DB 인스턴스 업그레이드 일정을 결정합니다. 변경 사항을 즉시 적용하려면 **즉시 적용**을 선택합니다. 일부의 경우 이 옵션을 선택하면 중단이 발생할 수 있습니다. 자세한 내용은 [수정 예약 설정 사용](USER_ModifyInstance.ApplyImmediately.md) 섹션을 참조하세요.

1. 확인 페이지에서 변경 내용을 검토합니다. 변경 내용이 정확할 경우 **DB 인스턴스 수정**을 선택하여 변경 내용을 저장합니다.

   그렇지 않으면 [**Back**]을 선택하여 변경 내용을 편집하거나 [**Cancel**]을 선택하여 변경 내용을 취소합니다.

## AWS CLI
<a name="USER_UpgradeDBInstance.Oracle.Upgrading.Manual.CLI"></a>

RDS for Oracle DB 인스턴스의 엔진 버전을 업그레이드하려면 CLI [modify-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) 명령을 사용합니다. 다음 파라미터를 지정합니다.
+ `--db-instance-identifier` - RDS for Oracle DB 인스턴스의 이름입니다.
+ `--engine-version` – 업그레이드할 데이터베이스 엔진의 버전 번호입니다.

  유효한 엔진 버전에 대한 정보를 보려면 AWS CLI [ describe-db-engine-versions](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-engine-versions.html) 명령을 사용합니다.
+ `--allow-major-version-upgrade` - DB 엔진 버전을 업그레이드합니다.
+ `--no-apply-immediately` – 변경 사항이 다음 유지 관리 기간에 적용됩니다. 변경 사항을 바로 적용하려면 `--apply-immediately`를 사용합니다.

**Example**  
다음 예시는 이름이 `myorainst`인 CDB 인스턴스를 현재 버전인 `19.0.0.0.ru-2024-01.rur-2024-01.r1`에서 버전 `21.0.0.0.ru-2024-04.rur-2024-04.r1`로 업그레이드합니다.  
대상 LinuxmacOS, 또는Unix:  

```
1. aws rds modify-db-instance \
2.     --db-instance-identifier myorainst \
3.     --engine-version 21.0.0.0.ru-2024-04.rur-2024-04.r1 \
4.     --allow-major-version-upgrade \
5.     --no-apply-immediately
```
Windows의 경우:  

```
1. aws rds modify-db-instance ^
2.     --db-instance-identifier myorainst ^
3.     --engine-version 21.0.0.0.ru-2024-04.rur-2024-04.r1 ^
4.     --allow-major-version-upgrade ^
5.     --no-apply-immediately
```

## RDS API
<a name="USER_UpgradeDBInstance.Oracle.Upgrading.Manual.API"></a>

RDS for Oracle DB 인스턴스를 업그레이드하려면 [ModifyDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html) 작업을 사용합니다. 다음 파라미터를 지정합니다.
+ `DBInstanceIdentifier` – DB 인스턴스의 이름입니다(예:*`myorainst`* ).
+ `EngineVersion` – 업그레이드할 데이터베이스 엔진의 버전 번호입니다. 유효한 엔진 버전에 대한 정보를 보려면 [ DescribeDBEngineVersions](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBEngineVersions.html) 작업을 사용합니다.
+ `AllowMajorVersionUpgrade` – 메이저 버전 업그레이드를 허용하는지 여부입니다. 그렇게 하려면 값을 `true`로 설정합니다.
+ `ApplyImmediately` – 변경 사항을 즉시 적용하거나 다음 유지 관리 기간에 적용합니다. 변경 사항을 바로 적용하려면 값을 `true`로 설정합니다. 변경 사항을 다음 유지 관리 기간에 적용하려면 값을 `false`로 설정합니다.

# Oracle DB 스냅샷 업그레이드
<a name="USER_UpgradeDBSnapshot.Oracle"></a>

Amazon RDS에서 Oracle DB 스냅샷을 업그레이드하면 데이터베이스가 안전하고 호환 가능해지며 완벽하게 지원됩니다. 이전 Oracle 버전에서 패치 지원이 종료되면 이러한 버전에 연결된 수동 DB 스냅샷을 업그레이드하여 잠재적 취약성이나 서비스 제한을 피할 수 있습니다. 자세한 내용은 [Oracle 엔진 버전 관리](USER_UpgradeDBInstance.Oracle.Overview.md#Oracle.Concepts.Patching) 단원을 참조하십시오.

Amazon RDS는 모든 AWS 리전에서 스냅샷 업그레이드를 지원합니다.

## 콘솔
<a name="USER_UpgradeDBSnapshot.Oracle.Console"></a>

**Oracle DB 스냅샷을 업그레이드하려면**

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)에서 Amazon RDS 콘솔을 엽니다.

1. 탐색 창에서 [**Snapshots**]를 선택한 다음 업그레이드하려는 DB 스냅샷을 선택합니다.

1. **작업**에서 **Upgrade snapshot(스냅샷 업그레이드)**을 선택합니다. **Upgrade snapshot(스냅샷 업그레이드)** 페이지가 표시됩니다.

1. 스냅샷을 업그레이드할 **새 엔진 버전**을 선택합니다.

1. (선택 사항) **옵션 그룹**에서 업그레이드된 DB 스냅샷의 옵션 그룹을 선택합니다. DB 스냅샷을 업그레이드할 때 고려할 옵션 그룹은 DB 인스턴스를 업그레이드할 때와 동일합니다. 자세한 내용은 [옵션 그룹 고려 사항](USER_UpgradeDBInstance.Oracle.OGPG.md#USER_UpgradeDBInstance.Oracle.OGPG.OG) 섹션을 참조하세요.

1. 변경 사항을 저장하려면 **변경 사항 저장**을 선택합니다.

   업그레이드 중에는 이 DB 스냅샷의 모든 스냅샷 작업이 비활성화됩니다. 또한 DB 스냅샷 상태가 **사용 가능**에서 **업그레이드 중**으로 바뀐 다음 완료되면 **활성**으로 바뀝니다 스냅샷 손상 문제로 인해 DB 스냅샷을 업그레이드할 수 없는 경우, 상태가 **사용할 수 없음**으로 바뀝니다. 이 상태로부터 스냅샷을 복구할 수는 없습니다.
**참고**  
DB 스냅샷 업그레이드에 실패하면 스냅샷이 원래 버전의 원래 상태로 롤백됩니다.

## AWS CLI
<a name="USER_UpgradeDBSnapshot.Oracle.CLI"></a>

AWS CLI를 사용하여 Oracle DB 스냅샷을 업그레이드하려면 다음 파라미터와 함께 [modify-db-snapshot](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-snapshot.html) 명령을 호출합니다.
+ `--db-snapshot-identifier` – DB 스냅샷의 이름입니다.
+ `--engine-version` – 스냅샷을 업그레이드할 버전입니다.

또한 다음 파라미터를 포함해야 할 수 있습니다. DB 스냅샷을 업그레이드할 때 고려할 옵션 그룹은 DB 인스턴스를 업그레이드할 때와 동일합니다. 자세한 내용은 [옵션 그룹 고려 사항](USER_UpgradeDBInstance.Oracle.OGPG.md#USER_UpgradeDBInstance.Oracle.OGPG.OG) 섹션을 참조하세요.
+ `--option-group-name` – 업그레이드된 DB 스냅샷에 대한 옵션 그룹입니다.

**Example**  
다음 예제는 DB 스냅샷을 업그레이드합니다.  
대상 LinuxmacOS, 또는Unix:  

```
aws rds modify-db-snapshot \
    --db-snapshot-identifier mydbsnapshot \
    --engine-version 19.0.0.0.ru-2020-10.rur-2020-10.r1 \
    --option-group-name default:oracle-se2-19
```
Windows의 경우:  

```
aws rds modify-db-snapshot ^
    --db-snapshot-identifier mydbsnapshot ^
    --engine-version 19.0.0.0.ru-2020-10.rur-2020-10.r1 ^
    --option-group-name default:oracle-se2-19
```

## RDS API
<a name="USER_UpgradeDBSnapshot.Oracle.API"></a>

Amazon RDS API를 사용하여 Oracle DB 스냅샷을 업그레이드하려면 다음 파라미터와 함께 [ModifyDBSnapshot](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBSnapshot.html) 작업을 호출하십시오.
+ `DBSnapshotIdentifier` – DB 스냅샷의 이름입니다.
+ `EngineVersion` – 스냅샷을 업그레이드할 버전입니다.

`OptionGroupName` 파라미터를 포함해야 할 수도 있습니다. DB 스냅샷을 업그레이드할 때 고려할 옵션 그룹은 DB 인스턴스를 업그레이드할 때와 동일합니다. 자세한 내용은 [옵션 그룹 고려 사항](USER_UpgradeDBInstance.Oracle.OGPG.md#USER_UpgradeDBInstance.Oracle.OGPG.OG) 섹션을 참조하세요.

# RDS for Oracle DB 인스턴스에 서드 파티 소프트웨어 사용
<a name="Oracle.Resources"></a>

도구 및 서드 파티 소프트웨어를 지원하는 RDS for Oracle DB 인스턴스를 호스팅할 수 있습니다.

**Topics**
+ [Amazon RDS for Oracle과 함께 Oracle GoldenGate 사용](Appendix.OracleGoldenGate.md)
+ [Oracle용 RDS에서 Oracle Repository Creation Utility 사용](Oracle.Resources.RCU.md)
+ [Amazon EC2 인스턴스에서 Oracle Connection Manager 구성](oracle-cman.md)
+ [Amazon RDS에서 Oracle에 Siebel Database 설치](Oracle.Resources.Siebel.md)

# Amazon RDS for Oracle과 함께 Oracle GoldenGate 사용
<a name="Appendix.OracleGoldenGate"></a>

Oracle GoldenGate는 데이터베이스 간 트랜잭션 데이터를 수집, 복제 및 관리합니다. 온라인 트랜잭션 처리(OLTP) 시스템에서 데이터베이스와 함께 사용하는 로그 기반 변경 데이터 캡처(CDC) 및 복제 소프트웨어 패키지입니다. Oracle GoldenGate는 원본 데이터베이스에서 가장 최근에 변경된 데이터를 포함하는 추적 파일을 생성합니다. 그런 다음 이러한 파일을 서버로 푸시하고, 서버에서는 트레일 파일을 표준 SQL로 변환하여 대상 데이터베이스에 적용하는 프로세스가 진행됩니다.

RDS for Oracle을 사용하는 Oracle GoldenGate는 다음 기능을 지원합니다.
+ 활성/활성 데이터베이스 복제
+ 재해 복구
+ 데이터 보호
+ 리전 내 및 리전 간 복제
+ 제로 가동 중지 마이그레이션 및 업그레이드
+ RDS for Oracle DB 인스턴스와 비 Oracle 데이터베이스 간 데이터 복제
**참고**  
지원되는 데이터베이스 목록은 Oracle 설명서에서 [Oracle Fusion Middleware 지원 시스템 구성](https://www.oracle.com/middleware/technologies/fusion-certification.html)을 참조하십시오.

RDS for Oracle이 포함된 Oracle GoldenGate를 사용하여 Oracle Database의 메이저 버전으로 업그레이드할 수 있습니다. 예를 들어 Oracle GoldenGate를 사용하여 Oracle Database 11g 온프레미스 데이터베이스를 Amazon RDS DB 인스턴스의 Oracle Database 19c로 업그레이드할 수 있습니다.

**Topics**
+ [Oracle GoldenGate에 대해 지원되는 버전 및 라이선스 옵션](#Appendix.OracleGoldenGate.licensing)
+ [Oracle GoldenGate의 요구 사항 및 제한 사항](#Appendix.OracleGoldenGate.requirements)
+ [Oracle GoldenGate 아키텍처](Appendix.OracleGoldenGate.Overview.md)
+ [Oracle GoldenGate 설정](Appendix.OracleGoldenGate.setting-up.md)
+ [Oracle GoldenGate의 EXTRACT 및 REPLICAT 유틸리티 작업](Appendix.OracleGoldenGate.ExtractReplicat.md)
+ [Oracle GoldenGate 모니터링](Appendix.OracleGoldenGate.Monitoring.md)
+ [Oracle GoldenGate 문제 해결](Appendix.OracleGoldenGate.Troubleshooting.md)

## Oracle GoldenGate에 대해 지원되는 버전 및 라이선스 옵션
<a name="Appendix.OracleGoldenGate.licensing"></a>

Oracle GoldenGate 포함 RDS for Oracle 버전 12c 이상의 Standard Edition 2(SE2) 또는 Enterprise Edition(EE)을 사용할 수 있습니다. 다음 Oracle GoldenGate 기능을 사용할 수 있습니다.
+ Oracle GoldenGate Remote Capture(추출)가 지원됩니다.
+ Capture(추출)는 기존 비 CDB 데이터베이스 아키텍처를 사용하는 RDS for Oracle DB 인스턴스에서 지원됩니다. Oracle GoldenGate 원격 PDB 캡처는 Oracle Database 21c 또는 Oracle Database 19c 버전 19.0.0.0.ru-2024-04.rur-2024-04.r1 이상을 실행하는 CDB에서 지원됩니다.
+ Oracle GoldenGate Remote Delivery(복제)는 CDB가 아닌 아키텍처나 CDB 아키텍처를 사용하는 RDS for Oracle DB 인스턴스에서 지원됩니다. Remote Delivery는 Integrated Replicat(통합 복제), Parallel Replicat(병렬 복제), Coordinated Replicat(조정 복제) 및 클래식 Replicat(복제)를 지원합니다.
+ RDS for Oracle은 Oracle GoldenGate의 Classic(클래식) 및 Microservices(마이크로서비스) 아키텍처를 지원합니다.
+ Oracle GoldenGate DDL과 Sequence(시퀀스) 값 복제는 Integrated(통합) 캡처 모드를 사용할 때 지원됩니다.

사용자는 모든 AWS 리전에서 Amazon RDS와 함께 사용하는 데 필요한 Oracle GoldenGate 라이선싱(BYOL)을 관리해야 합니다. 자세한 내용은 [RDS for Oracle 라이선스 옵션](Oracle.Concepts.Licensing.md) 섹션을 참조하세요.

## Oracle GoldenGate의 요구 사항 및 제한 사항
<a name="Appendix.OracleGoldenGate.requirements"></a>

Oracle GoldenGate 및 RDS for Oracle을 작업할 때는 다음 요구 사항과 제한 사항을 고려해야 합니다.
+ 사용자는 RDS for Oracle과 함께 사용할 수 있도록 Oracle GoldenGate를 설정하고 관리해야 합니다.
+ 소스 및 대상 데이터베이스를 이용해 인증한 Oracle GoldenGate 버전을 설정하는 것은 사용자의 책임입니다. 자세한 내용은 Oracle 설명서에서 [Oracle Fusion Middleware 지원 시스템 구성](https://www.oracle.com/middleware/technologies/fusion-certification.html)을 참조하십시오.
+ Oracle GoldenGate는 다양한 AWS 환경에서 다양한 사용 사례에 사용할 수 있습니다. Oracle GoldenGate와 관련된 지원 관련 문제가 있다면 Oracle Support Services에 문의하십시오.
+ Oracle Transparent Data Encryption(TDE)을 사용하는 RDS for Oracle DB 인스턴스에서 Oracle GoldenGate를 사용할 수 있습니다. 복제된 데이터의 무결성을 유지 관리하려면 Amazon EBS 암호화된 볼륨 또는 추적 파일 암호화를 사용하여 Oracle GoldenGate 허브에서 암호화를 구성합니다. 또한 Oracle GoldenGate 허브와 원본 및 대상 데이터베이스 인스턴스 간에 전송되는 데이터에 대한 암호화를 구성합니다. RDS for Oracle DB 인스턴스는 [Oracle 보안 소켓 Layer](Appendix.Oracle.Options.SSL.md) 또는 [Oracle 기본 네트워크 암호화](Appendix.Oracle.Options.NetworkEncryption.md)을 사용하여 암호화를 지원합니다.

# Oracle GoldenGate 아키텍처
<a name="Appendix.OracleGoldenGate.Overview"></a>

Amazon RDS용 OracleGoldenGate 아키텍처는 다음과 같은 분리된 모듈로 구성됩니다.

원본 데이터베이스  
원본 데이터베이스는 온프레미스 Oracle 데이터베이스, Amazon EC2 인스턴스의 Oracle 데이터베이스 또는 Amazon RDS DB 인스턴스의 Oracle 데이터베이스입니다.

Oracle GoldenGate 허브  
Oracle GoldenGate 허브는 트랜잭션 정보를 원본 데이터베이스에서 대상 데이터베이스로 이동합니다. 허브는 다음 중 하나일 수 있습니다.  
+ Oracle 데이터베이스 및 Oracle GoldenGate가 설치된 Amazon EC2 인스턴스
+ 온프레미스 Oracle 설치
2개 이상의 Amazon EC2 허브가 있을 수 있습니다. 리전 간 복제에 Oracle GoldenGate를 사용하는 경우 허브를 2개 사용하는 것이 좋습니다.

대상 데이터베이스:  
대상 데이터베이스는 Amazon RDS DB 인스턴스, Amazon EC2 인스턴스 또는 온프레미스 위치에 있을 수 있습니다.

다음 섹션에서는 Amazon RDS의 Oracle GoldenGate에 대한 일반적인 시나리오를 설명합니다.

**Topics**
+ [온프레미스 원본 데이터베이스 및 Oracle GoldenGate 허브](#Appendix.OracleGoldenGate.on-prem-source-gg-hub)
+ [온프레미스 원본 데이터베이스 및 Amazon EC2 허브](#Appendix.OracleGoldenGate.on-prem-source-ec2-hub)
+ [Amazon RDS 원본 데이터베이스 및 Amazon EC2 허브](#Appendix.OracleGoldenGate.rds-source-ec2-hub)
+ [Amazon EC2 원본 데이터베이스 및 Amazon EC2 허브](#Appendix.OracleGoldenGate.ec2-source-ec2-hub)
+ [서로 다른 여러 AWS 리전의 Amazon EC2 허브](#Appendix.OracleGoldenGate.cross-region-hubs)

## 온프레미스 원본 데이터베이스 및 Oracle GoldenGate 허브
<a name="Appendix.OracleGoldenGate.on-prem-source-gg-hub"></a>

이 시나리오에서는 온프레미스 Oracle 원본 데이터베이스와 온프레미스 Oracle GoldenGate 허브가 대상 Amazon RDS DB 인스턴스에 데이터를 제공합니다.

![\[Amazon RDS를 사용하는 Oracle GoldenGate 구성 0\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/oracle-gg0.png)


## 온프레미스 원본 데이터베이스 및 Amazon EC2 허브
<a name="Appendix.OracleGoldenGate.on-prem-source-ec2-hub"></a>

이 시나리오에서는 온프레미스 Oracle 데이터베이스가 원본 데이터베이스 역할을 합니다. 이 데이터베이스가 Amazon EC2 인스턴스 허브에 연결됩니다. 이 허브는 대상 RDS for Oracle DB 인스턴스에 데이터를 제공합니다.

![\[Amazon RDS를 사용하는 Oracle GoldenGate 구성 1\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/oracle-gg1.png)


## Amazon RDS 원본 데이터베이스 및 Amazon EC2 허브
<a name="Appendix.OracleGoldenGate.rds-source-ec2-hub"></a>

이 시나리오에서는 RDS for Oracle DB 인스턴스가 원본 데이터베이스 역할을 합니다. 이 데이터베이스가 Amazon EC2 인스턴스 허브에 연결됩니다. 이 허브는 대상 RDS for Oracle DB 인스턴스에 데이터를 제공합니다.

![\[Amazon RDS를 사용하는 Oracle GoldenGate 구성 2\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/oracle-gg2.png)


## Amazon EC2 원본 데이터베이스 및 Amazon EC2 허브
<a name="Appendix.OracleGoldenGate.ec2-source-ec2-hub"></a>

이 시나리오에서는 Amazon EC2 인스턴스의 Oracle 데이터베이스가 소스 데이터베이스 역할을 합니다. 이 데이터베이스가 Amazon EC2 인스턴스 허브에 연결됩니다. 이 허브는 대상 RDS for Oracle DB 인스턴스에 데이터를 제공합니다.

![\[Amazon RDS를 사용하는 Oracle GoldenGate 구성 3\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/oracle-gg3.png)


## 서로 다른 여러 AWS 리전의 Amazon EC2 허브
<a name="Appendix.OracleGoldenGate.cross-region-hubs"></a>

이 시나리오에서는 Amazon RDS DB 인스턴스의 Oracle 데이터베이스가 동일한 AWS 리전의 Amazon EC2 인스턴스 허브에 연결되어 있습니다. 허브는 다른 AWS 리전의 Amazon EC2 인스턴스 허브에 연결되어 있습니다. 이 두 번째 허브는 두 번째 Amazon EC2 인스턴스 허브와 동일한 AWS 리전의 대상 RDS for Oracle DB 인스턴스에 데이터를 제공합니다.

![\[Amazon RDS를 사용하는 Oracle GoldenGate 구성 4\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/oracle-gg4.png)


**참고**  
온프레미스 환경에서 Oracle GoldenGate를 실행하는 데 영향을 미치는 문제는 AWS에서 Oracle GoldenGate를 실행하는 데도 영향을 미칩니다. Oracle GoldenGate 허브를 모니터링하여 장애 조치가 발생하는 경우 `EXTRACT`와 `REPLICAT`가 재개되는지 확인하는 것이 좋습니다. Oracle GoldenGate 허브가 Amazon EC2 인스턴스에서 실행되어 Amazon RDS에서 Oracle GoldenGate 허브를 관리하지 않으므로 이 허브가 실행 중인지 확인할 수 없습니다.

# Oracle GoldenGate 설정
<a name="Appendix.OracleGoldenGate.setting-up"></a>

Amazon RDS를 사용하는 Oracle GoldenGate를 설정하려면 Amazon EC2 인스턴스에서 허브를 구성한 후 소스 및 대상 데이터베이스를 구성해야 합니다. 다음 섹션에서는 Amazon RDS for Oracle과 함께 사용하도록 Oracle GoldenGate를 설치하는 방법을 보여줍니다.

**Topics**
+ [Amazon EC2에 Oracle GoldenGate 허브 설정](#Appendix.OracleGoldenGate.Hub)
+ [Amazon RDS에서 Oracle GoldenGate와 함께 사용할 소스 데이터베이스 설정](#Appendix.OracleGoldenGate.Source)
+ [Amazon RDS에서 Oracle GoldenGate와 함께 사용할 대상 데이터베이스 설정](#Appendix.OracleGoldenGate.Target)

## Amazon EC2에 Oracle GoldenGate 허브 설정
<a name="Appendix.OracleGoldenGate.Hub"></a>

Amazon EC2 인스턴스에서 Oracle GoldenGate 허브를 생성하려면 먼저 Oracle DBMS의 전체 클라이언트 설치가 완료된 Amazon EC2 인스턴스를 생성해야 합니다. Amazon EC2 인스턴스에는 Oracle GoldenGate 소프트웨어도 설치되어 있어야 합니다. Oracle GoldenGate 소프트웨어 버전은 소스 및 대상 데이터베이스 버전에 따라 달라집니다. Oracle GoldenGate 설치에 대한 자세한 내용은 [Oracle GoldenGate 설명서](https://docs.oracle.com/en/middleware/goldengate/core/index.html)를 참조하십시오.

Oracle GoldenGate 허브 역할을 하는 Amazon EC2 인스턴스는 원본 데이터베이스의 트랜잭션 정보를 추적 파일로 저장 및 처리합니다. 이 프로세스를 지원하려면 다음 요구 사항을 충족해야 합니다.
+ 트레일 파일을 위한 충분한 저장 공간을 할당한 상태여야 합니다.
+ Amazon EC2 인스턴스에 해당 데이터 용량을 관리할 수 있는 충분한 처리 능력이 있어야 합니다.
+ 트랜잭션 정보를 추적 파일에 기록하기 전에 해당 정보를 저장할 충분한 메모리가 EC2 인스턴스에 있어야 합니다.

**Amazon EC2 인스턴스에서 Oracle GoldenGate 클래식 아키텍처 허브를 설정하려면**

1. Oracle GoldenGate 디렉터리에서 하위 디렉터리를 만듭니다.

   Amazon EC2 명령줄 쉘에서 Oracle GoldenGate 명령 인터프리터인 `ggsci`를 시작합니다. `CREATE SUBDIRS` 명령은 `/gg` 디렉터리에 파라미터, 보고서 및 체크포인트 파일용 하위 디렉터리를 만듭니다.

   ```
   prompt$ cd /gg
   prompt$ ./ggsci
   
   GGSCI> CREATE SUBDIRS
   ```

1. `mgr.prm` 파일을 구성합니다.

   다음 예에서는 `$GGHOME/dirprm/mgr.prm` 파일에 라인을 추가합니다.

   ```
   PORT 8199
   PurgeOldExtracts ./dirdat/*, UseCheckpoints, MINKEEPDAYS 5
   ```

1. 관리자를 시작합니다.

   다음 예제에서는 `ggsci`를 시작하고 `start mgr` 명령을 실행합니다.

   ```
   GGSCI> start mgr
   ```

이제 Oracle GoldenGate 허브를 사용할 수 있습니다.

## Amazon RDS에서 Oracle GoldenGate와 함께 사용할 소스 데이터베이스 설정
<a name="Appendix.OracleGoldenGate.Source"></a>

다음 작업을 완료하여 Oracle GoldenGate에서 사용할 소스 데이터베이스를 설정합니다.

**Topics**
+ [1단계: 소스 데이터베이스에서 보충 로깅 켜기](#Appendix.OracleGoldenGate.Source.Logging)
+ [2단계: ENABLE\$1GOLDENGATE\$1REPLICATION 초기화 파라미터를 true로 설정](#Appendix.OracleGoldenGate.Source.enable-gg-rep)
+ [3단계: 소스 데이터베이스에서 로그 보존 기간 설정](#Appendix.OracleGoldenGate.Source.Retention)
+ [4단계: 소스 데이터베이스에서 Oracle GoldenGate 사용자 계정을 생성합니다.](#Appendix.OracleGoldenGate.Source.Account)
+ [5단계: 소스 데이터베이스에 사용자 계정 권한 부여](#Appendix.OracleGoldenGate.Source.Privileges)
+ [6단계: 소스 데이터베이스의 TNS 별칭 추가](#Appendix.OracleGoldenGate.Source.TNS)

### 1단계: 소스 데이터베이스에서 보충 로깅 켜기
<a name="Appendix.OracleGoldenGate.Source.Logging"></a>

최소 데이터베이스 수준 보충 로깅을 설정하려면 다음 PL/SQL 프로시저를 실행합니다.

```
EXEC rdsadmin.rdsadmin_util.alter_supplemental_logging(p_action => 'ADD')
```

### 2단계: ENABLE\$1GOLDENGATE\$1REPLICATION 초기화 파라미터를 true로 설정
<a name="Appendix.OracleGoldenGate.Source.enable-gg-rep"></a>

`ENABLE_GOLDENGATE_REPLICATION` 초기화 파라미터를 `true`로 설정하면 데이터베이스 서비스가 논리적 복제를 지원할 수 있습니다. 소스 데이터베이스가 Amazon RDS DB 인스턴스에 있는 경우 파라미터 그룹을 DB 인스턴스에 할당하고 `ENABLE_GOLDENGATE_REPLICATION` 초기화 파라미터를 `true`로 설정해야 합니다. `ENABLE_GOLDENGATE_REPLICATION` 초기화 파라미터에 대한 자세한 내용은 [Oracle 데이터베이스 설명서](https://docs.oracle.com/en/database/oracle/oracle-database/19/refrn/ENABLE_GOLDENGATE_REPLICATION.html)를 참조하세요.

### 3단계: 소스 데이터베이스에서 로그 보존 기간 설정
<a name="Appendix.OracleGoldenGate.Source.Retention"></a>

보관된 다시 실행 로그를 유지하도록 원본 데이터베이스를 구성했는지 확인합니다. 다음 지침을 참고하세요.
+ 로그 보존 기간을 시간 단위로 지정합니다. 최소값은 1시간입니다.
+ 소스 DB 인스턴스의 잠재적 가동 중지 시간, 잠재적 통신 시간, 소스 인스턴스의 네트워킹 문제가 발생할 잠재적 기간보다 긴 기간을 설정합니다. 이러한 기간을 통해 Oracle GoldenGate는 필요에 따라 원본 인스턴스에서 로그를 복구할 수 있습니다.
+ 인스턴스에 파일을 저장할 스토리지가 충분한지 확인합니다.

예를 들어 보관된 다시 실행 로그의 보존 기간을 24시간으로 설정합니다.

```
EXEC rdsadmin.rdsadmin_util.set_configuration('archivelog retention hours',24)
```

로그 보존을 활성화하지 않거나 보존 값이 너무 작으면 다음과 비슷한 오류 메시지가 표시됩니다.

```
2022-03-06 06:17:27  ERROR   OGG-00446  error 2 (No such file or directory) 
opening redo log /rdsdbdata/db/GGTEST3_A/onlinelog/o1_mf_2_9k4bp1n6_.log for sequence 1306 
Not able to establish initial position for begin time 2022-03-06 06:16:55.
```

DB 인스턴스는 보관된 다시 실행 로그를 보관하니, 파일을 저장할 공간이 충분한지 확인해야 합니다. 지난 *num\$1hours*시간 동안 사용한 공간의 양을 확인하려면 다음 쿼리를 사용하여 *num\$1hours*를 시간 숫자로 바꿔야 합니다.

```
SELECT SUM(BLOCKS * BLOCK_SIZE) BYTES FROM V$ARCHIVED_LOG 
   WHERE NEXT_TIME>=SYSDATE-num_hours/24 AND DEST_ID=1;
```

### 4단계: 소스 데이터베이스에서 Oracle GoldenGate 사용자 계정을 생성합니다.
<a name="Appendix.OracleGoldenGate.Source.Account"></a>

Oracle GoldenGate는 데이터베이스 사용자로 실행되며 소스 데이터베이스에 대한 다시 실행 및 저장된 다시 실행 로그에 액세스할 수 있는 적절한 데이터베이스 권한이 필요합니다. 이러한 권한을 제공하려면 소스 데이터베이스에서 사용자 계정을 생성해야 합니다. Oracle GoldenGate 사용자 계정 권한에 대한 자세한 내용은 [Oracle 설명서](https://docs.oracle.com/en/middleware/goldengate/core/19.1/oracle-db/establishing-oracle-goldengate-credentials.html#GUID-79122058-27B0-4FB6-B3DC-B7D1B67EB053)를 참조하세요.

다음 문은 `oggadm1`이라는 사용자 계정을 생성합니다.

```
CREATE TABLESPACE administrator;
CREATE USER oggadm1  IDENTIFIED BY "password"
   DEFAULT TABLESPACE ADMINISTRATOR TEMPORARY TABLESPACE TEMP;
ALTER USER oggadm1 QUOTA UNLIMITED ON administrator;
```

**참고**  
보안 모범 사례로 여기에 표시된 프롬프트 이외의 암호를 지정하는 것이 좋습니다.

### 5단계: 소스 데이터베이스에 사용자 계정 권한 부여
<a name="Appendix.OracleGoldenGate.Source.Privileges"></a>

이 작업에서는 소스 데이터베이스에서 데이터베이스 사용자에게 필요한 계정 권한을 부여합니다.

**소스 데이터베이스에서 계정 권한을 부여하려면**

1. SQL 명령 `grant`와 `rdsadmin.rdsadmin_util` 프로시저 `grant_sys_object`를 사용하여 Oracle GoldenGate 사용자 계정에 필요한 권한을 부여합니다. 다음 문은 `oggadm1`이라는 사용자에게 권한을 부여합니다.

   ```
   GRANT CREATE SESSION, ALTER SESSION TO oggadm1;
   GRANT RESOURCE TO oggadm1;
   GRANT SELECT ANY DICTIONARY TO oggadm1;
   GRANT FLASHBACK ANY TABLE TO oggadm1;
   GRANT SELECT ANY TABLE TO oggadm1;
   GRANT SELECT_CATALOG_ROLE TO rds_master_user_name WITH ADMIN OPTION;
   EXEC rdsadmin.rdsadmin_util.grant_sys_object ('DBA_CLUSTERS', 'OGGADM1');
   GRANT EXECUTE ON DBMS_FLASHBACK TO oggadm1;
   GRANT SELECT ON SYS.V_$DATABASE TO oggadm1;
   GRANT ALTER ANY TABLE TO oggadm1;
   ```

1. Oracle GoldenGate 관리자가 되려면 사용자 계정에 필요한 권한을 부여합니다. 다음 PL/SQL 프로그램을 실행합니다.

   ```
   EXEC rdsadmin.rdsadmin_dbms_goldengate_auth.grant_admin_privilege (
       grantee                 => 'OGGADM1',
       privilege_type          => 'capture',
       grant_select_privileges => true, 
       do_grants               => TRUE);
   ```

   권한을 취소하려면 동일한 패키지의 `revoke_admin_privilege` 프로시저를 사용합니다.

### 6단계: 소스 데이터베이스의 TNS 별칭 추가
<a name="Appendix.OracleGoldenGate.Source.TNS"></a>

Oracle 홈의 `$ORACLE_HOME/network/admin/tnsnames.ora`에 다음 항목을 추가하여 `EXTRACT` 프로세스에서 사용할 수 있습니다. `tnsnames.ora` 파일에 대한 자세한 내용은 [Oracle 설명서](https://docs.oracle.com/en/database/oracle/oracle-database/19/netrf/local-naming-parameters-in-tns-ora-file.html#GUID-7F967CE5-5498-427C-9390-4A5C6767ADAA)를 참조하세요.

```
OGGSOURCE=
   (DESCRIPTION= 
        (ENABLE=BROKEN)
        (ADDRESS_LIST= 
            (ADDRESS=(PROTOCOL=TCP)(HOST=goldengate-source.abcdef12345.us-west-2.rds.amazonaws.com)(PORT=8200)))
        (CONNECT_DATA=(SERVICE_NAME=ORCL))
    )
```

## Amazon RDS에서 Oracle GoldenGate와 함께 사용할 대상 데이터베이스 설정
<a name="Appendix.OracleGoldenGate.Target"></a>

이 작업에서는 Oracle GoldenGate와 함께 사용할 대상 DB 인스턴스를 설정합니다.

**Topics**
+ [1단계: ENABLE\$1GOLDENGATE\$1REPLICATION 초기화 파라미터를 true로 설정](#Appendix.OracleGoldenGate.Target.enable-gg-rep)
+ [2단계: 대상 데이터베이스에서 Oracle GoldenGate 사용자 계정을 생성합니다.](#Appendix.OracleGoldenGate.Target.User)
+ [3단계: 대상 데이터베이스에서 계정 권한 부여](#Appendix.OracleGoldenGate.Target.Privileges)
+ [4단계: 대상 데이터베이스의 TNS 별칭 추가](#Appendix.OracleGoldenGate.Target.TNS)

### 1단계: ENABLE\$1GOLDENGATE\$1REPLICATION 초기화 파라미터를 true로 설정
<a name="Appendix.OracleGoldenGate.Target.enable-gg-rep"></a>

`ENABLE_GOLDENGATE_REPLICATION` 초기화 파라미터를 `true`로 설정하면 데이터베이스 서비스가 논리적 복제를 지원할 수 있습니다. 소스 데이터베이스가 Amazon RDS DB 인스턴스에 있는 경우 파라미터 그룹을 DB 인스턴스에 할당하고 `ENABLE_GOLDENGATE_REPLICATION` 초기화 파라미터를 `true`로 설정해야 합니다. `ENABLE_GOLDENGATE_REPLICATION` 초기화 파라미터에 대한 자세한 내용은 [Oracle 데이터베이스 설명서](https://docs.oracle.com/en/database/oracle/oracle-database/19/refrn/ENABLE_GOLDENGATE_REPLICATION.html)를 참조하세요.

### 2단계: 대상 데이터베이스에서 Oracle GoldenGate 사용자 계정을 생성합니다.
<a name="Appendix.OracleGoldenGate.Target.User"></a>

Oracle GoldenGate는 데이터베이스 사용자로 실행되며 적절한 데이터베이스 권한이 필요합니다. 이러한 권한을 부여하려면 대상 데이터베이스에서 사용자 계정을 생성해야 합니다.

다음 문은 `oggadm1`이라는 사용자를 생성합니다.

```
CREATE TABLESPSACE administrator;
CREATE USER oggadm1  IDENTIFIED BY "password" 
   DEFAULT TABLESPACE administrator 
   TEMPORARY TABLESPACE temp;
ALTER USER oggadm1 QUOTA UNLIMITED ON administrator;
```

**참고**  
보안 모범 사례로 여기에 표시된 프롬프트 이외의 암호를 지정하는 것이 좋습니다.

### 3단계: 대상 데이터베이스에서 계정 권한 부여
<a name="Appendix.OracleGoldenGate.Target.Privileges"></a>

이 작업에서는 대상 데이터베이스에서 데이터베이스 사용자에게 필요한 계정 권한을 부여합니다.

**대상 데이터베이스에서 계정 권한 부여**

1. 대상 데이터베이스에서 Oracle GoldenGate 사용자 계정에 필요한 권한을 부여합니다. 다음 예제에서는 `oggadm1`에 권한을 부여합니다.

   ```
   GRANT CREATE SESSION        TO oggadm1;
   GRANT ALTER SESSION         TO oggadm1;
   GRANT CREATE CLUSTER        TO oggadm1;
   GRANT CREATE INDEXTYPE      TO oggadm1;
   GRANT CREATE OPERATOR       TO oggadm1;
   GRANT CREATE PROCEDURE      TO oggadm1;
   GRANT CREATE SEQUENCE       TO oggadm1;
   GRANT CREATE TABLE          TO oggadm1;
   GRANT CREATE TRIGGER        TO oggadm1;
   GRANT CREATE TYPE           TO oggadm1;
   GRANT SELECT ANY DICTIONARY TO oggadm1;
   GRANT CREATE ANY TABLE      TO oggadm1;
   GRANT ALTER ANY TABLE       TO oggadm1;
   GRANT LOCK ANY TABLE        TO oggadm1;
   GRANT SELECT ANY TABLE      TO oggadm1;
   GRANT INSERT ANY TABLE      TO oggadm1;
   GRANT UPDATE ANY TABLE      TO oggadm1;
   GRANT DELETE ANY TABLE      TO oggadm1;
   ```

1. Oracle GoldenGate 관리자가 되려면 사용자 계정에 필요한 권한을 부여합니다. 다음 PL/SQL 프로그램을 실행합니다.

   ```
   EXEC rdsadmin.rdsadmin_dbms_goldengate_auth.grant_admin_privilege (
       grantee                 => 'OGGADM1',
       privilege_type          => 'apply',
       grant_select_privileges => true, 
       do_grants               => TRUE);
   ```

   권한을 취소하려면 동일한 패키지의 `revoke_admin_privilege` 프로시저를 사용합니다.

### 4단계: 대상 데이터베이스의 TNS 별칭 추가
<a name="Appendix.OracleGoldenGate.Target.TNS"></a>

Oracle 홈의 `$ORACLE_HOME/network/admin/tnsnames.ora`에 다음 항목을 추가하여 `REPLICAT` 프로세스에서 사용할 수 있습니다. Oracle 멀티테넌트 데이터베이스의 경우 TNS 별칭이 PDB의 서비스 이름을 가리키는지 확인하세요. `tnsnames.ora` 파일에 대한 자세한 내용은 [Oracle 설명서](https://docs.oracle.com/en/database/oracle/oracle-database/19/netrf/local-naming-parameters-in-tns-ora-file.html#GUID-7F967CE5-5498-427C-9390-4A5C6767ADAA)를 참조하세요.

```
OGGTARGET=
    (DESCRIPTION= 
        (ENABLE=BROKEN)
        (ADDRESS_LIST= 
            (ADDRESS=(PROTOCOL=TCP)(HOST=goldengate-target.abcdef12345.us-west-2.rds.amazonaws.com)(PORT=8200)))
        (CONNECT_DATA=(SERVICE_NAME=ORCL))
    )
```

# Oracle GoldenGate의 EXTRACT 및 REPLICAT 유틸리티 작업
<a name="Appendix.OracleGoldenGate.ExtractReplicat"></a>

Oracle GoldenGate 유틸리티인 `EXTRACT`와 `REPLICAT`는 함께 작동하여 트레일 파일을 사용한 증분형 트랜잭션 복제를 통해 소스 및 대상 데이터베이스의 동기 상태를 유지합니다. 원본 데이터베이스에 대해 발생하는 모든 변경 내용은 `EXTRACT`에 의해 자동으로 감지되고 서식이 지정되어 Oracle GoldenGate 온프레미스 또는 Amazon EC2 인스턴스 허브의 트레일 파일로 전송됩니다. 초기 로드가 완료된 후에는 `REPLICAT` 유틸리티에서 이러한 파일의 데이터를 읽어 대상 데이터베이스로 복제합니다.

## Oracle GoldenGate EXTRACT 유틸리티 실행
<a name="Appendix.OracleGoldenGate.Extract"></a>

`EXTRACT` 유틸리티는 소스 데이터베이스에서 데이터를 검색 및 변환하고 트레일 파일로 출력합니다. 기본 프로세스는 다음과 같습니다.

1. `EXTRACT`가 트랜잭션 세부 정보를 메모리나 임시 디스크 스토리지의 대기열에 저장합니다.

1. 소스 데이터베이스가 트랜잭션을 커밋합니다.

1. `EXTRACT`가 트랜잭션 세부 정보를 트레일 파일에 기록합니다.

1. 추적 파일은 이러한 세부 정보를 Oracle GoldenGate 온프레미스 또는 Amazon EC2 인스턴스 허브로 라우팅한 다음 대상 데이터베이스로 라우팅합니다.

다음 단계는 `EXTRACT` 유틸리티를 시작하고, 소스 데이터베이스 `OGGSOURCE`의 `EXAMPLE.TABLE`에서 데이터를 캡처하고, 트레일 파일을 생성합니다.

**EXTRACT 유틸리티를 실행하려면**

1. Oracle GoldenGate 허브(온프레미스 또는 Amazon EC2 인스턴스)에서 `EXTRACT` 파라미터 파일을 구성합니다. 다음 목록은 `$GGHOME/dirprm/eabc.prm`이라는 예제 `EXTRACT` 파라미터 파일을 보여 줍니다.

   ```
   EXTRACT EABC
    
   USERID oggadm1@OGGSOURCE, PASSWORD "my-password"
   EXTTRAIL /path/to/goldengate/dirdat/ab 
    
   IGNOREREPLICATES
   GETAPPLOPS
   TRANLOGOPTIONS EXCLUDEUSER OGGADM1
   	 
   TABLE EXAMPLE.TABLE;
   ```

1. Oracle GoldenGate 허브에서 소스 데이터베이스에 로그인하고 Oracle GoldenGate 명령줄 인터페이스 `ggsci`를 시작합니다. 다음 예제에서는 로그인 형식을 보여 줍니다.

   ```
   dblogin oggadm1@OGGSOURCE
   ```

1. 데이터베이스 테이블에 대한 보충 로깅을 사용하기 위해 트랜잭션 데이터를 추가합니다.

   ```
   add trandata EXAMPLE.TABLE
   ```

1. `ggsci` 명령줄에서 다음 명령을 사용하여 `EXTRACT` 유틸리티를 활성화합니다.

   ```
   add extract EABC tranlog, INTEGRATED tranlog, begin now
   add exttrail /path/to/goldengate/dirdat/ab 
      extract EABC, 
      MEGABYTES 100
   ```

1. `EXTRACT` 유틸리티를 데이터베이스에 등록하여 보관 로그가 삭제되지 않도록 합니다. 이 작업을 사용하면 필요한 경우 이전의 커밋되지 않은 트랜잭션을 복구할 수 있습니다. `EXTRACT` 유틸리티를 데이터베이스에 등록하려면 다음 명령을 사용합니다.

   ```
   register EXTRACT EABC, DATABASE
   ```

1. 다음 명령을 이용해 `EXTRACT` 유틸리티를 시작합니다.

   ```
   start EABC
   ```

## Oracle GoldenGate REPLICAT 유틸리티 실행
<a name="Appendix.OracleGoldenGate.Replicat"></a>

`REPLICAT` 유틸리티는 트레일 파일의 트랜잭션 정보를 대상 데이터베이스로 "푸시"합니다.

다음 단계는 캡처된 데이터를 대상 데이터베이스 `OGGTARGET`의 `EXAMPLE.TABLE` 테이블에 복제할 수 있도록 `REPLICAT` 유틸리티를 활성화하고 시작합니다.

**REPLICATE 유틸리티를 실행하려면**

1. Oracle GoldenGate 허브(온프레미스 또는 EC2 인스턴스)에서 `REPLICAT` 파라미터 파일을 구성합니다. 다음 목록은 `$GGHOME/dirprm/rabc.prm`이라는 예제 `REPLICAT` 파라미터 파일을 보여 줍니다.

   ```
   REPLICAT RABC
    
   USERID oggadm1@OGGTARGET, password "my-password"
    
   ASSUMETARGETDEFS
   MAP EXAMPLE.TABLE, TARGET EXAMPLE.TABLE;
   ```
**참고**  
보안 모범 사례로 여기에 표시된 프롬프트 이외의 암호를 지정하는 것이 좋습니다.

1. 대상 데이터베이스에 로그인하고 Oracle GoldenGate 명령줄 인터페이스(`ggsci`)를 시작합니다. 다음 예제에서는 로그인 형식을 보여 줍니다.

   ```
   dblogin userid oggadm1@OGGTARGET
   ```

1. `ggsci` 명령줄을 사용하여 체크포인트 테이블을 추가합니다. 표시된 사용자는 대상 테이블 스키마 소유자가 아니라 Oracle GoldenGate 사용자 계정이어야 합니다. 다음 예제에서는 `gg_checkpoint`라는 체크포인트 테이블을 생성합니다.

   ```
   add checkpointtable oggadm1.oggchkpt
   ```

1. `REPLICAT` 유틸리티를 활성화하려면 다음 명령을 사용합니다.

   ```
   add replicat RABC EXTTRAIL /path/to/goldengate/dirdat/ab CHECKPOINTTABLE oggadm1.oggchkpt 
   ```

1. 다음 명령을 사용하여 `REPLICAT` 유틸리티를 시작합니다.

   ```
   start RABC
   ```

# Oracle GoldenGate 모니터링
<a name="Appendix.OracleGoldenGate.Monitoring"></a>

Oracle GoldenGate를 복제에 사용하는 경우 Oracle GoldenGate 프로세스가 실행 중이고 소스 및 대상 데이터베이스가 동기화되었는지 확인하세요. 다음 모니터링 도구를 사용할 수 있습니다.
+ [Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html)는 GoldenGate 오류 로그를 모니터링하는 데 이 패턴으로 사용되는 모니터링 서비스입니다.
+ [Amazon SNS](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/US_SetupSNS.html)는 이메일 알림을 보내는 데 이 패턴으로 사용되는 메시지 알림 서비스입니다.

자세한 지침은 [Amazon CloudWatch를 사용한 Oracle GoldenGate 로그 모니터링](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/monitor-oracle-goldengate-logs-by-using-amazon-cloudwatch.html)을 참조하세요.

# Oracle GoldenGate 문제 해결
<a name="Appendix.OracleGoldenGate.Troubleshooting"></a>

이 섹션에서는 Amazon RDS for Oracle과 함께 Oracle GoldenGate를 사용할 때 가장 자주 발생하는 문제를 설명합니다.

**Topics**
+ [온라인 다시 실행 로그를 여는 중 발생하는 오류](#Appendix.OracleGoldenGate.Troubleshooting.Logs)
+ [Oracle GoldenGate는 제대로 구성된 것으로 보이나 복제가 작동하지 않음](#Appendix.OracleGoldenGate.Troubleshooting.Replication)
+ [SYS."\$1DBA\$1APPLY\$1CDR\$1INFO"에 대한 쿼리 때문에 통합 REPLICAT가 느려집니다.](#Appendix.OracleGoldenGate.IR)

## 온라인 다시 실행 로그를 여는 중 발생하는 오류
<a name="Appendix.OracleGoldenGate.Troubleshooting.Logs"></a>

보관된 다시 실행 로그를 유지하도록 소스 데이터베이스를 구성했는지 확인합니다. 다음 지침을 참고하세요.
+ 로그 보존 기간을 시간 단위로 지정합니다. 최소값은 1시간입니다.
+ 소스 DB 인스턴스의 잠재적 가동 중지 시간, 잠재적 통신 시간, 소스 DB 인스턴스의 네트워킹 문제가 발생할 잠재적 기간보다 긴 기간을 설정합니다. 이러한 기간을 통해 Oracle GoldenGate는 필요에 따라 소스 DB 인스턴스에서 로그를 복구할 수 있습니다.
+ 인스턴스에 파일을 저장할 스토리지가 충분한지 확인합니다.

로그 보존을 활성화하지 않거나 보존 값이 너무 작으면 다음과 비슷한 오류 메시지가 표시됩니다.

```
2022-03-06 06:17:27  ERROR   OGG-00446  error 2 (No such file or directory) 
opening redo log /rdsdbdata/db/GGTEST3_A/onlinelog/o1_mf_2_9k4bp1n6_.log for sequence 1306 
Not able to establish initial position for begin time 2022-03-06 06:16:55.
```

## Oracle GoldenGate는 제대로 구성된 것으로 보이나 복제가 작동하지 않음
<a name="Appendix.OracleGoldenGate.Troubleshooting.Replication"></a>

기존 테이블의 경우 Oracle GoldenGate이 작동할 SCN을 지정해야 합니다.

**이 문제를 해결하려면**

1. 소스 데이터베이스에 로그인하고 Oracle GoldenGate 명령줄 인터페이스(`ggsci`)를 시작합니다. 다음 예제에서는 로그인 형식을 보여 줍니다.

   ```
   dblogin userid oggadm1@OGGSOURCE
   ```

1. `ggsci` 명령줄을 사용하여 `EXTRACT` 프로세스에 대한 시작 SCN을 설정합니다. 다음 예제에서는 `EXTRACT`을 위한 SCN을 223274로 설정합니다.

   ```
   ALTER EXTRACT EABC SCN 223274
   start EABC
   ```

1. 대상 데이터베이스에 로그인합니다. 다음 예제에서는 로그인 형식을 보여 줍니다.

   ```
   dblogin userid oggadm1@OGGTARGET
   ```

1. `ggsci` 명령줄을 사용하여 `REPLICAT` 프로세스에 대한 시작 SCN을 설정합니다. 다음 예제에서는 `REPLICAT`을 위한 SCN을 223274로 설정합니다.

   ```
   start RABC atcsn 223274
   ```

## SYS."\$1DBA\$1APPLY\$1CDR\$1INFO"에 대한 쿼리 때문에 통합 REPLICAT가 느려집니다.
<a name="Appendix.OracleGoldenGate.IR"></a>

Oracle GoldenGate 충돌 감지 및 해결(CDR) 기능은 기본적인 충돌 해결 루틴을 제공합니다. 예를 들어 CDR은 `INSERT` 문의 고유한 충돌 문제를 해결할 수 있습니다.

CDR이 충돌을 해결할 때, 일시적으로 예외 테이블 `_DBA_APPLY_CDR_INFO`에 레코드를 삽입할 수 있습니다. 통합 `REPLICAT`는 나중에 이러한 레코드를 삭제합니다. 드문 경우에, 통합 `REPLICAT`는 많은 수의 충돌을 처리할 수 있지만 새로운 통합 `REPLICAT`는 이를 대체하지 않습니다. `_DBA_APPLY_CDR_INFO`의 기존 행은 제거되지 않고 분리됩니다. 새로운 통합 `REPLICAT` 프로세스는 `_DBA_APPLY_CDR_INFO`에서 분리된 행을 쿼리하기 때문에 속도가 느려집니다.

`_DBA_APPLY_CDR_INFO`에서 모든 행을 제거하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_util.truncate_apply$_cdr_info`를 사용합니다. 이 프로시저는 2020년 10월 릴리스 및 패치 업데이트의 일부로 릴리스되었습니다. 이 프로시저는 다음 데이터베이스 버전에서 사용할 수 있습니다.
+ [ 버전 21.0.0.0.ru-2022-01.rur-2022-01.r1](https://docs.aws.amazon.com/AmazonRDS/latest/OracleReleaseNotes/oracle-version-21-0.html#oracle-version-RU-RUR.21.0.0.0.ru-2022-01.rur-2022-01.r1) 이상
+ [ 버전 19.0.0.0.ru-2020-10.rur-2020-10.r1](https://docs.aws.amazon.com/AmazonRDS/latest/OracleReleaseNotes/oracle-version-19-0.html#oracle-version-RU-RUR.19.0.0.0.ru-2020-10.rur-2020-10.r1) 이상

다음 예제에서는 `_DBA_APPLY_CDR_INFO` 테이블을 자릅니다.

```
SET SERVEROUTPUT ON SIZE 2000
EXEC rdsadmin.rdsadmin_util.truncate_apply$_cdr_info;
```

# Oracle용 RDS에서 Oracle Repository Creation Utility 사용
<a name="Oracle.Resources.RCU"></a>

Amazon RDS를 사용하여 Oracle Fusion Middleware 구성 요소를 지원하는 스키마를 보관하는 Oracle DB 인스턴스용 RDS를 호스팅할 수 있습니다. Oracle Fusion Middleware 구성 요소를 사용하려면 데이터베이스에 이 구성 요소의 스키마를 생성하고 채웁니다. 스키마는 Oracle Repository Creation Utility(RCU)를 사용하여 만들고 채웁니다.

## RCU에 대해 지원되는 버전 및 라이선스 옵션
<a name="Oracle.Resources.RCU.Versions"></a>

Amazon RDS는 Oracle Repository Creation Utility(RCU) 버전 12c만 지원합니다. 다음 구성에서 RCU를 사용할 수 있습니다.
+ RCU 12c, Oracle Database 21c
+ RCU 12c, Oracle Database 19c

RCU를 사용하려면 다음을 수행해야 합니다.
+ Oracle Fusion Middleware용 라이선스를 취득합니다
+ 또한 리포지토리를 호스팅하는 Oracle Database용 Oracle 라이선싱 지침을 따릅니다. 자세한 내용은 Oracle 설명서에서 [ Oracle Fusion Middleware 라이선싱 정보 사용자 매뉴얼](https://docs.oracle.com/en/middleware/fusion-middleware/fmwlc/)을 참조하십시오.

Fusion MiddleWare는 Oracle Database Enterprise Edition 및 Standard Edition 2의 리포지토리를 지원합니다. Oracle은 분할이 필요한 프로덕션 설치 및 온라인 인덱스 재구축이 필요한 설치에 Enterprise Edition을 권장합니다.

RDS for Oracle 인스턴스를 생성하기 전에 배포할 구성 요소를 지원해야 하는 Oracle Database 버전을 확인하세요. 인증표에서 배포할 Fusion Middleware 구성 요소 및 버전에 대한 요구 사항을 확인하십시오. 자세한 내용은 Oracle 설명서에서 [Oracle Fusion Middleware 지원 시스템 구성](http://www.oracle.com/technetwork/middleware/ias/downloads/fusion-certification-100350.html)을 참조하십시오.

Amazon RDS는 필요한 경우 Oracle Database 버전 업그레이드를 지원합니다. 자세한 정보는 [DB 인스턴스 엔진 버전 업그레이드](USER_UpgradeDBInstance.Upgrading.md)의 내용을 참조하세요.

## RCU에 대한 요구 사항 및 제한 사항
<a name="Oracle.Resources.RCU.BeforeYouBegin"></a>

RCU를 사용하려면 Amazon VPC가 필요합니다. Amazon RDS DB 인스턴스는 Fusion Middleware 구성 요소에서만 사용할 수 있고, 퍼블릭 인터넷에서는 사용할 수 없습니다. 따라서 보안 강화를 위해 프라이빗 서브넷에서 Amazon RDS DB 인스턴스를 호스팅합니다. RDS for Oracle DB 인스턴스도 필요합니다. 자세한 내용은 [Oracle DB 인스턴스 생성 및 해당 인스턴스에 연결](CHAP_GettingStarted.CreatingConnecting.Oracle.md) 섹션을 참조하세요.

Fusion Middleware 구성 요소에 대한 스키마를 Amazon RDS DB 인스턴스에 저장할 수 있습니다. 다음 스키마는 제대로 설치되는 것으로 확인되었습니다.
+ 분석(ACTIVITIES)
+ Audit Services(IAU)
+ Audit Services Append(IAU\$1APPEND)
+ Audit Services Viewer(IAU\$1VIEWER)
+ Discussions(DISCUSSIONS)
+ Metadata Services(MDS)
+ Oracle Business Intelligence(BIPLATFORM)
+ Oracle Platform Security Services(OPSS)
+ 포털 및 서비스(WEBCENTER)
+ 포틀릿 생산자(PORTLET)
+ 서비스 테이블(STB)
+ SOA 인프라(SOAINFRA)
+ User Messaging Service(UCSUMS)
+ WebLogic Services(WLS)

## RCU 사용 지침
<a name="Oracle.Resources.RCU.Recommendations"></a>

다음은 이 시나리오에서 DB 인스턴스를 작업하는 경우 알아 두어야 할 권장 사항입니다.
+ 프로덕션 워크로드에는 다중 다중 AZ를 사용하는 것이 좋습니다. 다중 가용 영역 작업에 대한 자세한 내용은 [리전, 가용 영역 및 로컬 영역](Concepts.RegionsAndAvailabilityZones.md) 단원을 참조하세요.
+ 보안을 추가하려면 유휴 데이터를 암호화할 수 있는 TDE(Transparent Data Encryption)를 사용하는 것이 좋습니다. 고급 보안 옵션이 제공되는 Enterprise Edition 라이선스를 보유하고 있는 경우 TDE 옵션을 사용하여 유휴 시 암호화를 활성화할 수 있습니다. 자세한 내용은 [Oracle Transparent Data Encryption](Appendix.Oracle.Options.AdvSecurity.md) 섹션을 참조하세요.

  Amazon RDS는 모든 데이터베이스 버전에 유휴 시 암호화 옵션도 제공합니다. 자세한 내용은 [Amazon RDS 리소스 암호화](Overview.Encryption.md) 섹션을 참조하세요.
+ 애플리케이션 서버와 Amazon RDS DB 인스턴스 간에 통신할 수 있도록 VPC 보안 그룹을 구성합니다. Fusion Middleware 구성 요소를 호스트하는 애플리케이션 서버는 Amazon EC2 또는 온프레미스에 있을 수 있습니다.

## RCU 실행
<a name="Oracle.Resources.RCU.Installing"></a>

Fusion Middleware 구성 요소를 지원하기 위해 스키마를 생성하고 채우려면 Oracle Repository Creation Utility(RCU)를 사용합니다. 다양한 방법으로 RCU를 실행할 수 있습니다.

**Topics**
+ [한 단계로 명령줄을 사용하여 RCU 실행](#Oracle.Resources.RCU.SilentSingle)
+ [여러 단계에 걸쳐 명령줄을 사용하여 RCU 실행](#Oracle.Resources.RCU.SilentMulti)
+ [대화형 모드에서 RCU 실행](#Oracle.Resources.RCU.Interactive)

### 한 단계로 명령줄을 사용하여 RCU 실행
<a name="Oracle.Resources.RCU.SilentSingle"></a>

스키마를 채우기 전에 편집할 필요가 없는 경우 RCU를 한 단계로 실행할 수 있습니다. 편집이 필요한 경우 다음 단원에서 여러 단계에 걸쳐 RCU 실행에 대한 내용을 참조하세요.

명령줄 파라미터 `-silent`를 사용하면 자동 모드에서 RCU를 실행할 수 있습니다. 자동 모드에서 RCU를 실행하는 경우 비밀번호가 포함된 텍스트 파일을 만들어 명령줄에 비밀번호를 입력하지 않아도 됩니다. 첫 행에 `dbUser`의 암호가 있고 다음 행에 각 구성 요소에 대한 암호가 나오는 텍스트 파일을 만듭니다. RCU 명령의 마지막 파라미터로 암호 파일의 이름을 지정합니다.

**Example**  
다음은 한 단계로 SOA 인프라 구성 요소(및 종속 항목)의 스키마를 만들어 채우는 예제입니다.  
대상 LinuxmacOS, 또는Unix:  

```
export ORACLE_HOME=/u01/app/oracle/product/12.2.1.0/fmw
export JAVA_HOME=/usr/java/jdk1.8.0_65
${ORACLE_HOME}/oracle_common/bin/rcu \
-silent \
-createRepository \
-connectString ${dbhost}:${dbport}:${dbname} \
-dbUser ${dbuser} \
-dbRole Normal \
-honorOMF \
-schemaPrefix ${SCHEMA_PREFIX} \
-component MDS \
-component STB \
-component OPSS \
-component IAU \
-component IAU_APPEND \
-component IAU_VIEWER \
-component UCSUMS \
-component WLS \
-component SOAINFRA \
-f < /tmp/passwordfile.txt
```

자세한 내용은 Oracle 설명서에서 [ 명령줄에서 Repository Creation Utility 실행](https://docs.oracle.com/middleware/1221/core/RCUUG/GUID-0D3A2959-7CC8-4001-997E-718ADF04C5F2.htm#RCUUG248)을 참조하세요.

### 여러 단계에 걸쳐 명령줄을 사용하여 RCU 실행
<a name="Oracle.Resources.RCU.SilentMulti"></a>

스키마 스크립트를 수동으로 편집하려면 여러 단계에 걸쳐 RCU를 실행합니다.

1. 스키마에 대한 스크립트를 생성하려면 `-generateScript` 명령줄 파라미터를 사용하여 **Prepare Scripts for System Load** 모드에서 RCU를 실행합니다.

1. 생성된 스크립트 `script_systemLoad.sql`을 수동으로 편집하고 실행합니다.

1. 스키마를 채우려면 `-dataLoad` 명령줄 파라미터를 사용하여 **Perform Product Load** 모드에서 RCU를 다시 실행합니다.

1. 생성된 정리 스크립트 `script_postDataLoad.sql`을 실행합니다.

자동 모드에서 RCU를 실행하려면 명령줄 파라미터 `-silent`를 지정합니다. 자동 모드로 RCU를 실행하는 경우 암호가 들어 있는 텍스트 파일을 만들면 명령줄에 암호를 입력하지 않아도 됩니다. 첫 행에 `dbUser`의 암호가 있고 다음 행에 각 구성 요소에 대한 암호가 나오는 텍스트 파일을 만듭니다. RCU 명령의 마지막 파라미터로 암호 파일의 이름을 지정합니다.

**Example**  
다음은 SOA 인프라 구성 요소 및 종속 항목의 스키마 스크립트를 만드는 예제입니다.  
대상 LinuxmacOS, 또는Unix:  

```
export ORACLE_HOME=/u01/app/oracle/product/12.2.1.0/fmw
export JAVA_HOME=/usr/java/jdk1.8.0_65
${ORACLE_HOME}/oracle_common/bin/rcu \
-silent \
-generateScript \
-connectString ${dbhost}:${dbport}:${dbname} \
-dbUser ${dbuser} \
-dbRole Normal \
-honorOMF \
[-encryptTablespace true] \
-schemaPrefix ${SCHEMA_PREFIX} \
-component MDS \
-component STB \
-component OPSS \
-component IAU \
-component IAU_APPEND \
-component IAU_VIEWER \
-component UCSUMS \
-component WLS \
-component SOAINFRA \
-scriptLocation /tmp/rcuscripts \
-f < /tmp/passwordfile.txt
```
이제 생성된 스크립트를 편집하고, Oracle DB 인스턴스에 연결하고, 스크립트를 실행할 수 있습니다. 생성된 스크립트의 이름은 `script_systemLoad.sql`입니다. Oracle DB 인스턴스 연결에 대한 자세한 내용은 [3단계: SQL 클라이언트를 Oracle DB 인스턴스에 연결](CHAP_GettingStarted.CreatingConnecting.Oracle.md#CHAP_GettingStarted.Connecting.Oracle) 단원을 참조하세요.  
다음은 SOA 인프라 구성 요소(및 종속 항목)의 스키마를 채우는 예제입니다.  
대상 LinuxmacOS, 또는Unix:  

```
export JAVA_HOME=/usr/java/jdk1.8.0_65
${ORACLE_HOME}/oracle_common/bin/rcu \
-silent \
-dataLoad \
-connectString ${dbhost}:${dbport}:${dbname} \
-dbUser ${dbuser} \
-dbRole Normal \
-honorOMF \
-schemaPrefix ${SCHEMA_PREFIX} \
-component MDS \
-component STB \
-component OPSS \
-component IAU \
-component IAU_APPEND \
-component IAU_VIEWER \
-component UCSUMS \
-component WLS \
-component SOAINFRA \
-f < /tmp/passwordfile.txt
```
완료하려면 Oracle DB 인스턴스에 연결하고 정리 스크립트를 실행합니다. 생성된 스크립트의 이름은 `script_postDataLoad.sql`입니다.

자세한 내용은 Oracle 설명서에서 [ 명령줄에서 Repository Creation Utility 실행](https://docs.oracle.com/middleware/1221/core/RCUUG/GUID-0D3A2959-7CC8-4001-997E-718ADF04C5F2.htm#RCUUG248)을 참조하세요.

### 대화형 모드에서 RCU 실행
<a name="Oracle.Resources.RCU.Interactive"></a>

RCU 그래픽 사용자 인터페이스를 사용하려면 대화형 모드로 RCU를 실행합니다. `-interactive` 파라미터를 포함하고 `-silent` 파라미터를 생략합니다. 자세한 내용은 Oracle 설명서에서 [ Repository Creation Utility 화면 이해](https://docs.oracle.com/middleware/1213/core/RCUUG/rcu_screens.htm#RCUUG143)를 참조하세요.

**Example**  
다음은 대화형 모드에서 RCU를 시작하고 연결 정보를 미리 채우는 예제입니다.  
대상 LinuxmacOS, 또는Unix:  

```
export ORACLE_HOME=/u01/app/oracle/product/12.2.1.0/fmw
export JAVA_HOME=/usr/java/jdk1.8.0_65
${ORACLE_HOME}/oracle_common/bin/rcu \
-interactive \
-createRepository \
-connectString ${dbhost}:${dbport}:${dbname} \
-dbUser ${dbuser} \
-dbRole Normal
```

## RCU 문제 해결
<a name="Oracle.Resources.RCU.KnownIssues"></a>

다음 문제에 주의하십시오.

**Topics**
+ [Oracle Managed Files(OMF)](#Oracle.Resources.RCU.KnownIssues.OMF)
+ [객체 권한](#Oracle.Resources.RCU.KnownIssues.object-privs)
+ [Enterprise Scheduler Service](#Oracle.Resources.RCU.KnownIssues.Scheduler)

### Oracle Managed Files(OMF)
<a name="Oracle.Resources.RCU.KnownIssues.OMF"></a>

Amazon RDS는 OMF 데이터 파일을 사용하여 스토리지 관리를 간소화합니다. 크기 및 익스텐트 관리와 같은 테이블스페이스 속성을 사용자 지정할 수 있습니다. 하지만 RCU를 실행할 때 데이터 파일 이름을 지정하면 테이블스페이스 코드에 `ORA-20900` 오류가 발생합니다. 다음과 같은 방법으로 OMF와 함께 RCU를 사용할 수 있습니다.
+ RCU 12.2.1.0 이상에서 `-honorOMF` 명령줄 파라미터를 사용합니다.
+ RCU 12.1.0.3 이상에서 여러 단계를 사용하여 생성된 스크립트를 편집합니다. 자세한 내용은 [여러 단계에 걸쳐 명령줄을 사용하여 RCU 실행](#Oracle.Resources.RCU.SilentMulti) 단원을 참조하십시오.

### 객체 권한
<a name="Oracle.Resources.RCU.KnownIssues.object-privs"></a>

Amazon RDS는 관리형 서비스이므로 RDS for Oracle 인스턴스에 대한 전체 `SYSDBA` 액세스 권한이 없습니다. 하지만 RCU 12c는 낮은 권한을 가진 사용자를 지원합니다. 대부분의 경우 마스터 사용자 권한으로 리포지토리를 생성할 수 있습니다.

마스터 계정은 `WITH GRANT OPTION`으로 이미 부여된 권한을 직접 부여할 수 있습니다. 경우에 따라 `SYS` 객체 권한을 부여하려고 할 때 RCU에 `ORA-01031` 오류가 발생할 수 있습니다. 다음 예와 같이 `rdsadmin_util.grant_sys_object` 저장 프로시저를 다시 시도하고 실행할 수 있습니다.

```
BEGIN
  rdsadmin.rdsadmin_util.grant_sys_object('GV_$SESSION','MY_DBA','SELECT');
END;
/
```

객체 `SCHEMA_VERSION_REGISTRY`에 대한 `SYS` 권한을 부여하려고 할 때, 작업에`ORA-20199: Error in rdsadmin_util.grant_sys_object` 오류가 발생할 수도 있습니다. `SCHEMA_VERSION_REGISTRY$` 테이블과 `SCHEMA_VERSION_REGISTRY` 보기를 스키마 소유자 이름인 `SYSTEM`으로 정규화하고 작업을 재시도할 수 있습니다. 또는 동의어를 생성할 수 있습니다 마스터 사용자로 로그인하고 다음 명령문을 사용하십시오.

```
CREATE OR REPLACE VIEW SYSTEM.SCHEMA_VERSION_REGISTRY 
  AS SELECT * FROM SYSTEM.SCHEMA_VERSION_REGISTRY$;
CREATE OR REPLACE PUBLIC SYNONYM SCHEMA_VERSION_REGISTRY FOR SYSTEM.SCHEMA_VERSION_REGISTRY;
CREATE OR REPLACE PUBLIC SYNONYM SCHEMA_VERSION_REGISTRY$ FOR SCHEMA_VERSION_REGISTRY;
```

### Enterprise Scheduler Service
<a name="Oracle.Resources.RCU.KnownIssues.Scheduler"></a>

RCU를 사용하여 Enterprise Scheduler Service 리포지토리를 삭제하는 경우 RCU에 `Error: Component drop check failed` 오류가 발생할 수 있습니다.

# Amazon EC2 인스턴스에서 Oracle Connection Manager 구성
<a name="oracle-cman"></a>

Oracle Connection Manager(CMAN)는 데이터베이스 서버 또는 다른 프록시 서버에 연결 요청을 전달하는 프록시 서버입니다. CMAN으로 다음을 구성할 수 있습니다.

액세스 관리  
사용자 지정 클라이언트 요청을 필터링하고 다른 요청을 수락하는 규칙을 생성할 수 있습니다.

세션 멀티플렉싱  
네트워크 연결을 통해 공유 서버 대상에 여러 클라이언트 세션을 보낼 수 있습니다.

일반적으로 CMAN은 데이터베이스 서버 및 클라이언트 호스트와 별도의 호스트에 있습니다. 자세한 내용은 Oracle Database 설명서의 [Configuring Oracle Connection Manager](https://docs.oracle.com/en/database/oracle/oracle-database/19/netag/configuring-oracle-connection-manager.html#GUID-AF8A511E-9AE6-4F4D-8E58-F28BC53F64E4)(Oracle Connection Manager 구성)를 참조하세요.

**Topics**
+ [CMAN에 대해 지원되는 버전 및 라이선스 옵션](#oracle-cman.Versions)
+ [CMAN에 대한 요구 사항 및 제한 사항](#oracle-cman.requirements)
+ [CMAN 구성](#oracle-cman.configuring-cman)

## CMAN에 대해 지원되는 버전 및 라이선스 옵션
<a name="oracle-cman.Versions"></a>

CMAN은 Amazon RDS에서 지원하는 모든 Oracle Database 버전의 Enterprise Edition을 지원합니다. 자세한 정보는 [RDS for Oracle 릴리스](Oracle.Concepts.database-versions.md)의 내용을 참조하세요.

Oracle Database가 설치된 호스트와 별도의 호스트에 Oracle Connection Manager를 설치할 수 있습니다. CMAN을 실행하는 호스트에는 별도의 라이선스가 필요하지 않습니다.

## CMAN에 대한 요구 사항 및 제한 사항
<a name="oracle-cman.requirements"></a>

완전 관리형 환경을 제공하기 위해 Amazon RDS는 운영 체제에 대한 액세스를 제한합니다. 운영 체제 액세스가 필요한 데이터베이스 파라미터는 수정할 수 없습니다. 따라서 Amazon RDS는 운영 체제에 로그인해야 하는 CMAN의 기능을 지원하지 않습니다.

## CMAN 구성
<a name="oracle-cman.configuring-cman"></a>

CMAN을 구성할 때 RDS for Oracle 데이터베이스 외부에서 대부분의 작업을 수행합니다.

**Topics**
+ [1단계: RDS for Oracle 인스턴스와 동일한 VPC의 Amazon EC2 인스턴스에서 CMAN 구성](#oracle-cman.configuring-cman.vpc)
+ [2단계: CMAN에 대한 데이터베이스 파라미터 구성](#oracle-cman.configuring-cman.parameters)
+ [3단계: DB 인스턴스를 파라미터 그룹과 연결](#oracle-cman.configuring-cman.parameter-group)

### 1단계: RDS for Oracle 인스턴스와 동일한 VPC의 Amazon EC2 인스턴스에서 CMAN 구성
<a name="oracle-cman.configuring-cman.vpc"></a>

CMAN을 설정하는 방법을 알아보려면 블로그 게시물, [Configuring and using Oracle Connection Manager on Amazon EC2 for Amazon RDS for Oracle](https://aws.amazon.com/blogs/database/configuring-and-using-oracle-connection-manager-on-amazon-ec2-for-amazon-rds-for-oracle/)(Amazon RDS for Oracle용 Amazon EC2에서 Oracle Connection Manager 구성 및 사용)의 자세한 지침을 따르세요.

### 2단계: CMAN에 대한 데이터베이스 파라미터 구성
<a name="oracle-cman.configuring-cman.parameters"></a>

Traffic Director 모드 및 세션 멀티플렉싱과 같은 CMAN 기능의 경우 `REMOTE_LISTENER` 파라미터를 DB 파라미터 그룹의 CMAN 인스턴스 주소로 설정합니다. 다음 시나리오를 고려해 보세요.
+ CMAN 인스턴스는 IP 주소가 `10.0.159.100`인 호스트에 있으며 포트 `1521`을 사용합니다.
+ 데이터베이스 `orcla`, `orclb` 및 `orclc`는 별도의 RDS for Oracle DB 인스턴스에 있습니다.

다음 표에서는 `REMOTE_LISTENER` 값을 설정하는 방법을 보여줍니다. `LOCAL_LISTENER` 값은 Amazon RDS에 의해 자동으로 설정됩니다.


| DB 인스턴스 이름 | DB 인스턴스 IP | 로컬 리스너 값(자동 설정) | 원격 리스너 값(사용자가 설정) | 
| --- | --- | --- | --- | 
| orcla | 10.0.159.200 |  <pre>( address=<br />  (protocol=tcp)<br />  (host=10.0.159.200)<br />  (port=1521)<br />)</pre>  | 10.0.159.100:1521 | 
| orclb | 10.0.159.300 |  <pre>( address=<br />  (protocol=tcp)<br />  (host=10.0.159.300)<br />  (port=1521)<br />)</pre>  | 10.0.159.100:1521 | 
| orclc | 10.0.159.400 |  <pre>( address=<br />  (protocol=tcp)<br />  (host=10.0.159.400)<br />  (port=1521)<br />)</pre>  | 10.0.159.100:1521 | 

### 3단계: DB 인스턴스를 파라미터 그룹과 연결
<a name="oracle-cman.configuring-cman.parameter-group"></a>

[2단계: CMAN에 대한 데이터베이스 파라미터 구성](#oracle-cman.configuring-cman.parameters)에서 구성한 파라미터 그룹을 사용하도록 DB 인스턴스를 생성하거나 수정합니다. 자세한 정보는 [Amazon RDS의 DB 인스턴스에 DB 파라미터 그룹 연결](USER_WorkingWithParamGroups.Associating.md)의 내용을 참조하세요.

# Amazon RDS에서 Oracle에 Siebel Database 설치
<a name="Oracle.Resources.Siebel"></a>

Amazon RDS를 사용하여 Oracle DB 인스턴스에서 Siebel Database를 호스팅할 수 있습니다. Siebel Database는 Siebel 고객 관계 관리(CRM) 애플리케이션 아키텍처의 일부입니다. 예시는 [Generic Architecture of Siebel Business Application](https://docs.oracle.com/cd/E63029_01/books/PerformTun/performtun_archinfra.htm#i1043361)을 참조하십시오.

다음 주제는 Amazon RDS의 Oracle DB 인스턴스에서 Siebel Database를 설정하는 데 도움이 됩니다. 또한 Amazon Web Services를 사용하여 Siebel CRM 애플리케이션 아키텍처에서 요구하는 다른 구성 요소를 지원하는 방법도 설명합니다.

**참고**  
Amazon RDS에서 Oracle에 Siebel Database를 설치하려면 마스터 사용자 계정을 사용해야 합니다. `SYSDBA` 권한은 필요 없으며, 마스터 사용자 권한으로 충분합니다. 자세한 내용은 [마스터 사용자 계정 권한](UsingWithRDS.MasterAccounts.md) 섹션을 참조하세요.

## 라이선스 및 버전
<a name="Oracle.Resources.Siebel.Versions"></a>

Amazon RDS에 Siebel Database를 설치하려면 Oracle 데이터베이스 라이선스와 Siebel 라이선스를 사용해야 합니다. DB 인스턴스 클래스와 Oracle 데이터베이스 에디션에 적합한 Oracle 데이터베이스 라이선스(소프트웨어 업데이트 라이선스 및 지원 포함)가 있어야 합니다. 자세한 내용은 [RDS for Oracle 라이선스 옵션](Oracle.Concepts.Licensing.md) 섹션을 참조하세요.

이 시나리오의 경우 Oracle Database Enterprise Edition은 Siebel이 인증한 유일한 버전입니다. Amazon RDS는 Siebel CRM 15.0 또는 16.0 버전을 지원합니다.

Amazon RDS는 데이터베이스 버전 업그레이드를 지원합니다. 자세한 내용은 [DB 인스턴스 엔진 버전 업그레이드](USER_UpgradeDBInstance.Upgrading.md) 섹션을 참조하세요.

## 시작하기 전에
<a name="Oracle.Resources.Siebel.BeforeYouBegin"></a>

시작하려면 Amazon VPC가 필요합니다. Amazon RDS DB 인스턴스는 퍼블릭 인터넷이 아닌 Siebel Enterprise Server에서만 사용 가능해야 하므로 Amazon RDS DB 인스턴스는 프라이빗 서브넷에서 호스팅되고 이로써 보안이 향상됩니다. Siebel CRM과 함께 사용할 Amazon VPC를 만드는 방법에 대한 정보는 [Oracle DB 인스턴스 생성 및 해당 인스턴스에 연결](CHAP_GettingStarted.CreatingConnecting.Oracle.md) 단원을 참조하십시오.

시작하려면 Oracle DB 인스턴스도 필요합니다. Siebel CRM과 함께 사용하도록 Oracle DB 인스턴스를 만드는 방법에 대한 자세한 내용은 [Amazon RDS DB 인스턴스 생성](USER_CreateDBInstance.md) 단원을 참조하십시오.

## Siebel Database 설치 및 구성
<a name="Oracle.Resources.Siebel.Database.Siebel"></a>

Oracle DB 인스턴스를 만든 후에 Siebel Database를 설치할 수 있습니다. 테이블 소유자 및 관리자 계정을 만들어 데이터베이스를 설치하고, 저장된 절차와 기능을 설치한 다음 Siebel Database 구성 마법사를 실행합니다. 자세한 내용은 [Installing the Siebel Database on the RDBMS](https://docs.oracle.com/cd/E63029_01/books/SiebInstWIN/SiebInstCOM_ConfigDB.html)를 참조하십시오.

Siebel Database 구성 마법사를 실행하려면 마스터 사용자 계정을 사용해야 합니다. `SYSDBA` 권한은 필요 없으며, 마스터 사용자 권한으로 충분합니다. 자세한 내용은 [마스터 사용자 계정 권한](UsingWithRDS.MasterAccounts.md) 섹션을 참조하세요.

## Siebel Database에 다른 Amazon RDS 기능 사용
<a name="Oracle.Resources.Siebel.Miscellaneous"></a>

Oracle DB 인스턴스를 만든 후, 다른 Amazon RDS 기능을 사용하여 Siebel Database를 사용자 지정할 수 있습니다.

### Oracle Statspack 통계 수집 옵션
<a name="Oracle.Resources.Siebel.Options"></a>

DB 옵션 그룹의 옵션을 사용해 Oracle DB 인스턴스에 기능을 추가할 수 있습니다. Oracle DB 인스턴스를 만들 때는 기본 DB 옵션 그룹을 사용했습니다. 데이터베이스에 기능을 추가하고 싶다면 DB 인스턴스를 위한 새로운 옵션 그룹을 만들 수 있습니다.

Siebel Database에서 성능 통계를 수집하고 싶다면 Oracle Statspack 기능을 추가할 수 있습니다. 자세한 내용은 [Oracle Statspack](Appendix.Oracle.Options.Statspack.md) 섹션을 참조하세요.

즉시 적용되는 옵션 변경 사항도 있고, DB 인스턴스의 다음 번 유지 관리 기간 중에 적용되는 옵션 변경 사항도 있습니다. 자세한 내용은 [옵션 그룹 작업](USER_WorkingWithOptionGroups.md) 섹션을 참조하세요. 사용자 지정 옵션 그룹을 생성한 후에는 DB 인스턴스를 수정해 옵션 그룹에 연결하십시오. 자세한 내용은 [Amazon RDS DB 인스턴스 수정](Overview.DBInstance.Modifying.md) 섹션을 참조하세요.

### 파라미터로 성능 튜닝
<a name="Oracle.Resources.Siebel.Parameters"></a>

DB 파라미터 그룹의 파라미터 사용을 통해 DB 엔진 구성을 관리합니다. Oracle DB 인스턴스를 만들 때는 기본 DB 파라미터 그룹을 사용했습니다. 데이터베이스 구성을 사용자 지정하고 싶다면 DB 인스턴스를 위한 새로운 파라미터 그룹을 만들 수 있습니다.

파라미터를 변경하는 경우, 파라미터 유형에 따라 변경 사항이 즉시 적용되거나 DB 인스턴스를 수동으로 재부팅한 후에 적용될 수 있습니다. 자세한 내용은 [Amazon RDS의 파라미터 그룹](USER_WorkingWithParamGroups.md) 섹션을 참조하세요. 사용자 지정 파라미터 그룹을 생성한 후에는 DB 인스턴스를 수정해 파라미터 그룹에 연결하십시오. 자세한 내용은 [Amazon RDS DB 인스턴스 수정](Overview.DBInstance.Modifying.md) 섹션을 참조하세요.

Siebel CRM에 맞게 Oracle DB 인스턴스를 최적화하기 위해 일부 파라미터를 사용자 지정할 수 있습니다. 다음 표에는 몇 가지 권장되는 파라미터 설정이 나와 있습니다. Sieble CRM 성능 튜닝에 대한 자세한 내용은 [Siebel CRM Performance Tuning Guide](https://docs.oracle.com/cd/E63029_01/books/PerformTun/toc.htm)를 참조하세요.


****  

| 파라미터 이름 | 기본값 | Siebel CRM 성능 최적화 지침 | 
| --- | --- | --- | 
| \$1always\$1semi\$1join | `CHOOSE` | `OFF`  | 
| \$1b\$1tree\$1bitmap\$1plans | `TRUE` | `FALSE`  | 
| \$1like\$1with\$1bind\$1as\$1equality | `FALSE` | `TRUE`  | 
| \$1no\$1or\$1expansion | `FALSE` | `FALSE`  | 
| \$1optimizer\$1join\$1sel\$1sanity\$1check | `TRUE` | `TRUE`  | 
| \$1optimizer\$1max\$1permutations | 2000 | 100  | 
| \$1optimizer\$1sortmerge\$1join\$1enabled | `TRUE` | `FALSE`  | 
| \$1partition\$1view\$1enabled | `TRUE` | `FALSE`  | 
| open\$1cursors | `300` | 최소 **2000**.  | 

### 스냅샷 생성
<a name="Oracle.Resources.Siebel.Snapshots"></a>

Siebel Database를 만든 후 Amazon RDS의 스냅샷 기능을 이용해 데이터베이스를 복사할 수 있습니다. 자세한 내용은 [Amazon RDS의 단일 AZ DB 인스턴스에 대한 DB 스냅샷 생성](USER_CreateSnapshot.md) 및 [DB 인스턴스 복원](USER_RestoreFromSnapshot.md) 단원을 참조하십시오.

## 다른 Siebel CRM 구성 요소에 대한 지원
<a name="Oracle.Resources.Siebel.OtherComponents"></a>

Amazon Web Services를 사용하여 Siebel Database 외에 Siebel CRM 애플리케이션 아키텍처의 다른 구성 요소도 지원할 수 있습니다. 다음 표에 추가 Siebel CRM 구성 요소를 위한 Amazon AWS의 지원 옵션이 설명되어 있습니다.


****  

| Siebel CRM 구성 요소 | Amazon AWS Support | 
| --- | --- | 
| Siebel Enterprise(Siebel 서버 1개 이상) |  Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스에서 Siebel 서버를 호스팅할 수 있습니다. Amazon EC2를 사용하여 필요한 만큼 많거나 적은 수의 가상 서버를 시작할 수 있습니다. Amazon EC2를 사용하여 손쉽게 규모를 확장 또는 축소하여 수요 변화에 대처할 수 있습니다. 자세한 내용은 [Amazon EC2란 무엇입니까?](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts.html)를 참조하세요. 서버를 DB 인스턴스와 같은 VPC에 배치하고 VPC 보안 그룹을 사용해 데이터베이스에 액세스할 수 있습니다. 자세한 내용은 [VPC에서 DB 인스턴스를 사용한 작업](USER_VPC.WorkingWithRDSInstanceinaVPC.md) 섹션을 참조하세요.  | 
| 웹 서버(Siebel Web Server Extensions 사용) |  복수의 EC2 인스턴스에 복수의 웹 서버를 설치할 수 있습니다. 그런 다음 Elastic Load Balancing 을 사용해 수신 트래픽을 인스턴스에 분산할 수 있습니다. 자세한 내용은 [Elastic Load Balancing란 무엇입니까?](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/elastic-load-balancing.html)를 참조하십시오.  | 
| Siebel Gateway Name Server |  EC2 인스턴스에서 Siebel Gateway Name Server를 호스팅할 수 있습니다. 그러면 서버를 DB 인스턴스와 같은 VPC에 배치하고 VPC 보안 그룹을 사용해 데이터베이스에 액세스할 수 있습니다. 자세한 내용은 [VPC에서 DB 인스턴스를 사용한 작업](USER_VPC.WorkingWithRDSInstanceinaVPC.md) 섹션을 참조하세요.  | 

# Oracle 데이터베이스 엔진 릴리스 정보
<a name="USER_Oracle_Releases"></a>

Amazon RDS for Oracle DB 인스턴스 업데이트로 인스턴스를 최신으로 유지합니다. 업데이트를 적용하면 Oracle과 Amazon 모두에서 테스트를 거친 버전의 데이터베이스 소프트웨어를 DB 인스턴스에서 실행할 수 있습니다. 개별 RDS for Oracle DB 인스턴스에 대한 일회용 패치 적용은 지원하지 않습니다.

새 DB 인스턴스를 생성할 때 현재 지원되는 모든 Oracle 데이터베이스 버전을 지정할 수 있습니다. Oracle 데이터베이스 19c와 같은 메이저 버전과 지정된 메이저 버전에 대해 지원되는 모든 마이너 버전을 설정할 수 있습니다. 버전이 지정되지 않은 경우 Amazon RDS는 지원되는 버전(보통 최신 버전)을 기본값으로 설정합니다. 메이저 버전이 지정되었지만 마이너 버전이 지정되지 않은 경우, Amazon RDS는 고객이 지정한 메이저 버전의 최근 릴리스를 기본값으로 설정합니다. 지원되는 버전 목록과 새로 만든 DB 인스턴스의 기본값을 보려면 [https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-engine-versions.html](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-engine-versions.html) AWS CLI 명령을 사용합니다.

Amazon RDS에서 지원하는 Oracle 데이터베이스 버전에 대한 자세한 내용은 [https://docs.aws.amazon.com/AmazonRDS/latest/OracleReleaseNotes/Welcome.html](https://docs.aws.amazon.com/AmazonRDS/latest/OracleReleaseNotes/Welcome.html)를 참조하십시오.