Skip to main content
日本語は機械翻訳による参考訳です。内容に矛盾や不一致があった場合には、英語の内容が優先されます。

Google Cloud NetApp Volumes 上の Data Guard のスタンバイ データベースを確定する

共同作成者 netapp-jsnyder

スタンバイREDOログファイルの作成、フラッシュバックデータベースの有効化、REDO転送の有効化、およびData Guardの状態確認によって、Google Cloud NetApp Volumes上のOracle Data Guardのスタンバイデータベースを確定します。

ティア固有: この手順は、Prod HA (Data Guard + FSFO) ティアでのみ必要です。

ステップ 1:スタンバイ REDO ログファイルを作成する

高速スタート・フェイルオーバーをサポートするために、両方のデータベースホストにスタンバイREDOログファイルを作成します。サイズは最大のプライマリオンラインREDOログ以上である必要があり、カウントは(スレッドあたりのオンライングループ)+ 1 と等しくなければなりません。GCNVシード処理後、レプリケートされたパスを修正するために、スタンバイ側でスタンバイREDOログを削除して再作成します。

  1. プライマリデータベース上にスタンバイREDOログファイルを作成する(orcl):

    ALTER SYSTEM SET db_create_file_dest='+DATA' SCOPE=BOTH;
    ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 ('+DATA') SIZE 1024M;
    -- repeat (online log groups + 1) times
  2. GCNV シード後、スタンバイ データベース上のスタンバイ REDO ログ ファイルを削除して再作成します((orcls)。 +DATA/ORCL/… 配下の複製されたパスは、再構築されるまで ORA-19527 / ORA-16086 を引き起こします:

    ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
    ALTER SYSTEM SET standby_file_management=MANUAL SCOPE=BOTH;
    -- DROP STANDBY LOGFILE GROUP for each group# in v$standby_log;
    ALTER SYSTEM SET db_create_file_dest='+DATA' SCOPE=BOTH;
    ALTER SYSTEM SET standby_file_management=AUTO SCOPE=BOTH;
    ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 ('+DATA') SIZE 1024M;
    -- repeat (online groups + 1) times; one member per group
    ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;

ステップ2:フラッシュバックを有効にしてリカバリを開始する

スタンバイ側でフラッシュバック データベースを有効にして、フェイルオーバー後の自動復旧をサポートし、その後、リアルタイム適用でマネージド リカバリを開始します。MRP がアクティブな間はフラッシュバックを有効にできないため、マネージド リカバリを開始する前にフラッシュバックを有効にする必要があります。

  1. スタンバイデータベースをシャットダウンし、MOUNTモードで再起動し、 `oracdb2`でフラッシュバックデータベースを有効にします:

    # On oracdb2
    sudo -u oracle bash -c '
    . ~/.bash_profile
    export ORACLE_SID=orcls
    sqlplus / as sysdba <<SQL
    SHUTDOWN IMMEDIATE;
    STARTUP MOUNT;
    ALTER SYSTEM SET db_flashback_retention_target=1440 SCOPE=BOTH;
    ALTER DATABASE FLASHBACK ON;
    EXIT
    SQL'
  2. リアルタイム適用による管理リカバリの開始:

    sudo -u oracle bash -c '
    . ~/.bash_profile
    export ORACLE_SID=orcls
    sqlplus / as sysdba <<SQL
    ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;
    EXIT
    SQL'

    `USING CURRENT LOGFILE`リアルタイム適用を有効にします(SRLに到着した時点でredoが適用されます)。

ステップ3:redo shippingを有効にする

スタンバイ作成中の `ORA-12154`エラーを抑制するために、スタンバイ初期化手順のステップ2で意図的に `DEFER`に設定されていた `LOG_ARCHIVE_DEST_STATE_2`を有効にすることで、プライマリからスタンバイへのREDO転送を有効にします。

  1. LOG_ARCHIVE_DEST_STATE_2`に切り替え `ENABLE、ログスイッチを強制してREDOログの転送を開始します:

    sudo -u oracle bash -c '
    . ~/.bash_profile
    sqlplus / as sysdba <<SQL
    ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=ENABLE SCOPE=BOTH;
    ALTER SYSTEM SWITCH LOGFILE;
    ALTER SYSTEM ARCHIVE LOG CURRENT;
    EXIT
    SQL'
  2. REDOログの転送が正しく機能していることを確認します。

    sudo -u oracle bash -c '
    . ~/.bash_profile
    sqlplus / as sysdba <<SQL
    SELECT dest_id, status, error FROM v\$archive_dest_status WHERE dest_id IN (1,2);
    EXIT
    SQL'
    # Expected: dest_id=2, STATUS=VALID, ERROR null.
    `dest_2`が `ORA-12154`を示している場合は、プライマリをバウンスします。xref:gcnv-oracle-data-guard.adoc#enable-broker-on-both-databases[手順1:両方のデータベースでブローカーを有効にする]の後、DGMGRLを介してトランスポートを管理します。

ステップ 4:Data Guard の状態を確認する

プライマリデータベースが READ WRITE モードになっていること、およびスタンバイデータベースがマネージドリカバリでマウントされ、redo ログが適用されていることを確認してください。

  1. プライマリ データベース ロールとオープン モードを確認します oracdb1

    sudo -u oracle sqlplus -s / as sysdba \
      <<<"SELECT database_role || ' | ' || open_mode FROM v\$database;"
    # Expected: PRIMARY | READ WRITE
  2. スタンバイデータベースのロール、オープンモード、および管理リカバリのステータスを `oracdb2`で確認します:

    gcloud compute ssh oracdb2 --tunnel-through-iap --zone=us-west1-b
    
    sudo -u oracle bash <<'BASH'
    . ~/.bash_profile
    export ORACLE_SID=orcls
    
    sqlplus -s / as sysdba <<'SQL'
    SELECT database_role || ' | ' || open_mode
    FROM v$database;
    
    SELECT process, status, sequence#
    FROM v$managed_standby
    WHERE process IN ('MRP0','RFS');
    
    EXIT
    SQL
    BASH

    スタンバイで想定される値: PHYSICAL STANDBY | MOUNTED; MRP0( `APPLYING_LOG`を使用)。

  3. スタンバイが `MOUNTED`を報告しているが apply が実行されていない場合は、 `oracdb2`でマネージドリカバリを再起動します:

    sudo -u oracle bash -c '
    . ~/.bash_profile
    export ORACLE_SID=orcls
    sqlplus / as sysdba <<SQL
    ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
    ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;
    EXIT
    SQL'

次の手順

自動ロール管理とフェイルオーバー保護を有効にするには、Oracle Data Guard Broker、Fast-Start Failover、およびObserverを設定するに進んでください。