G 古い構文を使用したロールの推移の実行
Oracle Database 12cリリース1 (12.1)より前は、フィジカル・スタンバイ・データベースへのスイッチオーバーおよびフェイルオーバーを実行するプロシージャは異なっていました。
これらのプロシージャは引き続きサポートされていますが、「フィジカル・スタンバイ・データベースが関与するロールの推移」で説明している新しいプロシージャを使用することをお薦めします。
Oracle Database 12cリリース1 (12.1)よりも前のリリースを使用している場合、古いプロシージャを使用する必要があります。
次の内容について説明します。
G.1 フィジカル・スタンバイが関与するロールの推移のSQL構文
Oracle Database 12cリリース1 (12.1)では、フィジカル・スタンバイ・データベースへのスイッチオーバーおよびフェイルオーバー操作の実行のために新しいSQL構文が導入されています。
Oracle Database 12cリリース1 (12.1)では、フィジカル・スタンバイ・データベースへのスイッチオーバーおよびフェイルオーバー操作の実行のために新しいSQL構文が導入されています。特別な指示がないかぎり、古いプロシージャ(この付録で説明)の構文と新しいプロシージャ(「ロールの推移」で説明)の構文を混在させないでください。
12cより前のフィジカル・スタンバイ・データベースに対するロールの推移の構文 | 12cのフィジカル・スタンバイ・データベースに対するロールの推移の構文 |
---|---|
フィジカル・スタンバイ・データベースにスイッチオーバーするには、プライマリ・データベースで次の手順を実行します。
フィジカル・スタンバイ・データベースで次の手順を実行します。
|
フィジカル・スタンバイ・データベースにスイッチオーバーするには:
|
フィジカル・スタンバイ・データベースにフェイルオーバーするには(「古い構文を使用したフィジカル・スタンバイ・データベースへのフェイルオーバーの実行」のステップ6およびステップ8):
AND
|
フィジカル・スタンバイ・データベースにフェイルオーバーするには、以前必要だった2つの文のかわりに次の文を使用します。
|
関連項目:
-
SQL構文の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。
G.1.1 古い構文を使用する場合の新しい機能
Oracle Database 12cリリース1 (12.1)から、アクティブなSQLセッションを終了するときにWITH SESSION SHUTDOWN
句は不要になりました。
次の文を発行してアクティブなSQLセッションを自動的に終了できます。
SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY;
さらに、Oracle RACプライマリ・データベースからフィジカル・スタンバイ・データベースにスイッチオーバーを実行する場合、1つを残してすべてのプライマリ・データベース・インスタンスを停止する必要はなくなりました。スイッチオーバーの完了後、すべてのインスタンスは自動的に停止します。
G.2 フィジカル・スタンバイ・データベースが関与するロールの推移
Oracle Databaseリリース12cリリース1 (12.1)よりも前のリリースでは、フィジカル・スタンバイ・データベースへのスイッチオーバーおよびフェイルオーバーを実行するSQL構文が異なっていました。
次に示すのは、12.1より前のリリースを実行している場合に使用する必要のあるプロシージャです。
関連項目:
スイッチオーバーおよびフェイルオーバーの準備方法の詳細は「ロールの推移」を参照してください。
G.2.1 古い構文を使用したフィジカル・スタンバイ・データベースへのスイッチオーバーの実行
スイッチオーバーはプライマリ・データベースで開始され、ターゲット・スタンバイ・データベースで完了します。
このトピックでは、フィジカル・スタンバイ・データベースへのスイッチオーバーを実行する方法について説明します。
G.3 フィジカル・スタンバイ・データベースへのスイッチオーバーのトラブルシューティング
フィジカル・スタンバイ・データベースへのスイッチオーバー時に発生する可能性がある問題の一部を次に示します。
ノート:
次のトラブルシューティングの各項は、Oracle Database 12cリリース1 (12.1)よりも前のリリースで使用可能なプロシージャを使用した、フィジカル・スタンバイ・データベースへのスイッチオーバーおよびフェイルオーバーを実行する場合にのみ該当します。
G.3.1 REDOデータが転送されていないためスイッチオーバーできない
スイッチオーバーが正常に完了しない場合は、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に関連するビュー」を参照してください。
スイッチオーバーを続行するには、「古い構文を使用したフィジカル・スタンバイ・データベースへのスイッチオーバーの実行」の指示に従い、ターゲット・スタンバイ・データベースをプライマリ・ロールへのスイッチを再試行します。
G.3.2 ORA-01102エラーによりスイッチオーバーできない
ORA-01102エラーが表示された場合に考えられる原因の一部と解決策を次に示します。
スタンバイ・データベースとプライマリ・データベースが同じサイトに存在するとします。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
をスタンバイ・データベースが使用する初期化パラメータ・ファイルに追加して、スタンバイ・データベースとプライマリ・データベースを停止し、再起動します。
G.3.3 スイッチオーバー後にREDOデータが適用されない
スイッチオーバー後にアーカイブ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
初期化パラメータを設定する必要があります。 -
スタンバイ・サイトで
LOG_ARCHIVE_FORMAT
初期化パラメータが正しく設定されていることを確認します。 -
スタンバイ・サイトで
DB_FILE_NAME_CONVERT
初期化パラメータおよびLOG_FILE_NAME_CONVERT
初期化パラメータを設定します。プライマリ・サイトで作成された新しいデータファイルがスタンバイ・サイトに自動的に追加されるようにするには、STANDBY_FILE_MANAGEMENT
初期化パラメータをAUTO
に設定します。