PassThrough
これは、キャッシュ・データベースでのみ実行されるSQL文、およびOracle Databaseに渡されるSQL文を指定します。詳細は、『Oracle TimesTen In-Memory Databaseキャッシュ・ガイド』の「パススルー・レベルの設定」と『Oracle TimesTen In-Memory Database SQLリファレンス』の「CREATE CACHE GROUP」を参照してください。
準備されたPassThrough
コマンドを実行する場合、Oracle Databaseの依存オブジェクトのスキーマが準備後に変更されていないと想定しています。スキーマが変更されている場合は、PassThrough
コマンドによってOracle Databaseで予期せぬ結果が発生する可能性があります。
SQL文をOracle Databaseに渡す場合、TimesTenでサポートされるデータ型のみを列定義で使用してください。指定されたデータ型がTimesTenでサポートされていない場合、パススルー文は失敗します。
この属性を使用したOracle Database接続時の分離レベルの変更については、「Isolation」を参照してください。
必要な権限
この属性の値の変更に権限は必要ありません。
TimesTen ScaleoutおよびTimesTen Classicでの使用
この属性は、TimesTen ClassicとTimesTen Scaleoutの両方でサポートされています。設定
PassThrough
は次のように設定します。
属性の設定場所 | 属性の表示 | 設定 |
---|---|---|
CまたはJavaプログラム、あるいはUNIXおよびLinuxシステムのTimesTen Classicの |
|
|
Windows ODBCデータソース・アドミニストレータ |
該当なし |
制限事項
PassThrough機能を使用する場合、いくつかの制限を考慮する必要があります。これには次のものがあります:
-
問合せがOracle Databaseで実行される必要があるように
PassThrough
属性が設定されている場合は、その問合せは変更されずにOracle Databaseに送信されます。問合せがキャッシュ・グループの表に対してシノニムを使用する場合、問合せが成功するためには、同じ名前のシノニムが対応するOracle Database表に定義されている必要があります。 -
TimesTen独自の構文を使用するSQL文がOracle Databaseに渡される場合、TimesTenはその構文がOracle Databaseでサポートされていないことを示すエラー・メッセージを返します。
-
準備されたPassThroughコマンドを実行する場合、Oracle Databaseの依存オブジェクトのスキーマが準備後に変更されていないと想定しています。スキーマが変更されている場合は、予期せぬ結果が発生する可能性があります。
-
TimesTenはキャッシュを無効にする機能を備えていません。TimesTenはキャッシュされた表が最新の状態であるかを検証しません。TimesTenで問合せの構文が正しく、問合せで参照されるすべての表がキャッシュに存在する場合、キャッシュが最新であるかどうかにかかわらず問合せはTimesTenで実行されます。
-
Oracleの
INSERT
、UPDATE
またはDELETE
処理のパススルーは、前述の表で説明するPassThrough
属性の設定によって異なります。TimesTen Cacheは、トリガーやストアド・プロシージャの中に隠されたINSERT
、UPDATE
およびDELETE
処理を検出できません。このため、TimesTenは隠された処理に対してPassThroughルールを適用できません。 -
PL/SQLブロックをOracle Databaseに渡すことはできません。
-
読取り専用キャッシュ・グループに対するパススルーの
INSERT
、UPDATE
またはDELETE
処理の結果は、トランザクションがコミットされた後、および次の自動リフレッシュ処理が完了した後にのみ反映されます。 -
TimesTenの同期ライトスルー・キャッシュ・グループにキャッシュされるOracle Database表に対する更新を検出またはブロックするメカニズムはありません。更新がキャッシュ経由で渡された文によって実行されたものであるか、その他のOracle Databaseアプリケーションからのものであるかにかかわらず、変更内容はTimesTenには反映されません。
-
Oracle Call Interface(OCI)では、入力パラメータのバインド型を表すメカニズムがサポートされていません。アプリケーションでPassThrough文に正しいSQLのデータ型が指定されているかを確認してください。ODBCドライバにより、CおよびSQLのデータ型がTimesTenに変換され、変換後のデータとSQLのデータ型のコードが表示されます。TimesTenはその情報をOCIに示します。
LONG
型およびLONG RAW
型の入力バインド値の長さは4000に制限されます。 -
すべてのパススルー・レベルにおいて、DDL文のパススルーの実行はTimesTen側ではコミットされません。
-
RETURN TWOSAFE
を使用してレプリケートされる処理を含むトランザクションでは、PassThrough
に0
より大きい値を設定できません。PassThrough
に0
よりも大きい値が指定されている場合は、エラーが返され、トランザクションをロールバックする必要があります。 -
PassThrough
を0
、1
、または2
に設定した場合、動的ロード条件が存在するときには次の動作が発生します。-
動的ロードは、すべての動的キャッシュ・グループ・タイプのキャッシュ表に対する
SELECT
操作で発生可能です。 -
INSERT
操作、UPDATE
操作またはDELETE
操作に対する動的ロードは、動的非同期ライトスルーまたは動的同期ライトスルー・キャッシュ・グループのキャッシュされた表に対してのみ実行できます。
-
INSERT
、UPDATE
、DELETE
およびSELECT
文の詳細は、『Oracle TimesTen In-Memory Database SQLリファレンス』の「SQL文」を参照してください。