3.2.5 スタンバイ・データベースでのExadataスマート・フラッシュ・キャッシュの管理

このトピックでは、Exadataスマート・フラッシュ・キャッシュOracle Data Guardスタンバイ・データベースと連携してどのように機能するかについて説明します。また、スイッチオーバーまたはフェイルオーバー後にスタンバイ・データベースでワークロードを処理できるようにするための、Exadataスマート・フラッシュ・キャッシュの様々な準備方法について概説します。

書込みデータのキャッシュ

書込みデータは、データベースで挿入または更新されるデータです。プライマリ・データベース・ブロックが変更または更新されると、変更はREDOログに記録され、データがExadataスマート・フラッシュ・キャッシュに読み込まれるか(データがキャッシュに存在しない場合)、Exadataスマート・フラッシュ・キャッシュ内で更新される(データがキャッシュに存在する場合)可能性があります。

REDOログ・エントリがスタンバイ・データベースに適用されると、変更はスタンバイ・データベース・ファイルに適用され、変更がスタンバイ・データベース上のExadataスマート・フラッシュ・キャッシュに読み込まれるか、キャッシュ内で更新される可能性があります。

したがって、書込みデータの場合、Exadataスマート・フラッシュ・キャッシュは、プライマリ・データベースおよびスタンバイ・データベース上の最もホットなデータを自動的にキャッシュします。

読取りデータのキャッシュ

読取りデータは、データベースから読み取られるデータです。Exadataプライマリ・データベースでは、最もアクティブな読取りデータがExadataスマート・フラッシュ・キャッシュに自動的にキャッシュされます。ただし、書込みデータとは異なり、一部の読取りデータはスタンバイ・データベースに伝播できません。

このトピックの残りの部分では、Oracle Data Guardのロール・トランジション(スイッチオーバーまたはフェイルオーバー)後にスタンバイ・データベースでワークロードを最適な方法で処理するための、Exadataスマート・フラッシュ・キャッシュの様々な管理アプローチについて説明します。

Active Data Guardを使用した読取りデータのキャッシング

オープンしている読取り専用Active Data Guardスタンバイ・データベースで実行される問合せは、Exadataスマート・フラッシュ・キャッシュと相互作用します。したがってプライマリ・データベースと同様に、Active Data Guardスタンバイ・データベースで実行されるすべての問合せについては、最もアクティブな読取りデータがExadataスマート・フラッシュ・キャッシュに自動的にキャッシュされます。このアプローチでは、データベース・バッファ・キャッシュへの読込みおよびExadataスマート・スキャンに関連する読取りを処理します。さらに、列キャッシュおよびストレージ索引をスタンバイ・データベースで積極的に維持します。

Active Data Guardを使用してスタンバイ・データベースでExadataスマート・フラッシュ・キャッシュを維持する方法は、スタンバイ・データベースでアプリケーション問合せワークロードをリプレイできる場合には簡単で効果的なオプションです。

データベース・バッファ・キャッシュを介した読取りデータのキャッシング

Oracle Databaseの書込みの欠落検出機能をOracle Data Guardフィジカル・スタンバイ・データベースと組み合せて有効にして、プライマリ・データベース・バッファ・キャッシュに読み込まれたブロックのREDOレコードを生成および適用できます。これらのREDOレコードの主な目的は、書込みの欠落を防ぐことです。しかしREDOレコードがスタンバイ・データベースに適用されるときに、Exadataスマート・フラッシュ・キャッシュは最もホットなデータを自動的にキャッシュするため、特定のデータのスタンバイ・キャッシュを効果的にプライマリ・キャッシュと同期させることができます。

この機能では、データベース・バッファ・キャッシュ(OLTP読取りデータと呼ばれることもあります)に読み込まれるデータが処理されます。ただし、Exadataスマート・スキャンに関連する読取りはバッファ・キャッシュをバイパスするため、書込みの欠落検出を使用して追跡することはできません。

書込みの欠落検出を有効にするには、db_lost_write_protectデータベース・パラメータをAUTOTYPICALまたはFULLに設定します。『Oracle Databaseデータベース・リファレンス』「DB_LOST_WRITE_PROTECT」を参照してください。

書込みの欠落検出では、プライマリ・データベースとスタンバイ・データベース両方のI/Oが追加で生成されます。これにより生じる影響は最小限であるため、一般的にはOracle Data Guardと組み合せて書込みの欠落検出を有効にすることをお薦めします。『Oracle Database高可用性概要およびベスト・プラクティス』「Oracle Data Guardの構成およびデプロイ」を参照してください。Oracle Databaseリリース19.26以降、db_lost_write_protectのデフォルト値はAUTOです。

Oracle Data Guardのロール・トランジション後のキャッシュのロード

前述のアプローチに加えて、様々な手法を使用して、Oracle Data Guardのロール・トランジション(スイッチオーバーまたはフェイルオーバー)後にExadataスマート・フラッシュ・キャッシュを手動でロードできます。このアプローチでは、プライマリ・ワークロードを実行するようスタンバイ・データベースを変換した後に、先行的にキャッシュをウォームアップできます。

「Exadataスマート・フラッシュ・キャッシュの手動移入」を参照してください。