OracleAS CDC Adapter for VSAMには、いくつかの構成プロパティがあります。「OracleAS CDC Adapter for VSAMでのチェンジ・データ・キャプチャの設定」の手順を実行した後、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アダプタの構成プロパティ」を参照してください。
この項では、OracleAS CDC Adapter for VSAMの構成プロパティについて説明します。プロパティは、Oracle Studioを使用して編集できます。OracleAS CDC Adapter for VSAMには、次のタイプのプロパティがあります。
LoggerName
: データ・キャプチャに使用されるMVSログ・ストリームの名前。
CDC$PARM
は、JRNADイグジットおよび論理トランザクション管理用のパラメータが含まれるQSAMデータセットまたはPDSメンバーを定義するDDカードの名前です。作成と構文の詳細は、「ログ出力の構成(VSAM Batchのみ)」を参照してください。
注意: Oracle Connect CDC VSAM Batchソリューションでは、VSAMクラスタのオープン・プロセス中に独自のJRNADユーザー・イグジット・ルーチンを自動的に設定します(別のJRNADイグジッドがすでに使用されている場合、ソリューションは動作しません)。次のことを行うために、対応するジョブに変更を加えます。
|
表C-1 CD$PARMの値
名前 | 有効な値 | デフォルト | コメント |
---|---|---|---|
|
|
|
イメージ前をログ・ストリームに書き込みます。 |
|
|
|
ブロック書込みを使用します。 |
|
|
|
WTOを使用してデバッグ情報を出力します。 |
|
*/ |
* |
取得する必要のあるVSAMクラスタ。アスタリスク(*)は、Oracle JRNADを使用して開いたすべてのVSAMクラスタを取得する必要があることを示します。 各 |
|
|
|
|
|
|
|
論理トランザクション・マネージャの使用を許可します。 |
|
|
|
使用されるMVSログ・ストリームの名前。 |
|
|
All |
ログ・ストリームに書き込まれる操作のタイプを定義します。 |
|
|
|
空のKSDSクラスタ・アクセスに使用されるダミー・レコードを無視します。 |
|
|
|
同期ログ・ストリーム書込みを使用します。 |
この項では、Oracle CDCアダプタの共通構成プロパティおよびステージング領域コンピュータ上にある変更ルーターの構成プロパティについて説明します。
CDCアダプタ・プロパティを編集するには、Oracle Studioの「Design」パースペクティブを開き、作成したCDCソリューションのバインディングを見つけます。バインディングには、CDCソリューションの名前に_ag
という接尾辞が付いた名前が付けられています。ソリューションの名前および_ag
という接尾辞を持つアダプタを開き、プロパティを編集します。Oracle Studioでアダプタのプロパティを編集する方法については、「OracleAS CDCアダプタのプロパティの編集」を参照してください。アダプタ・プロパティに加えた変更は、CDCソリューションを再デプロイするとリセットされるため、これらの変更をソリューションのデプロイメント後に再度適用する必要があります。
構成プロパティの詳細は、次の項で説明しています。
CDC Queueアダプタは、ステージング領域で見つかるデータベース・アダプタです。「Oracle Studioでのチェンジ・データ・キャプチャの設定」を実行しているときに自動的に作成されます。3つのプロパティがあります。
connectString
defaultDatasource
multipleResults
CDCソリューションでキュー・アダプタが適切に機能するようにするには、これらのプロパティの値を変更しないでください。
CDC Queueアダプタに、アダプタのXMLスキーマで表示できるその他のプロパティがある場合があります。XMLの表示方法の詳細は、「アダプタ・メタデータのXML」を参照してください。
XMLで表示される次のプロパティのみが編集可能です。
maxRecords
: 返されるレコードの最大数。
Oracle StudioでXMLレコードを編集する方法については、「メタデータの高度なチューニング」を参照してください。
次の表に、Oracle CDCアダプタの共通構成プロパティを示します。OracleAS CDC Adapter for VSAMでは、これらのプロパティのみが使用されます。
表C-2 CDCアダプタの構成プロパティ
パラメータ | 型 | デフォルト | 説明 |
---|---|---|---|
|
string |
OracleAS CDC Adapterのデータソースの名前。 |
|
|
アダプタに接続し、処理のためにアダプタから変更イベントを取得できるユーザーのリスト。ルーターが指定されていない場合、ワークスペースの有効なユーザーがOracle Connectアダプタから変更イベントを取得できます。 Oracle Studioでユーザーのリストを追加するには、「 |
||
|
int |
2 |
データベース・ジャーナルのポーリング間隔。データベース・ジャーナルでイベントが受信されていない場合、アダプタはこのプロパティで指定された時間(秒単位)待機します。 |
|
boolean |
|
|
|
boolean |
|
|
|
boolean |
|
変更ルーターにより、アダプタからN個のイベントが要求されます。アダプタによってデータベース・ジャーナルで検出されるイベントがN個よりも少なく、 |
|
ロギング・レベル。使用可能なログ・レベルは、次のとおりです。
|
||
|
int |
|
CDCアダプタによって |
次の表に、SQLベースの変更イベント・ルーターの構成パラメータを示します。
ルーター・プロパティを編集するには、Oracle Studioの「Design」パースペクティブを開き、作成したCDCソリューションのバインディングを見つけます。バインディングには、CDCソリューションの名前に_router
という接尾辞が付いた名前が付けられています。ソリューションの名前および_router
という接尾辞を持つアダプタを開き、プロパティを編集します。Oracle Studioでアダプタのプロパティを編集する方法については、「OracleAS CDCアダプタのプロパティの編集」を参照してください。
表C-3 変更ルーターの構成パラメータ
パラメータ | 型 | デフォルト | 説明 |
---|---|---|---|
|
string |
OracleAS変更データソース。 |
|
|
Boolean |
false |
|
|
int |
48 |
ステージング領域内の変更表に変更レコードを保持する時間を指定します。指定した時間が経過すると、変更レコードは削除されます。
値 |
|
enum |
ルーターのロギング・レベル。使用可能なログ・レベルは、次のとおりです。
|
|
|
int |
|
単一のパスで削除される期限切れの変更レコード数を制御します。大量の変更イベントが継続的に受信されている場合に、待機時間を短縮するために、この値を減らす必要があることがまれにあります。 |
|
int |
|
ルーターによって開かれる物理ファイルの数を制御します。 |
|
int(Kb単位) |
|
ディスクにオフロードされる前にトランザクションごとにメモリーに格納できるメモリー量を指定します。メモリーよりも遅いディスクが頻繁に使用されすぎないように、この数は平均トランザクション・サイズよりも大きくする必要があります。 |
|
int(Kb単位) |
|
アクティブなトランザクション(まだコミットもロールバックもされていないトランザクション)を格納するために使用できる合計メモリー量を指定します。 |
|
構造: string string string int int int boolean |
|
OracleAS CDC Adapterへの接続情報。 |
|
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-4 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-5 ヘッダー列
列名 | 説明 |
---|---|
context |
ステージング領域内の変更レコードのストリーム位置。この列は、一意の1次索引として定義されています。次の構造を持つ32バイトの文字列です。 <yyyymmdd>T<hhmmss>.<nnnn><cccccc> ここで示された文字列については、次のとおりです。
|
operation |
この列には、CDCアダプタで可能な操作が表示されます。可能な操作は、次のとおりです。
|
transactionID |
操作のトランザクションID。 |
terminalID |
変更を行った端末ID。 |
taskID |
変更を行ったタスクID。 |
tableName |
変更された表の名前。 INSERT、UPDATEおよびBEFOREIMAGE操作の場合、所有者名および表名が表示されます。 COMMITおよびROLLBACK操作の場合、この値は |
timestamp |
発生日時。 |
jobName(VSAM Batchのみ) |
VSAMの更新を発生させたジョブの名前。 |
programName(VSAM Batchのみ) |
VSAMデータを変更したプログラムの名前。 |
userName(VSAM Batchのみ) |
ジョブを実行しているユーザーの名前。 |
stepName(VSAM Batchのみ) |
ジョブ内の手順の名前。 |
procedureStepName(VSAM Batchのみ) |
手順で実行されたプロシージャの名前。 |
programStartTimestamp(VSAM Batchのみ) |
プログラムの実行開始時刻。 |
脚注1 DELETEALLはVSAM Batchにのみ関連しています。
データ部分は、バックエンド表レイアウトの正確なコピーです。
ジャーナル内の各変更は、次の形式でイベントとして取得されます。
<event name='table_name' timestamp='...'> <table_name> <header ...></header> <data ...></data> </table_name></event>
OracleAS CDC Adapter for VSAMでは、CICS境界内のトランザクションがサポートされています。
OracleAS CDC Adapter for VSAM Batchには、次の2つのタイプのトランザクション管理が用意されています。
デフォルトでは、単一のプログラム(PGM)で行われた変更は、トランザクションとして指定されます。この場合、OracleAS CDC Adapter for VSAM Batchフックでは独自のLE終了ルーチンを設定し、プログラムの重大度とユーザーの戻りコードを取得します。
戻りコードは、トランザクションがCOMMITまたはROLLBACKのどちらで終了するかを決定します。デフォルトでは、重大度が2未満で戻りコードが4以下(つまり警告の戻りコードまたは正常な戻りコード)の場合はCOMMITで終了します。その他すべての値はROLLBACKで終了します。デフォルトの動作を調整するには、commitMaxTerminationSeverityCode
およびcommitMaxTerminationUserCode
のCDCエージェント・プロパティを使用します。
一貫性を保つために、VSAMクラスタを毎晩更新するバッチ・ジョブを設定することがよくあります。これは、ジョブの実行前にVSAMデータのコピーを維持し、バッチ・ジョブがなんらかの理由で異常終了した場合に前のコピーをリストアすることで行います。このような処理は、バッチ・ジョブ全体が1つの作業単位として実行されるようにするための論理トランザクションの実装とみなすことができます。
OracleAS CDC Adapter for VSAM Batchソリューションでは、同じ作業単位を維持することが重要です。この場合、論理トランザクション全体が正常に完了するまで変更をクライアント・アプリケーションに配信しないでください。このような作業単位を維持できなかった場合、元のバージョンにリストアされたVSAMデータと変更コンシューマ間で一貫性が保たれなくなる可能性があります。
OracleAS CDC Adapter for VSAMに付属のATYLTRANプログラムを使用すると、取得した変更のトランザクション境界を完全に制御できます。ATYLTRANは次の場合に個別の手順として呼び出す必要があります。
論理トランザクションが開始されている場合。
論理トランザクションがCOMMITとROLLBACKの両方を使用して終了している場合。
論理トランザクションに遅延が発生している場合(このため後から別のジョブで続行する必要がある)。
論理トランザクションが別のジョブで続行されている場合。
ATYLTRANは次のパラメータを受け取ります。
論理トランザクション操作:
BEGIN
: 新しい論理トランザクションを示します。同じ名前の論理トランザクションが存在する場合、古いトランザクションはROLLBACKを使用して終了します。
COMMIT
ROLLBACK
: 論理トランザクションを終了します。
CONTINUE
: デフォルト。これは、現在の論理トランザクションを終了しない各ジョブの最後と、別のジョブによって開始される論理トランザクションを続行する各ジョブの最初に使用します。
論理トランザクション名:
デフォルトでは、BEGIN
操作はジョブと同じ名前を持つ単一ジョブの論理トランザクションを開始します。論理トランザクションが別のジョブで継続されるか、トランザクション名が変更された場合は、BEGIN
操作を使用してトランザクション名を明示的に指定する必要があります。トランザクションを継続する他のジョブの始めには、CONTINUE
操作を使用して同じ名前を指定する必要があります。
トランザクション名は15文字まで指定できます。
OracleAS CDC Adapter for VSAMアダプタは、READ
の権限レベルを使用してMVSログ・ストリームに接続します。DFSFLGX0
ユーザー・イグジットは、WRITE
の権限レベルを使用してログ・ストリームに接続します。適切なセキュリティ権限を判断するには、『MVS Auth Assm Services Reference ENF-IXG』というIBMのマニュアルを参照してください。
注意:
|