

# 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) 섹션을 참조하세요.