Oracle Database 12cリリース1 (12.1)より前は、フィジカル・スタンバイ・データベースへのスイッチオーバーおよびフェイルオーバーを実行するプロシージャは異なっていました。これらのプロシージャは引き続きサポートされていますが、「フィジカル・スタンバイ・データベースが関与するロールの推移」で説明している新しいプロシージャを使用することをお薦めします。
Oracle Database 12cリリース1 (12.1)よりも前のリリースを使用している場合、古いプロシージャを使用する必要があります。
次の内容について説明します。
Oracle Database 12cリリース1 (12.1)では、フィジカル・スタンバイ・データベースへのスイッチオーバーおよびフェイルオーバー操作の実行のために新しいSQL構文が導入されています。特別な指示がないかぎり、古いプロシージャ(この付録で説明)の構文と新しいプロシージャ(「ロールの推移」で説明)の構文を混在させないでください。
12cより前のフィジカル・スタンバイ・データベースに対するロールの推移の構文 | 12cのフィジカル・スタンバイ・データベースに対するロールの推移の構文 |
---|---|
フィジカル・スタンバイ・データベースにスイッチオーバーするには、プライマリ・データベースで次の手順を実行します。
フィジカル・スタンバイ・データベースで次の手順を実行します。
|
フィジカル・スタンバイ・データベースにスイッチオーバーするには、次の手順を実行します。
|
フィジカル・スタンバイ・データベースにフェイルオーバーするには(「古い構文を使用したフィジカル・スタンバイ・データベースへのフェイルオーバーの実行」の手順6および手順8):
および
|
フィジカル・スタンバイ・データベースにフェイルオーバーするには、以前必要だった2つの文のかわりに次の文を使用します。
|
関連項目:
SQL構文の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。
Oracle Database 12cリリース1 (12.1)現在、WITH SESSION SHUTDOWN
句を含む必要なく次の文を発行できます。
SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY;
この文により、アクティブなSQLセッションが自動的に強制終了します。WITH SESSION SHUTDOWN
句はアクティブなSQLセッションを強制終了するのに必要なくなりました。
さらに、Oracle RACプライマリ・データベースからフィジカル・スタンバイ・データベースにスイッチオーバーを実行する場合、1つを残してすべてのプライマリ・データベース・インスタンスを停止する必要はなくなりました。スイッチオーバーの完了後、すべてのインスタンスは自動的に停止します。
次の項では、Oracle Database 12cリリース1 (12.1)よりも前のリリースで配備されたSQL構文を使用した、フィジカル・スタンバイ・データベースへのスイッチオーバーおよびフェイルオーバーの実行方法について説明します。
これらは12.1より前のリリースを実行している場合に使用する必要のあるプロシージャです。
関連項目:
スイッチオーバーおよびフェイルオーバーの準備方法の詳細は「ロールの推移」を参照してください。
この項では、フィジカル・スタンバイ・データベースへのスイッチオーバーを実行する方法について説明します。スイッチオーバーはプライマリ・データベースで開始され、ターゲット・スタンバイ・データベースで完了します。
スイッチオーバーが失敗した場合、次の項を読むと、問題の解決に役立ちます。
注意:
次のトラブルシューティングの各項は、Oracle Database 12cリリース1 (12.1)よりも前のリリースで使用可能なプロシージャを使用した、フィジカル・スタンバイ・データベースへのスイッチオーバーおよびフェイルオーバーを実行する場合にのみ該当します。
スイッチオーバーが正常に完了しない場合は、V$ARCHIVED_LOG
ビューのSEQUENCE#
列の問合せを行い、元のプライマリ・データベースから転送された最新のREDOデータが、スタンバイ・データベースに適用されていることを確認してください。最後のREDOデータがスタンバイ・データベースに転送されていない場合は、そのREDOデータが含まれるアーカイブREDOログ・ファイルを元のプライマリ・データベースから古いスタンバイ・データベースに手動でコピーし、SQL ALTER DATABASE REGISTER LOGFILE
file_specification文を使用して登録します。次に適用サービスを開始すると、アーカイブREDOログ・ファイルが自動的に適用されます。V$DATABASE
ビューのSWITCHOVER_STATUS
列を問い合せます。SWITCHOVER_STATUS
列からTO PRIMARY
またはSESSIONS ACTIVE
が戻されると、プライマリ・ロールへのスイッチオーバーが可能になります。
SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE; SWITCHOVER_STATUS ----------------- TO PRIMARY 1 row selected
V$DATABASE
ビューのSWITCHO
VER_STATUS
列に対するその他の有効な値の詳細は、「Oracle Data Guardに関連するビュー」を参照してください。
スイッチオーバーを続行するには、「古い構文を使用したフィジカル・スタンバイ・データベースへのスイッチオーバーの実行」の指示に従い、ターゲット・スタンバイ・データベースをプライマリ・ロールへのスイッチを再試行します。
スタンバイ・データベースとプライマリ・データベースが同じサイトに存在するとします。ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL
STANDBY
文およびALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY
文の両方が正常に実行された後、フィジカル・スタンバイ・データベースとプライマリ・データベースを停止し、再起動します。
注意:
フィジカル・スタンバイ・データベースが起動後に読取り専用モードでオープンされていない場合、停止して再起動する必要はありません。
ただし、2番目のデータベースの起動は、ORA-01102「データベースを排他モードでマウントすることができません。」
エラーで失敗します。
スタンバイ・データベース(元のプライマリ・データベース)で使用される初期化パラメータ・ファイルにDB_UNIQUE_NAME
パラメータを設定していないと、スイッチオーバー中にこの現象が発生することがあります。スタンバイ・データベースのDB_UNIQUE_NAME
パラメータが設定されていない場合、スタンバイ・データベースとプライマリ・データベースの両方が同じマウント・ロックを使用するため、2つ目のデータベースの起動時にORA-01102エラーが発生します。
処置: DB_UNIQUE_NAME=
unique_database_name
をスタンバイ・データベースが使用する初期化パラメータ・ファイルに追加して、スタンバイ・データベースとプライマリ・データベースを停止し、再起動します。
スイッチオーバー後にアーカイブREDOログ・ファイルが新しいスタンバイ・データベースに適用されません。
これは、スイッチオーバー後、環境パラメータまたは初期化パラメータが適切に設定されていなかったことが原因と考えられます。
処置:
新しいプライマリ・サイトのtnsnames.ora
ファイルおよび新しいスタンバイ・サイトのlistener.ora
ファイルを調べます。スタンバイ・サイトにはリスナーのエントリ、プライマリ・サイトにはそれに対応するサービス名が必要です。
リスナーがまだ起動されていない場合は、スタンバイ・サイトで起動します。
プライマリ・サイトからスタンバイ・サイトにREDOデータを正しく転送するための、LOG_ARCHIVE_DEST_
n
初期化パラメータが設定されているかどうかを調べます。たとえば、プライマリ・サイトでV$ARCHIVE_DEST
固定ビューを次のように問い合せます。
SQL> SELECT DEST_ID, STATUS, DESTINATION FROM V$ARCHIVE_DEST;
スタンバイ・サイトに対応するエントリが見つからない場合、LOG_ARCHIVE_DEST_
n
初期化パラメータおよびLOG_ARCHIVE_DEST_STATE_
n
初期化パラメータを設定する必要があります。
スタンバイ・サイトにSTANDBY_ARCHIVE_DEST
初期化パラメータおよびLOG_ARCHIVE_FORMAT
初期化パラメータを正しく設定し、アーカイブREDOログ・ファイルが適切な場所に適用されるようにします。(STANDBY_ARCHIVE_DEST
パラメータは非推奨であり、下位互換性のためにのみサポートされています。)
スタンバイ・サイトで DB_FILE_NAME_CONVERT
初期化パラメータおよび LOG_FILE_NAME_CONVERT
初期化パラメータを設定します。プライマリ・サイトで作成された新しいデータファイルがスタンバイ・サイトに自動的に追加されるようにするには、STANDBY_FILE_MANAGEMENT
初期化パラメータをAUTO
に設定します。