3.2.1 デフォルトのキャッシュ・ポリシーのオーバーライド

通常は必要ありませんが、CELL_FLASH_CACHEセグメント記憶域オプションを使用して、Exadataスマート・フラッシュ・キャッシュの自動キャッシング・ポリシーをオーバーライドできます。CELL_FLASH_CACHEオプションは、通常の表と索引、パーティション表と索引、索引構成表など、様々なデータベース・オブジェクトのSQL CREATEまたはALTERコマンドの一部としてSTORAGE句に含めることができます。

次に例を示します:

SQL> CREATE TABLE t1 (c1 number, c2 varchar2(200)) STORAGE (CELL_FLASH_CACHE NONE);
SQL> ALTER TABLE t2 STORAGE (CELL_FLASH_CACHE KEEP);

CELL_FLASH_CACHEオプションは、次の設定をサポートしています。

  • NONE: この値により、Exadataスマート・フラッシュ・キャッシュは対応するセグメントをキャッシュしなくなります。周辺のデータベース・セグメントでこの設定を使用すると、より重要でアクセス頻度の高いデータベース・セグメントで、より多くのキャッシュ領域を使用できます。
  • DEFAULT: この値を指定すると、データベース・セグメントは、Exadataスマート・フラッシュ・キャッシュのデフォルトのLRU (最低使用頻度)アルゴリズムを使用してキャッシュされます。この値は、CELL_FLASH_CACHEのデフォルト設定です。
  • KEEP: この値は、Exadataスマート・フラッシュ・キャッシュのセグメント優先度を高くします。この設定を使用すると、キャッシュ内の対応するセグメントのデータが保持される可能性を高めることができます。

    Oracle Exadata System Softwareリリース24.1.0以降、Oracle Database 23aiとの組合せでは、この設定のセグメントはExadataスマート・フラッシュ・キャッシュに自動的に移入されます。以前は、セグメントの読取り時にセグメント・データが移入されていました。

CELL_FLASH_CACHEセグメント・ストレージ・オプションは、パーティション化されたセグメントのパーティションごとに個別に設定できます。これは、予測可能な使用パターンに基づいて異なるパーティションのキャッシュ優先度に影響を与える場合に、特に役立ちます。CELL_FLASH_CACHEセグメント・ストレージ・オプションをパーティションに設定するときに、DEFERRED INVALIDATION句を追加できます。次に例を示します:

SQL> ALTER TABLE ptable MODIFY PARTITION p1 STORAGE (CELL_FLASH_CACHE KEEP) DEFERRED INVALIDATION;

このオプションを使用すると、依存カーソルをすぐに無効化することなく、セグメント・ストレージ・オプションを動的に変更できます。このオプションには、Oracle Databaseバージョン19.15とOracle Databaseバージョン21.6以降のリリースに含まれるバグ33456703のパッチが含まれているOracle Databaseソフトウェアが必要です。

例3-1 パーティションに対するCELL_FLASH_CACHEの設定

この例は、CREATE TABLEコマンドで複数のパーティションに個別にCELL_FLASH_CACHEを設定する方法を示しています。

CREATE TABLE ptable (c1 number, c2 clob) TABLESPACE TBS_1
          PARTITION BY RANGE(c1) ( PARTITION p1 VALUES LESS THAN (100)
             TABLESPACE TBS_2 STORAGE (CELL_FLASH_CACHE DEFAULT),
          PARTITION p2 VALUES LESS THAN (200) TABLESPACE TBS_3
             STORAGE (CELL_FLASH_CACHE KEEP));

例3-2 LOBセグメントに対するCELL_FLASH_CACHEの設定

この例は、CREATE TABLEコマンドでLOBセグメントにCELL_FLASH_CACHEを設定する方法を示しています。

CREATE TABLE tkbcsrbc (c1 number, l1 clob)
           lob (l1) STORE AS securefile 
              (cache nologging STORAGE (CELL_FLASH_CACHE NONE))
           PCTFREE 0 TABLESPACE tbs_93 STORAGE 
              (initial 128K next 128K pctincrease 0);

例3-3 CELL_FLASH_CACHEと組み合せたALTER TABLEの使用

STORAGE句の変更が許可されるオブジェクトの場合、これらの例に示すように、CELL_FLASH_CACHEと組み合せてALTERコマンドを使用できます。

ALTER TABLE tkbcsrbc STORAGE(CELL_FLASH_CACHE KEEP);

ALTER TABLE tkbcsrbc MODIFY LOB (l1) (STORAGE (CELL_FLASH_CACHE DEFAULT));

例3-4 ビューを使用したCELL_FLASH_CACHEストレージ句の問合せ

CELL_FLASH_CACHE STORAGE句属性は、関連するオブジェクトに基づいたデータベース・ビューを使用して問い合せることができます。

SELECT TABLESPACE_NAME, TABLE_NAME, CELL_FLASH_CACHE FROM user_tables WHERE table_name='TKBCSRBC';

SELECT CELL_FLASH_CACHE FROM ALL_INDEXES WHERE index_name='TKBCIDX';