Amazon RDS での Oracle レプリカの使用 - Amazon Relational Database Service

Amazon RDS での Oracle レプリカの使用

Oracle DB インスタンス間のレプリケーションを設定するには、レプリカデータベースを作成します。

Oracle レプリカの概要

Oracle レプリカデータベースは、マウントされているか、読み取り専用になっています。読み取り専用モードの Oracle レプリカは、リードレプリカと呼ばれます。マウントモードの Oracle レプリカは、マウントされたレプリカと呼ばれます。

次のビデオでは、Oracle の災害対策ついて紹介します。詳細については、ブログ記事「Amazon RDS for Oracle クロスリージョン自動バックアップによる管理された災害対策」および「Amazon RDS for Oracle クロスリージョン自動バックアップによる管理された災害対策」を参照してください。

読み取り専用レプリカとマウントされたレプリカ

Oracle レプリカを作成または変更する場合、次のモードのいずれかにすることができます。

  • 読み取り専用モード。これがデフォルト値です。Active Data Guard は、ソースデータベースからすべてのリードレプリカデータベースに変更を送信し、適用します。

    1 つのソース DB インスタンスから最大 5 つのリードレプリカを作成できます。すべての DB エンジンに適用されるリードレプリカの一般的な情報については、「リードレプリカの使用」を参照してください。Oracle Data Guard の詳細については、Oracle ドキュメントの「Oracle Data Guard の概要および管理」を参照してください。

  • マウントモード。この場合、レプリケーションでは Oracle Data Guard が使用されますが、レプリカデータベースはユーザー接続を受け付けません。マウントされたレプリカの主な用途は、クロスリージョンの災害対策です。

    マウントされたレプリカは、読み取り専用のワークロードを処理できません。マウントされたレプリカは、アーカイブログ保持ポリシーに関係なく、適用後にアーカイブ REDO ログファイルを削除します。

同じソース DB インスタンスに対して、マウントされた DB レプリカと読み取り専用 DB レプリカを組み合わせて作成できます。読み取り専用レプリカをマウントモードに変更したり、マウントされたレプリカを読み取り専用モードに変更したりできます。いずれの場合も、Oracle データベースはアーカイブログの保持設定を維持します。

レプリケーション中の停止

Oracle レプリカを作成する場合、ソース DB インスタンスの停止は発生しません。Amazon RDS では、ソース DB インスタンスのスナップショットが作成されます。このスナップショットがレプリカになります。Amazon RDS では、サービスを中断することなく、ソース DB とレプリカに必要なパラメータとアクセス許可を設定できます。同様に、レプリカを削除しても、停止は発生しません。

Oracle のレプリカ要件

Oracle レプリカを作成する前に、次の要件を確認してください。

Oracle レプリカのバージョンとライセンス要件

Oracle レプリカを作成する前に、バージョンとライセンス要件を確認してください。

  • レプリカが読み取り専用モードの場合は、Active Data Guard ライセンスがあることを確認してください。レプリカをマウントモードにした場合、Active Data Guard ライセンスは必要ありません。マウントされたレプリカをサポートするのは、Oracle DB エンジンだけです。

  • Oracle レプリカは、Oracle Enterprise Edition (EE) エンジンでのみ使用することができます。

  • Oracle レプリカは、Oracle バージョン 12.1.0.2.v10 以降のバージョンの Oracle Database 12c リリース 1 (12.1)、すべての Oracle データベース 12c リリース 2 (12.2) バージョン、すべての Oracle データベース 19c バージョンで使用可能です。

  • Oracle レプリカは、EC2-VPC プラットフォームの DB インスタンスでのみ使用することができます。

  • Oracle レプリカは、2 つ以上の vCPU を持つ DB インスタンスクラスで実行されている DB インスタンスでのみ使用できます。ソース DB インスタンスは、db.t3.micro インスタンスクラスは使用できません。

  • ソース DB インスタンスとそのすべてのレプリカの Oracle DB エンジンバージョンは同じである必要があります。Amazon RDS では、レプリカのメンテナンスウィンドウに関係なく、ソース DB インスタンスのアップグレード後すぐにレプリカのアップグレードが行われます。クロスリージョンレプリカのメジャーバージョンアップグレードの場合、Amazon RDS は自動的に以下を実行します。

    • ターゲットバージョンのオプショングループを生成します。

    • 元のオプショングループから新しいオプショングループにすべてのオプションとオプション設定をコピーします。

    • アップグレードされたクロスリージョンレプリカを新しいオプショングループに関連付けます。

    DB エンジンバージョンのアップグレードの詳細については、「Oracle DB エンジンのアップグレード」を参照してください。

Oracle レプリカのオプション要件

Oracle 用のレプリカを作成する前に、オプショングループの要件を確認してください。

  • Oracle レプリカがソース DB インスタンスと同じ AWS リージョンにある場合は、そのレプリカがソース DB インスタンスと同じオプショングループに属していることを確認してください。ソースオプショングループまたはソースオプショングループメンバーシップへの変更はレプリカに反映されます。これらの変更は、レプリカのメンテナンスウィンドウに関係なく、ソース DB インスタンスに適用された後すぐにレプリカに適用されます。

    オプショングループの詳細については、「オプショングループを使用する」を参照してください。

  • Oracle クロスリージョンレプリカを作成する場合、Amazon RDS によりそのための専有オプショングループが作成されます。

    Oracle クロスリージョンレプリカをその専有オプショングループから削除することはできません。Oracle クロスリージョンレプリカの専有オプショングループを他の DB インスタンスが使用することはできません。

    専用オプショングループには、次のレプリケートされていないオプションのみを追加または削除できます。

    • NATIVE_NETWORK_ENCRYPTION

    • OEM

    • OEM_AGENT

    • SSL

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

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

    オプショングループの詳細については、「オプショングループを使用する」を参照してください。

Oracle レプリカのその他の要件

Oracle レプリカを作成する前に、次のその他の要件を確認してください。

  • DB インスタンスが 1 つ以上のクロスリージョンレプリカのソースである場合、ソース DB はそのアーカイブされた REDO ログがすべてのクロスリージョンレプリカに適用されるまで、これらのログを保持します。アーカイブされた REDO ログにより、ストレージの消費が増える場合があります。

  • プライマリインスタンスのログイントリガーは、RDS_DATAGUARD ユーザーへのアクセス、および AUTHENTICATED_IDENTITY の値が RDS_DATAGUARD または rdsdb であるすべてのユーザーへのアクセスを許可する必要があります。また、トリガーで RDS_DATAGUARD ユーザーの現在のスキーマを設定しないでください。

  • RDS 自動化の中断を避けるために、システムトリガーでは、特定のユーザーがプライマリデータベースとレプリカデータベースへのログオンを許可する必要があります。システムトリガーには、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;
  • Data Guard ブローカープロセスからの接続のブロックを回避するには、制限セッションを有効にしないでください。制限セッションの詳細については、「制限セッションの有効化と無効化」を参照してください。

  • ブロック変更の追跡は、読み取り専用レプリカではサポートされますが、マウントされたレプリカではサポートされません。マウントされたレプリカを読み取り専用レプリカに変更し、ブロック変更の追跡を有効にすることができます。詳細については、「ブロック変更追跡の有効化/無効化」を参照してください。

Oracle レプリカの作成の準備

レプリカの使用を開始する前に、次のタスクを実行します。

自動バックアップの有効化

DB インスタンスがソース DB インスタンスとして機能するには、必ずソース DB インスタンスで自動バックアップを有効にします。この手順の実行方法については、「自動バックアップの有効化」を参照してください。

強制ログ記録モードの有効化

強制ログ記録モードを有効化することを推奨します。強制ログ記録モードでは、NOLOGGING がデータ定義言語 (DDL) ステートメントとともに使用されている場合でも、Oracle データベースは REDO レコードを書き込みます。

強制ログ記録モードを有効にするには

  1. SQL Developer などのクライアントツールを使用して、Oracle データベースにログインします。

  2. 次の手順を実行して、強制ログモードを有効にします。

    exec rdsadmin.rdsadmin_util.force_logging(p_enable => true);

この手順の詳細については、「強制ログ作成の設定」を参照してください。

ログ記録設定の変更

ログ作成設定を変更する場合は、DB インスタンスをレプリカのソースにする前に変更を完了することをお勧めします。また、レプリカを作成した後は、ログ設定を変更しないことをお勧めします。変更することで、オンライン REDO ロギング設定とスタンバイのログ作成設定が同期されなくなる可能性があります。

DB インスタンスのログ作成設定を変更するには、Amazon RDS の手順 rdsadmin.rdsadmin_util.add_logfilerdsadmin.rdsadmin_util.drop_logfile を使用します。詳細については、「オンライン REDO ログの追加」および「オンライン REDO ログの削除」を参照してください。

MAX_STRING_SIZE パラメータの設定

Oracle レプリカを作成する前に、MAX_STRING_SIZE パラメータの設定が、ソース DB インスタンスおよびそのレプリカと同じであることを確認します。そのためには、同じパラメータグループと関連付けます。ソースとレプリカのパラメータグループが異なる場合は、MAX_STRING_SIZE を同じ値に設定できます。このパラメータの設定の詳細については、「新しい DB インスタンスで拡張データ型を有効にする」を参照してください。

コンピューティングとストレージのリソース計画

ソース DB インスタンスとそのレプリカのサイズが、運用負荷に合わせる上でコンピューティングとストレージの観点から適切に設定されていることを確認してください。レプリカのコンピューティング、ネットワーク、またはストレージがリソースの容量に達すると、レプリカはソースからの変更の受信または適用を停止します。Amazon RDS for Oracle が、ソース DB インスタンスとそのレプリカ間のレプリカラグの軽減のために介入することはありません。レプリカのストレージや CPU リソースは、そのソースや他のレプリカとは独立して変更することができます。

マウントモードでの Oracle レプリカの作成

デフォルトでは、Oracle レプリカは読み取り専用です。マウントモードでレプリカを作成するには、コンソール、AWS CLI、RDS API のいずれかを使用します。

ソース Oracle DB インスタンスからマウントされたレプリカを作成するには

  1. AWS Management Console にサインインし、Amazon RDS コンソール (https://console.aws.amazon.com/rds/) を開きます。

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

  3. マウントされたレプリカのソースとして使用する Oracle DB インスタンスを選択します。

  4. [アクション] で [レプリカの作成] を選択します。

  5. [レプリカモード] で、[マウント] を選択します。

  6. 使用する設定を選択します。[DB インスタンス識別子] に、リードレプリカの名前を入力します。必要に応じて他の設定を変更します。

  7. [リージョン] で、マウントされたレプリカを起動するリージョンを選択します。

  8. インスタンスサイズとストレージタイプを選択します。リードレプリカでもソース DB インスタンスと同じ DB インスタンスクラスとストレージタイプを使用することをお勧めします。

  9. [マルチ AZ 配置] で [スタンバイインスタンスの作成] を選択して、マウントされたレプリカのフェイルオーバーをサポートするために別のアベイラビリティーゾーンにレプリカのスタンバイを作成します。ソースのデータベースがマルチ AZ DB インスタンスであるかどうかに関係なく、マウントされたレプリカをマルチ AZ DB インスタンスとして作成できます。

  10. 使用する他の設定を選択します。

  11. [レプリカの作成] を選択します。

[データベース] ページで、マウントされたレプリカにロールとして [レプリカ] が割り当てられます。

マウントモードで Oracle レプリカを作成するには、--replica-mode コマンド create-db-instance-read-replicamounted を AWS CLI に設定します。

Linux、macOS、Unix の場合:

aws rds create-db-instance-read-replica \ --db-instance-identifier myreadreplica \ --source-db-instance-identifier mydbinstance \ --replica-mode mounted

Windows の場合:

aws rds create-db-instance-read-replica ^ --db-instance-identifier myreadreplica ^ --source-db-instance-identifier mydbinstance ^ --replica-mode mounted

読み取り専用レプリカをマウント状態に変更するには、--replica-mode コマンド modify-db-instancemounted を AWS CLI に設定します。マウントされたレプリカを読み取り専用モードにするには、--replica-modeopen-read-only に設定します。

マウントモードで Oracle レプリカを作成するには、RDS API オペレーション CreateDBInstanceReadReplicaReplicaMode=mounted を指定します。

Oracle レプリカモードの変更

既存のレプリカのレプリカモードを変更するには、コンソール、AWS CLI、RDS API のいずれかを使用します。マウントモードに変更すると、レプリカはすべてのアクティブな接続を切断します。読み取り専用モードに変更すると、Amazon RDS は Active Data Guard を初期化します。

変更には数分かかる場合があります。オペレーション中、DB インスタンスのステータスは modifying に変わります。ステータス変更の詳細については、「DB インスタンスのステータスの表示」を参照してください。

Oracleレプリカのレプリカモードをマウントから読み取り専用に変更するには

  1. AWS Management Console にサインインし、Amazon RDS コンソール (https://console.aws.amazon.com/rds/) を開きます。

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

  3. マウントされたレプリカのデータベースを選択します。

  4. [Modify] を選択します。

  5. [レプリカモード] で、[読み取り専用] を選択します。

  6. 変更する他の設定を選択します。

  7. [Continue] を選択します。

  8. [変更のスケジューリング] で、[すぐに適用] を選択します。

  9. [DB インスタンスの変更] を選択します。

リードレプリカをマウントモードに変更するには、--replica-mode コマンド modify-db-instancemounted を AWS CLI に設定します。マウントされたレプリカを読み取り専用モードに変更するには、--replica-modeopen-read-only に設定します。

Linux、macOS、Unix の場合:

aws rds modify-db-instance \ --db-instance-identifier myreadreplica \ --replica-mode mode

Windows の場合:

aws rds modify-db-instance ^ --db-instance-identifier myreadreplica ^ --replica-mode mode

読み取り専用レプリカをマウントモードに変更するには、ModifyDBInstanceReplicaMode=mounted を設定します。マウントされたレプリカを読み取り専用モードに変更するには、ReplicaMode=read-only を設定します。

Oracle レプリカのトラブルシューティング

このセクションでは、レプリケーションに関する潜在的な問題と解決策について説明します。

レプリケーションの遅延

Amazon CloudWatch のレプリケーションラグをモニタリングするには、Amazon RDS ReplicaLag メトリクスを表示します。レプリケーションのラグタイムについては、「リードレプリケーションのモニタリング」を参照してください。

レプリケーションラグが長すぎる場合は、次のビューをクエリします。

  • V$ARCHIVED_LOG – リードレプリカに適用されたコミットが表示されます。

  • V$DATAGUARD_STATSreplicaLag メトリクスを占めるコンポーネントの詳細を示します。

  • V$DATAGUARD_STATUS – Oracle の内部レプリケーションプロセスのログ出力を示します。

トリガーを追加または変更した後のレプリケーションの失敗

トリガーを追加または変更し、その後レプリケーションが失敗した場合は、問題はトリガーにある可能性があります。トリガーで、レプリケーションから RDS で必要な次のユーザーアカウントが除外されていることを確認します。

  • 管理者権限を持つユーザーアカウント

  • SYS

  • SYSTEM

  • RDS_DATAGUARD

  • rdsdb

詳細については、「」を参照してくださいOracle レプリカのその他の要件