LOAD CACHE GROUP
LOAD CACHE GROUP文は、Oracle Database表からTimesTenキャッシュ・グループにデータをロードします。
必要な権限
キャッシュ・グループの所有者に必要な権限はありません。
別のユーザーのキャッシュ・グループの場合、LOADまたはLOAD ANY CACHE GROUPが必要です。
基礎となる表に対するINSERT権限、DELETE権限、UPDATE権限。
TimesTen Scaleoutでの使用
この文は、TimesTen Scaleoutでサポートされています。
SQL構文
LOAD CACHE GROUP [Owner.]GroupName [WHERE ConditionalExpression] COMMIT EVERY n ROWS [PARALLEL NumThreads [READERS NumReaders]]
または
LOAD CACHE GROUP [Owner.]GroupName WITH ID (ColumnValueList)
ノート:
WITH ID句は、TimesTen Scaleoutではサポートされていません。
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
キャッシュ・グループに割り当てられた名前。 |
|
|
|
|
|
|
|
|
キャッシュ・グループ表のパラレル・ロードを実行します。同時にロードを実行するスレッドの数を指定します。1つのスレッドがOracle Databaseからのバルク・フェッチを実行し、その他のスレッド(
|
|
|
このオプションでは、Oracle Databaseからのバルク・フェッチのために使用する たとえば、
|
|
|
|
説明
-
LOAD CACHE GROUPは、キャッシュ・グループの定義を満たし、キャッシュ・グループにまだ存在していないすべての新しいキャッシュ・インスタンスをOracle Databaseからロードします。 -
キャッシュ・グループがレプリケートされるか、またはAWTキャッシュ・グループである場合、
LOAD CACHE GROUP文を発行する前に、レプリケーション・エージェントが実行中であることを確認してください。キャッシュ・エージェントが稼働していることを確認してください。 -
LOAD CACHE GROUPは、独自のトランザクション内で実行され、トランザクション内の最初の操作である必要があります。 -
LOAD CACHE GROUPは、Oracle Database表に対する新規(挿入)行のみを、対応するTimesTenキャッシュ表にロードします。 -
エラーが発生するとロールバックされます。キャッシュ・インスタンスが定期的にコミットされる場合、エラーが発生すると残りのロードは中止されます。ロードは直前にコミットした時点までロールバックされます。
-
COMMIT EVERYnROWS(n>= 0)を指定しているときにLOAD CACHE GROUP文が失敗すると、ロードされた行の一部はすでにコミットされているために、ターゲット・キャッシュ・グループの内容が一貫性のない状態になる場合があります。一部のキャッシュ・インスタンスが部分的にしかロードされていない可能性があります。UNLOAD CACHE GROUP文を使用してキャッシュ・グループをアンロードしてから、キャッシュ・グループを再ロードします。 -
一般的には、
LOAD CACHE GROUP文のWHERE句の列名を完全に修飾する必要はありません。ただし、同一キャッシュ・グループ内の複数の表を結合する問合せがTimesTenによって自動的に生成されるため、キャッシュ・グループ内に同じ名前の列を持つ表が複数ある場合は、列を完全に修飾する必要があります。 -
読取り専用キャッシュ・グループをロードする場合、次の条件を満たしている必要があります。
-
AUTOREFRESHのSTATEは、PAUSEDにする必要があります。 -
LOAD CACHE GROUP文ではWHERE句を使用できません(動的キャッシュ・グループの場合を除く)。 -
キャッシュ・グループは空である必要があります。
-
-
キャッシュ・グループの自動リフレッシュ状態は、
LOADCACHEGROUP操作の完了後に変更されることがあります。詳細は、『Oracle TimesTen In-Memory Databaseキャッシュ・ガイド』の「自動リフレッシュを使用する動的キャッシュ・グループのロードおよびリフレッシュ」を参照してください。 -
LOAD CACHE GROUP文の実行後、ODBC関数SQLRowCount()、JDBCメソッドgetUpdateCount()、およびOCI_ATTR_ROW_COUNT引数を指定したOCI関数OCIAttrGet()を実行すると、ロードされたキャッシュ・インスタンスの数が返されます。 -
次の場合に
WITH ID句を使用します。-
キャッシュ・インスタンスのロード速度を上げる場合(
WHERE句の中で使用) -
バインディング・パラメータを指定する場合
-
障害発生時にロード・トランザクションをロールバックする場合
-
制限
-
LOADCACHEGROUP...WITHID句は、TimesTen Scaleoutではサポートされていません。
-
WHERE句で子表を参照しないでください。 -
次の場合には
PARALLEL句を指定しないでください。-
WITH ID句が使用されている場合 -
COMMIT EVERY 0 ROWS句が使用されている場合 -
データベース・レベルのロックが有効な場合(接続属性
LockLevelが1に設定されている場合)
-
-
次のタイプのキャッシュ・グループをロードする場合は、
WITH ID句を使用しないでください。-
静的読取り専用キャッシュ・グループ
-
自動リフレッシュ属性が指定された静的ユーザー管理キャッシュ・グループ
-
AUTOREFRESHおよびPROPAGATE属性が指定されたユーザー管理キャッシュ・グループ
-
-
WITH ID句はCOMMIT EVERYnROWS句と同時に使用しないでください。
例
CREATE CACHE GROUP recreation.cache FROM recreation.clubs ( clubname CHAR(15) NOT NULL, clubphone SMALLINT, activity CHAR(18), PRIMARY KEY(clubname)) WHERE (recreation.clubs.activity IS NOT NULL); LOAD CACHE GROUP recreation.cache COMMIT EVERY 30 ROWS;
HRスキーマを使用して、PARALLEL句とLOAD CACHE GROUP文を同時に使用する例を示します。COMMIT EVERY n ROWS句が必要です。CACHEGROUPSコマンドを発行します。キャッシュ・グループcg2が定義され、自動リフレッシュの状態がPaused(一時停止中)であることが示されています。キャッシュ・グループcg2をアンロードしてから、LOAD CACHE GROUP文とPARALLEL句を指定してパラレル・ロードを実行します。25個のキャッシュ・インスタンスがロードされます。
Command> CACHEGROUPS; Cache Group SAMPLEUSER.CG2: Cache Group Type: Read Only Autorefresh: Yes Autorefresh Mode: Incremental Autorefresh State: Paused Autorefresh Interval: 1.5 Minutes Root Table: SAMPLEUSER.COUNTRIES Table Type: Read Only Child Table: SAMPLEUSER.LOCATIONS Table Type: Read Only Child Table: SAMPLEUSER.DEPARTMENTS Table Type: Read Only 1 cache group found. Command> UNLOAD CACHE GROUP cg2; 25 cache instances affected. Command> COMMIT; Command> LOAD CACHE GROUP cg2 COMMIT EVERY 10 ROWS PARALLEL 2; 25 cache instances affected. Command> COMMIT;
次の例では、対応するOracle Database表からnew_customersキャッシュ・グループのTimesTenキャッシュ表に、顧客番号が5000以上の顧客のキャッシュ・インスタンスのみをロードします。
LOAD CACHE GROUP new_customers WHERE (oratt.customer.cust_num >= 5000) COMMIT EVERY 256 ROWS;