7 DG PDB環境でのスイッチオーバーおよびフェイルオーバー
Oracle Data Guard Brokerを使用して、DG PDB環境でスイッチオーバーおよびフェイルオーバー操作を管理する方法について学習します。
この章のトピックは、次のとおりです:
DG PDB環境でのスイッチオーバーおよびフェイルオーバーの概要
Oracle Data Guard Brokerでは、スイッチオーバー操作またはフェイルオーバー操作を使用して、ソースPDBおよびその指定されたターゲットPDBのロールを元に戻すことができます。
-
PDBのスイッチオーバー
ソースPDBとその指定されたターゲットPDB間の計画的なロール・リバーサルです。ブローカは、ロールを切り替える前に、ターゲットPDBがソースPDBによって生成されたすべてのREDOを適用したことを確認します。
スイッチオーバーの管理の一環として、ブローカは、新しいソースPDBから指定されたターゲットPDBへのREDO転送を自動的に設定し、新しいターゲットPDBでREDO Applyサービスを開始します。
-
PDBのフェイルオーバー
ロール遷移のことで、ソースPDBに障害が発生したかアクセスできなくなった後に、指定されたターゲットPDBがソースPDBロールに遷移します。ソースPDBが使用できない場合にのみフェイルオーバーを実行することをお薦めします。
PDBスイッチオーバーの実行
PDBスイッチオーバーは、ソースPDBとその指定されたターゲットPDB間のロール・リバーサルです。DGMGRLコマンドを使用してPDBスイッチオーバーを実行します。
ブローカによるDG PDB環境でのスイッチオーバーの実行方法
スイッチオーバーを開始すると、ブローカは次の処理を実行します。
-
指定されたターゲット・データベースがアクセス可能であり、ターゲットPDBが存在し、ターゲットPDBが指定されたDG PDBであることを確認します。
-
ソースPDBおよびターゲットPDBが正しい状態であることを確認します。ソースPDBが読取り/書込みモードでオープンしており、ターゲットPDBがリカバリ・モードである必要があります。
-
ターゲットPDBがソースPDBの現在のREDOストリームをリカバリしていることを確認します。
-
すべてのインスタンスでソースPDBをクローズします。
-
ソースPDBをスタンバイ・ロールに変換します。スイッチオーバーが完了すると、ソースPDBがターゲットPDBになります。
-
ターゲットPDBがソースPDBによって生成されたすべてのREDOを介してリカバリされ、リカバリが取り消された後、ターゲットPDBをプライマリ・ロールに変換します。
-
ターゲットPDBを新しいソースPDBとしてオープンします。
-
ターゲットPDBからのREDOが元のソースPDBに登録された後にリカバリを開始します。
PDBへのスイッチオーバーの開始
スイッチオーバーが開始されると、ソースPDBおよびターゲットPDBのREDOラグはできるだけ小さくする必要があります。
PDBスイッチオーバーを開始するには:
-
SWITCHOVER PLUGGABLE DATABASE
コマンドを実行します。プライマリ・ロールを実行する必要があるPDBの名前を指定します。
ブローカは残りのPDBスイッチオーバーを制御します。
例7-1 PDBスイッチオーバーの実行
この例では、PDB bos_sales
とnyc_sales
の間でスイッチオーバーを実行します。スイッチオーバー操作が完了すると、ターゲット・データベースnewyork
内のターゲットPDB nyc_sales
がプライマリ・ロールに変わり、新しいソースPDBになります。
DGMGRL> SWITCHOVER TO PLUGGABLE DATABASE nyc_sales AT newyork;
Verifying conditions for Switchover...
Source pluggable database is 'BOS_SALES' at database 'boston'
Performing switchover NOW, please wait...
Closing pluggable database 'BOS_SALES'...
Switching 'BOS_SALES' to standby role...
Waiting for 'NYC_SALES' to recover all redo data...
Stopping recovery at 'NYC_SALES'...
Converting 'NYC_SALES' to primary role...
Opening new primary 'NYC_SALES'...
Waiting for redo data from new primary 'NYC_SALES'...
Starting recovery at new standby 'BOS_SALES'...
Switchover succeeded, new primary is "NYC_SALES"
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およびターゲットPDBが正しい状態であることを確認します。ソースPDBはオープンまたはクローズできます。ターゲットPDBはリカバリ・モードである必要があります。
この検証は、即時PDBフェイルオーバーには実行されないことに注意してください。
-
ターゲットPDBがソースPDBの現在のREDOストリームをリカバリしていることを確認します。
-
すべてのインスタンスでソースPDBをクローズします。
-
ターゲット・データベースが未適用のREDOデータの適用を終了するのを待ってから、REDO Applyを停止します。即時フェイルオーバーの実行時に、未適用のREDOは適用されません。
-
次のように、ターゲットPDBをソースPDBに遷移させます。
-
ターゲットPDBのロールをソースPDBに変更します。
-
新しいソースPDBを読取り/書込みモードでオープンします。
-
フェイルオーバーの完了後、ブローカでは新しいターゲットPDB (元のソースPDB)でリカバリは実行されません。新しいターゲット・データベースを再起動したり、ENABLE DATABASE
コマンドを実行した場合でも、リカバリは開始されません。障害の原因となった問題に対処したら、SET STATE=APPLY-ON
オプションを指定してEDIT PLUGGABLE DATABASE
コマンドを実行してリカバリを開始します。