5.2.6 データベースおよびPDBのためのXRMEMキャッシュ割当て制限の管理

I/Oリソース管理(IORM)により、異なるデータベースとプラガブル・データベース(PDB)の間でExadata RDMAメモリー・キャッシュ(XRMEMキャッシュ)をどのように共有するかを制御できます。

これは、CDBリソース・プランのみ、またはI/Oリソース管理(IORM)データベース間プランと組み合せて使用できます。

NEWCDB CDBのデータベース内リソース・プランの例を考えてみます。プランでは、プランに記載されている3つのPDB用にmemory_minおよびmemory_limitを指定します。

次の点に注意してください:

  • memory_minおよびmemory_limitの値は、0から100の範囲のパーセンテージで指定されます。オーバー・プロビジョニングがサポートされているため、パーセンテージの合計は100%には制限されません。これらの値の合計が100%を超える場合、値はパーセンテージへと正規化されます。
  • memory_minが指定されていない場合は、デフォルトで0に設定されます。
  • memory_limitが指定されていない場合は、デフォルトで100に設定されます。
  • CDB$ROOT用には、5%のmemory_limit値があります。

次のコードは、データベース内プランの例を作成する方法を示しています。memory_min値の合計は40%で、memory_limit値の合計は正規化する必要のある175%です。データベース間プランが指定されていない場合、これらのパーセンテージがXRMEMキャッシュのサイズ全体に適用されます。データベース間プランが指定されている場合、PDBの割当て制限は、データベース間プランのディレクティブで指定されたデータベース用のxrmemcacheminxrmemcachesize値のパーセンテージとして計算されます。

BEGIN
DBMS_RESOURCE_MANAGER.CREATE_PENDING_AREA();
 
DBMS_RESOURCE_MANAGER.CREATE_CDB_PLAN(
    plan    => 'NEWCDB_PLAN',
    comment => 'CDB resource plan for newcdb');
 
  DBMS_RESOURCE_MANAGER.CREATE_CDB_PLAN_DIRECTIVE(
    plan                  => 'NEWCDB_PLAN', 
    pluggable_database    => 'SALESPDB', 
    memory_min            => 20);
  DBMS_RESOURCE_MANAGER.CREATE_CDB_PLAN_DIRECTIVE(
    plan                  => 'NEWCDB_PLAN', 
    pluggable_database    => 'SERVICESPDB', 
    memory_min            => 20,
    memory_limit          => 50);
  DBMS_RESOURCE_MANAGER.CREATE_CDB_PLAN_DIRECTIVE(
    plan                  => 'NEWCDB_PLAN', 
    pluggable_database    => 'HRPDB', 
    memory_limit          => 25);
 
DBMS_RESOURCE_MANAGER.VALIDATE_PENDING_AREA();
DBMS_RESOURCE_MANAGER.SUBMIT_PENDING_AREA();
END;
/

前述の例で、データベース間プランを指定せず、XRMEMキャッシュのサイズが1.25 TBの場合の、(memory_limitの値の合計が100%を超えたために)制限を正規化した後の割当て制限の内訳を次の表に示します。正規化後、最小値が対応する制限より大きくなった場合は、最小値は制限と等しくなるように減らされます。

表5-6 ケース1: データベース間プランがない場合のPDBXRMEMキャッシュの制限

PDB XRMEMキャッシュの最小 XRMEMの弱い制限 正規化済の弱い制限 XRMEMの強い制限

SALESPDB

20% = 256 GB

100 (デフォルト)

100 / 175 * 1.25 TB = 731 GB

該当なし

SERVICESPDB

20% = 256 GB

50

50 / 175 * 1.25 TB = 366 GB

該当なし

HRPDB

0

25

25 / 175 * 1.25 TB = 183 GB

該当なし

次の例に、NEWCDB CDBを含むXRMEMキャッシュ割当て制限のあるデータベース間プランを示します。

ALTER IORMPLAN dbplan=                                                                                       -
      ((name=newcdb, share=8, xrmemCacheSize= 200G, flashCacheSize=10G),                                        -
       (name=finance, share=8, xrmemCacheMin= 100G, xrmemCacheLimit= 200G, flashCacheLimit=10G, flashCacheMin=2G), -
       (name=dev, share=2, xrmemCacheMin= 1G, xrmemCacheLimit= 10G, flashCacheLimit=4G, flashCacheMin=1G),    -
       (name=test, share=1))

newcdb CDBに加え、その他の3つのデータベース(financedevおよびtest)で同じストレージ・サーバーを共有します。XRMEMキャッシュ割当て制限は、ディレクティブでxrmemcachesizexrmemcachelimitまたはxrmemcachemin属性が指定されている場合にのみ適用されます。データベースtestにはXRMEMキャッシュのディレクティブが指定されていません。したがって、そのデータベースおよびそのPDB (ある場合)では、XRMEMキャッシュの割当て制限は管理されません。

データベース間IORMプラン・ディレクティブのキャッシュ制限は、対応するCDBプランの設定を制約します。したがって、データベース間IORMプラン・ディレクティブでデータベースのxrmemcacheminおよびxrmemcachesize設定が指定されている場合、CDBプランでPDB固有のmemory_min割当て制限はxrmemcachemin設定の一部になり、PDB固有のmemory_limit値はxrmemcachesizeの一部になります。

ただし、データベース間IORMプラン・ディレクティブでxrmemcacheminを指定せずにxrmemcachesizeが指定されている場合、PDB固有のmemory_min設定は無視されますが、memory_limit設定は引き続きxrmemcachesizeの一部になります。

したがって、newcdbのデータベース間IORMプラン・ディレクティブの例では、xrmemcacheminなしでxrmemcachesizeが指定されているため、CDBプランでPDB固有のmemory_min割当て制限が無視されます。次の表に、CDBプランの例をデータベース間IORMプランの例とともに適用した場合の有効なXRMEMキャッシュ制限を示します。

表5-7 ケース2: データベース間プランがある場合のPDBXRMEMキャッシュの制限

PDB XRMEMキャッシュの最小 XRMEMの強い制限 正規化済の強い制限 XRMEMの弱い制限

SALESPDB

0

100 (デフォルト)

100 / 175 * 200 GB = 114.29 GB

該当なし

SERVICESPDB

0

50

50 / 175 * 200 GB = 57.14 GB

該当なし

HRPDB

0

25

25 / 175 * 200 GB = 28.57 GB

該当なし

CDBデータベースでは、xrmemcachesizexrmemcacheminおよびxrmemcachelimitの値は絶対値として指定され、追加の正規化は必要ありません。xrmemcacheminは保証付きの予約であるため、xrmemcacheminの合計は、すべてのディレクティブ全体でXRMEMキャッシュの合計サイズより小さくする必要があります。