ロールの推移(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 コマンドを使用して、障害が発生したプライマリ・データベースを新規構成のスタンバイ・データベースとして再作成する。
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License