Db2 z/OS

この項では、Oracle GoldenGate for Db2 z/OSの構成の詳細を示します。

トピック:

データベース・ユーザーおよび権限の準備

データベース・ユーザーの作成およびOracle GoldenGate for Db2 z/OSの権限の割当てについて学習します。

トピック:

Oracle GoldenGateプロセス用データベース・ユーザー

Oracle GoldenGateには、データベース・ユーザー・アカウントが必要です。次のガイドラインに従ってこのアカウントを作成し、権限を割り当てます。

次の表にリストしたDb2の権限を、ExtractおよびReplicatを実行するユーザーに割り当てます。これらは、Db2 ODBCで必要な権限以外に必要なものです。記載がないかぎり、すべてのExtract権限は、初期ロードおよびログベースのExtractプロセスに適用されます。次の権限は、Oracle GoldenGateプロセスを実行するユーザーに、SYSCTRLDBADMのいずれかと、SQLADM権限を付与することによって設定できます。

表4-1 Oracle GoldenGate for Db2 z/OSに必要な権限

ユーザーの権限 Extract Replicat

MONITOR2

(初期ロードExtractには非適用)

はい

いいえ

次のSYSIBM表に対するSELECT ON:

SYSTABLES

SYSCOLUMNS

SYSTABLEPART

SYSKEYS

SYSINDEXES

SYSCOLAUTH

SYSDATABASE

SYSFOREIGNKEYS

SYSPARMS

SYSRELS

SYSROUTINES

SYSSYNONYMS

SYSTABAUTH

SYSAUXRELS

はい

はい

ソース表に対するSELECT脚注 1

はい

いいえ

ターゲット表のINSERTUPDATEDELETE

いいえ

はい

CREATE TABLE脚注2

いいえ

はい

ODBCプラン(デフォルトはDSNACLI)に対するEXECUTE

はい

いいえ

SQLEXECプロシージャまたは使用する問合せで必要とする権限脚注 3

はい

いいえ

脚注1

表にLOB列が含まれている場合または初期ロードExtract (使用する場合)に対してのみ、ソース表に対するSELECTが必要です。

脚注2

コマンドライン・インタフェースからADD CHECKPOINTTABLEを使用してデータベース・チェックポイント機能を使用する場合は必須です。

脚注3

SQLEXECによって、Oracle GoldenGateプロセスによるストアド・プロシージャおよび問合せの実行が可能になります。

データベース接続、システムおよびパラメータ設定の準備

Oracle GoldenGate for 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コンポーネントのインストール
Oracle GoldenGateのDb2 z/OS Extractでは、SQLオブジェクトを使用してDb2ログにアクセスして読み取ります。Oracle GoldenGate Db2 z/OSオブジェクトには、最小ハードウェア・プラットフォームとしてz10、最小オペレーティング・システム・リリースとして1.13、最小Db2リリースとして11が必要です。コンポーネントは、実行可能ロード・モジュール、SQLストアド・プロシージャおよびファンクション、およびストアド・プロシージャを介してコールされる外部プログラムで構成されます。これらのコンポーネントは次のとおりです。
  1. 外部プログラム(認可)には、次のプログラムが含まれます:

    1. oggib001 – 初期化およびユーティリティ・プログラム

    2. oggrb001 – ログ読取りプログラム機能

    3. oggmt001 – ECSAおよび64ビット・メモリーを監視するスタンドアロン・プログラム

    4. oggjt001oggib001プログラムから実行されるoggmt001起動JCLのセットアップ・プログラム
    5. oggfr001 – DBAがOracle Supportのガイダンスで使用するユーティリティ

  2. SQLストアド・プロシージャおよびファンクションには、OGGINITBおよびOGGREADB SQLを含むdemo_db2_setupb_os390.SQLが含まれます。

  3. JCLプロシージャ、oggtask.JCL

ノート:

これらの外部名、SQLおよびJCL名はデフォルト名であり、編集および更新できます。このプロセスについては、後続の項で説明します。

Db2 z/OS Extractのレプリケーション・プロセスは、Db2 z/OS Extractとそのメインフレーム・コンポーネントのレプリケーション・プロセスを示しています。

図4-1 Db2 z/OS Extractのレプリケーション・プロセス


Db2 z/OS Extractのレプリケーション・プロセス

次の図に示す数字1から9を使用して、プロセスが開始および実行されます。
  1. Extractは、インストール時に作成されたパラメータ・ファイルから、JCLパラメータを含むパラメータを読み取ります。

  2. Extractは起動情報をレポートし、証跡ファイルの書込みを準備します。

  3. ODBCは、Db2データベースから情報を収集し、レプリケーションを開始するために使用されます。

  4. OGGINITB SQLストアド・プロシージャは、共有メモリーの準備、およびレプリケーションに必要なその他のデータの収集を開始します。

  5. SQLストアド・プロシージャによってコールされるOGGIB001外部プログラムは、OGGJT001ジョブ設定プログラムを使用してメモリー・モニター・タスクを開始します。

  6. OGGMT001メモリー・モニター・タスクは、ECSAおよび64ビットの共有メモリーの監視を開始します。

  7. OGGREADB SQLファンクションは、外部プログラムOGGRB001をコールします。

  8. OGGRB001外部プログラムは、Db2ログ読取りプログラムを繰り返しコールして、1から多数のログ・レコード・バッファをExtractに返す結果セットを作成します。

  9. ログ・レコードの結果セットが完了すると、OGGRB001は結果セットをExtractに送信した後に終了します。

Extractは、停止または異常終了するまでステップ7から9を繰り返します。メモリー・タスクの起動に失敗すると、OGGI001プログラムがJCLエラーまたは設定の問題があったことを示すフラグを返し、Extractは独自のメモリーを管理します。メモリー・タスクが正常に開始すると、メモリー・タスクは48バイトのECSA共有メモリー内の絶えず変更するフィールドをテストします。Extractがなんらかの理由で終了すると、これらのフィールドは変更されなくなります。その時点で、メモリー・マネージャは、Extractまたはネットワークが遅い場合は待機し、メモリーを解放してから、構成された時間制限の後に停止します。

Db2 z/OS用のOracle GoldenGateのExtractに必要なコンポーネントをインストールするには:
  1. ライブラリ(PDSE)がDb2 z/OSシステムに存在し、このライブラリが承認されたライブラリ・リストに含まれていることを確認します。このライブラリはOracle GoldenGateの外部プログラム・オブジェクトが配置される場所です。
  2. APF承認のWLM環境が存在し、前述のステップのPDSEを参照していることを確認します。WLM環境のNUMTCBの値は、ストアド・プロシージャの場合、10から40にすることをお薦めします。NUMTCB値は、データベースに対して同時に実行されているExtractの最大数およびそれぞれが必要なスループットに依存します。NUMTCBの選択に柔軟性を持たせたい場合、WLMの起動JCLで指定します(ただし、作成パネルでは指定しないでください)。
  3. WLMアプリケーション環境およびストアド・プロシージャの作成のためのセキュリティを設定するには、次の手順を実行します。
    1. (オプション)ストアド・プロシージャを実行できるWLM確立アドレス空間を指定します。このステップを実行しないと、どのWLM確立アドレス空間でもストアド・プロシージャを実行できます。
    2. 特定のWLMアドレス空間にプロシージャを作成するために、ユーザーへアクセス権を付与します。
    3. 特定のスキーマにプロシージャを作成するために、ユーザーへアクセス権を付与します。該当するスキーマのためにCREATINオプションでGRANT文を使用します。
    4. 特定のコレクションにプロシージャのパッケージを作成するために、ユーザーへアクセス権を付与します。該当するコレクションのためにCREATEオプションでGRANT文を使用します。 
    5. アクセス権を付与してWLM環境を該当するユーザーに対してリフレッシュします。
    6. 適切なユーザーにRACF権限を追加し、WLMプロシージャがメモリー・マネージャ・ジョブを開始できるようにします。
  4. WLM起動JCLプロシージャの実行に使用するIDにRRSAFを使用する権限があることを確認します。Db2 WLMアドレス空間の1つが起動されるたびに、RRSAFを使用してDb2に接続します。Db2 11 for z/OSインストレーションおよび移行のガイドを参照してください
  5. Oracle GoldenGate for Db2 z/OSのLinuxまたはUNIXインストールには、zOSPrograms.zipというZIPファイルがあります。zOSPrograms.zipzOSPrograms.tarに解凍し、zOSPrograms.tarをバイナリ・モードでDb2 z/OSシステムのHFSディレクトリにコピーします。
  6. Db2 z/OSシステムでUSSまたはOMVSを使用して、ディレクトリをzOSPrograms.tarを含むディレクトリに変更します。
  7. tar -xovf zOSPrograms.tarコマンドを使用して、オブジェクトをリストアします。

    ノート:

    このコマンドでは、コピー先は、二重引用符、スラッシュ、一重引用符、承認されたPDSE名、一重引用符、二重引用符で示されています。-Xは大文字のXで、小文字のxではありません

  8. オブジェクトを承認されたPDSEにコピーします。cp –X ogg[irmj][abt][0-9]* "//'authorized_PDSE_name'"を使用します(ここでauthorized_PDSE_nameは、Oracle GoldenGateオブジェクト用のAPF承認PDSEの名前です)。このコマンドを使用して、デフォルト名のオブジェクトをインストールします。
  9. 異なる名前でスクリプトをインストールすると、システム・プロトコルに準拠したり、複数のバージョンのOracle GoldenGateを実行したりできます。異なる名前のスクリプトをインストールするには、PDSEにコピーする前に、プログラムの名前を変更するシェル・スクリプトを作成することをお薦めします。シェル・スクリプトの例は、次のコード・スニペットに示されています。
    #!/bin/bash
    # Copy new programs renaming them to version 21.12 names.
    cp oggib001 oggi2112
    cp oggrb001 oggr2112
    cp oggmt001 oggm2112
    cp oggjt001 oggj2112
    cp -X oggi2112 “//’SYS4.WLMDSNA.AUTHLOAD’”
    cp -X oggr2112 “//’SYS4.WLMDSNA.AUTHLOAD’”
    cp -X oggm2112 “//’SYS4.WLMDSNA.AUTHLOAD’”
    cp -X oggj2112 “//’SYS4.WLMDSNA.AUTHLOAD’”
    

    スクリプトは、chmod +xコマンドを使用して実行できます。このスクリプトは、新しいバージョンにコピーして再利用できます。

  10. Oracle GoldenGateがExtractオブジェクトをコールできるように、選択したSQLツールを使用してSQLプロシージャを作成する必要があります。Oracle GoldenGateストアド・プロシージャは、レプリケーションのために使用するユーザーのみに権限を付与する必要があります。

    Oracle GoldenGateインストール・ディレクトリ内のSQLスクリプトの例には、Db2 z/OSインスタンスにストアド・プロシージャを設定するSQL文が含まれています。demo_db2_setupb_os390.sqlスクリプトはDb2 v11.1以降用です。Db2 z/OSインスタンスに接続できる任意のプラットフォームで任意のSQLツールを使用して実行できます。このスクリプトは、Extractで使用するDb2インスタンス上で実行する必要があります。リモート・インストール・ディレクトリに提供されるスクリプトはASCII形式です。EBCDICのDb2 z/OSシステムのzOSPrograms.tarから同じスクリプトがリストアされ、SPUFIなどのネイティブのDb2 z/OSツールを介して使用する場合に適しています。

    スクリプトを実行する前に、次の行を編集します。

    • WLM ENVIRONMENT行を変更して、Oracle GoldenGateに使用するWLM環境の正しい名前を使用します。

ノート:

oggifi0001スキーマ名はTRANLOGOPTIONS REMOTESCHEMA schemanameパラメータを使用して構成できます。プロシージャ名は構成できません。スクリプトとPDSEの各外部名は、スクリプト名とPDSEオブジェクト名が一致しているかぎり、名前を変更できます。これらの名前の変更は、新しいバージョンに移行できるプロシージャの一部であるか、Db2 z/OSで特定のネーミング・プロシージャに従う必要がある場合のプロシージャの一部です。次の表に、編集または更新する可能性のあるコンポーネントのチェック・リストを示します。

表4-2 編集可能なコンポーネントのリスト

コンポーネント 変換元 名前変更 説明

oggib001

Tarファイル

 

承認済PDSE

oggrb001

Tarファイル

 

承認済PDSE

oggmt001

Tarファイル

 

承認済PDSEおよびprocライブラリ

oggjt001

Tarファイル

 

承認済PDSEおよびExtractパラメータ

oggpr001

Tarファイル

 

プロシージャ・ライブラリおよびExtractパラメータ

proclib

MVS  

必要に応じてExtractパラメータを追加します

ステップ・ライブラリ

MVS

 

WLMおよびoggpr001プロシージャ・ライブラリ

remoteschema

   

demo_db2_setupb_os390.sqlおよびExtractパラメータ

WLM名

MVS

 

demo_db2_setupb_os390.sql

外部プログラム

   

demo_db2_setupb_os390.sql

ノート:

新しいパッチをインストールするたびに、これらのステップをすべて実行してください。

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メモリーの解放を試みます。

リモート・メモリー・パラメータには、この機能を動作させるための3つのオプションがあります。これらのパラメータの構文は次のとおりです:
  • 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ジョブ名である必要があります。

アカウント値は、次のいずれかの有効なMVS形式で指定します。
  • OTXI

  • ‘MY ACCT’

  • (ACCT,1234,ABC)

特殊文字を許可するパラメータ(acct_infoprogrammerなど)の場合は、一重引用符で囲む必要があります。さらに、引用符内で二重引用符またはアンパサンドを使用することに関するMVS規則は引き続き適用されます。Extractは、これらのパラメータの検証を最小限に抑え、完全な検証はMVSプロセスに任せます。Extractは、重複パラメータを指定した場合は最初のパラメータを受け入れ、重複を無視します。

プロシージャJCLファイルのサンプルは、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_srcsalary_src、ターゲット表にemp_targsalary_targを使用している次の例について考えます。

  • emp_srcに削除が発行されます
  • それによって、削除がsalary_srcにカスケードされます。
  • Oracle GoldenGateが、両方の削除をターゲットに送信します。
  • 親削除が最初に到達し、emp_targに適用されます。
  • 親削除によって、削除がsalary_targにカスケードされます。
  • salary_srcのカスケードされた削除が、salary_targに適用されます。
  • 行は、すでにステップ5で削除されているため、見つかりません。
表における行の一意性の保証

Oracle GoldenGateでは、レプリケートされた更新および削除に対して正しいターゲット行を見つけるために、ソース表とターゲット表にある形式の一意の行識別子が必要です。

TABLEまたはMAP文でKEYCOLS句が使用されないかぎり、Oracle GoldenGateは、使用する行識別子を次の優先順位に従って選択します。

  1. 主キー

  2. タイムスタンプまたはマテリアライズされていない計算結果列を含まない英数字順で最初の一意キー。

  3. 前述のキー・タイプのいずれも存在しない場合(その他の種類のキーが表に定義されている場合でも)、Oracle GoldenGateは、データベースで一意キーでの使用を許可されているすべての列(キー内での使用がOracle GoldenGateでサポートされていない列やOracle GoldenGate構成から除外されている列は除く)で疑似キーを作成します。

    ノート:

    表に使用可能な他のキーがない場合や、表にキーがまったくない場合、Oracle GoldenGateは該当するメッセージをレポート・ファイルに記録します。すべての列からキーを作成すると、ソース・システムのOracle GoldenGateのパフォーマンスが低下します。ターゲットでは、このキーはReplicatであまり効率的でないより大きいWHERE句が使用される原因となります。

  4. 表に適切なキーがない場合、あるいは既存のキーを使用しない場合は、表に一意の値が常に含まれる列があれば、代替キーを定義できます。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を回避する手順:

  1. ソース表に対するExtract TABLE文を作成し、その文で、ROWID列を除外するCOLSEXCEPT句を使用します。たとえば:

    TABLE tab1, COLSEXCEPT (rowidcol);

    COLSEXCEPT句で、ROWID列が取得されてターゲット表にレプリケートされないようにします。

  2. ターゲット表では、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のデフォルトの宛先で十分です。

トレースを手動で開始する手順

  1. TRACE権限、または最低でもSYSOPR権限を持つDb2ユーザーとしてDb2にログオンします。

  2. 次のコマンドを実行します。

    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のパラメータTRANLOGOPTIONSNOFLUSHオプションを使用します。