

# RDS for Oracle CDB の概要
<a name="Oracle.Concepts.CDBs"></a>

Oracle Database 19c 以降を実行している場合、RDS for Oracle DB インスタンスをコンテナデータベース (CDB) として作成できます。Oracle Database 21c 以降では、すべてのデータベースは CDB です。CDB は、RDS for Oracle でテナントデータベースと呼ばれるプラガブルデータベース (PDB) を格納できるという点で、非 CDB とは異なります。PDB は、スキーマとオブジェクトのポータブルコレクションであり、アプリケーションには別のデータベースとして表示されます。

CDB インスタンスを作成するときには、初期テナントデータベース (PDB) を作成します。RDS for Oracle では、クライアントアプリケーションは CDB ではなく PDB とやり取りします。PDB でのエクスペリエンスは、非 CDB でのエクスペリエンスとほぼ同じです。

**Topics**
+ [CDB アーキテクチャのマルチテナント設定](#multi-tenant-configuration)
+ [CDB アーキテクチャのシングルテナント設定](#Oracle.Concepts.single-tenant)
+ [CDB の作成と変換のオプション](#oracle-cdb-creation-conversion)
+ [CDB のユーザーアカウントと権限](#Oracle.Concepts.single-tenant.users)
+ [CDB のパラメータグループファミリー](#Oracle.Concepts.single-tenant.parameters)
+ [RDS for Oracle CDB の制限事項](#Oracle.Concepts.single-tenant-limitations)

## CDB アーキテクチャのマルチテナント設定
<a name="multi-tenant-configuration"></a>

RDS for Oracle は、Oracle マルチテナントアーキテクチャのマルチテナント設定 (*CDB アーキテクチャ*とも呼ばれる) をサポートしています。この設定では、RDS for Oracle CDB インスタンスに、データベースのエディションと必要なオプションライセンスに応じて、1～30 個のテナントデータベースを含めることができます。Oracle データベースでは、テナントデータベースは PDB です。DB インスタンスが 19.0.0.0.0.ru-2022-01.r1 以降の Oracle Database を使用する必要があります。

**注記**  
Amazon RDS 設定は、単なる Oracle DB エンジンではなく、Amazon RDS の機能であるため、「multitenant」ではなく「multi-tenant」と呼ばれています。同様に、RDS の用語「テナント」は、Oracle PDB だけでなく、RDS 設定のすべてのテナントを指します。RDS のドキュメントの「Oracle マルチテナント」という用語は、オンプレミスデプロイと RDS デプロイの両方に対応する Oracle データベース CDB アーキテクチャのみを指します。

以下の設定を設定できます。
+ テナントデータベース名
+ テナントデータベースのマスターユーザー名
+ テナントデータベースのマスターパスワード (オプションで Secrets Manager と統合)
+ テナントデータベース文字セット
+ テナントデータベース各国語文字セット

テナントデータベース文字セットは CDB の文字セットと異なる場合があります。同じことが各国語文字セットにも当てはまります。最初のテナントデータベースを作成したら、RDS API を使用してテナントデータベースを作成、変更、または削除できます。CDB 名はデフォルトで `RDSCDB` に設定されており、変更できません。詳細については、「[DB インスタンスの設定](USER_CreateDBInstance.Settings.md)」および「[RDS for Oracle テナントデータベースの変更](oracle-cdb-configuring.modifying.pdb.md)」を参照してください。

## CDB アーキテクチャのシングルテナント設定
<a name="Oracle.Concepts.single-tenant"></a>

RDS for Oracle は、シングルテナント設定と呼ばれる Oracle マルチテナントアーキテクチャのレガシー設定をサポートしています。この設定では、RDS for Oracle CDB インスタンスには 1 つのテナント (PDB) しか格納できません。後にさらに PDB を作成することはできません。

## CDB の作成と変換のオプション
<a name="oracle-cdb-creation-conversion"></a>

Oracle Database 21c は CDB のみをサポートしていますが、Oracle Database 19c は CDB と非 CDB の両方をサポートしています。RDS for Oracle CDB インスタンスはすべて、マルチテナント設定とシングルテナント設定の両方をサポートしています。

### Oracle データベースアーキテクチャの作成、変換、アップグレードのオプション
<a name="oracle-cdb-creation-conversion.architecture"></a>

次の表に、RDS for Oracle Database の作成とアップグレードのさまざまなアーキテクチャオプションを示します。


| リリース | データベース作成オプション | アーキテクチャ変換オプション | メジャーバージョンアップグレードターゲット | 
| --- | --- | --- | --- | 
| Oracle Database 21c | CDB アーキテクチャのみ | 該当なし | 該当なし | 
| Oracle Database 19c | CDB または非 CDB アーキテクチャ | 非 CDB から CDB アーキテクチャへ (April 2021 RU 以降) | Oracle Database 21c CDB | 

前の表に示すように、非 CDB を新しいメジャーデータベースバージョンの CDB に直接アップグレードすることはできません。ただし、Oracle Database 19c の非 CDB を Oracle Database 19c CDB に変換してから、Oracle Database 19c CDB を Oracle Database 21c CDB にアップグレードすることはできます。詳細については、「[RDS for Oracle の 非 CDB から CDB への変換](oracle-cdb-converting.md)」を参照してください。

### CDB アーキテクチャ設定の変換オプション
<a name="oracle-cdb-creation-conversion.configuration"></a>

次の表は、RDS for Oracle DB インスタンスのアーキテクチャ設定を変換するためのさまざまなオプションを示しています。


| 現在のアーキテクチャと設定 | CDB アーキテクチャのシングルテナント設定への変換 | CDB アーキテクチャのマルチテナント設定への変換 | 非 CDB アーキテクチャへの変換 | 
| --- | --- | --- | --- | 
| 非 CDB | サポート対象 | サポート対象\$1 | 該当なし | 
| シングルテナント設定を使用した CDB | 該当なし | サポート対象 | サポートされていません | 
| マルチテナント設定を使用した CDB | サポートされていません | 該当なし | サポートされていません | 

\$1 非 CDB を 1 回の操作でマルチテナント設定に変換することはできません。非 CDB を CDB に変換すると、CDB はシングルテナント設定になります。その後、別の操作でシングルテナントをマルチテナント設定に変換できます。

## CDB のユーザーアカウントと権限
<a name="Oracle.Concepts.single-tenant.users"></a>

Oracle マルチテナントアーキテクチャでは、すべてのユーザーアカウントが共通ユーザーまたはローカルユーザーのいずれかになります。CDB 共通ユーザーとは、単一のアイデンティティとパスワードが CDB ルート、ならびに既存および将来のすべての PDB で認識されているデータベースユーザーです。対照的に、ローカルユーザーは 1 つの PDB にのみ存在します。

RDS マスターユーザーは PDB 内のローカルユーザーアカウントで、DB インスタンスを作成するときに名前を付けます。新しいユーザーアカウントを作成すると、これらのユーザーも PDB に常駐するローカルユーザーとなります。ユーザーアカウントを使用して新しい PDB を作成したり、既存の PDB の状態を変更したりすることはできません。

`rdsadmin` ユーザーは共通のユーザーアカウントです。このアカウントに存在する RDS for Oracle パッケージを実行できますが、`rdsadmin` としてログインすることはできません。詳細については、Oracle のドキュメントの [About Common Users and Local Users](https://docs.oracle.com/en/database/oracle/oracle-database/19/dbseg/managing-security-for-oracle-database-users.html#GUID-BBBD9904-F2F3-442B-9AFC-8ACDD9A588D8) を参照してください。

マルチテナント設定とシングルテナント設定の両方のマスターユーザーの場合、セルフマネージドまたは AWS Secrets Manager によって管理される認証情報を使用できます。シングルテナント設定では、マネージドマスターパスワードに `create-db-instance` などのインスタンスレベルの CLI コマンドを使用します。マルチテナント設定では、マネージドマスターパスワードに `create-tenant-database` などのテナントデータベースコマンドを使用します。Secrets Manager との統合の詳細については、「[Secrets Manager を使用した RDS for Oracle テナントデータベースのマスターユーザーパスワードの管理](rds-secrets-manager.md#rds-secrets-manager-tenant)」を参照してください。

## CDB のパラメータグループファミリー
<a name="Oracle.Concepts.single-tenant.parameters"></a>

CDB には、独自のパラメータグループファミリーおよびデフォルトパラメータ値があります。CDB パラメータグループファミリーは次のとおりです。
+ oracle-ee-cdb-21
+ oracle-se2-cdb-21
+ oracle-ee-cdb-19
+ oracle-se2-cdb-19

## RDS for Oracle CDB の制限事項
<a name="Oracle.Concepts.single-tenant-limitations"></a>

RDS for Oracle は、オンプレミス CDB で使用できる機能のサブセットをサポートしています。

### CDB の制限事項
<a name="oracle-cdb-limitations.cdb"></a>

以下の制限は、RDS for Oracle に CDB レベルで適用されます。
+ CDB に接続することはできません。常に CDB ではなくテナントデータベース (PDB) に接続します。非 CDB の場合と同様に、PDB のエンドポイントを指定します。唯一の違いは、データベース名に *pdb\$1name* を指定することです。ここで、*pdb\$1name* は PDB のために選択した名前です。
+ マルチテナント設定の CDB をシングルテナント変換の CDB に変換することはできません。マルチテナント設定への変換は一方向で、元に戻すことはできません。
+ DB インスタンスが 19.0.0.0.ru-2022-01.r1 より前の Oracle データベースのリリースを使用している場合は、マルチテナント設定を有効にしたり、マルチテナント設定に変換したりすることはできません。
+ CDB でデータベースアクティビティストリームを使用することはできません。
+ `CDB$ROOT` 内から監査を有効にすることはできません。各 PDB 内で個別に監査を有効にする必要があります。

### テナントデータベース (PDB) の制限事項
<a name="oracle-cdb-limitations.pdb"></a>

RDS for Oracle マルチテナント設定のテナントデータベースには、次の制限が適用されます。
+ テナントデータベースの操作をメンテナンス期間まで延期することはできません。すべての変更はすぐに反映されます。
+ シングルテナント設定を使用する CDB には、テナントデータベースを追加できません。
+ 1 回の操作で、複数のテナントデータベースを追加または変更することはできません。一度に追加または変更できる項目は 1 つのみです。
+ テナントデータベースを `CDB$ROOT` または `PDB$SEED` という名前に変更することはできません。
+ CDB 内のテナントが 1 つのみの場合、そのテナントデータベースは削除できません。
+ すべての DB インスタンスクラスタイプが、RDS for Oracle CDB インスタンスで複数の PDB をサポートするのに十分なリソースを備えているわけではありません。PDB 数が増えると、小規模なインスタンスクラスのパフォーマンスと安定性に影響し、データベースのアップグレードなど、ほとんどのインスタンスレベルの操作にかかる時間が長くなります。
+ `rdsadmin.rdsadmin_util.rename_global_name` を使用して PDB の名前を変更することはできません。代わりに `modify-tenant-database` API を使用する必要があります。
+ 同じ CDB に複数の AWS アカウント を使用して PDB を作成することはできません。PDB は、PDB がホストされている DB インスタンスと同じアカウントが所有しているものである必要があります。
+ CDB 内のすべての PDB は、同じエンドポイントとデータベースリスナーを使用します。
+ 以下の操作は PDB レベルではサポートされていませんが、CDB レベルではサポートされています。
  + バックアップとリカバリ
  + データベースアップグレード
  + メンテナンスアクション
+ 以下の機能は PDB レベルではサポートされていませんが、CDB レベルではサポートされています。
  + オプショングループ (オプションは CDB インスタンスのすべての PDB にインストールされます)
  + パラメータグループ (すべてのパラメータは CDB インスタンスに関連付けられたパラメータグループから導出されます)
+ オンプレミスの CDB アーキテクチャではサポートされているが、RDS for Oracle CDB ではサポートされていない PDB レベルの操作には、次のようなものがあります。
**注記**  
以下のリストは完全なものではありません。
  + Application ELB
  + Proxy PDBs
  + PDB の起動または停止
  + PDB のアンプラグとプラギング

    CDB へ、または CDB からデータを移動するには、非 CDB と同じ手法を使用します。データ移行に関する詳細については、「[Amazon RDS の Oracle にデータをインポートする](Oracle.Procedural.Importing.md)」を参照してください。
  + PDB レベルでのオプション設定

    PDB は CDB オプショングループからオプション設定を継承します。設定オプションの詳細については、「[Amazon RDS のパラメータグループ](USER_WorkingWithParamGroups.md)」を参照してください。ベストプラクティスについては、[DB パラメータグループを使用する](CHAP_BestPractices.md#CHAP_BestPractices.DBParameterGroup)を参照してください。
  + PDB のパラメータの設定

    PDB は CDB からパラメータ設定を継承します。設定オプションの詳細については、「[Oracle DB インスタンスへのオプションの追加](Appendix.Oracle.Options.md)」を参照してください。
  + 同じ CDB 内の PDB に異なるリスナーを設定する
  + Oracle Flashback 機能