SWITCHOVER
SWITCHOVER
関数を使用すると、データベース・スイッチオーバーを実行できます。
SWITCHOVER
関数
DBMS_DG.SWITCHOVER (
db_name IN VARCHAR2,
severity OUT BINARY_INTEGER)
RETURN BINARY_INTEGER;
パラメータ
パラメータ | 説明 |
---|---|
db_name |
スイッチオーバー先のスタンバイ・データベースのDB_UNIQUE_NAME 初期化パラメータ値。
|
severity |
この関数によって返されたステータスに関連付けられている重大度。重大度は、次のOracleエラー番号のいずれかになります。
|
使用上のノート
-
この関数では、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でスイッチオーバーを完了できませんでした。戻り値で、この失敗の理由が示されます。 |