ロールの推移(Role Transitions)
1 ロールの推移の概要
1.1 ロールの推移の準備
- 各データベースの初期化パラメータが正しく構成されていることを確認する。
- 新たにプライマリ・データベースになるスタンバイ・データベースがARCHIVELOG モードで動作していることを確認する。
- スタンバイ・データベースに存在する一時ファイルが、プライマリ・データベースの一時ファイルと一致することを確認する。
- 新たにプライマリ・データベースになるスタンバイ・データベースで現在有効になっているREDO の適用遅延を解除する。
- RAC構成で、スタンバイ・データベース上の1 つのRAC インスタンスを除いて、構成内のすべてのインスタンスが停止していることを確認する。
2 フィジカル・スタンバイDBのロールの推移
2.1 スイッチオーバー(Switchovers)
スイッチオーバー実行できるかどうかを確認
現行プライマリDBでV$DATABASEを問い合わせる。
SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;
SWITCHOVER_STATUS
-----------------
TO STANDBY
1 row selected
プライマリDBでスイッチオーバーを開始する
SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY;
上記の操作によってプライマリDBはスタンバイDBに変更される。
元のプライマリ・インスタンスを停止して再起動する
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP MOUNT;
スイッチオーバーの状態をV$DATABASEビューで確認する
SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;
SWITCHOVER_STATUS
-----------------
TO_PRIMARY
1 row selected
##blue|ターゲット・フィジカル・スタンバイ・データベース・ロールからプライマリ・ロールに切り替える
SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;
スタンバイ・データベースからプライマリ・ロールへの推移を終了する
フィジカル・スタンバイ・データベースが前回の起動後に読取り専用モードでオープンされていない場合
SQL> ALTER DATABASE OPEN;
フィジカル・スタンバイ・データベースが前回の起動後に読取り専用モードでオープンされている場合
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP;
必要に応じてスタンバイ・データベースでログ適用サービスを再開する
スタンバイ・データベースへのREDO データの送信を開始する
SQL> ALTER SYSTEM SWITCH LOGFILE;
2.2 フェイルオーバー(Failovers)
- すべての場合、フェイルオーバーの完了後、元のプライマリ・データベースはData Guard構成に含まれなくなる。
- ほとんどの場合、フェイルオーバーに直接関与しない他のロジカルまたはフィジカル・スタンバイ・データベースは構成内に残り、停止して再起動する必要ない。
- 新しいプライマリ・データベースを構成した後、すべてのスタンバイ・データベースの再作成が必要な場合がある。
フェイルオーバーの手順
アーカイブREDO ログ・ファイルのギャップを識別して解決する
ターゲット・スタンバイ・データベースでV$ARCHIVE_GAPを問い合わせてギャップが存在するかどうかを確認する。
SQL> SELECT THREAD#, LOW_SEQUENCE#, HIGH_SEQUENCE# FROM V$ARCHIVE_GAP;
THREAD# LOW_SEQUENCE# HIGH_SEQUENCE#
---------- ------------- --------------
1 90 92
可能であれば、欠落が識別されたすべてのアーカイブREDO ログ・ファイルを、プライマリ・データベースからターゲット・スタンバイ・データベースにコピーして登録する。
SQL> ALTER DATABASE REGISTER PHYSICAL LOGFILE 'filespec1';
欠落した他のアーカイブREDO ログ・ファイルをコピーする
欠落したアーカイブREDO ログ・ファイルが他に存在するかどうかを判断するには、ターゲット・スタンバイ・データベースでV$ARCHIVED_LOG ビューを問い合せて、スレッドごとに最
も大きい順序番号を取得する。
SQL> SELECT UNIQUE THREAD# AS THREAD, MAX(SEQUENCE#)
2> OVER (PARTITION BY thread#) AS LAST from V$ARCHIVED_LOG;
THREAD LAST
---------- ----------
1 100
ターゲット・フィジカル・スタンバイ・データベースでフェイルオーバーを開始する
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH FORCE;
FORCE:ターゲット・フィジカル・スタンバイ・データベース上のアクティブなRFS プロセスを終了する。
フィジカル・スタンバイ・データベース・ロールからプライマリ・ロールに変換する
SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;
スタンバイ・データベースからプライマリ・データベース・ロールへの推移を終了する
フィジカル・スタンバイ・データベースが前回の起動後に読取り専用モードでオープンされていない場合
SQL> ALTER DATABASE OPEN;
フィジカル・スタンバイ・データベースが前回の起動後に読取り専用モードでオープンされている場合
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP;
新しいプライマリ・データベースをバックアップする(2次障害防止)
STARTUP 文を発行する前に、新しいプライマリ・データベースのバックアップを作成する。
障害の発生したプライマリ・データベースをリストアする(オプション)
- フラッシュバック・データベースを使用して、障害の発生したプライマリ・データベースをフェイルオーバー発生前の時点までリストアしてからスタンバイ・データベースに変換する。
- 障害の発生したデータベースを再作成し、新規スタンバイ・データベースとして構成に追加する。
- 接続が再確立された時点で、Oracle Enterprise Manager またはDGMGRL のREINSTATE DATABASE コマンドを使用して、障害が発生したプライマリ・データベースを新規構成のスタンバイ・データベースとして再作成する。
page revision: 13, last edited: 18 Nov 2009 14:19