

# 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/)를 참조하세요.