FAILOVER

FAILOVER関数を使用すると、データベース・フェイルオーバーを実行できます。

FAILOVER関数

DBMS_DG.FAILOVER (
     db_name              IN VARCHAR2,
     failover_type,       IN VARCHAR2,
     severity             OUT BINARY_INTEGER)
RETURN BINARY_INTEGER;

パラメータ

パラメータ 説明
db_name フェイルオーバー先のスタンバイ・データベースのDB_UNIQUE_NAME初期化パラメータ値。
failover_type 実行するフェイルオーバーのタイプ。指定可能なキーワード:
  • COMPLETE: 完全フェイルオーバー。この場合は、フェイルオーバー操作の実行前に、ターゲット・スタンバイ・データベースによって、プライマリ・データベースから受信したREDOデータがすべて適用されます。
  • IMMEDIATE: 未適用のREDOデータが先に適用されることなく、フェイルオーバー操作がすぐに実行されます。このオプションを使用すると、データ消失を伴うフェイルオーバー操作となる可能性が高くなります。
severity この関数によって返されたステータスに関連付けられている重大度。重大度は、次のOracleエラー番号のいずれかになります。
  • ORA-0: 正常に完了しました。
  • ORA-16501: Oracle Data Guard Broker操作に失敗しました
  • ORA-16502: Oracle Data Guard Broker操作は警告付きで成功しました

使用上のノート

  • この関数では、2進整数が返されます。

  • ORA-752またはORA-600 [3020] エラーにより、フェイルオーバー・ターゲットでREDO Applyが停止されていないかぎり、常に完全フェイルオーバーを最初に実行するようにします。これらのエラーのいずれかが発生した場合は、先に進む前に、My Oracle Supportノート1265884.1 (http://support.oracle.com)の「スタンバイ・リカバリ時のORA-752またはORA-600 [3020]の解決」のガイドラインに従ってください。即時フェイルオーバーは、完全フェイルオーバーが失敗するか、前述のエラーの場合にのみ実行してください。
  • 指定したスタンバイ・データベースは、プライマリ・データベースに障害が発生する前に有効化されている必要があります。ただし、有効化されているスタンバイ・データベースが停止している場合は、フェイルオーバー操作の候補とみなすことができます。この場合は、スタンバイ・データベースを再起動してから、このコールを再試行してください。
  • この関数をコールする前に、新しいプライマリ・データベースとなるスタンバイ・データベースに接続していることを確認してください。必要な場合は、CONNECTコマンドを発行してフェイルオーバーするスタンバイ・データベースに接続します。
  • ブローカ構成が最大保護モードで動作している場合、手動フェイルオーバー操作を実行すると、保護モードが強制的に最大パフォーマンスに設定されます。REDO転送サービスの設定は影響を受けません。フェイルオーバー操作後に、構成に必要な保護モードをリストアする必要があります。

    ノート:

    ファスト・スタート・フェイルオーバーの場合は、ブローカにより、フェイルオーバー前に有効になっていた保護モードが維持されます。
  • failover_typeキーワードのIMMEDIATEを指定してこの関数をコールした場合は、受信した未適用のREDOが適用されることはありません。このオプションを指定すると、スタンバイ・データベースでスタンバイREDOログ・ファイルが構成されている場合でも、アプリケーション・データが消失する可能性があります。また、構成内の他のスタンバイ・データベースは、回復または再作成されるまで機能しません。詳細は、「ロール変更後の無効化されたデータベースの再有効化」を参照してください。ファスト・スタート・フェイルオーバーを有効にした後は、「ファスト・スタート・フェイルオーバーが有効化されている場合の制限事項」で示されている制約に従う必要があります。
  • 手動フェイルオーバーを実行するか、ブローカをファスト・スタート・フェイルオーバーを実行するように設定できます。フェイルオーバーの条件が満たされた場合に、ブローカにより自動的にフェイルオーバーを起動させる方法については、ENABLE FAST_START FAILOVERコマンドを参照してください。
  • ファスト・スタート・フェイルオーバーが有効になっている場合は、完全手動フェイルオーバーを、ファスト・スタート・フェイルオーバーのターゲット・スタンバイ・データベースに対してのみ、そのスタンバイ・データベースがプライマリ・データベースと同期化されているかプライマリ・データベースのラグ制限内である場合にのみ、およびオブザーバーが開始されている場合にのみ実行できます。ファスト・スタート・フェイルオーバーが有効になっている場合に、即時手動フェイルオーバーは実行できません。障害が発生した元のプライマリ・データベースで、フェイルオーバーの前に「データベースをフラッシュバック」が有効になっていた場合は、ブローカのREINSTATEコマンドを使用して、元のプライマリ・データベースを回復できます。フィジカル・スタンバイ・データベースに対してフェイルオーバーが実行された場合は、そのスタンバイ・データベースで「データベースをフラッシュバック」が有効化されていて、使用可能なフラッシュバック・ログ情報が不足なくある場合にのみ、そのフェイルオーバーにより無効化されたその他のフィジカル・スタンバイ・データベースも回復できます。
  • 元のプライマリ・データベースは、回復または再作成後、スタンバイ・データベースとしてのみ構成に関係できます。注意: フェイルオーバーの前に、元のプライマリ・データベースに実行中のアクティブなインスタンスがまだ存在している場合は、元のプライマリ・データベースを停止する必要があります。
エラー 説明
ORA-00000: 正常に完了しました。

フェイルオーバーが正常に完了しました。

その他

Data Guard Brokerでこのフェイルオーバー操作を完了できませんでした。戻り値で、この失敗の理由が示されます。