ここでは、JMS/XLA APIに関するリファレンス情報を示します。内容は次のとおりです。
javax.jms.MapMessage
には、C構造体ttXlaUpdateDesc_t
としてパブリッシュされた、XLA更新ヘッダー内のフィールドに対応する一連の名前および値のペアが含まれています。MapMessage
インスタンスに含まれるフィールドは、更新タイプによって異なります。
JMS/XLA APIで返される各MapMessage
には、整数値としてメッセージ内に記述されている更新タイプを示す__TYPE
(アンダースコア2つ)という名前と値のペアが1つ以上含まれています。タイプは、整数値で指定されています。整数タイプと比較するために、com.timesten.dataserver.jmsxla.XlaConstants
に定義されている定数を使用します。表6-1に、サポートされているタイプを示します。
表6-1 XLA更新タイプ
すべての更新タイプに対して、MapMessage
には次のことを示す名前と値のペアが含まれています。
トランザクションの最初のレコードであるかどうか
トランザクションの最後のレコードであるかどうか
更新がレプリケーションによって実行されたかどうか
どの表が更新されたか
更新された表の所有者
表6-2に、これらのXLAフラグを含む名前と値のペアを示します。各名前の先頭には、2つのアンダースコアが付いています。
表6-2 JMS/XLAフラグ
名前 | 説明 | 対応するttXlaUpdateDesc_tフラグ |
---|---|---|
|
エージングによって削除されたことを示します。このフラグは、XLA更新レコードがエージングによって削除された場合のみ示されます。 |
|
|
カスケード削除によって削除されたことを示します。このフラグは、XLA更新レコードがカスケード削除によって削除された場合のみ示されます。 |
|
|
トランザクション内の最終レコードであり、この操作の後にコミットが実行されたことを示します。これは、 |
|
|
新規トランザクション内の最初のレコードであることを示します。これは、 |
|
|
この変更がレプリケーションによってデータベースに適用されたことを示します。これは、 |
|
|
これは、XLA更新ディスクリプタにはその操作によって実際に変更された列のリストが含まれることを示す |
|
注意: XlaConstants インタフェースは、com.timesten.dataserver.jmsxla パッケージ内にあります。 |
アプリケーションは、MapMessage
メソッドitemExists()
を使用して、フラグが示されるかどうか判断したり、getBoolean()
を使用して、フラグが設定されているかどうかを判断できます。入力時に、XlaConstants.AGING_DELETE_FIELD
などのフラグに対応するXlaConstants
定数を指定します。
多くのDML操作は、XLAイベント・ハンドラで監視可能なXLA更新を生成します。この項では、これらの操作を行うために生成されるMapMessage
オブジェクトの内容について説明します。
INSERT
、UPDATE
およびDELETE
操作では、MapMessage
には、__TBLOWNER
および__TBLNAME
という2つの名前と値のペアが含まれます。これらのフィールドには、更新される表の名前と所有者が記述されます。たとえば、表SCOTT.EMPLOYEES
では、すべての関連するMapMessage
に、文字列SCOTTの値が入った__TBLOWNER
というフィールドと、文字列EMPLOYEESの値が入った__TBLNAME
というフィールドが含まれます。
INSERT
およびDELETE
操作では、挿入または削除された行の完全なイメージはメッセージに含まれ、すべての列値を使用できます。
UPDATE
操作の場合、実際に変更された列を示す列番号のリストだけでなく、行の前後のイメージが使用可能です。列値には、列の名前を使用してアクセスします。前のイメージの列名は、すべて1つのアンダースコアで始まります。たとえば、columnname
には新規の値が含まれており、_columnname
には以前の値が含まれています。
列の値がNULL
である場合、列の値は列リストから省略されます。__NULLS
の名前と値のペアには、NULL
値を含む列のセミコロンで区切られたリストが含まれています。
多くのデータ定義言語(DDL)操作は、XLAイベント・ハンドラで監視可能なXLA更新を生成します。この項では、これらの操作を行うために生成されるMapMessage
オブジェクトの内容について説明します。
__TYPE=1(XlaConstants.CREATE_TABLE)
が指定されているメッセージは、表が作成されていることを示します。表6-3に、CREATE_TABLE
操作に対して生成されるMapMessage
に含まれている名前と値のペアを示します。
表6-3 更新メッセージで提供されるCREATE_TABLEデータ
名前 | 値 |
---|---|
|
作成された表の所有者の文字列値 |
|
作成された表の名前の文字列値 |
|
この表の主キー内の列の名前を含む文字列値 表に主キーがない場合、 書式: <col1name>[;<col2name> [;<col3name>[;...]]] |
|
表の列の名前を含む文字列値 書式: <col1name>[;<col2name> [;<col3name>[;...]]] 注意: 表の列ごとに、列について説明する追加の名前と値のペアが |
|
この列の( |
|
この列の精度を含む整数値( |
|
この列のスケールを含む整数値( |
|
この列の最大サイズを示す整数値( |
|
この列で |
|
この列がタプルのインラインまたはアウトラインのいずれに保存されるかを示すブール値 |
|
この列が表の主キーの一部であるかどうかを示すブール値 |
__TYPE=2 (XlaConstants.DROP_TABLE)
が指定されているメッセージは、表が削除されていることを示します。表6-4に、DROP_TABLE
操作に対して生成されるMapMessage
に含まれている名前と値のペアを示します。
__TYPE=3(XlaConstants.CREATE_INDEX)
が指定されているメッセージは、索引が作成されていることを示します。表6-5に、CREATE_INDEX
操作に対して生成されるMapMessage
に含まれている名前と値のペアを示します。
表6-5 更新メッセージで提供されるCREATE_INDEXデータ
名前 | 値 |
---|---|
|
索引が作成された表の所有者の文字列値 |
|
索引が作成された表の名前の文字列値 |
|
作成された索引の名前の文字列値 |
|
P(主キー)、F(外部キー)、R(標準)の索引タイプを表す文字列値 |
|
H(ハッシュ)、T(範囲)、B(ビットマップ)の索引メソッドを表す文字列値 |
|
索引が一意であるかどうかを示すブール値 |
|
ハッシュ索引内のページ数を表す整数値(範囲索引には指定されません) |
|
索引内の列について説明する文字列値 書式: <col1name>[;<col2name> [;<col3name>[;...]]] |
__TYPE=4(XlaConstants.DROP_INDEX)
が指定されているメッセージは、索引が削除されていることを示します。表6-6に、DROP_INDEX
操作に対して生成されるMapMessage
に含まれている名前と値のペアを示します。
__TYPE=5(XlaConstants.ADD_COLUMNS)
が指定されているメッセージは、表に新規列が追加されていることを示します。表6-7に、ADD_COLUMNS
操作に対して生成されるMapMessage
に含まれている名前と値のペアを示します。
表6-7 更新メッセージで提供されるADD_COLUMNSデータ
名前 | 値 |
---|---|
|
変更された表の所有者の文字列値 |
|
変更された表の名前の文字列値 |
|
この表の主キー内の列の名前を含む文字列値 表に主キーがない場合、 書式: <col1name>[;<col2name> [;<col3name>[;...]]] |
|
表に追加された列の名前を含む文字列値 書式: <col1name>[;<col2name> [;<col3name>[;...]]] 注意: 追加する列ごとに、列について説明する追加の名前と値のペアが |
|
この列の( |
|
この列の精度を含む整数値( |
|
この列のスケールを含む整数値( |
|
この列の最大サイズを示す整数値( |
|
この列で |
|
この列がタプルのインラインまたはアウトラインのいずれに保存されるかを示すブール値 |
|
この列が表の主キーの一部であるかどうかを示すブール値 |
__TYPE=6(XlaConstants.DROP_COLUMNS)
が指定されているメッセージは、表から既存の列が削除されていることを示します。表6-8に、DROP_COLUMNS
操作に対して生成されるMapMessage
に含まれている名前と値のペアを示します。
表6-8 更新メッセージで提供されるDROP_COLUMNSデータ
名前 | 値 |
---|---|
|
変更された表の所有者の文字列値 |
|
変更された表の名前の文字列値 |
|
表から削除された列の名前を含む文字列値 書式: <col1name>[;<col2name> [;<col3name>[;...]]] 注意: 削除された列ごとに、列について説明する追加の名前と値のペアが |
|
この列の( |
|
この列の精度を含む整数値( |
|
この列のスケールを含む整数値( |
|
この列の最大サイズを示す整数値( |
|
この列で |
|
この列がタプルのインラインまたはアウトラインのいずれに保存されるかを示すブール値 |
|
この列が表の主キーの一部であるかどうかを示すブール値 |
__TYPE=14(XlaConstants.CREATE_VIEW)
が指定されているメッセージは、マテリアライズド・ビューが作成されていることを示します。表6-9に、CREATE_VIEW
操作に対して生成されるMapMessage
に含まれている名前と値のペアを示します。
__TYPE=15(XlaConstants.DROP_VIEW)
が指定されているメッセージは、マテリアライズド・ビューが削除されていることを示します。表6-10に、DROP_VIEW
操作に対して生成されるMapMessage
に含まれている名前と値のペアを示します。
__TYPE=16(XlaConstants.CREATE_SEQ)
が指定されているメッセージは、順序が作成されていることを示します。表6-11に、CREATE_SEQ
操作に対して生成されるMapMessage
に含まれている名前と値のペアを示します。
__TYPE=17(XlaConstants.DROP_SEQ)
が指定されているメッセージは、順序が削除されていることを示します。表6-12に、DROP_SEQ
操作に対して生成されるMapMessage
に含まれている名前と値のペアを示します。
__TYPE=19(XlaConstants.CREATE_SYNONYM)
が指定されているメッセージは、シノニムが作成されていることを示します。表6-13に、CREATE_SYNONYM
操作に対して生成されるMapMessage
に含まれている名前と値のペアを示します。
__TYPE=20(XlaConstants.DROP_SYNONYM)
が指定されているメッセージは、シノニムが削除されていることを示します。表6-14に、DROP_SYNONYM
操作に対して生成されるMapMessage
に含まれている名前と値のペアを示します。
__TYPE=18(XlaConstants.TRUNCATE)
が指定されているメッセージは、表が切り捨てられていることを示します。表内のすべての行が削除されています。表6-15に、TRUNCATE
操作に対して生成されるMapMessage
に含まれている名前と値のペアを示します。
この項では、JMS/XLAに対するデータ型の考慮事項を説明します。
表6-16に、TimesTenでサポートされているデータ型に対するアクセス方法を示します。データ型の詳細は、『Oracle TimesTen In-Memory Database SQLリファレンス・ガイド』のデータ型に関する項を参照してください。
表6-16 データ型のマッピング
TimesTenの列のデータ型 | MapMessageメソッドでの読取り |
---|---|
CHAR(n)
|
|
VARCHAR(n)
|
|
NCHAR(n)
|
|
NVARCHAR(n)
|
|
NVARCHAR2(n)
|
|
DOUBLE |
アプリケーションで |
FLOAT |
アプリケーションで |
DECIMAL(p,s)
|
アプリケーションで |
NUMERIC(p,s)
|
アプリケーションで |
INTEGER |
|
SMALLINT |
|
TINYINT |
|
BINARY(n)
|
|
VARBINARY(n)
|
|
DATE |
アプリケーションで |
TIME |
アプリケーションで |
TIMESTAMP |
アプリケーションで |
TT_CHAR |
|
TT_VARCHAR |
|
TT_NCHAR |
|
TT_NVARCHAR |
|
ORA_CHAR |
|
ORA_VARCHAR2 |
|
ORA_NCHAR |
|
ORA_NVARCHAR2 |
|
VARCHAR2 |
|
TT_TINYINT |
|
TT_SMALLINT |
|
TT_INTEGER |
|
TT_BIGINT |
|
BINARY_FLOAT |
|
BINARY_DOUBLE |
|
REAL |
|
NUMBER |
|
ORA_NUMBER |
|
TT_DECIMAL |
|
TT_TIME |
|
TT_DATE |
|
TT_TIMESTAMP |
|
ORA_DATE |
|
ORA_TIMESTAMP |
|
TT_BINARY |
|
TT_VARBINARY |
|
ROWID |
|
|
注意: LOB自体の情報は得られません。LOBフィールドには長さがゼロのデータまたはnullデータが含まれます(値が実際に |
|
注意: LOB自体の情報は得られません。LOBフィールドには長さがゼロのデータまたはnullデータが含まれます(値が実際に |
次のJMSクラスは、JMS/XLAアプリケーションで使用できます。JMS/XLA APIではパブリッシュ/サブスクライブ・メッセージのみがサポートされていることに注意してください。
Message
(親クラスのみ)
TopicConnectionFactory
トピック
TopicSubscriber
Connection
Session
ConnectionMetaData
MapMessage
TopicConnection
TopicSession
ConnectionFactory
Destination
MessageConsumer
ExceptionListener
これらのクラスのマニュアルについては、次のJava EEの場所を参照してください(1つ目はJava 6用、2つ目はJava 5.0用)。
http://docs.oracle.com/javaee/6/api/
http://docs.oracle.com/javaee/5/api/
TimesTen com.timesten.dataserver.jmsxla
パッケージには、TargetDataStore
インタフェースとTargetDataStoreImpl
クラスが含まれています。
詳細は、『Oracle TimesTen In-Memory Database JMS/XLA Java API Reference』を参照してください。
このインタフェースは、ソース・データベースからターゲット・データベースにXLA更新レコードを適用するために使用されます。ソースおよびターゲット・データベース・スキーマは、影響を受けた表で同一である必要があります。
このインタフェースは、表6-17に示すメソッドを定義します。
表6-17 TargetDataStoreメソッド
メソッド | 説明 |
---|---|
|
XLA更新記述子をターゲット・データベースに適用します。 |
|
データベースへの接続をクローズし、リソースを解放します。 |
|
手動コミットを実行します。 |
|
自動コミット・フラグの値を返します。 |
|
データベース接続文字列を返します。 |
|
更新の競合を確認するためのフラグの値を返します。 |
|
オブジェクトがクローズしているかどうかを確認します。 |
|
データベースが有効であるかを確認します。 |
|
最後のトランザクションをロールバックします。 |
|
適用時に自動コミットのフラグを設定します。 |
|
適用時の更新の競合の確認のフラグを設定します。 |
表6-18に、JMS/XLAで提供されているJMSのメッセージ・ヘッダー・フィールドを示します。