フィジカル・スタンバイ・データベースへのスイッチオーバーの実行

これらのステップでは、フィジカル・スタンバイ・データベースへのスイッチオーバーを実行する方法について説明します。

注意:

プライマリ・データベースおよびスタンバイ・データベースに接続する遠隔同期インスタンス(または優先および代替の遠隔同期インスタンスの組合せ)が存在する場合、スタンバイにスイッチオーバーする手順はこのトピックで説明しているものと同じです。遠隔同期インスタンスが使用可能か否かは、スイッチオーバーに影響しません。スイッチオーバー中、プライマリとスタンバイは直接相互に通信し、遠隔同期インスタンスを意識せずにスイッチオーバーのロールの推移ステップを実行できる必要があります。スイッチオーバー後、遠隔同期インスタンスが新しいロールの2つのデータベースにサービスを提供できるように構成を正しく設定する方法の例は、Oracle Data Guard概要および管理の遠隔同期インスタンスの使用方法を参照してください。

  1. ターゲット・スタンバイ・データベースのスイッチオーバーの準備ができていることを確認します。

    新しいスイッチオーバーの文にはVERIFYオプションがあり、スイッチオーバーに必要な多くの条件のチェックが実行されることになります。チェックされる項目の一部は次のとおりです。Redo Applyがスイッチオーバー・ターゲットで実行しているか、スイッチオーバー・ターゲットのリリース・バージョンが12.1以降か、スイッチオーバー・ターゲットが同期しているか、および実行中のMRPがあるかどうか。

    プライマリ・データベースのDB_UNIQUE_NAMEBOSTONで、スイッチオーバー・ターゲット・スタンバイ・データベースのDB_UNIQUE_NAMECHICAGOだとします。プライマリ・データベースBOSTONで、次のSQL文を発行し、スイッチオーバー・ターゲットCHICAGOのスイッチオーバーの準備ができていることを確認します。

    SQL> ALTER DATABASE SWITCHOVER TO CHICAGO VERIFY;
    ERROR at line 1:
    ORA-16470: Redo Apply is not running on switchover target
    

    この操作が正常に実行されると、「データベースが変更されました。」というメッセージが返されますが、この例ではORA-16470エラーが返されます。このエラーは、スイッチオーバー・ターゲットCHICAGO のスイッチオーバーの準備ができていないことを意味します。スイッチオーバー操作の前にREDO Applyを開始する必要があります。

    REDO Applyを開始した後で、次の文を再度発行します。

    SQL> ALTER DATABASE SWITCHOVER TO CHICAGO VERIFY;
    ERROR at line 1:
    ORA-16475: succeeded with warnings, check alert log for more details
    

    スイッチオーバー・ターゲットCHICAGOはスイッチオーバーの準備ができています。しかし、ORA-16475エラーで示された警告は、スイッチオーバーのパフォーマンスに影響を与える可能性があります。アラート・ログには次のようなメッセージが含まれます。

    SWITCHOVER VERIFY WARNING: switchover target has dirty online redo logfiles that require clearing. It takes time to clear online redo logfiles. This may slow down switchover process.
    

    問題を解決できる場合、またはスイッチオーバーのパフォーマンスが重要ではない場合は、これらの警告を無視できます。必要だと判断した解決を行った後で、次のSQL文を再度発行します。

    SQL> ALTER DATABASE SWITCHOVER TO CHICAGO VERIFY;
    Database altered.
    

    スイッチオーバー・ターゲットCHICAGOのスイッチオーバーの準備ができました。

  2. 次のSQL文を発行して、プライマリ・データベースBOSTONでスイッチオーバーを開始します。
    SQL> ALTER DATABASE SWITCHOVER TO CHICAGO;
    Database altered.
    

    この文がエラーなしに終了した場合は、ステップ3に進みます。

    エラーが発生したら、古いプライマリ・データベース(BOSTON)および古いスタンバイ・データベース(CHICAGO)をマウントします。両方のデータベースで、V$DATABASEDATABASE_ROLEを問い合せます。BOSTONCHICAGOのデータベース・ロールで考えられる組合せは3つあります。次の表で、その組合せを説明し、推定される原因と、それぞれの状況に対する高レベルの修正処置を示します。特定のエラー状況の詳細は、Oracle Data Guard概要および管理のOracle Data Guardのトラブルシューティングを参照してください。

    V$DATABASEのDATABASE_ROLE列の値 原因と修正処置

    BOSTONデータベースがプライマリ、CHICAGOデータベースがスタンバイ

    原因: BOSTONデータベースがスタンバイ・データベース・ロールへの変換に失敗しました。

    処置: BOSTONのスタンバイ・ロールへの切替えを妨げているエラーの詳細についてアラート・ログを参照し、エラーを解決するために必要な処置をとり、必要であればBOSTONのいずれかのノードを再度オープンし、スイッチオーバー・プロセスをステップ1から繰り返します。

    BOSTONデータベースがスタンバイ、CHICAGOデータベースもスタンバイ

    原因: CHICAGOデータベースがプライマリ・データベース・ロールへの変換に失敗しました。

    処置: 次のSQL文を発行して、BOSTONまたはCHICAGOのいずれかをプライマリ・データベースに変換します。

    SQL> ALTER DATABASE SWITCHOVER TO target_db_name
    FORCE;

    次に例を示します。

    • CHICAGOデータベースで、次のSQL文を発行し、プライマリ・データベースに変換します。

      ALTER DATABASE SWITCHOVER TO CHICAGO FORCE;
      
    • BOSTONデータベースで、次のSQL文を発行し、プライマリ・データベースに変換します。

      ALTER DATABASE SWITCHOVER TO BOSTON FORCE;

    SQL文がORA-16473エラーで失敗した場合、コマンドを再度発行する前にREDO Applyを開始する必要があります。

    次のようにREDO Applyを再開します。

    SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT;

    次のように、スイッチオーバー・コマンドを再度発行します。

    SQL> ALTER DATABASE SWTICHOVER TO BOSTON FORCE;
    Database altered.

    BOSTONデータベースがスタンバイ、CHICAGOデータベースがプライマリ

    原因: BOSTONおよびCHICAGOデータベースは新しいロールに正常に切り替わりましたが、最終的な成功のステータスのBOSTONへの送信時にエラーが発生しました。

    処置: ステップ3を続行してスイッチオーバー操作を終了します。

  3. 次のSQL文を新しいプライマリ・データベースCHICAGOで発行して、開きます。
    SQL> ALTER DATABASE OPEN;
    
  4. 次のSQL文を発行して、新しいフィジカル・スタンバイ・データベースBOSTONをマウントします:
    SQL> STARTUP MOUNT;
    

    または、BOSTONがOracle Active Data Guardのフィジカル・スタンバイ・データベースである場合、次のSQL文を発行して読取り専用で開きます。

    SQL> STARTUP;
    
  5. 新しいフィジカル・スタンバイ・データベースでREDO Applyを開始します。次に例を示します。
    SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;