8 適用サービス

次の概要では、REDOデータをスタンバイ・データベースに適用する方法について説明します。

8.1 適用サービスの概要

適用サービスは、スタンバイ・データベースにREDOを自動的に適用して、プライマリ・データベースとの同期を維持します。また、データに対するトランザクションの一貫性のあるアクセスを可能にします。

デフォルト設定では、適用サービスはスタンバイREDOログ・ファイルのアーカイブ保存が終了するまで待って、制約のあるREDOを適用します。ただし、リアルタイムでの適用を有効化しておくと、書込みと同時に、現行のスタンバイREDOログ・ファイルにREDOを適用することができます。リアルタイム適用については、「リアルタイム適用によるREDOデータの即時適用」で詳しく説明しています。

適用サービスは、次の方法でフィジカル・スタンバイ・データベースとロジカル・スタンバイ・データベースをメンテナンスします。

  • REDO Apply(フィジカル・スタンバイ・データベースのみ)

    メディア・リカバリを使用して、プライマリ・データベースとフィジカル・スタンバイ・データベースの同期を維持します。

  • SQL Apply(ロジカル・スタンバイ・データベースのみ)

    プライマリ・データベースから受信したREDOに基づいてSQL文を再構成し、そのSQL文をロジカル・スタンバイ・データベースに対して実行します。

8.2 適用サービスの構成オプション

REDOデータをすぐに適用することも、アーカイブREDOログ・ファイルを適用する遅延時間を指定することもできます。

次のトピックを参照してください。

8.2.1 リアルタイム適用によるREDOデータの即時適用

リアルタイム適用の機能を有効化すると、現行のスタンバイREDOログ・ファイルのアーカイブを待たずに、適用サービスによって受信したREDOデータを適用することができます。

この方法ではフェイルオーバーまたはスイッチオーバーが開始するまでに、スタンバイREDOログ・ファイルがスタンバイ・データベースに適用されているので、これによりスイッチオーバーとフェイルオーバーの速度が向上します。プライマリ・データベースとより厳密に同期が維持されることにより、Oracle Active Data Guardスタンバイでのリアルタイムのレポートも可能になります。

次のように、ALTER DATABASE文を使用して、リアルタイム適用機能を使用可能にします。

  • フィジカル・スタンバイ・データベースの場合は、ALTER DATABASE RECOVER MANAGED STANDBY DATABASE文を発行します。(Oracle Database 12cリリース1 (12.1)現在、USING CURRENT LOGFILE句は非推奨で、リアルタイム適用を開始する必要はなくなりました)。

  • ロジカル・スタンバイ・データベースの場合は、ALTER DATABASE START LOGICAL STANDBY APPLY IMMEDIATE文を発行します。

リアルタイムの適用には、スタンバイREDOログを使用して構成された、ARCHIVELOGモードのスタンバイ・データベースが必要です。

図8-1に、ローカル宛先とスタンバイ宛先があるOracle Data Guard構成を示します。リモート・ファイル・サーバー(RFS)プロセスは、スタンバイ・データベース上のスタンバイREDOログ・ファイルにREDOデータを書き込むため、適用サービスでは、スタンバイREDOログ・ファイルがいっぱいになったときにREDOをリカバリできます。

図8-1 リアルタイム適用を使用したスタンバイ宛先へのREDOデータの適用

図8-1の説明が続きます
「図8-1 リアルタイム適用を使用したスタンバイ宛先へのREDOデータの適用」の説明

8.2.2 アーカイブREDOログ・ファイルの適用に対する遅延時間の指定

プライマリ・サイトからREDOデータを受信した後、そのREDOデータをスタンバイ・データベースに適用するまでの間にタイム・ラグを作成することが必要な場合があります。

時間間隔(分単位)を指定すると、破損したデータや誤ったデータがスタンバイ・サイトに適用されるのを防止できます。DELAY間隔を設定すると、スタンバイ・データベースへのREDOデータの転送が遅延することはありません。かわりに、指定したタイム・ラグは、REDOデータがスタンバイ宛先で完全にアーカイブされたときに開始します。

ノート:

リアルタイム適用が使用可能になっている宛先に遅延を定義すると、その遅延は無視されます。次の段落に示すような遅延を定義する場合、「Redo Applyの開始」に示すように、USING ARCHIVED LOGFILE句を使用して適用を開始する必要があります。

遅延時間の指定

LOG_ARCHIVE_DEST_n初期化パラメータのDELAY=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ログ・ファイルの適用が即時に開始されます。

8.2.2.1 遅延時間設定の代替策としてのフラッシュバック・データベースの使用

適用遅延を設定するかわりにフラッシュバック・データベースを使用して、スタンバイ・データベースへの破損データやエラー・データの適用からリカバリできます。

フラッシュバック・データベースを使用すると、スタンバイ・データベースを任意の時点まで、すばやく容易にフラッシュバックできます。

データベースのフラッシュバックでのOracle Data Guardの使用方法を示すシナリオは「Oracle Data Guardの使用例」を参照してください。フラッシュバック・データベースの有効化と使用の詳細は、『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』を参照してください。

8.3 REDOデータのフィジカル・スタンバイ・データベースへの適用

REDO Applyを実行している場合、フィジカル・スタンバイ・データベースはリアルタイム機能を使用して、スタンバイREDOログ・ファイルがリモート・ファイル・サーバー(RFS)プロセスによって書き込まれているときに、スタンバイREDOログ・ファイルから直接REDOを適用できます。

この項では、次の項目について説明します。

8.3.1 REDO Applyの開始

フィジカル・スタンバイ・データベースで適用サービスを開始するには、フィジカル・スタンバイ・データベースが開始していてマウントされていることを確認してから、REDO Applyを開始します。

次のようにフィジカル・スタンバイ・データベース上で適用サービスを開始します。

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE;

スタンバイ・データベースがスタンバイREDOログを使用して構成され、ARCHIVELOGモードであるならば、これによりリアルタイム適用も自動的に有効になります。

REDO Applyをフォアグラウンド・セッションまたはバックグラウンド・プロセスとして動作させることができます。REDO Applyをフォアグラウンドで開始するには、次のSQL文を発行します。

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE;

フォアグラウンド・セッションを開始すると、別のセッションでリカバリが取り消されるまで、制御がコマンド・プロンプトに戻りません。

REDO Applyをバックグラウンドで開始するには、このSQL文にDISCONNECTキーワードを挿入します。次に例を示します。

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT;

または

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING ARCHIVED LOGFILE DISCONNECT;

この文によって、分離されたサーバー・プロセスが起動し、即時に制御がユーザーに戻されます。管理リカバリ・プロセスがバックグラウンドでリカバリを実行している間、RECOVER文を発行したフォアグラウンド・プロセスは、他のタスクの実行を継続できます。このコマンドによって、カレントSQLセッションが切断されることはありません。

8.3.2 REDO Applyの停止

Redo Applyを停止するには、ALTER DATABASE SQL文を使用します。

たとえば、次のSQL文を発行します。

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

8.3.3 フィジカル・スタンバイ・データベースでのREDO Applyの監視

フィジカル・スタンバイ・データベースで適用サービスのステータスを監視できます。

「プライマリ、フィジカルおよびスナップショット・スタンバイ・データベースを監視するためのビューの使用」を参照してください。スタンバイ・データベースは、Oracle Enterprise Manager Cloud Controlを使用して監視することもできます。

8.4 REDOデータのロジカル・スタンバイ・データベースへの適用

SQL Applyは、アーカイブREDOログまたはスタンバイREDOログのデータをSQL文に変換してから、そのSQL文をロジカル・スタンバイ・データベースで実行します。

ロジカル・スタンバイ・データベースはオープン状態のままであるため、メンテナンスされる表は、レポート生成、要約、問合せなどの他のタスクで同時に使用できます。

次のトピックを参照してください。

8.4.1 SQL Applyの開始

SQL Applyを開始するには、ALTER DATABASE SQL文を使用します。

たとえば、SQL Applyを開始するには、ロジカル・スタンバイ・データベースを起動して次の文を発行します。

SQL> ALTER DATABASE START LOGICAL STANDBY APPLY;

ロジカル・スタンバイ・データベースでリアルタイム適用を開始して、ロジカル・スタンバイ・データベースのスタンバイREDOログ・ファイルからREDOデータを即時に適用するには、次の文に示すように、IMMEDIATEキーワードを含めます。

SQL> ALTER DATABASE START LOGICAL STANDBY APPLY IMMEDIATE;

8.4.2 ロジカル・スタンバイ・データベースでのSQL Applyの停止

ロジカル・スタンバイ・データベースでSQL Applyを停止するには、ALTER DATABASE SQL文を使用します。

たとえば、ロジカル・スタンバイ・データベースで、次の文を入力します。

SQL> ALTER DATABASE STOP LOGICAL STANDBY APPLY;

この文を発行すると、SQL Applyは適用対象プロセス内の完了トランザクションがすべてコミットされるまで待機します。つまり、このコマンドを実行しても、SQL Applyプロセスが即時に停止しない場合があります。

8.4.3 ロジカル・スタンバイ・データベースでのSQL Applyの監視

ロジカル・スタンバイ・データベースでSQL Applyを管理および監視するために使用できる情報を提供するビューがあります。

「ロジカル・スタンバイ・データベースの管理および監視関連のビュー」を参照してください。スタンバイ・データベースは、Oracle Enterprise Manager Cloud Controlを使用して監視することもできます。「Oracle Data Guardのトラブルシューティング」を参照してください。

8.5 プライマリでのPDBの削除または名前の変更時のスタンバイの考慮点

プライマリがマルチテナント・コンテナ・データベース(CDB)である場合、プライマリでプラガブル・データベース(PDB)を削除または名前変更する際には、制限が適用されます。

  • PDBでDDL UNPLUGおよびDROP操作を実行するには、PDBはすべてのスタンバイ・データベースと同様にプライマリで最初に閉じられる必要があります。

  • PDBでDDL RENAME操作を実行するには、PDBはプライマリで最初にOPEN RESTRICTEDモードになり、すべてのスタンバイ・データベースで閉じられる必要があります。

プライマリ・データベースで削除または名前を変更する前に、スタンバイでPDBを閉じないと、スタンバイはすべてのPDBへのリカバリ・プロセスを停止します。スタンバイで削除されたPDBを閉じてから、次のSQL文を使用してリカバリを再開する必要があります。

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE;