TTXlaPersistConnectionリファレンス
データベースへのXLA接続を作成するには、TTXlaPersistConnectionを使用します。
TTXlaPersistConnectionの使用方法も参照してください。
パブリック・メソッド
この項では、TTXlaPersistConnectionパブリック・メソッドの概要を説明します。
パブリック・メソッドの概要
| メソッド | 説明 |
|---|---|
|
ブックマークを次の更新セットに進めます。 |
|
|
指定されたブックマークで接続するか、(メソッド・シグネチャに応じ)存在しない場合は作成します。 |
|
|
ブックマークを削除し、データベースから切断します。 |
|
|
ブックマークはそのままにし、データベースとのXLA接続を閉じます。 |
|
|
指定された待機時間内にトランザクション・ログの更新をフェッチします。 |
|
|
現在のトランザクション・ログの位置を取得します。 |
|
|
|
ackUpdates()
void ackUpdates()
このメソッドは、ブックマークを次の更新セットに進めるために使用されます。更新セットを確認した後、このブックマークからは更新は再度表示できません。したがって、setBookmarkIndex()コールではackUpdates()へのコールによって認識されたXLAレコードの再生は許可しません。(更新セットの再生については、「getBookmarkIndex()」と「setBookmarkIndex()」の説明を参照してください。)
アプリケーションは、XLAレコードのバッチが読み取られて処理されたら、利用可能なファイル・システム領域をトランザクション・ログが一杯にしないように、更新を確認する必要がありますが、相対的に負荷の高い操作なのでackUpdates()は頻繁にコールしないようにする必要があります。
アプリケーションがレコードのバッチを読み取るためにXLAを使用し、ackUpdates()のコール前に失敗する場合、アプリケーションがXLA接続を再構築するときにレコードは取得されます。
ノート:
トランザクション・ログは、指定している場合、TimesTen LogDir属性で設定したファイル・システムの場所にあり、LogDirを指定していない場合はDataStore属性で設定した場所にあります。Oracle TimesTen In-Memory Databaseリファレンスのデータ・ストア属性を参照してください。
Connect()
virtual void Connect(const char* connStr, const char* bookmarkStr,
bool createBookmarkFlag)
virtual void Connect(const char* connStr, const char* username,
const char* password, const char* bookmarkStr,
bool createBookmarkFlag)
virtual void Connect(const char* connStr,
TTConnection::DRIVER_COMPLETION_ENUM driverCompletion,
const char* bookmarkStr, bool createBookmarkFlag)
virtual void Connect(const char* connStr, const char* bookmarkStr)
virtual void Connect(const char* connStr, const char* username,
const char* password, const char* bookmarkStr)
virtual void Connect(const char* connStr,
TTConnection::DRIVER_COMPLETION_ENUM driverCompletion,
const char* bookmarkStr)各XLA接続にはブックマーク名が関連付けられているため、切断および再接続後、トランザクション・ログ内の同じ場所が検出可能です。接続のブックマーク名はbookmarkStrパラメータで指定します。
前述の1番目のメソッドのセットのcreateBookmarkFlagブール・パラメータは、ブックマークが新規か、以前に作成されたかを示します。ブックマークを新規と指定し(createBookmarkFlag==true)、すでに存在している場合はエラーが返されます。同様に、ブックマークがすでに存在していると指定し(createBookmarkFlag==false)、存在していなかった場合はエラーが返されます。
示している2番目のメソッドのセットについて、createBookmarkFlagがない場合、TTClassesはまず提供されたブックマークを再利用して接続を試行します(createBookmarkFlag==falseと同等な動作)。そのブックマークが存在しない場合、TTClassesは次にbookmarkStrという名前の新規ブックマークの作成を試行します(createBookmarkFlag==trueと同じ動作)。このメソッドは、XLAブックマークが存在するかどうかを開発者が気にかけたくない場合に備えて、XLA接続ロジックを簡略化するために便宜上提供されているものです。
createBookmarkFlagの有無にかかわらずいずれのモードのときも、接続文字列または別のパラメータを使用してユーザー名とパスワードを指定するか、DRIVER_COMPLETION_ENUM値を指定します。DRIVER_COMPLETION_ENUMの詳細は、TTConnectionリファレンスを参照してください。
データベースに接続する権限は、CREATE SESSION権限を使用して、直接またはPUBLICロールを介してユーザーに付与する必要があります。接続メソッドを参照してください。これに加え、XLA接続を作成するにはXLA権限が必要です。
ノート:
特定のブックマーク名で接続できるXLA接続は1つのみです。複数の接続が同じブックマークに接続しようとすると、エラーが返されます。
deleteBookmarkAndDisconnect()
void deleteBookmarkAndDisconnect()
このメソッドでは、データベースがそのブックマークのレコードをそれ以上保持しないように接続と現在関連付けられているブックマークをまず削除し、その後データベースから切断します。
ブックマークを削除せずに切断するには、かわりにDisconnect()メソッドを使用します。
Disconnect()
virtual void Disconnect()
このメソッドは、データベースとのXLA接続を閉じます。このメソッドをコールした後も、XLAブックマークは存続します。
ブックマークを削除してデータベースから切断する場合は、かわりにdeleteBookmarkAndDisconnect()を使用します。
fetchUpdatesWait()
void fetchUpdatesWait(ttXlaUpdateDesc_t*** arry, int maxrecs,
int* recsP, int seconds)このメソッドは、データベースの変更を記述したレコードのセットをフェッチするために使用します。ttXlaUpdateDesc_t構造体のリストが返されます。フェッチされるXLA更新がない場合、このメソッドは指定された秒数待機してから返されます。
待機する秒数をsecondsで指定し、受信するレコードの最大数をmaxrecsで指定します。このメソッドは、実際に受信したレコードの数recsPと変更を定義する構造をポイントするポインタの配列arryを返します。
このメソッドによって返されるttXlaUpdateDesc_t構造体は、XLA仕様で定義されます。これらのメソッドのC++オブジェクト指向カプセル化は提供されません。通常、fetchUpdatesWait()のコール後、アプリケーションはTTXlaTableList::HandleChange()へのコールのシーケンスでこれらのttXlaUpdateDesc_t構造を処理します。
Oracle TimesTen In-Memory Database C開発者ガイドのttXlaUpdateDesc_tを参照してください。
getBookmarkIndex()
void getBookmarkIndex()
このメソッドは、現在のブックマーク位置を取得し、以降のsetBookmarkIndex()コールで使用可能となるクラスのプライベート・データ・メンバーに保存します。
setBookmarkIndex()
void setBookmarkIndex()
このメソッドでは、保存されたトランザクション・ログの索引に戻り、ブックマークを以前getBookmarkIndex()へのコールで取得したアドレスにリストアします。このメソッドを使用すると、XLAレコードのバッチを再生できます。
ackUpdates()がコールされると、格納されているトランザクション・ログ・プレースホルダが無効になることに注意してください。ackUpdates()の後でsetBookmarkIndex()がコールされても、以前に取得されたブックマークの位置まで戻ることができないため、エラーが返されます。