• 検索結果がありません。

フェイルオーバー フェイルオーバー フェイルオーバー フェイルオーバー

7.1 ロールの推移の概要 ロールの推移の概要 ロールの推移の概要 ロールの推移の概要

7.1.4 フェイルオーバー フェイルオーバー フェイルオーバー フェイルオーバー

通常、フェイルオーバーは、プライマリ・データベースが使用不可能になり、適正な時間内に プライマリ・データベースをリストアしてサービスを再開できない場合にのみ使用します。

フェイルオーバー時に実行するアクションは、フェイルオーバーに関与するスタンバイ・デー タベースがロジカルかフィジカルか、フェイルオーバー時のData Guard構成の状態、および フェイルオーバーを開始するために使用する特定のSQL文によって異なります。

図7-4に、サンフランシスコにあるプライマリ・データベースからボストンにあるフィジカル・

スタンバイ・データベースへのフェイルオーバーの結果を示します。

図図

図図 7-4 スタンバイ・データベースへのフェイルオーバースタンバイ・データベースへのフェイルオーバースタンバイ・データベースへのフェイルオーバースタンバイ・データベースへのフェイルオーバー

フェイルオーバーの準備 フェイルオーバーの準備 フェイルオーバーの準備 フェイルオーバーの準備

可能な場合は、フェイルオーバーを実行する前に、使用可能な未適用のプライマリ・データ ベースREDOデータを可能なかぎりスタンバイ・データベースに転送する必要があります。

7-2ページの7.1.1項「ロールの推移(フェイルオーバーまたはスイッチオーバー)の準備」に

示した前提条件が満たされていることを確認します。また、フェイルオーバーの場合は、次の 前提条件が満たされている必要があります。

最大保護モードで実行中のスタンバイ・データベースがフェイルオーバーに関与する場合 は、スタンバイ・データベースで次の文を発行して、データベースを最大パフォーマン ス・モードにします。

SQL> ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE PERFORMANCE;

適切なスタンバイ・データベースが使用できる場合は、フェイルオーバーが完了した後に、

新しいプライマリ・データベースで希望の保護モードをリセットできます。

最大保護モードに設定されているスタンバイ・データベースはフェイルオーバーできない ため、この作業が必要になります。さらに、最大保護モードのプライマリ・データベース がスタンバイ・データベースと通信中の場合は、スタンバイ・データベースを最大保護 モードから最大パフォーマンス・モードに変更するためにALTER DATABASE文を発行し ても失敗します。フェイルオーバーを実行すると元のプライマリ・データベースはData

Guard構成から削除されるため、この機能によって、最大保護モードで実行されているプ

ライマリ・データベースを計画外のフェイルオーバーの影響から保護します。

フィジカル・スタンバイ・データベースが関与するロールの推移

ロールの推移 7-7 フェイルオーバーに成功すると、DB_ROLE_CHANGEシステム・イベントが実行されます(フィ ジカル・スタンバイ・データベースへのフェイルオーバーの場合は、フェイルオーバー操作後 に初めてデータベースがオープンされた時点でシステム・イベントが実行されます)。

V$DATABASEビューのDATABASE_ROLE列を問い合せると、現行のロールを判断できます。こ のシステム・イベントに関連付けるトリガーを記述して、フェイルオーバーの発生後にタスク を管理できます。詳細は、『Oracle Databaseアプリケーション開発者ガイド-基礎編』のシステ ム・マネージャ・イベントの表を参照してください。

フィジカル・スタンバイ・データベースが関与するフェイルオーバーを実行するには、7-10

ページの7.2.2項「フィジカル・スタンバイ・データベースが関与するフェイルオーバー」を参

照してください。ロジカル・スタンバイ・データベースが関与するフェイルオーバーを実行す

るには、7-17ページの7.3.2項「ロジカル・スタンバイ・データベースが関与するフェイルオー

バー」を参照してください。

7.2 フィジカル・スタンバイ・データベースが関与するロールの フィジカル・スタンバイ・データベースが関与するロールの フィジカル・スタンバイ・データベースが関与するロールの フィジカル・スタンバイ・データベースが関与するロールの 推移

推移 推移 推移

この項では、フィジカル・スタンバイ・データベースが関与するスイッチオーバーおよびフェ イルオーバーの実行方法を説明します。

7.2.1 フィジカル・スタンバイ・データベースが関与するスイッチオーバー フィジカル・スタンバイ・データベースが関与するスイッチオーバー フィジカル・スタンバイ・データベースが関与するスイッチオーバー フィジカル・スタンバイ・データベースが関与するスイッチオーバー

この項では、スイッチオーバーの実行方法について説明します。スイッチオーバーは、現行の プライマリ・データベースで開始し、ターゲット・スタンバイ・データベースで完了する必要 があります。次に、スイッチオーバーを実行する手順を説明します。

手順手順

手順手順 1 スイッチオーバーを実行できるかどうかを確認するスイッチオーバーを実行できるかどうかを確認するスイッチオーバーを実行できるかどうかを確認するスイッチオーバーを実行できるかどうかを確認する

スイッチオーバーを実行できるかどうかを確認するには、現行のプライマリ・データベースで V$DATABASE固定ビューのSWITCHOVER_STATUS列を問い合せます。次に例を示します。

SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;

SWITCHOVER_STATUS --- TO STANDBY 1 row selected

SWITCHOVER_STATUS列の値TO STANDBYは、プライマリ・データベースのスタンバイ・

ロールへの切替えが可能であることを示します。値TO STANDBYが表示されない場合は、Data

Guard構成が正常に機能していることを確認してください(たとえば、LOG_ARCHIVE_DEST_

nパラメータのすべての値が正しく指定されていることを確認します)。

SWITCHOVER_STATUS列の値がSESSIONS ACTIVEの場合は、A-5ページのA.4項「スタン バイ・データベースへのスイッチオーバーの問題」で説明する手順を実行して、スイッチオー バーの処理を妨げている可能性のあるアクティブなユーザーまたはSQLセッションを識別して 終了します。これらの手順を実行した後もSWITCHOVER_STATUS列にSESSIONS ACTIVEと 表示される場合は、手順2で説明したALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY文にWITH SESSION SHUTDOWN句を追加することでスイッチオーバー を正常に実行できます。

注意 注意 注意

注意: スタンバイ・データベースが正しく更新されているかどうかをテ ストするために、スタンバイ・データベースにフェイルオーバーしないで ください。かわりに、次のようにします。

3.2.7項「フィジカル・スタンバイ・データベースが正しく実行されて

いるかどうかの確認」を参照してください。

4.2.6項「ロジカル・スタンバイ・データベースが正しく実行されてい

るかどうかの確認」を参照してください。

フィジカル・スタンバイ・データベースが関与するロールの推移

V$DATABASEビューのSWITCHOVER_STATUS列に対するその他の有効な値については、

『Oracle Databaseリファレンス』を参照してください。

手順手順

手順手順 2 プライマリ・データベースでスイッチオーバーを開始するプライマリ・データベースでスイッチオーバーを開始するプライマリ・データベースでスイッチオーバーを開始するプライマリ・データベースでスイッチオーバーを開始する

現行のプライマリ・データベースをフィジカル・スタンバイ・データベース・ロールに変更す るには、プライマリ・データベースで次のSQL文を使用します。

SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY;

この文が完了すると、プライマリ・データベース・ロールはスタンバイ・データベースに変換 されます。現行の制御ファイルは、スイッチオーバーの前にカレントSQLセッション・トレー ス・ファイルにバックアップされます。これによって、必要に応じて現行の制御ファイルを再 作成できるようになります。

手順 手順 手順

手順 3 元のプライマリ・インスタンスを停止して再起動する元のプライマリ・インスタンスを停止して再起動する元のプライマリ・インスタンスを停止して再起動する元のプライマリ・インスタンスを停止して再起動する

元のプライマリ・インスタンスを停止し、データベースを再起動およびマウントします。

SQL> SHUTDOWN IMMEDIATE;

SQL> STARTUP MOUNT;

スイッチオーバー・プロセスのこの時点では、両方のデータベースがスタンバイ・データベー スとして構成されています(図7-2を参照)。

手順手順

手順手順 4 スイッチオーバーの状態をスイッチオーバーの状態をスイッチオーバーの状態をスイッチオーバーの状態をV$DATABASEビューで確認するビューで確認するビューで確認するビューで確認する

プライマリ・データベースをフィジカル・スタンバイ・ロールに変更し、構成内のスタンバ イ・データベースがスイッチオーバー通知を受け取った後、ターゲット・スタンバイ・データ ベースでV$DATABASE固定ビューのSWITCHOVER_STATUS列を問い合せ、ターゲット・スタ ンバイ・データベースがスイッチオーバー通知を処理したかどうかを確認する必要があります。

次に例を示します。

SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;

SWITCHOVER_STATUS --- TO_PRIMARY 1 row selected

SWITCHOVER_STATUS列の値がSESSIONS ACTIVEの場合は、A-5ページのA.4項「スタン バイ・データベースへのスイッチオーバーの問題」で説明する手順を実行して、スイッチオー バーの処理を妨げている可能性のあるアクティブなユーザーまたはSQLセッションを識別して 終了します。これらの手順を実行した後もSWITCHOVER_STATUS列にSESSIONS ACTIVEと 表示される場合は、手順5に進んでスイッチオーバー文にWITH SESSION SHUTDOWN句を追 加できます。V$DATABASEビューのSWITCHOVER_STATUS列に対するその他の有効な値につ

いては、『Oracle Databaseリファレンス』を参照してください。

手順手順

手順手順 5 ターゲット・フィジカル・スタンバイ・データベース・ロールからプライマリ・ロールターゲット・フィジカル・スタンバイ・データベース・ロールからプライマリ・ロールターゲット・フィジカル・スタンバイ・データベース・ロールからプライマリ・ロールターゲット・フィジカル・スタンバイ・データベース・ロールからプライマリ・ロール に切り替える

に切り替える に切り替える に切り替える

フィジカル・スタンバイ・データベースをスタンバイ・ロールからプライマリ・ロールに切り 替えることができるのは、そのスタンバイ・データベースのインスタンスがREDO Applyモー ドでマウントされているか、あるいは読取り専用アクセスのためにオープンされているときで す。フィジカル・スタンバイ・データベースは、いずれかのモードでマウントする必要があり ます。これによって、プライマリ・データベースのスイッチオーバー要求を調整できます。適 切なモードでスタンバイ・データベースをマウントした後、プライマリ・ロールに変更する フィジカル・スタンバイ・データベースで次のSQL文を発行します。

SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;

Outline

関連したドキュメント