PDBフェイルオーバーの実行

PDBフェイルオーバーは、ソースPDBとその指定されたターゲットPDB間のロール・リバーサルです。この操作は、通常、ソースPDBに障害が発生し、適切なタイミングでリカバリする可能性がない場合に実行されます。

次のタイプのPDBフェイルオーバーのいずれかを実行できます。

  • 完全なPDBフェイルオーバー

    これはデフォルトです。データが失われることはなく、推奨されるオプションです。このオプションは、ソースPDBに問題があるが、ソースCDBが使用可能な場合に使用します。

  • 即時PDBフェイルオーバー

    これは最も高速なPDBフェイルオーバーのタイプです。ただし、PDBフェイルオーバーを起動すると、ターゲットPDBに追加のデータは適用されません。即時フェイルオーバー操作の後、新しいソースPDBのターゲットPDBとして機能する前に、前のソースPDBを回復する必要があります。このオプションは、ソースCDBが使用できないときに使用します。このような状況では、データ損失の可能性が高くなります。

    即時フェイルオーバー操作の後、前のソースPDBを削除する必要があります。即時PDBフェイルオーバー後の新しいソースPDBは保護されません。データ保護を再開するには、新しいDGPDBを追加する必要があります。

DG PDBフェイルオーバーを開始する前に

PDBフェイルオーバーを実行する前に、いくつかの要因を考慮する必要があります。

  • ソースPDBをリカバリする可能性がないことを確認します。

ブローカによるDG PDB環境でのフェイルオーバーの実行方法

PDBフェイルオーバーを開始すると、ブローカは一連のステップを実行します。

  1. ターゲット・データベースがアクセス可能であることを確認します。ターゲット・データベースに到達できない場合、フェイルオーバーは実行できません。

  2. ソースPDBおよびターゲットPDBが正しい状態であることを確認します。ソースPDBはオープンまたはクローズできます。ターゲットPDBはリカバリ・モードである必要があります。

    この検証は、即時PDBフェイルオーバーには実行されないことに注意してください。

  3. ターゲットPDBがソースPDBの現在のREDOストリームをリカバリしていることを確認します。

  4. すべてのインスタンスでソースPDBをクローズします。

  5. ターゲット・データベースが未適用のREDOデータの適用を終了するのを待ってから、REDO Applyを停止します。即時フェイルオーバーの実行時に、未適用のREDOは適用されません。

  6. 次のように、ターゲットPDBをソースPDBに遷移させます。

    • ターゲットPDBのロールをソースPDBに変更します。

    • 新しいソースPDBを読取り/書込みモードでオープンします。

フェイルオーバーの完了後、ブローカでは新しいターゲットPDB (元のソースPDB)でリカバリは実行されません。新しいターゲット・データベースを再起動したり、ENABLE DATABASEコマンドを実行した場合でも、リカバリは開始されません。障害の原因となった問題に対処したら、SET STATE=APPLY-ONオプションを指定してEDIT PLUGGABLE DATABASEコマンドを実行してリカバリを開始します。

PDBフェイルオーバーの開始

DGMGRLを使用して、PDBの完全フェイルオーバー(推奨)または即時フェイルオーバーを実行します。

フェイルオーバーの実行時にソースPDBをオープンする必要はありません。

PDBフェイルオーバーを実行するには:

  1. ターゲット・データベースに接続します。
  2. ターゲットPDBの名前およびターゲットPDBを含むターゲット・データベースの名前を指定して、FAILOVER PLUGGABLE DATABASEコマンドを実行します。

    この例では、bos_sales PDBへのフェイルオーバーを実行します。フェイルオーバー操作が完了すると、ターゲット・データベースboston内のターゲットPDB bos_salesがプライマリ・ロールに変わります。

    DGMGRL> FAILOVER TO PLUGGABLE DATABASE bos_sales AT boston; 
    Verifying conditions for Failover... 
    
      Source pluggable database is 'NYC_SALES' at database 'newyork' 
    
    Performing failover NOW, please wait... 
    
      Closing pluggable database 'NYC_SALES'... 
      Converting 'NYC_SALES' to standby role... 
      Waiting for 'BOS_SALES' to recover all redo data... 
      Stopping recovery at 'BOS_SALES'... 
      Converting 'BOS_SALES' to primary role... 
      Opening new primary 'BOS_SALES'... 
      Waiting for redo data from new primary 'BOS_SALES'... 
    
    Failover succeeded, new primary is "BOS_SALES".

    ターゲットPDBがソースPDBロールに変更される前に、累積されたREDOがすべて適用されます。

    即時フェイルオーバーを実行するには、コマンドにIMMEDIATEキーワードを含めます。この場合、ソースPDBロールは累積されたREDOデータを適用せずに変更されます。

PDBフェイルオーバー操作の完了後、それが完全フェイルオーバーでありそのフェイルオーバーの原因となったすべての問題に対処してある場合は、EDIT PLUGGABLE DATABASEコマンドをSET STATE=APPLY-ONとともに使用して前のソースPDBでREDO Applyを開始します。