ヘッダーをスキップ
Oracle® Application Server CDC Adapters for SQL Serverユーザーズ・ガイド
11g リリース1(11.1.1)
B61404-02
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

C OracleAS CDC Adapter for SQL Serverのプロパティの編集

OracleAS CDC Adapter for SQL Serverには、複数の構成プロパティがあります。「OracleAS CDC Adapter for SQL Serverでのチェンジ・データ・キャプチャの設定」の手順を実行した後、Oracle Studioでプロパティを編集できます。この章では、構成プロパティおよびそれらの編集方法について説明します。ここの内容は、次のとおりです。

Oracle Studioでのプロパティの編集

OracleAS CDCソリューションを作成した後、プロパティを編集することもできます。ソリューションによって、アダプタおよびCDC Queueアダプタという2つのアダプタが作成されます。アダプタはサーバー・コンピュータ上に作成され、CDC Queueアダプタはステージング領域コンピュータ上に作成されます。詳細は、「Oracle Studioでのチェンジ・データ・キャプチャの設定」を参照してください。

OracleAS CDCアダプタのプロパティの編集

CDCアダプタ・プロパティを編集するには、サーバー・コンピュータでOracle Studioの「Design」パースペクティブを開き、CDCソリューションのバインディングを見つけます。次に、アダプタを開きます。アダプタには、CDCソリューションの名前に、_agという接尾辞が付いた名前が付けられています。アダプタ・プロパティに加えた変更は、CDCソリューションを再デプロイするとリセットされるため、これらの変更をソリューションのデプロイメント後に再度適用する必要があります。ソリューションのデプロイの詳細は、「チェンジ・データ・キャプチャのデプロイ」を参照してください。

CDCアダプタのプロパティを編集するには、次の手順を実行します。

  1. 「スタート」メニューから、「プログラム」「Oracle」「Studio」を選択します。

  2. 「Machines」フォルダを開きます。

  3. 「Oracle Studioでのチェンジ・データ・キャプチャの設定」で作成したサーバー・マシンを開きます。

  4. 「Bindings」フォルダを開き、CDCソリューションの名前に_agという接尾辞が付いたバインディングを開きます。

  5. 「Adapter」フォルダを開きます。

  6. ソリューションの名前および_agという接尾辞を持つアダプタを右クリックし、「Open」を選択します。

    エディタ内にアダプタ構成エディタが開き、アダプタのプロパティが表示されます。

  7. 必要に応じて、アダプタのパラメータを編集します。

    プロパティの詳細は、「OracleAS CDCアダプタの構成プロパティ」を参照してください。

構成プロパティ

この項では、SQL Server CDCアダプタの構成プロパティについて説明します。プロパティは、Oracle Studioを使用して編集できます。SQL Server CDCには、次のタイプのプロパティがあります。

CDCのログ出力プロパティ

Logger Name: データ・キャプチャに使用されるログ・ストリームの名前。

OracleAS CDCアダプタの構成プロパティ

この項では、Oracle CDCアダプタの共通構成プロパティおよびステージング領域コンピュータ上にある変更ルーターの構成プロパティについて説明します。

CDCアダプタ・プロパティを編集するには、Oracle Studioの「Design」パースペクティブを開き、作成したCDCソリューションのバインディングを見つけます。バインディングには、CDCソリューションの名前に_agという接尾辞が付いた名前が付けられています。ソリューションの名前および_agという接尾辞を持つアダプタを開き、プロパティを編集します。Oracle Studioでアダプタのプロパティを編集する方法については、「Oracle Studioでのプロパティの編集」を参照してください。アダプタ・プロパティに加えた変更は、CDCソリューションを再デプロイするとリセットされるため、これらの変更をソリューションのデプロイメント後に再度適用する必要があります。

構成プロパティの詳細は、次の項で説明しています。

OracleAS CDC Adapter for SQL Serverのプロパティ

OracleAS CDC Adapter for SQL Serverのプロパティは、次のとおりです。

すべてのOracle CDCアダプタに共通のその他のプロパティもあります。Oracle CDCアダプタの共通プロパティの詳細は、「CDCアダプタの共通プロパティ」を参照してください。

  • transientStorageDirectory: 一時記憶域ファイルがあるフォルダへのフルパスを入力します。このプロパティは、CDCサービスを設定するときに、CDC Solutionウィザードでも定義されます。

CDC Queueアダプタのプロパティ

CDC Queueアダプタは、ステージング領域で見つかるデータベース・アダプタです。「Oracle Studioでのチェンジ・データ・キャプチャの設定」を実行しているときに自動的に作成されます。Oracle Studioのアダプタのエディタで表示できる次の3つのプロパティがあります。

  • connectString

  • defaultDatasource

  • multipleResults

CDCソリューションでキュー・アダプタが適切に機能するようにするには、これらのプロパティの値を変更しないでください。

CDC Queueアダプタに、アダプタのXMLスキーマで表示できるその他のプロパティがある場合があります。XMLの表示方法の詳細は、「アダプタ・メタデータのXML」を参照してください。

XMLで表示される次のプロパティのみが編集可能です。

  • maxRecords: 返されるレコードの最大数。

Oracle StudioでXMLレコードを編集する方法については、「Oracle StudioでのXMLファイルの編集」を参照してください。

CDCアダプタの共通プロパティ

次の表に、Oracle CDCアダプタの共通構成プロパティを示します。OracleAS CDC Adapter for SQL Server固有のCDCアダプタのプロパティの詳細は、「OracleAS CDC Adapter for SQL Serverのプロパティ」を参照してください。

表C-1 CDCアダプタの構成プロパティ

パラメータ デフォルト 説明

datasource

string


OracleAS CDCアダプタのデータソースの名前。

routers



アダプタに接続し、処理のためにアダプタから変更イベントを取得できるユーザーのリスト。ルーターが指定されていない場合、ワークスペースの有効なユーザーがOracle Connectアダプタから変更イベントを取得できます。

Oracle Studioでユーザーのリストを追加するには、「router」プロパティを開き「users」を右クリックします。Item(_#)と呼ばれる新しいエントリが「Property」列に追加されます。「Value」列で、このルーターのユーザー名を入力します。

retryInterval

int

2

データベース・ジャーナルのポーリング間隔。データベース・ジャーナルでイベントが受信されていない場合、アダプタはこのプロパティで指定された時間(秒単位)待機します。

getTransactionInfo

boolean

true

trueの場合、トランザクション情報(begincommitrollback)が返されます。

getBeforeImage

boolean

false

trueの場合、イメージ前情報が返されます。

realTime

boolean

true

trueの場合、変更イベントの取得における待機時間は短縮されますが、データベース・ジャーナルのポーリングは増加します。

変更ルーターにより、アダプタからN個のイベントが要求されます。アダプタによってデータベース・ジャーナルで検出されるイベントがN個よりも少なく、realTimetrueの場合は、これらのイベントがすぐに変更ルーターに返されます。realTimeがfalseの場合は、retryIntervalで指定された秒数待機した後、アダプタによってジャーナルが再度ポーリングされます。

logLevel



ロギング・レベル。使用可能なログ・レベルは、次のとおりです。

  • none

  • api

  • internalCalls

  • info

  • debug

checkTimeoutEveryNEvents

int

100

CDCアダプタによってtimeout値がチェックされるまでに発生するイベント数。たとえば、このプロパティが100に設定されている場合、100個のイベントが発生した後、アダプタによってtimeout値がチェックされます。timeoutプロパティで設定されている時間が経過すると、アダプタはタイム・アウトになります。


変更ルーターのプロパティ

次の表に、SQLベースの変更イベント・ルーターの構成パラメータを示します。

ルーター・プロパティを編集するには、Oracle Studioの「Design」パースペクティブを開き、作成したCDCソリューションのバインディングを見つけます。バインディングには、CDCソリューションの名前に_routerという接尾辞が付いた名前が付けられています。ソリューションの名前および_routerという接尾辞を持つアダプタを開き、プロパティを編集します。Oracle Studioでアダプタのプロパティを編集する方法については、「Oracle Studioでのプロパティの編集」を参照してください。

表C-2 変更ルーターの構成パラメータ

パラメータ デフォルト 説明

cdcDatasource

string


OracleAS変更データソース。

eliminateUncommittedChanges

Boolean

false

trueの場合、コミットされた変更レコードのみが変更表に移動されます。falseの場合、すべての変更レコードが変更表に移動されるため(この場合、最小限のメモリーが使用されます)、ロールバックされたデータが変更表に含まれていることがあります。ほとんどのアダプタでは、RIの考慮事項に従って、ロールバックでアダプタによって生成された変更レコードを補正することにより、ロールバックされた変更が自然に消去されます。詳細は、それぞれのCDCアダプタのドキュメントを参照してください。詳細は、「参照整合性に関する考慮事項」を参照してください。

eventExpirationHours

int

48

ステージング領域内の変更表に変更レコードを保持する時間を指定します。指定した時間が経過すると、変更レコードは削除されます。

0から50000の値を設定できます。

0は、レコードが削除されないことを意味します。値1は、レコードが1時間保持されることを意味します。

logLevel

enum


ルーターのロギング・レベル。使用可能なログ・レベルは、次のとおりです。

  • none

  • api

  • internalCalls

  • info

  • debug

maxDeletedEventsInBatch

int

500

単一のパスで削除される期限切れの変更レコード数を制御します。大量の変更イベントが継続的に受信されている場合に、待機時間を短縮するために、この値を減らす必要があることがまれにあります。

maxOpenfiles

int

200

ルーターによって開かれる物理ファイルの数を制御します。

maxTransactionMemory

int(Kb単位)

1000

ディスクにオフロードされる前にトランザクションごとにメモリーに格納できるメモリー量を指定します。メモリーよりも遅いディスクが頻繁に使用されすぎないように、この数は平均トランザクション・サイズよりも大きくする必要があります。

maxStagingMemory

int(Kb単位)

100000

アクティブなトランザクション(まだコミットもロールバックもされていないトランザクション)を格納するために使用できる合計メモリー量を指定します。

sourceEventQueue

  • server

  • workspace

  • adapter

  • eventWait

  • maxEventsAsBlocks

  • reconnectWait

  • fixedNat

構造:

string

string

string

int

int

int

boolean

30

250

15

false

OracleAS CDCアダプタへの接続情報。

stagingDirectory

string


ステージング領域変更ファイルが格納されるディレクトリを指定します。このディレクトリには、オフロードされたトランザクションやタイムアウトとなったトランザクションおよびエラー・ファイルも格納されます。

transactionTimeout

int(秒単位)

3600

新しいイベントを取得せずにトランザクションがアクティブであり続ける時間を指定します。このパラメータは、取得されるデータベースの対応する設定に応じて設定する必要があります。特に、トランザクションが失われる可能性があるため、この設定をデータベースのトランザクション・タイムアウト設定よりも小さくしないでください。

useType

enum

sqlBbased Cdc

このパラメータは、この値に設定する必要があります。

routers



変更イベント・ルーターに接続し、処理のために変更イベントを取得できるユーザーのリスト。ルーターが指定されていない場合、ワークスペースの有効なOracle Connectユーザーがアダプタから変更イベントを取得できます。

Oracle Studioでユーザーのリストを追加するには、「router」プロパティを開き「users」を右クリックします。Item(_#)と呼ばれる新しいエントリが「Property」列に追加されます。「Value」列で、このルーターのユーザー名を入力します。

senders



変更イベント・ルーターに接続し、処理のために変更イベントを送信できるユーザーのリスト。ルーターが指定されていない場合、ワークスペースの有効なOracle Connectユーザーがアダプタから変更イベントを取得できます。

Oracle Studioでユーザーのリストを追加するには、「sender」プロパティを開き「users」を右クリックします。Item(_#)と呼ばれる新しいエントリが「Property」列に追加されます。「Value」列で、このルーターのユーザー名を入力します。

subscribeAgentLog

Boolean

False

trueの場合、変更ルーターによって、OracleAS CDCアダプタのログの内容が独自のログに書き込まれます。logLevelプロパティがdebugに設定されている場合は、このプロパティをtrueに設定しないでください。大量の情報がこのモードで送信されるとパフォーマンス遅延が発生するためです。

nodeID

string


マルチルーター・モードを使用するときのノードのID。各ノードは、ルーターを表します。

alternativeOwnerSeparator

string

..

これは、所有者の名前と接尾辞表を区切るために使用されるセパレータの値です。Oracle Studioでは、ステージング領域のデフォルトのセパレータはアンダースコア(_)です。たとえば、owner.tableです。SSISを使用してCDCソリューションを構成する場合、アンダースコアはエラーになります。Oracle Studioの「Preferences」ウィンドウでデフォルトのセパレータを変更する場合、新しい値はこのプロパティに入力されます。


参照整合性に関する考慮事項

関連する表には、参照整合性(RI)制約が適用されているものがあります。たとえば、OrderHeaderOrderLinesでは、OrderHeaderに関連付けられていないOrderLinesは許可されません。

トランザクションではなく表で変更イベントを処理する場合(これがOracleAS CDCの動作方法です)、参照整合性を適切に保持できません。たとえば、最初にすべてのOrderHeaderレコードを処理し、次にすべてのOrderLinesレコードを処理する場合、削除されるOrderHeaderは、関連付けられたOrderLinesレコードの削除(必須)よりもかなり前に適用される可能性があります。

参照整合性が回復されるまでに必要な既知の時間枠まで、参照整合性の可能性を削減するには、(変更表の読取りとは)異なるプロセスが必要です。

複数の関連する表で使用する共通同期点を保持するために、特別なSYNC_POINTS表を追加する必要があります。この表は、次のように定義されています。

表C-3 SYNC_POINTS表の構造

列名 データ型 説明

application_name

string (64)

処理が実行される対象アプリケーション

table_name

string (64)

同期点の名前

context

String (32)

すべての関連する表のイベント取得の上限として安全に使用できるストリーム位置


この表の一意の主キーは、application_name + sync_nameという連結です。この表の使用は必須ではありませんが、SQLベースのCDCにおける推奨使用パターンの一部です。

SYNC_POINTS表は、次の定義を使用して作成します(filenameは実際のパスに変更します)。

<?xml version='1.0' encoding='UTF-8'?><navobj>  <table name='SYNC_POINTS'          fileName='<staging-directory-path>SYNC_POINTS' organization='index'>    <fields>      <field name='application_name' datatype='string' size='64'/>      <field name='sync_name' datatype='string' size='64'/>      <field name='context' datatype='string' size='32'/>    </fields>    <keys>      <key name='Key0' size='128' unique='true'>        <segments>          <segment name='application_name'/>          <segment name='sync_name'/>        </segments>      </key>    </keys>  </table></navobj>

次の手順では、複数のETL過程の後にRIが回復されるようにする方法について説明します。これは、変更レコードを使用するための前述の手順を拡張したものです。ここでは、表T1、T2およびT3がRI制約で関連しており、Aが作業対象のアプリケーションであることを想定しています。

ストリーム位置を作成するには

  1. これは、STREAM_POSITIONS表でT [1/2/3] + Aについてストリーム位置レコードを作成するための、1回だけの設定手順です。次のSQL文によって、そのレコードが作成されます。

    insert into STREAM_POSITIONS values ('A', 'T1', '');insert into STREAM_POSITIONS values ('A', 'T2', '');insert into STREAM_POSITIONS values ('A', 'T3', '');
    
  2. この手順は、複数のETL過程の処理の最初に(つまり、T1、T2およびT3の変更イベントの処理を開始する前に)実行されます。ここでの目的は、T1、T2およびT3の取得について共有される同期点を得ることです。これは、SERVICE_CONTEXT表のcontext列をサンプリングすることによって実行されます。この値は、最新のコミットされたトランザクションにおける最後の変更レコードのストリーム位置です。これは、次のように実行されます。

    insert into SYNC_POINTS     select 'A' application_name, 'T123' sync_name, context from SERVICE_CONTEXT;
    

    ここで、T123は、表T1、T2およびT3の同期点について選択した名前です。

  3. この手順では、変更データが実際に読み取られます。各ETL過程で発生します。

    select n.* from T t, STREAM_POSITIONS sp, SYNC_POINTS sy where    sp.application_name = 'A' and    sp.table_name = 'T' and    sy.application_name = sp.application_name and    sy.sync_name = 'T123' and    n.context > sp.context and n.context <= sy.context order by n.context;
    

    n.context <= sy.contextが使用されていることにも注意してください。これは、contextは処理対象の変更レコードを表し、処理にはsy.contextに関連付けられた変更レコードが含まれている必要があるためです。

    このクエリーによって、最後に処理された変更レコードの直後から開始し、共通同期点で停止して、変更レコードが取得されます。n.*を列の明示的なリストで置き換えることができますが、context列を選択する必要がある点が重要です。この列は、次の手順で必要となる変更レコードのストリーム位置であるためです。

    この手順は、表Tiについてすべての変更レコードが取得されて処理されると、各ETL過程の後で発生します。最後の変更レコードのcontext列の値がCであったと想定します。この値は、次のETL過程のために、STREAM_POSITION表に戻す必要があります。これは、次のように実行されます。

    update STREAM_POSITIONS set context='C' where application_name 'A' and table_name = 'Ti';
    

    この値は、必要に応じて、ETLプロセスの中でより頻繁に格納できます。一般的なガイドラインでは、変更レコード・データがターゲット・データベースにコミットされたときに、ストリーム位置も更新する必要があります。

変更イベントへのアクセス

取得された変更は、変更表に保持されます。この表には、元の表の列およびCDCヘッダー列があります。次の表に、ヘッダー列の説明を示します。

表C-4 ヘッダー列

列名 説明

context

ステージング領域内の変更レコードのストリーム位置。この列は、一意の1次索引として定義されています。次の構造を持つ32バイトの文字列です。

<yyyymmdd>T<hhmmss>.<nnnn><cccccc>

説明:

  • <yyyymmdd>T<hhmmss>は、Commitイベントの処理を開始したときにステージング領域内で生成されたコミット処理タイムスタンプです。

  • <nnnn>は、同じ秒にコミットされたトランザクションを区別する一意の数字です(最大で99,999が想定されています)。

  • <cccccc>は、トランザクション内の変更イベントのカウンタであり、すべてのストリーム位置を一意にします(最大で9,999,999が想定されています)。

agent_context

エージェントからの元の変更レコードのストリーム位置(数値以外)。この列は、代替の一意の索引(降順)として定義されています。これは、次の目的で使用されます。

  • チェンジ・テーブルに変更イベントが複数回表示されないようにします。

  • チェンジ・テーブルを逆方向にスキャンして、最後のN個の変更イベントを簡単に確認できるようにします。

  • 複雑なレコードを処理しているときに、単一のバックエンド変更レコードから複数のレコードが発生する場合があります。この列を使用すると、ユーザーはこれらのレコードを単一の変更レコードに関連付けることができます。

operation

この列には、CDCアダプタで可能な操作が表示されます。可能な操作は、次のとおりです。

  • INSERT

  • DELETE

  • UPDATE

  • BEFOREIMAGE

  • COMMIT

  • ROLLBACK

transactionID

操作のトランザクションID。トランザクションIDは、新しいトランザクションが開始され、BEGIN_AXACTレコードがログに記録されるたびに増加します。

tableName

変更された表の名前。

INSERT、UPDATEおよびBEFOREIMAGE操作の場合、所有者名および表名が表示されます。

COMMITおよびROLLBACK操作の場合、この値はOPERATION値と同じです。

rowID

行の識別子。

timestamp

発生日時。


トランザクションのサポート

OracleAS CDC Adapter for SQL Serverでは、トランザクションがサポートされています。

セキュリティ

このCDCエージェント固有のセキュリティ要件は、次のとおりです。

データ型

次の表に、Oracle Connectデータ型およびOracleAS CDC Adapter for SQL Serverによってサポートされる、同等のSQLデータ型を示します。この表に示されるデータ型以外に、ユーザー定義データ型(UDT)が制限付きでサポートされます。

表C-5 サポートされるデータ型

Char SQLCHAR

Char

SQLCHAR

Datetime

SQLDATETIME

Decimal

SQLDECIMAL

Double

SQLFLT8

Float

SQLFLT8

Int

SQLINT4

Money

SQLMONEY

Nchar

SQLNCHAR

Nvarchar

SQLNVARCHAR

Numeric

SQLNUMERIC

Real

SQLFLT4

Smalldatetime

SQLDATETIM4

Smallint

SQLINT2

Smallmoney

SQLMONEY4

Tinyint

SQLINT1

Bigint

SQL_BIGINT

Binary

SQLBINARY

Varchar

SQLCHAR

Bit(1つの表につき1つの列に制限される)

SQLBIT

Ntext: 値の処理は省略されます。このフィールドは、NULLとして公開されます。


Text: 値の処理は省略されます。このフィールドは、NULLとして公開されます。


Uniqueidentifier

SQL_UNIQUEIDENTIFIER



注意:

OracleAS CDC Adapter for SQL Serverでは、「サポートされるデータ型」の表に示されているデータ型のみがサポートされます。

ユーザー定義データ型(UDT)

OracleAS CDC Adapter for SQL Serverでは、UDTは完全にはサポートされていません。UDTを処理する場合、Oracle Connectでは、UDTがベース型にマップされて、ベース・データ型であるかのように処理されます。