OCI Full Stack DRおよびカスタム・スクリプトを使用した、OCI Database Servicesで手動で構成されたOracle Data Guardのデータベース・ロールの変更の自動化

はじめに

Oracle Cloud Infrastructure Full Stack Disaster Recovery(OCI Full Stack DR)は、世界中のOracle Cloud Infrastructure(OCI)リージョン間のコンピュート、データベース、およびアプリケーションの移行をワンクリックで調整します。お客様は、既存のインフラストラクチャ、データベースまたはアプリケーションを再設計または再設計することなく、また特殊な管理サーバーや変換サーバーを必要とせずに、1つ以上のビジネス・システムをリカバリするために必要なステップを自動化できます。

OCI Full Stack DRは、OCI上のさまざまなOracle Databaseサービスの完全な統合サポートを提供します。これらのデータベースは、OCI Full Stack DR保護グループのメンバーとして追加できるため、調整されたディザスタ・リカバリ操作が可能になります。

OCIのOracle Databasesマネージド・サービスの場合、OCIコンソール、Oracle Cloud Infrastructureコマンドライン・インタフェース(OCI CLI)またはOCI SDKを使用してOracle Data Guardを構成することを強くお薦めします。これにより、OCI Full Stack DRは、Data Guard構成を自動的に検出し、DR計画の一部としてロール・トランジションの組込みプラン・グループを生成できるようになります。

ただし、次のような特定の技術要件または運用要件のために、手動のOracle Data Guard構成(OCIのネイティブ・インタフェースの外部)が必要となるシナリオがあります。

そのような場合、OCI Databaseサービス・コントロール・プレーンでOracle Data Guardの設定が認識されない場合がありますが、OCI Full Stack DRは依然として柔軟性を提供します。カスタム・スクリプトを作成し、DR計画内のユーザー定義のプラン・グループに統合することで、ロール推移を処理できます。

このソリューションは、Data Guard構成がOCIコンソール、SDKまたはAPIを介して管理されるOracle Database Cloudサービスと互換性がないことに注意してください。

このチュートリアルでは、Oracle Data Guardが手動で構成されているOCI Databaseサービスのカスタム・データベース・ハンドラ・スクリプトを使用して、Oracle Data Guardロール・トランジションを管理するための標準化されたアプローチについて説明します。

ノート:このカスタム・スクリプト・ソリューションは、次のOCIデータベース・サービスに適用されます。

アーキテクチャの説明

このチュートリアルでは、2つのOCIリージョン(Oracle Data Guardが手動で構成されている)にデプロイされた2つのDBシステムでOracle Base Database Serviceを使用します。

カスタム・データ・ガード構成
図A: Oracle Base Database Serviceを使用したカスタムData Guard構成

チュートリアル全体での定義と仮定

目的

このチュートリアルでは、次のタスクについて説明します。

前提条件

チュートリアルを開始するには、次のリソースを使用します。

リソース リージョン1 - アッシュバーン リージョン2 - フェニックス
コンパートメント アプリケーション アプリケーション
DB System アドゴル-12345 アドゴル-12345
DB名 アドゴール アドゴール
一意のデータベース名 アドゴルsite0 アドゴルsite1
DB役割 スタンバイ
コンピュートVM 脚本 スクリプト-phx
バケット IAD PHX

ノート:続行する前に、必要な前提条件をすべて完了してください。これらのステップにより、スムーズで成功するOCI Full Stack DRセットアップの基盤が整います。

  1. Oracle Cloud Infrastructure Identity and Access Management (OCI IAM)ポリシーの管理アクセスまたは必要なポリシー

    管理者権限があることを確認するか、OCI Full Stack DRを使用するために必要なOCI IAMポリシーおよび動的グループを構成します。このソリューションでは、データベース・ハンドラ・スクリプトによってOCIコンテナ・インスタンスが内部的に起動されるため、それに応じてポリシーを追加する必要があります。

    ノート: <compartment_ocid>および<compartment_name>のすべての出現箇所を、実際のOCIコンパートメントOCIDおよび名前に置き換えます。

    1. 動的グループの作成:例名(FullStackDR_Database_DG)を使用して動的グループを作成し、次の一致ルールを追加します。

       Any {instance.compartment.id = '<compartment_ocid>'}
       Any {resource.type = 'instance', resource.compartment.id = '<compartment_ocid>'}
       Any {resource.type = 'computecontainerinstance', resource.compartment.id = '<compartment_ocid>'}
       Any {resource.type = 'drprotectiongroup', resource.compartment.id = '<compartment_ocid>'}
      
    2. OCI IAMポリシーの作成:例名(FullStackDR_Database_Group_Policies)のポリシーを作成し、次の許可文を追加します:

       Allow dynamic-group FullStackDR_Database_DG to read secret-family in compartment <compartment_name>
       Allow dynamic-group FullStackDR_Database_DG to manage virtual-network-family in compartment <compartment_name>
       Allow dynamic-group FullStackDR_Database_DG to manage instance-agent-command-family in compartment <compartment_name>
       Allow dynamic-group FullStackDR_Database_DG to manage instance-agent-command-execution-family in compartment <compartment_name>
       Allow dynamic-group FullStackDR_Database_DG to manage objects in compartment <compartment_name>
       Allow dynamic-group FullStackDR_Database_DG to manage database-family in compartment <compartment_name>
       Allow dynamic-group FullStackDR_Database_DG to manage compute-container-family in compartment <compartment_name>
      

    詳細は、OCIディザスタ・リカバリ・ポリシー – 公式ドキュメントおよびIAMポリシーの構成(Oracleブログ)を参照してください。

  2. 両方のリージョンでのOCIコンピュート・インスタンスのプロビジョニング:各リージョンでOCIコンピュート・インスタンスを作成し、scripts.Forの詳細なステップをホストおよび実行するためのJumphostとして機能します(OCIインスタンスの作成を参照)。簡単にするために、このOCIコンピュート・インスタンスを、すでにJumphostとして機能する既存のOCIコンピュート・インスタンスがあるtutorial.If全体でJumphostと呼びます。このステップはスキップできます。JumphostにOracle Cloud Agentが実行中であり、コマンド・プラグインが実行中であることを確認します。詳細は、Oracle Cloud Agentを参照してください。

  3. OCIコンピュート・インスタンスで実行コマンドへのアクセス: DR操作中にスクリプトを実行するためにユーザー定義のプラン・グループを使用しているため、実行コマンドの前提条件をjumphostで設定してください。詳細は、インスタンスでのコマンドの実行を参照してください。

  4. 両方のリージョンでOCI CLIをjumphostにインストールする: jumphostのオペレーティング・システムに基づいて、両方のリージョンにOCI CLIをインストールし、OCI CLIコマンドを起動できることを確認します。スクリプトでは、インスタンス・プリンシパルを使用します。詳細は、OCI CLIのインストールを参照してください。

  5. リモートVCNピアリングを使用する両方のリージョンでのVCNsの設定:プライマリ・リージョンとスタンバイ・リージョンの両方にVCNsを作成し、リモートVCNピアリングを設定します。これは、クロス・リージョンOracle Data Guardの設定に必要です。詳細は、OCIベースDBネットワーキング構成を参照してください。

  6. 手動Oracle Data Guard構成: Oracle Data Guard Brokerの要件に基づいて、Oracle Data Guard設定を手動で構成します。詳細は、「Oracle Data Guard BrokerとOracle Clusterware」を参照してください。

  7. Jumphostのデータベース・ハンドラ・スクリプトのダウンロード:スクリプトをダウンロードして、両方のリージョンのjumphostに保持する必要があります。

    1. Oracle Data Guardデータベース・ハンドラ・スクリプトをData Guard DBハンドラ・スクリプトのリポジトリからダウンロードします。

    2. スクリプトを両方のリージョンのjumphostの/home/opc/ディレクトリ(または他の任意の優先パス)にコピーします。

    3. スクリプト・ファイルに実行可能権限があることを確認します。

    4. full_stack_dr_non_std_db_handler.pyは、Oracle Data Guardロールtransitions.Theに関連付けられたbashスクリプトの処理を担当するPythonスクリプトで、テンプレートとして提供され、特定の要件にあわせて変更できます。Pythonロール変更スクリプト自体は変更しないでください

  8. OCI Vaultおよびシークレットの作成: OCI Vaultを作成し、データベース資格証明をシークレットとして両方のリージョンに格納する必要があります。

    1. OCIコンソールまたはCLIを使用して、各リージョンにOCI Vaultを作成します。
    2. ボールト内にシークレットを作成し、データベースのSYSユーザー・パスワードを格納します。

    詳細は、「OCIボールト」を参照してください。

  9. ジャンフォストからの接続性チェック: OCI Databaseサービス、OCI VaultサービスおよびOCIコンテナ・インスタンス・サービスがコンピュート・インスタンスからアクセスできることを確認します。これは、OCI Full Stack DRスクリプトがイントロスペクションを実行してプライマリ・リージョンとスタンバイ・リージョンの両方からデータベース詳細をフェッチするため必要です。

    1. 接続性はジャンフォストから機能する必要があります。jumphostから次のコマンドを実行します。

        # Primary Region
        curl -v telnet://database.<primary_region>.oraclecloud.com:443
        curl -v telnet://secrets.vaults.<primary_region>.oci.oraclecloud.com:443
        curl -v telnet://iaas.<primary_region>.oraclecloud.com:443
        curl -v telnet://compute-containers.<primary_region>.oci.oraclecloud.com:443
      
        # Standby Region
        curl -v telnet://database.<standby_region>.oraclecloud.com:443
        curl -v telnet://secrets.vaults.<standby_region>.oci.oraclecloud.com:443
        curl -v telnet://iaas.<standby_region>.oraclecloud.com:443
        curl -v telnet://compute-containers.<standby_region>.oci.oraclecloud.com:443
      

      ノート: <primary_region>および<standby_region>を実際のOCIリージョン識別子に置き換えます。
      次に例を示します。

      • アッシュバーンの場合はus-ashburn-1
      • us-phoenix-1 (フェニックス)

      完全なリストは、OCIリージョン識別子を参照してください。

      予想される出力:各コマンドは、Connected to ...のようなメッセージを返す必要があります。

      接続が失敗した場合は、ジャンフォストのVCN/サブネットのセキュリティ・リスト、ルート表およびサービス・ゲートウェイ構成を確認します。

  10. オブジェクト・ストレージ・バケットの作成:プライマリ・リージョンとスタンバイ・リージョンにOCIオブジェクト・ストレージ・バケットを作成し、リカバリ操作中にOCIフル・スタックDRによって生成されたログを格納します(操作ログのログの場所の準備を参照)。

  11. データベース・ハンドラ・スクリプトの使用方法およびカスタマイズ:前述のGitHubリポジトリからデータベース・ハンドラ・スクリプトをダウンロードできます。データベース・ハンドラ・スクリプトの使用方法および必須パラメータを次に示します。

    db-handler-script.png
    図B: DBハンドラ・スクリプトの使用方法

    サポートされている --db_operationオプションは次のとおりです。

    • スイッチオーバー
    • SWITCHOVER_PRECHECK
    • フェイルオーバー
    • FAILOVER_PRECHECK
    • CONVERT_PHYSICAL_TO_SNAPSHOT_STANDBY
    • CONVERT_PHYSICAL_TO_SNAPSHOT_STANDBY_PRECHECK
    • REVERT_SNAPSHOT_TO_PHYSICAL_STANDBY_PRECHECK
    • REVERT_SNAPSHOT_TO_PHYSICAL_STANDBY

    OCI Full Stack DRでは、データベース・ハンドラ・スクリプトの実行時に必要なすべてのパラメータが渡されることを想定しています。使いやすさと再現性を高めるために、次のラッパーbashスクリプトを作成することをお薦めします。

    • 必須パラメータを指定します。
    • 監査およびトラブルシューティングのロギングを有効にします。

    サンプル例:データベース・スイッチオーバー・スクリプト(db-switchover-iad-phx.sh)。

    #!/bin/bash
    
    # Define log file with date and time
    LOG_FILE="db-switchover-iad-phx-$(date +%Y%m%d_%H%M%S).log"
    
    # Define Python script and argument
    PYTHON_SCRIPT="full_stack_dr_non_std_db_handler.py"
    ARGUMENT="--database_ocid="ocid1.database.oc1.phx.xxxxxxxx" --vault_ocid="ocid1.vaultsecr
    et.oc1.phx.xxxxx" --region="us-phoenix-1" --primary_db_unique_name="adghol_site0" --st
    andby_db_unique_name="adghol_site1" --drpg_ocid="ocid1.drprotectiongroup.oc1.phx.axxxxxxax
    " --db_operation="SWITCHOVER" --auth_type=INSTANCE_PRINCIPAL"
    
    # Execute Python script and log output
    echo "Executing Python script: $PYTHON_SCRIPT with argument: $ARGUMENT" | tee -a $LOG_FILE
    /usr/bin/python3 $PYTHON_SCRIPT $ARGUMENT 2>&1 | tee -a $LOG_FILE
    
    echo "Execution completed. Logs saved in $LOG_FILE"
    

    ノート:このラッパー・スクリプトは、データベース・ハンドラ・スクリプトと同じ場所に格納し、実行可能であることを確認します。OCIDはスクリプトで匿名化されます。

    chmod +x db-switchover-wrapper.sh
    

    リージョン1 (アッシュバーン)で実行されているDBがプライマリで、リージョン2 (フェニックス)がスタンバイであるDR計画スクリプト・マッピング

    DR計画タイプ ターゲット・インスタンス スクリプト名 コメント
    Switchover script-phx db-prechk-switchover-iad-phx.sh IADからPHXへの事前チェックDBスイッチオーバー
    Switchover script-phx db-switchover-iad-phx.sh IADからPHXへのDBスイッチオーバー
    Failover script-phx db-prechk-failover-iad-phx.sh IADからPHXへの事前チェックDBフェイルオーバー
    Failover script-phx db-failover-iad-phx.sh IADからPHXへのDBフェイルオーバー
    Start drill script-phx db-prechk-startdrill-phx.sh PHXでの事前チェック開始DRドリル
    Start drill script-phx db-startdrill-phx.sh PHXでのDRドリルの開始
    Stop drill script-phx db-prechk-stopdrill-phx.sh PHXでの事前チェック停止DRドリル
    Stop drill script-phx db-stopdrill-phx.sh PHXでのDRドリルの停止

    リージョン2 (フェニックス)で実行されているDBがプライマリで、リージョン2 (アッシュバーン)がスタンバイであるDR計画スクリプト・マッピング

    DR計画タイプ ターゲット・インスタンス スクリプト名 コメント
    Switchover script-iad db-prechk-switchover-phx-iad.sh PHXからIADへの事前チェックDBスイッチオーバー
    Switchover script-iad db-switchover-phx-iad.sh PHXからIADへのDBスイッチオーバー
    Failover script-iad db-prechk-failover-phx-iad.sh PHXからIADへの事前チェックDBフェイルオーバー
    Failover script-iad db-failover-phx-iad.sh PHXからIADへのDBフェイルオーバー
    Start drill script-iad db-prechk-startdrill-iad.sh IADでの事前チェック開始DRドリル
    Start drill script-iad db-startdrill-iad.sh IADでのDRドリルの開始
    Stop drill script-iad db-prechk-stopdrill-iad.sh IADでのDRドリルの停止の事前確認
    Stop drill script-iad db-stopdrill-iad.sh IADでのDRドリルの停止

ノート:明確さと使いやすさを向上させるために、特定のDR計画タイプおよびリージョンに合せた複数のbashラッパー・スクリプトを作成しました。これらのスクリプトは、データベース・ロールの推移に共有Pythonスクリプトを使用します。このスクリプトは、独自の要件および環境に応じてカスタマイズできます。

タスク1: Oracle Data Guard構成の確認およびタグの更新

このタスクでは、Oracle Base Database Serviceを使用して、Oracle Data Guardの手動構成を確認します。データベースに*タグ**を作成して、非標準のOracle Data Guard設定を示します。これにより、OCI Full Stack DRは、組込みの計画グループに依存することなくDR計画を作成できます。

  1. OCIコンソールにログインし、「Oracle Database」に移動して「Oracle Base Database Service」をクリックします。

  2. OCIリージョン・コンテキストがリージョン1 (アッシュバーン)に設定されていることを確認します。

  3. DBシステムを選択します。この例では、adghol0-12345です。

    iad-db-system.png
    図1.1:リージョン1のDBシステム

  4. 「データベース」タブに移動し、データベースadgholを選択します。

    iad-db-system-db.png
    図1.2:リージョン1のデータベース

  5. 「Data Guardステータス」「使用不可」であることを確認します。これにより、OCIコンソールを使用してOracle Data Guardが設定されていないことが確認されます。

    iad-db-dataguard-cp-status.png
    図1.3:リージョン1のData Guardコントロール・プレーンのステータス

  6. 「タグ」タブにナビゲートし、フリーフォーム・タグを作成します。設定に基づいて、Peer DB OCIDの値を置換する必要があります。この例では、フェニックス・リージョンのデータベースOCIDを追加する必要があります。

    タグ・キー Value
    FsdrNonStandardDataGuardPeerDatabaseId Peer DB OCID
    FsdrNonStandardDataGuardFlag True

    iad-db-dataguardタグ
    図1.4:リージョン1のDBタグ

  7. 「DBシステム」に移動して、「ノード」を選択します。

    iad-db-node.png
    図1.5:リージョン1のDBノード

    注意:これはRAC以外の設定であるため、1つのデータベース・ノードが表示されます。これがOracle Real Application Clusters設定の場合、2つのノードが表示されます。

  8. データベース・ノードに接続し、oracleユーザーに切り替えます。Oracle Data Guard Brokerを使用して、ロールを確認します。

    dgmgrl
    show configuration
    

    iad-db-dataguard-status.png
    図1.6:リージョン1のData Guardステータス

    予想される出力:

    • adghol_site0は、プライマリ・データベースとして表示されます。
    • adghol_site1は、フィジカル・スタンバイ・データベースとして表示されます。
    • Configuration Status「成功」と表示されます。

    エラーがあり、データベース・ロールが予期したとおりでない場合は、Oracle Data Guardのドキュメントを使用してエラーを修正する必要があります。

  9. OCIコンソールにログインし、「Oracle Database」に移動して「Oracle Base Database Service」をクリックします。

  10. OCIリージョン・コンテキストがリージョン2 (フェニックス)に設定されていることを確認します。

  11. DBシステムを選択します。この例では、adghol1-12345です

    phx-db-system.png
    図1.7:リージョン2のDBシステム

  12. 「データベース」タブに移動し、データベースadgholを選択します。

    phx-db-system-db.png
    図1.8:リージョン2のデータベース

  13. 「Data Guardステータス」「使用不可」であることを確認します。これにより、OCIコンソールを使用してOracle Data Guardが設定されていないことが確認されます。

    phx-db-dataguard-cp-status.png
    図1.9:リージョン2のData Guardコントロール・プレーンのステータス

  14. 「タグ」タブにナビゲートし、フリーフォーム・タグを作成します。設定に基づいて、Peer DB OCIDの値を置換する必要があります。この例では、アッシュバーン・リージョンのデータベースOCIDを追加する必要があります。

    タグ・キー Value
    FsdrNonStandardDataGuardPeerDatabaseId Peer DB OCID
    FsdrNonStandardDataGuardFlag True

    phx-db-dataguardタグ
    図1.10:リージョン2のDBタグ

  15. ステップ7と8を繰り返しますが、今回はリージョン2 (スタンバイ・リージョン)のデータベース・ノードに接続します。

    • Region 2データベース・ノードでoracleユーザーとしてログインしていることを確認します。
    • ステップ8と同様に、dgmgrlを使用してOracle Data Guardロールを確認します。

タスク2: DR保護グループの作成および関連付け

このアプリケーション・スタックの保護グループがまだ存在しない場合は、リージョン1およびリージョン2でDR保護グループを作成します。

タスク2.1: リージョン1での保護グループの作成

  1. 図2.1に示すように、OCIコンソールに移動し、「DR保護グループ」に移動します。

    1. OCIリージョン・コンテキストがリージョン1 (アッシュバーン)に設定されていることを確認します。
    2. 「移行とディザスタ・リカバリ」をクリックします。
    3. 「DR保護グループ」をクリックします。

    dg-iad-drpg.png
    図2.1: DR保護グループに移動します。

  2. 図2.2に示すように、リージョン1に基本的なDR保護グループを作成します。ピア、ロールおよびメンバーは、後のステップで割り当てられます。

    1. DR保護グループを作成するコンパートメントを選択します。
    2. 「DR保護グループの作成」をクリックします。
    3. DR保護グループにはわかりやすい名前を使用します。
    4. OCI Full Stack DRログの場合は、「OCI Object Storageバケット」を選択します。
    5. 「作成」をクリックします。

    dg-drpg-create-iad-finish.png
    図2.2:リージョン1でDR保護グループを作成するために必要なパラメータ

タスク2.2: リージョン2での保護グループの作成

  1. OCIコンソールに移動し、図2.3に示すように「DR保護グループ」に移動します。

    1. OCIリージョン・コンテキストがリージョン2 (フェニックス)に設定されていることを確認します。
    2. 「移行とディザスタ・リカバリ」をクリックします。
    3. 「DR保護グループ」をクリックします。

    dg-iad-drpg.png
    図2.3: DR保護グループに移動します。

  2. 図2.4に示すように、リージョン2で基本的なDR保護グループを作成します。ピア、ロールおよびメンバーは、後のステップで割り当てられます。

    1. DR保護グループを作成するコンパートメントを選択します。
    2. 「DR保護グループの作成」をクリックします。
    3. DRPGにわかりやすい名前を使用します。
    4. OCI Full Stack DRログの場合は、「OCI Object Storageバケット」を選択します。
    5. 「作成」をクリックします。

    dg-drpg- 作成-phx-finish.pn
    図2.4:リージョン2でDR保護グループを作成するために必要なパラメータ

タスク2.3: リージョン1およびリージョン2での保護グループの関連付け

各リージョンのDRPGを互いのピアとして関連付け、プライマリおよびスタンバイのピア・ロールを割り当てます。プライマリおよびスタンバイのロールは、DR操作/DR計画実行の一部としてOCI Full Stack DRによって自動的に変更されます。ロールをいつでも手動で管理する必要はありません。

  1. 「DR保護グループの詳細」ページに移動します。

    1. OCIリージョン・コンテキストがリージョン1 (アッシュバーン)に設定されていることを確認します。
    2. 「アクション」ドロップダウン・メニューをクリックし、「関連付け」をクリックしてプロセスを開始します。

    drpg-assoc-begin-iad.png
    図2.5: DRPGアソシエーションの開始

  2. 次の情報を入力します

    1. ロール: 「プライマリ」ロールを選択します。OCI Full Stack DRは、スタンバイ・ロールをリージョン2に自動的に割り当てます。
    2. ピア・リージョン:他のDR保護グループが作成されたリージョン2 (フェニックス)を選択します。
    3. ピアDR保護システム・グループ:作成されたピアDR保護システムを選択します。
    4. 「関連付け」をクリックします。

    drpg-assoc-finish-iad.png
    図2.6: DRPGを関連付けるために必要なパラメータ

OCI Full Stack DRは、アソシエーションが完了すると、次のイメージに示すように表示されます。

drpg-assoc-completed-iad.png
図2.7:個々のDRPGの観点からピア関係を表示しています。

コンテキスト/ビューがグローバルな観点から見ると、次の図に示すようにすべてのDR保護グループを示す場合でも、同じ情報を確認できます。

drpg-assoc-completed-dxb.png
図2.8:グローバルDRPGの観点からピア関係を表示しています

タスク3: DR保護グループへのメンバーの追加

このタスクでは、次のOCIリソースをリージョン1のプライマリDR保護グループに追加します。

  1. データベース・ハンドラ・スクリプトをホストするOCIコンピュート・インスタンスは、移動しないVMとして追加されます。
  2. プライマリDBシステム。

タスク3.1: リージョン1のDR保護グループへのメンバーの追加

  1. 次の図に示すように、リージョン1でDR保護グループを選択します。

    1. OCIリージョン・コンテキストがリージョン1 (アッシュバーン)であることを確認します。
    2. リージョン1でDR抗議グループを選択します。
    3. 「メンバー」タブにナビゲートします。
    4. 「メンバーの管理」をクリックします。

    drpg-add-nav-iad.png
    図3.1:リージョン1のDR保護グループへのメンバーの追加を開始する方法

  2. データベース・ハンドラ・スクリプトのコンピュート・インスタンスを追加します。

    1. 「メンバーの追加」を選択します
    2. メンバーのリソース・タイプとして、「コンピュート」の下の「インスタンス」を選択します。
    3. データベース・ハンドラ・スクリプトをホストするコンピュート・インスタンスを選択します。
    4. 「非移動インスタンス」を選択します。
    5. 「追加」をクリックします。

    drpg-add-compute-iad.png
    図3.2:コンピュート・インスタンスがリージョン1のDRPGに追加されました

    追加されたコンピュート・インスタンスを確認します。

    drpg-add-compute-iad-added.png
    図3.2:コンピュート・インスタンスがリージョン1のDRPGに追加されました

  3. プライマリ・データベースを追加します。「メンバーの追加」をクリックします

    1. 「メンバーの追加」を選択します
    2. 「Oracle Database」「データベース(Base DB、ExaDB-D、ExaCC、ExaXS)」をメンバー「リソース・タイプ」として選択します。
    3. 「データベース・タイプ」として「Oracleベース・データベース」を選択します。
    4. 「データベース・システム」を選択します。
    5. 「データベース・ホーム」を選択します。
    6. 「データベース」を選択します。
    7. 「データベース・パスワード・シークレット」を選択します
    8. 「追加」をクリックします

    drpg-add-db-iad.png
    図3.3:プライマリDBの追加に必要なパラメータ

    追加したプライマリ・データベースを確認し、両方のメンバーを公開します。

    drpg-add-db-iad-complete.png
    図3.4:プライマリDBがリージョン1のDRPGに追加されました

    drpg-add-db-iad-complete1.png
    図3.5:リージョン1のDRPGへのメンバーの公開

    数分後、両方のメンバーがメンバーの下で使用可能になります。

    drpg-add-db-iad-published.png
    図3.6:リージョン1のDRPGに追加されたメンバー

タスク3.2: リージョン2のDR保護グループへのメンバーの追加

  1. 次の図に示すように、リージョン2でDR保護グループを選択します。

    1. OCIリージョン・コンテキストがリージョン2 (フェニックス)であることを確認します。
    2. リージョン2でDR抗議グループを選択します。
    3. 「メンバー」タブにナビゲートします。
    4. 「メンバーの管理」をクリックします。

    drpg-add-nav-phx.png
    図3.7:リージョン2のDR保護グループへのメンバーの追加を開始する方法

  2. データベース・ハンドラ・スクリプトのコンピュート・インスタンスを追加します。

    1. 「メンバーの追加」を選択します
    2. メンバーのリソース・タイプとして、「コンピュート」の下の「インスタンス」を選択します。
    3. データベース・ハンドラ・スクリプトをホストするコンピュート・インスタンスを選択します。
    4. 「非移動インスタンス」を選択します。
    5. 「追加」をクリックします。

    drpg-add-compute-phx.png
    図3.8:コンピュート・インスタンスをリージョン2のDRPGに追加

    追加されたコンピュート・インスタンスを確認します。

    drpg-add-compute-phx-added.png
    図3.9:コンピュート・インスタンスがリージョン2のDRPGに追加されました

  3. スタンバイデータベースを追加します。「メンバーの追加」をクリックします

    1. 「メンバーの追加」を選択します
    2. 「Oracle Database」「データベース(Base DB、ExaDB-D、ExaCC、ExaXS)」をメンバー「リソース・タイプ」として選択します。
    3. 「データベース・タイプ」として「Oracleベース・データベース」を選択します。
    4. 「データベース・システム」を選択します。
    5. 「データベース・ホーム」を選択します。
    6. 「データベース」を選択します。
    7. 「データベース・パスワード・シークレット」を選択します
    8. 「追加」をクリックします

    drpg-add-db-phx.png
    図3.10:スタンバイDBを追加するために必要なパラメータ

    追加したスタンバイ・データベースを確認し、両方のメンバーを公開します。

    drpg-add-db-phx-complete.png
    図3.11:スタンバイDBがリージョン2のDRPGに追加されました

    drpg-add-db-phx complete1.png
    図3.12:リージョン2のDRPGへのメンバーの公開

    数分後、両方のメンバーがメンバーの下で使用可能になります。

    drpg-add-db-phx-published.png
    図3.13:リージョン2のDRPGに追加されたメンバー

タスク4: リージョン2でのDR計画の作成およびカスタマイズ

このタスクでは、リージョン2 (フェニックス)のスタンバイDR保護グループに関連付けられた初期スイッチオーバーフェイルオーバーおよびドリルの開始計画を作成します。

これらの計画は、ワークロードをプライマリ・リージョン(リージョン1)からスタンバイ・リージョン(リージョン2)にシームレスに移行するように設計されています。

DR計画は、スタンバイ・ロールを保持する保護グループに常に作成されます。

リージョン2 (フェニックス)は現在スタンバイであるため、ここではすべての初期DR計画を作成します。

タスク4.1: DR計画の作成

  1. リージョン2 (フェニックス)でDRPGを選択してDR計画を作成します

    1. OCIリージョン・コンテキストがリージョン2 (フェニックス)であることを確認します。
    2. リージョン2でスタンバイDRPGを選択します。
    3. 「プラン」タブにナビゲートします。
    4. 「計画の作成」をクリックします

    plan-create-nav-phx.png
    図4.1:リージョン2での基本的なDR計画の作成を開始する方法

  2. スイッチオーバー計画を作成します。

    1. スイッチオーバー・プランの単純でわかりやすい名前を入力します。名前はできるだけ短くする必要がありますが、危機時の混乱や人的ミスを軽減するために一目で理解しやすい名前にする必要があります。
    2. 「プラン・タイプ」「スイッチオーバー(計画済)」を選択します。

    計画- 作成-so-phx-png
    図4.2: DRスイッチオーバー計画の作成に必要なパラメータ

  3. フェイルオーバー計画を作成します。

    次の図に示すように、同じプロセスに従って基本的なフェイルオーバー計画を作成します。

    1. 単純で意味のあるフェイルオーバー計画の「名前」を入力します。
    2. 「プラン・タイプ」「フェイルオーバー(計画外)」を選択します。

    plan-create-fo-phx.png
    図4.3: DRフェイルオーバー計画の作成に必要なパラメータ

  4. 開始ドリル計画を作成します。

    次の図に示すように、同じプロセスに従って基本的なフェイルオーバー計画を作成します。

    1. 開始ドリル・プランの「名前」に単純でわかりやすい名前を入力します。
    2. 「プラン・タイプ」「フェイルオーバー(計画外)」を選択します。

    計画- 作成- 開始ドリル-phx.png
    図4.4: DRスタート・ドリル計画の作成に必要なパラメータ

    次の図に示すように、リージョン2のスタンバイDR保護グループに3つのDR計画が含まれるようになりました。これらは、リージョン1からリージョン2へのワークロードの移行を処理します。同様の計画をリージョン1で作成し、後のタスクでワークロードをリージョン2からリージョン1に戻します。

    plan-create-phx-completed.png
    図4.5:続行する前にリージョン2に存在する必要がある3つのDR計画を表示しています

ノート: OCI Full Stack DRでは、開始ドリル計画が正常に実行され、DR保護グループが非アクティブ(ドリル進行中)状態になった後にのみ、ストップ・ドリル計画を作成できます。

タスク4.2: ユーザー定義計画グループを使用したDR計画のカスタマイズ

タスク4.1で作成されたDR計画では、Oracle Data Guard設定が手動で行われたため、Oracleデータベース・ロール遷移の組込みプラン・グループは生成されません。

このタスクでは、次のことを行います。

これにより、DR計画で、手動で構成されたData Guard環境を含むフェイルオーバー、スイッチオーバーおよびドリル・シナリオを完全に処理できます。

  1. タスク4.1で作成したスイッチオーバー・プランにナビゲートし、「プラン・グループ」を選択します。

    plan-custom-so-phx nav.png
    図4.6:リージョン2でのスイッチオーバー計画のカスタマイズを開始する方法

  2. まず、カスタムのユーザー定義のDR計画グループを追加して、Oracleデータベース・ロールの変更の特定のニーズに合わせてDRワークフローを調整します。このプラン・グループは、リージョン1のジャンフォストscript-iadから必要なスクリプトを起動します。

  3. DBスイッチオーバーにユーザー定義プラン・グループを追加します。

    1. 「グループの追加」をクリックします。
    2. 単純でわかりやすいプラン・グループの名前を入力します。この例では、DB Switchoverを使用します。
    3. 「ステップの追加」をクリックしてダイアログを開き、DBロール変更を実行するスクリプトを指定します。

      plan-custom-so-phx-grp-db-role-change.png
      図4.7: dbロール変更を実行するプラン・グループを作成するためのパラメータ

      「プラン・グループの追加」ステップで、次の情報を入力します。

    4. 単純でわかりやすいステップ名を入力します。この例では、DB Switchover from IAD to PHXを使用します。
    5. このステップが実行されるインスタンスを含む「インスタンス・リージョン」を選択します。この例では、スクリプトがリージョン2のジャンフォストで実行されるため、Phoenixを選択します。
    6. 「ローカル・スクリプトの実行」を選択します。
    7. 「ターゲット・インスタンス」を選択します。これは、リージョン2のジャンフォストscript-phxです。
    8. 「スクリプト・パラメータ」に、パラメータを含むスクリプトのフルパスを入力します。たとえば: /home/opc/db-switchover-iad-phx.sh
    9. 「ユーザーとして実行」に、opcと入力します。
    10. 「ステップの追加」をクリックします。

      plan-custom-so-phx-grp-db-role-change-step.png
      図4.8: dbロール変更のステップを追加するパラメータ

    11. 追加されたステップを確認します。

      plan-custom-so-phx-grp-db-role-change-step-added.png
      図4.9: dbロール変更のために追加されました

    12. 「追加」をクリックします。

      plan-custom-so-phx-grp-db-role-change-add
      図4.10: DBロール変更グループの追加

      プラン・グループが現在使用可能になります。

      plan-custom-so-phx-grp1.png
      図4.11: DBスイッチオーバー・プラン・グループ

  4. スイッチオーバーDR計画にユーザー定義事前チェック・ステップを追加します。ユーザー定義の事前チェックは、組込みの事前チェック・ステップとともに実行されます。

    1. 「プラン・グループ」に移動し、「事前チェック作成済」の前面にある「…」をクリックして、「ユーザー定義事前チェックの追加」を選択します。

      plan-custom-so-phx-grp-db-role-precheck-change.png
      図4.12: DBスイッチオーバーのカスタム事前チェックを追加します

    2. 単純でわかりやすいステップ名を入力します。この例では、DB Switchover precheck from IAD to PHXを使用します。
    3. このステップが実行されるインスタンスを含む「インスタンス・リージョン」を選択します。この例では、スクリプトがリージョン2のジャンフォストで実行されるため、Phoenixを選択します。
    4. 「ローカル・スクリプトの実行」を選択します。
    5. 「ターゲット・インスタンス」を選択します。これは、リージョンのジャンフォストscript-phxです。
    6. 「スクリプト・パラメータ」に、パラメータを含むスクリプトのフルパスを入力します。たとえば: /home/opc/db-prechk-switchover-iad-phx.sh
    7. 「ユーザーとして実行」に、opcと入力します。
    8. 「ステップの追加」をクリックします。

      plan-custom-so-phx-grp-db-precheck-role-change-step.png
      図4.13: dbロール変更のカスタム事前チェック・ステップを追加するパラメータ

    9. 追加されたステップを確認します。

      plan-custom-so-phx-grp-db-role-precheck-change-step-added.png
      図4.14: dbロール変更のカスタム事前チェック・ステップを追加しました

      スイッチオーバー・プランのカスタマイズが正常に完了しました。

      plan-custom-so-phx complete.png
      図4.15:最終スイッチオーバー計画

  5. 同様に、フェイルオーバー開始ドリル・プランをカスタマイズし、前提条件(DBハンドラ・スクリプトの使用方法およびカスタマイズ)で使用可能な表形式の詳細を使用して、正しいターゲット・インスタンススクリプトを使用します。

  6. ユーザー定義プラン・グループおよびカスタム事前チェック・ステップが追加されると、「フェイルオーバー」および「ドリルの開始」プランは次のようになります。

    plan-custom-fo-phx-complete.png
    図4.16:最終フェイルオーバー計画

    プラン- カスタム- スタートドリル-phx complete.png
    図4.17:最終開始ドリル計画

タスク5: リージョン2でのDR計画の事前チェックの実行

スイッチオーバー、フェイルオーバー、開始ドリルDR計画がスタンバイ・リージョン2に正常に作成されました。これらの計画により、OCI Full Stack DRは、リージョン1からリージョン2にワークロードを移行したり、DRドリルを実行したりできます。後続のタスクでは、DR計画に対する事前チェックを実行して、準備状況を確認し、移行プロセスを検証します。

タスク5.1: スイッチオーバー計画の事前チェックの開始

スイッチオーバーDR計画の事前チェックを実行します。

  1. リージョン・コンテキストがスタンバイ・リージョン2に設定されていることを確認します。
  2. リージョン2で正しいDR保護グループが選択されていることを確認してください。これはスタンバイ・ロールである必要があります。
  3. 「処理」ドロップダウン・メニューをクリックします。
  4. 「事前確認の実行」をクリックします。
  5. 「IADからPHXへのDBスイッチオーバー」プランを選択します。
  6. 計画実行名を入力します(入力しない場合、自動生成されます)。
  7. 「事前確認の実行」をクリックします。

    prechecks-so-phx-begin.png
    図5.1:スイッチオーバー計画の事前チェックを実行する方法を示しています。

  8. 「計画実行」タブから「成功」ステータスを確認します。

    prechecks-so-phx-complete.png
    図5.2:スイッチオーバー計画の「完了」事前チェックの表示

タスク5.2: フェイルオーバー計画の事前チェックの開始

フェイルオーバーDR計画の事前チェックを実行します。

  1. リージョン・コンテキストがスタンバイ・リージョン2に設定されていることを確認します。
  2. リージョン2で正しいDR保護グループが選択されていることを確認してください。これはスタンバイ・ロールである必要があります。
  3. 「処理」ドロップダウン・メニューをクリックします。
  4. 「事前確認の実行」をクリックします。
  5. 「IADからPHXへのDBフェイルオーバー」プランを選択します。
  6. 計画実行名を入力します(入力しない場合、自動生成されます)。
  7. 「事前確認の実行」をクリックします。

    prechecks-fo-phx-begin.png
    図5.3:フェイルオーバー計画の事前チェックの実行方法を示します。

  8. 「計画実行」タブから「成功」ステータスを確認します。

    prechecks-fo-phx-complete.png
    図5.4:フェイルオーバー計画の完了済事前チェックの表示

タスク5.3: ドリル計画の開始の事前チェックの開始

開始ドリルDR計画の事前チェックを実行します。

  1. リージョン・コンテキストがスタンバイ・リージョン2に設定されていることを確認します。
  2. リージョン2で正しいDR保護グループが選択されていることを確認してください。これはスタンバイ・ロールである必要があります。
  3. 「処理」ドロップダウン・メニューをクリックします。
  4. 「事前確認の実行」をクリックします。
  5. 「PHXでドリルを開始」プランを選択します。
  6. 計画実行名を入力します(入力しない場合、自動生成されます)。
  7. 「事前確認の実行」をクリックします。

    prechecks-stadr-phx begin.png
    図5.5:開始ドリル・プランの事前チェックの実行方法を示しています

  8. 「計画実行」タブから「成功」ステータスを確認します。

    prechecks-stardr-phx-complete.png
    図5.6:フェイルオーバー計画の完了済事前チェックの表示

タスク6: リージョン2でのスイッチオーバー計画の実行

スイッチオーバーDR計画を実行して、リージョン1 (プライマリ)からリージョン2 (スタンバイ)へのOracleデータベース・ロールの移行を開始します。

  1. リージョン・コンテキストがスタンバイ・リージョン2に設定されていることを確認します。
  2. リージョン2で正しいDR保護グループが選択されていることを確認してください。これはスタンバイ・ロールである必要があります。
  3. 「処理」ドロップダウン・メニューをクリックします。
  4. 「計画の実行」をクリックします。

    実行-so-phx-begin.png
    図6.1:スイッチオーバー計画の実行方法を示します。

  5. 「IADからPHXへのDBスイッチオーバー」プランを選択します。
  6. このタスクでは、リージョン2でスイッチオーバー計画が実行されます。
  7. 事前チェックはすでにタスク5で実行されているため、「事前チェックの有効化」の選択を解除します。再度実行する場合は、有効にできます。
  8. 計画実行名を入力します(入力しない場合、自動生成されます)。
  9. 「計画の実行」をクリックします。

    exec-so-phx begin.png
    図6.2:スイッチオーバー計画の実行方法を示しています。

  10. 「計画実行」タブにナビゲートし、スイッチオーバー計画実行を選択します。

    exec-so-phx-in-progress.png
    図6.3:進行中のスイッチオーバー計画の表示

  11. 完全なワークロードがリージョン1からリージョン2に完全に移行されるまで、スイッチオーバー計画を監視すること。スイッチオーバー計画の実行は約8分で正常に完了しました。

    exec-so-phx complete.png
    図6.4:完了したスイッチオーバー計画の実行を表示しています。

  12. タスク1.8で提供される詳細を使用して、データベース・ロールのステータスを確認できます。

    iad-db-dataguard-status-afterso.png
    図6.5:スイッチオーバー後のData Guardステータス

    予想される出力:

    • adghol_site1は、プライマリ・データベースとして表示されます。
    • adghol_site0は、フィジカル・スタンバイ・データベースとして表示されます。
    • Configuration Status「成功」と表示されます。
  13. DR保護グループのロールがスワップされ、リージョン2は「プライマリ」として表示され、リージョン1は「スタンバイ」として表示されます。

    drpg-roles-after-so-phx
    図6.6:スイッチオーバー後のDR保護ロールの変更

タスク7: リージョン1でのDR計画の作成およびカスタマイズ

リージョン1からリージョン2へのスイッチオーバーDR計画が正常に実行されたことで、リージョン2はプライマリのロールを引き受け、リージョン1はスタンバイ・ロールに移行しました。

タスク4で説明した同じアプローチに従って、リージョン1のDR保護グループ内でスイッチオーバー、フェイルオーバーおよびDRドリル・プランを作成およびカスタマイズします。このプランはスタンバイ・ピア・リージョンとして機能します。

これらのプランがユーザー定義プラン・グループおよびカスタム事前チェック・ステップで作成および更新されると、次のイメージのようになります。

計画作成-iad.png
図7.1:リージョン1に作成されたDR計画

plan-so-customize-iad.png
図7.2:リージョン1のスイッチオーバー計画

plan-fo-customize-iad.png
図7.3 :リージョン1のフェイルオーバー計画

plan-sd-customize-iad.png
図7.4 :リージョン1でドリル・プランを開始します。

必要に応じて、スイッチオーバー・プランを実行して、リージョン1のデータベースをプライマリ・ロールに戻し、リージョン2のデータベースがスタンバイになります。

同様に、スタート・ドリル計画を実行してディザスタ・リカバリ・イベントをシミュレートしてから、ストップ・ドリル計画を作成して実行し、システムを元の状態に戻すことができます。

次のステップ

詳細は、「関連リンク」の項で、OCI Full Stack DR、Oracle Base Database Service、Oracle Data Guardのドキュメントを参照してください。

確認

その他の学習リソース

docs.oracle.com/learnで他のラボを確認するか、Oracle Learning YouTubeチャネルで無料のラーニング・コンテンツにアクセスしてください。また、education.oracle.com/learning-explorerにアクセスして、Oracle Learning Explorerになります。

製品ドキュメントについては、Oracle Help Centerを参照してください。