ヘッダーをスキップ

Oracle TimesTen In-Memory Database APIおよびSQLリファレンス・ガイド リリース6.0 B25770-01 |
| 目次 | 索引

前へ | 次へ |

## ユーザー管理キャッシュ・グループおよびシステム管理キャッシュ・グループ

キャッシュ・グループは、システム管理またはユーザー管理のいずれかになります。

- システム管理キャッシュ・グループは、TimesTenによって完全に管理され、プロパティは固定されています。

READONLY、ASYNCHRONOUS WRITETHROUGHおよびSYNCHRONOUS WRITETHROUGHのキャッシュ・グループは、システム管理キャッシュ・グループです。

- READONLYキャッシュ・グループはOracleで更新され、Oracleからキャッシュに更新が伝播されます。
- ASYNCHRONOUSキャッシュ・グループはキャッシュで更新され、Oracleに更新が伝播されます。トランザクションはOracleでのコミットを待機せずに、キャッシュ上で続行します。
- WRITETHROUGHキャッシュ・グループはキャッシュで更新され、Oracleに更新が伝播されます。トランザクションは、Oracleでコミットが発生したことを通知した後、キャッシュ上でコミットされます。

ローディングやアンローディングなど、システム管理のキャッシュ・グループはTimesTenによって管理されるため、これらのキャッシュ・グループでは次のような特定の文や句を使用できません。

- WHERE句（この句はREADONLY CACHE GROUP定義で使用可能）
- 表定義のREADONLY、PROPAGATEおよびNOT PROPAGATE
- DURATION句
- REQUIRED句

また、AUTOREFRESH、REFRESHおよびFLUSHは、WRITETHROUGHキャッシュ・グループでは使用できません。READONLYキャッシュ・グループでは、AUTOREFRESHはデフォルトで有効になっています。

- ユーザー管理キャッシュ・グループは、アプリケーションまたはユーザーによって管理される必要があります。これらのキャッシュ・グループでは次のような特定の文または句を使用できません。

表レベルのREADONLYキーワードは、ユーザー管理キャッシュ・グループでのみ使用できます。

さらに、TimesTenとOracleの両方が、すべてのWHERE句を解析できる必要があります。

ASYNCHRONOUS WRITETHROUGHキャッシュ・グループは、レプリケーション・エージェントの実行中には作成できません。

アクセス制御

TimesTenインスタンスでアクセス制御が有効な場合、この文にはDDL権限が必要です。

SQL構文

それぞれのタイプのキャッシュ・グループは、次のCREATE CACHE GROUP文で作成します。

- CREATE READONLY CACHE GROUP
- CREATE ASYNCHRONOUS WRITETHROUGH CACHE GROUP
- CREATE SYNCHRONOUS WRITETHROUGH CACHE GROUP
- CREATE USERMANAGED CACHE GROUP

それぞれのタイプのキャッシュ・グループの作成に使用する文については、次の各項を参照してください。

### CREATE READONLY CACHE GROUP

READONLYのキャッシュ・グループは、次の構文で作成します。

CREATE READONLY CACHE GROUP [Owner.]GroupName
[AUTOREFRESH
[MODE {INCREMENTAL [WITH LIMIT NumChanges] | FULL}]
[INTERVAL IntervalValue {MINUTES | SECONDS | MILLISECONDS}]
[STATE {ON|OFF|PAUSE}]
]
FROM
{[Owner.]TableName (
{ColumnDefinition[,...]}
[,PRIMARY KEY(ColumnName[,...])]
[,FOREIGN KEY(ColumnName [,...])
REFERENCES RefTableName (ColumnName [,...])
[UNIQUE HASH ON (HashColumnName[,...]) PAGES=PrimaryPages]
[WHERE ExternalSearchCondition]

} [,...];

### CREATE ASYNCHRONOUS WRITETHROUGH CACHE GROUP

ASYNCHRONOUS WRITETHROUGHのキャッシュ・グループは、次の構文で作成します。

CREATE [ASYNCHRONOUS] WRITETHROUGH CACHE GROUP [Owner.]GroupName
FROM
{[Owner.]TableName (
{ColumnDefinition[,...]}
[,PRIMARY KEY(ColumnName[,...])]
[FOREIGN KEY(ColumnName [,...])
REFERENCES RefTableName (ColumnName [,...])]
UNIQUE HASH ON (HashColumnName[,...]) PAGES=PrimaryPages]

} [,...];

### CREATE SYNCHRONOUS WRITETHROUGH CACHE GROUP

SYNCHRONOUS WRITETHROUGHのキャッシュ・グループは、次の構文で作成します。

CREATE SYNCHRONOUS WRITETHROUGH
CACHE GROUP [Owner.]GroupName
FROM
{[Owner.]TableName (
{ColumnDefinition[,...]}
[,PRIMARY KEY(ColumnName[,...])]
[FOREIGN KEY(ColumnName [,...])
REFERENCES RefTableName (ColumnName [,...])}]
[UNIQUE HASH ON (HashColumnName[,...]) PAGES=PrimaryPages]

} [,...];

### CREATE USERMANAGED CACHE GROUP

ユーザー管理キャッシュ・グループは、次の構文で作成します。

CREATE [USERMANAGED] CACHE GROUP [Owner.]GroupName
[DURATION DurationValue]
[AUTOREFRESH
[MODE {INCREMENTAL [WITH LIMIT NumChanges] | FULL}]
[INTERVAL IntervalValue {MINUTES | SECONDS | MILLISECONDS}]
[STATE {ON|OFF|PAUSED}]
]
FROM
{[Owner.]TableName (
{ColumnDefinition[,...]}
[,PRIMARY KEY(ColumnName[,...])]
[FOREIGN KEY(ColumnName[,...])
REFERENCES RefTableName (ColumnName [,...])]
[, {READONLY | PROPAGATE | NOT PROPAGATE}]
[UNIQUE HASH ON (HashColumnName[,...]) PAGES=PrimaryPages]
[WHERE ExternalSearchCondition]

} [,...];

パラメータ

キャッシュ・グループの一般的な記述（FROMキーワードより前のすべての部分）のパラメータは、次のとおりです。

[Owner.]GroupName | 新しいキャッシュ・グループに割り当てられる所有者および名前。
AUTOREFRESH | AUTOREFRESHパラメータは、OracleデータベースからTimesTenキャッシュ・グループに変更を自動的に伝播します。詳細は、「キャッシュ・グループのAUTOREFRESH」を参照してください。
DURATION DurationValue | DURATIONパラメータには、キャッシュ・インスタンスがエージングを実行する前にキャッシュにとどまる時間（分）を示す整数値を指定します。
MODE [INCREMENTAL | FULL] | 自動リフレッシュ時に更新されるキャッシュ内の行を指定します。INCREMENTAL句が指定された場合、TimesTenは前回の伝播以降にOracleに加えられた変更のみをリフレッシュします。FULL句が指定された場合、TimesTenは自動リフレッシュのたびにキャッシュ内のすべての行を更新します。デフォルトのAUTOREFRESHモードはINCREMENTALです。
WITH LIMIT NumChanges | INCREMENTALモードで多数の完全自動リフレッシュが実行される場合に、AUTOREFRESH INCREMENTAL句でWITH LIMITを指定することによって、変更ログ表のサイズを変更できます。NumChangesの値を10,000から2,147,483,647に設定できます。デフォルト値は20,000です。
INTERVAL IntervalValue | 自動リフレッシュを行う時間隔を分、秒またはミリ秒の単位で指定します。 IntervalValueには、AUTOREFRESHを実行する頻度をMINUTES、SECONDSまたはMILLISECONDSの単位の整数値で指定します。IntervalValueのデフォルト値は5分です。指定した時間隔でAUTOREFRESHを完了できない場合は、実行時に警告が生成され、現在の処理が終了するまで次回のAUTOREFRESHを待機します。待機キューが10に達すると、デーモン・ログに通知メッセージが生成されます。
STATE [ON | OFF | PAUSED] | キャッシュ・グループの作成時にAUTOREFRESHをON、OFFのいずれにするかを設定します。この設定は、ALTER CACHE GROUPコマンドを使用して後で変更できます。デフォルトでは、AUTOREFRESH STATEはPAUSEDです。
FROM | キャッシュ・グループに1つ以上の表定義を指定します。

FROMキーワード以降のすべての記述は、キャッシュ・グループがキャッシュするOracle表の定義から構成されています。各表定義の構文は、CREATE TABLE文と同様です。ただし、キャッシュ・グループ表には、主キー制約が必要です。

表定義には、次のパラメータがあります。

[Owner.]TableName | 新しい表に割り当てる所有者と名前を指定します。所有者名を指定しない場合は、新しい表の所有者名としてログイン名が使用されます。
ColumnDefinition | 表の個々の列の名前、データ型およびNULL値可能かどうかを指定します。各表には列が少なくとも1つ必要です。「列定義」を参照してください。
PRIMARY KEY (ColumnName[,...]) | 表に主キーを指定します。キャッシュ・グループには主キー制約が必須です。ColumnNameは表に対して作成する主キーになる列の名前です。主キーには最大16列を指定できます。1つの指定内でUNIQUEとともに指定することはできません。
FOREIGN KEY (ColumnName[,...]) | 表に外部キーを指定します。ColumnNameは、作成される表の外部キーとなる列の名前です。「FOREIGN KEY」を参照してください。
REFERENCES RefTableName (ColumnName[,...]) | 外部キーが関連付けられている表を指定します。RefTableNameは参照される表の名前で、ColumnNameは表の中で参照される列名です。
READONLY | キャッシュされた表に対する変更を許可しないように指定します。
PROPAGATE | NOT PROPAGATE | キャッシュされた表への変更がコミットされたとき、対応するOracle表へ自動的に伝播されるかどうかを指定します。
UNIQUE HASH ON HashColumnName | この表にハッシュ索引を作成します。HashColumnNameには、この表のハッシュ・キーに含まれる列を指定します。ハッシュ索引に指定される列は、主キーの列と同じである必要があります。
PAGES=PrimaryPages | 表の想定ページ数を指定します。PrimaryPagesの数値に基づいて、ハッシュ索引用に作成されるハッシュ・バケットの数が決まります。最小値は1、最大値は268,435,256です。想定したページ数が少なすぎると、パフォーマンスが低下します。詳細は、「CREATE TABLE」を参照してください。
WHERE ExternalSearchCondition | Oracleが評価するキャッシュ・グループ表のWHERE句。このWHERE句は、キャッシュ・グループに対するすべてのLOADとREFRESH処理に追加されます。他の表を直接参照することはできません。これはTimesTenおよびOracleの両方で解析されます。『Oracle TimesTen Cache Connect to Oracle開発者および管理者ガイド』のWHERE句に関する項を参照してください。

説明

- 2つのキャッシュ・グループで所有者名とグループ名を同じにすることはできません。所有者名を指定しない場合、ログイン名が新しいキャッシュ・グループの所有者名になります。
- WHERE句に動的パラメータを指定することはできません。
- キャッシュ・グループ表は、一時表として作成できません。
- 各表は、Oracleの表と対応している必要があります。
- 表の各列の名前および型は、Oracle表の各列の名前および型と一致している必要があります。『Oracle TimesTen Cache Connect to Oracle開発者および管理者ガイド』のOracleアプリケーションの透過性に関する項を参照してください。また、WHERE句内で列名を参照する場合は、各列名を所有者と表名で完全に修飾する必要があります。
- WHERE句は、キャッシュ・グループ表のみ直接参照できます。キャッシュ外の表は、副問合せで参照のみ可能です。
- 一般的には、CREATE CACHE GROUP、LOAD、UNLOAD、REFRESHまたはFLUSH文のWHERE句の列名を完全に修飾する必要はありません。ただし、同一キャッシュ・グループ内の複数の表を結合する問合せがTimesTenによって自動的に生成されるため、キャッシュ・グループ内の1つ以上の表に同じ名前の列がある場合、列は完全に修飾される必要があります。