Db2 z/OS
この項では、Oracle GoldenGate for Db2 z/OSの構成の詳細を示します。
トピック:
- データベース・ユーザーおよび権限の準備
- データベース接続、システムおよびパラメータ設定の準備
- トランザクション・ログの設定と要件
- Db2 z/OS: サポートされているデータ型、オブジェクトおよび操作
親トピック: 構成
データベース・ユーザーおよび権限の準備
データベース・ユーザーの作成およびOracle GoldenGate for Db2 z/OSの権限の割当てについて学習します。
トピック:
Oracle GoldenGateプロセス用データベース・ユーザー
Oracle GoldenGateには、データベース・ユーザー・アカウントが必要です。次のガイドラインに従ってこのアカウントを作成し、権限を割り当てます。
次の表にリストしたDb2の権限を、ExtractおよびReplicatを実行するユーザーに割り当てます。これらは、Db2 ODBCで必要な権限以外に必要なものです。記載がないかぎり、すべてのExtract権限は、初期ロードおよびログベースのExtractプロセスに適用されます。次の権限は、Oracle GoldenGateプロセスを実行するユーザーに、SYSCTRL
かDBADM
のいずれかと、SQLADM
権限を付与することによって設定できます。
表4-1 Oracle GoldenGate for Db2 z/OSに必要な権限
ユーザーの権限 | Extract | Replicat |
---|---|---|
(初期ロードExtractには非適用) |
はい |
いいえ |
次の
|
はい |
はい |
ソース表に対する |
はい |
いいえ |
ターゲット表の |
いいえ |
はい |
|
いいえ |
はい |
ODBCプラン(デフォルトはDSNACLI)に対する |
はい |
いいえ |
|
はい |
いいえ |
脚注1
表にLOB列が含まれている場合または初期ロードExtract (使用する場合)に対してのみ、ソース表に対するSELECT
が必要です。
脚注2
コマンドライン・インタフェースからADD CHECKPOINTTABLE
を使用してデータベース・チェックポイント機能を使用する場合は必須です。
脚注3
SQLEXEC
によって、Oracle GoldenGateプロセスによるストアド・プロシージャおよび問合せの実行が可能になります。
親トピック: データベース・ユーザーおよび権限の準備
データベース接続、システムおよびパラメータ設定の準備
Oracle GoldenGate for Db2 z/OSのデータベース接続、システムおよびパラメータ設定の構成について学習します。
トピック:
親トピック: Db2 z/OS
データベース接続の構成
この項では、Db2 z/OSデータベースへのExtractおよびReplicatの接続を設定する手順について説明します。
トピック:
ODBC接続互換性の確認
Db2 ODBC初期化ファイルを正しく構成したことを確認するには、Db2 UDB z/OS ODBCガイドおよびリファレンスのガイドラインに従います。重要な考慮事項の1つは、大カッコの開始と終了([および])のコーディングです。大カッコは、異なるコード化文字セットID (CCSID)で異なってエンコードされる可変文字ですが、ODBC初期化ファイルでは、IBM-1047 CCSIDのものである必要があります。Db2 ODBCは、他のCCSIDのカッコを認識しません。次のことに注意してください:
-
1つ目(開始)のカッコは、16進文字
X'AD'
(0xAD
)を使用する必要があります。 -
2つ目(終了)のカッコは、16進文字
X'BD'
(0xBD
)を使用する必要があります。
正しい大カッコのコードを設定するには、次のいずれかの方法を使用します。
-
OEDITで
hex
コマンドを使用して、各文字の16進コードを適切に変更します。 -
iconv
ユーティリティを使用してODBC初期化ファイルを変換します。たとえば、CCSID IBM-037からIBM-1047に変換するには、次のコマンドを使用します。iconv -f IBM-037 -t IBM-1047 ODBC.ini > ODBC-1047.ini
mv ODBC-1047.ini ODBC.ini
-
ファイルの作成または変更時、CCSID IBM-1047を使用するよう端末エミュレータまたは端末構成を変更します。
親トピック: データベース接続の構成
接続スレッド数の指定
各Oracle GoldenGateプロセスはデータベース接続を行います。使用するプロセスの数および想定する他のDb2接続の数に応じて、DSNTIPE DB2 Thread Managementパネルで次のDb2システム・パラメータを調整する必要があります。
-
MAX USERS
(マクロDSN6SYSP CTHREAD
) -
MAX TSO CONNECT
(マクロDSN6SYSP IDFORE
) -
MAX BATCH CONNECT
(マクロDSN6SYSP IDBACK
)
RRSAFを使用する場合、次のように見込みます。
-
次のものに対するプロセスごとに2つのDB2スレッド
-
Extract
-
Replicat
-
管理クライアント・コマンド
DBLOGIN
(データベースにログインします) -
DEFGEN
ユーティリティ(列マッピングのデータ定義を生成します)
-
-
IFIコールに対するExtract用に追加で1つのDb2スレッド。
-
各ExtractおよびReplicatプロセスによって発行される
SQLEXEC
パラメータ文ごとに追加で1つのDb2スレッド。SQLEXEC
の詳細は、『Oracle GoldenGateリファレンス』を参照してください。
CAFを使用する場合、Oracle GoldenGateプロセスごとにスレッドは1つのみです。
親トピック: データベース接続の構成
データベース構成
Oracle GoldenGateには特別なDb2 z/OSデータベース設定は必要ありません。
親トピック: データベース接続、システムおよびパラメータ設定の準備
初期化ファイルのパスの指定
次の例のように、z/OS UNIXプロファイルにDSNAOINI
環境変数を設定し、ODBC初期化ファイルを指定します。
export DSNAOINI="/etc/odbc810.ini"
親トピック: データベース構成
Db2 z/OSへのExtractコンポーネントのインストール
-
外部プログラム(認可)には、次のプログラムが含まれます:
-
oggib001
– 初期化およびユーティリティ・プログラム -
oggrb001
– ログ読取りプログラム機能 -
oggmt001
– ECSAおよび64ビット・メモリーを監視するスタンドアロン・プログラム oggjt001
–oggib001
プログラムから実行されるoggmt001
起動JCLのセットアップ・プログラム-
oggfr001
– DBAがOracle Supportのガイダンスで使用するユーティリティ
-
-
SQLストアド・プロシージャおよびファンクションには、
OGGINITB
およびOGGREADB SQL
を含むdemo_db2_setupb_os390.SQL
が含まれます。 -
JCLプロシージャ、
oggtask.JCL
ノート:
これらの外部名、SQLおよびJCL名はデフォルト名であり、編集および更新できます。このプロセスについては、後続の項で説明します。
Db2 z/OS Extractのレプリケーション・プロセスは、Db2 z/OS Extractとそのメインフレーム・コンポーネントのレプリケーション・プロセスを示しています。
図4-1 Db2 z/OS Extractのレプリケーション・プロセス
![Db2 z/OS Extractのレプリケーション・プロセス Db2 z/OS Extractのレプリケーション・プロセス](img/db2_zos_installation_components.png)
-
Extractは、インストール時に作成されたパラメータ・ファイルから、JCLパラメータを含むパラメータを読み取ります。
-
Extractは起動情報をレポートし、証跡ファイルの書込みを準備します。
-
ODBCは、Db2データベースから情報を収集し、レプリケーションを開始するために使用されます。
-
OGGINITB
SQLストアド・プロシージャは、共有メモリーの準備、およびレプリケーションに必要なその他のデータの収集を開始します。 -
SQLストアド・プロシージャによってコールされる
OGGIB001
外部プログラムは、OGGJT001
ジョブ設定プログラムを使用してメモリー・モニター・タスクを開始します。 -
OGGMT001
メモリー・モニター・タスクは、ECSAおよび64ビットの共有メモリーの監視を開始します。 -
OGGREADB
SQLファンクションは、外部プログラムOGGRB001
をコールします。 -
OGGRB001
外部プログラムは、Db2ログ読取りプログラムを繰り返しコールして、1から多数のログ・レコード・バッファをExtractに返す結果セットを作成します。 -
ログ・レコードの結果セットが完了すると、
OGGRB001
は結果セットをExtractに送信した後に終了します。
Extractは、停止または異常終了するまでステップ7から9を繰り返します。メモリー・タスクの起動に失敗すると、OGGI001
プログラムがJCLエラーまたは設定の問題があったことを示すフラグを返し、Extractは独自のメモリーを管理します。メモリー・タスクが正常に開始すると、メモリー・タスクは48バイトのECSA共有メモリー内の絶えず変更するフィールドをテストします。Extractがなんらかの理由で終了すると、これらのフィールドは変更されなくなります。その時点で、メモリー・マネージャは、Extractまたはネットワークが遅い場合は待機し、メモリーを解放してから、構成された時間制限の後に停止します。
ノート:
oggifi0001
スキーマ名はTRANLOGOPTIONS REMOTESCHEMA schemaname
パラメータを使用して構成できます。プロシージャ名は構成できません。スクリプトとPDSEの各外部名は、スクリプト名とPDSEオブジェクト名が一致しているかぎり、名前を変更できます。これらの名前の変更は、新しいバージョンに移行できるプロシージャの一部であるか、Db2 z/OSで特定のネーミング・プロシージャに従う必要がある場合のプロシージャの一部です。次の表に、編集または更新する可能性のあるコンポーネントのチェック・リストを示します。
表4-2 編集可能なコンポーネントのリスト
コンポーネント | 変換元 | 名前変更 | 説明 |
---|---|---|---|
|
Tarファイル |
承認済PDSE |
|
|
Tarファイル |
承認済PDSE |
|
|
Tarファイル |
承認済PDSEおよびprocライブラリ |
|
|
Tarファイル |
承認済PDSEおよびExtractパラメータ |
|
|
Tarファイル |
プロシージャ・ライブラリおよびExtractパラメータ |
|
proclib |
MVS |
必要に応じてExtractパラメータを追加します |
|
ステップ・ライブラリ |
MVS |
WLMおよび |
|
remoteschema |
|
||
WLM名 |
MVS |
|
|
外部プログラム |
|
ノート:
新しいパッチをインストールするたびに、これらのステップをすべて実行してください。
親トピック: データベース構成
Extract用の共有メモリー・マネージャの使用
Oracle GoldenGate Extractは、共有メモリー使用量を監視するために、WLMから別のタスク(ジョブ)を開始します。このメモリーは、小さい48バイトから64バイトのECSA領域と、Extractバッファ・サイズに基づく大きい64ビット領域で構成されます。
共有メモリー内の特定のフィールドが、Extractによって実行される読取りごとに更新されます。これらのフィールドは、スクリプトがデータを返すかどうかに関係なく更新されます。モニターはこれらのフィールドをチェックして、Extractが非アクティブになっていないことを確認します。Extractが非アクティブである場合、共通メモリーは解放され、モニターは終了します。Extractのパラメータ・ファイルのremote_memory_options
パラメータを使用して、メモリー・マネージャを制御できます。
複数のサブパラメータを指定して、モニター・タスクを構成できます。次の例に示すように、リモート・メモリー・オプションのサブ・パラメータを指定することで、モニターが使用する待機間隔と非アクティブ時間を構成できます。
remote_memory_options wait_interval 2000 inactive_time 01:00
この例の待機間隔は1/100秒単位で表され、モニターは各メモリー・チェック間に20秒待機します。モニターによるチェックが1時間(書式HH:MM)に達し、Extractが依然として非アクティブである場合、モニターは共有メモリーを解放した後に停止します。Extractがその時間内にアクティブ状態に戻ると、モニターはその状態をリセットして監視を続行します。
wait_interval
には100から6000までの値を指定でき、デフォルトは1000です。inactive_time
には00:10から12:00までを指定でき、デフォルトは00:30です。モニターが正しく起動しない場合、Extractはレポートに警告メッセージを表示し、処理を続行します。Extractは、停止時にECSAメモリーの解放を試みます。
-
task_procedure proc name
-
task_library proc library
-
task_setup task setup program
remote_memory_options task_procedure OGGPR001
remote_memory_options task_library TEST.PROCLIB
remote_memory_options task_setup OGGJT001
次に示すように、1つのコマンドに複数のオプションを指定できます:
remote_memory_options task_procedure OGGPR001 task_library TEST.PROCLIB task_setup OGGJT001
ノート:
リモート・メモリー・パラメータの値では、大文字と小文字は区別されません。デフォルト値は、プロシージャ名OGGPR001
およびタスク設定プログラムOGGJT001
です。タスク・ライブラリにデフォルトはありません。プロシージャはMVSシステムのデフォルトのプロシージャ・ライブラリのいずれかに組み込まれている可能性があるためです。タスク・ライブラリ・パラメータは、プロシージャがシステムのデフォルト・ライブラリにない場合にのみ必要です。
メモリー・タスクは、単純なJOBカードと、Extractから渡されたパラメータを持つEXEC
プロシージャ名で始まります。z/OSシステムによっては、ジョブ・カード上に他の様々なパラメータが必要になる場合があります。JOBパラメータは、次の例に示すように、リモート・メモリー・パラメータを使用して変更することもできます。
remote_memory_options task_jobname [valid MVS job name (see below)]
remote_memory_options task_acct_info [valid MVS acct value ( see below)]
remote_memory_options task_programmer [valid MVS programmer name, Can use single quotes]
remote_memory_options task_class [valid MVS job class A to Z or 0 to 9]
remote_memory_options task_msgclass [valid MVS msgclass A to Z or 0 to 9]
remote_memory_options task_msglevel [valid MVS message level n or (,n) or (n,n) n=valid digit]
remote_memory_options task_priority [valid MVS priority 0-15]
JOB名は、2つの有効な文字とアスタリスク(AA*
など)を使用して指定できます。デフォルトのJOB名はGG*
です。アスタリスクは、指定すると6つの乱数に置き換えられます。それ以外で、1から8バイトの文字名を指定する場合は、有効なMVSジョブ名である必要があります。
-
OTXI
-
‘MY ACCT’
-
(ACCT,1234,ABC)
特殊文字を許可するパラメータ(acct_info
やprogrammer
など)の場合は、一重引用符で囲む必要があります。さらに、引用符内で二重引用符またはアンパサンドを使用することに関するMVS規則は引き続き適用されます。Extractは、これらのパラメータの検証を最小限に抑え、完全な検証はMVSプロセスに任せます。Extractは、重複パラメータを指定した場合は最初のパラメータを受け入れ、重複を無視します。
zOSPrograms.zip
ファイルに含まれます。JCLの形式は、次のとおりです。//*==================================================================== //* EXAMPLE JCL FOR RUNNING THE COMMON MEMORY MONITOR PROCEDURE //* ADDRESS SPACE NEEDING AN AUTHORIZED LOAD LIBRARY //* NOTE: THE PROGRAM OGGMT001 CAN BE RENAMED IN THE LIBRARY BUT THE //* NEW NAME MUST MATCH THE PROGRAM NAME IN THIS JCL //*==================================================================== //OGGDSNNA PROC RGN=0K TR=,EX=,MEM=,LEN=,SEC=,DUR=,VER= //OGGDSNNX EXEC PGM=OGGMT001,REGION=&RGN,TIME=NOLIMIT, // PARM='&TR &EX &MEM &LEN &SEC &DUR &VER' //*-------------------------------------------------------------------- //* REPLACE &PREFIX.**.AUTHLOAD LIBRARIES WITH SITE SPECIFIC FILE(S) //* ALSO REPLACE THE CEE LIBRARY WITH SITE SPECIFIC FILE //* DSNN COULD REPRESENT A DB2 SPECIFIC LOAD LIBRARY IF ONE EXISTS //*-------------------------------------------------------------------- //STEPLIB DD DISP=SHR,DSN=&PREFIX..WLMDSNN.USER.AUTHLOAD // DD DISP=SHR,DSN=CEE.SCEERUN //SYSPRINT DD SYSOUT=* //SYSOUT DD SYSOUT=*
PREFIX
でマークされたライブラリを、システムで動作するように変更します。zOSPrograms.tar
ファイルからコピーしたプログラムOGGMT001
の名前を変更した場合は、JCLで変更する必要があります。PROC
文のnullパラメータは、情報提供のために存在します。ジョブ設定プログラムは、Extractから渡された情報を使用してこれらの値を提供します。ステップ・ライブラリ・データセット名を、必要に応じていくつでも指定することもできます。zOSPrograms.tar
ファイルで提供されるJCLプロシージャは、複数のステップ・ライブラリを使用する例を示しています。
親トピック: データベース構成
グローバリゼーション関数のサポート
Oracle GoldenGateではグローバリゼーション・サポートを提供しており、このサポートを使用する場合には考慮する必要があります。
トピック:
ASCIIとEBCDICの両方を含むソースからのレプリケート
Db2ソース・システムから異なる文字セットのターゲットにレプリケートする際、ASCIIデータとEBCDICデータが混在している場合は、Db2の文字データのエンコーディングになんらかの配慮が必要です。各Replicatによる文字セットの変換では、ソース・データが1つの文字セットのものである必要があります。
ソース文字セットは、証跡ヘッダーに指定されます。したがって、Oracle GoldenGate証跡には、ASCIIデータまたはEBCDICデータのいずれかを含むことができますが、両方を含むことはできません。Unicodeの表は特別な構成がなくても処理され、文字セットは1つという要件の対象外です。
両方の文字エンコーディング・タイプが含まれているソースについては、次のオプションがあります。
-
すべての表に対して1つのExtractを使用し、 ASCIIまたはEBCDICのいずれかとして文字データを証跡に書き込ませます。
-
異なるExtract(ASCII文字データを証跡に書き込むExtractとEBCDIC文字データを別の証跡に書き込むExtract)を使用します。2つのデータ・ストリームが別個に処理されるように、各証跡を独自のExtractおよびReplicatプロセスに関連付けます。
いずれのシナリオでも正しい文字セットを出力するには、TRAILCHARSETASCII
およびTRAILCHARSETEBCDIC
パラメータを使用します。デフォルトはTRAILCHARSETEBCDIC
です。これらのパラメータが使用されない場合、ASCIIおよびEBCDICデータはそのまま証跡に書き込まれます。これらのパラメータを使用する場合、次の点に注意してください。
-
これらのパラメータがシングルバイトDb2サブシステムに対して使用される場合、Extractは、使用されているパラメータに応じて、接続先のサブシステムのASCIIまたはEBCDICのいずれかのシングルバイトCCSIDにすべての文字データを変換します(Unicodeは対象外で、Unicodeのまま処理されます)。
-
マルチバイトDb2サブシステムに対して使用される場合、Extractは、ASCIIまたはEBCDICの表のみ(およびUnicode)を取得します。文字データは、Extractの接続先のDb2 z/OSサブシステムのASCIIまたはEBCDICのいずれか(使用されているパラメータに応じる)の混合CCSIDで書き込まれます。
親トピック: グローバリゼーション関数のサポート
オブジェクト名内のマルチバイト文字の指定
パラメータ・ファイル内のスキーマ、表、列またはストアド・プロシージャの名前にマルチバイト文字が含まれる場合、名前を二重引用符で囲む必要があります。
オブジェクト名の指定方法の詳細は、「Oracle GoldenGateの入力におけるオブジェクト名の指定」を参照してください。
親トピック: グローバリゼーション関数のサポート
処理のための表の準備
Db2 z/OSのOracle GoldenGate環境で使用するために表を準備するには、次のタスクを実行する必要があります。
トピック:
トリガーおよびカスケード制約の無効化
ターゲット表のトリガー、カスケード削除制約、カスケード更新制約を無効にするか、これらを変更してOracle GoldenGateデータベース・ユーザーによる変更が無視されるようにします。Oracle GoldenGateでは、トリガーまたはカスケード制約の結果として生成されるDMLがレプリケートされます。同じトリガーや制約がターゲット表でアクティブになった場合、レプリケートされたバージョンのために重複となり、データベースでエラーが返されます。ソース表にemp_src
とsalary_src
、ターゲット表にemp_targ
とsalary_targ
を使用している次の例について考えます。
emp_src
に削除が発行されます- それによって、削除が
salary_src
にカスケードされます。 - Oracle GoldenGateが、両方の削除をターゲットに送信します。
- 親削除が最初に到達し、
emp_targ
に適用されます。 - 親削除によって、削除が
salary_targ
にカスケードされます。 salary_src
のカスケードされた削除が、salary_targ
に適用されます。- 行は、すでにステップ5で削除されているため、見つかりません。
親トピック: 処理のための表の準備
表における行の一意性の保証
Oracle GoldenGateでは、レプリケートされた更新および削除に対して正しいターゲット行を見つけるために、ソース表とターゲット表にある形式の一意の行識別子が必要です。
TABLE
またはMAP
文でKEYCOLS
句が使用されないかぎり、Oracle GoldenGateは、使用する行識別子を次の優先順位に従って選択します。
-
主キー
-
タイムスタンプまたはマテリアライズされていない計算結果列を含まない英数字順で最初の一意キー。
-
前述のキー・タイプのいずれも存在しない場合(その他の種類のキーが表に定義されている場合でも)、Oracle GoldenGateは、データベースで一意キーでの使用を許可されているすべての列(キー内での使用がOracle GoldenGateでサポートされていない列やOracle GoldenGate構成から除外されている列は除く)で疑似キーを作成します。
ノート:
表に使用可能な他のキーがない場合や、表にキーがまったくない場合、Oracle GoldenGateは該当するメッセージをレポート・ファイルに記録します。すべての列からキーを作成すると、ソース・システムのOracle GoldenGateのパフォーマンスが低下します。ターゲットでは、このキーはReplicatであまり効率的でないより大きい
WHERE
句が使用される原因となります。 -
表に適切なキーがない場合、あるいは既存のキーを使用しない場合は、表に一意の値が常に含まれる列があれば、代替キーを定義できます。Extractの
TABLE
パラメータおよびReplicatのMAP
パラメータ内にKEYCOLS
句を含めることで、この代替キーを定義します。指定したキーにより、Oracle GoldenGateで検出される既存の主キーまたは一意キーはオーバーライドされます。Oracle GoldenGateリファレンスのTABLE | MAPを参照してください。
トピック:
親トピック: 処理のための表の準備
KEYCOLSを使用したカスタム・キーの指定
前述のキー・タイプの行識別子が表に存在しないか、または、それらの識別子を使用しない場合は、常に一意の値が含まれている列が表にあれば、代替キーを定義できます。ExtractのTABLE
パラメータおよびReplicatのMAP
パラメータ内にKEYCOLS
句を含めることで、この代替キーを定義します。指定したキーにより、Oracle GoldenGateで検出される既存の主キーまたは一意キーはオーバーライドされます。詳細は、『Oracle GoldenGateリファレンス』を参照してください。
親トピック: 表における行の一意性の保証
ROWID列を含む表の処理
ROWID GENERATED ALWAYS
(デフォルト)のデータ型の列を含むターゲット表に挿入しようとすると、次のODBCエラーで失敗します。
ODBC error: SQLSTATE 428C9 native database error -798. {DB2 FOR OS/390}{ODBC DRIVER}{DSN08015} DSNT408I SQLCODE = -798, ERROR: YOU CANNOT INSERT A VALUE INTO A COLUMN THAT IS DEFINED WITH THE OPTION GENERATED ALWAYS. COLUMN NAME ROWIDCOL.
次のいずれかを行って、ROWID列を含む表がOracle GoldenGateによって処理されるように準備します。
-
ターゲット表の
ROWID
列がGENERATED BY DEFAULT
として定義されていることを確認します。 -
表定義を変更できない場合、次の手順を使用して回避します。
ROWID GENERATE ALWAYS
を回避する手順:
-
ソース表に対するExtract
TABLE
文を作成し、その文で、ROWID
列を除外するCOLSEXCEPT
句を使用します。たとえば:TABLE tab1, COLSEXCEPT (rowidcol);
COLSEXCEPT
句で、ROWID
列が取得されてターゲット表にレプリケートされないようにします。 -
ターゲット表では、Replicatが
ROWID
をキーとして使用しないようにします。これは、次のいずれかの方法で行えます。-
ターゲット表定義で主キーを指定します。
-
キーを作成できない場合、表に対するReplicat
MAP
パラメータを作成し、その文にKEYCOLS
句を使用してROWID
列以外の一意の列を含めます。Replicatは、それらの列をキーとして使用します。たとえば:MAP tab1, TARGET tab1, KEYCOLS (num, ckey);
-
親トピック: 処理のための表の準備
トランザクション・ログの設定と要件
Oracle GoldenGate for Db2 z/OSのトランザクション・ログ設定、要件およびトランザクション・ログを追加するステップについてさらに学習します。
トピック:
Oracle GoldenGateのためのDb2 z/OSトランザクション・ログの準備
Oracle GoldenGate Extractによるデータ取得をサポートするようにDb2トランザクション・ロギングを構成する方法について学習します。
Oracle GoldenGateは、アクティブ・ログとアーカイブ・ログからDb2トランザクション・データを取得できます。次のガイドラインに従って、Extractがデータを取得できるようログを構成します。
Oracle GoldenGate for Db2 z/OSの変更の取得を有効にするには、「Db2 z/OS: 変更の取得の有効化」を参照してください
トピック:
ログ・レコードへのアクセスの有効化
Db2 Monitor Trace Class 1をアクティブにし("TRACE(MONITOR) CLASS(1)
")、Db2でExtractによるアクティブ・ログの読取りができるようにします。Oracle GoldenGateは宛先を使用しないため、OPX
のデフォルトの宛先で十分です。
トレースを手動で開始する手順
-
TRACE
権限、または最低でもSYSOPR
権限を持つDb2ユーザーとしてDb2にログオンします。 -
次のコマンドを実行します。
start trace(monitor) class(1) scope(group)
Db2の起動時に自動的にトレースを開始する方法
次のいずれかの操作を実行します。
-
DSNTIPN
インストール・トレース・パネルでMONITOR TRACE
を"YES
"に設定します。 -
『Db2 UDB Installation Guide』に記載されているように、
DSNTIJUZ
インストール・ジョブで'DSN6SYSP MON=YES
'を設定します。
ノート:
ODBCプラン・エグゼキュータの1次許可IDまたはいずれかの2次許可IDにもMONITOR2
権限がある必要があります。
ログのサイズと保持
表がDATA CAPTURE CHANGES
を使用して定義されている場合、DATA CAPTURE NONE
を使用して定義されている場合より多くのデータが記録されます。次のいずれかに該当する場合、アクティブ・ログとアーカイブ・ログの数とサイズを増やす必要があります。
-
アプリケーションで大量のDb2データを生成します。
-
アプリケーションであまりコミットは発生しません。
-
Extractを長時間停止することが想定されています。
-
ネットワークが安定していないか、遅いです。
ログ保持を制御するには、DSNTIJUZ
インストール・ジョブでDSN6LOGP MAXARCH
システム・パラメータを使用します。
Extractを停止した後または計画外の停止の後、Extractがチェックポイントから再度起動できるように十分なログ・データを保持します。Extractは、コミットされていない、最も古い作業ユニットの開始点を含むログと、それ以降のすべてのログにアクセスできることが必要です。
処理時にExtractで必要なデータがオンラインまたはアーカイブのログに保存されていなかった場合、次のいずれかの修正処理が必要になる可能性があります。
-
Extractを変更して、ログ・データが使用できる後の時点から取得します(さらにターゲットで起こり得るデータ損失を受け入れます)。
-
ソース表とターゲット表を再同期してから、Oracle GoldenGate環境を再開します。
ノート:
IBM社のドキュメントに、ログの読取りのパフォーマンスの改善に関する推奨が記載されています。特に、大規模なログ出力バッファ、大規模なアクティブ・ログおよびディスクへのアーカイブを使用できます。
テープ上のアーカイブ・ログの使用
Oracle GoldenGateはテープ上のDb2アーカイブ・ログを読み取ることはできますが、パフォーマンスは低下します。たとえば、Db2は、テープ上のアーカイブを1つのリカバリ・タスク用に確保します。その結果、リカバリが完了するまで、Extractは、表のリカバリに使用されるアーカイブ・テープを読み取ることができません。DFHSMまたは同様のツールを使用して、アーカイブ・ログをオンラインDASDストレージとテープとの間でシームレスに移動できますが、転送が完了するまでExtractは待機する必要があります。Extractの処理の遅れによってソース・データとターゲット・データとの間のレイテンシが増します。
ログ・フラッシュの制御
トランザクション・ログを読み取る際、Extractは、コミット・レコードを取得するまでトランザクションを処理しません。コミット・レコードが、一杯になっていないデータ・ブロックにある場合、さらにログ・アクティビティが生成されてブロックが一杯になるまでコミット・レコードは取得されません。Extractがログの読取りに使用するAPIでは、一杯になった物理データ・ブロックのみ取得されます。
コミットを含むブロックの取得の遅れによって、ソース・データとターゲット・データとの間でレイテンシが発生します。アプリケーションでブロックを一杯にするのに十分なログ・レコードが生成されない場合、Extractは、ブロックが一杯になって解放されるまで、SAVEPOINT
およびCOMMIT
文を発行して独自のログ・レコードを生成します。
データ共有グループでは、各APIコールによって、DB2がすべてのアクティブなメンバーのデータ・ブロックをフラッシュし、Extractがフラッシュを行う必要がなくなります。
Extractでフラッシュが行われないようにするには、ExtractのパラメータTRANLOGOPTIONS
のNOFLUSH
オプションを使用します。