ttLoadFromOracle

このプロシージャはTimesTenの表名、Oracle SELECT文、およびパラレル・ロードのスレッド数をとります。Oracle Database表に対して問合せを実行し、指定したTimesTen表に結果セットをロードします。ロードの実行中に、TimesTenデータベースに256行挿入されるたびに暗黙的なコミットが実行されます。

Oracle DatabaseからTimesTenの表にデータをロードする際、文字セットの変換は行われません。TimesTenデータベースとOracle Databaseは同じ文字セットを使用する必要があります。

このプロシージャでは接続属性UID、接続属性OraclePWDおよび接続属性OracleNetServiceNameを指定する必要があります。このプロシージャをコールした後に、コミットする必要があります。

詳細と使用方法の情報は、『Oracle TimesTen In-Memory Databaseオペレーション・ガイド』「キャッシュなしでのOracle DatabaseからTimesTen表へのデータのロード」を参照してください。

必要な権限

このプロシージャには、ロードする表に対するINSERT権限が必要です。セッションは、Oracleデータベースに対して問合せを実行するために必要な、すべての権限を持っている必要があります。

TimesTen ScaleoutおよびTimesTen Classicでの使用

このプロシージャは、TimesTen Classicでサポートされています。

TimesTen Scaleoutアプリケーションでこの組込みプロシージャをコールできます。

TimesTen Scaleoutの場合、このプロシージャは、コール元の要素に対してローカルに実行されます。

関連ビュー

このプロシージャには関連ビューはありません。

構文

ttLoadFromOracle(['tblOwner'], 'tblName', 'Query' [,numThreads], 'Options')

パラメータ

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

パラメータ 説明

tblOwner

TT_CHAR (30)

TimesTen表の所有者(オプション)。指定しない場合は、接続IDが使用されます。

tblName

TT_CHAR(30) NOT NULL

Oracle Databaseからのデータがロードされる表の名前。表がまだない場合には、組込みプロシージャttTableSchemaFromOraQueryGetを使用して、表を作成するスキーマを取得できます。

指定するTimesTen表はシステム表、シノニム、ビュー、マテリアライズド・ビューまたはマテリアライズド・ビューの詳細表、グローバル一時表、キャッシュ・グループ表とすることはできません。

SelectSQL

TT_VARCHAR(409600) NOT NULL

表の列定義を導出する、Oracle Databaseに対するSELECT問合せ。

Oracle Databaseに対する問合せはパラメータ・バインディングを持つことができません。SELECTリストのすべての式に、列別名を指定します。指定しない場合、実装に依存した列名が想定され、式は評価されません。

numThreads

TT_INTEGER

パラレル・ロードのスレッド数(オプション)。NULLの場合は、デフォルトの4になります。

表のパラレル・ロードを指定します。同時にロードを実行するスレッドの数を指定します。1つのスレッドでOracleデータベースからのバルク・フェッチを実行し、その他のスレッドでTimesTenへの挿入を実行します。各スレッドで独自の接続またはトランザクションが使用されます。

NumThreadsの最小値は2です。最大値は10です。10より大きい値を指定すると、TimesTenは値10を割り当てます。

また、readersオプションを使用して、numThreadsパラメータからOracleデータベースのバルク・フェッチに使用するスレッドの総数を指定することもできます。

Options

TT_VARCHAR (1000)

key=valueのペアで指定するオプションの文字列。サポートされる値は、「オプションの文字列」を参照してください。

デフォルトはNULLです。

詳細は、次の表を参照してください。

オプションの文字列

このオプションは、キー=値のペアとして指定し、各ペアはセミコロンで区切ります。

オプションのパラメータ 説明

localOnly

Y or N

このオプションは、特定のインスタンスの行のみをロードします。グリッドに特定のインスタンスをロードしてから、このオプションを使用します。このオプションを使用すると、ttLoadFromOracleによって表のすべての行が選択されますが、特定のインスタンスにハッシュされていない行は無視されます。

このオプションは、TimesTen Scaleoutでのみサポートされます。

デフォルト値はNです。

ErrorThreshold

value > 0

このオプションは、組込みプロシージャがエラー・メッセージを返すエラーしきい値を設定します。

デフォルト値は1です。ttLoadFromOracle組込みプロシージャでエラーが発生した場合、組込みプロシージャは停止し、エラー・メッセージを返します。

IgnoreDuplicates

Y or N

このオプションにより、ttLoadFromOracle組込みプロシージャは一意性制約違反を無視し、結果として重複が無視されます。TimesTen表に一意性制約がある場合にのみ、このオプションを使用できます。

デフォルト値はNです。

ResumeFromSCN

scn_of_last_load

このオプションは、特定のSCNからロード操作を再開します。resumeFromSCNオプションが有効である場合、自動的に重複は無視されます。

デフォルト値は、最新のSCNです。

DirectLoad

YまたはN

このオプションは、パフォーマンス上の利点があるバルク挿入モードを有効にします。

このオプションは、TimesTen IMDBでのみサポートされます。

デフォルト値はNです。

readers

numThreads > value > 0

このオプションは、numThreadsパラメータからOracleデータベースのバルク・フェッチに使用するスレッドの総数を指定します。

たとえば、numThreadsパラメータに8、readersオプションに3を指定した場合、3つのスレッドでOracleデータベースからデータをバルク・フェッチし、5つのスレッドでTimesTenデータベースにデータをロードします。

結果セット

ttLoadFromOracleは、次の結果セットを返します。

説明

numRows

TT_BIGINTNOT NULL

ロードされた行数。

numErrors

TT_INTEGERNOT NULL

エラーが発生した行数。

errCode

TT_INTEGER

TimesTenのエラー・コードを示し、次のいずれかになります。

0 - エラーなしでロードが正常に完了しました。

-1 - エラーありでロードが正常に完了しました。

-2 - エラーでロードが異常終了しました。

-3 - 領域不足エラー、接続の喪失または無効化などの致命的なエラーでロードが異常終了しました。

errMsg

VARCHAR2 (4000)

エラー・メッセージ(次の内容が含まれます):

  • ロードの開始時間および終了時間

  • データの問合せに使用されたSCN

  • エラーが発生した行数

  • ロードされた行数

次の例では、OracleデータベースのHR.EMPLOYEES表の従業員に関するTimesTen表のロードを選択し、それをTimesTen HR.EMPLOYEES表にロードしています。この例ではエラーが返されます。この例では、列STATETT_TINYINTです。

Command> CALL ttLoadFromOracle ('HR','EMPLOYEES',
'SELECT * FROM HR.EMPLOYEES');
< 99, 0, 0, 'Started=2014-08-01 13:48:21; Ended=2014-08-01 13:48:23;
 Statement=ttLoadFromOracle('HR', 'SELECT * FROM HR.EMPLOYEES'); SCN=1234567;
 Errors=1; Rows Loaded=99' >
<  NULL, NULL, 2614,'Value outside of range supported by integral type. Column
 STATE=-1' >

ノート

  • TimesTenはロードするまでは表を空にしません。ターゲット表に主キーは必要ありません。列型または列数が一致しないために問合せの出力をターゲット表の行に変換できない場合、TimesTenはエラーを返します。TimesTen LOB列へのデータのロードはサポートしていません。Oracle Databaseに対する問合せにLOB出力がある場合、VAR型にマップされます。

  • ロード・プロセスでは、TimesTen表の列のデータ型とサイズが結果セットのデータ型とサイズに一致することを確認しません。かわりに、挿入が試行され、列のデータ型をマップできない場合、またはSQL問合せからのOracle DatabaseデータがTimesTenの列サイズを超える場合、TimesTenはエラーを返します。LOB列は4MBに切り捨てられます。

  • 列を追加するために表を変更すると、セカンダリ・パーティションが追加されます。表への複数のパーティションのロードは、ttLoadFromOracleではサポートされていません。