スイッチオーバー
スイッチオーバーとは、プライマリ・データベースといずれかのスタンバイ・データベースとの間のロール・リバーサルです。
スイッチオーバーでは、データの消失がないことが保証され、通常は予定されたプライマリ・システムのメンテナンスの際に実行されます。スイッチオーバー中は、プライマリ・データベースがスタンバイ・ロールに遷移し、スタンバイ・データベースがプライマリ・ロールに遷移します。
可能な場合は必ず、フィジカル・スタンバイ・データベースに対してスイッチオーバーしてください。
-
スイッチオーバーによりロジカル・スタンバイ・データベースをプライマリ・ロールに遷移する場合、次のようになります。
-
元のプライマリ・データベースはロジカル・スタンバイ・ロールに切り替えられます。
-
スイッチオーバーの完了後、プライマリ・データベースおよびロジカル・スタンバイ・データベースのどちらも再起動の必要はありません。
ブローカ構成内の他のロジカル・スタンバイ・データベースは、スイッチオーバー後も実行可能です。ロジカル・スタンバイ・データベースへのスイッチオーバーの後、すべてのフィジカルおよびスナップショット・スタンバイ・データベースは無効化されるため、新しいプライマリ・データベースのコピーから再作成する必要があります。
構成が最大保護モードで動作している場合、ロジカル・スタンバイ・データベースへのスイッチオーバーは許可されません。
警告:
ロジカル・スタンバイ・データベースへのスイッチオーバーの後、ブローカ構成内のスナップショットまたはフィジカル・スタンバイ・データベースはスタンバイ・データベースとして実行できなくなり、ブローカによって無効化されます。ロジカル・スタンバイへのスイッチオーバーが短時間であれば、再び元のプライマリに切り替えた後に、無効化されているスナップショットおよびフィジカル・スタンバイ・データベースを正常に再有効化できます。スタンバイ・データベースとして実行可能な状態にリストアする方法は、「ロール変更後の無効化されたデータベースの再有効化」を参照してください。
ロジカル・スタンバイへのスイッチオーバーが短時間であれば、再び元のプライマリに切り替えた後に、無効化されているスナップショットおよびフィジカル・スタンバイ・データベースを正常に再有効化できます。
-
スイッチオーバー操作実行前の考慮事項
スイッチオーバーを開始する前に必要な考慮点を次に示します。
-
スイッチオーバーを開始すると、ブローカは、スイッチオーバーの完了後に少なくとも1つのスタンバイ・データベース(スタンバイ・ロールに遷移する予定のプライマリ・データベースも含む)が、全体の保護モード(最大保護、最大可用性または最大パフォーマンス)をサポートするように構成されているかどうかを検証します。
-
全体の保護モードとの関連で、将来考えられるスタンバイ・データベースとしてのロールに備えて、あらかじめプライマリ・データベースを準備しておきます(「データ保護モードの管理」を参照してください)。こうした準備には、次の操作が含まれます:
-
プライマリ・データベースでスタンバイREDOログ・ファイルが構成されていることを確認します。
-
LogXptMode、NetTimeout、StandbyArchiveLocation、StandbyAlternateLocationおよびRedoRoutesなど、REDO転送サービス関連のデータベース・プロパティをあらかじめ設定します。データベース・プロパティを使用したREDO転送サービスの管理の詳細は、「REDO転送サービスの管理」を参照してください。 -
DelayMinsなど、REDO Applyサービス関連のデータベース・プロパティをリセットします。遅延の適用がある場合は、スイッチオーバーを開始する前にすべて削除する必要があります。ブローカでは、遅延の適用が構成されている(DelayMinsプロパティがゼロ(0)以外の値に設定されている)スタンバイへのスイッチオーバーはできません。プロパティを使用したREDO Applyサービスの管理の詳細は、「ログ適用サービスの管理」を参照してください。 -
一時表ごとに、プライマリ・データベース上の一時表に関連付けられた一時ファイルがスタンバイ・データベースにも存在することを確認します。
これらのプロパティは、実際にプライマリ・データベースをスタンバイ・ロールに切り替えるまで、ブローカによってREDO転送サービスとREDO Applyサービスの設定に使用されないことに注意してください。そのため、これらのプロパティの値の妥当性は、スイッチオーバー後まで検証されません。これらのプロパティを設定すると、その値はスイッチオーバーおよびフェイルオーバー時のロール変更を通じて存続します。
-
-
ファスト・スタート・フェイルオーバーが有効化されている場合、スイッチオーバーを実行できるのは、事前に指定されたターゲット・スタンバイ・データベースに対してのみであり、スタンバイ・データベースがプライマリ・データベースと同期化されているか(最大可用性モード)、構成されている制限範囲内にラグが収まっている(最大パフォーマンス・モード)場合に限られます。ファスト・スタート・フェイルオーバーの有効化の詳細は、「ファスト・スタート・フェイルオーバーの有効化」を参照してください。
-
SHOW CONFIGURATION WHEN PRIMARY ISコマンドを使用すると、指定したデータベースがプライマリ・データベースであった場合に有効になるREDO転送構成(RedoRoutesプロパティの各メンバーの設定に基づく)が表示されます。この情報を使用して、ロール変更の後に不適切になるREDO転送構成があれば事前に特定できます(たとえば、RedoRoutesプロパティが正しく構成されなかったためにREDOを受け取れないスタンバイなど)。
スイッチオーバーの完了後、ブローカにより、保護モードがスイッチオーバー前と同じ保護レベル(最大保護、最大可用性または最大パフォーマンス)に維持され、スイッチオーバー・プロセスの一部として全体のOracle Data Guard保護モードが保持されます。他のすべてのその他のスタンバイ・データベースに対する適用サービスは、新しいプライマリ・データベースから受け取ったREDOデータの適用を自動的に開始します。
構成内にフィジカルまたはスナップショット・スタンバイ・データベースが存在するとき、ロジカル・スタンバイ・データベースへのスイッチオーバーが発生した場合は、「ロール変更後の無効化されたデータベースの再有効化」に示すように、新しいプライマリ・データベースのコピーからこれらのデータベースを再作成し、データベースを再び有効化する必要があります。
ノート:
Oracle Data Guard構成では、SRVCTL -startoptionおよび-roleはスイッチオーバー後に更新され、現在のオープン・モードおよびデータベース・ロールが新しいプライマリ・データベースとスタンバイ・データベースに反映されます。ブローカとOracle Restartの対話に関する追加情報は、「データベース・サービスの構成要件」を参照してください。
スイッチオーバーの開始
スイッチオーバーを開始する場合、関係するプライマリ・データベースとスタンバイ・データベースのREDOラグは、できるかぎり低くする必要があります。
ロールの切替えは、慎重に計画して実行する必要があります。スイッチオーバーに備えたデータベースの設定方法の詳細は、『Oracle Data Guard概要および管理』を参照してください。
Cloud Controlを使用してスイッチオーバーを開始するには、プライマリ・ロールに変更するスタンバイ・データベースを選択して「スイッチオーバー」をクリックします。DGMGRLを使用する場合は、SWITCHOVERコマンドを発行し、プライマリ・ロールに変更するスタンバイ・データベースの名前を指定する必要があります。
ブローカは残りのスイッチオーバーを制御します。
ブローカによるスイッチオーバーの実行方法
スイッチオーバーの開始後にブローカが実行するアクションは、次のとおりです。
-
プライマリ・データベースとターゲットのスタンバイ・データベースが次の状態であることを検証します。
-
プライマリ・データベースが有効化されて
TRANSPORT-ON状態であること。 -
ターゲット・スタンバイ・データベースが有効化されて
APPLY-ON状態であること。
ブローカは、スイッチオーバー操作に関連して選択したプライマリ・データベースとスタンバイ・データベースにエラーがないかぎり、スイッチオーバーを続行します。エラーが他の構成メンバーに発生していても、スイッチオーバーは妨げられません。
-
-
プライマリ・データベースでブロック変更トラッキングが有効になっており、ターゲット・スタンバイ・データベースがマウントされている場合は、ブローカでこの設定が記憶され、新しいプライマリ・データベースでブロック変更トラッキングを有効にできるようになります。
-
WAITオプションがSWITCHOVERコマンドに挿入され、データベースがOracle Clusterwareによって管理されている場合:-
ブローカは、Oracle Clusterwareにアクティブなサービスを停止するように通知します。
-
ブローカは、これらのサービスを介して接続されているすべてのセッションが終了するか、指定された待機時間が経過するのを継続的に監視します。
-
WAITオプションにゼロ以外の値を指定した場合、ブローカはWAITオプションに指定された時間待機します。 -
WAITオプションに値を指定しなかった場合、ブローカは、アクティブなサービスの中で構成された最大のdrain_timeoutによって指定された時間待機します。drain_timeoutは、SRVCTLadd serviceコマンドで指定されます。
アクティブなサービスを介して接続されているすべてのセッションが終了した場合、スイッチオーバー操作は指定された待機時間より前に開始される可能性があることに注意してください。
-
-
-
プライマリ・データベースおよびスタンバイ・データベースのロールを切り替えます。
ブローカは最初に、元のプライマリ・データベースを変換してスタンバイ・ロールで実行するようにします。いずれかの変換時にエラーが発生すると、ブローカはスイッチオーバーを停止します。詳細は、「スイッチオーバー操作時の問題のトラブルシューティング」を参照してください。
-
ブローカ構成ファイルを更新し、ロールの変更を記録します。
これにより、なんらかの理由でデータベースが後で再起動される際に、REDO転送やREDO Applyなどの適切なData Guardサービスを開始できます。
-
前のプライマリ・データベースでブロック変更トラッキングが有効になっており、ターゲット・スタンバイがマウントされている場合は、ブローカによって、新しいプライマリ・データベースに対してブロック変更トラッキングが有効化されます。
-
フィジカル・スタンバイ・データベースへのスイッチオーバーを行った場合は新しいスタンバイ・データベース(元のプライマリ・データベース)を再起動すると、REDO Applyが新しいプライマリ・データベースからのREDOデータの適用を開始します。
フィジカル・スタンバイ・データベースへのスイッチオーバーが発生し、前のプライマリ・データベースがOracle Clusterwareによって管理されている場合、ブローカはOracle Clusterwareに新しいフィジカル・スタンバイ・データベースを再起動させます。それ以外の場合は、ブローカが新しいフィジカル・スタンバイ・データベースを再起動します。
再起動後、REDO Applyは新しいプライマリ・データベースからのREDOデータの適用を開始します。
-
新しいプライマリ・データベースが読取り/書込みモードでオープンし、REDO転送サービスが開始します。
リアルタイム問合せが有効な状態で元のフィジカル・スタンバイ・データベースが実行されていた場合、新しいフィジカル・スタンバイ・データベースはリアルタイム問合せが有効な状態で実行されます。
データベースがOracle Clusterwareによって管理されている場合、ブローカはどのPDBもオープンしません。かわりに、Oracle Clusterwareがサービス構成に基づいて特定のインスタンスのPDBをオープンします。データベースがOracle Clusterwareによって管理されていない場合、ブローカは新しいプライマリ・データベースおよびターゲット・スタンバイ・データベースのすべてのPDBをオープンします(リアルタイム問合せが有効な場合)。
ブローカは各データベースの状態とステータスを検証し、スイッチオーバーによって、各データベースが新しいロールにそれぞれ正常に遷移していることを確認します。スイッチオーバー後にブローカにより無効化されていないその他のスタンバイ・データベースは、スイッチオーバー前の状態で引き続き動作します。
万一スイッチオーバー操作が失敗し、プライマリ・データベースがなくなった場合は、スイッチオーバー・コマンドを再試行します。元のプライマリにスイッチ・バックでき、その後、元のターゲット・スタンバイへのスイッチオーバーを再試行するか、スイッチオーバー先として構成内の別のスタンバイを選択できます。詳細は、「Oracle Data Guardのトラブルシューティング」を参照してください。