この章では、REDOデータをスタンバイ・データベースに適用する方法について説明します。次のトピックが含まれています。
適用サービスは、スタンバイ・データベースにREDOを自動的に適用して、プライマリ・データベースとの同期を維持します。また、データに対するトランザクションの一貫性のあるアクセスを可能にします。
デフォルト設定では、適用サービスはスタンバイREDOログ・ファイルのアーカイブ保存が終了するまで待って、制約のあるREDOを適用します。ただし、リアルタイムでの適用を有効化しておくと、書込みと同時に、現行のスタンバイREDOログ・ファイルにREDOを適用することができます。リアルタイムの適用については、7.2.1項で詳しく説明しています。
適用サービスは、次の方法でフィジカル・スタンバイ・データベースとロジカル・スタンバイ・データベースをメンテナンスします。
SQL Apply(ロジカル・スタンバイ・データベースのみ)
プライマリ・データベースから受信したREDOに基づいてSQL文を再構成し、そのSQL文をロジカル・スタンバイ・データベースに対して実行します。
この章の各項では、REDO Apply、SQL Apply、リアルタイム適用および適用の遅延について詳細に説明します。
この項は、次の項目で構成されています。
リアルタイムでの適用機能を有効化すると、現行のスタンバイREDOログ・ファイルのアーカイブ保存を待たずに、適用サービスによって受信したREDOデータを適用することができます。この方法ではフェイルオーバーまたはスイッチオーバーが開始するまでに、スタンバイREDOログ・ファイルがスタンバイ・データベースに適用されているので、これによりスイッチオーバーとフェイルオーバーの速度が向上します。
次のように、ALTER DATABASE
文を使用して、リアルタイム適用機能を使用可能にします。
フィジカル・スタンバイ・データベースの場合は、ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE
文を発行します。
ロジカル・スタンバイ・データベースの場合は、ALTER DATABASE START LOGICAL STANDBY APPLY IMMEDIATE
文を発行します。
リアルタイムの適用には、スタンバイREDOログを使用して構成された、ARCHIVELOGモードのスタンバイ・データベースが必要です。
図7-1に、ローカル宛先とスタンバイ宛先があるData Guard構成を示します。リモート・ファイル・サーバー(RFS)プロセスは、スタンバイ・データベース上のスタンバイREDOログ・ファイルにREDOデータを書き込むため、適用サービスでは、いっぱいになったときにスタンバイREDOログ・ファイルからREDOをリカバリできます。
プライマリ・サイトからREDOデータを受信した後、そのREDOデータをスタンバイ・データベースに適用するまでの間にタイム・ラグを作成することが必要な場合があります。時間間隔(分単位)を指定すると、破損したデータや誤ったデータがスタンバイ・サイトに適用されるのを防止できます。DELAY
間隔を設定すると、スタンバイ・データベースへのREDOデータの転送が遅延することはありません。かわりに、指定したタイム・ラグは、REDOデータがスタンバイ宛先で完全にアーカイブされたときに開始します。
注意: リアルタイム適用が使用可能になっている宛先に遅延を定義すると、その遅延は無視されます。 |
遅延時間の指定
LOG_ARCHIVE_DEST_
n
初期化パラメータのDE
LAY=
minutes
属性を使用してプライマリ・データベースとスタンバイ・データベースで遅延時間を設定し、スタンバイ・データベースへのアーカイブREDOログ・ファイルの適用を遅延させることができます。デフォルトでは、遅延時間は発生しません。値を指定せずにDELAY
属性を指定すると、デフォルトの遅延間隔は30分になります。
次のように、指定した遅延間隔を取り消すことができます。
フィジカル・スタンバイ・データベースで、RECOVER MANAGED STANDBY DATABASE
句のNODELAY
キーワードを使用します。
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE NODELAY;
ロジカル・スタンバイ・データベースで、次のSQLコマンドを指定します。
SQL> ALTER DATABASE START LOGICAL STANDBY APPLY NODELAY;
これらのコマンドにより、時間間隔が経過する前に、適用サービスで、スタンバイ・データベースへのアーカイブREDOログ・ファイルの適用が即時に開始されます。
適用遅延を設定するかわりにフラッシュバック・データベースを使用して、スタンバイ・データベースへの破損データやエラー・データの適用からリカバリできます。フラッシュバック・データベースを使用すると、スタンバイ・データベースを任意の時点まで、すばやく容易にフラッシュバックできます。
データベースのフラッシュバックでのData Guardの使用方法を示すシナリオは第13章を参照してください。フラッシュバック・データベースの有効化と使用の詳細は、『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』
デフォルトでは、アーカイブREDOログ・ファイルからのREDOデータが適用されます。REDO Applyを実行している場合、フィジカル・スタンバイ・データベースはリアルタイム機能を使用して、スタンバイREDOログ・ファイルがRFSプロセスによって書き込まれているときに、スタンバイREDOログ・ファイルから直接REDOを適用できます。
この項は、次の項目で構成されています。
フィジカル・スタンバイ・データベースで適用サービスを開始するには、フィジカル・スタンバイ・データベースが起動されマウントされていることを確認してから、SQL ALTER DATABASE RECOVER MANAGED STANDBY DATABASE
文を使用してREDO Applyを開始します。
REDO Applyをフォアグラウンド・セッションまたはバックグラウンド・プロセスとして動作するように指定し、リアルタイム適用で使用可能にすることができます。
REDO Applyをフォアグラウンドで開始するには、次のSQL文を発行します。
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE;
フォアグラウンド・セッションを開始すると、別のセッションでリカバリが取り消されるまで、制御がコマンド・プロンプトに戻りません。
REDO Applyをバックグラウンドで開始するには、このSQL文にDISCONNECT
キーワードを挿入します。次に例を示します。
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT;
この文によって、分離されたサーバー・プロセスが起動し、即時に制御がユーザーに戻されます。管理リカバリ・プロセスがバックグラウンドでリカバリを実行している間、RECOVER
文を発行したフォアグラウンド・プロセスは、他のタスクの実行を継続できます。これによって、カレントSQLセッションが切断されることはありません。
リアルタイム適用を開始するには、SQL文にUSING CURRENT LOGFILE
句を含めます。次に例を示します。
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE;
REDO Applyを停止するには、次のSQL文を発行します。
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
フィジカル・スタンバイ・データベースで適用サービスのステータスを監視するには、9.5.1項を参照してください。スタンバイ・データベースは、Oracle Enterprise Managerを使用して監視することもできます。ビューの参照情報の詳細は、『Oracle Databaseリファレンス』も参照してください。
SQL Applyは、アーカイブREDOログまたはスタンバイREDOログのデータをSQL文に変換してから、そのSQL文をロジカル・スタンバイ・データベースで実行します。ロジカル・スタンバイ・データベースはオープン状態のままであるため、メンテナンスされる表は、レポート生成、要約、問合せなどの他のタスクで同時に使用できます。
この項は、次の項目で構成されています。
SQL Applyを開始するには、ロジカル・スタンバイ・データベースを起動して次の文を発行します。
SQL> ALTER DATABASE START LOGICAL STANDBY APPLY;
ロジカル・スタンバイ・データベースでリアルタイム適用を開始して、ロジカル・スタンバイ・データベースのスタンバイREDOログ・ファイルからREDOデータを即時に適用するには、次の文に示すように、IMMEDIATE
キーワードを含めます。
SQL> ALTER DATABASE START LOGICAL STANDBY APPLY IMMEDIATE;
SQL Applyを停止するには、ロジカル・スタンバイ・データベースで次の文を発行します。
SQL> ALTER DATABASE STOP LOGICAL STANDBY APPLY;
この文を発行すると、SQL Applyは適用対象プロセス内の完了トランザクションがすべてコミットされるまで待機します。つまり、このコマンドを実行しても、SQL Applyプロセスが即時に停止しない場合があります。
SQL Applyを監視するには、10.3項を参照してください。スタンバイ・データベースは、Oracle Enterprise Managerを使用して監視することもできます。付録A「Data Guardのトラブルシューティング」と『Oracle Data Guard Broker』を参照してください。