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
データベース・パラメータをAUTO
、TYPICAL
または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スマート・フラッシュ・キャッシュの手動移入」を参照してください。
親トピック: Exadataスマート・フラッシュ・キャッシュの管理