Oracle® Application Server CDC Adapters for SQL Serverユーザーズ・ガイド 11g リリース1(11.1.1) B61404-02 |
|
前 |
次 |
OracleAS CDC Adapter for SQL Serverには、複数の構成プロパティがあります。「OracleAS CDC Adapter for SQL Serverでのチェンジ・データ・キャプチャの設定」の手順を実行した後、Oracle Studioでプロパティを編集できます。この章では、構成プロパティおよびそれらの編集方法について説明します。ここの内容は、次のとおりです。
OracleAS CDCソリューションを作成した後、プロパティを編集することもできます。ソリューションによって、アダプタおよびCDC Queueアダプタという2つのアダプタが作成されます。アダプタはサーバー・コンピュータ上に作成され、CDC Queueアダプタはステージング領域コンピュータ上に作成されます。詳細は、「Oracle Studioでのチェンジ・データ・キャプチャの設定」を参照してください。
CDCアダプタ・プロパティを編集するには、サーバー・コンピュータでOracle Studioの「Design」パースペクティブを開き、CDCソリューションのバインディングを見つけます。次に、アダプタを開きます。アダプタには、CDCソリューションの名前に、_ag
という接尾辞が付いた名前が付けられています。アダプタ・プロパティに加えた変更は、CDCソリューションを再デプロイするとリセットされるため、これらの変更をソリューションのデプロイメント後に再度適用する必要があります。ソリューションのデプロイの詳細は、「チェンジ・データ・キャプチャのデプロイ」を参照してください。
CDCアダプタのプロパティを編集するには、次の手順を実行します。
「スタート」メニューから、「プログラム」→「Oracle」→「Studio」を選択します。
「Machines」フォルダを開きます。
「Oracle Studioでのチェンジ・データ・キャプチャの設定」で作成したサーバー・マシンを開きます。
「Bindings」フォルダを開き、CDCソリューションの名前に_ag
という接尾辞が付いたバインディングを開きます。
「Adapter」フォルダを開きます。
ソリューションの名前および_ag
という接尾辞を持つアダプタを右クリックし、「Open」を選択します。
エディタ内にアダプタ構成エディタが開き、アダプタのプロパティが表示されます。
必要に応じて、アダプタのパラメータを編集します。
プロパティの詳細は、「OracleAS CDCアダプタの構成プロパティ」を参照してください。
この項では、SQL Server CDCアダプタの構成プロパティについて説明します。プロパティは、Oracle Studioを使用して編集できます。SQL Server CDCには、次のタイプのプロパティがあります。
Logger Name
: データ・キャプチャに使用されるログ・ストリームの名前。
この項では、Oracle CDCアダプタの共通構成プロパティおよびステージング領域コンピュータ上にある変更ルーターの構成プロパティについて説明します。
CDCアダプタ・プロパティを編集するには、Oracle Studioの「Design」パースペクティブを開き、作成したCDCソリューションのバインディングを見つけます。バインディングには、CDCソリューションの名前に_ag
という接尾辞が付いた名前が付けられています。ソリューションの名前および_ag
という接尾辞を持つアダプタを開き、プロパティを編集します。Oracle Studioでアダプタのプロパティを編集する方法については、「Oracle Studioでのプロパティの編集」を参照してください。アダプタ・プロパティに加えた変更は、CDCソリューションを再デプロイするとリセットされるため、これらの変更をソリューションのデプロイメント後に再度適用する必要があります。
構成プロパティの詳細は、次の項で説明しています。
OracleAS CDC Adapter for SQL Serverのプロパティは、次のとおりです。
すべてのOracle CDCアダプタに共通のその他のプロパティもあります。Oracle CDCアダプタの共通プロパティの詳細は、「CDCアダプタの共通プロパティ」を参照してください。
transientStorageDirectory
: 一時記憶域ファイルがあるフォルダへのフルパスを入力します。このプロパティは、CDCサービスを設定するときに、CDC Solutionウィザードでも定義されます。
CDC Queueアダプタは、ステージング領域で見つかるデータベース・アダプタです。「Oracle Studioでのチェンジ・データ・キャプチャの設定」を実行しているときに自動的に作成されます。Oracle Studioのアダプタのエディタで表示できる次の3つのプロパティがあります。
connectString
defaultDatasource
multipleResults
CDCソリューションでキュー・アダプタが適切に機能するようにするには、これらのプロパティの値を変更しないでください。
CDC Queueアダプタに、アダプタのXMLスキーマで表示できるその他のプロパティがある場合があります。XMLの表示方法の詳細は、「アダプタ・メタデータのXML」を参照してください。
XMLで表示される次のプロパティのみが編集可能です。
maxRecords
: 返されるレコードの最大数。
Oracle StudioでXMLレコードを編集する方法については、「Oracle StudioでのXMLファイルの編集」を参照してください。
次の表に、Oracle CDCアダプタの共通構成プロパティを示します。OracleAS CDC Adapter for SQL Server固有のCDCアダプタのプロパティの詳細は、「OracleAS CDC Adapter for SQL Serverのプロパティ」を参照してください。
表C-1 CDCアダプタの構成プロパティ
パラメータ | 型 | デフォルト | 説明 |
---|---|---|---|
|
string |
OracleAS CDCアダプタのデータソースの名前。 |
|
|
アダプタに接続し、処理のためにアダプタから変更イベントを取得できるユーザーのリスト。ルーターが指定されていない場合、ワークスペースの有効なユーザーがOracle Connectアダプタから変更イベントを取得できます。 Oracle Studioでユーザーのリストを追加するには、「 |
||
|
int |
2 |
データベース・ジャーナルのポーリング間隔。データベース・ジャーナルでイベントが受信されていない場合、アダプタはこのプロパティで指定された時間(秒単位)待機します。 |
|
boolean |
|
|
|
boolean |
|
|
|
boolean |
|
変更ルーターにより、アダプタからN個のイベントが要求されます。アダプタによってデータベース・ジャーナルで検出されるイベントがN個よりも少なく、 |
|
ロギング・レベル。使用可能なログ・レベルは、次のとおりです。
|
||
|
int |
|
CDCアダプタによって |
次の表に、SQLベースの変更イベント・ルーターの構成パラメータを示します。
ルーター・プロパティを編集するには、Oracle Studioの「Design」パースペクティブを開き、作成したCDCソリューションのバインディングを見つけます。バインディングには、CDCソリューションの名前に_router
という接尾辞が付いた名前が付けられています。ソリューションの名前および_router
という接尾辞を持つアダプタを開き、プロパティを編集します。Oracle Studioでアダプタのプロパティを編集する方法については、「Oracle Studioでのプロパティの編集」を参照してください。
表C-2 変更ルーターの構成パラメータ
パラメータ | 型 | デフォルト | 説明 |
---|---|---|---|
|
string |
OracleAS変更データソース。 |
|
|
Boolean |
false |
|
|
int |
48 |
ステージング領域内の変更表に変更レコードを保持する時間を指定します。指定した時間が経過すると、変更レコードは削除されます。
値 |
|
enum |
ルーターのロギング・レベル。使用可能なログ・レベルは、次のとおりです。
|
|
|
int |
|
単一のパスで削除される期限切れの変更レコード数を制御します。大量の変更イベントが継続的に受信されている場合に、待機時間を短縮するために、この値を減らす必要があることがまれにあります。 |
|
int |
|
ルーターによって開かれる物理ファイルの数を制御します。 |
|
int(Kb単位) |
|
ディスクにオフロードされる前にトランザクションごとにメモリーに格納できるメモリー量を指定します。メモリーよりも遅いディスクが頻繁に使用されすぎないように、この数は平均トランザクション・サイズよりも大きくする必要があります。 |
|
int(Kb単位) |
|
アクティブなトランザクション(まだコミットもロールバックもされていないトランザクション)を格納するために使用できる合計メモリー量を指定します。 |
|
構造: string string string int int int boolean |
|
OracleAS CDCアダプタへの接続情報。 |
|
string |
ステージング領域変更ファイルが格納されるディレクトリを指定します。このディレクトリには、オフロードされたトランザクションやタイムアウトとなったトランザクションおよびエラー・ファイルも格納されます。 |
|
|
int(秒単位) |
|
新しいイベントを取得せずにトランザクションがアクティブであり続ける時間を指定します。このパラメータは、取得されるデータベースの対応する設定に応じて設定する必要があります。特に、トランザクションが失われる可能性があるため、この設定をデータベースのトランザクション・タイムアウト設定よりも小さくしないでください。 |
|
enum |
sqlBbased Cdc |
このパラメータは、この値に設定する必要があります。 |
|
変更イベント・ルーターに接続し、処理のために変更イベントを取得できるユーザーのリスト。ルーターが指定されていない場合、ワークスペースの有効なOracle Connectユーザーがアダプタから変更イベントを取得できます。 Oracle Studioでユーザーのリストを追加するには、「 |
||
|
変更イベント・ルーターに接続し、処理のために変更イベントを送信できるユーザーのリスト。ルーターが指定されていない場合、ワークスペースの有効なOracle Connectユーザーがアダプタから変更イベントを取得できます。 Oracle Studioでユーザーのリストを追加するには、「 |
||
|
Boolean |
False |
|
|
string |
マルチルーター・モードを使用するときのノードのID。各ノードは、ルーターを表します。 |
|
|
string |
.. |
これは、所有者の名前と接尾辞表を区切るために使用されるセパレータの値です。Oracle Studioでは、ステージング領域のデフォルトのセパレータはアンダースコア(_)です。たとえば、owner.tableです。SSISを使用してCDCソリューションを構成する場合、アンダースコアはエラーになります。Oracle Studioの「Preferences」ウィンドウでデフォルトのセパレータを変更する場合、新しい値はこのプロパティに入力されます。 |
関連する表には、参照整合性(RI)制約が適用されているものがあります。たとえば、OrderHeader
とOrderLines
では、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が作業対象のアプリケーションであることを想定しています。
ストリーム位置を作成するには
これは、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', '');
この手順は、複数の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の同期点について選択した名前です。
この手順では、変更データが実際に読み取られます。各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> 説明:
|
agent_context |
エージェントからの元の変更レコードのストリーム位置(数値以外)。この列は、代替の一意の索引(降順)として定義されています。これは、次の目的で使用されます。
|
operation |
この列には、CDCアダプタで可能な操作が表示されます。可能な操作は、次のとおりです。
|
transactionID |
操作のトランザクションID。トランザクションIDは、新しいトランザクションが開始され、BEGIN_AXACTレコードがログに記録されるたびに増加します。 |
tableName |
変更された表の名前。 INSERT、UPDATEおよびBEFOREIMAGE操作の場合、所有者名および表名が表示されます。 COMMITおよびROLLBACK操作の場合、この値は |
rowID |
行の識別子。 |
timestamp |
発生日時。 |
OracleAS CDC Adapter for SQL Serverでは、トランザクションがサポートされています。
このCDCエージェント固有のセキュリティ要件は、次のとおりです。
MS SQL ServerおよびMS SQL Server CDCコンポーネントを実行するには、アカウントに管理者権限が付与されている必要があります。
CDCエージェントおよびTLOG Miner(LGR)は、sysadmin
サーバー・ロールのメンバーとして実行する必要があります。
次の表に、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では、「サポートされるデータ型」の表に示されているデータ型のみがサポートされます。 |
OracleAS CDC Adapter for SQL Serverでは、UDTは完全にはサポートされていません。UDTを処理する場合、Oracle Connectでは、UDTがベース型にマップされて、ベース・データ型であるかのように処理されます。