

# Amazon RDS Custom for Oracle DB インスタンスの設定
<a name="custom-creating"></a>

RDS Custom for Oracle の DB インスタンスを作成し、セキュアシェル (SSH) またはAWS Systems Managerを使用してそれに接続できます。

RDS Custom for Oracle DB インスタンスへの接続とログインの詳細については、次のトピックを参照してください。
+ [Session Manager を使用して RDS Custom DB インスタンスに接続する](custom-creating.ssm.md)
+ [SSH を使用した RDS Custom DB インスタンスへの接続](#custom-creating.ssh)
+ [RDS Custom for Oracle データベースに SYS としてログインします。](custom-creating.sysdba.md)

## RDS Custom for Oracle DB インスタンスを作成する
<a name="custom-creating.create"></a>

AWS マネジメントコンソールまたはAWS CLIのいずれかを使用して、Amazon RDS Custom for Oracle DB インスタンスを作成します。この手順は、Amazon RDS DB インスタンスの作成手順と似ています。詳細については、「[Amazon RDS DB インスタンスの作成](USER_CreateDBInstance.md)」を参照してください。

CEV マニフェストにインストールパラメータを含めた場合、DB インスタンスは Oracle ベース、Oracle ホーム、指定した UNIX/Linux ユーザーとグループの ID と名前を使用します。この `oratab` ファイルは、インストール中に Oracle Database によって作成され、シンボリックリンクではなく、実際のインストール先を指しています。RDS Custom for Oracle がコマンドを実行するときには、デフォルトユーザーの `rdsdb` ではなく、設定された OS ユーザーとして実行します。詳細については、「[ステップ 5: CEV マニフェストを準備する](custom-cev.preparing.md#custom-cev.preparing.manifest)」を参照してください。

RDS Custom DB インスタンスの作成、または接続を試行する前に、[Amazon RDS Custom for Oracle の環境設定](custom-setup-orcl.md) のタスクを完了してください。

### コンソール
<a name="custom-creating.console"></a>

**RDS Custom for Oracle DB インスタンスを作成するには**

1. AWS マネジメントコンソール にサインインし、Amazon RDS コンソール ([https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)) を開きます。

1. ナビゲーションペインで、**データベース** を選択します。

1. [**データベースの作成**] を選択します。

1. **[Choose a database creation method]** (データベース作成方法を選択) で **[Standard Create]** (スタンダード作成) を選択します。

1. **[エンジンオプション]** セクションで、次の操作を行います。

   1. **[エンジンのタイプ]** で、**[Oracle]** を選択します。

   1. **データベース管理のタイプ**で、**Amazon RDS Custom**を選択します。

   1. **[アーキテクチャ設定]** で、以下のいずれかを実行します。
      + **[マルチテナントアーキテクチャ]** を選択して、コンテナデータベース (CDB) を作成します。作成時には、CDB には 1 つの PDB シードと 1 つの初期 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. 「**テンプレート**」 では、「**作成**」 を選択します。

1. **[Settings]** (設定) セクションで、以下の手順を実行します:

   1. **[DB インスタンス識別子]** として、DB インスタンスの一意の名前を入力します。

   1. **[マスターユーザー名]** で、ユーザー名を入力します。この値は後でコンソールから取得できます。

      非 CDB に接続する場合、マスターユーザーは非 CDB のユーザーです。CDB に接続する場合、マスターユーザーは PDB のユーザーです。CDB ルートに接続するには、ホストにログインして SQL クライアントを起動し、SQL コマンドを使用して管理ユーザーを作成します。

   1. **[パスワードの自動生成]** をオフにします。

1. **[DB インスタンスクラス]** を選択します。

   サポートされているクラスについては、「[RDS Custom for Oracle での DB インスタンスクラスのサポート](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. **[接続]** で、**[Virtual Private Cloud (VPC)]**、**[DB サブネットグループ]**、**[VPC セキュリティグループ (ファイアウォール)]** を指定します。

1. 「**RDS カスタムセキュリティ**」 で、以下を実行します。

   1. **IAM インスタンスプロファイル**で、RDS Custom for Oracle DB インスタンスのインスタンスプロファイルを選択します。

      IAM インスタンスプロファイルは、`AWSRDSCustom`で始まる必要があります。例えば、*AWSRDSCustomInstanceProfileForRdsCustomInstance*です。

   1. 「**暗号化**」で、**キー ARN を入力**を選択し、使用可能なAWS KMSキーを一覧表示します。次に、リストからキーを選択します。

      AWS KMSRDS Custom にはキーが必要です。詳細については、「[ステップ 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 DB インスタンス設定を指定します。各設定の詳細については、「[DB インスタンスの設定](USER_CreateDBInstance.Settings.md)」を参照してください。次の設定はコンソールに表示されず、サポート対象外です。
      + **プロセッサの機能**
      + **ストレージのオートスケーリング**
      + **データベース認証**の**パスワードと Kerberos 認証**のオプション (**パスワード認証**のみサポートされています)
      + ** Performance Insights** 
      + **ログのエクスポート**
      + **マイナーバージョン自動アップグレードの有効化**
      + **削除保護**

1. **[データベースの作成]** を選択します。
**重要**  
RDS Custom for Oracle DB インスタンスを作成する際に、次のエラーが表示される場合があります。「サービスリンクロールが作成中です。後ほどもう一度試してください。」 表示された場合は、数分間待ってから DB インスタンスの作成を再試行します。

   **認証情報の詳細の表示**ボタンが**データベース**ページに表示されます。

   RDS Custom DB インスタンスのマスターユーザー名およびパスワードを表示するには、**[認証情報の詳細の表示]** を選択します。

   マスターユーザーとして DB インスタンスに接続するには、表示されているユーザー名およびパスワードを使用します。
**重要**  
コンソールでマスターユーザーパスワードを再度表示することはできません。記録していない場合は、変更する必要がある場合があります。RDS Custom DB インスタンスが使用可能になった後にマスターユーザーパスワードを変更するには、データベースにログインして、`ALTER USER` コマンドを実行します。コンソールで **[変更]** を使用してパスワードをリセットすることはできません。

1. **データベース**を選択して、RDS Custom DB インスタンスのリストを表示します。

1. 先ほど作成した RDS Custom DB インスタンスを選択します。

   RDS コンソールに、新規の RDS Custom DB インスタンスの詳細が表示されます。
   + RDS Custom DB インスタンスが作成されて使用できるようになるまで、DB インスタンスのステータスは **[作成中]** となります。ステータスが **[利用可能]** に変わると、DB インスタンスに接続できます。インスタンスクラスと割り当てられたストレージによっては、新規の DB インスタンスを使用できるようになるまで数分かかることがあります。
   + **ロール**には**インスタンス (RDS Custom)**という値があります。
   + **[RDS カスタムオートメーションモード]** には **[完全なオートメーション]** という値があります。この設定は、DB インスタンスが自動モニタリングとインスタンスの回復を提供することを意味します。

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

RDS Custom DB インスタンスは、[create-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html) AWS CLI コマンドを使用して作成します。

以下のオプションは必須です。
+ `--db-instance-identifier`
+ `--db-instance-class` (サポートされている DB インスタンスクラスのリストについては、「」を参照してください)[RDS Custom for Oracle での DB インスタンスクラスのサポート](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`* は DB インスタンスを作成する AWS リージョン です)

以下の例では、`my-cfo-cdb-instance` という名前の RDS Custom DB インスタンスを作成します。データベースは、デフォルト以外の *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 DB インスタンスを作成する場合、データベースはコンテナデータベース (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 からのみ作成できます。
+ CDB インスタンスを作成できるのは、CEV が `custom-oracle-ee-cdb` または `custom-oracle-se2-cdb` エンジンタイプを使用している場合のみです。
+ Standard Edition 2 を使用して CDB インスタンスを作成する場合、CDB には最大 3 つの PDB を含めることができます。
+ デフォルトでは、CDB には Oracle System ID (Oracle SID) と同じ `RDSCDB` という名前が付けられます。別の名前を選択できます。
+ CDB には初期 PDB が 1 つだけ含まれています。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>

*service-linked role* は、AWS アカウント のリソースへのアクセス権を Amazon RDS Custom に付与します。これにより、必要なアクセス許可を手動で追加する必要がなくなるため、RDS Custom の使用が簡単になります。RDS Custom は、サービスにリンクされたロールのアクセス許可を定義し、別途定義されている場合を除き、RDS Custom のみがそのロールを引き受けることができます。定義されるアクセス許可には、信頼ポリシーやアクセス許可ポリシーなどがあり、そのアクセス許可ポリシーを他の IAM エンティティに添付することはできません。

RDS Custom DB インスタンスを作成すると、Amazon RDS と RDS Custom サービスにリンクされたロールの両方が作成され (まだ存在しない場合)、使用されます。詳細については、「[Amazon RDS のサービスにリンクされたロールの使用](UsingWithRDS.IAM.ServiceLinkedRoles.md)」を参照してください。

RDS Custom for Oracle DB インスタンスを初めて作成するときに、「サービスにリンクされたロールが作成中です」というエラーが表示される場合があります。後ほどもう一度試してください。」 表示された場合は、数分間待ってから DB インスタンスの作成を再試行します。

## RDS Custom for Oracle DB インスタンスに追加のソフトウェアコンポーネントをインストールする
<a name="custom-install-add-software"></a>

新しく作成された DB インスタンスでは、データベース環境には Oracle バイナリ、データベース、およびデータベースリスナーが含まれます。DB インスタンスのホストオペレーティングシステムに追加のソフトウェアをインストールしたい場合があります。例えば、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/)」を参照してください。

# Session Manager を使用して RDS Custom DB インスタンスに接続する
<a name="custom-creating.ssm"></a>

RDS Custom DB インスタンスを作成した後、AWS Systems Manager Session Manager を使用してインスタンスに接続できます。DB インスタンスが一般にアクセスできない場合に推奨される方法です。

Session Manager では、ブラウザベースのシェルまたは AWS CLI を介して、Amazon EC2 インスタンスにアクセスできます。詳細については、「[AWS Systems Manager Session Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager.html)」を参照してください。

## コンソール
<a name="custom-managing.ssm.console"></a>

**Session Manager を使用して DB インスタンスに接続するには**

1. AWS マネジメントコンソール にサインインし、Amazon RDS コンソール [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/) を開きます。

1. ナビゲーションペインで、「**データベース**」 を選択し、停止する RDS Custom DB インスタンスを選択します。

1. **[設定]** を選択します。

1. DB インスタンスの**リソース ID**に注意してください。例えば、リソース ID は`db-ABCDEFGHIJKLMNOPQRS0123456`のようになります。

1. Amazon EC2 コンソール ([https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)) を開きます。

1. ナビゲーションペインで、[**インスタンス**] を選択します。

1. EC2 インスタンスの名前を探し、それに関連付けられているインスタンス ID をクリックします。例えば、インスタンス ID は`i-abcdefghijklm01234`のようになります。

1. **[接続]**を選択します。

1. **セッションマネージャー**を選択します。

1. **[接続]**を選択します。

   セッションのウィンドウが開きます。

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

AWS CLIを使用して RDS Custom DB インスタンスに接続できます。この方法では、AWS CLIのセッションマネージャープラグインが必要です。プラグインをインストールする方法については、「[Install the Session Manager plugin for the AWS CLI](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-working-with-install-plugin.html)」を参照してください。

RDS Custom DB インスタンスの DB リソース 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
```

DB インスタンスの EC2 インスタンス ID を見つけるには、`aws ec2 describe-instances`を使用します。次の例ではリソース ID に `db-ABCDEFGHIJKLMNOPQRS0123456` を使用しています。

```
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 DB インスタンスへの接続
<a name="custom-creating.ssh"></a>

セキュアシェルプロトコル (SSH) は、セキュリティで保護されていないネットワーク上での暗号化通信をサポートするネットワークプロトコルです。RDS Custom DB インスタンスを作成すると、SSH クライアントを使用してこのインスタンスに接続できます。詳細については、「[SSH を使用した Linux インスタンスへの接続](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstancesLinux.html)」を参照してください。

SSH 接続方法は、DB インスタンスがプライベートかどうか、つまりパブリックインターネットからの接続を受け付けないかどうかによって異なります。この場合、SSH トンネリングを使用して ssh ユーティリティをインスタンスに接続する必要があります。この方法では、既存の SSH セッション内の専用データストリーム (トンネル) を使用してデータを転送します。SSH トンネリングは AWS Systems Manager を使用して設定できます。

**注記**  
プライベートインスタンスへのアクセスにはさまざまな戦略がサポートされています。踏み台ホストを使用して 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/)」を参照してください。

DB インスタンスがパブリックサブネットにあり、パブリックに利用可能な設定になっている場合は、SSH トンネリングは必要ありません。パブリック Amazon EC2 インスタンスと同じように SSH で接続できます。

SSH クライアントを DB インスタンスに接続するには、次のステップを完了します。

1. [ステップ 1: SSH 接続を許可するように DB インスタンスを設定する](#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 接続を許可するように DB インスタンスを設定する
<a name="custom-managing.ssh.port-22"></a>

DB インスタンスが SSH 接続を受け入れるには、次の手順を実行します。
+ DB インスタンスのセキュリティグループが TCP のポート 22 でインバウンド接続を許可していることを確認します。

  DB インスタンスのセキュリティグループを設定する方法については、「[セキュリティグループによるアクセス制御](Overview.RDSSecurityGroups.md)」を参照してください。
+ SSH トンネリングを使用する予定がない場合は、DB インスタンスがパブリックサブネットにあり、パブリックにアクセス可能であることを確認してください。

  コンソールでは、データベース詳細ページの **[接続とセキュリティ]** タブで関連するフィールドが**一般公開されています**。CLI で設定を確認するには、次のコマンドを実行します。

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

  DB インスタンスのアクセシビリティ設定を変更するには、「[Amazon RDS DB インスタンスを変更する](Overview.DBInstance.Modifying.md)」を参照してください。

### ステップ 2: SSH シークレットキーと EC2 インスタンス ID を取得する
<a name="custom-managing.ssh.obtaining-key"></a>

SSH を使用して、DB インスタンスに接続するには、インスタンスに関連付けられている SSH キーペアが必要です。RDS Custom は、命名規則 `do-not-delete-rds-custom-ssh-privatekey-resource_id-uuid` または `rds-custom!oracle-do-not-delete-resource_id-uuid-ssh-privatekey` を使用して、ユーザーに代わって SSH キーペアを作成します。AWS Secrets Manager は、SSH プライベートキーをシークレットとして保存します。

AWS マネジメントコンソール または AWS CLI を使用して SSH シークレットキーを取得します。インスタンスにパブリック DNS があり、SSH トンネリングを使用する予定がない場合は、DNS 名も取得してください。公開接続の DNS 名を指定します。

#### コンソール
<a name="custom-managing.ssh.obtaining-key.console"></a>

**シークレット SSH キーを取得するには**

1. AWS マネジメントコンソール にサインインし、Amazon RDS コンソール ([https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)) を開きます。

1. ナビゲーションペインで、「**データベース**」 を選択し、停止する RDS Custom DB インスタンスを選択します。

1. **[設定]** を選択します。

1. **リソース ID**値に注意してください。例えば、DB インスタンスリソース ID は `db-ABCDEFGHIJKLMNOPQRS0123456` になります。

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、[**インスタンス**] を選択してください。

1. EC2 インスタンスの名前を見つけ、それに関連付けられているインスタンス ID を選択します。例えば、EC2 インスタンス ID は`i-abcdefghijklm01234`です。

1. **詳細**で、**キーペア名**を見つけます。ペア名には DB インスタンスリソース 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. AWS Secrets Managerコンソールを[https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/)で開きます。

1. キーペアと同じ名前のシークレットを選択します。

1. **[シークレットの値を取得する]** を選択します。

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 DB インスタンスの DB リソース ID を見つけます。

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

   次のサンプル出力は、RDS Custom インスタンスのリソース ID を示しています。プレフィックスは`db-`です。

   ```
   db-ABCDEFGHIJKLMNOPQRS0123456
   ```

1. `aws ec2 describe-instances` を使用して DB インスタンスの EC2 インスタンス ID を見つけます。次の例ではリソース ID に `db-ABCDEFGHIJKLMNOPQRS0123456` を使用しています。

   ```
   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>

接続方法は、プライベート DB インスタンスに接続するか、パブリックインスタンスに接続するかによって異なります。プライベート接続では、AWS Systems Manager による SSH トンネリングを設定する必要があります。

**SSH ユーティリティを使用して EC2 インスタンスに接続するには**

1. プライベート接続の場合は、コマンドを AWS Systems Manager Session Manager にプロキシするように SSH 設定ファイルを変更してください。公開接続の場合は、ステップ 2 に進みます。

   `~/.ssh/config` に次の行を追加します。これらの行は、前が `i-` または `mi-` で始まるホストの 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. .pem ファイルと、パブリック DNS 名 (パブリック接続用) または EC2 インスタンス ID (プライベート接続用) を指定して ssh ユーティリティを実行します。ユーザー `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
   ```

# RDS Custom for Oracle データベースに SYS としてログインします。
<a name="custom-creating.sysdba"></a>

RDS Custom DB インスタンスを作成すると、`SYSDBA` 権限が付与される、ユーザー `SYS` として Oracle データベースにログインできます。次のログイン方法があります。
+ Secrets Manager から `SYS` パスワードを取得し、このパスワードを SQL クライアントで指定します。
+ OS 認証を使用してデータベースにログインします。この場合、パスワードは必要ありません。

## RDS Custom for Oracle データベースの SYS パスワードの検索
<a name="custom-creating.sysdba.pwd"></a>

`SYS` または `SYSTEM` として、または API コールでマスターユーザー名を指定することにより、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 マネジメントコンソール にサインインし、Amazon RDS コンソール ([https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)) を開きます。

1. RDS コンソールで、以下の手順を実行します。

   1. ナビゲーションペインで、**[Databases]** (データベース) を選択します。

   1. RDS Custom for Oracle DB インスタンスの名前を選択します。

   1. **[設定]** を選択します。

   1. **[リソース ID]** の下の値をコピーします。例えば、リソース ID が **db-ABC12CDE3FGH4I5JKLMNO6PQR7** とします。

1. Secrets Manager のコンソール ([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. DB インスタンスに SQL\$1Plus をインストールし、データベースに `SYS` としてログインします。詳細については、「[ステップ 3: SQL クライアントを Oracle DB インスタンスに接続する](CHAP_GettingStarted.CreatingConnecting.Oracle.md#CHAP_GettingStarted.Connecting.Oracle)」を参照してください。

## OS 認証を使用して RDS Custom for Oracle データベースにログインする
<a name="custom-creating.sysdba.pwd"></a>

OS ユーザー `rdsdb` は Oracle データベースのバイナリを所有しています。`rdsdb` ユーザーに切り替えて、パスワードなしで RDS Custom for Oracle データベースにログインできます。

1. AWS Systems Manager を使って DB インスタンスに接続します。詳細については、「[Session Manager を使用して RDS Custom DB インスタンスに接続する](custom-creating.ssm.md)」を参照してください。

1. `rdsdb` ユーザーに切り替えます。

   ```
   sudo su - rdsdb
   ```

1. OS 認証を使用してデータベースにログインします。`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
   ```