

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# Oracle Java 虛擬機器
<a name="oracle-options-java"></a>

Amazon RDS 會使用 `JVM` 選項，藉此支援 Oracle Java 虛擬機器 (JVM)。Oracle Java 提供 SQL 結構描述和函數，可加速 Oracle 資料庫的 Oracle Java 功能。如需詳細資訊，請參閱 Oracle 文件中的[ Oracle 資料庫中的 Java 簡介](https://docs.oracle.com/database/121/JJDEV/chone.htm)。您可以使用 Oracle JVM 搭配所有版本的 Oracle Database 21c (21.0.0) 和 Oracle Database 19c (19.0.0)。

## Oracle JVM 的考量
<a name="oracle-options-java.considerations"></a>

Amazon RDS 中的 Java 實作擁有有限的一組許可。主要使用者已授予 `RDS_JAVA_ADMIN` 角色，可授予由 `JAVA_ADMIN` 角色授予的權限子集。如要列出授予給 `RDS_JAVA_ADMIN` 角色的權限，請在您的資料庫執行個體上執行以下查詢：

```
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.t3.small 資料庫執行個體類別不支援 Oracle Java。如需詳細資訊，請參閱[ 資料庫執行個體類別](Concepts.DBInstanceClass.md)。
+ 您的資料庫執行個體必須將**自動次要版本升級**啟用。此選項可讓資料庫執行個體自動接收可用的次要資料庫引擎版本升級。Amazon RDS 使用此選項將您的資料庫執行個體更新為最新版 Oracle 修補程式集更新 (PSU) 或版本更新 (RU)。如需更多詳細資訊，請參閱 [修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。

## Oracle JVM 的最佳實務
<a name="oracle-options-java.best-practices"></a>

下列是使用 Oracle Java 的最佳實務：
+ 為了將安全性提升至最高，請使用 `JVM` 選項搭配 Secure Sockets Layer (SSL)。如需更多詳細資訊，請參閱 [Oracle Secure Sockets Layer](Appendix.Oracle.Options.SSL.md)。
+ 設定資料庫執行個體以限制網路存取。如需更多詳細資訊，請參閱 [在 VPC 中存取資料庫執行個體的案例](USER_VPC.Scenarios.md) 及 [在 VPC 中使用資料庫執行個體](USER_VPC.WorkingWithRDSInstanceinaVPC.md)。
+ 如果您符合下列條件，請更新 HTTPS 端點的組態以支援 TLSv1.2：
  + 您可以使用 Oracle Java 虛擬機器 (JVM) 透過 TLSv1 或 TLSv1.1 通訊協定來連線 HTTPS 端點。
  + 您的端點不支援 TLSv1.2 通訊協定。
  + 您尚未將 2021 年 4 月版本更新套用至您的 Oracle 資料庫。

  透過更新端點組態，您可以確保 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` 選項新增至資料庫執行個體的一般程序：

1. 建立新的選項群組，或是複製或修改現有選項群組。

1. 將選項新增至選項群組。

1. 將選項群組與資料庫執行個體建立關聯。

新增 `JVM` 選項時，會有短暫的停機。在您新增選項之後，就不需要重新啟動資料庫執行個體。只要選項群組為作用中，Oracle Java 就可使用。

**注意**  
在中斷過程中，密碼驗證功能將會短暫停用。在中斷過程中，您也可以預期將會看到與密碼驗證功能相關的事件。在 Oracle 資料庫執行個體可用之前，密碼驗證功能將會再次啟用。

**將 JVM 選項新增至資料庫執行個體**

1. 判斷要使用的選項群組。您可以建立新的選項群組或使用現有的選項群組。如果您要使用現有的選項群組，請跳到下一個步驟。否則請使用下列設定來建立自訂資料庫選項群組：
   + 對於 **Engine (引擎)**，請選擇資料庫執行個體使用的資料庫引擎 (**oracle-ee**、**oracle-se**、**oracle-se1** 或 **oracle-se2**)。
   + 針對 **Major engine version (主要引擎版本)**，請選擇您資料庫執行個體的版本。

   如需更多詳細資訊，請參閱 [建立選項群組](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Create)。

1. 將 **JVM** 選項新增至選項群組。如需新增選項的詳細資訊，請參閱[將選項新增至選項群組](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.AddOption)。

1. 將選項群組套用至新的或現有的資料庫執行個體：
   + 針對新的資料庫執行個體，在啟動執行個體時套用選項群組。如需更多詳細資訊，請參閱 [建立 Amazon RDS 資料庫執行個體](USER_CreateDBInstance.md)。
   + 針對現有的資料庫執行個體，可以透過修改執行個體並附加新的選項群組來套用選項群組。如需更多詳細資訊，請參閱 [修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。

1. 將所需的許可授予使用者。

   Amazon RDS 主要使用者預設有使用 `JVM` 選項的許可。如果其他使用者需要這些許可，請以主要使用者的身分連線到資料庫執行個體，並且將該許可授予使用者。

   下列範例將使用 `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>

您可以從資料庫執行個體移除 `JVM` 選項。移除選項時，會有短暫的停機。移除 `JVM` 選項之後，就不需要重新啟動資料庫執行個體。

**警告**  
 如果資料庫執行個體使用的是做為選項一部分而啟用的資料類型，移除 `JVM` 選項可能會造成資料遺失。備份資料之後再繼續。如需更多詳細資訊，請參閱 [備份、還原和匯出資料](CHAP_CommonTasks.BackupRestore.md)。

若要從資料庫執行個體中移除 `JVM` 選項，請執行下列其中一個動作：
+ 從其所屬的選項群組中移除 `JVM` 選項。此變更會影響使用選項群組的所有資料庫執行個體。如需更多詳細資訊，請參閱 [從選項群組移除選項](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.RemoveOption)。
+ 修改資料庫執行個體，並指定不包括 `JVM` 選項的不同選項群組。此變更會影響單一資料庫執行個體。您可以指定預設的 (空白) 選項群組或不同的自訂選項群組。如需更多詳細資訊，請參閱 [修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。