

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

# 設定 Amazon RDS Custom for Oracle 的資料庫執行個體
<a name="custom-creating"></a>

您可以建立 RDS Custom 資料庫執行個體，然後使用安全通訊殼層 (SSH) 或 AWS Systems Manager與它連線。

如需連線和登入 RDS Custom for Oracle 資料庫執行個體的詳細資訊，請參閱下列主題。
+ [使用工作階段管理員連線至 RDS Custom 資料庫執行個體](custom-creating.ssm.md)
+ [使用 SSH 連線到您的 RDS Custom 資料庫執行個體](#custom-creating.ssh)
+ [以 SYS 身分登入您的 RDS Custom for Oracle 資料庫](custom-creating.sysdba.md)

## 建立 RDS Custom for Oracle 資料庫執行個體
<a name="custom-creating.create"></a>

使用 AWS 管理主控台 或 建立 Amazon RDS Custom for Oracle 資料庫執行個體 AWS CLI。該程序與建立 Amazon RDS 資料庫執行個體的程序類型。如需詳細資訊，請參閱[建立 Amazon RDS 資料庫執行個體](USER_CreateDBInstance.md)。

如果您在 CEV 清單檔案中包含安裝參數，則資料庫執行個體會使用您指定的 Oracle 基本目錄、Oracle 主目錄，以及 UNIX/Linux 使用者和群組的識別符和名稱。Oracle Database 在安裝期間建立的 `oratab` 檔案會指向真實的安裝位置，而不是符號連結。當 RDS Custom for Oracle 執行命令時，其會以設定的作業系統使用者身分執行，而非預設使用者 `rdsdb`。如需詳細資訊，請參閱[步驟 5：準備 CEV 清單檔案](custom-cev.preparing.md#custom-cev.preparing.manifest)。

在您嘗試建立或連線至 RDS Custom 資料庫執行個體之前，請先完成[設定您的 Amazon RDS Custom for Oracle 的環境](custom-setup-orcl.md)中的任務。

### 主控台
<a name="custom-creating.console"></a>

**若要建立 RDS Custom for Oracle 資料庫執行個體**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)：// 開啟 Amazon RDS 主控台。

1. 在導覽窗格中，選擇 **Databases** (資料庫)。

1. 選擇 **Create database** (建立資料庫)。

1. 在 **Choose a database creation method (選擇資料庫建立方法)** 中，選取 **Standard Create (標準建立)**。

1. 在**引擎選項**區段中，執行下列動作：

   1. 針對 **Engine type** (引擎類型)，請選擇 **Oracle**。

   1. 針對 **Database management type (引擎管理類型)**，選擇 **Amazon RDS Custom**。

   1. 對於**管理設定**，執行下列其中一項動作：
      + 選取**多租戶架構**以建立容器資料庫 (CDB)。建立時，您的 CDB 包含一個 PDB 種子和一個起始 PDB。
**注意**  
僅 Oracle Database 19c 支援**多租戶架構**設定。
      + 清除**多租戶架構**以建立非 CDB。非 CDB 不能包含 PDB。

   1. 針對**版本**，選擇 **Oracle Enterprise Edition** 或 **Oracle Standard Edition 2**。

   1. 對於**自訂引擎版本**，選擇現有的 RDS Custom 自訂引擎版本 (CEV)。CEV 採用下列格式：`major-engine-version.customized_string`。範例識別符為 `19.cdb_cev1`。

      如果您在上一個步驟中選擇了**多租戶架構**，則只能指定使用 `custom-oracle-ee-cdb` 或 `custom-oracle-se2-cdb` 引擎類型的 CEV。主控台會篩選出以不同引擎類型建立的 CEV。

1. 在 **Templates (範本)** 中，選擇 **Production (生產)**。

1. 在 **Settings** (設定) 區段中，執行下列動作：

   1. 對於**資料庫執行個體識別符**，輸入資料庫執行個體的唯一名稱。

   1. 對於**主要使用者名稱**，輸入使用者名稱。您稍後可以從主控台擷取此值。

      當您連線至非 CDB 時，主要使用者就是非 CDB 的使用者。當您連線至 CDB 時，主要使用者就是 PDB 的使用者。若要連線至 CDB 根，請登入主機、啟動 SQL 用戶端，然後使用 SQL 命令建立管理使用者。

   1. 清除**自動產生密碼**。

1. 選擇**資料庫執行個體類別**。

   如需支援的類別，請參閱 [RDS Custom for Oracle 的資料庫執行個體類別支援](custom-oracle-feature-support.md#custom-reqs-limits.instances)。

1. 在 **Storage** (儲存) 區段中，執行下列動作：

   1. 針對**儲存類型**，選擇 SSD 類型：io1、io2、gp2 或 gp3。您具有下列其他選項：
      + 針對 io1、io2 或 gp3，選擇**佈建 IOPS** 的速率。io1 和 io2 的預設值為 1000，gp3 的預設值為 12000。
      + 對於 gp3，選擇**儲存體輸送量**的速率。預設為 500 MiBps。

   1. 對於**已配置的儲存體**，選擇儲存體大小。預設為 40 GiB。

1. 對於**連線**，指定您的**虛擬私有雲端 (VPC)**、**資料庫子網路群組**和 **VPC 安全群組 (防火牆)**。

1. 針對 **RDS Custom security (RDS Custom 安全)**，請執行下列操作：

   1. 針對 **IAM instance profile (IAM 執行個體設定檔)**，為您的 RDS Custom for Oracle 資料庫執行個體選擇執行個體設定檔。

      IAM 執行個體設定檔必須以 `AWSRDSCustom` 開頭，例如 *AWSRDSCustomInstanceProfileForRdsCustomInstance*。

   1. 針對**加密**，選擇**輸入金鑰 ARN** 以列出可用的 AWS KMS 金鑰。然後從清單選擇您的金鑰。

      RDS Custom 需要 AWS KMS 金鑰。如需詳細資訊，請參閱[步驟 1：建立或重複使用對稱加密 AWS KMS 金鑰](custom-setup-orcl.md#custom-setup-orcl.cmk)。

1. 對於**資料庫選項**，執行下列動作：

   1. (選用) 在**系統 ID (SID)** 中，輸入 Oracle SID 的值，也是 CDB 的名稱。SID 是管理資料庫檔案之 Oracle 資料庫執行個體的名稱。在此內容中，「Oracle 資料庫執行個體」一詞特指系統全區域 (SGA) 和 Oracle 背景程序。如果您未指定 SID，值會預設為 **RDSCDB**。

   1. (選用) 對於**初始資料庫名稱**，輸入一個名稱。預設值為 **ORCL**。在多租戶架構中，初始資料庫名稱是 PDB 名稱。
**注意**  
SID 和 PDB 名稱必須不同。

   1. 針對**選項群組**，選擇選項群組或接受預設值。
**注意**  
RDS Custom for Oracle 唯一支援的選項是 `Timezone`。如需詳細資訊，請參閱[Oracle 時區](custom-managing.timezone.md)。

   1. 對於**備份保留期**，選擇一值。您無法選擇 **0 天**。

   1. 在其餘區段，指定您偏好的 RDS Custom 資料庫執行個體的設定。如需每項設定的相關資訊，請參閱 [資料庫執行個體的設定](USER_CreateDBInstance.Settings.md)。以下設定不會出現在主控台中，也不受支援：
      + **處理器功能**
      + **儲存體自動調整規模**
      + **Database authentication (資料庫身分驗證)** 中的 **Password and Kerberos authentication (密碼和 Kerberos 身分驗證)** 選項 (僅支援 **Password authentication (密碼身分驗證)**)
      + **Performance Insights** (績效詳情)
      + **Log exports (日誌匯出)**
      + **Enable auto minor version upgrade (啟用自動次要版本升級)**
      + **刪除保護**

1. 選擇**建立資料庫**。
**重要**  
建立 RDS Custom for Oracle 資料庫執行個體時，您可能會收到下列錯誤：服務連結角色正在建立的程序中。請稍後再試。如果收到這個訊息，請等待幾分鐘的時間然後再次嘗試建立資料庫執行個體。

   **View credential details** (檢視憑證詳細資訊) 按鈕會顯示在 **Databases** (資料庫) 頁面上。

   若要檢視 RDS Custom 資料庫執行個體的主要使用者名稱和密碼，請選擇 **View credential details** (檢視憑證詳細資訊)。

   若要以主要使用者的身分連線至資料庫執行個體，請使用出現的使用者名稱和密碼。
**重要**  
您無法再次於主控台中檢視主要使用者密碼。如果您沒有記錄下來，您可能需要進行變更。若要在 RDS Custom 資料庫執行個體可供使用之後變更主要使用者密碼，請登入資料庫並執行 `ALTER USER` 命令。您無法使用主控台中的**修改**選項來重設密碼。

1. 選擇 **Databases** (資料庫) 以檢視 RDS Custom 資料庫執行個體的清單。

1. 選擇您剛剛建立的 RDS Custom 資料庫執行個體。

   在 RDS 主控台上，新 RDS Custom 資料庫執行個體的詳細資訊即會出現：
   + 在 RDS Custom 資料庫執行個體建立完成且可供使用之前，資料庫執行個體會處於 **Creating (建立中)** 狀態。狀態變更為 **Available (可用)** 時，您便能連線至資料庫執行個體。視執行個體類別和分配的儲存空間而定，新的資料庫執行個體可能需要幾分鐘才能使用。
   + **Role (角色)** 具有 **Instance (RDS Custom) (執行個體 (RDS Custom))** 值。
   + **RDS Custom automation mode** (RDS Custom 自動化模式) 具有 **Full automation** (全自動化) 值。此設定表示資料庫執行個體提供自動監控和執行個體復原。

### AWS CLI
<a name="custom-creating.CLI"></a>

您可以使用 [create-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html) AWS CLI 命令建立 RDS Custom 資料庫執行個體。

下列選項是必要的：
+ `--db-instance-identifier`
+ `--db-instance-class` (如需支援執行個體類別的清單，請參閱 [RDS Custom for Oracle 的資料庫執行個體類別支援](custom-oracle-feature-support.md#custom-reqs-limits.instances))
+ `--engine engine-type`，其中 *engine-type* 為 `custom-oracle-ee`、`custom-oracle-se2`、`custom-oracle-ee-cdb` 或 `custom-oracle-se2-cdb`
+ `--engine-version cev` (其中 *`cev`* 是您在 [建立 CEV](custom-cev.create.md) 中指定的自訂引擎版本的名稱)
+ `--kms-key-id my-kms-key`
+ `--backup-retention-period days` (其中 *`days`* 是大於 `0` 的值)
+ `--no-auto-minor-version-upgrade`
+ `--custom-iam-instance-profile AWSRDSCustomInstanceProfile-us-east-1` (其中 *`region`* 是您要在其中建立資料庫執行個體的 AWS 區域 )

下列範例會建立名稱為 `my-cfo-cdb-instance` 的 RDS Custom 資料庫執行個體。資料庫是具有非預設名稱 *MYCDB* 的 CDB。非預設 PDB 名稱為 *MYPDB*。備份保留期為 3 天。

**Example**  
在 Linux、macOS 或 Unix 中：  

```
 1. aws rds create-db-instance \
 2.     --engine custom-oracle-ee-cdb \
 3.     --db-instance-identifier my-cfo-cdb-instance \
 4.     --engine-version 19.cdb_cev1 \
 5.     --db-name MYPDB \
 6.     --db-system-id MYCDB \
 7.     --allocated-storage 250 \
 8.     --db-instance-class db.m5.xlarge \
 9.     --db-subnet-group mydbsubnetgroup \
10.     --master-username myuser \
11.     --master-user-password mypassword \
12.     --backup-retention-period 3 \
13.     --port 8200 \
14.     --kms-key-id my-kms-key \
15.     --no-auto-minor-version-upgrade \
16.     --custom-iam-instance-profile AWSRDSCustomInstanceProfile-us-east-1
```
在 Windows 中：  

```
 1. aws rds create-db-instance ^
 2.     --engine custom-oracle-ee-cdb ^
 3.     --db-instance-identifier my-cfo-cdb-instance ^
 4.     --engine-version 19.cdb_cev1 ^
 5.     --db-name MYPDB ^
 6.     --db-system-id MYCDB ^
 7.     --allocated-storage 250 ^
 8.     --db-instance-class db.m5.xlarge ^
 9.     --db-subnet-group mydbsubnetgroup ^
10.     --master-username myuser ^
11.     --master-user-password mypassword ^
12.     --backup-retention-period 3 ^
13.     --port 8200 ^
14.     --kms-key-id my-kms-key ^
15.     --no-auto-minor-version-upgrade ^
16.     --custom-iam-instance-profile AWSRDSCustomInstanceProfile-us-east-1
```
指定此處所顯示提示以外的密碼，作為安全最佳實務。

使用 `describe-db-instances` 命令取得執行個體的詳細資訊。

**Example**  

```
1. aws rds describe-db-instances --db-instance-identifier my-cfo-cdb-instance
```
下列部分輸出顯示引擎、參數群組及其他資訊。  

```
 1.         {   
 2.             "DBInstanceIdentifier": "my-cfo-cdb-instance",
 3.             "DBInstanceClass": "db.m5.xlarge",
 4.             "Engine": "custom-oracle-ee-cdb",
 5.             "DBInstanceStatus": "available",
 6.             "MasterUsername": "admin",
 7.             "DBName": "MYPDB",
 8.             "DBSystemID": "MYCDB",
 9.             "Endpoint": {
10.                 "Address": "my-cfo-cdb-instance.abcdefghijkl.us-east-1.rds.amazonaws.com",
11.                 "Port": 1521,
12.                 "HostedZoneId": "A1B2CDEFGH34IJ"
13.             },
14.             "AllocatedStorage": 100,
15.             "InstanceCreateTime": "2023-04-12T18:52:16.353000+00:00",
16.             "PreferredBackupWindow": "08:46-09:16",
17.             "BackupRetentionPeriod": 7,
18.             "DBSecurityGroups": [],
19.             "VpcSecurityGroups": [
20.                 {
21.                     "VpcSecurityGroupId": "sg-0a1bcd2e",
22.                     "Status": "active"
23.                 }
24.             ],
25.             "DBParameterGroups": [
26.                 {
27.                     "DBParameterGroupName": "default.custom-oracle-ee-cdb-19",
28.                     "ParameterApplyStatus": "in-sync"
29.                 }
30.             ],
31. ...
```

## 多租戶架構考量
<a name="custom-creating.overview"></a>

如果您使用 Oracle 多租戶架構 (`custom-oracle-ee-cdb` 或 `custom-oracle-se2-cdb` 引擎類型) 建立 Amazon RDS Custom for Oracle 資料庫執行個體，則您的資料庫就是容器資料庫 (CDB)。如果您未指定 Oracle 多租戶架構，則您的資料庫是使用 `custom-oracle-ee` 或 `custom-oracle-se2` 引擎類型的傳統式非 CDB。非 CDB 不能包含插入式資料庫 (PDB)。如需詳細資訊，請參閱[Amazon RDS Custom for Oracle 的資料庫架構](custom-oracle.db-architecture.md)。

當您建立 RDS Custom for Oracle CDB 執行個體時，請考慮下列事項：
+ 您只能從 Oracle Database 19c CEV 建立多租戶資料庫。
+ 您只能在 CEV 使用 `custom-oracle-ee-cdb` 或 `custom-oracle-se2-cdb` 引擎類型時建立 CDB 執行個體。
+ 如果您使用 Standard Edition 2 建立 CDB 執行個體，CDB 最多可包含 3 個 PDB。
+ 依預設，您的 CDB 會命名為 `RDSCDB` (其也是 Oracle 系統 ID (Oracle SID) 的名稱)。您可以選擇不同名稱。
+ 您的 CDB 只包含一個起始 PDB。PDB 名稱預設為 `ORCL`。您可以針對起始 PDB 選擇不同的名稱，但 Oracle SID 和 PDB 名稱不能相同。
+ RDS Custom for Oracle 不會為 PDB 提供 API。若要建立其他 PDB，請使用 Oracle SQL 命令 `CREATE PLUGGABLE DATABASE`。RDS Custom for Oracle 不會限制您可以建立的 PDB 數目。通常，您負責建立和管理 PDB，如同內部部署中一般。
+ 您無法使用 RDS API 建立、修改和刪除 PDB：您必須使用 Oracle SQL 陳述式。當您使用 Oracle SQL 建立 PDB 時，我們建議您隨後取得手動快照，以防您需要執行時間點復原 (PITR)。
+ 您無法使用 Amazon RDS API 重新命名現有的 PDB。您也不能使用 `modify-db-instance` 命令重新命名 CDB。
+ CDB 根的開放模式在主要資料庫上為 `READ WRITE`，而在掛載的待命資料庫上則為 `MOUNTED`。RDS Custom for Oracle 嘗試在開啟 CDB 時開啟所有 PDB。如果 RDS Custom for Oracle 無法開啟所有 PDB，它會發出事件 `tenant database shutdown`。

## RDS Custom 服務連結角色
<a name="custom-creating.slr"></a>

*服務連結角色*可讓 Amazon RDS Custom 存取 中的資源 AWS 帳戶。它會讓使用 RDS Custom 更簡單，因為您不需要手動新增必要許可。RDS Custom 會定義其服務連結角色的許可，除非另有定義，否則僅有 RDS Custom 可以擔任其角色。定義的許可包括信任政策和許可政策，並且該許可政策不能連接到任何其他 IAM 實體。

當您建立 RDS Custom 資料庫執行個體時，Amazon RDS 和 RDS Custom 服務連結角色兩者都會建立 (如果尚未存在) 並且使用。如需詳細資訊，請參閱[使用 Amazon RDS 的服務連結角色](UsingWithRDS.IAM.ServiceLinkedRoles.md)。

第一次建立 RDS Custom for Oracle 資料庫執行個體時，您可能會收到下列錯誤：服務連結角色正在建立的程序中。請稍後再試。如果收到這個訊息，請等待幾分鐘的時間然後再次嘗試建立資料庫執行個體。

## 在 RDS Custom for Oracle 資料庫執行個體上安裝其他軟體元件
<a name="custom-install-add-software"></a>

在新建立的資料庫執行個體中，您的資料庫環境包含 Oracle 二進位檔、資料庫和資料庫接聽程式。您可能想要在資料庫執行個體的主機作業系統上安裝其他軟體。例如，您可能想要安裝 Oracle Application Express (APEX)、Oracle Enterprise Manager (OEM) 代理程式或 Guardium S-TAP 代理程式。如需指導方針和高階指示，請參閱詳細的 AWS 部落格文章在 [Amazon RDS Custom for Oracle 上安裝其他軟體元件](https://aws.amazon.com//blogs/database/install-additional-software-components-on-amazon-rds-custom-for-oracle/)。

# 使用工作階段管理員連線至 RDS Custom 資料庫執行個體
<a name="custom-creating.ssm"></a>

在建立 RDS Custom 資料庫執行個體之後，您可以使用 AWS Systems Manager Session Manager 連線到該執行個體。當您的資料庫執行個體無法公開存取時，這是偏好的技術。

工作階段管理員可讓您透過瀏覽器型 Shell 或透過 AWS CLI 存取 Amazon EC2 執行個體。如需詳細資訊，請參閱 [AWS Systems Manager 工作階段管理員](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager.html)。

## 主控台
<a name="custom-managing.ssm.console"></a>

**若要使用工作階段管理員連線至資料庫執行個體**

1. 登入 AWS 管理主控台，開啟位於 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/) 的 Amazon RDS 主控台。

1. 在導覽窗格中選擇 **Databases** (資料庫)，然後選擇您要連線的 RDS Custom 資料庫執行個體。

1. 選擇 **Configuration (組態)**。

1. 請記下資料庫執行個體的 **Resource ID (資源 ID)**。例如，資源 ID 可能是 `db-ABCDEFGHIJKLMNOPQRS0123456`。

1. 前往 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 開啟 Amazon EC2 主控台。

1. 在導覽窗格中，選擇**執行個體**。

1. 尋找 EC2 執行個體的名稱，然後按一下與其相關聯的執行個體 ID。例如，執行個體 ID 可能是 `i-abcdefghijklm01234`。

1. 選擇**連線**。

1. 選擇 **Session Manager (工作階段管理員)**。

1. 選擇**連線**。

   您的工作階段會開啟一個視窗。

## AWS CLI
<a name="custom-managing.ssm.CLI"></a>

您可以使用 AWS CLI 連線至 RDS Custom 資料庫執行個體。此技術需要 AWS CLI 的工作階段管理員外掛程式。若要了解如何安裝外掛程式，請參閱[安裝 AWS CLI 的工作階段管理員外掛程式](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-working-with-install-plugin.html)。

若要尋找 RDS Custom 資料庫執行個體的資料庫資源 ID，請使用 `aws rds [describe-db-instances](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html)`。

```
aws rds describe-db-instances \
    --query 'DBInstances[*].[DBInstanceIdentifier,DbiResourceId]' \
    --output text
```

下列範例輸出顯示 RDS Custom 執行個體的資源 ID。字首是 `db-`。

```
db-ABCDEFGHIJKLMNOPQRS0123456
```

若要尋找資料庫執行個體的 EC2 執行個體 ID，請使用 `aws ec2 describe-instances`。以下範例使用 `db-ABCDEFGHIJKLMNOPQRS0123456` 做為資源 ID。

```
aws ec2 describe-instances \
    --filters "Name=tag:Name,Values=db-ABCDEFGHIJKLMNOPQRS0123456" \
    --output text \
    --query 'Reservations[*].Instances[*].InstanceId'
```

以下範例輸出顯示 EC2 執行個體 ID。

```
i-abcdefghijklm01234
```

使用 `aws ssm start-session` 命令，在 `--target` 參數中提供 EC2 執行個體 ID。

```
aws ssm start-session --target "i-abcdefghijklm01234"
```

成功的連線看起來如下。

```
Starting session with SessionId: yourid-abcdefghijklm1234
[ssm-user@ip-123-45-67-89 bin]$
```

## 使用 SSH 連線到您的 RDS Custom 資料庫執行個體
<a name="custom-creating.ssh"></a>

Secure Shell 通訊協定 (SSH) 是一種支援透過不安全網路進行加密通訊的網路通訊協定。建立 RDS Custom 資料庫執行個體之後，您可以使用 SSH 用戶端連線到此執行個體。如需詳細資訊，請參閱[使用 SSH 連線至您的 Linux 執行個體](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstancesLinux.html)。

您的 SSH 連線技術取決於您的資料庫執行個體是否為私有，這表示它不接受來自公用網際網路的連線。在這種情況下，您必須使用 SSH 通道將 ssh 公用程式連線到執行個體。這項技術會在現有的 SSH 工作階段內使用專用資料串流 (通道) 傳輸資料。您可以使用 AWS Systems Manager來設定 SSH 通道。

**注意**  
支援存取私有執行個體的各種策略。若要了解如何使用堡壘主機，將 SSH 用戶端連線到私有執行個體，請參閱 [AWS上的 Linux 堡壘主機](https://aws.amazon.com/solutions/implementations/linux-bastion/)。若要了解如何設定連接埠轉送，請參閱[使用 AWS Systems Manager Session Manager進行連接埠轉送](https://aws.amazon.com/blogs/aws/new-port-forwarding-using-aws-system-manager-sessions-manager/)。

如果您的資料庫執行個體位於公有子網路且具有公開可用的設定，則不需要 SSH 通道。您可以像使用公有 Amazon EC2 執行個體一樣使用 SSH 進行連線。

若要將 SSH 用戶端連線到您的資料庫執行個體，請完成下列步驟：

1. [步驟 1：將您的資料庫執行個體設定為允許 SSH 連線](#custom-managing.ssh.port-22)

1. [步驟 2：擷取您的 SSH 私密金鑰和 EC2 執行個體 ID](#custom-managing.ssh.obtaining-key)

1. [步驟 3：使用 ssh 公用程式連線到 EC2 執行個體](#custom-managing.ssh.connecting)

### 步驟 1：將您的資料庫執行個體設定為允許 SSH 連線
<a name="custom-managing.ssh.port-22"></a>

若要確保您的資料庫執行個體能夠接受 SSH 連線，請執行下列動作：
+ 請確定您的資料庫執行個體安全群組允許 TCP 連接埠 22 上的傳入連線。

  若要了解如何設定資料庫執行個體的安全群組，請參閱 [使用安全群組控制存取](Overview.RDSSecurityGroups.md)。
+ 如果您不打算使用 SSH 通道，請確保您的資料庫執行個體位於公有子網路且可公開存取。

  在主控台中，可在資料庫詳細資訊頁面的**連線能力與安全性**索引標籤上**公開存取**相關欄位。若要在 CLI 中檢查您的設定，請執行下列命令：

  ```
  aws rds describe-db-instances \
  --query 'DBInstances[*].{DBInstanceIdentifier:DBInstanceIdentifier,PubliclyAccessible:PubliclyAccessible}' \
  --output table
  ```

  若要變更資料庫執行個體的協助工具設定，請參閱 [修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。

### 步驟 2：擷取您的 SSH 私密金鑰和 EC2 執行個體 ID
<a name="custom-managing.ssh.obtaining-key"></a>

若要使用 SSH 連線到資料庫執行個體，您需要與執行個體相關聯的 SSH 金鑰對。RDS Custom 會代表您建立 SSH 金鑰對，使用命名慣例 `do-not-delete-rds-custom-ssh-privatekey-resource_id-uuid` 或 `rds-custom!oracle-do-not-delete-resource_id-uuid-ssh-privatekey`、 AWS Secrets Manager 將您的 SSH 私有金鑰存放為秘密。

使用 AWS 管理主控台 或 擷取您的 SSH 私密金鑰 AWS CLI。如果您的執行個體具有公用 DNS，且您不打算使用 SSH 通道，亦請擷取 DNS 名稱。您可以指定 DNS 名稱進行公有連線。

#### 主控台
<a name="custom-managing.ssh.obtaining-key.console"></a>

**擷取秘密 SSH 金鑰**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)：// 開啟 Amazon RDS 主控台。

1. 在導覽窗格中選擇 **Databases** (資料庫)，然後選擇您要連線的 RDS Custom 資料庫執行個體。

1. 選擇 **Configuration (組態)**。

1. 請記下 **Resource ID (資源 ID)** 值。例如，資料庫執行個體資源 ID 可能是 `db-ABCDEFGHIJKLMNOPQRS0123456`。

1. 前往 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 開啟 Amazon EC2 主控台。

1. 在導覽窗格中，選擇**執行個體**。

1. 尋找 EC2 執行個體的名稱，然後選擇與其相關聯的執行個體 ID。例如，EC2 執行個體 ID 可能是 `i-abcdefghijklm01234`。

1. 在 **Details (詳細資訊)** 中尋找 **Key pair name (金鑰對名稱)**。配對名稱包含資料庫執行個體資源 ID。例如，配對名稱可能是 `do-not-delete-rds-custom-ssh-privatekey-db-ABCDEFGHIJKLMNOPQRS0123456-0d726c` 或 `rds-custom!oracle-do-not-delete-db-ABCDEFGHIJKLMNOPQRS0123456-0d726c-ssh-privatekey`。

1. 如果您的 EC2 執行個體是公有的，請記下**公有 IPv4 DNS**。例如，公有網域名稱系統 (DNS) 地址可能是 `ec2-12-345-678-901.us-east-2.compute.amazonaws.com`。

1. 在 https：//[https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/) 開啟 AWS Secrets Manager 主控台。

1. 選擇與金鑰對具有相同名稱的密碼。

1. 選擇 **Retrieve secret value (擷取秘密值)**。

1. 將 SSH 私有金鑰複製到文字檔，然後以 `.pem` 副檔名儲存檔案。例如，將檔案儲存為 `/tmp/do-not-delete-rds-custom-ssh-privatekey-db-ABCDEFGHIJKLMNOPQRS0123456-0d726c.pem` 或 `/tmp/rds-custom!oracle-do-not-delete-db-ABCDEFGHIJKLMNOPQRS0123456-0d726c-ssh-privatekey.pem`。

#### AWS CLI
<a name="custom-managing.ssh.obtaining-key.CLI"></a>

若要擷取 SSH 私有金鑰並將其儲存在 .pem 檔案中，您可以使用 AWS CLI。

1. 使用 `aws rds [describe-db-instances](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html)` 尋找 RDS Custom 資料庫執行個體的資料庫資源 ID。

   ```
   aws rds describe-db-instances \
       --query 'DBInstances[*].[DBInstanceIdentifier,DbiResourceId]' \
       --output text
   ```

   下列範例輸出顯示 RDS Custom 執行個體的資源 ID。字首是 `db-`。

   ```
   db-ABCDEFGHIJKLMNOPQRS0123456
   ```

1. 使用 `aws ec2 describe-instances` 尋找資料庫執行個體的 EC2 執行個體 ID。以下範例使用 `db-ABCDEFGHIJKLMNOPQRS0123456` 做為資源 ID。

   ```
   aws ec2 describe-instances \
       --filters "Name=tag:Name,Values=db-ABCDEFGHIJKLMNOPQRS0123456" \
       --output text \
       --query 'Reservations[*].Instances[*].InstanceId'
   ```

   以下範例輸出顯示 EC2 執行個體 ID。

   ```
   i-abcdefghijklm01234
   ```

1. 若要尋找金鑰名稱，請指定 EC2 執行個體 ID。下列範例描述 EC2 執行個體 `i-0bdc4219e66944afa`。

   ```
   aws ec2 describe-instances \
       --instance-ids i-0bdc4219e66944afa \
       --output text \
       --query 'Reservations[*].Instances[*].KeyName'
   ```

   下列範例輸出會顯示金鑰名稱，該名稱使用命名格式 `do-not-delete-rds-custom-ssh-privatekey-resource_id-uuid` 或 `rds-custom!oracle-do-not-delete-resource_id-uuid-ssh-privatekey`。

   ```
   do-not-delete-rds-custom-ssh-privatekey-db-ABCDEFGHIJKLMNOPQRS0123456-0d726c
   rds-custom!oracle-do-not-delete-db-ABCDEFGHIJKLMNOPQRS0123456-0d726c-ssh-privatekey
   ```

1. 使用 `aws secretsmanager` 將私有金鑰儲存在以金鑰命名的 .pem 檔案中。

   下列範例會將金鑰 `do-not-delete-rds-custom-ssh-privatekey-db-ABCDEFGHIJKLMNOPQRS0123456-0d726c` 儲存在 `/tmp` 目錄中。

   ```
   aws secretsmanager get-secret-value \
       --secret-id do-not-delete-rds-custom-ssh-privatekey-db-ABCDEFGHIJKLMNOPQRS0123456-0d726c \
       --query SecretString \
       --output text >/tmp/do-not-delete-rds-custom-ssh-privatekey-db-ABCDEFGHIJKLMNOPQRS0123456-0d726c.pem
   ```

   下列範例會將金鑰 `rds-custom!oracle-do-not-delete-db-ABCDEFGHIJKLMNOPQRS0123456-0d726c-ssh-privatekey` 儲存在 `/tmp` 目錄中。

   ```
   aws secretsmanager get-secret-value \
       --secret-id rds-custom!oracle-do-not-delete-db-ABCDEFGHIJKLMNOPQRS0123456-0d726c-ssh-privatekey \
       --query SecretString \
       --output text >/tmp/rds-custom!oracle-do-not-delete-db-ABCDEFGHIJKLMNOPQRS0123456-0d726c-ssh-privatekey.pem
   ```

### 步驟 3：使用 ssh 公用程式連線到 EC2 執行個體
<a name="custom-managing.ssh.connecting"></a>

您的連線技術取決於您要連線到私有資料庫執行個體還是連線到公有執行個體。私有連線需要您透過 AWS Systems Manager設定 SSH 通道。

**使用 ssh 公用程式連線到 EC2 執行個體**

1. 若為私人連線，請修改 SSH 組態檔，以透過 Proxy 將命令傳送至 AWS Systems Manager Session Manager。若為公有連線，請跳至步驟 2。

   將下列這幾行新增至 `~/.ssh/config`。針對名稱開頭為 `i-` 或 `mi-` 的主機，這些行會透過 Proxy 傳送 SSH 命令。

   ```
   Host i-* mi-*
       ProxyCommand sh -c "aws ssm start-session --target %h --document-name AWS-StartSSHSession --parameters 'portNumber=%p'"
   ```

1. 變更為包含 .pem 檔案的目錄。使用 `chmod`，將許可設定為 `400`。

   下列範例會變更為 `/tmp` 目錄，並設定 .pem 檔案 `do-not-delete-rds-custom-ssh-privatekey-db-ABCDEFGHIJKLMNOPQRS0123456-0d726c.pem` 的許可。

   ```
   cd /tmp
   chmod 400 do-not-delete-rds-custom-ssh-privatekey-db-ABCDEFGHIJKLMNOPQRS0123456-0d726c.pem
   ```

   下列範例會變更為 `/tmp` 目錄，並設定 .pem 檔案 `rds-custom!oracle-do-not-delete-db-ABCDEFGHIJKLMNOPQRS0123456-0d726c-ssh-privatekey.pem` 的許可。

   ```
   cd /tmp
   chmod 400 rds-custom!oracle-do-not-delete-db-ABCDEFGHIJKLMNOPQRS0123456-0d726c-ssh-privatekey.pem
   ```

1. 執行 ssh 公用程式，指定 .pem 檔案和公有 DNS 名稱 (進行公用連線) 或 EC2 執行個體 ID (進行私有連線)。以使用者 `ec2-user` 身分登入。

   下列範例會使用 DNS 名稱 `ec2-12-345-678-901.us-east-2.compute.amazonaws.com` 連線至公有執行個體。

   ```
   # .pem file using naming prefix do-not-delete
   ssh -i \
     "do-not-delete-rds-custom-ssh-privatekey-db-ABCDEFGHIJKLMNOPQRS0123456-0d726c.pem" \
     ec2-user@ec2-12-345-678-901.us-east-2.compute.amazonaws.com
   
   # .pem file using naming prefix rds-custom!oracle-do-not-delete
   ssh -i \
     "rds-custom!oracle-do-not-delete-db-ABCDEFGHIJKLMNOPQRS0123456-0d726c-ssh-privatekey.pem" \
     ec2-user@ec2-12-345-678-901.us-east-2.compute.amazonaws.com
   ```

   下列範例會使用 EC2 執行個體 ID `i-0bdc4219e66944afa` 連線到私有執行個體。

   ```
   # .pem file using naming prefix do-not-delete
   ssh -i \
     "do-not-delete-rds-custom-ssh-privatekey-db-ABCDEFGHIJKLMNOPQRS0123456-0d726c.pem" \
     ec2-user@i-0bdc4219e66944afa
   
   # .pem file using naming prefix rds-custom!oracle-do-not-delete
   ssh -i \
     "rds-custom!oracle-do-not-delete-db-ABCDEFGHIJKLMNOPQRS0123456-0d726c-ssh-privatekey.pem" \
     ec2-user@i-0bdc4219e66944afa
   ```

# 以 SYS 身分登入您的 RDS Custom for Oracle 資料庫
<a name="custom-creating.sysdba"></a>

在建立 RDS Custom 資料庫執行個體之後，您可以使用者 `SYS` 身分登入 Oracle 資料庫，這將給予您 `SYSDBA` 權限。您有以下登入選項：
+ 從 Secrets Manager 取得 `SYS` 密碼，並在 SQL 用戶端中指定此密碼。
+ 使用作業系統身分驗證來登入您的資料庫。在此情況下，您不需要密碼。

## 為您的 RDS Custom for Oracle 資料庫尋找 SYS 密碼
<a name="custom-creating.sysdba.pwd"></a>

您可以在 API 呼叫中指定主要使用者名稱，以 `SYS` 或 `SYSTEM` 身分登入 Oracle 資料庫。`SYS` 和 `SYSTEM` 的密碼存放在 Secrets Manager 中。

秘密使用命名格式 `do-not-delete-rds-custom-resource_id-uuid` 或 `rds-custom!oracle-do-not-delete-resource_id-uuid`。您可以使用 AWS 管理主控台尋找密碼。

### 主控台
<a name="custom-creating.sysdba.pwd.console"></a>

**在 Secrets Manager 中為您的資料庫尋找 SYS 密碼**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)：// 開啟 Amazon RDS 主控台。

1. 在 RDS 主控台中，完成下列步驟︰

   1. 在導覽窗格中，選擇 **Databases** (資料庫)。

   1. 選擇 RDS Custom for Oracle 資料庫執行個體的名稱。

   1. 選擇 **Configuration (組態)**。

   1. 複製**資源 ID** 下方的值。例如，您的資源 ID 可能是 **db-ABC12CDE3FGH4I5JKLMNO6PQR7**。

1. 前往以下位置開啟機密管理員控制台：[https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/)。

1. 在 Secrets Manager 主控台中，完成下列步驟︰

   1. 在左側導覽窗格中，選擇**秘密**。

   1. 依您在步驟 2.d 中複製的資源 ID 篩選秘密。

   1. 選擇使用命名格式 **do-not-delete-rds-custom-*resource\$1id*-*uuid*** 或 **rds-custom\$1oracle-do-not-delete-*resource\$1id*-*uuid*** 的秘密。*resource\$1id* 是您在步驟 2.d 中複製的資源 ID。

      例如，如果您的資源 ID 是 **db-ABC12CDE3FGH4I5JKLMNO6PQR7**，而 UUID 是 **1234ab**，則您的秘密名為 **do-not-delete-rds-custom-db-ABC12CDE3FGH4I5JKLMNO6PQR7-1234ab** 或 **rds-custom\$1oracle-do-not-delete-db-ABC12CDE3FGH4I5JKLMNO6PQR7-1234ab**。

   1. 在**秘密值**中，選擇**擷取秘密值**。

   1. 在**金鑰/值**中，複製**密碼**的值。

1. 在資料庫執行個體上安裝 SQL\$1Plus，然後以 `SYS` 身分登入資料庫。如需詳細資訊，請參閱[步驟 3：將您的 SQL 連線至 Oracle 資料庫執行個體](CHAP_GettingStarted.CreatingConnecting.Oracle.md#CHAP_GettingStarted.Connecting.Oracle)。

## 使用作業系統身分驗證，登入 RDS Custom for Oracle 資料庫
<a name="custom-creating.sysdba.pwd"></a>

作業系統使用者 `rdsdb` 擁有 Oracle 資料庫二進位檔案。您可以切換到 `rdsdb` 使用者並登入 RDS Custom for Oracle 資料庫，無需密碼。

1. 使用 連線至資料庫執行個體 AWS Systems Manager。如需詳細資訊，請參閱[使用工作階段管理員連線至 RDS Custom 資料庫執行個體](custom-creating.ssm.md)。

1. 切換到 `rdsdb` 使用者。

   ```
   sudo su - rdsdb
   ```

1. 使用作業系統身分驗證來登入您的資料庫。您可以使用 `sqlplus / as sysdba` 或 `sql` 別名。

   ```
   $ sqlplus / as sysdba
   
   SQL*Plus: Release 21.0.0.0.0 - Production on Wed Apr 12 20:11:08 2023
   Version 21.9.0.0.0
   
   Copyright (c) 1982, 2020, Oracle.  All rights reserved.
   
   
   Connected to:
   Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
   Version 19.10.0.0.0
   ```

   或者，您可以使用 `sql` 別名。

   ```
   $ sql
   ```