DB2 for iソース データベース取り込みとレプリケーション タスクでDb2 for iソースを使用するには、最初にソースデータベースを準備し、使用に関する考慮事項を確認してください。
ソースの準備: • 増分ロードジョブ、および初期ロードと増分ロードの組み合わせジョブの場合、データベース取り込みとレプリケーション で使用するDb2ジャーナルオブジェクトおよびファイルオブジェクトにアクセスするための適切なレベルの権限を、データベース取り込みとレプリケーション ジョブを実行するユーザーIDに付与します。以下の表に、これらのオブジェクトとそのDB2権限要件を示します。オブジェクト
権限
ジャーナル1
*USE *OBJEXIST
ジャーナルライブラリ
*USE *EXECUTE
ジャーナルレシーバ
*USE(要求されたジャーナルレシーバーごとに)
ジャーナルレシーバライブラリ
*USE
ファイル
*USE
ファイルライブラリ
*USE
• 増分ロードジョブの場合、選択したソーステーブルに対応する各データベース物理ファイルでジャーナルをアクティブにする必要があります。また、各ジャーナルは、変更データの前後のイメージの両方を保存するためにIMAGES(*BOTH)オプションを使用して設定する必要があります。ソーステーブルの物理ファイルでジャーナルがアクティブになっていない場合、データベース取り込みとレプリケーション タスクを定義するときに、それをアクティブにするCDCスクリプトを生成できます。スクリプトは次のコマンドを発行します。これにより、ジャーナルがアクティブになり、IMAGESオプションがBOTHに設定されます。
CALL QSYS2.QCMDEXC('STRJRNPF FILE(library /physical-file ) JRN(library /journal-name ) IMAGES(*BOTH)')
ソーステーブルの物理ファイルに対してジャーナルがすでにアクティブになっている場合、CDCスクリプト出力には次のコメントが含まれます。
Table 'table_name ' is skipped because journaling is already enabled.
• データベース取り込みとレプリケーション はデフォルトで、DataDirect JDBC for IBM Db2ドライバを使用してDb2 for iデータベースに接続します。ソースデータベースへのDB2 for i接続を作成およびテストする最初のユーザーに、データベースに対するDBA権限を持たせることをお勧めします。この権限は、ドライバがDB2へのアクセスに使用するパッケージを作成してアップロードし、パッケージに対するEXECUTE特権をPUBLICに付与するために必要です。DBAユーザーが最初の接続テストを実行しない場合は、パッケージを作成するためのCRTSQLPKGコマンドに*USE権限を付与し、パッケージの作成先のライブラリに*CHANGE権限を付与する必要があります。• DB2 for iソースにSSLデータ暗号化を使用するには、DB2 for i接続プロパティーを設定するときに、[JDBCドライバ] フィールドで[JTOpen] を選択し、[暗号化方法] フィールドで[SSL] を選択します。また、次のいずれかの場所にあるInformatica Cloud Secure Agent JRE cacertsキーストアに必要な証明書を追加します。
Linuxの場合:
Secure Agent Directory \jdk\jre\lib\security\cacerts
Windowsの場合:
Secure Agent Directory \apps\jdkLatestVersion \jre
証明書を追加したら、Secure Agentを再起動して、最新インスタンスのエージェントサービスのapp-truststore.jksファイルに変更が反映されていることを確認します。
使用に関する考慮事項: • データベース取り込みとレプリケーション では、ソーステーブルの各行が一意であることを想定しているため、各ソーステーブルにプライマリキーを持たせることをお勧めします。プライマリキーが指定されていない場合、データベース取り込みとレプリケーション は一意のインデックスがあればそれを使用します。プライマリキーも一意のインデックスも指定されていない場合は、データベース取り込みとレプリケーション はすべてのカラムをプライマリキーの一部であるかのように扱います。• データベース取り込みとレプリケーション タスクを定義する場合、[ソース] ページで、ジャーナルが有効になっているソーステーブルに関連付けられているジャーナル名を指定します。重要: [ジャーナル名]フィールドの大文字と小文字および名前のスペル、テーブルの選択ルールが、DB2ソースカタログのジャーナルとテーブル名の値と一致することを確認してください。
• スキーマドリフトオプションは、データベース取り込みとレプリケーション の増分ロードジョブ、および初期ロードと増分ロードの組み合わせジョブで、Db2 for iソースに対して使用できます。[カラムの追加] オプションを[レプリケート] に設定してから、デフォルト値を持つカラムをDB2 for iソーステーブルに追加すると、データベース取り込みとレプリケーション は、ターゲットに新たに追加されたテーブル行にデフォルト値を追加します。ただし、ターゲットの既存の行は更新されず、デフォルト値が反映されません。既存のターゲット行に移入されたデフォルト値を取得するには、別の初期ロードを実行してターゲットを再実体化します。
• データベース取り込みとレプリケーション では、次のDb2 for iデータ型はサポートされません。- Blob- CLOB- DATALINK- DBCLOB- GRAPHIC- LONG VARGRAPHIC- VARGRAPHIC- XMLデータベース取り込みとレプリケーション ジョブは、これらのデータ型を持つカラムにはnullをプロパゲートします。
サポートされているソースデータ型からターゲットデータ型へのデフォルトのマッピングについては、
デフォルトのデータ型マッピング を参照してください。
• 複数のエージェントが含まれるSecure Agentグループを使用していて、アクティブなエージェントが予期せずダウンした場合、データベース取り込みとレプリケーション ジョブは、Secure Agentグループ内の別の使用可能なエージェントに自動的に切り替えることができます。自動スイッチオーバーは、15分のハートビート間隔が経過した後に行われます。Db2 for iソースを持つデータベース取り込みとレプリケーション ジョブの場合、自動スイッチオーバーに次の制限があります。- ジョブで永続ストレージを有効にすることはできません。- Kafkaターゲットを持つジョブでは、チェックポイント情報をKafkaヘッダーに格納する必要があります。2025年7月リリースより前に存在していたジョブの場合、チェックポイント情報はSecure Agentのチェックポイントファイルに格納されるため、自動スイッチオーバーを実行できません。• データベース取り込みおよびレプリケーションの増分ロードジョブ、および初期ロードと増分ロードの組み合わせジョブがレシーバから変更を読み取っている間に、システムによってDb2ジャーナルレシーバが削除されないようにするために、データベース取り込みおよびレプリケーションはジャーナルレシーバ出口プログラムを提供しています。出口プログラムは、CDC処理中にジャーナルレシーバをロックします。出口プログラムを使用するには、出口プログラムをインストールし、いくつかのカスタムプロパティを設定する必要があります。詳細については、データベース取り込みおよびレプリケーションのジャーナルレシーバ出口 およびデータベース取り込みおよびレプリケーションのジャーナルレシーバ出口のインストール を参照してください。Db2 for iソースの変更キャプチャメカニズム データベース取り込みとレプリケーション は、IBM i上のDb2ソースから変更データをキャプチャしてそのデータをターゲットに適用するための、単一の変更キャプチャメカニズムとアーキテクチャを提供します。
Secure Agentは、IBM iソースシステムとは別に、LinuxまたはWindowsボックスで実行する必要があります。IBM iシステムとSecure Agentボックス間のネットワーク帯域幅は堅牢でなければなりません。Informaticaでは、数百ギガビットまたは1ギガバイト以上のログデータを処理できるネットワーク転送速度を推奨しています。Db2がCDC対象のログデータを生成する速度以上の速度でログデータをSecure Agentに配信できるほどのネットワーク転送速度ではない場合、データベース取り込みジョブはタイムリーにデータをターゲットに提供できません。データスループットがSLAを満たしていない場合は、ハードウェアを変更して、IBM iシステムとSecure Agentボックス間のイーサネット帯域幅を増やすことを検討してください。
次の図は、Db2 for i変更キャプチャコンポーネントとデータフローを示しています。
1 Secure Agent配下のDBMI Agentサービスで実行されるログコレクターは、Db2 for iのジャーナルされたデータに対するDb2 DISPLAY LOGコマンドに要求を送信します。各要求には、開始RBAと、データベースの取り込み用のCDC対象のテーブルのリストが含まれます。
2 このコマンドは、Db2ジャーナルおよびジャーナルレシーバーからソーステーブルのデータを要求します。3 このコマンドは、データを含むジャーナルエントリをUOW(Unit Of Work)マネージャに返します。4 UOWマネージャは、コミットされたトランザクション順にジャーナル処理済みデータをログパーサーに送信します。5 ログパーサーは、コミットされたトランザクションからのDML変更を解析します。CDCライターにデータを送信する前に、ログパーサーはデータをDb2ジャーナルデータの標準的な形式に変換します。この形式は、DBMI Agentタスクによって消費でき、ターゲットに適用できます。注: このリソース集約型のアクティビティはSecure Agentボックスで発生するため、IBM iシステムのCPU消費は最小限に抑えられます。
6 CDCライターが、フォーマットされたデータをターゲットに適用します。データベース取り込みおよびレプリケーションのジャーナルレシーバ出口 データベース取り込みおよびレプリケーションは、変更データキャプチャ処理に使用されているDb2 for iジャーナルレシーバが削除されるのを防ぐための出口プログラムを提供しています。ジャーナルレシーバ出口を使用して、CDC中のジャーナルレシーバの削除に関連して発生する可能性があるエラーを防止します。
出口プログラムは、ジャーナルレシーバがデータベース取り込みおよびレプリケーションの増分ロードジョブまたは組み合わせロードジョブによって読み取られている間、ジャーナルレシーバをロックします。CDC処理中に出口プログラムがジャーナルレシーバのロックレコードを検出した場合、出口プログラムは、システムによってジャーナルレシーバが削除されないように防ぐ応答を返します。
データベース取り込みおよびレプリケーションジョブがチェーン上の次のジャーナルレシーバに切り替わると、データベース取り込みおよびレプリケーションは、最後に読み取られたジャーナルレシーバのロックレコードを削除し、次に読み取られるジャーナルレシーバのロックレコードを追加します。システムは、現在ロックされているレシーバの後に作成されたジャーナルレシーバは削除しません。
ジャーナルレシーバー出口の制御情報は、ソースシステム上のDb2 for iテーブルに格納されます。以下のカラムがテーブルに含まれています。
• JOURNAL_RECEIVER_LIBARY。ジャーナルレシーバライブラリの名前。• JOURNAL RECEIVER_NAME。ジャーナルレシーバの名前。• DBMI_MAPPING_NAME.一意のロックトークン名。• LOCKED_BY_USER。ロックが取得された接続ユーザーのユーザーID。• TIME_LOCKED。ロックが作成された時刻。JOURNAL_RECEIVER_LIBRARYエントリとJOURNAL_RECEIVER_NAMEエントリの各組み合わせによって、変更データキャプチャ中に削除できないようにロックされるジャーナルレシーバインスタンスが識別されます。
ジャーナルレシーバ出口を使用するには、次の手順を実行します。
1 ジャーナルレシーバ出口をインストールします。インストールプロセスによって、ジャーナルレシーバー削除出口プログラムがQIBM_QJO_DLT_JRNRCV出口ポイントに登録されます。詳細については、「データベース取り込みおよびレプリケーションのジャーナルレシーバ出口のインストール 」を参照してください。2 Db2 for i CDCソースを持つ各タスクに対して、タスクウィザードの[ソース] ページで、次のカスタムプロパティを指定します。カスタムプロパティ
説明
pwx.cdcreader.iseries.option.useJournalReceiverExit
このプロパティをtrueに設定すると、タスクからデプロイされたジョブインスタンスに対してジャーナルレシーバ出口を使用できるようになります。
pwx.cdcreader.iseries.option.JournalReceiverExitJobToken
pwx.cdcreader.iseries.option.useJournalReceiverExitがtrueに設定されている場合は、データベース取り込みおよびレプリケーションジョブのインスタンスごとに一意で最大256文字の長さのトークン文字列を指定する必要があります。
トークン文字列がすべてのジョブインスタンスの間で一意でない場合、特に複数のジョブが同じジャーナルレシーバにアクセスしていると、予測不能な結果が生じる可能性があります。
また、ジョブの再開操作または再デプロイ操作後もトークン値が変わらないことを確認してください。
pwx.cdcreader.iseries.option.useJournalReceiverQueries
このプロパティをtrueに設定すると、データベース取り込みおよびレプリケーションはDb2マシンのメンテナンスレベルを確認して、ジャーナルレシーバクエリを実行できるかどうかを判別できるようになります。
ジョブのデプロイ解除または停止時のジャーナルロックの削除 ロック状態のジャーナルでジョブをもう実行しない場合は、ジャーナルロックを削除することができます。または、ジャーナルレシーバのリストに対してメンテナンスを実行する必要がある場合やその他の理由で、ジャーナルロックを削除することもできます。
ジャーナルロックを削除するには、以下のフォーマットを使用するSQLを実行します。
DELETE FROM INFORMATICA_DBMI_EXITS_VERSION_01.JOURNAL_RECEIVER_LOCK_INFORMATION WHERE DBMI_MAPPING_NAME="<unique_token_identifier_specified_by_pwx.cdcreader.iseries.option.JournalReceiverExitJobToken >"
ここで、unique_token_identifier_specified_by_pwx.cdcreader.iseries.option.JournalReceiverExitJobToken は、ソース定義カスタムパラメータpwx.cdcreader.iseries.option.JournalReceiverExitJobTokenに使用される値です。
注: ロックを削除すると、ジャーナルが削除されることがあります。この状況が発生した場合は、DBMIジョブを再マテリアライズして続行する必要があります。
データベース取り込みおよびレプリケーションのジャーナルレシーバ出口のインストール データ取り込みおよびレプリケーション のジャーナルレシーバ出口を使用して、Db2 for iジャーナルレシーバが変更データキャプチャで使用されている間に削除されるのを防ぎます。ジャーナルレシーバ出口を手動でインストールするには、次の手順を実行します。
1 V01_Exit_Installファイルをコンピュータのローカルフォルダに解凍します。インストールファイルの詳細については、「knowledge article 」を参照してください。2 SQL_1.txtファイル内のSQL文を実行して、システムにインストール用の十分なスペースがあるかどうかを確認します。戻り値1は、システムに十分なスペースがあることを意味します。3 SQL_2.txtファイル内のSQL文を実行して、スキーマと、ジャーナルレシーバ出口ポイント処理用のデフォルトのジャーナルおよびジャーナルレシーバを作成します。4 FTP_3.txtファイル内のFTPコマンドを実行して、ジャーナルレシーバ出口をインストールします。注: FTPを開始する前に、ジャーナルレシーバ出口プログラムが含まれているIBMi_SaveFile_V01.savfファイルがあるディレクトリに移動します。
5 SQL_4.txtファイル内のSQL文を実行して、出口ポイントをIBM iシステムに追加します。注: SQLを実行する前に、<userId>をシステムの有効なユーザーIDに置き換えてください。
6 SQL_5.txtファイル内のSQL文を使用して、ジャーナルレシーバが削除されないようにロックするために使用するDb2オブジェクトを作成します。