

# RDS for Oracle レプリカの要件と考慮事項
<a name="oracle-read-replicas.limitations"></a>

Oracle レプリカを作成する前に、以下の要件と考慮事項を確認してください。

**Topics**
+ [RDS for Oracle レプリカのバージョンとライセンス要件](#oracle-read-replicas.limitations.versions-and-licenses)
+ [RDS for Oracle レプリカのオプショングループの制限事項](#oracle-read-replicas.limitations.options)
+ [RDS for Oracle レプリカのバックアップと復元に関する考慮事項](#oracle-read-replicas.limitations.backups)
+ [RDS for Oracle レプリカに関する Oracle Data Guard の要件と制限事項](#oracle-read-replicas.data-guard.requirements)
+ [RDS for Oracle レプリカのマルチテナント設定の制限](#oracle-read-replicas.limitations.multitenant)
+ [RDS for Oracle レプリカに関するその他の考慮事項](#oracle-read-replicas.limitations.miscellaneous)

## RDS for Oracle レプリカのバージョンとライセンス要件
<a name="oracle-read-replicas.limitations.versions-and-licenses"></a>

RDS for Oracle レプリカを作成する前に、次の点を考慮してください。
+ レプリカが読み取り専用モードの場合は、Active Data Guard ライセンスがあることを確認してください。レプリカをマウントモードにした場合、Active Data Guard ライセンスは必要ありません。マウントされたレプリカをサポートするのは、Oracle DB エンジンだけです。
+ Oracle レプリカは、Oracle Enterprise Edition (EE) でのみサポートされています。
+ 非 CDB の Oracle レプリカは、Oracle Database 19c を実行している非 CDB インスタンスを使用して作成された DB インスタンスでのみサポートされます。
+ Oracle レプリカは、2 つ以上の vCPU を持つ DB インスタンスクラスで実行されている DB インスタンスでのみ使用できます。ソース DB インスタンスは、db.t3.small インスタンスクラスを使用できません。
+ ソース DB インスタンスとそのすべてのレプリカの Oracle DB エンジンバージョンは同じである必要があります。Amazon RDS では、レプリカのメンテナンスウィンドウに関係なく、ソース DB インスタンスのアップグレード後すぐにレプリカのアップグレードが行われます。クロスリージョンレプリカのメジャーバージョンアップグレードの場合、Amazon RDS は自動的に以下を実行します。
  + ターゲットバージョンのオプショングループを生成します。
  + 元のオプショングループから新しいオプショングループにすべてのオプションとオプション設定をコピーします。
  + アップグレードされたクロスリージョンレプリカを新しいオプショングループに関連付けます。

  DB エンジンバージョンのアップグレードの詳細については、「[RDS for Oracle DB エンジンのアップグレード](USER_UpgradeDBInstance.Oracle.md)」を参照してください。

## RDS for Oracle レプリカのオプショングループの制限事項
<a name="oracle-read-replicas.limitations.options"></a>

RDS for Oracle レプリカのオプショングループを使用する場合は、次の点を考慮してください。
+ ソースとレプリカが同じ AWS リージョンにある場合、ソース DB インスタンスオプショングループとは異なるレプリカオプショングループを使用することはできません。

  ソースオプショングループまたはソースオプショングループメンバーシップへの変更はレプリカに反映されます。これらの変更は、レプリカのメンテナンスウィンドウに関係なく、出典 DB インスタンスに適用された後すぐにレプリカに適用されます。オプショングループの詳細については、「[オプショングループを使用する](USER_WorkingWithOptionGroups.md)」を参照してください。
+ RDS for Oracle クロスリージョンレプリカを、レプリカ用に自動的に作成された専用オプショングループから削除することはできません。
+ RDS for Oracle クロスリージョンレプリカの専用オプショングループを他の DB インスタンスに追加することはできません。
+ RDS for Oracle クロスリージョンレプリカの専用オプショングループからは、レプリケートされていないオプションを追加または削除することはできません。ただし、次のオプションは除きます。
  + `NATIVE_NETWORK_ENCRYPTION`
  + `OEM`
  + `OEM_AGENT`
  + `SSL`

  RDS for Oracle クロスリージョンレプリカに他のオプションを追加するには、ソース DB インスタンスのオプショングループに追加します。オプションは、すべての出典 DB インスタンスのレプリカにもインストールされます。ライセンス供与オプションについては、レプリカに十分なライセンスがあることを確認してください。

  RDS for Oracle クロスリージョンレプリカを昇格するとき、昇格されたレプリカは、オプションの管理を含め、他の Oracle DB インスタンスと同じように動作します。レプリカは、明示的にまたはソース DB インスタンスを削除して暗黙的に昇格できます。

  オプショングループの詳細については、「[オプショングループを使用する](USER_WorkingWithOptionGroups.md)」を参照してください。
+ RDS for Oracle クロスリージョンレプリカに `EFS_INTEGRATION` オプションを追加することはできません。

## RDS for Oracle レプリカのバックアップと復元に関する考慮事項
<a name="oracle-read-replicas.limitations.backups"></a>

RDS for Oracle レプリカを作成する前に、次の点を考慮してください。
+ RDS for Oracle レプリカのスナップショットを作成したり、自動バックアップを有効にしたりするには、必ずバックアップ保持期間を手動で設定してください。自動バックアップは、デフォルトでは有効になっていません。
+ レプリカのバックアップを復元するときは、バックアップが実行された時刻ではなく、データベース時刻に復元することになります。データベース時刻は、バックアップのデータにトランザクションが最後に適用された時刻を指します。レプリカはプライマリよりも数分または数時間遅れることがあるため、この違いは重大です。

  差を確認するには、`describe-db-snapshots` コマンドを使用します。レプリカのバックアップのデータベース時間である `snapshotDatabaseTime` と、プライマリデータベースで最後に適用されたトランザクションである `OriginalSnapshotCreateTime` を比較します。

## RDS for Oracle レプリカに関する Oracle Data Guard の要件と制限事項
<a name="oracle-read-replicas.data-guard.requirements"></a>

RDS for Oracle レプリカを作成する前に、次の要件と制限事項に注意してください。
+ プライマリ DB インスタンスがマルチテナントアーキテクチャのシングルテナントまたはマルチテナント構成を使用している場合は、次の点を考慮してください。
  + Enterprise Edition では Oracle Database 19c 以降を使用する必要があります。
  + プライマリ CDB インスタンスは `ACTIVE` ライフサイクルにある必要があります。
  + CDB 以外のプライマリインスタンスを CDB インスタンスに変換し、そのレプリカを同じ操作で変換することはできません。代わりに、CDB 以外のレプリカを削除し、プライマリ DB インスタンスを CDB に変換してから、新しいレプリカを作成してください。
+ プライマリ DB インスタンスのログイントリガーで、`RDS_DATAGUARD` ユーザーへのアクセス、および `AUTHENTICATED_IDENTITY` の値が `RDS_DATAGUARD` または `rdsdb` であるすべてのユーザーへのアクセスを許可する必要があります。また、トリガーで `RDS_DATAGUARD` ユーザーの現在のスキーマを設定しないでください。
+ Data Guard ブローカープロセスからの接続のブロックを回避するには、制限セッションを有効にしないでください。制限セッションの詳細については、「[制限セッションの有効化と無効化](Appendix.Oracle.CommonDBATasks.RestrictedSession.md)」を参照してください。

## RDS for Oracle レプリカのマルチテナント設定の制限
<a name="oracle-read-replicas.limitations.multitenant"></a>

RDS for Oracle レプリカでマルチテナント設定を使用する場合は、次の制限に注意してください。
+ テナントデータベースを作成、削除、または変更できるのは、プライマリ DB インスタンス上のみです。これらの変更は、レプリカに自動的に伝播されます。
+ RDS for Oracle のプライマリ、ソース、またはレプリカのテナントデータベースをカスタム文字セットを使用して作成することはできません。カスタム文字セットが必要な場合は、DB インスタンスのリードレプリカを作成する前にテナントデータベースを作成します。

## RDS for Oracle レプリカに関するその他の考慮事項
<a name="oracle-read-replicas.limitations.miscellaneous"></a>

RDS for Oracle レプリカを作成する前に、次の点を考慮してください。
+ 追加のストレージボリュームがある DB インスタンスの RDS for Oracle レプリカを作成する場合、RDS はレプリカに追加のストレージボリュームを自動的に設定します。ただし、プライマリ DB インスタンスのストレージボリュームに加えられた後続の変更は、レプリカに自動的に適用されません。
+ プライマリ DB インスタンスにストレージボリュームを追加した場合、RDS はレプリカにストレージボリュームを自動的に追加しません。追加のストレージボリュームを追加するには、レプリカを変更する必要があります。
+ プライマリ DB インスタンスのストレージサイズや IOPS などのストレージボリューム設定を変更しても、RDS はレプリカのストレージボリュームを自動的に変更しません。ストレージボリュームの設定を更新するには、レプリカを変更する必要があります。
+ ボリューム間でデータファイルの場所を管理する場合、プライマリインスタンスで行われた変更はレプリカに自動的に同期されないことに注意してください。
  + 読み取り専用レプリカの場合: パラメータグループ設定を使用してデフォルトのファイルの場所を制御するか、作成後に手動でファイルを移動できます。
  + マウントされたレプリカの場合: プライマリデータベース内のデータファイルの場所を手動で変更するには、それらの変更を反映するためにマウントされたレプリカを再作成する必要があります。これを回避するには、パラメータグループ設定を使用してデフォルトのファイルの場所を管理することをお勧めします。
+ DB インスタンスが 1 つ以上のクロスリージョンレプリカのソースである場合、ソース DB は、すべてのクロスリージョンレプリカに適用されるまで、アーカイブされた REDO ログファイルに保持されます。アーカイブされた REDO ログにより、ストレージの消費が増える場合があります。
+ RDS 自動化の中断を避けるために、システムトリガーでは、特定のユーザーがプライマリデータベースとレプリカデータベースへのログオンを許可する必要があります。[システムトリガー](https://docs.oracle.com/en/database/oracle/oracle-database/19/lnpls/plsql-triggers.html#GUID-FE23FCE8-DE36-41EF-80A9-6B4B49E80E5B)には、DDL、ログオン、およびデータベースロールトリガーが含まれます。以下のサンプルコードに記載されているユーザーを除外するために、トリガーにコードを追加することをお勧めします。

  ```
  -- Determine who the user is
  SELECT SYS_CONTEXT('USERENV','AUTHENTICATED_IDENTITY') INTO CURRENT_USER FROM DUAL;
  -- The following users should always be able to login to either the Primary or Replica
  IF CURRENT_USER IN ('master_user', 'SYS', 'SYSTEM', 'RDS_DATAGUARD', 'rdsdb') THEN
  RETURN;
  END IF;
  ```
+ ブロック変更の追跡は、読み取り専用レプリカではサポートされますが、マウントされたレプリカではサポートされません。マウントされたレプリカを読み取り専用レプリカに変更し、ブロック変更の追跡を有効にすることができます。詳細については、「[ブロック変更追跡の有効化/無効化](Appendix.Oracle.CommonDBATasks.BlockChangeTracking.md)」を参照してください。
+ ソースデータベースが Secrets Manager でマスターユーザー認証情報を管理する場合、Oracle リードレプリカを作成することはできません。