SWITCHOVER

SWITCHOVER関数を使用すると、データベース・スイッチオーバーを実行できます。

SWITCHOVER関数

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

パラメータ

パラメータ 説明
db_name スイッチオーバー先のスタンバイ・データベースのDB_UNIQUE_NAME初期化パラメータ値。
severity この関数によって返されたステータスに関連付けられている重大度。重大度は、次のOracleエラー番号のいずれかになります。
  • ORA-0: 正常に完了しました。
  • ORA-16501: Oracle Data Guard Broker操作に失敗しました
  • ORA-16502: Oracle Data Guard Broker操作は警告付きで成功しました

使用上のノート

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

  • ファスト・スタート・フェイルオーバーが有効な場合は、ファスト・スタート・フェイルオーバーのターゲット・スタンバイ・データベースへのスイッチオーバーのみ実行できます。
  • スイッチオーバーの起動前に、ブローカによって、プライマリ・データベースおよびスタンバイ・データベースが次の状態であることが検証されます。
    • REDO転送サービスが起動するように、プライマリ・データベースが有効化され、TRANSPORT-ON状態になっている必要があります。
    • スタンバイ・データベースが有効化され、TRANSPORT-ON状態になっており、ログ適用サービスが起動している必要があります。
  • ブローカは、スイッチオーバーに関係するように選択したスタンバイ・データベースにREDO転送サービスのエラーがないかぎり、スイッチオーバーを続行します。その他のスタンバイ・データベースにエラーが発生しても、スイッチオーバーの続行には影響しません。
  • ロジカル・スタンバイ・データベースへのスイッチオーバーは、構成が最大保護モードで動作している場合には許可されません。
  • ブローカ構成が最大保護モードまたは最大可用性モードで動作している場合、スイッチオーバーの操作後も同じ保護モードが維持されます(「スイッチオーバー操作実行前の考慮事項」を参照)。スイッチオーバーのターゲットとなるスタンバイ・データベースが保護モード要件を満たす唯一のスタンバイであったためにモードを維持できない場合、スイッチオーバーは許可されません。
  • プライマリ・ロールを引き継ぐスタンバイ・データベースがフィジカル・スタンバイ・データベースの場合は、スイッチオーバーの完了後に、元のプライマリ・データベースが再起動されます。スタンバイ・データベースがロジカル・スタンバイ・データベースの場合は、プライマリ・データベースもロジカル・スタンバイ・データベースも再起動されません。
  • プライマリ・ロールを引き継ぐスタンバイ・データベースがフィジカル・スタンバイ・データベースの場合、元のプライマリ・データベースはフィジカル・スタンバイ・データベースとなります。
  • プライマリ・ロールを引き継ぐスタンバイ・データベースがロジカル・スタンバイ・データベースの場合、元のプライマリ・データベースはロジカル・スタンバイ・データベースとなります。
  • Oracle RACプライマリ・データベースがフィジカル・スタンバイ・データベースになる場合、スイッチオーバーを実行する前に、プライマリ・データベース上のインスタンスのうち1つを残してそれ以外はすべては停止されます。詳細は、「スイッチオーバー」を参照してください。
  • スナップショット・スタンバイ・データベースにスイッチオーバーすることはできません。
  • プライマリ・ロールを引き継ぐスタンバイ・データベースがロジカル・スタンバイ・データベースで、構成にフィジカル・スタンバイ・データベースが含まれている場合、スイッチオーバー後、フィジカル・スタンバイ・データベースは無効化されます。

    注意: このため、通常は、スイッチオーバーにはロジカル・スタンバイ・データベースではなくフィジカル・スタンバイ・データベースを指定することをお薦めします。ロジカル・スタンバイ・データベースへのスイッチオーバーが必要な場合、フィジカル・スタンバイ・データベースを再作成する方法については、「ロール変更後の無効化されたデータベースの再有効化」を参照してください。

    比較的すぐに元のプライマリ・データベースにスイッチバックする場合は、フィジカルおよびスナップショット・スタンバイ・データベースを無効なままにしておくことができます。フィジカルおよびスナップショット・スタンバイ・データベースはまだ元のプライマリ・データベースの実行可能なスタンバイ・データベースであるため、元のプライマリ・データベースへのスイッチバックの完了後、これらを再有効化できます。

エラー 説明
ORA-00000: 正常に完了しました。

スイッチオーバーが正常に完了しました。

ORA-16540: 引数が無効です。 このデータベースについて指定された名前が、有効なDB_UNIQUE_NAME値ではありませんでした。
ORA-16600: ターゲット・スタンバイ・データベースに接続していません この関数は、プライマリ・データベースに接続されているときはコールできません。この関数は、ターゲット・スタンバイ・データベースに接続されている間にコールしてください。
ORA-16732: Oracle Clusterwareはデータベース・インスタンスを再起動しています Oracle Clusterwareで、ブローカに必要とされているモードになるよう、このデータベースを再起動中です。データベースが再起動された後に、この関数のコールを再試行してください。
ORA-16897: データベースをマウント・モードで起動してください スイッチオーバーが正常に完了しました。クライアントで、前のプライマリ・データベースを再起動してマウント・モードにする必要があります。
ORA-16897: データベースをオープン・モードで起動します スイッチオーバーが正常に完了しました。クライアントで、前のプライマリ・データベースを再起動してオープン・モードにする必要があります。
その他

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