ヘッダーをスキップ

Oracle® SQL Developer Oracle TimesTen In-Memory Databaseサポート・ユーザーズ・ガイド リリース4.0 E50146-01 |
| 目次 | 索引

前 | 次 |

# 7 キャッシュ・グループの作成

TimesTenデータベースにキャッシュする一連のOracleデータは、キャッシュ・グループによって定義されます。キャッシュ・グループを作成すると、キャッシュされたOracle表に対応するキャッシュ表がTimesTenデータベースに作成されます。

この章の内容は次のとおりです。

- 次のキャッシュ・グループの作成

  - キャッシュ・グループおよびキャッシュ表属性の定義

  - ルート表の定義

  - 子表の定義

- キャッシュ・グループの削除

## キャッシュ・グループの作成

キャッシュ・グループを作成するには、TimesTenデータベースの接続名のノードの下の「キャッシュ・グループ」ノードを右クリックして、「新規のキャッシュ・グループ」を選択します。

図7-1 新規キャッシュ・グループの作成

「図7-1 新規キャッシュ・グループの作成」の説明

「キャッシュ・グループの作成」ダイアログで、「キャッシュ・グループ属性」タブの「名前」フィールドでキャッシュ・グループの名前を指定します。「タイプ」で、キャッシュ・グループ・タイプ(読取り専用、非同期ライトスルー、同期ライトスルーまたはユーザー管理)を選択します。

キャッシュ・グループは、明示的にロードされるキャッシュ・グループまたは動的キャッシュ・グループのいずれかに分類されます。動的キャッシュ・グループを作成する場合は、「型」セクションで「動的」を選択します。

明示的にロードされるキャッシュ・グループでは、ロードまたはリフレッシュ操作を使用して手動で、または自動リフレッシュ操作を使用して自動で、対応するOracle表からキャッシュ表にデータをロードします。動的キャッシュ・グループでは、動的ロード操作を使用するか、ロード操作を使用して手動で、必要時に対応するOracle表からキャッシュ表へデータをロードします。

読取り専用、非同期ライトスルー(AWT)または同期ライトスルー(SWT)キャッシュ・グループは、動的キャッシュ・グループとして定義できます。ユーザー管理キャッシュ・グループに次のすべての特性が含まれない場合は、動的キャッシュ・グループとして定義できます。

- 自動リフレッシュが定義されている

- キャッシュ表の1つ以上が更新可能

- 1つ以上の更新可能キャッシュ表でコミットされた更新が対応するOracle表に伝播される

明示的にロードされるキャッシュ・グループおよび動的キャッシュ・グループの詳細は、『Oracle In-Memory Database Cacheユーザーズ・ガイド』のキャッシュ・グループへのデータのロード: 明示的にロードされるキャッシュ・グループおよび動的キャッシュ・グループに関する説明および動的キャッシュ・グループに関する説明を参照してください。

キャッシュ・グループは、ローカルまたはグローバルのいずれかとして分類されます。グローバル・キャッシュ・グループを作成する場合は、「タイプ」セクションで「グローバル」を選択します。

ローカル・キャッシュ・グループでは、キャッシュ表のデータは、TimesTenデータベースが同じキャッシュ・グリッドのメンバーであってもTimesTenデータベース間で共有されません。グローバル・キャッシュ・グループでは、キャッシュ表のデータが、同じキャッシュ・グリッドのメンバーであるTimesTenデータベース間で共有されます。

グローバル・キャッシュ・グループとして定義できるのは、AWTキャッシュ・グループのみです。

ローカル・キャッシュ・グループおよびグローバル・キャッシュ・グループの詳細は、『Oracle In-Memory Database Cacheユーザーズ・ガイド』のキャッシュ・グリッド間でのデータの共有: ローカル・キャッシュ・グループおよびグローバル・キャッシュ・グループに関する説明を参照してください。

図7-2 キャッシュ・グループ・タイプの定義

「図7-2 キャッシュ・グループ・タイプの定義」の説明

### キャッシュ・グループおよびキャッシュ表属性の定義

「キャッシュ・グループの作成」ダイアログの「キャッシュ・グループ属性」タブ内で、ユーザー管理キャッシュ・グループを作成し、「表の属性」セクションで「自動リフレッシュ」を選択して、「すべての表が読取り専用」または「すべての表の伝播」が選択されたときに、自動リフレッシュを有効化する場合、または読取り専用キャッシュ・グループを作成する場合は、自動リフレッシュの特性は次のようになります。

- 「モード」フィールドに「完全」または「インクリメンタル」のいずれかを選択して、自動リフレッシュ・モードを設定します。デフォルトの自動リフレッシュ・モードは「インクリメンタル」です。

- 「リフレッシュ間隔」フィールドで、数値と、分、秒またはミリ秒の時間単位を指定して、自動リフレッシュ間隔を設定します。デフォルトの自動リフレッシュ間隔は5分です。

- 「リフレッシュ状態」フィールドで、「一時休止」、「オン」または「オフ」のいずれかを選択して、自動リフレッシュ状態を設定します。デフォルトの自動リフレッシュ状態は「一時休止」です。

図7-3 自動リフレッシュ属性

「図7-3 自動リフレッシュ属性」の説明

キャッシュ・グループの自動リフレッシュの詳細は、『Oracle In-Memory Database Cacheユーザーズ・ガイド』のAUTOREFRESHキャッシュ・グループ属性に関する説明を参照してください。

読取り専用キャッシュ・グループの詳細は、『Oracle In-Memory Database Cacheユーザーズ・ガイド』の読取り専用キャッシュ・グループに関する説明を参照してください。

ユーザー管理キャッシュ・グループを作成する場合は、「キャッシュ・グループの作成」ダイアログの「キャッシュ・グループ属性」タブにある「表の属性」セクションから、次のいずれかを選択します。

- すべての表が読取り専用: すべてのキャッシュ表は読取り専用です。

- すべての表の伝播: すべてのキャッシュ表が更新可能で、キャッシュ表でコミットされた更新が対応するOracle表に伝播されます。

- 表によって異なる: 一部のキャッシュ表は読取り専用であり、その他のキャッシュ表は更新可能で、キャッシュ表でコミットされた更新が対応するOracle表に伝播される可能性があります。

図7-4 ユーザー管理キャッシュ・グループ属性

「図7-4 ユーザー管理キャッシュ・グループ属性」の説明

ユーザー管理キャッシュ・グループの詳細は、『Oracle In-Memory Database Cacheユーザーズ・ガイド』のユーザー管理キャッシュ・グループに関する説明を参照してください。

### ルート表の定義

「キャッシュ・グループの作成」ダイアログで、「表」タブをクリックします。「表」パネルを右クリックして、「ルート表の追加」を選択します。

図7-5 ルート表の追加

「図7-5 ルート表の追加」の説明

「ルート表の選択」ダイアログが表示されます。キャッシュ・グループのルート表として指定するために選択できるOracle表およびOracleシノニムのリストが表示されます。主キーを持つOracle表およびNULLでない一意の索引を持つOracle表を選択できます。

表を選択し、「OK」をクリックします。

図7-6 ルート表の表およびシノニムのリスト

「図7-6 ルート表の表およびシノニムのリスト」の説明

現在の接続ユーザーが所有するOracle表のみを表示するには、「自分の表のみ表示」を選択します。

Oracleシノニムのキャッシュの詳細は、『Oracle In-Memory Database Cacheユーザーズ・ガイド』のOracleシノニムのキャッシュに関する説明を参照してください。

#### キャッシュする列の選択

「キャッシュ・グループの作成」ダイアログの「表」タブ内の「列」タブで、「インライン」フィールドの下のチェック・ボックスを選択して、列に`INLINE`属性を指定します。`VARCHAR2`、`NVARCHAR2`および`VARBINARY`型の列に、`INLINE`属性を指定できます。

キャッシュ済の列ごとに、「NULL値を許可」フィールドの下のチェック・ボックスを選択して、NULL値を受け入れます。デフォルトでは、キャッシュ表の列にNULL値を指定できるかどうかは、対応するOracle表の列にNULL値を指定できるかどうかと同じです。

キャッシュする列ごとに、「キャッシュ済」フィールドの下のチェック・ボックスを選択します。デフォルトでは、表のすべての列が選択され、キャッシュされます。Oracle表の一意識別列(主キー、一意索引または一意制約)は、TimesTenキャッシュ表に含まれている必要があり、キャッシュ表の主キーを構成します。

Oracle表の一意識別列以外のすべての列を選択または選択解除する場合、NULL値を受け入れる場合またはキャッシュする場合は、「NULL値を許可」フィールドおよび「キャッシュ済」フィールドの左側に表示されるチェック・ボックスをそれぞれ選択または選択解除します。

キャッシュ表およびキャッシュ・グループの特性の詳細は、『Oracle In-Memory Database Cacheユーザーズ・ガイド』のキャッシュ・グループおよびキャッシュ表に関する説明を参照してください。

互換性があるTimesTenデータ型を複数持つOracleデータ型があります。複数のTimesTenデータ型をマップできるデータ型を持つOracle表の列の場合、「TimesTenのデータ型」フィールドの下にメニューが表示されます。キャッシュ表の列に必要なデータ型を選択します。Oracleデータ型と互換性のあるデフォルトのTimesTenデータ型は斜体で表示されます。

Oracleデータ型とTimesTenデータ型間の互換性の詳細は、『Oracle In-Memory Database Cacheユーザーズ・ガイド』のOracleデータ型とTimesTenデータ型間のマッピングに関する説明を参照してください。

更新可能なキャッシュ表に対して、キャッシュ済の各列の「デフォルト値」フィールドの下でデフォルトの列値を指定して、デフォルト値を定義できます。デフォルトでは、キャッシュ表の列のデフォルト値は、対応するOracle表の列のデフォルト値と同じです。

#### 表属性の指定

デフォルトでは、TimesTenによってキャッシュ表の主キー列にレンジ索引が作成されます。主キー列にレンジ索引ではなくハッシュ索引を作成するには、「キャッシュ・グループの作成」の「表」タブ内の「表の属性」タブの「主キー」セクションで、「ハッシュの使用」を選択します。「ハッシュ・サイズ設定ポリシー」メニューおよびコロン(:)の後の近隣のフィールド(数値が必要)に、基礎となるキャッシュ表の予想される行の最大数または索引に割り当てるページ数のいずれかを指定して、ハッシュ索引のサイズを設定する必要があります。デフォルトの選択は、「現在の表の行数」です。

図7-7 主キー属性

「図7-7 主キー属性」の説明

キャッシュ表の主キー列に自動的に作成される索引の詳細は、『Oracle TimesTen In-Memory Database SQLリファレンス』のCREATE CACHE GROUPに関する説明を参照してください。

ハッシュ索引の適切なサイズ設定の詳細は、『Oracle TimesTen In-Memory Database SQLリファレンス』のCREATE TABLEに関する説明を参照してください。

デフォルトでは、キャッシュ表の主キー列は、対応するOracleデータベース表の主キー列と同じです。異なる列または一連の列をキャッシュ表の主キーとして定義することができます。

「キャッシュ・グループの作成」ダイアログの「表」タブ内の「表の属性」タブにある「手動表管理」セクションで、「主キーの再定義」をクリックします。

図7-8 主キーの再定義

「図7-8 主キーの再定義」の説明

「主キーの定義」ダイアログで、「NULLではない一意の列」リストに、対応するOracle表のNULLを許可しない一意の列が表示されます。キャッシュ表の主キーの列を選択してから、「>>」を選択して、これらの列を「主キー」リストに移動します。列にレンジ索引が作成される場合は、コンポジット主キーの列の順序が重要になります。「OK」をクリックして、キャッシュ表の代替主キーを定義します。

図7-9 新規主キーの定義

「図7-9 新規主キーの定義」の説明

キャッシュ表の主キーが対応するOracle表の主キーと異なる列セットで構成されている場合、キャッシュ表または対応するOracle表でコミットされた更新が実行されると、表が非同期化になる場合があります。次の場合に、一意制約違反が発生します。

- キャッシュ表でコミットされた更新が対応するOracle表に伝播される場合

- Oracle表でコミットされた更新が対応するキャッシュ表にリフレッシュされる場合

「キャッシュ・グループの作成」の「表」タブ内の「表の属性」タブにある「WHERE句」フィールドで、キャッシュ表にオプションの`WHERE`句を指定できます。`WHERE`句は、自動リフレッシュが定義されている読取り専用キャッシュ・グループまたはユーザー管理キャッシュ・グループの表定義でのみ使用できます。

図7-10 WHERE句の指定

「図7-10 WHERE句の指定」の説明

キャッシュ・グループの表定義での`WHERE`句の指定の詳細は、『Oracle In-Memory Database Cacheユーザーズ・ガイド』のWHERE句の使用に関する説明を参照してください。

キャッシュ表がユーザー管理キャッシュ・グループにあり、「キャッシュ・グループの作成」ダイアログの「キャッシュ・グループ属性」タブ内の「表の属性」セクションで「表によって異なる」が選択されている場合、キャッシュ表に表属性を指定する必要があります。

「キャッシュ・グループの作成」の「表」タブ内の「表の属性」タブにある「伝播タイプ」セクションで、次を選択します。

- 読取り専用: キャッシュ表を読取り専用として定義します

- 伝播: キャッシュ表を更新可能として定義します(表での更新が対応するOracle表に伝播されます)

- 両方なし: キャッシュ表を更新可能として定義します(表での更新は対応するOracle表に伝播しない)

デフォルトでは、ユーザー管理キャッシュ・グループのキャッシュ表は更新可能で、表の更新は対応するOracle表には伝播されません。

#### エージング・ポリシーの指定

「キャッシュ・グループの作成」ダイアログの「経過」タブで、キャッシュ表にエージング・ポリシーを指定できます。エージング・ポリシーは、キャッシュ・グループのルート表で明示的に定義され、すべての子表に暗黙的に適用されます。

次のいずれかを選択します。

- 使用方法ベース: 最低使用頻度(LRU)エージング・ポリシーを定義します。

- 時間ベース: 時間ベースのエージング・ポリシーを定義します。

- 経過なしエージング・ポリシーを定義しません。

LRUエージング・ポリシーは、自動リフレッシュが定義されていない明示的にロードされるAWT、SWTまたはユーザー管理キャッシュ・グループの表に定義することができます。グローバルで明示的にロードされるキャッシュ・グループでは、デフォルトのエージング状態はOFFに設定されています。自動リフレッシュが定義されていない動的キャッシュ・グループでは、デフォルトのエージング状態はオンに設定されており、エージングのタイプは、使用方法ベースに設定されています。

「使用方法ベース」を選択すると、LRUエージングが適用される表からのデータの削除を開始および停止するタイミングを決定する、TimesTenデータベースのメモリー使用量のしきい値が表示されます。表からのデータの削除が開始されるタイミングを決定するデフォルトの使用量しきい値は90%です。表からのデータの削除を停止するタイミングを決定するデフォルトの使用量しきい値は80%です。デフォルトのLRUエージングのサイクルは1分です。

メモリー使用量のしきい値およびLRUエージング・サイクルの変更の詳細は、「メモリー使用量のしきい値およびLRUエージング・サイクルの変更」を参照してください。

図7-11 使用方法ベースのエージングの指定

「図7-11 使用方法ベースのエージングの指定」の説明

キャッシュ表でのLRUエージング・ポリシーの定義の詳細は、『Oracle In-Memory Database Cacheユーザーズ・ガイド』のLRUエージングに関する説明を参照してください。

時間ベースのエージング・ポリシーは、NULLを許可しない`DATE`列または`TIMESTAMP`列が含まれるキャッシュ表に定義できます。これらのデータ型の表の列は、「時間ベース」が選択されると、「キャッシュ・グループの作成」ダイアログの「経過」タブ内の「列」に表示されます。各行が挿入された時間または最新の更新時間を示すタイムスタンプ値を格納する列を選択します。

「存続期間」フィールドで、数値と、ドロップダウン・メニュー・リストから分、時間または日の時間単位を指定して、更新されたデータが表で保持される期間を指定します。

「サイクル」フィールドで、数値と、ドロップダウン・メニュー・リストから分、時間または日の時間単位を指定して、データが表からエージ・アウトされる頻度を指定します。デフォルトの時間ベースのエージング・サイクルは5分です。

「オン」または「オフ」を選択して、エージング状態を指定します。

図7-12 時間ベースのエージングの指定

「図7-12 時間ベースのエージングの指定」の説明

キャッシュ表での時間ベースのエージング・ポリシーの定義の詳細は、『Oracle In-Memory Database Cacheユーザーズ・ガイド』の時間ベースのエージングに関する説明を参照してください。

#### ルート表定義の検証

キャッシュする表および列、主キー列に作成する索引のタイプ、オプションの`WHERE`句を含む表属性およびルート表のオプションのエージング・ポリシーを定義した後、「キャッシュ・グループの作成」ダイアログの「DDL」タブで、キャッシュ・グループおよびそのキャッシュ表の作成に使用する`CREATE CACHE GROUP`文を表示することができます。

キャッシュ・グループに子表を追加しない場合は、「適用」をクリックして、キャッシュ・グループおよびそのキャッシュ表を作成します。

図7-13 キャッシュ・グループ定義の検証

「図7-13 キャッシュ・グループ定義の検証」の説明

`CREATE CACHE GROUP`文の構文およびセマンティクの詳細は、『Oracle TimesTen In-Memory Database SQLリファレンス』のCREATE CACHE GROUPに関する説明を参照してください。

### 子表の定義

「キャッシュ・グループの作成」ダイアログの「表」タブで、「表」パネル内を右クリックして、「子表の追加」を選択します。

「1つ以上の子表を選択します」ダイアログが表示されます。このダイアログには、キャッシュ・グループの子表として指定するために選択できるOracle表およびOracleシノニムのリストが表示されます。主キーを持つOracle表およびNULLでない一意の索引を持つOracle表を選択できます。

キャッシュ・グループの子表として指定する表を選択して、「OK」をクリックします。

Oracleシノニムのキャッシュの詳細は、『Oracle In-Memory Database Cacheユーザーズ・ガイド』のOracleシノニムのキャッシュに関する説明を参照してください。

図7-14 子表の表およびシノニムのリスト

「図7-14 子表の表およびシノニムのリスト」の説明

複数の子表を選択するには、[Ctrl]キーを押したまま必要な表をクリックします。適切な親表の下に子表が表示されます。特定の子表をドラッグ・アンド・ドロップして、目的の親表の下に表示することもできます。

現在の接続ユーザーが所有するOracle表のみを表示するには、「自分の表のみ表示」を選択します。

#### キャッシュする列の選択

子表をクリックして、「キャッシュ・グループの作成」ダイアログの「表」タブ内の「列」タブで、キャッシュされる各列の「NULL値を許可」フィールドの下のチェック・ボックスを選択して、NULL値を受け入れます。デフォルトでは、キャッシュ表の列にNULL値を指定できるかどうかは、対応するOracle表の列にNULL値を指定できるかどうかと同じです。

キャッシュする列ごとに、「キャッシュ済」フィールドの下のチェック・ボックスを選択します。デフォルトでは、表のすべての列が選択され、キャッシュされます。Oracle表の一意識別列は、TimesTenキャッシュ表に含まれている必要があり、キャッシュ表の主キーを構成します。また、親表を参照するOracle表の外部キー列もキャッシュ表に含まれている必要があります。

Oracle表の一意識別列および親表を参照する外部キー列以外のすべての列を選択または選択解除する場合、NULL値を受け入れる場合またはキャッシュする場合は、「NULL値を許可」フィールドおよび「キャッシュ」フィールドの左側に表示されるチェック・ボックスを選択または選択解除します。

データ型を複数のTimesTenデータ型にマップできるOracle表の列の「TimesTenのデータ型」フィールドの下にドロップダウン選択リストが表示されます。子キャッシュ表の列に必要なデータ型を選択します。

更新可能なキャッシュ表で、デフォルト値を定義する子キャッシュ表のキャッシュされる各列の「デフォルト値」フィールドにデフォルトの列値を指定できます。

#### 表属性の指定

「キャッシュ・グループの作成」ダイアログの「表」タブ内の「表の属性」タブで、ルート表に指定したときと同じ形式で子キャッシュ表の主キー列にレンジ索引またはハッシュ索引を作成するかどうかを選択します。ルート表に指定したときと同じ形式で、キャッシュ表の主キーとして、対応するOracle表の列とは異なる列または列セットを定義することができます。また、ルート表に指定したときと同じ形式で、キャッシュ表にオプションの`WHERE`句を指定することもできます。`WHERE`句は、自動リフレッシュが定義されている読取り専用キャッシュ・グループまたはユーザー管理キャッシュ・グループの表定義でのみ使用できます。

図7-15 子表への属性の指定

「図7-15 子表への属性の指定」の説明

参照キー値を含む行が親表から削除されると、依存する外部キー値を持つ子表の行も削除されるように、子表の外部キー列でカスケード削除を有効にする場合は、「外部キーのカスケード削除」を選択します。

デフォルトでは、子キャッシュ表の外部キー列は、対応するOracle表の外部キー列と同じです。キャッシュ表の外部キーとして異なる列または列セットを定義することができます。

「キャッシュ・グループの作成」ダイアログの「表」タブ内の「表の属性」タブにある「手動表管理」セクションで、「外部キーの再定義」を選択します。図7-15「子表への属性の指定」を参照してください。

「外部キーの定義」ダイアログで、「外部キー」ドロップダウン・リストに親表の主キー列と互換性のあるデータ型の子表の列が表示されます。キャッシュ表の外部キーに列を選択します。「OK」をクリックして、キャッシュ表の代替外部キーを定義します。

図7-16 外部キーの定義

「図7-16 外部キーの定義」の説明

複数表のキャッシュ・グループのキャッシュ表の階層および関係の詳細は、『Oracle In-Memory Database Cacheユーザーズ・ガイド』の複数表のキャッシュ・グループに関する説明を参照してください。

子キャッシュ表が、「キャッシュ・グループの作成」ダイアログの「キャッシュ・グループ属性」タブ内の「表の属性」セクションで「表によって異なる」を選択したユーザー管理キャッシュ・グループにある場合は、キャッシュ表の属性をルート表と同じ形式で指定します。キャッシュ表が更新可能である場合に、表の更新が対応するOracle表に伝播されるかどうかを指定します。

#### 子表の定義の完了

キャッシュする列、主キー列に作成する索引のタイプ、外部キー列のカスケード削除の設定および残りの子表に対するオプションのWHERE句を含む表属性を定義します。

#### キャッシュ・グループ定義の検証

「キャッシュ・グループの作成」ダイアログの「DDL」タブで、キャッシュ・グループおよびそのキャッシュ表の作成に使用する`CREATE CACHE` `GROUP`文を表示できます。

「適用」をクリックして、キャッシュ・グループおよびそのキャッシュ表を作成します。

図7-17 キャッシュ・グループ定義の表示

「図7-17 キャッシュ・グループ定義の表示」の説明

AWTキャッシュ・グループを作成した場合は、そのキャッシュ表でコミットされた更新用にレプリケーション・エージェントを起動して、対応するOracle表に非同期的に伝播する必要があります。レプリケーション・エージェントの起動方法の詳細は、「レプリケーション・エージェントの起動」を参照してください。

グローバル・キャッシュ・グループを作成した場合、キャッシュ・グループまたはそのキャッシュ表に操作を実行する前に、関連付けられているキャッシュ・グリッドにTimesTenデータベースをアタッチする必要があります。このタスクは、SQL Developerの外部で`ttIsql`ユーティリティなどのコマンドライン・インタフェースを使用するか、SQL Developer内部でSQLワークシートを使用して実行する必要があります。詳細は、『Oracle In-Memory Database Cacheユーザーズ・ガイド』のキャッシュ・グリッドへのTimesTenデータベースのアタッチに関する説明を参照してください。

## キャッシュ・グループの削除

キャッシュ・グループを削除すると、そのキャッシュ表も削除されます。

TimesTenデータベースの接続名のノード内の「キャッシュ・グループ」ノードの下で、削除対象のキャッシュ・グループの名前を右クリックして、「削除」を選択します。

図7-18 キャッシュ・グループの削除

「図7-18 キャッシュ・グループの削除」の説明

「適用」をクリックして、キャッシュ・グループを削除します。

図7-19 キャッシュ・グループの削除の確認

「図7-19 キャッシュ・グループの削除の確認」の説明

キャッシュ・グループの削除の詳細は、『Oracle In-Memory Database Cacheユーザーズ・ガイド』のキャッシュ・グループの削除に関する説明を参照してください。